openxiangda-contracts 2.33.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/concurrency.d.ts +109 -2
- package/dist/concurrency.d.ts.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 +18 -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/managed-concurrency.d.ts.map +1 -1
- package/dist/native-compiler/managed-concurrency.js +72 -5
- package/dist/native-compiler/managed-concurrency.js.map +1 -1
- 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 +2 -0
- package/dist/native-version.d.ts.map +1 -1
- package/dist/native-version.js +2 -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,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
|
@@ -16,6 +16,7 @@ export declare const PLATFORM_CAPABILITY_CONTRACT_VERSIONS: {
|
|
|
16
16
|
readonly "data.decimal-reservation-lifecycle": "1.0.0";
|
|
17
17
|
readonly "data.unique-keys": "1.0.0";
|
|
18
18
|
readonly "data.managed-concurrency": "1.0.0";
|
|
19
|
+
readonly "data.managed-concurrency.durable": "1.0.0";
|
|
19
20
|
readonly "workflow.named-input-sources": "1.0.0";
|
|
20
21
|
readonly "directory-v2": "1.0.0";
|
|
21
22
|
readonly "directory.selected-user": "1.0.0";
|
|
@@ -25,6 +26,7 @@ export declare const PLATFORM_CAPABILITY_CONTRACT_VERSIONS: {
|
|
|
25
26
|
readonly "events.native-data-actions": "1.0.0";
|
|
26
27
|
readonly "workflow-kernel-v2": "1.0.0";
|
|
27
28
|
readonly "workflow.instance-cancellation-policy": "1.0.0";
|
|
29
|
+
readonly "workflow.node-administration": "1.0.0";
|
|
28
30
|
readonly "business-process.durable-command": "1.1.0";
|
|
29
31
|
readonly "workflow.fresh-command-token": "1.0.0";
|
|
30
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
|
@@ -16,6 +16,7 @@ export const PLATFORM_CAPABILITY_CONTRACT_VERSIONS = {
|
|
|
16
16
|
"data.decimal-reservation-lifecycle": "1.0.0",
|
|
17
17
|
"data.unique-keys": "1.0.0",
|
|
18
18
|
"data.managed-concurrency": "1.0.0",
|
|
19
|
+
"data.managed-concurrency.durable": "1.0.0",
|
|
19
20
|
"workflow.named-input-sources": "1.0.0",
|
|
20
21
|
"directory-v2": "1.0.0",
|
|
21
22
|
"directory.selected-user": "1.0.0",
|
|
@@ -25,6 +26,7 @@ export const PLATFORM_CAPABILITY_CONTRACT_VERSIONS = {
|
|
|
25
26
|
"events.native-data-actions": "1.0.0",
|
|
26
27
|
"workflow-kernel-v2": "1.0.0",
|
|
27
28
|
"workflow.instance-cancellation-policy": "1.0.0",
|
|
29
|
+
"workflow.node-administration": "1.0.0",
|
|
28
30
|
"business-process.durable-command": "1.1.0",
|
|
29
31
|
"workflow.fresh-command-token": "1.0.0",
|
|
30
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,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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1812,11 +1812,27 @@ export interface WorkflowApprovalNode {
|
|
|
1812
1812
|
onReject: string;
|
|
1813
1813
|
allowedOperations?: WorkflowCommand[];
|
|
1814
1814
|
returnTargets?: string[];
|
|
1815
|
+
/** Code-owned defaults; labels never change the stable command semantics. */
|
|
1816
|
+
operationPolicy?: Partial<Record<WorkflowConfigurableOperation, WorkflowNodeOperationPolicy>>;
|
|
1817
|
+
/** Explicit upper bound for administrator changes. Topology remains immutable. */
|
|
1818
|
+
administration?: WorkflowApprovalAdministration;
|
|
1815
1819
|
fieldPolicy?: {
|
|
1816
1820
|
default?: WorkflowFieldPolicy;
|
|
1817
1821
|
fields?: Record<string, WorkflowFieldPolicy>;
|
|
1818
1822
|
};
|
|
1819
1823
|
}
|
|
1824
|
+
export type WorkflowConfigurableOperation = 'approve' | 'reject' | 'return' | 'transfer' | 'delegate' | 'add_assignee';
|
|
1825
|
+
export type WorkflowConfigurableAssigneeProvider = 'fixed_users' | 'app_role' | 'app_role_in_scope';
|
|
1826
|
+
export interface WorkflowNodeOperationPolicy {
|
|
1827
|
+
label?: string;
|
|
1828
|
+
/** Only approve/reject have comments; existing required reasons stay required. */
|
|
1829
|
+
commentRequired?: boolean;
|
|
1830
|
+
}
|
|
1831
|
+
export interface WorkflowApprovalAdministration {
|
|
1832
|
+
modes?: WorkflowApprovalMode[];
|
|
1833
|
+
assigneeProviders?: WorkflowConfigurableAssigneeProvider[];
|
|
1834
|
+
operations?: WorkflowConfigurableOperation[];
|
|
1835
|
+
}
|
|
1820
1836
|
export interface WorkflowConditionNode {
|
|
1821
1837
|
id: string;
|
|
1822
1838
|
kind: "condition";
|
|
@@ -1858,6 +1874,8 @@ export interface WorkflowDefinition {
|
|
|
1858
1874
|
};
|
|
1859
1875
|
};
|
|
1860
1876
|
nodes: Record<string, WorkflowNode>;
|
|
1877
|
+
/** Read-only explanations versioned with the executing definition. */
|
|
1878
|
+
readability?: import('./native-compiler/workflow-graph.js').WorkflowReadability;
|
|
1861
1879
|
}
|
|
1862
1880
|
export interface WorkflowInstanceCommandPolicies {
|
|
1863
1881
|
withdraw?: {
|
|
@@ -1908,6 +1926,10 @@ export interface WorkflowBinding {
|
|
|
1908
1926
|
export interface WorkflowNodeConfigurationPatch {
|
|
1909
1927
|
title?: string;
|
|
1910
1928
|
description?: string;
|
|
1929
|
+
mode?: WorkflowApprovalMode;
|
|
1930
|
+
operations?: Partial<Record<WorkflowConfigurableOperation, WorkflowNodeOperationPolicy & {
|
|
1931
|
+
enabled?: boolean;
|
|
1932
|
+
}>>;
|
|
1911
1933
|
assignee?: {
|
|
1912
1934
|
provider: "fixed_users";
|
|
1913
1935
|
users: string[];
|
|
@@ -1934,7 +1956,12 @@ export interface WorkflowNodeConfigurations {
|
|
|
1934
1956
|
defaults: {
|
|
1935
1957
|
title: string;
|
|
1936
1958
|
binding?: WorkflowBindingEntry;
|
|
1959
|
+
mode?: WorkflowApprovalMode;
|
|
1960
|
+
allowedOperations?: WorkflowCommand[];
|
|
1961
|
+
operationPolicy?: Partial<Record<WorkflowConfigurableOperation, WorkflowNodeOperationPolicy>>;
|
|
1962
|
+
fieldPolicy?: WorkflowApprovalNode['fieldPolicy'];
|
|
1937
1963
|
};
|
|
1964
|
+
administration?: WorkflowApprovalAdministration;
|
|
1938
1965
|
configuration: WorkflowNodeConfigurationState;
|
|
1939
1966
|
effective: {
|
|
1940
1967
|
revision: number;
|
|
@@ -1942,6 +1969,10 @@ export interface WorkflowNodeConfigurations {
|
|
|
1942
1969
|
description?: string;
|
|
1943
1970
|
binding?: WorkflowBindingEntry;
|
|
1944
1971
|
bindingDigest?: string;
|
|
1972
|
+
mode?: WorkflowApprovalMode;
|
|
1973
|
+
allowedOperations?: WorkflowCommand[];
|
|
1974
|
+
operationPolicy?: Partial<Record<WorkflowConfigurableOperation, WorkflowNodeOperationPolicy>>;
|
|
1975
|
+
fieldPolicy?: WorkflowApprovalNode['fieldPolicy'];
|
|
1945
1976
|
};
|
|
1946
1977
|
}>;
|
|
1947
1978
|
principals: {
|
|
@@ -1969,6 +2000,19 @@ export interface WorkflowNodeConfigurations {
|
|
|
1969
2000
|
createdAt: IsoDateTime;
|
|
1970
2001
|
}>;
|
|
1971
2002
|
}
|
|
2003
|
+
export interface WorkflowNodeConfigurationMutation {
|
|
2004
|
+
expectedHeadRevision: number;
|
|
2005
|
+
expectedRevision: number;
|
|
2006
|
+
operationId: string;
|
|
2007
|
+
reason: string;
|
|
2008
|
+
patch: WorkflowNodeConfigurationPatch | null;
|
|
2009
|
+
}
|
|
2010
|
+
export interface WorkflowNodeConfigurationReceipt extends WorkflowNodeConfigurationState {
|
|
2011
|
+
workflowCode: string;
|
|
2012
|
+
nodeId: string;
|
|
2013
|
+
effect: 'future_node_entries_keep_existing_tasks';
|
|
2014
|
+
replayed: boolean;
|
|
2015
|
+
}
|
|
1972
2016
|
export type ApplicationAdministrationPage = "overview" | "data" | "workflows" | "instances" | "automation" | "roles" | "versions" | "runtime" | "audit";
|
|
1973
2017
|
export interface ApplicationAdministrationContext {
|
|
1974
2018
|
schemaVersion: "openxiangda.application-admin-context/v2";
|