workflowNodeTypes.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * 流程节点 type 判定(含历史数据:isolation / releaseIsolation 及中文旧值)
  3. */
  4. export function isWorkflowLockSchemeType(t: string | undefined | null): boolean {
  5. return t === 'lock' || t === 'isolation' || t === '隔离' || t === '隔离/方案';
  6. }
  7. export function isWorkflowUnlockSchemeType(t: string | undefined | null): boolean {
  8. return t === 'unlock' || t === 'releaseIsolation' || t === '解除隔离';
  9. }
  10. export function isWorkflowCoLockType(t: string | undefined | null): boolean {
  11. return t === 'coLock' || t === '共锁';
  12. }
  13. export function isWorkflowUnlockCoLockType(t: string | undefined | null): boolean {
  14. return t === 'unlockCoLock' || t === '解除共锁';
  15. }
  16. /** 与「上锁」节点相同的校验与配置结构(含共锁) */
  17. export function isWorkflowLockLikeValidationType(t: string | undefined | null): boolean {
  18. return isWorkflowLockSchemeType(t) || isWorkflowCoLockType(t);
  19. }
  20. /** 与「解锁」节点相同的校验结构(含解除共锁) */
  21. export function isWorkflowUnlockLikeValidationType(t: string | undefined | null): boolean {
  22. return isWorkflowUnlockSchemeType(t) || isWorkflowUnlockCoLockType(t);
  23. }
  24. /** 右侧配置:隔离方式、隔离点、关联方案节点等整块 UI */
  25. export function isWorkflowIsolationSchemePanelType(t: string | undefined | null): boolean {
  26. return (
  27. isWorkflowLockSchemeType(t) ||
  28. isWorkflowUnlockSchemeType(t) ||
  29. isWorkflowCoLockType(t) ||
  30. isWorkflowUnlockCoLockType(t)
  31. );
  32. }
  33. /** 画布/持久化中的 type 映射到当前左侧模板节点 type(用于 nodeConfigs 来查找) */
  34. export function resolveWorkflowPaletteType(t: string | undefined | null): string {
  35. if (!t) return '';
  36. if (t === 'isolation' || t === '隔离' || t === '隔离/方案') return 'lock';
  37. if (t === 'releaseIsolation' || t === '解除隔离') return 'unlock';
  38. if (t === '共锁') return 'coLock';
  39. if (t === '解除共锁') return 'unlockCoLock';
  40. return t;
  41. }
  42. /** 解除类节点关联的「方案源」节点 type 是否匹配 */
  43. export function isWorkflowUnlockParentMatch(
  44. unlockNodeType: string | undefined | null,
  45. parentNodeType: string | undefined | null
  46. ): boolean {
  47. if (isWorkflowUnlockCoLockType(unlockNodeType)) {
  48. return isWorkflowCoLockType(parentNodeType);
  49. }
  50. if (isWorkflowUnlockSchemeType(unlockNodeType)) {
  51. return isWorkflowLockSchemeType(parentNodeType);
  52. }
  53. return false;
  54. }