openxiangda-contracts 2.78.0 → 2.79.1
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/ai.d.ts +31 -0
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +14 -0
- package/dist/ai.js.map +1 -1
- package/dist/browser.d.ts +11 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +10 -0
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/data-field-validation.js +26 -23
- package/dist/data-field-validation.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/native-compiler/address-value.d.ts +13 -0
- package/dist/native-compiler/address-value.d.ts.map +1 -0
- package/dist/native-compiler/address-value.js +70 -0
- package/dist/native-compiler/address-value.js.map +1 -0
- package/dist/native-compiler/cascade-value.d.ts +6 -0
- package/dist/native-compiler/cascade-value.d.ts.map +1 -0
- package/dist/native-compiler/cascade-value.js +47 -0
- package/dist/native-compiler/cascade-value.js.map +1 -0
- 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 +78 -52
- package/dist/native-compiler/compiler.js.map +1 -1
- package/dist/native-compiler/data-field.d.ts +3 -0
- package/dist/native-compiler/data-field.d.ts.map +1 -1
- package/dist/native-compiler/data-field.js +10 -2
- package/dist/native-compiler/data-field.js.map +1 -1
- package/dist/native-compiler/index.cjs +4 -4
- package/dist/native-compiler/index.d.ts +11 -0
- package/dist/native-compiler/index.d.ts.map +1 -1
- package/dist/native-compiler/index.js +4 -4
- package/dist/native-compiler/resource-query.d.ts +21 -0
- package/dist/native-compiler/resource-query.d.ts.map +1 -0
- package/dist/native-compiler/resource-query.js +154 -0
- package/dist/native-compiler/resource-query.js.map +1 -0
- package/dist/native-compiler/workflow-approval-empty.d.ts +1 -1
- package/dist/native-compiler/workflow-approval-empty.d.ts.map +1 -1
- package/dist/native-compiler/workflow-approval-empty.js +1 -1
- package/dist/native-compiler/workflow-approval-empty.js.map +1 -1
- package/dist/native-compiler/workflow-business-step.d.ts +8 -2
- package/dist/native-compiler/workflow-business-step.d.ts.map +1 -1
- package/dist/native-compiler/workflow-business-step.js +10 -5
- package/dist/native-compiler/workflow-business-step.js.map +1 -1
- package/dist/native-compiler/workflow-completion-deadline.d.ts +1 -0
- package/dist/native-compiler/workflow-completion-deadline.d.ts.map +1 -1
- package/dist/native-compiler/workflow-completion-deadline.js +1 -1
- package/dist/native-compiler/workflow-completion-deadline.js.map +1 -1
- package/dist/native-compiler/workflow-correction.d.ts +1 -0
- package/dist/native-compiler/workflow-correction.d.ts.map +1 -1
- package/dist/native-compiler/workflow-correction.js +5 -4
- package/dist/native-compiler/workflow-correction.js.map +1 -1
- package/dist/native-compiler/workflow-designer.d.ts +127 -0
- package/dist/native-compiler/workflow-designer.d.ts.map +1 -0
- package/dist/native-compiler/workflow-designer.js +397 -0
- package/dist/native-compiler/workflow-designer.js.map +1 -0
- package/dist/native-compiler/workflow-events.d.ts +8 -0
- package/dist/native-compiler/workflow-events.d.ts.map +1 -0
- package/dist/native-compiler/workflow-events.js +53 -0
- package/dist/native-compiler/workflow-events.js.map +1 -0
- package/dist/native-compiler/workflow-graph.d.ts +16 -1
- package/dist/native-compiler/workflow-graph.d.ts.map +1 -1
- package/dist/native-compiler/workflow-graph.js +27 -5
- package/dist/native-compiler/workflow-graph.js.map +1 -1
- package/dist/native-compiler/workflow-handle.d.ts +4 -0
- package/dist/native-compiler/workflow-handle.d.ts.map +1 -0
- package/dist/native-compiler/workflow-handle.js +20 -0
- package/dist/native-compiler/workflow-handle.js.map +1 -0
- package/dist/native-compiler/workflow-initiator-approval.d.ts +1 -0
- package/dist/native-compiler/workflow-initiator-approval.d.ts.map +1 -1
- package/dist/native-compiler/workflow-initiator-approval.js +1 -1
- package/dist/native-compiler/workflow-initiator-approval.js.map +1 -1
- package/dist/native-compiler/workflow-node-administration.d.ts +12 -1
- package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -1
- package/dist/native-compiler/workflow-node-administration.js +66 -14
- package/dist/native-compiler/workflow-node-administration.js.map +1 -1
- package/dist/native-compiler/workflow-parallel.d.ts +69 -0
- package/dist/native-compiler/workflow-parallel.d.ts.map +1 -0
- package/dist/native-compiler/workflow-parallel.js +178 -0
- package/dist/native-compiler/workflow-parallel.js.map +1 -0
- package/dist/native-compiler/workflow-platform-notify.d.ts +41 -0
- package/dist/native-compiler/workflow-platform-notify.d.ts.map +1 -0
- package/dist/native-compiler/workflow-platform-notify.js +49 -0
- package/dist/native-compiler/workflow-platform-notify.js.map +1 -0
- package/dist/native-compiler/workflow-reminders.d.ts +11 -0
- package/dist/native-compiler/workflow-reminders.d.ts.map +1 -0
- package/dist/native-compiler/workflow-reminders.js +12 -0
- package/dist/native-compiler/workflow-reminders.js.map +1 -0
- package/dist/native-compiler/workflow-return-policy.d.ts +20 -0
- package/dist/native-compiler/workflow-return-policy.d.ts.map +1 -0
- package/dist/native-compiler/workflow-return-policy.js +37 -0
- package/dist/native-compiler/workflow-return-policy.js.map +1 -0
- package/dist/native-compiler/workflow-role-union.d.ts +5 -1
- package/dist/native-compiler/workflow-role-union.d.ts.map +1 -1
- package/dist/native-compiler/workflow-role-union.js +1 -1
- package/dist/native-compiler/workflow-role-union.js.map +1 -1
- package/dist/native-compiler/workflow-source-sync.d.ts +109 -0
- package/dist/native-compiler/workflow-source-sync.d.ts.map +1 -0
- package/dist/native-compiler/workflow-source-sync.js +120 -0
- package/dist/native-compiler/workflow-source-sync.js.map +1 -0
- package/dist/native-compiler/workflow-supervisor-chain.d.ts +16 -0
- package/dist/native-compiler/workflow-supervisor-chain.d.ts.map +1 -0
- package/dist/native-compiler/workflow-supervisor-chain.js +44 -0
- package/dist/native-compiler/workflow-supervisor-chain.js.map +1 -0
- package/dist/native-compiler/workflow-task-page.js +1 -1
- package/dist/native-compiler/workflow-task-page.js.map +1 -1
- package/dist/native-version.d.ts +6 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +6 -0
- package/dist/native-version.js.map +1 -1
- package/dist/native.d.ts +8 -0
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/references.d.ts +4 -0
- package/dist/references.d.ts.map +1 -1
- package/dist/schemas.d.ts +1266 -10
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +83 -8
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +46 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -40
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function optionSnapshot(option) {
|
|
2
|
+
return {
|
|
3
|
+
value: option.value,
|
|
4
|
+
label: option.label,
|
|
5
|
+
...(option.description ? { description: option.description } : {}),
|
|
6
|
+
...(option.color ? { color: option.color } : {}),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function resolvePath(options, ids, index = 0) {
|
|
10
|
+
const option = options.find(item => item.value === ids[index]);
|
|
11
|
+
if (!option)
|
|
12
|
+
return undefined;
|
|
13
|
+
if (index === ids.length - 1)
|
|
14
|
+
return [optionSnapshot(option)];
|
|
15
|
+
const child = resolvePath(option.children || [], ids, index + 1);
|
|
16
|
+
return child ? [optionSnapshot(option), ...child] : undefined;
|
|
17
|
+
}
|
|
18
|
+
export function cascadeControlValue(value, multiple) {
|
|
19
|
+
if (multiple) {
|
|
20
|
+
return (Array.isArray(value) ? value : [])
|
|
21
|
+
.filter((path) => Array.isArray(path))
|
|
22
|
+
.map(path => path.map(item => item.value));
|
|
23
|
+
}
|
|
24
|
+
return (Array.isArray(value) ? value : [])
|
|
25
|
+
.filter((item) => !Array.isArray(item))
|
|
26
|
+
.map(item => item.value);
|
|
27
|
+
}
|
|
28
|
+
export function cascadeStoredValue(options, value, multiple) {
|
|
29
|
+
const paths = multiple
|
|
30
|
+
? (Array.isArray(value) ? value : []).filter(Array.isArray)
|
|
31
|
+
: Array.isArray(value) && value.length ? [value.map(String)] : [];
|
|
32
|
+
const snapshots = paths
|
|
33
|
+
.map(path => resolvePath(options, path.map(String)))
|
|
34
|
+
.filter((path) => Boolean(path));
|
|
35
|
+
return multiple ? snapshots : snapshots[0];
|
|
36
|
+
}
|
|
37
|
+
export function cascadeTerminalValues(value, multiple) {
|
|
38
|
+
const paths = multiple
|
|
39
|
+
? (Array.isArray(value) ? value : []).filter(Array.isArray)
|
|
40
|
+
: [Array.isArray(value)
|
|
41
|
+
? value.filter(item => !Array.isArray(item))
|
|
42
|
+
: []];
|
|
43
|
+
return paths
|
|
44
|
+
.map(path => path[path.length - 1]?.value)
|
|
45
|
+
.filter((item) => Boolean(item));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=cascade-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade-value.js","sourceRoot":"","sources":["../../src/native-compiler/cascade-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ declare const COMPILER_CONTRACT_VERSION: "native-4";
|
|
|
4
4
|
export { NATIVE_CONTRACT_CAPACITY_V2, requiresExtendedDeclarationCapacity, requiresExtendedRoleCapacity, generatedCrudCapabilityOperations } from './declaration-capacity.js';
|
|
5
5
|
export { NATIVE_ARTIFACT_CAPACITY_V2, NATIVE_HIGH_DENSITY_ARTIFACT_CAPACITY_V2, requiresHighDensityArtifactCapacity, requiresExtendedArtifactCapacity, requiresExtendedConfigurationBytes } from './artifact-capacity.js';
|
|
6
6
|
export declare const DATA_EVENT_TYPES_V2: readonly ["openxiangda.data.record.created.v2", "openxiangda.data.record.updated.v2", "openxiangda.data.record.deleted.v2"];
|
|
7
|
-
export
|
|
7
|
+
export { WORKFLOW_EVENT_TYPES_V2 } from './workflow-events.js';
|
|
8
8
|
type JsonObject = Record<string, any>;
|
|
9
9
|
export interface NativeConfigurationCompilerInput {
|
|
10
10
|
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":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import { validateWorkflowSupervisorChains, validateWorkflowSupervisorChainBinding } from './workflow-supervisor-chain.js';
|
|
2
|
+
import { validateWorkflowReminders } from './workflow-reminders.js';
|
|
3
|
+
import { isWorkflowPlatformNotify } from './workflow-platform-notify.js';
|
|
4
|
+
import { validateWorkflowParallel } from './workflow-parallel.js';
|
|
5
|
+
import { validateWorkflowReturnPolicies, workflowReturnTargets } from './workflow-return-policy.js';
|
|
6
|
+
import { validateWorkflowHandlingNodes } from './workflow-handle.js';
|
|
1
7
|
import { normalizeDataMutationGrants } from './service-mutations.js';
|
|
2
8
|
import { hasNativeParentReadPolicy, resolveNativeParentReadBinding, validateNativeParentReadPolicies, NativeParentReadPolicyError } from './parent-read-policy.js';
|
|
3
9
|
import { requiresExtendedFieldCapacity, WORKFLOW_LAUNCH_MAX_INPUTS } from './data-capacity.js';
|
|
@@ -26,7 +32,7 @@ import { validateWorkflowCorrections } from './workflow-correction.js';
|
|
|
26
32
|
import { dateEventProjectionFieldsV2 } from './date-event-projection.js';
|
|
27
33
|
import { validateWorkflowTaskPages } from './workflow-task-page.js';
|
|
28
34
|
import { requiresExtendedOwnedSubtableCapacity, requiresAggregateOwnedSubtableCapacity, dataOwnedRowLimit, isDataOwnedRowLimit } from './data-capacity.js';
|
|
29
|
-
import { validateWorkflowBusinessSteps, compileWorkflowBusinessStepHandlers, validateWorkflowBusinessStepSubscriptions
|
|
35
|
+
import { validateWorkflowBusinessSteps, compileWorkflowBusinessStepHandlers, validateWorkflowBusinessStepSubscriptions } from './workflow-business-step.js';
|
|
30
36
|
import { validateWorkflowAssignmentRoutingBindings, validateWorkflowAssignmentRoutingPolicy } from './workflow-assignment-routing.js';
|
|
31
37
|
import { requiresWorkflowRoleUnion, validateWorkflowRoleUnion, requiresWorkflowRoleInputSelection, validateWorkflowRoleInputSelection } from './workflow-role-union.js';
|
|
32
38
|
import { assertWorkflowOwnedSubjectCreate, assertWorkflowOwnedSubjectCreateResources } from './workflow-owned-subject.js';
|
|
@@ -91,6 +97,8 @@ const ADMIN_NAVIGATION_ICONS = new Set([
|
|
|
91
97
|
'settings',
|
|
92
98
|
]);
|
|
93
99
|
const WORKFLOW_OPERATIONS = new Set([
|
|
100
|
+
'complete',
|
|
101
|
+
'save_form',
|
|
94
102
|
'approve',
|
|
95
103
|
'reject',
|
|
96
104
|
'return',
|
|
@@ -128,46 +136,8 @@ export const DATA_EVENT_TYPES_V2 = [
|
|
|
128
136
|
'openxiangda.data.record.updated.v2',
|
|
129
137
|
'openxiangda.data.record.deleted.v2',
|
|
130
138
|
];
|
|
131
|
-
export
|
|
132
|
-
|
|
133
|
-
WORKFLOW_BUSINESS_STEP_EVENT,
|
|
134
|
-
'openxiangda.workflow.step.result_received.v2',
|
|
135
|
-
'openxiangda.workflow.step.completed.v2',
|
|
136
|
-
'openxiangda.workflow.step.continuation_failed.v2',
|
|
137
|
-
'openxiangda.workflow.instance.started.v2',
|
|
138
|
-
'openxiangda.workflow.instance.cc_added.v2',
|
|
139
|
-
'openxiangda.workflow.instance.completed.v2',
|
|
140
|
-
'openxiangda.workflow.instance.rejected.v2',
|
|
141
|
-
'openxiangda.workflow.instance.returned.v2',
|
|
142
|
-
'openxiangda.workflow.instance.resumed.v2',
|
|
143
|
-
'openxiangda.workflow.instance.withdrawn.v2',
|
|
144
|
-
'openxiangda.workflow.instance.terminated.v2',
|
|
145
|
-
'openxiangda.workflow.task.created.v2',
|
|
146
|
-
'openxiangda.workflow.task.assigned.v2',
|
|
147
|
-
'openxiangda.workflow.task.assignment_pending.v2',
|
|
148
|
-
'openxiangda.workflow.task.assignment_resolution_failed.v2',
|
|
149
|
-
'openxiangda.workflow.task.approved.v2',
|
|
150
|
-
'openxiangda.workflow.task.completed.v2',
|
|
151
|
-
'openxiangda.workflow.task.rejected.v2',
|
|
152
|
-
'openxiangda.workflow.task.returned.v2',
|
|
153
|
-
'openxiangda.workflow.task.resubmitted.v2',
|
|
154
|
-
'openxiangda.workflow.task.transferred.v2',
|
|
155
|
-
'openxiangda.workflow.task.reassigned.v2',
|
|
156
|
-
'openxiangda.workflow.task.delegated.v2',
|
|
157
|
-
'openxiangda.workflow.task.assignee_added.v2',
|
|
158
|
-
'openxiangda.workflow.task.cancelled.v2',
|
|
159
|
-
'openxiangda.workflow.participant.activated.v2',
|
|
160
|
-
'openxiangda.workflow.participant.completed.v2',
|
|
161
|
-
'openxiangda.workflow.participant.rejected.v2',
|
|
162
|
-
'openxiangda.workflow.participant.returned.v2',
|
|
163
|
-
'openxiangda.workflow.participant.transferred.v2',
|
|
164
|
-
'openxiangda.workflow.participant.reassigned.v2',
|
|
165
|
-
'openxiangda.workflow.participant.delegated.v2',
|
|
166
|
-
'openxiangda.workflow.participant.added.v2',
|
|
167
|
-
'openxiangda.workflow.participant.suspended.v2',
|
|
168
|
-
'openxiangda.workflow.participant.resumed.v2',
|
|
169
|
-
'openxiangda.workflow.participant.cancelled.v2',
|
|
170
|
-
];
|
|
139
|
+
export { WORKFLOW_EVENT_TYPES_V2 } from './workflow-events.js';
|
|
140
|
+
import { WORKFLOW_EVENT_TYPES_V2, workflowProducedEventTypes } from './workflow-events.js';
|
|
171
141
|
const WORKFLOW_EVENT_TYPE_SET_V2 = new Set(WORKFLOW_EVENT_TYPES_V2);
|
|
172
142
|
export class NativeConfigurationCompilerError extends Error {
|
|
173
143
|
code;
|
|
@@ -493,6 +463,11 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
|
|
|
493
463
|
...(resources.some(hasDataAuditReadPolicy)
|
|
494
464
|
? [{ code: 'data.audit-read-access', declaration: dataUsage }]
|
|
495
465
|
: []),
|
|
466
|
+
...(resources.some(resource => resource.schema.fields.some((field) => /^(resource-ref|user|department)\.(single|multiple)$/.test(field.type))) || config.authz.scopeDimensions.some((dimension) => dimension.valueSource)
|
|
467
|
+
? [{ code: 'data.field-source-contexts', declaration: {
|
|
468
|
+
resources: resources.map(resource => ({ code: resource.code, fields: resource.schema.fields.filter((field) => /^(resource-ref|user|department)\.(single|multiple)$/.test(field.type)) })),
|
|
469
|
+
dimensions: config.authz.scopeDimensions.filter((dimension) => dimension.valueSource),
|
|
470
|
+
} }] : []),
|
|
496
471
|
...(requiresDirectoryV2
|
|
497
472
|
? [
|
|
498
473
|
{
|
|
@@ -664,6 +639,14 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
|
|
|
664
639
|
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'approval' && node.emptyPolicy !== undefined))
|
|
665
640
|
? [{ code: 'workflow.approval-empty-policy', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'approval' && node.emptyPolicy !== undefined)) }]
|
|
666
641
|
: []),
|
|
642
|
+
...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).some((entry) => entry.provider === 'supervisor_chain')) ? [{ code: 'workflow.supervisor-chain', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.provider === 'supervisor_chain')) }] : []),
|
|
643
|
+
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.reminders)) ? [{ code: 'workflow.reminders', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.reminders)) }] : []),
|
|
644
|
+
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => isWorkflowPlatformNotify(node)))
|
|
645
|
+
? [{ code: 'workflow.platform-notify', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => isWorkflowPlatformNotify(node))) }] : []),
|
|
646
|
+
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.returnPolicy !== undefined))
|
|
647
|
+
? [{ code: 'workflow.return-policy', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.returnPolicy !== undefined)) }] : []),
|
|
648
|
+
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'handle'))
|
|
649
|
+
? [{ code: 'workflow.handling-nodes', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'handle')) }] : []),
|
|
667
650
|
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.completionDeadline !== undefined))
|
|
668
651
|
? [{ code: 'workflow.completion-deadline', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.completionDeadline !== undefined)) }]
|
|
669
652
|
: []),
|
|
@@ -684,8 +667,8 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
|
|
|
684
667
|
? [{ code: 'workflow.task-rich-fields', declaration: taskRichFieldDefinitions }] : []),
|
|
685
668
|
...(config.workflows.definitions.some((item) => Object.values(item.definition.taskPages || {}).some((page) => page.fields.some((field) => field.subtable)))
|
|
686
669
|
? [{ code: 'workflow.task-owned-subtables', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.taskPages || {}).some((page) => page.fields.some((field) => field.subtable))) }] : []),
|
|
687
|
-
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action'))
|
|
688
|
-
? [{ code: 'workflow.durable-business-step', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action')) }]
|
|
670
|
+
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action' && !isWorkflowPlatformNotify(node)))
|
|
671
|
+
? [{ code: 'workflow.durable-business-step', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action' && !isWorkflowPlatformNotify(node))) }]
|
|
689
672
|
: []),
|
|
690
673
|
...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action' && node.handler.dataTransaction))
|
|
691
674
|
? [{ code: 'workflow.step-data-transaction', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action' && node.handler.dataTransaction)) }]
|
|
@@ -1176,7 +1159,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
|
|
|
1176
1159
|
field: trigger.field,
|
|
1177
1160
|
})),
|
|
1178
1161
|
...(config.workflows.activations.length
|
|
1179
|
-
?
|
|
1162
|
+
? workflowProducedEventTypes(config.workflows.definitions).map(eventType => ({
|
|
1180
1163
|
code: `workflow:${eventType}`,
|
|
1181
1164
|
source: 'workflow',
|
|
1182
1165
|
eventType,
|
|
@@ -3646,7 +3629,7 @@ function compileWorkflows(config) {
|
|
|
3646
3629
|
const nodes = object(item.definition.nodes, '/config/workflows/definitions/nodes');
|
|
3647
3630
|
for (const nodeValue of Object.values(nodes)) {
|
|
3648
3631
|
const node = object(nodeValue, '/config/workflows/definitions/nodes/*');
|
|
3649
|
-
if (node.kind !== 'approval')
|
|
3632
|
+
if (node.kind !== 'approval' && node.kind !== 'handle')
|
|
3650
3633
|
continue;
|
|
3651
3634
|
for (const operation of uniqueStrings(node.allowedOperations || [], '/config/workflows/definitions/nodes/*/allowedOperations', 20)) {
|
|
3652
3635
|
operations.add(operation);
|
|
@@ -4758,11 +4741,18 @@ function validateWorkflowReferences(config) {
|
|
|
4758
4741
|
'definitionVersion',
|
|
4759
4742
|
'bindingVersion',
|
|
4760
4743
|
'acceptedCommandDeactivationPolicy',
|
|
4761
|
-
], pointer, ['environmentKey']);
|
|
4744
|
+
], pointer, ['environmentKey', 'sourceBase']);
|
|
4762
4745
|
const code = stableCode(activation.workflowCode, `${pointer}/workflowCode`);
|
|
4763
4746
|
if (activationCodes.has(code))
|
|
4764
4747
|
fail('NATIVE_WORKFLOW_ACTIVATION_DUPLICATE', pointer);
|
|
4765
4748
|
activationCodes.add(code);
|
|
4749
|
+
if (activation.sourceBase !== undefined) {
|
|
4750
|
+
const base = object(activation.sourceBase, `${pointer}/sourceBase`);
|
|
4751
|
+
exactKeys(base, ['definitionDigest', 'bindingDigest'], `${pointer}/sourceBase`);
|
|
4752
|
+
for (const key of ['definitionDigest', 'bindingDigest'])
|
|
4753
|
+
if (!/^(sha256:)?[a-f0-9]{64}$/.test(String(base[key] || '')))
|
|
4754
|
+
fail('NATIVE_WORKFLOW_SOURCE_BASE_INVALID', `${pointer}/sourceBase/${key}`);
|
|
4755
|
+
}
|
|
4766
4756
|
const definitionKey = `${code}:${positiveInteger(activation.definitionVersion, `${pointer}/definitionVersion`)}`;
|
|
4767
4757
|
const bindingKey = `${code}:${positiveInteger(activation.bindingVersion, `${pointer}/bindingVersion`)}`;
|
|
4768
4758
|
if (!definitions.has(definitionKey)) {
|
|
@@ -4989,6 +4979,18 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
4989
4979
|
const taskPageErrors = validateWorkflowTaskPages(definition);
|
|
4990
4980
|
if (taskPageErrors.length)
|
|
4991
4981
|
fail(taskPageErrors[0], `${pointer}/taskPages`);
|
|
4982
|
+
const returnErrors = validateWorkflowReturnPolicies(definition);
|
|
4983
|
+
if (returnErrors.length)
|
|
4984
|
+
fail(returnErrors[0], `${pointer}/nodes`);
|
|
4985
|
+
const reminderErrors = validateWorkflowReminders(definition);
|
|
4986
|
+
if (reminderErrors.length)
|
|
4987
|
+
fail(reminderErrors[0], `${pointer}/nodes`);
|
|
4988
|
+
const handleErrors = validateWorkflowHandlingNodes(definition);
|
|
4989
|
+
if (handleErrors.length)
|
|
4990
|
+
fail(handleErrors[0], `${pointer}/nodes`);
|
|
4991
|
+
const parallelErrors = validateWorkflowParallel(definition);
|
|
4992
|
+
if (parallelErrors.length)
|
|
4993
|
+
fail(parallelErrors[0], `${pointer}/nodes`);
|
|
4992
4994
|
const stepErrors = validateWorkflowBusinessSteps(definition);
|
|
4993
4995
|
if (stepErrors.length)
|
|
4994
4996
|
fail(stepErrors[0], `${pointer}/nodes`);
|
|
@@ -4999,17 +5001,20 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
4999
5001
|
const nodePointer = `${pointer}/nodes/${nodeId}`;
|
|
5000
5002
|
const node = object(rawNode, nodePointer);
|
|
5001
5003
|
equal(node.id, nodeId, `${nodePointer}/id`);
|
|
5002
|
-
if (!['approval', 'condition', 'end', 'cc', 'action', 'correction'].includes(node.kind)) {
|
|
5004
|
+
if (!['approval', 'handle', 'condition', 'end', 'cc', 'action', 'correction', 'parallel', 'join'].includes(node.kind)) {
|
|
5003
5005
|
fail('NATIVE_WORKFLOW_NODE_KIND_INVALID', `${nodePointer}/kind`);
|
|
5004
5006
|
}
|
|
5005
5007
|
const targets = [];
|
|
5006
|
-
if (node.kind === 'approval') {
|
|
5008
|
+
if (node.kind === 'approval' || node.kind === 'handle') {
|
|
5007
5009
|
requiredString(node.title, `${nodePointer}/title`, 255);
|
|
5008
5010
|
workflowBindingCode(node.binding, `${nodePointer}/binding`);
|
|
5009
5011
|
if (!['single', 'any', 'all', 'sequence'].includes(node.mode)) {
|
|
5010
5012
|
fail('NATIVE_WORKFLOW_APPROVAL_MODE_INVALID', `${nodePointer}/mode`);
|
|
5011
5013
|
}
|
|
5012
|
-
|
|
5014
|
+
if (node.kind === 'handle')
|
|
5015
|
+
targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
|
|
5016
|
+
else
|
|
5017
|
+
targets.push(requiredString(node.onApprove, `${nodePointer}/onApprove`, 128), requiredString(node.onReject, `${nodePointer}/onReject`, 128));
|
|
5013
5018
|
for (const returnTarget of uniqueStrings(node.returnTargets || [], `${nodePointer}/returnTargets`, 200)) {
|
|
5014
5019
|
if (!nodes[returnTarget]) {
|
|
5015
5020
|
fail('NATIVE_WORKFLOW_TARGET_MISSING', `${nodePointer}/returnTargets`);
|
|
@@ -5034,6 +5039,20 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
5034
5039
|
workflowBindingCode(node.binding, `${nodePointer}/binding`);
|
|
5035
5040
|
targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
|
|
5036
5041
|
}
|
|
5042
|
+
else if (node.kind === 'parallel') {
|
|
5043
|
+
requiredString(node.title, `${nodePointer}/title`, 255);
|
|
5044
|
+
targets.push(requiredString(node.join, `${nodePointer}/join`, 128));
|
|
5045
|
+
for (const [index, raw] of boundedArray(node.branches, `${nodePointer}/branches`, 8).entries()) {
|
|
5046
|
+
const branch = object(raw, `${nodePointer}/branches/${index}`);
|
|
5047
|
+
if (branch.when !== undefined)
|
|
5048
|
+
validateWorkflowExpression(branch.when, `${nodePointer}/branches/${index}/when`, 0);
|
|
5049
|
+
targets.push(requiredString(branch.target, `${nodePointer}/branches/${index}/target`, 128));
|
|
5050
|
+
}
|
|
5051
|
+
}
|
|
5052
|
+
else if (node.kind === 'join') {
|
|
5053
|
+
requiredString(node.title, `${nodePointer}/title`, 255);
|
|
5054
|
+
targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
|
|
5055
|
+
}
|
|
5037
5056
|
else if (node.kind === 'condition') {
|
|
5038
5057
|
const branches = boundedArray(node.branches, `${nodePointer}/branches`, 100);
|
|
5039
5058
|
if (branches.length === 0) {
|
|
@@ -5072,8 +5091,8 @@ function validateWorkflowDefinition(definition, pointer) {
|
|
|
5072
5091
|
walk(startAt);
|
|
5073
5092
|
for (const id of [...reachable]) {
|
|
5074
5093
|
const current = nodes[id];
|
|
5075
|
-
if (current?.kind === 'approval')
|
|
5076
|
-
for (const target of current
|
|
5094
|
+
if (current?.kind === 'approval' || current?.kind === 'handle')
|
|
5095
|
+
for (const target of workflowReturnTargets(current))
|
|
5077
5096
|
if (nodes[target]?.kind === 'correction')
|
|
5078
5097
|
reachable.add(target);
|
|
5079
5098
|
}
|
|
@@ -5123,6 +5142,9 @@ function validateWorkflowBinding(binding, pointer) {
|
|
|
5123
5142
|
for (const [code, raw] of Object.entries(entries)) {
|
|
5124
5143
|
workflowBindingCode(code, `${pointer}/bindings/${code}`);
|
|
5125
5144
|
const entry = object(raw, `${pointer}/bindings/${code}`);
|
|
5145
|
+
const chainErrors = validateWorkflowSupervisorChainBinding(entry);
|
|
5146
|
+
if (chainErrors.length)
|
|
5147
|
+
fail(chainErrors[0], `${pointer}/bindings/${code}`);
|
|
5126
5148
|
const selectionErrors = validateWorkflowRoleInputSelection(entry);
|
|
5127
5149
|
if (selectionErrors.length)
|
|
5128
5150
|
fail(selectionErrors[0], `${pointer}/bindings/${code}/selectedInputPath`);
|
|
@@ -5136,6 +5158,7 @@ function validateWorkflowBinding(binding, pointer) {
|
|
|
5136
5158
|
'input_users',
|
|
5137
5159
|
'form_field_users',
|
|
5138
5160
|
'department_supervisor',
|
|
5161
|
+
'supervisor_chain',
|
|
5139
5162
|
'app_role',
|
|
5140
5163
|
'app_role_in_scope',
|
|
5141
5164
|
'business_relation',
|
|
@@ -5170,6 +5193,9 @@ function validateWorkflowBinding(binding, pointer) {
|
|
|
5170
5193
|
}
|
|
5171
5194
|
}
|
|
5172
5195
|
function validateWorkflowDefinitionBinding(definition, binding, pointer) {
|
|
5196
|
+
const chainErrors = validateWorkflowSupervisorChains(definition, binding);
|
|
5197
|
+
if (chainErrors.length)
|
|
5198
|
+
fail(chainErrors[0], pointer);
|
|
5173
5199
|
equal(binding.workflowCode, definition.code, `${pointer}/workflowCode`);
|
|
5174
5200
|
const entries = object(binding.bindings, `${pointer}/bindings`);
|
|
5175
5201
|
for (const [code, entry] of Object.entries(entries)) {
|
|
@@ -5187,7 +5213,7 @@ function validateWorkflowDefinitionBinding(definition, binding, pointer) {
|
|
|
5187
5213
|
fail(stepErrors[0], pointer);
|
|
5188
5214
|
for (const [nodeId, rawNode] of Object.entries(object(definition.nodes, `${pointer}/nodes`))) {
|
|
5189
5215
|
const node = object(rawNode, `${pointer}/nodes/${nodeId}`);
|
|
5190
|
-
if (['approval', 'cc'].includes(node.kind) && !entries[node.binding]) {
|
|
5216
|
+
if (['approval', 'handle', 'cc'].includes(node.kind) && !entries[node.binding]) {
|
|
5191
5217
|
fail('NATIVE_WORKFLOW_BINDING_REFERENCE_MISSING', `${pointer}/nodes/${nodeId}/binding`);
|
|
5192
5218
|
}
|
|
5193
5219
|
}
|