openxiangda 2.35.3 → 2.44.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/FilePreviewPage.d.ts.map +1 -1
- package/dist/browser/FilePreviewPage.js +4 -2
- package/dist/browser/FilePreviewPage.js.map +1 -1
- package/dist/browser/ManagedCommand.d.ts +1 -0
- package/dist/browser/ManagedCommand.d.ts.map +1 -1
- package/dist/browser/ManagedCommand.js +1 -1
- package/dist/browser/ManagedCommand.js.map +1 -1
- package/dist/browser/Shell.d.ts.map +1 -1
- package/dist/browser/Shell.js +1 -1
- package/dist/browser/Shell.js.map +1 -1
- package/dist/browser/components/administration/RoleMembershipManager.d.ts +7 -0
- package/dist/browser/components/administration/RoleMembershipManager.d.ts.map +1 -0
- package/dist/browser/components/administration/RoleMembershipManager.js +724 -0
- package/dist/browser/components/administration/RoleMembershipManager.js.map +1 -0
- package/dist/browser/components/administration/membership-batch-model.d.ts +17 -0
- package/dist/browser/components/administration/membership-batch-model.d.ts.map +1 -0
- package/dist/browser/components/administration/membership-batch-model.js +117 -0
- package/dist/browser/components/administration/membership-batch-model.js.map +1 -0
- package/dist/browser/components/platform-fields/AttachmentFileList.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/AttachmentFileList.js +2 -1
- package/dist/browser/components/platform-fields/AttachmentFileList.js.map +1 -1
- package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts +3 -1
- package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/MobileManagedFileField.js +9 -5
- package/dist/browser/components/platform-fields/MobileManagedFileField.js.map +1 -1
- package/dist/browser/components/resource/SurfaceFields.d.ts +3 -2
- package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -1
- package/dist/browser/components/resource/SurfaceFields.js +9 -9
- package/dist/browser/components/resource/SurfaceFields.js.map +1 -1
- package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
- package/dist/browser/components/workflow/StandardWorkflowPages.d.ts +8 -1
- package/dist/browser/components/workflow/StandardWorkflowPages.d.ts.map +1 -1
- package/dist/browser/components/workflow/StandardWorkflowPages.js +277 -69
- package/dist/browser/components/workflow/StandardWorkflowPages.js.map +1 -1
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.d.ts +8 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.js +174 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.d.ts +3 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.js +75 -0
- package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.d.ts +14 -0
- package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.js +117 -0
- package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowDelegationManager.d.ts +14 -0
- package/dist/browser/components/workflow/WorkflowDelegationManager.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowDelegationManager.js +204 -0
- package/dist/browser/components/workflow/WorkflowDelegationManager.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowNodeCard.d.ts.map +1 -1
- package/dist/browser/components/workflow/WorkflowNodeCard.js +5 -2
- package/dist/browser/components/workflow/WorkflowNodeCard.js.map +1 -1
- package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.d.ts.map +1 -1
- package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js +6 -5
- package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js.map +1 -1
- package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.d.ts +10 -0
- package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.js +59 -0
- package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskDraftPanel.d.ts +17 -0
- package/dist/browser/components/workflow/WorkflowTaskDraftPanel.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskDraftPanel.js +136 -0
- package/dist/browser/components/workflow/WorkflowTaskDraftPanel.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskFiles.d.ts +20 -0
- package/dist/browser/components/workflow/WorkflowTaskFiles.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskFiles.js +124 -0
- package/dist/browser/components/workflow/WorkflowTaskFiles.js.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskForm.d.ts +49 -0
- package/dist/browser/components/workflow/WorkflowTaskForm.d.ts.map +1 -0
- package/dist/browser/components/workflow/WorkflowTaskForm.js +141 -0
- package/dist/browser/components/workflow/WorkflowTaskForm.js.map +1 -0
- package/dist/browser/components/workflow/workflow-routing-draft.d.ts +4 -0
- package/dist/browser/components/workflow/workflow-routing-draft.d.ts.map +1 -0
- package/dist/browser/components/workflow/workflow-routing-draft.js +9 -0
- package/dist/browser/components/workflow/workflow-routing-draft.js.map +1 -0
- package/dist/browser/durable-command.d.ts +9 -0
- package/dist/browser/durable-command.d.ts.map +1 -1
- package/dist/browser/durable-command.js +67 -13
- package/dist/browser/durable-command.js.map +1 -1
- package/dist/browser/navigation-guard.d.ts +3 -1
- package/dist/browser/navigation-guard.d.ts.map +1 -1
- package/dist/browser/navigation-guard.js +7 -3
- package/dist/browser/navigation-guard.js.map +1 -1
- package/dist/browser/platform-client.d.ts +67 -3
- package/dist/browser/platform-client.d.ts.map +1 -1
- package/dist/browser/platform-client.js +135 -5
- package/dist/browser/platform-client.js.map +1 -1
- package/dist/browser/record-detail.css +10 -0
- package/dist/browser/runtime.d.ts +2 -0
- package/dist/browser/runtime.d.ts.map +1 -1
- package/dist/browser/runtime.js +5 -1
- package/dist/browser/runtime.js.map +1 -1
- package/dist/browser/styles.css +81 -0
- package/dist/browser/workflow-task-command-recovery.d.ts +17 -0
- package/dist/browser/workflow-task-command-recovery.d.ts.map +1 -0
- package/dist/browser/workflow-task-command-recovery.js +50 -0
- package/dist/browser/workflow-task-command-recovery.js.map +1 -0
- package/dist/browser/workflow-task-file-upload.d.ts +18 -0
- package/dist/browser/workflow-task-file-upload.d.ts.map +1 -0
- package/dist/browser/workflow-task-file-upload.js +35 -0
- package/dist/browser/workflow-task-file-upload.js.map +1 -0
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/core.d.ts +5 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -0
- package/dist/core.js.map +1 -1
- package/dist/nest.d.ts +2 -2
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js.map +1 -1
- package/dist/react.d.ts +8 -2
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -1
- package/dist/react.js.map +1 -1
- package/documentation/administration.md +128 -1
- package/documentation/frontend.md +2 -0
- package/documentation/getting-started.md +7 -7
- package/documentation/managed-concurrency-frontend.md +9 -4
- package/documentation/manifest.json +6 -6
- package/documentation/workflow-events.md +213 -3
- package/package.json +24 -34
- package/releases/2.43.0.json +38 -0
- package/releases/2.44.0.json +36 -0
- package/skills/manifest.json +1 -1
- package/skills/openxiangda-v2/SKILL.md +4 -4
- package/skills/openxiangda-v2/references/administration.md +128 -1
- package/skills/openxiangda-v2/references/frontend.md +2 -0
- package/skills/openxiangda-v2/references/getting-started.md +7 -7
- package/skills/openxiangda-v2/references/managed-concurrency-frontend.md +9 -4
- package/skills/openxiangda-v2/references/workflow-events.md +213 -3
- package/releases/2.35.0.json +0 -42
- package/releases/2.35.1.json +0 -43
- package/releases/2.35.2.json +0 -45
- package/releases/2.35.3.json +0 -46
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState } from 'react';
|
|
3
|
+
import { Alert, App, Button, Checkbox, DatePicker, Drawer, Empty, Form, Input, InputNumber, Modal, Popconfirm, Select, Space, Table, Tag, Typography } from 'antd';
|
|
4
|
+
import dayjs from 'dayjs';
|
|
5
|
+
import { validateWorkflowAssignmentRoutingRules } from 'openxiangda-contracts/browser';
|
|
6
|
+
import { loadWorkflowAssignmentRoutingConfiguration, saveWorkflowAssignmentRoutingConfiguration } from '../../platform-client';
|
|
7
|
+
import { routingDraftJson } from './workflow-routing-draft';
|
|
8
|
+
const errorText = (failure) => failure instanceof Error ? failure.message : '请求失败,请重试';
|
|
9
|
+
/** Shared rule maintenance on the existing application administration API. */
|
|
10
|
+
export function WorkflowAssignmentRoutingEditor({ configuration: initial, onClose, onSaved }) {
|
|
11
|
+
const { modal } = App.useApp();
|
|
12
|
+
const [configuration, setConfiguration] = useState(initial);
|
|
13
|
+
const [rules, setRules] = useState(() => structuredClone(initial.rules));
|
|
14
|
+
const [reason, setReason] = useState(''), [error, setError] = useState('');
|
|
15
|
+
const [busy, setBusy] = useState(false), [uncertain, setUncertain] = useState(false), [conflict, setConflict] = useState(false), [reviewing, setReviewing] = useState(false);
|
|
16
|
+
const [editing, setEditing] = useState();
|
|
17
|
+
const frozen = useRef(null);
|
|
18
|
+
const dirty = routingDraftJson(rules) !== routingDraftJson(configuration.rules) || reason.trim().length > 0;
|
|
19
|
+
const blocked = busy || uncertain || reviewing;
|
|
20
|
+
const policy = configuration.policy;
|
|
21
|
+
const close = () => {
|
|
22
|
+
if (busy || reviewing || editing)
|
|
23
|
+
return;
|
|
24
|
+
if (dirty || uncertain)
|
|
25
|
+
modal.confirm({ title: '关闭路由维护?', content: uncertain ? '保存结果尚未确认,请记录原操作 ID,重试原请求或查询修改历史。' : '当前未保存的规则草稿将丢失。', okText: '关闭', cancelText: '继续编辑', onOk: onClose });
|
|
26
|
+
else
|
|
27
|
+
onClose();
|
|
28
|
+
};
|
|
29
|
+
const execute = async (mutation) => {
|
|
30
|
+
setBusy(true);
|
|
31
|
+
setError('');
|
|
32
|
+
try {
|
|
33
|
+
onSaved(await saveWorkflowAssignmentRoutingConfiguration(policy.policyCode, mutation));
|
|
34
|
+
}
|
|
35
|
+
catch (failure) {
|
|
36
|
+
const detail = failure;
|
|
37
|
+
setError(errorText(failure));
|
|
38
|
+
if (['WORKFLOW_V2_ROUTING_REVISION_CONFLICT', 'WORKFLOW_V2_ROUTING_HEAD_CHANGED'].includes(detail.code || '')) {
|
|
39
|
+
setConflict(true);
|
|
40
|
+
setUncertain(false);
|
|
41
|
+
frozen.current = null;
|
|
42
|
+
}
|
|
43
|
+
else if (detail.status && detail.status >= 400 && detail.status < 500) {
|
|
44
|
+
setUncertain(false);
|
|
45
|
+
frozen.current = null;
|
|
46
|
+
}
|
|
47
|
+
else
|
|
48
|
+
setUncertain(true);
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
setBusy(false);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const prepareSave = () => {
|
|
55
|
+
if (busy || reviewing || editing || conflict)
|
|
56
|
+
return;
|
|
57
|
+
if (frozen.current) {
|
|
58
|
+
void execute(frozen.current);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (!reason.trim()) {
|
|
62
|
+
setError('请填写本次规则调整的原因。');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const diagnostics = validateWorkflowAssignmentRoutingRules(policy, rules);
|
|
66
|
+
if (diagnostics.length) {
|
|
67
|
+
setError(`规则未通过校验:${diagnostics.join(';')}`);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const previous = new Map(configuration.rules.map(rule => [rule.ruleCode, rule]));
|
|
71
|
+
const changes = rules.flatMap(rule => {
|
|
72
|
+
const before = previous.get(rule.ruleCode);
|
|
73
|
+
previous.delete(rule.ruleCode);
|
|
74
|
+
return before && routingDraftJson(before) === routingDraftJson(rule) ? [] : [{ key: rule.ruleCode, action: before ? '修改' : '新增', before: before ? describe(before, configuration) : '—', after: describe(rule, configuration) }];
|
|
75
|
+
});
|
|
76
|
+
changes.push(...[...previous.values()].map(rule => ({ key: rule.ruleCode, action: '删除', before: describe(rule, configuration), after: '—' })));
|
|
77
|
+
if (!changes.length) {
|
|
78
|
+
setError('规则没有变化。');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const mutation = { expectedHeadRevision: configuration.headRevision, expectedRevision: configuration.revision,
|
|
82
|
+
operationId: crypto.randomUUID(), reason: reason.trim(), rules: structuredClone(rules) };
|
|
83
|
+
setReviewing(true);
|
|
84
|
+
modal.confirm({ title: `核对 ${changes.length} 项规则变更`, width: 900, okText: '确认保存', cancelText: '继续编辑', mask: { closable: false },
|
|
85
|
+
content: _jsxs(_Fragment, { children: [_jsx("p", { children: "\u4FDD\u5B58\u540E\u5F71\u54CD\u672A\u6765\u8FDB\u5165\u7684\u5BA1\u6279\u8282\u70B9\u3002\u5F53\u524D\u5F85\u529E\u4E0E\u5DF2\u9009\u4E2D\u7684\u4EBA\u5458\u4FDD\u6301\u539F\u5FEB\u7167\u3002" }), _jsx(Table, { rowKey: "key", size: "small", dataSource: changes, pagination: { pageSize: 6, showSizeChanger: false }, scroll: { x: 600 }, columns: [
|
|
86
|
+
{ title: '变更', dataIndex: 'action', width: 64 }, { title: '保存前', dataIndex: 'before' }, { title: '保存后', dataIndex: 'after' },
|
|
87
|
+
] })] }), onCancel: () => setReviewing(false), onOk: async () => { frozen.current = mutation; try {
|
|
88
|
+
await execute(mutation);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
setReviewing(false);
|
|
92
|
+
} }, });
|
|
93
|
+
};
|
|
94
|
+
const refreshKeepingDraft = async () => {
|
|
95
|
+
setBusy(true);
|
|
96
|
+
setError('');
|
|
97
|
+
try {
|
|
98
|
+
const latest = await loadWorkflowAssignmentRoutingConfiguration(policy.policyCode);
|
|
99
|
+
const diagnostics = validateWorkflowAssignmentRoutingRules(latest.policy, rules);
|
|
100
|
+
setConfiguration(latest);
|
|
101
|
+
if (diagnostics.length) {
|
|
102
|
+
setError('代码许可已变化,当前草稿需要按最新维度和来源调整后才能保存。');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
setConflict(false);
|
|
106
|
+
frozen.current = null;
|
|
107
|
+
}
|
|
108
|
+
catch (failure) {
|
|
109
|
+
setError(errorText(failure));
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
setBusy(false);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
return _jsxs(Drawer, { open: true, title: "\u5BA1\u6279\u4EBA\u8DEF\u7531\u7EF4\u62A4", size: 960, rootClassName: "oxa-workflow-routing", onClose: close, closable: !busy && !reviewing && !editing, mask: { closable: !busy && !reviewing && !editing }, footer: _jsxs("div", { className: "oxa-workflow-config-footer", children: [_jsx("span", { children: "\u5F53\u524D\u5F85\u529E\u4FDD\u7559\u5206\u6D3E\u5FEB\u7167" }), _jsxs(Space, { children: [_jsx(Button, { disabled: busy || reviewing || Boolean(editing), onClick: close, children: "\u53D6\u6D88" }), _jsx(Button, { type: "primary", loading: busy, disabled: conflict || reviewing || Boolean(editing), onClick: prepareSave, children: uncertain ? '重试原操作' : '核对并保存规则' })] })] }), children: [_jsxs(Space, { wrap: true, children: [_jsx(Typography.Title, { level: 4, style: { margin: 0 }, children: policy.title }), _jsxs(Tag, { children: ["\u4FEE\u8BA2 ", configuration.revision] }), _jsx(Tag, { children: policy.strategy === 'replace_only' ? '替换命中时不再追加' : '替换后继续追加' })] }), _jsx("p", { className: "oxa-workflow-config-help", children: "\u89C4\u5219\u9009\u62E9\u5BA1\u6279\u4EBA\uFF0C\u6D41\u7A0B\u5206\u652F\u53CA\u8303\u56F4\u8BA1\u7B97\u7531\u4EE3\u7801\u7EF4\u62A4\u3002\u6700\u9AD8\u4F18\u5148\u7EA7\u66FF\u6362\u5FC5\u987B\u552F\u4E00\uFF0C\u901A\u7528\u4E0E\u4E13\u9879\u8FFD\u52A0\u5171\u540C\u751F\u6548\u3002" }), error && _jsx(Alert, { showIcon: true, type: "error", title: conflict ? '已有新的修订,草稿已保留' : uncertain ? '保存结果未确认' : '规则未保存', description: error, style: { marginBottom: 16 } }), conflict && _jsx(Button, { disabled: busy, onClick: () => void refreshKeepingDraft(), style: { marginBottom: 16 }, children: "\u8F7D\u5165\u6700\u65B0\u89C4\u5219\u5E76\u4FDD\u7559\u8349\u7A3F" }), uncertain && _jsxs(Typography.Paragraph, { children: ["\u91CD\u8BD5\u6CBF\u7528\u539F\u64CD\u4F5C ID\uFF1A", _jsx(Typography.Text, { code: true, children: frozen.current?.operationId })] }), _jsxs("div", { className: "oxa-workflow-routing-toolbar", children: [_jsxs("span", { children: [rules.length, " \u6761\u89C4\u5219 \u00B7 ", configuration.references.filter(r => !r.pinned).length, " \u4E2A\u5F53\u524D\u5BA1\u6279\u8282\u70B9\u5F15\u7528"] }), _jsx(Button, { disabled: blocked || rules.length >= 256, onClick: () => setEditing({}), children: "\u65B0\u589E\u89C4\u5219" })] }), _jsx(Table, { rowKey: "ruleCode", size: "small", dataSource: rules, scroll: { x: 740 }, pagination: { pageSize: 8, showSizeChanger: false }, locale: { emptyText: _jsx(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE, description: "\u8FD8\u6CA1\u6709\u8865\u5145\u89C4\u5219\uFF0C\u5C06\u6309\u4EE3\u7801\u9ED8\u8BA4\u6765\u6E90\u5206\u6D3E" }) }, columns: [
|
|
116
|
+
{ title: '规则', width: 170, render: (_, rule) => _jsxs(_Fragment, { children: [_jsx("b", { children: rule.title }), _jsxs("div", { className: "oxa-workflow-config-help", children: [rule.ruleCode, " \u00B7 ", rule.enabled ? '启用' : '停用'] })] }) },
|
|
117
|
+
{ title: '匹配范围', render: (_, rule) => _jsxs(_Fragment, { children: [_jsx("div", { children: targetLabel(rule) }), _jsx("small", { children: matchLabel(rule, configuration) })] }) },
|
|
118
|
+
{ title: '选择方式', width: 145, render: (_, rule) => _jsxs(_Fragment, { children: [_jsx(Tag, { color: rule.effect === 'replace' ? 'orange' : 'blue', children: rule.effect === 'replace' ? '替换' : '追加' }), _jsx("div", { children: policy.sources[rule.sourceCode]?.title || rule.sourceCode }), _jsxs("small", { children: ["\u4F18\u5148\u7EA7 ", rule.priority] })] }) },
|
|
119
|
+
{ title: '有效期', width: 160, render: (_, rule) => _jsxs("small", { children: [rule.validFrom ? dayjs(rule.validFrom).format('YYYY-MM-DD HH:mm') : '立即', " \u81F3 ", rule.validTo ? dayjs(rule.validTo).format('YYYY-MM-DD HH:mm') : '长期'] }) },
|
|
120
|
+
{ title: '操作', width: 105, render: (_, rule) => _jsxs(Space, { children: [_jsx(Button, { type: "link", size: "small", disabled: blocked, onClick: () => setEditing({ rule }), children: "\u7F16\u8F91" }), _jsx(Popconfirm, { title: `删除“${rule.title}”规则?`, description: "\u6838\u5BF9\u5E76\u4FDD\u5B58\u540E\u751F\u6548\uFF0C\u5F53\u524D\u4EFB\u52A1\u4FDD\u6301\u5FEB\u7167\u3002", onConfirm: () => setRules(previous => previous.filter(r => r.ruleCode !== rule.ruleCode)), disabled: blocked, children: _jsx(Button, { type: "link", danger: true, size: "small", disabled: blocked, children: "\u5220\u9664" }) })] }) },
|
|
121
|
+
] }), _jsxs("details", { className: "oxa-workflow-routing-definition", children: [_jsx("summary", { children: "\u67E5\u770B\u4EE3\u7801\u5F00\u653E\u7684\u5339\u914D\u7EF4\u5EA6\u4E0E\u89D2\u8272\u6765\u6E90" }), Object.entries(policy.dimensions).map(([code, dimension]) => _jsxs("p", { children: [_jsx("b", { children: dimension.title }), " \u00B7 \u4ECE\u7533\u8BF7\u4E8B\u5B9E ", dimension.valueFrom, " \u8BFB\u53D6\u3002"] }, code)), Object.entries(policy.sources).map(([code, source]) => _jsxs("p", { children: [_jsx("b", { children: source.title }), " \u00B7 ", source.provider === 'app_role_in_scope' ? '范围内角色' : '应用角色', " ", source.roleCode, source.scope ? `,范围 ${source.scope.dimension} 来自 ${source.scope.valueFrom || source.scope.value}` : '', "\u3002"] }, code))] }), _jsxs("div", { className: "oxa-workflow-config-reason", children: [_jsx("label", { htmlFor: "oxa-routing-reason", children: "\u4FEE\u6539\u539F\u56E0" }), _jsx(Input.TextArea, { id: "oxa-routing-reason", value: reason, onChange: e => setReason(e.target.value), rows: 2, maxLength: 1000, disabled: blocked, placeholder: "\u8BF4\u660E\u672C\u6B21\u89C4\u5219\u8C03\u6574\u7684\u539F\u56E0" })] }), editing && _jsx(RuleDialog, { configuration: configuration, initial: editing.rule, rules: rules, onClose: () => setEditing(undefined), onSave: rule => { setRules(previous => editing.rule ? previous.map(item => item.ruleCode === editing.rule.ruleCode ? rule : item) : [...previous, rule]); setEditing(undefined); setError(''); } })] });
|
|
122
|
+
}
|
|
123
|
+
function RuleDialog({ configuration, initial, rules, onClose, onSave }) {
|
|
124
|
+
const { modal } = App.useApp();
|
|
125
|
+
const [form] = Form.useForm();
|
|
126
|
+
const workflow = Form.useWatch('workflowCode', form);
|
|
127
|
+
const [error, setError] = useState('');
|
|
128
|
+
const policy = configuration.policy;
|
|
129
|
+
const workflowOptions = [...new Set(configuration.references.map(r => r.workflowCode))].map(code => ({ value: code, label: code }));
|
|
130
|
+
const nodeOptions = [...new Set(configuration.references.filter(r => r.workflowCode === workflow).map(r => r.nodeId))].map(value => ({ value, label: value }));
|
|
131
|
+
const close = () => {
|
|
132
|
+
if (form.isFieldsTouched())
|
|
133
|
+
modal.confirm({ title: '放弃这条规则的修改?', content: '这条规则尚未加入整组草稿。', okText: '放弃修改', cancelText: '继续编辑', onOk: onClose });
|
|
134
|
+
else
|
|
135
|
+
onClose();
|
|
136
|
+
};
|
|
137
|
+
const save = async () => {
|
|
138
|
+
let values;
|
|
139
|
+
try {
|
|
140
|
+
values = await form.validateFields();
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const { lifetime, ...rest } = values;
|
|
146
|
+
const rule = { ruleCode: rest.ruleCode, title: rest.title, enabled: rest.enabled, priority: rest.priority,
|
|
147
|
+
sourceCode: rest.sourceCode, effect: rest.effect,
|
|
148
|
+
matches: Object.fromEntries(Object.entries(rest.matches || {}).filter(([, values]) => values?.length)),
|
|
149
|
+
...(rest.workflowCode ? { workflowCode: rest.workflowCode, ...(rest.nodeId ? { nodeId: rest.nodeId } : {}) } : {}),
|
|
150
|
+
...(lifetime?.[0] ? { validFrom: lifetime[0].toISOString() } : {}), ...(lifetime?.[1] ? { validTo: lifetime[1].toISOString() } : {}),
|
|
151
|
+
};
|
|
152
|
+
if (!initial && rules.some(item => item.ruleCode === rule.ruleCode)) {
|
|
153
|
+
setError('规则代码已使用,请换一个稳定代码。');
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const errors = validateWorkflowAssignmentRoutingRules(policy, [rule]);
|
|
157
|
+
if (errors.length) {
|
|
158
|
+
setError('请检查匹配值、有效期及代码开放的来源。');
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
onSave(rule);
|
|
162
|
+
};
|
|
163
|
+
return _jsxs(Modal, { open: true, title: initial ? '编辑规则' : '新增规则', width: 600, onCancel: close, onOk: () => void save(), okText: "\u52A0\u5165\u89C4\u5219\u8349\u7A3F", cancelText: "\u53D6\u6D88", mask: { closable: false }, children: [_jsx("p", { className: "oxa-workflow-config-help", children: "\u6B64\u5904\u5148\u52A0\u5165\u8349\u7A3F\uFF0C\u6838\u5BF9\u5168\u90E8\u53D8\u66F4\u5E76\u4FDD\u5B58\u540E\u624D\u751F\u6548\u3002" }), error && _jsx(Alert, { type: "error", showIcon: true, title: error, style: { marginBottom: 12 } }), _jsxs(Form, { layout: "vertical", form: form, initialValues: initial ? { ...initial, lifetime: [initial.validFrom ? dayjs(initial.validFrom) : null, initial.validTo ? dayjs(initial.validTo) : null] } : { enabled: true, priority: 0, effect: 'append', matches: {} }, children: [_jsxs("div", { className: "oxa-workflow-routing-form-row", children: [_jsx(Form.Item, { name: "title", label: "\u89C4\u5219\u540D\u79F0", rules: [{ required: true, whitespace: true, max: 128 }], children: _jsx(Input, {}) }), _jsx(Form.Item, { name: "ruleCode", label: "\u7A33\u5B9A\u4EE3\u7801", rules: [{ required: true, pattern: /^[a-z][a-z0-9_-]{0,127}$/, message: '使用小写字母、数字、短横线或下划线' }], children: _jsx(Input, { disabled: Boolean(initial), maxLength: 128, placeholder: "\u4F8B\u5982 extra-review" }) })] }), _jsxs("div", { className: "oxa-workflow-routing-form-row", children: [_jsx(Form.Item, { name: "effect", label: "\u9009\u62E9\u65B9\u5F0F", rules: [{ required: true }], children: _jsx(Select, { options: [{ value: 'append', label: '追加到当前审批人' }, { value: 'replace', label: '替换默认审批人' }] }) }), _jsx(Form.Item, { name: "sourceCode", label: "\u5BA1\u6279\u4EBA\u6765\u6E90", rules: [{ required: true }], children: _jsx(Select, { options: Object.entries(policy.sources).map(([value, source]) => ({ value, label: source.title })) }) })] }), _jsxs("div", { className: "oxa-workflow-routing-form-row", children: [_jsx(Form.Item, { name: "workflowCode", label: "\u9002\u7528\u6D41\u7A0B", children: _jsx(Select, { allowClear: true, placeholder: "\u6240\u6709\u5F15\u7528\u6B64\u7B56\u7565\u7684\u6D41\u7A0B", options: workflowOptions, onChange: () => form.setFieldValue('nodeId', undefined) }) }), _jsx(Form.Item, { name: "nodeId", label: "\u9002\u7528\u5BA1\u6279\u8282\u70B9", children: _jsx(Select, { allowClear: true, disabled: !workflow, options: nodeOptions, placeholder: "\u8BE5\u6D41\u7A0B\u7684\u6240\u6709\u5F15\u7528\u8282\u70B9" }) })] }), Object.entries(policy.dimensions).map(([code, dimension]) => _jsx(Form.Item, { name: ['matches', code], label: `${dimension.title}匹配值`, extra: "\u7559\u7A7A\u8868\u793A\u4E0D\u9650\uFF1B\u591A\u4E2A\u503C\u5339\u914D\u4EFB\u610F\u4E00\u4E2A\uFF0C\u4E0D\u540C\u7EF4\u5EA6\u987B\u540C\u65F6\u6EE1\u8DB3\u3002", children: _jsx(Select, { mode: "tags", maxCount: 64, tokenSeparators: [',', ','], placeholder: `输入${dimension.title}的业务值` }) }, code)), _jsx(Form.Item, { name: "lifetime", label: "\u751F\u6548\u65F6\u95F4", children: _jsx(DatePicker.RangePicker, { showTime: true, allowEmpty: [true, true], style: { width: '100%' }, placeholder: ['立即生效', '长期有效'] }) }), _jsxs(Space, { size: "large", children: [_jsx(Form.Item, { name: "priority", label: "\u4F18\u5148\u7EA7", rules: [{ required: true }], children: _jsx(InputNumber, { min: -1000, max: 1000, precision: 0 }) }), _jsx(Form.Item, { name: "enabled", valuePropName: "checked", children: _jsx(Checkbox, { children: "\u542F\u7528\u89C4\u5219" }) })] })] })] });
|
|
164
|
+
}
|
|
165
|
+
function targetLabel(rule) {
|
|
166
|
+
return rule.workflowCode ? `${rule.workflowCode}${rule.nodeId ? ` / ${rule.nodeId}` : ' / 全部引用节点'}` : '所有引用此策略的流程';
|
|
167
|
+
}
|
|
168
|
+
function matchLabel(rule, configuration) {
|
|
169
|
+
return Object.entries(rule.matches).map(([code, values]) => `${configuration.policy.dimensions[code]?.title || code} = ${values.join(' 或 ')}`).join(';') || '不限匹配值';
|
|
170
|
+
}
|
|
171
|
+
function describe(rule, configuration) {
|
|
172
|
+
return `${rule.enabled ? '启用' : '停用'} · ${rule.title} · ${targetLabel(rule)} · ${matchLabel(rule, configuration)} → ${rule.effect === 'replace' ? '替换' : '追加'} ${configuration.policy.sources[rule.sourceCode]?.title || rule.sourceCode} · 优先级 ${rule.priority}${rule.validFrom ? ` · 开始 ${rule.validFrom}` : ''}${rule.validTo ? ` · 结束 ${rule.validTo}` : ''}`;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=WorkflowAssignmentRoutingEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowAssignmentRoutingEditor.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowAssignmentRoutingEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowAssignmentRoutingManager.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowAssignmentRoutingManager.tsx"],"names":[],"mappings":"AAMA,+FAA+F;AAC/F,wBAAgB,gCAAgC,4CAyC/C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Alert, App, Button, Drawer, Empty, Input, Space, Table, Tag } from 'antd';
|
|
4
|
+
import { loadWorkflowAssignmentRoutingCatalog, loadWorkflowAssignmentRoutingConfiguration, loadWorkflowAssignmentRoutingHistory } from '../../platform-client';
|
|
5
|
+
import { WorkflowAssignmentRoutingEditor } from './WorkflowAssignmentRoutingEditor';
|
|
6
|
+
/** Embeddable administration page. Permissions, scope and revisions come from the platform. */
|
|
7
|
+
export function WorkflowAssignmentRoutingManager() {
|
|
8
|
+
const { message } = App.useApp();
|
|
9
|
+
const [page, setPage] = useState(1), [keyword, setKeyword] = useState(''), [search, setSearch] = useState(''), [attempt, setAttempt] = useState(0);
|
|
10
|
+
const [catalog, setCatalog] = useState();
|
|
11
|
+
const [loading, setLoading] = useState(true), [error, setError] = useState(''), [opening, setOpening] = useState('');
|
|
12
|
+
const [editing, setEditing] = useState();
|
|
13
|
+
const [history, setHistory] = useState();
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
let active = true;
|
|
16
|
+
setLoading(true);
|
|
17
|
+
setError('');
|
|
18
|
+
void loadWorkflowAssignmentRoutingCatalog({ keyword: search, limit: 20, offset: (page - 1) * 20 }).then(result => {
|
|
19
|
+
if (active)
|
|
20
|
+
setCatalog(result);
|
|
21
|
+
}).catch(failure => { if (active)
|
|
22
|
+
setError(errorText(failure)); }).finally(() => { if (active)
|
|
23
|
+
setLoading(false); });
|
|
24
|
+
return () => { active = false; };
|
|
25
|
+
}, [page, search, attempt]);
|
|
26
|
+
const open = async (policyCode) => {
|
|
27
|
+
setOpening(policyCode);
|
|
28
|
+
setError('');
|
|
29
|
+
try {
|
|
30
|
+
setEditing(await loadWorkflowAssignmentRoutingConfiguration(policyCode));
|
|
31
|
+
}
|
|
32
|
+
catch (failure) {
|
|
33
|
+
setError(errorText(failure));
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
setOpening('');
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const blocked = Boolean(editing || opening);
|
|
40
|
+
return _jsxs("div", { className: "oxa-workflow-routing-manager", children: [_jsxs("div", { className: "oxa-workflow-routing-toolbar", children: [_jsx(Input.Search, { "aria-label": "\u641C\u7D22\u5BA1\u6279\u4EBA\u8DEF\u7531\u7B56\u7565", placeholder: "\u641C\u7D22\u7B56\u7565\u540D\u79F0\u6216\u4EE3\u7801", value: keyword, disabled: blocked, allowClear: true, style: { maxWidth: 'min(340px, 100%)', minWidth: 0, flex: '1 1 240px' }, onChange: event => setKeyword(event.target.value), onSearch: value => { setSearch(value.trim()); setPage(1); } }), _jsx(Button, { disabled: blocked, onClick: () => setAttempt(value => value + 1), children: "\u5237\u65B0\u7B56\u7565" })] }), _jsx("p", { className: "oxa-workflow-config-help", children: "\u6D41\u7A0B\u4EE3\u7801\u5F00\u653E\u5339\u914D\u7EF4\u5EA6\u4E0E\u89D2\u8272\u6765\u6E90\uFF0C\u5728\u8FD9\u91CC\u7EF4\u62A4\u901A\u7528\u548C\u4E13\u9879\u89C4\u5219\u3002\u4EBA\u5458\u6210\u5458\u901A\u8FC7\u89D2\u8272\u7BA1\u7406\u7EF4\u62A4\u3002" }), error && _jsx(Alert, { type: "error", showIcon: true, title: "\u8DEF\u7531\u8BFB\u53D6\u5931\u8D25", description: error, action: _jsx(Button, { disabled: blocked, onClick: () => setAttempt(value => value + 1), children: "\u91CD\u8BD5" }), style: { marginBottom: 16 } }), _jsx(Table, { rowKey: "policyCode", size: "small", loading: loading, dataSource: catalog?.items, scroll: { x: 660 }, locale: { emptyText: _jsx(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE, description: "\u5F53\u524D\u4EE3\u7801\u5C1A\u672A\u58F0\u660E\u5BA1\u6279\u4EBA\u8DEF\u7531\u7B56\u7565" }) }, pagination: { current: page, pageSize: 20, showSizeChanger: false, total: catalog?.total, onChange: setPage, disabled: blocked }, columns: [
|
|
41
|
+
{ title: '路由策略', render: (_, item) => _jsxs(_Fragment, { children: [_jsx("b", { children: item.title }), _jsx("div", { className: "oxa-workflow-config-help", children: item.policyCode })] }) },
|
|
42
|
+
{ title: '规则数', dataIndex: 'ruleCount', width: 90 }, { title: '引用节点', dataIndex: 'referenceCount', width: 100 },
|
|
43
|
+
{ title: '当前修订', render: (_, item) => _jsx(Tag, { children: item.revision ? `r${item.revision}` : '代码默认' }), width: 100 },
|
|
44
|
+
{ title: '操作', width: 180, render: (_, item) => _jsxs(Space, { children: [_jsx(Button, { type: "link", size: "small", disabled: blocked, loading: opening === item.policyCode, onClick: () => void open(item.policyCode), children: "\u7EF4\u62A4\u89C4\u5219" }), _jsx(Button, { type: "link", size: "small", disabled: blocked, onClick: () => setHistory(item), children: "\u4FEE\u6539\u5386\u53F2" })] }) },
|
|
45
|
+
] }), editing && _jsx(WorkflowAssignmentRoutingEditor, { configuration: editing, onClose: () => setEditing(undefined), onSaved: receipt => {
|
|
46
|
+
setEditing(undefined);
|
|
47
|
+
setAttempt(value => value + 1);
|
|
48
|
+
void message.success(`规则已保存为修订 ${receipt.revision},未来进入节点生效`);
|
|
49
|
+
} }, editing.policy.policyCode), history && _jsx(RoutingHistory, { policy: history, onClose: () => setHistory(undefined) })] });
|
|
50
|
+
}
|
|
51
|
+
function RoutingHistory({ policy, onClose }) {
|
|
52
|
+
const [page, setPage] = useState(1), [attempt, setAttempt] = useState(0), [loading, setLoading] = useState(true), [error, setError] = useState('');
|
|
53
|
+
const [history, setHistory] = useState();
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
let active = true;
|
|
56
|
+
setLoading(true);
|
|
57
|
+
setError('');
|
|
58
|
+
void loadWorkflowAssignmentRoutingHistory(policy.policyCode, { limit: 10, offset: (page - 1) * 10 }).then(result => { if (active)
|
|
59
|
+
setHistory(result); })
|
|
60
|
+
.catch(failure => { if (active)
|
|
61
|
+
setError(errorText(failure)); }).finally(() => { if (active)
|
|
62
|
+
setLoading(false); });
|
|
63
|
+
return () => { active = false; };
|
|
64
|
+
}, [policy.policyCode, page, attempt]);
|
|
65
|
+
return _jsxs(Drawer, { open: true, title: `${policy.title} · 修改历史`, size: 840, onClose: onClose, children: [error && _jsx(Alert, { type: "error", showIcon: true, title: error, action: _jsx(Button, { onClick: () => setAttempt(value => value + 1), children: "\u91CD\u8BD5" }) }), _jsx(Table, { rowKey: "id", size: "small", loading: loading, dataSource: history?.items, scroll: { x: 640 }, pagination: { current: page, pageSize: 10, showSizeChanger: false, total: history?.total, onChange: setPage }, columns: [
|
|
66
|
+
{ title: '修订', dataIndex: 'revision', width: 65 }, { title: '时间', dataIndex: 'createdAt', render: value => new Date(value).toLocaleString(), width: 170 },
|
|
67
|
+
{ title: '操作人', dataIndex: 'actorUserId', ellipsis: true }, { title: '修改原因', dataIndex: 'reason' },
|
|
68
|
+
{ title: '规则变化', render: (_, item) => `${item.before.rules.length} → ${item.after.rules.length}`, width: 100 },
|
|
69
|
+
], expandable: { expandedRowRender: item => _jsxs("div", { children: [_jsx("p", { children: "\u4FEE\u6539\u524D" }), _jsx(RuleSummary, { rules: item.before.rules }), _jsx("p", { children: "\u4FEE\u6539\u540E" }), _jsx(RuleSummary, { rules: item.after.rules })] }) } })] });
|
|
70
|
+
}
|
|
71
|
+
function RuleSummary({ rules }) {
|
|
72
|
+
return rules.length ? _jsx("ul", { children: rules.map(rule => _jsxs("li", { children: [rule.title, "\uFF08", rule.ruleCode, "\uFF09 \u00B7 ", rule.enabled ? '启用' : '停用', " \u00B7 ", rule.workflowCode || '全部引用流程', rule.nodeId ? ` / ${rule.nodeId}` : '', " \u00B7 ", Object.entries(rule.matches).map(([code, values]) => `${code}=${values.join('或')}`).join(';') || '不限匹配值', " \u00B7 ", rule.effect === 'append' ? '追加' : '替换', " ", rule.sourceCode, " \u00B7 \u4F18\u5148\u7EA7 ", rule.priority, rule.validFrom ? ` · 从 ${rule.validFrom}` : '', rule.validTo ? ` · 至 ${rule.validTo}` : ''] }, rule.ruleCode)) }) : _jsx("p", { children: "\u6CA1\u6709\u8DEF\u7531\u8865\u5145\u89C4\u5219\uFF0C\u4F7F\u7528\u4EE3\u7801\u9ED8\u8BA4\u6765\u6E90\u3002" });
|
|
73
|
+
}
|
|
74
|
+
function errorText(failure) { return failure instanceof Error ? failure.message : '请求失败,请重试'; }
|
|
75
|
+
//# sourceMappingURL=WorkflowAssignmentRoutingManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowAssignmentRoutingManager.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowAssignmentRoutingManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface WorkflowBusinessStepRecoveryDraftState {
|
|
2
|
+
dirty: boolean;
|
|
3
|
+
busy: boolean;
|
|
4
|
+
unknown: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface WorkflowBusinessStepRecoveryPanelProps {
|
|
7
|
+
instanceId: string;
|
|
8
|
+
onCompleted?: () => void | Promise<void>;
|
|
9
|
+
/** Keep the panel mounted during an uncertain write using the host's navigation owner. */
|
|
10
|
+
onDraftStateChange?: (state: WorkflowBusinessStepRecoveryDraftState) => void;
|
|
11
|
+
}
|
|
12
|
+
/** Shared administrator repair; the server owns authority, CAS, state and audit. */
|
|
13
|
+
export declare function WorkflowBusinessStepRecoveryPanel({ instanceId, onCompleted, onDraftStateChange }: WorkflowBusinessStepRecoveryPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=WorkflowBusinessStepRecoveryPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowBusinessStepRecoveryPanel.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,sCAAsC;IAAG,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE;AAC3G,MAAM,WAAW,sCAAsC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,sCAAsC,KAAK,IAAI,CAAC;CAC9E;AAGD,oFAAoF;AACpF,wBAAgB,iCAAiC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,sCAAsC,2CAiFxI"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { Alert, Button, Descriptions, Input, Space, Spin } from 'antd';
|
|
4
|
+
import { loadWorkflowBusinessStepRecovery, previewWorkflowBusinessStepRecovery, executeWorkflowBusinessStepRecovery, OpenXiangdaPlatformRequestError } from '../../platform-client';
|
|
5
|
+
const errorText = (error) => error instanceof Error ? error.message : String(error);
|
|
6
|
+
/** Shared administrator repair; the server owns authority, CAS, state and audit. */
|
|
7
|
+
export function WorkflowBusinessStepRecoveryPanel({ instanceId, onCompleted, onDraftStateChange }) {
|
|
8
|
+
const [options, setOptions] = useState();
|
|
9
|
+
const [preview, setPreview] = useState();
|
|
10
|
+
const [reason, setReason] = useState('');
|
|
11
|
+
const [busy, setBusy] = useState(false);
|
|
12
|
+
const [unknown, setUnknown] = useState(false);
|
|
13
|
+
const [loading, setLoading] = useState(true);
|
|
14
|
+
const [error, setError] = useState('');
|
|
15
|
+
const [refreshError, setRefreshError] = useState('');
|
|
16
|
+
const [reload, setReload] = useState(0);
|
|
17
|
+
const request = useRef(undefined);
|
|
18
|
+
const generation = useRef(0);
|
|
19
|
+
const dirty = Boolean(reason.trim() || preview || unknown);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
onDraftStateChange?.({ dirty, busy, unknown });
|
|
22
|
+
return () => onDraftStateChange?.({ dirty: false, busy: false, unknown: false });
|
|
23
|
+
}, [dirty, busy, unknown, onDraftStateChange]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (!dirty && !busy)
|
|
26
|
+
return;
|
|
27
|
+
const beforeUnload = (event) => { event.preventDefault(); event.returnValue = ''; };
|
|
28
|
+
window.addEventListener('beforeunload', beforeUnload);
|
|
29
|
+
return () => window.removeEventListener('beforeunload', beforeUnload);
|
|
30
|
+
}, [dirty, busy]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const current = ++generation.current;
|
|
33
|
+
setLoading(true);
|
|
34
|
+
setBusy(false);
|
|
35
|
+
setOptions(undefined);
|
|
36
|
+
setPreview(undefined);
|
|
37
|
+
request.current = undefined;
|
|
38
|
+
setError('');
|
|
39
|
+
loadWorkflowBusinessStepRecovery(instanceId).then(value => { if (current === generation.current)
|
|
40
|
+
setOptions(value); }).catch(e => { if (current === generation.current)
|
|
41
|
+
setError(e instanceof Error ? e.message : String(e)); }).finally(() => { if (current === generation.current)
|
|
42
|
+
setLoading(false); });
|
|
43
|
+
return () => { generation.current++; };
|
|
44
|
+
}, [instanceId, reload]);
|
|
45
|
+
const prepare = async () => {
|
|
46
|
+
if (busy || unknown || !reason.trim())
|
|
47
|
+
return;
|
|
48
|
+
const current = generation.current;
|
|
49
|
+
setBusy(true);
|
|
50
|
+
setError('');
|
|
51
|
+
setRefreshError('');
|
|
52
|
+
try {
|
|
53
|
+
const value = await previewWorkflowBusinessStepRecovery(instanceId);
|
|
54
|
+
if (current !== generation.current)
|
|
55
|
+
return;
|
|
56
|
+
setPreview(value);
|
|
57
|
+
request.current = value.commandToken ? { commandToken: value.commandToken, idempotencyKey: `step-recovery:${crypto.randomUUID()}`, input: { reason: reason.trim() } } : undefined;
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
if (current === generation.current)
|
|
61
|
+
setError(e instanceof Error ? e.message : String(e));
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
if (current === generation.current)
|
|
65
|
+
setBusy(false);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const commit = async () => {
|
|
69
|
+
if (busy || !request.current || !preview?.canCommit)
|
|
70
|
+
return;
|
|
71
|
+
const current = generation.current, recovering = unknown;
|
|
72
|
+
setBusy(true);
|
|
73
|
+
setError('');
|
|
74
|
+
try {
|
|
75
|
+
await executeWorkflowBusinessStepRecovery(instanceId, request.current);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
if (current !== generation.current)
|
|
79
|
+
return;
|
|
80
|
+
setError(errorText(e));
|
|
81
|
+
if (!recovering && e instanceof OpenXiangdaPlatformRequestError && e.status >= 400 && e.status < 500) {
|
|
82
|
+
setPreview(undefined);
|
|
83
|
+
request.current = undefined;
|
|
84
|
+
}
|
|
85
|
+
else
|
|
86
|
+
setUnknown(true);
|
|
87
|
+
setBusy(false);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (current !== generation.current)
|
|
91
|
+
return;
|
|
92
|
+
setUnknown(false);
|
|
93
|
+
setPreview(undefined);
|
|
94
|
+
request.current = undefined;
|
|
95
|
+
setReason('');
|
|
96
|
+
// A host refresh failure must not turn a confirmed command into an unknown write.
|
|
97
|
+
try {
|
|
98
|
+
await onCompleted?.();
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
if (current === generation.current)
|
|
102
|
+
setRefreshError(errorText(e));
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
if (current === generation.current) {
|
|
106
|
+
setBusy(false);
|
|
107
|
+
setReload(value => value + 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
return _jsx("section", { "aria-label": "\u4E1A\u52A1\u6B65\u9AA4\u6062\u590D", children: _jsxs(Space, { orientation: "vertical", style: { width: '100%' }, children: [loading && _jsx("span", { "aria-label": "\u8BFB\u53D6\u4E1A\u52A1\u6B65\u9AA4\u72B6\u6001", children: _jsx(Spin, {}) }), options && _jsxs(_Fragment, { children: [_jsx(Descriptions, { column: 1, size: "small", items: [
|
|
112
|
+
{ label: '当前步骤', children: options.businessStep ? `${options.businessStep.handlerCode} · v${options.businessStep.handlerVersion}` : '当前没有等待中的业务步骤' },
|
|
113
|
+
{ label: '状态', children: options.businessStep?.status === 'result_ready' ? '结果已收到,后续推进受阻' : options.businessStep?.status === 'waiting' ? '等待处理器结果' : options.status },
|
|
114
|
+
...(options.businessStep?.lastErrorCode ? [{ label: '阻塞原因', children: options.businessStep.lastErrorCode }] : []),
|
|
115
|
+
] }), !options.canRetryBusinessStep && _jsx(Alert, { type: "info", title: options.businessStep?.status === 'waiting' ? '尚未收到可用结果' : '当前无需恢复步骤', description: options.businessStep?.status === 'waiting' ? '先在事件管理中核对原投递及处理器回执,再按原请求恢复。' : '刷新后查看最新状态。' })] }), options?.canRetryBusinessStep && !preview && _jsxs(_Fragment, { children: [_jsx(Alert, { type: "info", title: "\u4F7F\u7528\u5DF2\u4FDD\u5B58\u7ED3\u679C\u7EE7\u7EED\u6D41\u7A0B", description: "\u8BF7\u5148\u4FEE\u590D\u540E\u7EED\u5BA1\u6279\u4EBA\u6216\u8282\u70B9\u914D\u7F6E\u3002\u6267\u884C\u952E\u3001\u8BA1\u7B97\u7ED3\u679C\u548C\u65E2\u6709\u8F68\u8FF9\u4FDD\u6301\u53EF\u8FFD\u6EAF\u3002" }), _jsxs("label", { children: ["\u64CD\u4F5C\u539F\u56E0", _jsx(Input.TextArea, { "aria-label": "\u4E1A\u52A1\u6B65\u9AA4\u6062\u590D\u539F\u56E0", value: reason, onChange: e => setReason(e.target.value), rows: 3, maxLength: 1000, disabled: busy || unknown })] }), _jsx(Button, { type: "primary", disabled: busy || unknown || !reason.trim(), loading: busy, onClick: () => void prepare(), children: "\u9884\u89C8\u6B65\u9AA4\u6062\u590D" })] }), preview && _jsxs(_Fragment, { children: [_jsx(Alert, { type: "info", title: `继续 ${preview.target.title}`, description: "\u6309\u5DF2\u4FDD\u5B58\u7ED3\u679C\u548C\u5F53\u524D\u5408\u6CD5\u914D\u7F6E\u63A8\u8FDB\uFF1B\u540E\u7EED\u4ECD\u53EF\u80FD\u56E0\u914D\u7F6E\u95EE\u9898\u53D7\u963B\uFF0C\u8BF7\u67E5\u770B\u6700\u65B0\u72B6\u6001\u3002" }), _jsxs("p", { style: { overflowWrap: 'anywhere' }, children: ["\u539F\u6267\u884C\u952E\uFF1A", preview.target.executionId] }), _jsxs("p", { children: ["\u64CD\u4F5C\u539F\u56E0\uFF1A", reason] }), _jsxs(Space, { wrap: true, children: [_jsx(Button, { disabled: busy || unknown, onClick: () => setReload(value => value + 1), children: "\u91CD\u65B0\u8BFB\u53D6\u5E76\u9884\u89C8" }), _jsx(Button, { type: "primary", loading: busy, disabled: busy || !preview.canCommit || !request.current, onClick: () => void commit(), children: unknown ? '重试原恢复请求' : '使用已收结果继续' })] })] }), error && _jsx(Alert, { type: unknown ? 'warning' : 'error', showIcon: true, title: unknown ? '提交结果待确认' : '操作未完成', description: error }), refreshError && _jsx(Alert, { type: "warning", showIcon: true, title: "\u6062\u590D\u64CD\u4F5C\u5DF2\u6210\u529F\uFF0C\u4F46\u9875\u9762\u5237\u65B0\u5931\u8D25", description: refreshError }), unknown && _jsx("p", { children: "\u8BF7\u4FDD\u7559\u5F53\u524D\u9875\u9762\u5E76\u91CD\u8BD5\u539F\u8BF7\u6C42\uFF0C\u5E73\u53F0\u4F1A\u6838\u5BF9\u539F\u64CD\u4F5C\u7ED3\u679C\u3002" }), !preview && _jsx(Button, { disabled: busy || loading || unknown, onClick: () => setReload(value => value + 1), children: "\u5237\u65B0\u6B65\u9AA4\u72B6\u6001" })] }) });
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=WorkflowBusinessStepRecoveryPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowBusinessStepRecoveryPanel.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface WorkflowDelegationDraftState {
|
|
2
|
+
dirty: boolean;
|
|
3
|
+
busy: boolean;
|
|
4
|
+
unknown: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface WorkflowDelegationManagerProps {
|
|
7
|
+
initialAll?: boolean;
|
|
8
|
+
refreshKey?: number | string;
|
|
9
|
+
/** Register dirty state with the host's existing navigation owner. */
|
|
10
|
+
onDraftStateChange?: (state: WorkflowDelegationDraftState) => void;
|
|
11
|
+
}
|
|
12
|
+
/** Personal and administrator maintenance use the same current-user contract. */
|
|
13
|
+
export declare function WorkflowDelegationManager({ initialAll, refreshKey, onDraftStateChange }: WorkflowDelegationManagerProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=WorkflowDelegationManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowDelegationManager.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowDelegationManager.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,4BAA4B;IAAG,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE;AACjG,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI,CAAC;CACpE;AAoBD,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,EAAC,UAAgB,EAAC,UAAY,EAAC,kBAAkB,EAAC,EAAC,8BAA8B,2CAyC1H"}
|