openxiangda-contracts 2.35.0 → 2.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/browser.d.ts +6 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +6 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/index.d.ts +7 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/native-compiler/compiler.d.ts +1 -1
  10. package/dist/native-compiler/compiler.d.ts.map +1 -1
  11. package/dist/native-compiler/compiler.js +85 -5
  12. package/dist/native-compiler/compiler.js.map +1 -1
  13. package/dist/native-compiler/index.cjs +6 -5
  14. package/dist/native-compiler/index.d.ts +8 -0
  15. package/dist/native-compiler/index.d.ts.map +1 -1
  16. package/dist/native-compiler/index.js +6 -5
  17. package/dist/native-compiler/role-membership-batch.d.ts +73 -0
  18. package/dist/native-compiler/role-membership-batch.d.ts.map +1 -0
  19. package/dist/native-compiler/role-membership-batch.js +91 -0
  20. package/dist/native-compiler/role-membership-batch.js.map +1 -0
  21. package/dist/native-compiler/workflow-assignment-routing.d.ts +121 -0
  22. package/dist/native-compiler/workflow-assignment-routing.d.ts.map +1 -0
  23. package/dist/native-compiler/workflow-assignment-routing.js +113 -0
  24. package/dist/native-compiler/workflow-assignment-routing.js.map +1 -0
  25. package/dist/native-compiler/workflow-automatic-cc.d.ts +20 -0
  26. package/dist/native-compiler/workflow-automatic-cc.d.ts.map +1 -0
  27. package/dist/native-compiler/workflow-automatic-cc.js +36 -0
  28. package/dist/native-compiler/workflow-automatic-cc.js.map +1 -0
  29. package/dist/native-compiler/workflow-business-step-identity.d.ts +12 -0
  30. package/dist/native-compiler/workflow-business-step-identity.d.ts.map +1 -0
  31. package/dist/native-compiler/workflow-business-step-identity.js +11 -0
  32. package/dist/native-compiler/workflow-business-step-identity.js.map +1 -0
  33. package/dist/native-compiler/workflow-business-step.d.ts +119 -0
  34. package/dist/native-compiler/workflow-business-step.d.ts.map +1 -0
  35. package/dist/native-compiler/workflow-business-step.js +357 -0
  36. package/dist/native-compiler/workflow-business-step.js.map +1 -0
  37. package/dist/native-compiler/workflow-delegation-administration.d.ts +1084 -0
  38. package/dist/native-compiler/workflow-delegation-administration.d.ts.map +1 -0
  39. package/dist/native-compiler/workflow-delegation-administration.js +68 -0
  40. package/dist/native-compiler/workflow-delegation-administration.js.map +1 -0
  41. package/dist/native-compiler/workflow-graph.d.ts +28 -2
  42. package/dist/native-compiler/workflow-graph.d.ts.map +1 -1
  43. package/dist/native-compiler/workflow-graph.js +25 -7
  44. package/dist/native-compiler/workflow-graph.js.map +1 -1
  45. package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -1
  46. package/dist/native-compiler/workflow-node-administration.js +12 -3
  47. package/dist/native-compiler/workflow-node-administration.js.map +1 -1
  48. package/dist/native-compiler/workflow-task-page.d.ts +119 -0
  49. package/dist/native-compiler/workflow-task-page.d.ts.map +1 -0
  50. package/dist/native-compiler/workflow-task-page.js +225 -0
  51. package/dist/native-compiler/workflow-task-page.js.map +1 -0
  52. package/dist/native-version.d.ts +9 -0
  53. package/dist/native-version.d.ts.map +1 -1
  54. package/dist/native-version.js +9 -0
  55. package/dist/native-version.js.map +1 -1
  56. package/dist/native.d.ts +2 -0
  57. package/dist/native.d.ts.map +1 -1
  58. package/dist/native.js.map +1 -1
  59. package/dist/schemas.d.ts +4745 -1006
  60. package/dist/schemas.d.ts.map +1 -1
  61. package/dist/schemas.js +217 -0
  62. package/dist/schemas.js.map +1 -1
  63. package/dist/types.d.ts +174 -3
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js +13 -0
  66. package/dist/types.js.map +1 -1
  67. package/package.json +1 -1
package/dist/browser.d.ts CHANGED
@@ -11,12 +11,18 @@ export * from './surface.js';
11
11
  export * from './types.js';
12
12
  export * from './workflow-summary.js';
13
13
  export * from './workflow-detail.js';
14
+ export * from './native-compiler/workflow-delegation-administration.js';
14
15
  export * from './native-compiler/workflow-graph.js';
15
16
  export * from './native-compiler/workflow-node-administration.js';
17
+ export * from './native-compiler/workflow-automatic-cc.js';
18
+ export * from './native-compiler/workflow-business-step.js';
19
+ export * from './native-compiler/workflow-task-page.js';
20
+ export * from './native-compiler/workflow-assignment-routing.js';
16
21
  export * from './validation.js';
17
22
  export * from './workflow-correction.js';
18
23
  export * from './native-compiler/data-audit-access.js';
19
24
  export * from './process-resolution.js';
20
25
  export * from './application-diagnostics.js';
21
26
  export * from './native-compiler/unique-keys.js';
27
+ export * from './native-compiler/role-membership-batch.js';
22
28
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC"}
package/dist/browser.js CHANGED
@@ -11,12 +11,18 @@ export * from './surface.js';
11
11
  export * from './types.js';
12
12
  export * from './workflow-summary.js';
13
13
  export * from './workflow-detail.js';
14
+ export * from './native-compiler/workflow-delegation-administration.js';
14
15
  export * from './native-compiler/workflow-graph.js';
15
16
  export * from './native-compiler/workflow-node-administration.js';
17
+ export * from './native-compiler/workflow-automatic-cc.js';
18
+ export * from './native-compiler/workflow-business-step.js';
19
+ export * from './native-compiler/workflow-task-page.js';
20
+ export * from './native-compiler/workflow-assignment-routing.js';
16
21
  export * from './validation.js';
17
22
  export * from './workflow-correction.js';
18
23
  export * from './native-compiler/data-audit-access.js';
19
24
  export * from './process-resolution.js';
20
25
  export * from './application-diagnostics.js';
21
26
  export * from './native-compiler/unique-keys.js';
27
+ export * from './native-compiler/role-membership-batch.js';
22
28
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,8 +15,13 @@ export * from './cli.js';
15
15
  export * from './types.js';
16
16
  export * from './workflow-summary.js';
17
17
  export * from './workflow-detail.js';
18
+ export * from './native-compiler/workflow-delegation-administration.js';
18
19
  export * from './native-compiler/workflow-graph.js';
19
20
  export * from './native-compiler/workflow-node-administration.js';
21
+ export * from './native-compiler/workflow-automatic-cc.js';
22
+ export * from './native-compiler/workflow-business-step.js';
23
+ export * from './native-compiler/workflow-task-page.js';
24
+ export * from './native-compiler/workflow-assignment-routing.js';
20
25
  export * from './validation.js';
21
26
  export * from './workflow-correction.js';
22
27
  export * from './native-compiler/workflow-instance-policy.js';
@@ -24,4 +29,6 @@ export { validateDataFieldDefinition } from './data-field-validation.js';
24
29
  export * from './process-resolution.js';
25
30
  export * from './application-diagnostics.js';
26
31
  export * from './native-compiler/unique-keys.js';
32
+ export * from './native-compiler/role-membership-batch.js';
33
+ export * from './native-compiler/workflow-business-step-identity.js';
27
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,sDAAsD,CAAC"}
package/dist/index.js CHANGED
@@ -15,8 +15,13 @@ export * from './cli.js';
15
15
  export * from './types.js';
16
16
  export * from './workflow-summary.js';
17
17
  export * from './workflow-detail.js';
18
+ export * from './native-compiler/workflow-delegation-administration.js';
18
19
  export * from './native-compiler/workflow-graph.js';
19
20
  export * from './native-compiler/workflow-node-administration.js';
21
+ export * from './native-compiler/workflow-automatic-cc.js';
22
+ export * from './native-compiler/workflow-business-step.js';
23
+ export * from './native-compiler/workflow-task-page.js';
24
+ export * from './native-compiler/workflow-assignment-routing.js';
20
25
  export * from './validation.js';
21
26
  export * from './workflow-correction.js';
22
27
  export * from './native-compiler/workflow-instance-policy.js';
@@ -24,4 +29,6 @@ export { validateDataFieldDefinition } from './data-field-validation.js';
24
29
  export * from './process-resolution.js';
25
30
  export * from './application-diagnostics.js';
26
31
  export * from './native-compiler/unique-keys.js';
32
+ export * from './native-compiler/role-membership-batch.js';
33
+ export * from './native-compiler/workflow-business-step-identity.js';
27
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,sDAAsD,CAAC"}
@@ -18,7 +18,7 @@ export declare const NATIVE_CONTRACT_CAPACITY_V2: Readonly<{
18
18
  readonly adminNavigationItems: 500;
19
19
  }>;
20
20
  export declare const DATA_EVENT_TYPES_V2: readonly ["openxiangda.data.record.created.v2", "openxiangda.data.record.updated.v2", "openxiangda.data.record.deleted.v2"];
21
- export declare const WORKFLOW_EVENT_TYPES_V2: readonly ["openxiangda.workflow.instance.started.v2", "openxiangda.workflow.instance.cc_added.v2", "openxiangda.workflow.instance.completed.v2", "openxiangda.workflow.instance.rejected.v2", "openxiangda.workflow.instance.returned.v2", "openxiangda.workflow.instance.resumed.v2", "openxiangda.workflow.instance.withdrawn.v2", "openxiangda.workflow.instance.terminated.v2", "openxiangda.workflow.task.created.v2", "openxiangda.workflow.task.assigned.v2", "openxiangda.workflow.task.assignment_pending.v2", "openxiangda.workflow.task.assignment_resolution_failed.v2", "openxiangda.workflow.task.approved.v2", "openxiangda.workflow.task.completed.v2", "openxiangda.workflow.task.rejected.v2", "openxiangda.workflow.task.returned.v2", "openxiangda.workflow.task.resubmitted.v2", "openxiangda.workflow.task.transferred.v2", "openxiangda.workflow.task.reassigned.v2", "openxiangda.workflow.task.delegated.v2", "openxiangda.workflow.task.assignee_added.v2", "openxiangda.workflow.task.cancelled.v2", "openxiangda.workflow.participant.activated.v2", "openxiangda.workflow.participant.completed.v2", "openxiangda.workflow.participant.rejected.v2", "openxiangda.workflow.participant.returned.v2", "openxiangda.workflow.participant.transferred.v2", "openxiangda.workflow.participant.reassigned.v2", "openxiangda.workflow.participant.delegated.v2", "openxiangda.workflow.participant.added.v2", "openxiangda.workflow.participant.suspended.v2", "openxiangda.workflow.participant.resumed.v2", "openxiangda.workflow.participant.cancelled.v2"];
21
+ export declare const WORKFLOW_EVENT_TYPES_V2: readonly ["openxiangda.workflow.step.requested.v2", "openxiangda.workflow.step.result_received.v2", "openxiangda.workflow.step.completed.v2", "openxiangda.workflow.step.continuation_failed.v2", "openxiangda.workflow.instance.started.v2", "openxiangda.workflow.instance.cc_added.v2", "openxiangda.workflow.instance.completed.v2", "openxiangda.workflow.instance.rejected.v2", "openxiangda.workflow.instance.returned.v2", "openxiangda.workflow.instance.resumed.v2", "openxiangda.workflow.instance.withdrawn.v2", "openxiangda.workflow.instance.terminated.v2", "openxiangda.workflow.task.created.v2", "openxiangda.workflow.task.assigned.v2", "openxiangda.workflow.task.assignment_pending.v2", "openxiangda.workflow.task.assignment_resolution_failed.v2", "openxiangda.workflow.task.approved.v2", "openxiangda.workflow.task.completed.v2", "openxiangda.workflow.task.rejected.v2", "openxiangda.workflow.task.returned.v2", "openxiangda.workflow.task.resubmitted.v2", "openxiangda.workflow.task.transferred.v2", "openxiangda.workflow.task.reassigned.v2", "openxiangda.workflow.task.delegated.v2", "openxiangda.workflow.task.assignee_added.v2", "openxiangda.workflow.task.cancelled.v2", "openxiangda.workflow.participant.activated.v2", "openxiangda.workflow.participant.completed.v2", "openxiangda.workflow.participant.rejected.v2", "openxiangda.workflow.participant.returned.v2", "openxiangda.workflow.participant.transferred.v2", "openxiangda.workflow.participant.reassigned.v2", "openxiangda.workflow.participant.delegated.v2", "openxiangda.workflow.participant.added.v2", "openxiangda.workflow.participant.suspended.v2", "openxiangda.workflow.participant.resumed.v2", "openxiangda.workflow.participant.cancelled.v2"];
22
22
  type JsonObject = Record<string, any>;
23
23
  export interface NativeConfigurationCompilerInput {
24
24
  appCode: string;
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAyBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAe7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,u/CAkC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CAmJnC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CA0T3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC,GAAG,wBAAwB,EAAE,CA4J7B"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAyBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAe7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,+qDAsC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CAmJnC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAyV3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC,GAAG,wBAAwB,EAAE,CA4J7B"}
@@ -8,6 +8,10 @@ import { hasDataAuditReadPolicy, isDataAuditMetadataField } from './data-audit-a
8
8
  import { validateWorkflowInstanceCommandPolicies } from './workflow-instance-policy.js';
9
9
  import { validateWorkflowReadability } from './workflow-graph.js';
10
10
  import { validateWorkflowAdministration } from './workflow-node-administration.js';
11
+ import { validateWorkflowAutomaticCc } from './workflow-automatic-cc.js';
12
+ import { validateWorkflowTaskPages } from './workflow-task-page.js';
13
+ import { validateWorkflowBusinessSteps, compileWorkflowBusinessStepHandlers, validateWorkflowBusinessStepSubscriptions, WORKFLOW_BUSINESS_STEP_EVENT, WORKFLOW_BUSINESS_STEP_EVENTS } from './workflow-business-step.js';
14
+ import { validateWorkflowAssignmentRoutingBindings, validateWorkflowAssignmentRoutingPolicy } from './workflow-assignment-routing.js';
11
15
  import * as crypto from 'crypto';
12
16
  import { OPENXIANGDA_COMPILER_CONTRACT_VERSION as OPENXIANGDA_V2_COMPILER_CONTRACT_VERSION, PLATFORM_CAPABILITY_CONTRACT_VERSIONS as OPENXIANGDA_V2_PLATFORM_CAPABILITY_CONTRACT_VERSIONS, } from '../native-version.js';
13
17
  import { canonicalJson, sha256Digest as sha256Canonical } from '../canonical.js';
@@ -120,6 +124,10 @@ export const DATA_EVENT_TYPES_V2 = [
120
124
  'openxiangda.data.record.deleted.v2',
121
125
  ];
122
126
  export const WORKFLOW_EVENT_TYPES_V2 = [
127
+ WORKFLOW_BUSINESS_STEP_EVENT,
128
+ 'openxiangda.workflow.step.result_received.v2',
129
+ 'openxiangda.workflow.step.completed.v2',
130
+ 'openxiangda.workflow.step.continuation_failed.v2',
123
131
  'openxiangda.workflow.instance.started.v2',
124
132
  'openxiangda.workflow.instance.cc_added.v2',
125
133
  'openxiangda.workflow.instance.completed.v2',
@@ -293,10 +301,24 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
293
301
  config.events.subscriptions.some((subscription) => subscription.platformAccess?.managedFileCopies);
294
302
  const usesNotification = operations.some(operation => operation.platformAccess?.notification) ||
295
303
  config.events.subscriptions.some((subscription) => subscription.platformAccess?.notification);
304
+ const taskManagedFileDefinitions = config.workflows.definitions.filter((item) => {
305
+ const fields = resources.find(resource => resource.code === item.definition.subject?.resourceCode)?.schema.fields || [];
306
+ return Object.values(item.definition.taskPages || {}).some((page) => page.fields.some((field) => !field.readonly && fields.some((metadata) => metadata.code === field.code && ['file', 'image'].includes(metadata.type))));
307
+ });
296
308
  const standardProcessDefinitions = config.workflows.definitions.filter((declaration) => declaration.launch.mode === 'standalone' ||
297
309
  declaration.launch.mode === 'hidden-handoff');
298
310
  const usesBusinessProcess = operations.some(operation => operation.platformAccess?.workflow) ||
299
311
  standardProcessDefinitions.length > 0;
312
+ const namedInputSourceDefinitions = standardProcessDefinitions.filter((declaration) => {
313
+ const submission = declaration.launch.submission;
314
+ if (!submission)
315
+ return false;
316
+ const resource = resources.find(item => item.code === declaration.definition.subject.resourceCode);
317
+ return [submission.create, submission.existing].some(intent => intent &&
318
+ Object.values(intent.inputs).some((binding) => binding.source === 'field' &&
319
+ resource?.schema.fields.some((field) => field.code === binding.fieldCode &&
320
+ field.type.startsWith('resource-ref.') && field.source)));
321
+ });
300
322
  const dataUsage = { resources };
301
323
  const authzUsage = {
302
324
  perspectives: config.perspectives,
@@ -473,9 +495,26 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
473
495
  declaration: config.workflows.definitions.filter((item) => item.definition.instanceCommands !== undefined),
474
496
  }]
475
497
  : []),
498
+ ...(namedInputSourceDefinitions.length
499
+ ? [{ code: 'workflow.named-input-sources', declaration: namedInputSourceDefinitions }]
500
+ : []),
476
501
  ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.administration !== undefined || node.operationPolicy !== undefined))
477
502
  ? [{ code: 'workflow.node-administration', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.administration !== undefined || node.operationPolicy !== undefined)) }]
478
503
  : []),
504
+ ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'cc'))
505
+ ? [{ code: 'workflow.automatic-cc', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'cc')) }]
506
+ : []),
507
+ ...(config.workflows.definitions.some((item) => item.definition.taskPages !== undefined)
508
+ ? ['workflow.task-page-submit', 'workflow.task-private-drafts'].map(code => ({ code, declaration: config.workflows.definitions.filter((item) => item.definition.taskPages !== undefined) }))
509
+ : []),
510
+ ...(taskManagedFileDefinitions.length
511
+ ? [{ code: 'workflow.task-managed-files', declaration: taskManagedFileDefinitions }] : []),
512
+ ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action'))
513
+ ? [{ code: 'workflow.durable-business-step', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action')) }]
514
+ : []),
515
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).some((entry) => entry.routing !== undefined))
516
+ ? [{ code: 'workflow.assignment-routing', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.routing !== undefined)) }]
517
+ : []),
479
518
  ...(usesBusinessProcess
480
519
  ? [
481
520
  {
@@ -949,7 +988,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
949
988
  field: trigger.field,
950
989
  })),
951
990
  ...(config.workflows.activations.length
952
- ? WORKFLOW_EVENT_TYPES_V2.map(eventType => ({
991
+ ? WORKFLOW_EVENT_TYPES_V2.filter(eventType => !WORKFLOW_BUSINESS_STEP_EVENTS.includes(eventType) || config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action'))).map(eventType => ({
953
992
  code: `workflow:${eventType}`,
954
993
  source: 'workflow',
955
994
  eventType,
@@ -976,6 +1015,11 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
976
1015
  fail('NATIVE_MANAGED_CONCURRENCY_INVALID', '/data/concurrency', { reason: 'durable commands require backend runtime' });
977
1016
  const subjectReadSurfaces = compileSubjectReadSurfaces(config, capabilities);
978
1017
  const operations = compileOperations(config);
1018
+ const stepDefinitions = config.workflows.definitions.map((item) => item.definition);
1019
+ const stepHandlers = compileWorkflowBusinessStepHandlers(stepDefinitions);
1020
+ const stepSubscriptionErrors = validateWorkflowBusinessStepSubscriptions(stepDefinitions, eventConsumers, true);
1021
+ if (stepSubscriptionErrors.length)
1022
+ fail(stepSubscriptionErrors[0], '/config/events/subscriptions');
979
1023
  try {
980
1024
  validateDecimalReservationLifecycles(config.data.resources, operations);
981
1025
  }
@@ -1011,6 +1055,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
1011
1055
  : applicationSchemaVersions.get(eventType) || '2.0.0')),
1012
1056
  maxBodyBytes: 65536,
1013
1057
  receiptProtocolVersion: 2,
1058
+ ...(stepHandlers[consumer.code] ? { workflowStep: stepHandlers[consumer.code] } : {}),
1014
1059
  })),
1015
1060
  },
1016
1061
  eventTypes,
@@ -4263,6 +4308,10 @@ function validateWorkflowReferences(config) {
4263
4308
  definitions.add(key);
4264
4309
  validateWorkflowDefinition(definition, `${pointer}/definition`);
4265
4310
  validateWorkflowSubject(definition.subject, resources, `${pointer}/definition/subject`);
4311
+ const taskPageErrors = validateWorkflowTaskPages(definition, new Map((resources.get(definition.subject.resourceCode)?.schema.fields || [])
4312
+ .map((field) => [field.code, { ...resources.get(definition.subject.resourceCode)?.surface?.fields?.[field.code], ...field, system: ['id', 'revision', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy'].includes(field.code) }])));
4313
+ if (taskPageErrors.length)
4314
+ fail(taskPageErrors[0], `${pointer}/definition/taskPages`);
4266
4315
  const policyErrors = validateWorkflowInstanceCommandPolicies(definition, {
4267
4316
  appCode: config.appCode,
4268
4317
  capabilities: config.authz.capabilities.map((item) => item.code),
@@ -4328,6 +4377,9 @@ function validateWorkflowReferences(config) {
4328
4377
  validateWorkflowDefinitionBinding(definition, binding, `/config/workflows/activations/${index}`);
4329
4378
  activeBindings.set(code, binding);
4330
4379
  }
4380
+ const routingErrors = validateWorkflowAssignmentRoutingBindings([...activeBindings.values()]);
4381
+ if (routingErrors.length)
4382
+ fail(routingErrors[0], '/config/workflows/activations');
4331
4383
  const providerCodes = new Set();
4332
4384
  config.workflows.providers.forEach((raw, index) => {
4333
4385
  const pointer = `/config/workflows/providers/${index}`;
@@ -4481,7 +4533,7 @@ function validateWorkflowDefinition(definition, pointer) {
4481
4533
  'startAt',
4482
4534
  'inputSchema',
4483
4535
  'nodes',
4484
- ], pointer, ['organizationContext', 'instanceCommands', 'readability']);
4536
+ ], pointer, ['organizationContext', 'instanceCommands', 'readability', 'taskPages']);
4485
4537
  equal(definition.schemaVersion, 'openxiangda.workflow-definition/v2', `${pointer}/schemaVersion`);
4486
4538
  workflowCodeValue(definition.code, `${pointer}/code`);
4487
4539
  requiredString(definition.title, `${pointer}/title`, 255);
@@ -4500,6 +4552,15 @@ function validateWorkflowDefinition(definition, pointer) {
4500
4552
  const administrationErrors = validateWorkflowAdministration(definition);
4501
4553
  if (administrationErrors.length)
4502
4554
  fail(administrationErrors[0], `${pointer}/nodes`);
4555
+ const ccErrors = validateWorkflowAutomaticCc(definition);
4556
+ if (ccErrors.length)
4557
+ fail(ccErrors[0], `${pointer}/nodes`);
4558
+ const taskPageErrors = validateWorkflowTaskPages(definition);
4559
+ if (taskPageErrors.length)
4560
+ fail(taskPageErrors[0], `${pointer}/taskPages`);
4561
+ const stepErrors = validateWorkflowBusinessSteps(definition);
4562
+ if (stepErrors.length)
4563
+ fail(stepErrors[0], `${pointer}/nodes`);
4503
4564
  if (!nodes[startAt])
4504
4565
  fail('NATIVE_WORKFLOW_START_NODE_MISSING', `${pointer}/startAt`);
4505
4566
  const edges = new Map();
@@ -4507,7 +4568,7 @@ function validateWorkflowDefinition(definition, pointer) {
4507
4568
  const nodePointer = `${pointer}/nodes/${nodeId}`;
4508
4569
  const node = object(rawNode, nodePointer);
4509
4570
  equal(node.id, nodeId, `${nodePointer}/id`);
4510
- if (!['approval', 'condition', 'end'].includes(node.kind)) {
4571
+ if (!['approval', 'condition', 'end', 'cc', 'action'].includes(node.kind)) {
4511
4572
  fail('NATIVE_WORKFLOW_NODE_KIND_INVALID', `${nodePointer}/kind`);
4512
4573
  }
4513
4574
  const targets = [];
@@ -4529,6 +4590,14 @@ function validateWorkflowDefinition(definition, pointer) {
4529
4590
  }
4530
4591
  }
4531
4592
  }
4593
+ else if (node.kind === 'action') {
4594
+ targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
4595
+ }
4596
+ else if (node.kind === 'cc') {
4597
+ requiredString(node.title, `${nodePointer}/title`, 255);
4598
+ workflowBindingCode(node.binding, `${nodePointer}/binding`);
4599
+ targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
4600
+ }
4532
4601
  else if (node.kind === 'condition') {
4533
4602
  const branches = boundedArray(node.branches, `${nodePointer}/branches`, 100);
4534
4603
  if (branches.length === 0) {
@@ -4578,7 +4647,7 @@ function validateWorkflowExpression(value, pointer, depth) {
4578
4647
  return;
4579
4648
  if (op === 'path') {
4580
4649
  const path = requiredString(expression.path, `${pointer}/path`, 255);
4581
- if (!/^[A-Za-z][A-Za-z0-9_.]{0,254}$/.test(path)) {
4650
+ if (!/^[A-Za-z][A-Za-z0-9_.-]{0,254}$/.test(path) || path.split('.').some(part => ['__proto__', 'constructor', 'prototype'].includes(part))) {
4582
4651
  fail('NATIVE_WORKFLOW_EXPRESSION_PATH_INVALID', `${pointer}/path`);
4583
4652
  }
4584
4653
  return;
@@ -4644,14 +4713,25 @@ function validateWorkflowBinding(binding, pointer) {
4644
4713
  if (provider === 'application_provider') {
4645
4714
  stableCode(entry.providerCode, `${pointer}/bindings/${code}/providerCode`);
4646
4715
  }
4716
+ if (entry.routing !== undefined) {
4717
+ const errors = validateWorkflowAssignmentRoutingPolicy(entry.routing);
4718
+ if (errors.length)
4719
+ fail(errors[0], `${pointer}/bindings/${code}/routing`);
4720
+ }
4647
4721
  }
4648
4722
  }
4649
4723
  function validateWorkflowDefinitionBinding(definition, binding, pointer) {
4650
4724
  equal(binding.workflowCode, definition.code, `${pointer}/workflowCode`);
4651
4725
  const entries = object(binding.bindings, `${pointer}/bindings`);
4726
+ const ccErrors = validateWorkflowAutomaticCc(definition, binding);
4727
+ if (ccErrors.length)
4728
+ fail(ccErrors[0], pointer);
4729
+ const stepErrors = validateWorkflowBusinessSteps(definition, binding);
4730
+ if (stepErrors.length)
4731
+ fail(stepErrors[0], pointer);
4652
4732
  for (const [nodeId, rawNode] of Object.entries(object(definition.nodes, `${pointer}/nodes`))) {
4653
4733
  const node = object(rawNode, `${pointer}/nodes/${nodeId}`);
4654
- if (node.kind === 'approval' && !entries[node.binding]) {
4734
+ if (['approval', 'cc'].includes(node.kind) && !entries[node.binding]) {
4655
4735
  fail('NATIVE_WORKFLOW_BINDING_REFERENCE_MISSING', `${pointer}/nodes/${nodeId}/binding`);
4656
4736
  }
4657
4737
  }