openxiangda-contracts 2.34.0 → 2.35.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 +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +2 -0
- package/dist/browser.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/native-compiler/compiler.d.ts.map +1 -1
- package/dist/native-compiler/compiler.js +15 -1
- package/dist/native-compiler/compiler.js.map +1 -1
- package/dist/native-compiler/index.cjs +6 -6
- package/dist/native-compiler/index.d.ts +2 -0
- package/dist/native-compiler/index.d.ts.map +1 -1
- package/dist/native-compiler/index.js +6 -6
- package/dist/native-compiler/workflow-graph.d.ts +156 -0
- package/dist/native-compiler/workflow-graph.d.ts.map +1 -0
- package/dist/native-compiler/workflow-graph.js +183 -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 +96 -0
- package/dist/native-compiler/workflow-node-administration.js.map +1 -0
- package/dist/native-version.d.ts +1 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +1 -0
- package/dist/native-version.js.map +1 -1
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/** Pure read projection. It never evaluates expressions, executes code or edits topology. */
|
|
2
|
+
export interface WorkflowReadability {
|
|
3
|
+
variables?: Record<string, {
|
|
4
|
+
label: string;
|
|
5
|
+
unit?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
}>;
|
|
8
|
+
logic?: Array<{
|
|
9
|
+
code: string;
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
phase: 'submission' | 'node_input' | 'completion';
|
|
13
|
+
nodeId?: string;
|
|
14
|
+
inputPaths: string[];
|
|
15
|
+
outputPaths?: string[];
|
|
16
|
+
source?: {
|
|
17
|
+
path: string;
|
|
18
|
+
symbol?: string;
|
|
19
|
+
digest: string;
|
|
20
|
+
};
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
export type WorkflowGraphExpression = {
|
|
24
|
+
op: 'literal';
|
|
25
|
+
value: unknown;
|
|
26
|
+
} | {
|
|
27
|
+
op: 'path';
|
|
28
|
+
path: string;
|
|
29
|
+
} | {
|
|
30
|
+
op: 'and' | 'or';
|
|
31
|
+
values: WorkflowGraphExpression[];
|
|
32
|
+
} | {
|
|
33
|
+
op: 'not' | 'exists';
|
|
34
|
+
value: WorkflowGraphExpression;
|
|
35
|
+
} | {
|
|
36
|
+
op: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'contains';
|
|
37
|
+
left: WorkflowGraphExpression;
|
|
38
|
+
right: WorkflowGraphExpression;
|
|
39
|
+
};
|
|
40
|
+
export interface WorkflowGraphDefinitionSource {
|
|
41
|
+
code: string;
|
|
42
|
+
title: string;
|
|
43
|
+
startAt: string;
|
|
44
|
+
inputSchema: Record<string, unknown>;
|
|
45
|
+
subject?: {
|
|
46
|
+
resourceCode: string;
|
|
47
|
+
factProjection: Record<string, string>;
|
|
48
|
+
};
|
|
49
|
+
readability?: WorkflowReadability;
|
|
50
|
+
nodes: Record<string, {
|
|
51
|
+
id: string;
|
|
52
|
+
kind: string;
|
|
53
|
+
title?: string;
|
|
54
|
+
binding?: string;
|
|
55
|
+
mode?: string;
|
|
56
|
+
onApprove?: string;
|
|
57
|
+
onReject?: string;
|
|
58
|
+
branches?: Array<{
|
|
59
|
+
when: WorkflowGraphExpression;
|
|
60
|
+
target: string;
|
|
61
|
+
label?: string;
|
|
62
|
+
}>;
|
|
63
|
+
otherwise?: string;
|
|
64
|
+
outcome?: string;
|
|
65
|
+
}>;
|
|
66
|
+
}
|
|
67
|
+
export interface WorkflowGraphVariable {
|
|
68
|
+
path: string;
|
|
69
|
+
label: string;
|
|
70
|
+
type: string;
|
|
71
|
+
unit?: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
required: boolean;
|
|
74
|
+
source: {
|
|
75
|
+
kind: 'subject_field';
|
|
76
|
+
resourceCode: string;
|
|
77
|
+
fieldPath: string;
|
|
78
|
+
} | {
|
|
79
|
+
kind: 'input' | 'unknown';
|
|
80
|
+
};
|
|
81
|
+
usedBy: string[];
|
|
82
|
+
}
|
|
83
|
+
export interface WorkflowGraphEdge {
|
|
84
|
+
id: string;
|
|
85
|
+
from: string;
|
|
86
|
+
to: string;
|
|
87
|
+
kind: 'approve' | 'reject' | 'branch' | 'default';
|
|
88
|
+
label: string;
|
|
89
|
+
priority?: number;
|
|
90
|
+
expression?: WorkflowGraphExpression;
|
|
91
|
+
variablePaths: string[];
|
|
92
|
+
}
|
|
93
|
+
export interface WorkflowGraphProjection {
|
|
94
|
+
schemaVersion: 'openxiangda.workflow-graph/v2';
|
|
95
|
+
workflowCode: string;
|
|
96
|
+
definitionDigest: string;
|
|
97
|
+
startAt: string;
|
|
98
|
+
fixedTopology: true;
|
|
99
|
+
branchStrategy: 'first_match';
|
|
100
|
+
nodes: Array<{
|
|
101
|
+
id: string;
|
|
102
|
+
kind: string;
|
|
103
|
+
title: string;
|
|
104
|
+
binding?: string;
|
|
105
|
+
mode?: string;
|
|
106
|
+
outcome?: string;
|
|
107
|
+
}>;
|
|
108
|
+
edges: WorkflowGraphEdge[];
|
|
109
|
+
variables: WorkflowGraphVariable[];
|
|
110
|
+
logic: NonNullable<WorkflowReadability['logic']>;
|
|
111
|
+
diagnostics: Array<{
|
|
112
|
+
code: string;
|
|
113
|
+
path: string;
|
|
114
|
+
}>;
|
|
115
|
+
}
|
|
116
|
+
export interface WorkflowGraphVisit {
|
|
117
|
+
id: string;
|
|
118
|
+
nodeId: string;
|
|
119
|
+
status: string;
|
|
120
|
+
enteredAt: string | null;
|
|
121
|
+
leftAt: string | null;
|
|
122
|
+
matchedBranch?: number;
|
|
123
|
+
target?: string;
|
|
124
|
+
/** Recorded terminal decision; chronological adjacency alone is not execution evidence. */
|
|
125
|
+
transition?: 'approve' | 'reject';
|
|
126
|
+
configuration?: Record<string, unknown>;
|
|
127
|
+
people?: Array<{
|
|
128
|
+
userId: string | null;
|
|
129
|
+
displayName: string;
|
|
130
|
+
status?: string;
|
|
131
|
+
}>;
|
|
132
|
+
}
|
|
133
|
+
export interface WorkflowGraphReadResult {
|
|
134
|
+
schemaVersion: 'openxiangda.workflow-definition-projection/v2';
|
|
135
|
+
appCode: string;
|
|
136
|
+
workflowCode: string;
|
|
137
|
+
version: number;
|
|
138
|
+
definitionDigest: string;
|
|
139
|
+
graph: WorkflowGraphProjection;
|
|
140
|
+
}
|
|
141
|
+
export interface WorkflowInstanceGraphReadResult extends WorkflowGraphReadResult {
|
|
142
|
+
instanceId: string;
|
|
143
|
+
instanceSequence: number;
|
|
144
|
+
environmentKey: string;
|
|
145
|
+
status: string;
|
|
146
|
+
visits: WorkflowGraphVisit[];
|
|
147
|
+
}
|
|
148
|
+
/** Bounded traversal is also used by compiler diagnostics for untrusted declarations. */
|
|
149
|
+
export declare function workflowExpressionPaths(expression: unknown): {
|
|
150
|
+
paths: string[];
|
|
151
|
+
errors: string[];
|
|
152
|
+
};
|
|
153
|
+
export declare function validateWorkflowReadability(definition: WorkflowGraphDefinitionSource): string[];
|
|
154
|
+
export declare function projectWorkflowGraph(definition: WorkflowGraphDefinitionSource, definitionDigest: string): WorkflowGraphProjection;
|
|
155
|
+
export declare function formatWorkflowExpression(expression: WorkflowGraphExpression, variables?: readonly WorkflowGraphVariable[], depth?: number): string;
|
|
156
|
+
//# sourceMappingURL=workflow-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-graph.d.ts","sourceRoot":"","sources":["../../src/native-compiler/workflow-graph.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;QAClD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5D,CAAC,CAAC;CACJ;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,uBAAuB,EAAE,CAAA;CAAE,GACvD;IAAE,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;IAAC,IAAI,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAE1I,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC3E,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,uBAAuB,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE;QAAE,IAAI,EAAE,eAAe,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3G,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,+BAA+B,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC;IACpB,cAAc,EAAE,aAAa,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7G,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,KAAK,EAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,+CAA+C,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,uBAAuB,CAAC;CAChC;AAED,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAqBD,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,OAAO;;;EAqB1D;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,6BAA6B,GAAG,MAAM,EAAE,CA+C/F;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,GAAG,uBAAuB,CAgCjI;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,uBAAuB,EAAE,SAAS,GAAE,SAAS,qBAAqB,EAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CAYjJ"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
const record = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
2
|
+
const text = (value, max) => typeof value === 'string' && Boolean(value.trim()) && value.length <= max;
|
|
3
|
+
const pathPattern = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z][A-Za-z0-9_]*){0,15}$/;
|
|
4
|
+
const safePath = (path) => typeof path === 'string' && path.length <= 256 && pathPattern.test(path) &&
|
|
5
|
+
!path.split('.').some(part => ['__proto__', 'prototype', 'constructor'].includes(part));
|
|
6
|
+
function schemaPath(schema, path) {
|
|
7
|
+
let current = record(schema);
|
|
8
|
+
let required = true;
|
|
9
|
+
for (const segment of path.split('.')) {
|
|
10
|
+
required &&= Array.isArray(current.required) && current.required.includes(segment);
|
|
11
|
+
const next = record(current.properties)[segment];
|
|
12
|
+
if (!next || typeof next !== 'object')
|
|
13
|
+
return null;
|
|
14
|
+
current = record(next);
|
|
15
|
+
}
|
|
16
|
+
return { schema: current, required };
|
|
17
|
+
}
|
|
18
|
+
/** Bounded traversal is also used by compiler diagnostics for untrusted declarations. */
|
|
19
|
+
export function workflowExpressionPaths(expression) {
|
|
20
|
+
const paths = new Set();
|
|
21
|
+
const errors = [];
|
|
22
|
+
let budget = 2048;
|
|
23
|
+
const visit = (value, depth) => {
|
|
24
|
+
if (--budget < 0 || depth > 20) {
|
|
25
|
+
errors.push('WORKFLOW_EXPRESSION_BUDGET_EXCEEDED');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const item = record(value);
|
|
29
|
+
if (item.op === 'path') {
|
|
30
|
+
if (safePath(item.path))
|
|
31
|
+
paths.add(item.path);
|
|
32
|
+
else
|
|
33
|
+
errors.push('WORKFLOW_EXPRESSION_PATH_INVALID');
|
|
34
|
+
}
|
|
35
|
+
else if (item.op === 'literal')
|
|
36
|
+
return;
|
|
37
|
+
else if (item.op === 'and' || item.op === 'or') {
|
|
38
|
+
if (!Array.isArray(item.values) || !item.values.length || item.values.length > 128)
|
|
39
|
+
errors.push('WORKFLOW_EXPRESSION_GROUP_INVALID');
|
|
40
|
+
else
|
|
41
|
+
for (const part of item.values) {
|
|
42
|
+
if (budget < 0)
|
|
43
|
+
break;
|
|
44
|
+
visit(part, depth + 1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (item.op === 'not' || item.op === 'exists')
|
|
48
|
+
visit(item.value, depth + 1);
|
|
49
|
+
else if (['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'contains'].includes(String(item.op))) {
|
|
50
|
+
visit(item.left, depth + 1);
|
|
51
|
+
visit(item.right, depth + 1);
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
errors.push('WORKFLOW_EXPRESSION_OPERATOR_INVALID');
|
|
55
|
+
};
|
|
56
|
+
visit(expression, 0);
|
|
57
|
+
return { paths: [...paths], errors: [...new Set(errors)] };
|
|
58
|
+
}
|
|
59
|
+
export function validateWorkflowReadability(definition) {
|
|
60
|
+
if (definition?.readability === undefined)
|
|
61
|
+
return [];
|
|
62
|
+
const errors = [];
|
|
63
|
+
const info = record(definition.readability);
|
|
64
|
+
if (Object.keys(info).some(key => !['variables', 'logic'].includes(key)) || !Object.keys(info).length)
|
|
65
|
+
errors.push('WORKFLOW_READABILITY_INVALID');
|
|
66
|
+
const variables = record(info.variables);
|
|
67
|
+
if (info.variables !== undefined && (typeof info.variables !== 'object' || Array.isArray(info.variables) || info.variables === null))
|
|
68
|
+
errors.push('WORKFLOW_VARIABLES_INVALID');
|
|
69
|
+
if (Object.keys(variables).length > 128)
|
|
70
|
+
errors.push('WORKFLOW_VARIABLE_LIMIT_EXCEEDED');
|
|
71
|
+
for (const [path, value] of Object.entries(variables)) {
|
|
72
|
+
const variable = record(value);
|
|
73
|
+
if (!safePath(path) || !schemaPath(definition.inputSchema, path))
|
|
74
|
+
errors.push(`WORKFLOW_VARIABLE_SOURCE_UNKNOWN:${path}`);
|
|
75
|
+
if (!text(variable.label, 160) || Object.keys(variable).some(key => !['label', 'unit', 'description'].includes(key)) ||
|
|
76
|
+
variable.unit !== undefined && !text(variable.unit, 32) || variable.description !== undefined && !text(variable.description, 2000))
|
|
77
|
+
errors.push(`WORKFLOW_VARIABLE_METADATA_INVALID:${path}`);
|
|
78
|
+
}
|
|
79
|
+
const logic = info.logic === undefined ? [] : info.logic;
|
|
80
|
+
if (!Array.isArray(logic) || logic.length > 32)
|
|
81
|
+
errors.push('WORKFLOW_LOGIC_LIMIT_INVALID');
|
|
82
|
+
const codes = new Set();
|
|
83
|
+
for (const value of Array.isArray(logic) ? logic.slice(0, 32) : []) {
|
|
84
|
+
const item = record(value), code = String(item.code || '');
|
|
85
|
+
if (!/^[a-z][a-z0-9-]{2,63}$/.test(code) || codes.has(code) || !text(item.title, 160) || !text(item.description, 4000) ||
|
|
86
|
+
Object.keys(item).some(key => !['code', 'title', 'description', 'phase', 'nodeId', 'inputPaths', 'outputPaths', 'source'].includes(key)))
|
|
87
|
+
errors.push(`WORKFLOW_LOGIC_METADATA_INVALID:${code}`);
|
|
88
|
+
codes.add(code);
|
|
89
|
+
if (!['submission', 'node_input', 'completion'].includes(String(item.phase)) ||
|
|
90
|
+
item.phase === 'node_input' && !record(definition.nodes)[String(item.nodeId)] || item.phase !== 'node_input' && item.nodeId !== undefined)
|
|
91
|
+
errors.push(`WORKFLOW_LOGIC_ANCHOR_INVALID:${code}`);
|
|
92
|
+
for (const key of ['inputPaths', 'outputPaths']) {
|
|
93
|
+
const values = item[key];
|
|
94
|
+
if (key === 'outputPaths' && values === undefined)
|
|
95
|
+
continue;
|
|
96
|
+
if (!Array.isArray(values) || values.length > 32 || new Set(values).size !== values.length)
|
|
97
|
+
errors.push(`WORKFLOW_LOGIC_PATHS_INVALID:${code}:${key}`);
|
|
98
|
+
else
|
|
99
|
+
for (const path of values)
|
|
100
|
+
if (!safePath(path) || !schemaPath(definition.inputSchema, path))
|
|
101
|
+
errors.push(`WORKFLOW_LOGIC_SOURCE_UNKNOWN:${code}:${String(path)}`);
|
|
102
|
+
}
|
|
103
|
+
if (item.source !== undefined) {
|
|
104
|
+
const source = record(item.source);
|
|
105
|
+
if (!text(source.path, 256) || String(source.path).startsWith('/') || String(source.path).includes('..') || String(source.path).includes('://') ||
|
|
106
|
+
!/^sha256:[a-f0-9]{64}$/.test(String(source.digest)) || source.symbol !== undefined && !text(source.symbol, 160) ||
|
|
107
|
+
Object.keys(source).some(key => !['path', 'symbol', 'digest'].includes(key)))
|
|
108
|
+
errors.push(`WORKFLOW_LOGIC_SOURCE_REFERENCE_INVALID:${code}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
for (const raw of Object.values(record(definition.nodes))) {
|
|
112
|
+
const node = record(raw);
|
|
113
|
+
const branches = Array.isArray(node.branches) ? node.branches : [];
|
|
114
|
+
for (const branch of branches) {
|
|
115
|
+
const expression = workflowExpressionPaths(branch.when);
|
|
116
|
+
errors.push(...expression.errors.map(error => `${error}:${node.id}`));
|
|
117
|
+
for (const path of expression.paths)
|
|
118
|
+
if (!schemaPath(definition.inputSchema, path))
|
|
119
|
+
errors.push(`WORKFLOW_VARIABLE_SOURCE_UNKNOWN:${node.id}:${path}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return [...new Set(errors)];
|
|
123
|
+
}
|
|
124
|
+
export function projectWorkflowGraph(definition, definitionDigest) {
|
|
125
|
+
const edges = [];
|
|
126
|
+
const used = new Map();
|
|
127
|
+
const diagnostics = [];
|
|
128
|
+
for (const node of Object.values(definition.nodes)) {
|
|
129
|
+
if (node.kind === 'approval') {
|
|
130
|
+
for (const [kind, target, label] of [['approve', node.onApprove, '同意'], ['reject', node.onReject, '拒绝']])
|
|
131
|
+
if (target)
|
|
132
|
+
edges.push({ id: `${node.id}:${kind}`, from: node.id, to: target, kind, label, variablePaths: [] });
|
|
133
|
+
}
|
|
134
|
+
if (node.kind === 'condition') {
|
|
135
|
+
for (const [index, branch] of (node.branches || []).entries()) {
|
|
136
|
+
const expression = workflowExpressionPaths(branch.when);
|
|
137
|
+
for (const path of expression.paths) {
|
|
138
|
+
if (!used.has(path))
|
|
139
|
+
used.set(path, new Set());
|
|
140
|
+
used.get(path).add(node.id);
|
|
141
|
+
}
|
|
142
|
+
edges.push({ id: `${node.id}:branch:${index}`, from: node.id, to: branch.target, kind: 'branch', label: branch.label || `条件 ${index + 1}`, priority: index + 1, expression: branch.when, variablePaths: expression.paths });
|
|
143
|
+
diagnostics.push(...expression.errors.map(code => ({ code, path: node.id })));
|
|
144
|
+
}
|
|
145
|
+
if (node.otherwise)
|
|
146
|
+
edges.push({ id: `${node.id}:default`, from: node.id, to: node.otherwise, kind: 'default', label: '均不满足时', variablePaths: [] });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const variablePaths = new Set([...used.keys(), ...Object.keys(definition.readability?.variables || {}), ...(definition.readability?.logic || []).flatMap(item => [...item.inputPaths, ...item.outputPaths || []])]);
|
|
150
|
+
const variables = [...variablePaths].slice(0, 128).map(path => {
|
|
151
|
+
const resolved = schemaPath(definition.inputSchema, path), metadata = definition.readability?.variables?.[path];
|
|
152
|
+
const segments = path.split('.'), field = definition.subject?.factProjection[segments[0]];
|
|
153
|
+
if (!resolved)
|
|
154
|
+
diagnostics.push({ code: 'WORKFLOW_VARIABLE_SOURCE_UNKNOWN', path });
|
|
155
|
+
return { path, label: metadata?.label || String(resolved?.schema.title || path), type: String(resolved?.schema.type || 'unknown'),
|
|
156
|
+
...metadata, required: resolved?.required || false, usedBy: [...used.get(path) || []],
|
|
157
|
+
source: resolved && field && definition.subject ? { kind: 'subject_field', resourceCode: definition.subject.resourceCode, fieldPath: [field, ...segments.slice(1)].join('.') } : { kind: resolved ? 'input' : 'unknown' } };
|
|
158
|
+
});
|
|
159
|
+
return { schemaVersion: 'openxiangda.workflow-graph/v2', workflowCode: definition.code, definitionDigest, startAt: definition.startAt,
|
|
160
|
+
fixedTopology: true, branchStrategy: 'first_match', nodes: Object.values(definition.nodes).map(node => ({ id: node.id, kind: node.kind, title: node.title || node.id,
|
|
161
|
+
...(node.binding ? { binding: node.binding } : {}), ...(node.mode ? { mode: node.mode } : {}), ...(node.outcome ? { outcome: node.outcome } : {}) })), edges, variables,
|
|
162
|
+
logic: definition.readability?.logic || [], diagnostics };
|
|
163
|
+
}
|
|
164
|
+
export function formatWorkflowExpression(expression, variables = [], depth = 0) {
|
|
165
|
+
if (!expression || depth > 20)
|
|
166
|
+
return '无法识别的条件';
|
|
167
|
+
if (expression.op === 'path')
|
|
168
|
+
return variables.find(variable => variable.path === expression.path)?.label || expression.path;
|
|
169
|
+
if (expression.op === 'literal')
|
|
170
|
+
return JSON.stringify(expression.value) ?? '缺值';
|
|
171
|
+
if (expression.op === 'and' || expression.op === 'or')
|
|
172
|
+
return expression.values.slice(0, 128).map(item => `(${formatWorkflowExpression(item, variables, depth + 1)})`).join(expression.op === 'and' ? ' 且 ' : ' 或 ');
|
|
173
|
+
if (expression.op === 'not' || expression.op === 'exists')
|
|
174
|
+
return `${expression.op === 'not' ? '不满足' : '存在'}(${formatWorkflowExpression(expression.value, variables, depth + 1)})`;
|
|
175
|
+
if (!('left' in expression))
|
|
176
|
+
return '无法识别的条件';
|
|
177
|
+
const labels = { eq: '=', neq: '≠', gt: '>', gte: '≥', lt: '<', lte: '≤', in: '属于', contains: '包含' };
|
|
178
|
+
const leftPath = expression.left.op === 'path' ? expression.left.path : undefined;
|
|
179
|
+
const unit = leftPath && expression.right.op === 'literal' && typeof expression.right.value === 'number'
|
|
180
|
+
? variables.find(variable => variable.path === leftPath)?.unit : undefined;
|
|
181
|
+
return `${formatWorkflowExpression(expression.left, variables, depth + 1)} ${labels[expression.op]} ${formatWorkflowExpression(expression.right, variables, depth + 1)}${unit ? ` ${unit}` : ''}`;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=workflow-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-graph.js","sourceRoot":"","sources":["../../src/native-compiler/workflow-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { WorkflowApprovalAdministration, WorkflowConfigurableOperation, WorkflowNodeConfigurationPatch, WorkflowNodeOperationPolicy } from '../types.js';
|
|
2
|
+
export declare const WORKFLOW_CONFIGURABLE_OPERATIONS: readonly ["approve", "reject", "return", "transfer", "delegate", "add_assignee"];
|
|
3
|
+
export declare const WORKFLOW_CONFIGURABLE_PROVIDERS: readonly ["fixed_users", "app_role", "app_role_in_scope"];
|
|
4
|
+
type PolicyMap = Partial<Record<WorkflowConfigurableOperation, WorkflowNodeOperationPolicy>>;
|
|
5
|
+
export interface WorkflowAdministrationNodeSource {
|
|
6
|
+
kind: string;
|
|
7
|
+
mode?: string;
|
|
8
|
+
binding?: string;
|
|
9
|
+
allowedOperations?: string[];
|
|
10
|
+
operationPolicy?: PolicyMap;
|
|
11
|
+
administration?: WorkflowApprovalAdministration;
|
|
12
|
+
fieldPolicy?: {
|
|
13
|
+
default?: string;
|
|
14
|
+
fields?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
type BindingSource = {
|
|
18
|
+
provider: string;
|
|
19
|
+
scope?: {
|
|
20
|
+
dimension: string;
|
|
21
|
+
value?: string;
|
|
22
|
+
valueFrom?: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export declare function workflowNodeAllowedOperations(node: WorkflowAdministrationNodeSource): string[];
|
|
26
|
+
/** Pure shared rule used before compilation, activation and configuration writes. */
|
|
27
|
+
export declare function validateWorkflowAdministration(definition: {
|
|
28
|
+
nodes?: Record<string, WorkflowAdministrationNodeSource>;
|
|
29
|
+
}, bindings?: {
|
|
30
|
+
bindings: Record<string, BindingSource>;
|
|
31
|
+
}): string[];
|
|
32
|
+
export declare function validateWorkflowNodeConfigurationPatch(node: WorkflowAdministrationNodeSource | undefined, binding: BindingSource | undefined, input: unknown): string[];
|
|
33
|
+
/** Applies only validated fields; never mutates the immutable definition. */
|
|
34
|
+
export declare function projectWorkflowNodePolicy(node: WorkflowAdministrationNodeSource, patch?: WorkflowNodeConfigurationPatch | null): {
|
|
35
|
+
mode: string | undefined;
|
|
36
|
+
allowedOperations: string[];
|
|
37
|
+
operationPolicy: Partial<Record<WorkflowConfigurableOperation, WorkflowNodeOperationPolicy>>;
|
|
38
|
+
fieldPolicy: {
|
|
39
|
+
default: string;
|
|
40
|
+
fields: {
|
|
41
|
+
[x: string]: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=workflow-node-administration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-node-administration.d.ts","sourceRoot":"","sources":["../../src/native-compiler/workflow-node-administration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE9J,eAAO,MAAM,gCAAgC,kFAAmF,CAAC;AACjI,eAAO,MAAM,+BAA+B,2DAA4D,CAAC;AAEzG,KAAK,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,6BAA6B,EAAE,2BAA2B,CAAC,CAAC,CAAC;AAC7F,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,8BAA8B,CAAC;IAChD,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACrE;AACD,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAK7G,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,gCAAgC,GAAG,MAAM,EAAE,CAE9F;AAUD,qFAAqF;AACrF,wBAAgB,8BAA8B,CAAC,UAAU,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAA;CAAE,EAAE,QAAQ,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAAE,GAAG,MAAM,EAAE,CAuBzL;AAED,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,gCAAgC,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAiBvK;AAED,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,gCAAgC,EAAE,KAAK,CAAC,EAAE,8BAA8B,GAAG,IAAI;;;;;;;;;;EAa9H"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const WORKFLOW_CONFIGURABLE_OPERATIONS = ['approve', 'reject', 'return', 'transfer', 'delegate', 'add_assignee'];
|
|
2
|
+
export const WORKFLOW_CONFIGURABLE_PROVIDERS = ['fixed_users', 'app_role', 'app_role_in_scope'];
|
|
3
|
+
const modes = ['single', 'any', 'all', 'sequence'];
|
|
4
|
+
const record = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
5
|
+
const keys = (value, allowed) => Object.keys(value).every(key => allowed.includes(key));
|
|
6
|
+
const boundedList = (value, allowed, limit) => Array.isArray(value) && value.length > 0 && value.length <= limit && new Set(value).size === value.length && value.every(item => typeof item === 'string' && allowed.includes(item));
|
|
7
|
+
export function workflowNodeAllowedOperations(node) {
|
|
8
|
+
return node.allowedOperations || [...WORKFLOW_CONFIGURABLE_OPERATIONS];
|
|
9
|
+
}
|
|
10
|
+
function policyValid(value, operation, defaults = {}, configurable = false) {
|
|
11
|
+
if (!record(value) || !Object.keys(value).length || !keys(value, configurable ? ['enabled', 'label', 'commentRequired'] : ['label', 'commentRequired']))
|
|
12
|
+
return false;
|
|
13
|
+
if (value.label !== undefined && (typeof value.label !== 'string' || !value.label.trim() || value.label.length > 40 || /[\u0000-\u001f\u007f]/.test(value.label)))
|
|
14
|
+
return false;
|
|
15
|
+
if (value.enabled !== undefined && (typeof value.enabled !== 'boolean' || (['approve', 'reject'].includes(operation) && !value.enabled)))
|
|
16
|
+
return false;
|
|
17
|
+
if (value.commentRequired !== undefined && (typeof value.commentRequired !== 'boolean' || !['approve', 'reject'].includes(operation) || ((operation === 'reject' || defaults.commentRequired) && !value.commentRequired)))
|
|
18
|
+
return false;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
/** Pure shared rule used before compilation, activation and configuration writes. */
|
|
22
|
+
export function validateWorkflowAdministration(definition, bindings) {
|
|
23
|
+
const errors = [];
|
|
24
|
+
for (const [id, node] of Object.entries(definition?.nodes || {})) {
|
|
25
|
+
if (!record(node))
|
|
26
|
+
continue;
|
|
27
|
+
const admin = node.administration;
|
|
28
|
+
const policy = node.operationPolicy;
|
|
29
|
+
if (node.kind !== 'approval') {
|
|
30
|
+
if (admin !== undefined || policy !== undefined)
|
|
31
|
+
errors.push(`WORKFLOW_NODE_ADMINISTRATION_APPROVAL_REQUIRED:${id}`);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (policy !== undefined && (!record(policy) || Object.keys(policy).length > 8 || Object.entries(policy).some(([operation, value]) => !WORKFLOW_CONFIGURABLE_OPERATIONS.includes(operation) || !workflowNodeAllowedOperations(node).includes(operation) || !policyValid(value, operation))))
|
|
35
|
+
errors.push(`WORKFLOW_NODE_OPERATION_POLICY_INVALID:${id}`);
|
|
36
|
+
if (admin === undefined)
|
|
37
|
+
continue;
|
|
38
|
+
if (!record(admin) || !keys(admin, ['modes', 'assigneeProviders', 'operations'])) {
|
|
39
|
+
errors.push(`WORKFLOW_NODE_ADMINISTRATION_INVALID:${id}`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (admin.modes !== undefined && (!boundedList(admin.modes, modes, 4) || !admin.modes.includes(node.mode)))
|
|
43
|
+
errors.push(`WORKFLOW_NODE_ADMINISTRATION_MODES_INVALID:${id}`);
|
|
44
|
+
if (admin.assigneeProviders !== undefined && !boundedList(admin.assigneeProviders, WORKFLOW_CONFIGURABLE_PROVIDERS, 3))
|
|
45
|
+
errors.push(`WORKFLOW_NODE_ADMINISTRATION_PROVIDERS_INVALID:${id}`);
|
|
46
|
+
const binding = bindings?.bindings[node.binding || ''];
|
|
47
|
+
if (binding && Array.isArray(admin.assigneeProviders) && admin.assigneeProviders.includes('app_role_in_scope') && !binding.scope)
|
|
48
|
+
errors.push(`WORKFLOW_NODE_ADMINISTRATION_SCOPE_REQUIRED:${id}`);
|
|
49
|
+
if (admin.operations !== undefined && (!boundedList(admin.operations, WORKFLOW_CONFIGURABLE_OPERATIONS, 8) || admin.operations.some(operation => !workflowNodeAllowedOperations(node).includes(operation))))
|
|
50
|
+
errors.push(`WORKFLOW_NODE_ADMINISTRATION_OPERATIONS_INVALID:${id}`);
|
|
51
|
+
}
|
|
52
|
+
return errors;
|
|
53
|
+
}
|
|
54
|
+
export function validateWorkflowNodeConfigurationPatch(node, binding, input) {
|
|
55
|
+
const errors = [];
|
|
56
|
+
if (!node || !record(input) || !Object.keys(input).length || !keys(input, ['title', 'description', 'assignee', 'mode', 'operations']))
|
|
57
|
+
return ['WORKFLOW_V2_NODE_CONFIGURATION_PATCH_INVALID'];
|
|
58
|
+
const patch = input;
|
|
59
|
+
for (const key of ['title', 'description'])
|
|
60
|
+
if (patch[key] !== undefined && (typeof patch[key] !== 'string' || patch[key].length > (key === 'title' ? 255 : 1000) || (key === 'title' && !patch[key].trim())))
|
|
61
|
+
errors.push('WORKFLOW_V2_NODE_CONFIGURATION_PATCH_INVALID');
|
|
62
|
+
const admin = node.administration;
|
|
63
|
+
if (patch.mode !== undefined && (node.kind !== 'approval' || !admin?.modes?.includes(patch.mode)))
|
|
64
|
+
errors.push('WORKFLOW_V2_NODE_CONFIGURATION_MODE_READONLY');
|
|
65
|
+
if (patch.operations !== undefined && (node.kind !== 'approval' || !record(patch.operations) || !Object.keys(patch.operations).length || Object.keys(patch.operations).length > 8 || Object.entries(patch.operations).some(([operation, value]) => !admin?.operations?.includes(operation) || !workflowNodeAllowedOperations(node).includes(operation) || !policyValid(value, operation, node.operationPolicy?.[operation], true))))
|
|
66
|
+
errors.push('WORKFLOW_V2_NODE_CONFIGURATION_OPERATION_INVALID');
|
|
67
|
+
if (patch.assignee !== undefined) {
|
|
68
|
+
const value = patch.assignee;
|
|
69
|
+
const allowed = admin?.assigneeProviders || (binding && WORKFLOW_CONFIGURABLE_PROVIDERS.includes(binding.provider) ? [binding.provider] : []);
|
|
70
|
+
if (!record(value) || node.kind !== 'approval' || !allowed.includes(value.provider) || (value.provider === 'app_role_in_scope' && !binding?.scope))
|
|
71
|
+
errors.push('WORKFLOW_V2_NODE_CONFIGURATION_PROVIDER_READONLY');
|
|
72
|
+
else if (value.provider === 'fixed_users') {
|
|
73
|
+
if (!keys(value, ['provider', 'users']) || !Array.isArray(value.users) || value.users.length < 1 || value.users.length > 200 || new Set(value.users).size !== value.users.length || value.users.some(id => typeof id !== 'string' || !id.trim() || id.length > 255))
|
|
74
|
+
errors.push('WORKFLOW_V2_NODE_CONFIGURATION_USERS_INVALID');
|
|
75
|
+
}
|
|
76
|
+
else if (!keys(value, ['provider', 'roleCode']) || typeof value.roleCode !== 'string' || !/^[a-z][a-z0-9_-]{0,127}$/.test(value.roleCode))
|
|
77
|
+
errors.push('WORKFLOW_V2_NODE_CONFIGURATION_ROLE_INVALID');
|
|
78
|
+
}
|
|
79
|
+
return errors;
|
|
80
|
+
}
|
|
81
|
+
/** Applies only validated fields; never mutates the immutable definition. */
|
|
82
|
+
export function projectWorkflowNodePolicy(node, patch) {
|
|
83
|
+
const operations = Object.fromEntries(workflowNodeAllowedOperations(node).flatMap(operation => {
|
|
84
|
+
const code = operation;
|
|
85
|
+
const configured = patch?.operations?.[code];
|
|
86
|
+
const policy = { ...node.operationPolicy?.[code], ...(configured?.label !== undefined ? { label: configured.label } : {}), ...(configured?.commentRequired !== undefined ? { commentRequired: configured.commentRequired } : {}) };
|
|
87
|
+
return Object.keys(policy).length ? [[code, policy]] : [];
|
|
88
|
+
}));
|
|
89
|
+
return {
|
|
90
|
+
mode: patch?.mode || node.mode,
|
|
91
|
+
allowedOperations: workflowNodeAllowedOperations(node).filter(operation => patch?.operations?.[operation]?.enabled !== false),
|
|
92
|
+
operationPolicy: operations,
|
|
93
|
+
fieldPolicy: { default: node.fieldPolicy?.default || 'readonly', fields: { ...node.fieldPolicy?.fields } },
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=workflow-node-administration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-node-administration.js","sourceRoot":"","sources":["../../src/native-compiler/workflow-node-administration.ts"],"names":[],"mappings":"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"}
|
package/dist/native-version.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare const PLATFORM_CAPABILITY_CONTRACT_VERSIONS: {
|
|
|
26
26
|
readonly "events.native-data-actions": "1.0.0";
|
|
27
27
|
readonly "workflow-kernel-v2": "1.0.0";
|
|
28
28
|
readonly "workflow.instance-cancellation-policy": "1.0.0";
|
|
29
|
+
readonly "workflow.node-administration": "1.0.0";
|
|
29
30
|
readonly "business-process.durable-command": "1.1.0";
|
|
30
31
|
readonly "workflow.fresh-command-token": "1.0.0";
|
|
31
32
|
readonly "notification-hub-v2": "1.0.0";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-version.d.ts","sourceRoot":"","sources":["../src/native-version.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,eAAO,MAAM,qCAAqC,EAAG,UAAmB,CAAC;AAEzE,eAAO,MAAM,qCAAqC
|
|
1
|
+
{"version":3,"file":"native-version.d.ts","sourceRoot":"","sources":["../src/native-version.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,eAAO,MAAM,qCAAqC,EAAG,UAAmB,CAAC;AAEzE,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxC,CAAC"}
|
package/dist/native-version.js
CHANGED
|
@@ -26,6 +26,7 @@ export const PLATFORM_CAPABILITY_CONTRACT_VERSIONS = {
|
|
|
26
26
|
"events.native-data-actions": "1.0.0",
|
|
27
27
|
"workflow-kernel-v2": "1.0.0",
|
|
28
28
|
"workflow.instance-cancellation-policy": "1.0.0",
|
|
29
|
+
"workflow.node-administration": "1.0.0",
|
|
29
30
|
"business-process.durable-command": "1.1.0",
|
|
30
31
|
"workflow.fresh-command-token": "1.0.0",
|
|
31
32
|
"notification-hub-v2": "1.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-version.js","sourceRoot":"","sources":["../src/native-version.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAmB,CAAC;AAEzE,MAAM,CAAC,MAAM,qCAAqC,GAAG;IACnD,sBAAsB,EAAE,OAAO;IAC/B,4BAA4B,EAAE,OAAO;IACrC,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,8BAA8B,EAAE,OAAO;IACvC,kCAAkC,EAAE,OAAO;IAC3C,+BAA+B,EAAE,OAAO;IACxC,aAAa,EAAE,OAAO;IACtB,yBAAyB,EAAE,OAAO;IAClC,wBAAwB,EAAE,OAAO;IACjC,oBAAoB,EAAE,OAAO;IAC7B,2BAA2B,EAAE,OAAO;IACpC,oCAAoC,EAAE,OAAO;IAC7C,kBAAkB,EAAE,OAAO;IAC3B,0BAA0B,EAAE,OAAO;IACnC,kCAAkC,EAAE,OAAO;IAC3C,8BAA8B,EAAE,OAAO;IACvC,cAAc,EAAE,OAAO;IACvB,yBAAyB,EAAE,OAAO;IAClC,WAAW,EAAE,OAAO;IACpB,yBAAyB,EAAE,OAAO;IAClC,uBAAuB,EAAE,OAAO;IAChC,4BAA4B,EAAE,OAAO;IACrC,oBAAoB,EAAE,OAAO;IAC7B,uCAAuC,EAAE,OAAO;IAChD,kCAAkC,EAAE,OAAO;IAC3C,8BAA8B,EAAE,OAAO;IACvC,qBAAqB,EAAE,OAAO;IAC9B,0CAA0C,EAAE,OAAO;IACnD,uCAAuC,EAAE,OAAO;CACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"native-version.js","sourceRoot":"","sources":["../src/native-version.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAmB,CAAC;AAEzE,MAAM,CAAC,MAAM,qCAAqC,GAAG;IACnD,sBAAsB,EAAE,OAAO;IAC/B,4BAA4B,EAAE,OAAO;IACrC,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,8BAA8B,EAAE,OAAO;IACvC,kCAAkC,EAAE,OAAO;IAC3C,+BAA+B,EAAE,OAAO;IACxC,aAAa,EAAE,OAAO;IACtB,yBAAyB,EAAE,OAAO;IAClC,wBAAwB,EAAE,OAAO;IACjC,oBAAoB,EAAE,OAAO;IAC7B,2BAA2B,EAAE,OAAO;IACpC,oCAAoC,EAAE,OAAO;IAC7C,kBAAkB,EAAE,OAAO;IAC3B,0BAA0B,EAAE,OAAO;IACnC,kCAAkC,EAAE,OAAO;IAC3C,8BAA8B,EAAE,OAAO;IACvC,cAAc,EAAE,OAAO;IACvB,yBAAyB,EAAE,OAAO;IAClC,WAAW,EAAE,OAAO;IACpB,yBAAyB,EAAE,OAAO;IAClC,uBAAuB,EAAE,OAAO;IAChC,4BAA4B,EAAE,OAAO;IACrC,oBAAoB,EAAE,OAAO;IAC7B,uCAAuC,EAAE,OAAO;IAChD,8BAA8B,EAAE,OAAO;IACvC,kCAAkC,EAAE,OAAO;IAC3C,8BAA8B,EAAE,OAAO;IACvC,qBAAqB,EAAE,OAAO;IAC9B,0CAA0C,EAAE,OAAO;IACnD,uCAAuC,EAAE,OAAO;CACxC,CAAC"}
|