openxiangda-contracts 2.34.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.
- package/dist/browser.d.ts +8 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +8 -0
- package/dist/browser.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/native-compiler/compiler.d.ts +1 -1
- package/dist/native-compiler/compiler.d.ts.map +1 -1
- package/dist/native-compiler/compiler.js +99 -5
- package/dist/native-compiler/compiler.js.map +1 -1
- package/dist/native-compiler/index.cjs +6 -5
- package/dist/native-compiler/index.d.ts +10 -0
- package/dist/native-compiler/index.d.ts.map +1 -1
- package/dist/native-compiler/index.js +6 -5
- package/dist/native-compiler/role-membership-batch.d.ts +73 -0
- package/dist/native-compiler/role-membership-batch.d.ts.map +1 -0
- package/dist/native-compiler/role-membership-batch.js +91 -0
- package/dist/native-compiler/role-membership-batch.js.map +1 -0
- package/dist/native-compiler/workflow-assignment-routing.d.ts +121 -0
- package/dist/native-compiler/workflow-assignment-routing.d.ts.map +1 -0
- package/dist/native-compiler/workflow-assignment-routing.js +113 -0
- package/dist/native-compiler/workflow-assignment-routing.js.map +1 -0
- package/dist/native-compiler/workflow-automatic-cc.d.ts +20 -0
- package/dist/native-compiler/workflow-automatic-cc.d.ts.map +1 -0
- package/dist/native-compiler/workflow-automatic-cc.js +36 -0
- package/dist/native-compiler/workflow-automatic-cc.js.map +1 -0
- package/dist/native-compiler/workflow-business-step-identity.d.ts +12 -0
- package/dist/native-compiler/workflow-business-step-identity.d.ts.map +1 -0
- package/dist/native-compiler/workflow-business-step-identity.js +11 -0
- package/dist/native-compiler/workflow-business-step-identity.js.map +1 -0
- package/dist/native-compiler/workflow-business-step.d.ts +119 -0
- package/dist/native-compiler/workflow-business-step.d.ts.map +1 -0
- package/dist/native-compiler/workflow-business-step.js +357 -0
- package/dist/native-compiler/workflow-business-step.js.map +1 -0
- package/dist/native-compiler/workflow-delegation-administration.d.ts +1084 -0
- package/dist/native-compiler/workflow-delegation-administration.d.ts.map +1 -0
- package/dist/native-compiler/workflow-delegation-administration.js +68 -0
- package/dist/native-compiler/workflow-delegation-administration.js.map +1 -0
- package/dist/native-compiler/workflow-graph.d.ts +182 -0
- package/dist/native-compiler/workflow-graph.d.ts.map +1 -0
- package/dist/native-compiler/workflow-graph.js +201 -0
- package/dist/native-compiler/workflow-graph.js.map +1 -0
- package/dist/native-compiler/workflow-node-administration.d.ts +46 -0
- package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -0
- package/dist/native-compiler/workflow-node-administration.js +105 -0
- package/dist/native-compiler/workflow-node-administration.js.map +1 -0
- package/dist/native-compiler/workflow-task-page.d.ts +119 -0
- package/dist/native-compiler/workflow-task-page.d.ts.map +1 -0
- package/dist/native-compiler/workflow-task-page.js +225 -0
- package/dist/native-compiler/workflow-task-page.js.map +1 -0
- package/dist/native-version.d.ts +10 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +10 -0
- package/dist/native-version.js.map +1 -1
- package/dist/native.d.ts +2 -0
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/schemas.d.ts +4745 -1006
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +217 -0
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +218 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/browser.d.ts
CHANGED
|
@@ -11,10 +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';
|
|
15
|
+
export * from './native-compiler/workflow-graph.js';
|
|
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';
|
|
14
21
|
export * from './validation.js';
|
|
15
22
|
export * from './workflow-correction.js';
|
|
16
23
|
export * from './native-compiler/data-audit-access.js';
|
|
17
24
|
export * from './process-resolution.js';
|
|
18
25
|
export * from './application-diagnostics.js';
|
|
19
26
|
export * from './native-compiler/unique-keys.js';
|
|
27
|
+
export * from './native-compiler/role-membership-batch.js';
|
|
20
28
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -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,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,10 +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';
|
|
15
|
+
export * from './native-compiler/workflow-graph.js';
|
|
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';
|
|
14
21
|
export * from './validation.js';
|
|
15
22
|
export * from './workflow-correction.js';
|
|
16
23
|
export * from './native-compiler/data-audit-access.js';
|
|
17
24
|
export * from './process-resolution.js';
|
|
18
25
|
export * from './application-diagnostics.js';
|
|
19
26
|
export * from './native-compiler/unique-keys.js';
|
|
27
|
+
export * from './native-compiler/role-membership-batch.js';
|
|
20
28
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -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,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,6 +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';
|
|
19
|
+
export * from './native-compiler/workflow-graph.js';
|
|
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';
|
|
18
25
|
export * from './validation.js';
|
|
19
26
|
export * from './workflow-correction.js';
|
|
20
27
|
export * from './native-compiler/workflow-instance-policy.js';
|
|
@@ -22,4 +29,6 @@ export { validateDataFieldDefinition } from './data-field-validation.js';
|
|
|
22
29
|
export * from './process-resolution.js';
|
|
23
30
|
export * from './application-diagnostics.js';
|
|
24
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';
|
|
25
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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,6 +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';
|
|
19
|
+
export * from './native-compiler/workflow-graph.js';
|
|
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';
|
|
18
25
|
export * from './validation.js';
|
|
19
26
|
export * from './workflow-correction.js';
|
|
20
27
|
export * from './native-compiler/workflow-instance-policy.js';
|
|
@@ -22,4 +29,6 @@ export { validateDataFieldDefinition } from './data-field-validation.js';
|
|
|
22
29
|
export * from './process-resolution.js';
|
|
23
30
|
export * from './application-diagnostics.js';
|
|
24
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';
|
|
25
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,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":"
|
|
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"}
|
|
@@ -6,6 +6,12 @@ import { compileNativeEventAction } from './event-action.js';
|
|
|
6
6
|
import { projectNativeDataResourceViewV2 } from './data-surface.js';
|
|
7
7
|
import { hasDataAuditReadPolicy, isDataAuditMetadataField } from './data-audit-access.js';
|
|
8
8
|
import { validateWorkflowInstanceCommandPolicies } from './workflow-instance-policy.js';
|
|
9
|
+
import { validateWorkflowReadability } from './workflow-graph.js';
|
|
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';
|
|
9
15
|
import * as crypto from 'crypto';
|
|
10
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';
|
|
11
17
|
import { canonicalJson, sha256Digest as sha256Canonical } from '../canonical.js';
|
|
@@ -118,6 +124,10 @@ export const DATA_EVENT_TYPES_V2 = [
|
|
|
118
124
|
'openxiangda.data.record.deleted.v2',
|
|
119
125
|
];
|
|
120
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',
|
|
121
131
|
'openxiangda.workflow.instance.started.v2',
|
|
122
132
|
'openxiangda.workflow.instance.cc_added.v2',
|
|
123
133
|
'openxiangda.workflow.instance.completed.v2',
|
|
@@ -291,10 +301,24 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
|
|
|
291
301
|
config.events.subscriptions.some((subscription) => subscription.platformAccess?.managedFileCopies);
|
|
292
302
|
const usesNotification = operations.some(operation => operation.platformAccess?.notification) ||
|
|
293
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
|
+
});
|
|
294
308
|
const standardProcessDefinitions = config.workflows.definitions.filter((declaration) => declaration.launch.mode === 'standalone' ||
|
|
295
309
|
declaration.launch.mode === 'hidden-handoff');
|
|
296
310
|
const usesBusinessProcess = operations.some(operation => operation.platformAccess?.workflow) ||
|
|
297
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
|
+
});
|
|
298
322
|
const dataUsage = { resources };
|
|
299
323
|
const authzUsage = {
|
|
300
324
|
perspectives: config.perspectives,
|
|
@@ -471,6 +495,26 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
|
|
|
471
495
|
declaration: config.workflows.definitions.filter((item) => item.definition.instanceCommands !== undefined),
|
|
472
496
|
}]
|
|
473
497
|
: []),
|
|
498
|
+
...(namedInputSourceDefinitions.length
|
|
499
|
+
? [{ code: 'workflow.named-input-sources', declaration: namedInputSourceDefinitions }]
|
|
500
|
+
: []),
|
|
501
|
+
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.administration !== undefined || node.operationPolicy !== undefined))
|
|
502
|
+
? [{ code: 'workflow.node-administration', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.administration !== undefined || node.operationPolicy !== undefined)) }]
|
|
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
|
+
: []),
|
|
474
518
|
...(usesBusinessProcess
|
|
475
519
|
? [
|
|
476
520
|
{
|
|
@@ -944,7 +988,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
|
|
|
944
988
|
field: trigger.field,
|
|
945
989
|
})),
|
|
946
990
|
...(config.workflows.activations.length
|
|
947
|
-
? 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 => ({
|
|
948
992
|
code: `workflow:${eventType}`,
|
|
949
993
|
source: 'workflow',
|
|
950
994
|
eventType,
|
|
@@ -971,6 +1015,11 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
|
|
|
971
1015
|
fail('NATIVE_MANAGED_CONCURRENCY_INVALID', '/data/concurrency', { reason: 'durable commands require backend runtime' });
|
|
972
1016
|
const subjectReadSurfaces = compileSubjectReadSurfaces(config, capabilities);
|
|
973
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');
|
|
974
1023
|
try {
|
|
975
1024
|
validateDecimalReservationLifecycles(config.data.resources, operations);
|
|
976
1025
|
}
|
|
@@ -1006,6 +1055,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
|
|
|
1006
1055
|
: applicationSchemaVersions.get(eventType) || '2.0.0')),
|
|
1007
1056
|
maxBodyBytes: 65536,
|
|
1008
1057
|
receiptProtocolVersion: 2,
|
|
1058
|
+
...(stepHandlers[consumer.code] ? { workflowStep: stepHandlers[consumer.code] } : {}),
|
|
1009
1059
|
})),
|
|
1010
1060
|
},
|
|
1011
1061
|
eventTypes,
|
|
@@ -4258,6 +4308,10 @@ function validateWorkflowReferences(config) {
|
|
|
4258
4308
|
definitions.add(key);
|
|
4259
4309
|
validateWorkflowDefinition(definition, `${pointer}/definition`);
|
|
4260
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`);
|
|
4261
4315
|
const policyErrors = validateWorkflowInstanceCommandPolicies(definition, {
|
|
4262
4316
|
appCode: config.appCode,
|
|
4263
4317
|
capabilities: config.authz.capabilities.map((item) => item.code),
|
|
@@ -4312,6 +4366,9 @@ function validateWorkflowReferences(config) {
|
|
|
4312
4366
|
}
|
|
4313
4367
|
const definition = definitionValues.get(definitionKey);
|
|
4314
4368
|
const binding = bindingValues.get(bindingKey);
|
|
4369
|
+
const administrationErrors = validateWorkflowAdministration(definition, binding);
|
|
4370
|
+
if (administrationErrors.length)
|
|
4371
|
+
fail(administrationErrors[0], pointer);
|
|
4315
4372
|
if (!['finish-pinned', 'cancel-on-deactivate'].includes(activation.acceptedCommandDeactivationPolicy) ||
|
|
4316
4373
|
activation.acceptedCommandDeactivationPolicy !==
|
|
4317
4374
|
definition.acceptedCommandDeactivationPolicy) {
|
|
@@ -4320,6 +4377,9 @@ function validateWorkflowReferences(config) {
|
|
|
4320
4377
|
validateWorkflowDefinitionBinding(definition, binding, `/config/workflows/activations/${index}`);
|
|
4321
4378
|
activeBindings.set(code, binding);
|
|
4322
4379
|
}
|
|
4380
|
+
const routingErrors = validateWorkflowAssignmentRoutingBindings([...activeBindings.values()]);
|
|
4381
|
+
if (routingErrors.length)
|
|
4382
|
+
fail(routingErrors[0], '/config/workflows/activations');
|
|
4323
4383
|
const providerCodes = new Set();
|
|
4324
4384
|
config.workflows.providers.forEach((raw, index) => {
|
|
4325
4385
|
const pointer = `/config/workflows/providers/${index}`;
|
|
@@ -4473,7 +4533,7 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
4473
4533
|
'startAt',
|
|
4474
4534
|
'inputSchema',
|
|
4475
4535
|
'nodes',
|
|
4476
|
-
], pointer, ['organizationContext', 'instanceCommands']);
|
|
4536
|
+
], pointer, ['organizationContext', 'instanceCommands', 'readability', 'taskPages']);
|
|
4477
4537
|
equal(definition.schemaVersion, 'openxiangda.workflow-definition/v2', `${pointer}/schemaVersion`);
|
|
4478
4538
|
workflowCodeValue(definition.code, `${pointer}/code`);
|
|
4479
4539
|
requiredString(definition.title, `${pointer}/title`, 255);
|
|
@@ -4486,6 +4546,21 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
4486
4546
|
fail('NATIVE_WORKFLOW_NODE_COUNT_INVALID', `${pointer}/nodes`);
|
|
4487
4547
|
}
|
|
4488
4548
|
const startAt = requiredString(definition.startAt, `${pointer}/startAt`, 128);
|
|
4549
|
+
const readabilityErrors = validateWorkflowReadability(definition);
|
|
4550
|
+
if (readabilityErrors.length)
|
|
4551
|
+
fail(readabilityErrors[0], `${pointer}/readability`);
|
|
4552
|
+
const administrationErrors = validateWorkflowAdministration(definition);
|
|
4553
|
+
if (administrationErrors.length)
|
|
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`);
|
|
4489
4564
|
if (!nodes[startAt])
|
|
4490
4565
|
fail('NATIVE_WORKFLOW_START_NODE_MISSING', `${pointer}/startAt`);
|
|
4491
4566
|
const edges = new Map();
|
|
@@ -4493,7 +4568,7 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
4493
4568
|
const nodePointer = `${pointer}/nodes/${nodeId}`;
|
|
4494
4569
|
const node = object(rawNode, nodePointer);
|
|
4495
4570
|
equal(node.id, nodeId, `${nodePointer}/id`);
|
|
4496
|
-
if (!['approval', 'condition', 'end'].includes(node.kind)) {
|
|
4571
|
+
if (!['approval', 'condition', 'end', 'cc', 'action'].includes(node.kind)) {
|
|
4497
4572
|
fail('NATIVE_WORKFLOW_NODE_KIND_INVALID', `${nodePointer}/kind`);
|
|
4498
4573
|
}
|
|
4499
4574
|
const targets = [];
|
|
@@ -4515,6 +4590,14 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
4515
4590
|
}
|
|
4516
4591
|
}
|
|
4517
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
|
+
}
|
|
4518
4601
|
else if (node.kind === 'condition') {
|
|
4519
4602
|
const branches = boundedArray(node.branches, `${nodePointer}/branches`, 100);
|
|
4520
4603
|
if (branches.length === 0) {
|
|
@@ -4564,7 +4647,7 @@ function validateWorkflowExpression(value, pointer, depth) {
|
|
|
4564
4647
|
return;
|
|
4565
4648
|
if (op === 'path') {
|
|
4566
4649
|
const path = requiredString(expression.path, `${pointer}/path`, 255);
|
|
4567
|
-
if (!/^[A-Za-z][A-Za-z0-9_
|
|
4650
|
+
if (!/^[A-Za-z][A-Za-z0-9_.-]{0,254}$/.test(path) || path.split('.').some(part => ['__proto__', 'constructor', 'prototype'].includes(part))) {
|
|
4568
4651
|
fail('NATIVE_WORKFLOW_EXPRESSION_PATH_INVALID', `${pointer}/path`);
|
|
4569
4652
|
}
|
|
4570
4653
|
return;
|
|
@@ -4630,14 +4713,25 @@ function validateWorkflowBinding(binding, pointer) {
|
|
|
4630
4713
|
if (provider === 'application_provider') {
|
|
4631
4714
|
stableCode(entry.providerCode, `${pointer}/bindings/${code}/providerCode`);
|
|
4632
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
|
+
}
|
|
4633
4721
|
}
|
|
4634
4722
|
}
|
|
4635
4723
|
function validateWorkflowDefinitionBinding(definition, binding, pointer) {
|
|
4636
4724
|
equal(binding.workflowCode, definition.code, `${pointer}/workflowCode`);
|
|
4637
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);
|
|
4638
4732
|
for (const [nodeId, rawNode] of Object.entries(object(definition.nodes, `${pointer}/nodes`))) {
|
|
4639
4733
|
const node = object(rawNode, `${pointer}/nodes/${nodeId}`);
|
|
4640
|
-
if (node.kind
|
|
4734
|
+
if (['approval', 'cc'].includes(node.kind) && !entries[node.binding]) {
|
|
4641
4735
|
fail('NATIVE_WORKFLOW_BINDING_REFERENCE_MISSING', `${pointer}/nodes/${nodeId}/binding`);
|
|
4642
4736
|
}
|
|
4643
4737
|
}
|