openxiangda 2.2.2 → 2.3.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/documentation/getting-started.md +7 -7
- package/documentation/manifest.json +3 -3
- package/documentation/workflow-events.md +58 -0
- package/package.json +21 -18
- package/releases/2.3.0.json +37 -0
- package/skills/manifest.json +1 -1
- package/skills/openxiangda-v2/SKILL.md +4 -4
- package/skills/openxiangda-v2/references/getting-started.md +7 -7
- package/skills/openxiangda-v2/references/workflow-events.md +58 -0
|
@@ -11,10 +11,10 @@ OpenXiangda 2.0 默认生成 React 应用和共享契约。普通 CRUD、标准
|
|
|
11
11
|
以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
pnpm dlx openxiangda@2.
|
|
15
|
-
pnpm dlx openxiangda@2.
|
|
16
|
-
pnpm dlx openxiangda@2.
|
|
17
|
-
pnpm dlx openxiangda@2.
|
|
14
|
+
pnpm dlx openxiangda@2.3.0 skill install --force
|
|
15
|
+
pnpm dlx openxiangda@2.3.0 auth status --base-url <平台地址> --json
|
|
16
|
+
pnpm dlx openxiangda@2.3.0 login --base-url https://platform.example.com
|
|
17
|
+
pnpm dlx openxiangda@2.3.0 create my-app --base-url https://platform.example.com
|
|
18
18
|
cd my-app
|
|
19
19
|
pnpm openxiangda context --json
|
|
20
20
|
pnpm openxiangda dev
|
|
@@ -114,9 +114,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
|
|
|
114
114
|
无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
|
|
115
115
|
|
|
116
116
|
```bash
|
|
117
|
-
pnpm dlx openxiangda@2.
|
|
118
|
-
pnpm dlx openxiangda@2.
|
|
119
|
-
pnpm dlx openxiangda@2.
|
|
117
|
+
pnpm dlx openxiangda@2.3.0 auth status --base-url <平台> --json
|
|
118
|
+
pnpm dlx openxiangda@2.3.0 source resolve <仓库URL> --base-url <平台> --json
|
|
119
|
+
pnpm dlx openxiangda@2.3.0 source clone <仓库URL> <新目录> --base-url <平台> --json
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "openxiangda.documentation/v1",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"topics": [
|
|
5
5
|
{
|
|
6
6
|
"id": "getting-started",
|
|
7
7
|
"title": "安装与开始开发",
|
|
8
8
|
"file": "getting-started.md",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "179ed8bd147fd85a7df4035275ccbf5e80d029a8ce6356ae3a9fe3f9ec478419"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"id": "product-design",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"id": "workflow-events",
|
|
73
73
|
"title": "审批、事件与通知",
|
|
74
74
|
"file": "workflow-events.md",
|
|
75
|
-
"sha256": "
|
|
75
|
+
"sha256": "998422cb6270a086fab19848553e7fa20655e062a2c6a724683247df59427b7b"
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
"id": "backend",
|
|
@@ -37,6 +37,64 @@ Head、实例/任务版本、允许的命令集合与 CSRF。命令请求只提
|
|
|
37
37
|
`expectedTaskVersion`/`expectedInstanceVersion` 不再是合同。冲突必须刷新 Surface,
|
|
38
38
|
不得自动重放旧意图。
|
|
39
39
|
|
|
40
|
+
### 撤回与业务终止策略
|
|
41
|
+
|
|
42
|
+
需要按业务时间限制取消时,在固定 Workflow definition 中声明:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
instanceCommands: {
|
|
46
|
+
withdraw: { beforeFact: 'startsAt' },
|
|
47
|
+
terminate: {
|
|
48
|
+
capability: 'app:reservation-center:meeting:cancel',
|
|
49
|
+
beforeFact: 'startsAt',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`beforeFact` 必须是 `inputSchema` 中 required 的根字段,类型为
|
|
55
|
+
`string`、格式为 `date-time`,并通过 `subject.factProjection` 映射到非空
|
|
56
|
+
`datetime` 业务字段。例如定义与模型的相关部分为:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
// Workflow definition
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: 'object',
|
|
62
|
+
additionalProperties: false,
|
|
63
|
+
required: ['startsAt'],
|
|
64
|
+
properties: { startsAt: { type: 'string', format: 'date-time' } },
|
|
65
|
+
},
|
|
66
|
+
subject: {
|
|
67
|
+
resourceCode: 'meetings',
|
|
68
|
+
factProjection: { startsAt: 'startsAt' },
|
|
69
|
+
},
|
|
70
|
+
// meetings 模型字段
|
|
71
|
+
fields: [{ code: 'startsAt', label: '开始时间', type: 'datetime', required: true }],
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
时间值必须携带 `Z` 或 `±HH:mm` 时区,可省略秒的小数部分或使用 1–3 位小数,
|
|
75
|
+
例如 `2026-09-08T09:00:00+08:00`、`2026-09-08T01:00:00.000Z`。
|
|
76
|
+
标准字段和 Data API 将 datetime 规范化为毫秒 ISO 字符串后冻结为事实。
|
|
77
|
+
平台在锁定实例后,
|
|
78
|
+
按数据库当前时间严格判断 `当前时间 < 截止时间`;事先取得 token 不能绕过
|
|
79
|
+
后续的时限或授权检查。缺失或非法事实拒绝执行。Surface 到期禁用操作,
|
|
80
|
+
应用收到冲突后刷新详情,不自动换幂等键重试。
|
|
81
|
+
|
|
82
|
+
撤回始终只允许发起人。终止允许原应用超级管理员,或当前角色并集拥有
|
|
83
|
+
所声明精确 capability 的用户;capability 必须在同一应用显式声明,不支持
|
|
84
|
+
通配符。该授权同时允许读取对应流程实例的详情及时间线,包括完成后查阅;
|
|
85
|
+
不授予审批、抄送、改派、删除、普通数据读取或管理后台权限。撤销 capability
|
|
86
|
+
后读取和终止权限都失效。撤回、终止均要求填写原因;超级管理员也遵守已声明时限。
|
|
87
|
+
|
|
88
|
+
不声明 `instanceCommands` 时沿用既有行为;只为终止授权时可以省略其
|
|
89
|
+
`beforeFact`。声明策略的交付包自动要求平台能力
|
|
90
|
+
`workflow.instance-cancellation-policy`,旧平台无法激活该应用版本。
|
|
91
|
+
已经固定该策略的实例存在期间,平台回滚也必须保留策略执行能力。
|
|
92
|
+
发布新 definition 不会改写旧实例固定的 definition 版本,因此不会给旧实例
|
|
93
|
+
补上截止时间或业务管理员终止授权。升级前应盘点存量实例,按各自原定义完成
|
|
94
|
+
或由原有授权主体处置;不要通过重发事件或改写事实迁移策略。已使用新策略的
|
|
95
|
+
实例在截止后及终态仍允许当前被授权的业务管理员查阅,撤销其 capability
|
|
96
|
+
也会撤销这些存量实例的详情读取权限。
|
|
97
|
+
|
|
40
98
|
## 事实和消息投影
|
|
41
99
|
|
|
42
100
|
Workflow 在同一 PostgreSQL 事务中提交状态、fact 和 outbox。每个实例使用严格单调的 `instanceSequence`,每位审批人拥有独立 participant 生命周期。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openxiangda",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -58,13 +58,13 @@
|
|
|
58
58
|
"antd-mobile": "5.42.3",
|
|
59
59
|
"dayjs": "1.11.18",
|
|
60
60
|
"docx-preview": "0.3.7",
|
|
61
|
-
"openxiangda-cli": "2.2.
|
|
62
|
-
"openxiangda-contracts": "2.
|
|
63
|
-
"openxiangda-devkit-core": "2.
|
|
61
|
+
"openxiangda-cli": "2.2.4",
|
|
62
|
+
"openxiangda-contracts": "2.3.0",
|
|
63
|
+
"openxiangda-devkit-core": "2.3.0",
|
|
64
64
|
"openxiangda-legacy": "npm:openxiangda@1.0.268",
|
|
65
|
-
"openxiangda-mcp": "2.0.
|
|
66
|
-
"openxiangda-nest": "2.0.
|
|
67
|
-
"openxiangda-skill-kit": "2.0.
|
|
65
|
+
"openxiangda-mcp": "2.0.5",
|
|
66
|
+
"openxiangda-nest": "2.0.5",
|
|
67
|
+
"openxiangda-skill-kit": "2.0.6",
|
|
68
68
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
@@ -130,18 +130,18 @@
|
|
|
130
130
|
},
|
|
131
131
|
"openxiangdaRelease": {
|
|
132
132
|
"schemaVersion": "openxiangda.release-notes/v1",
|
|
133
|
-
"version": "2.
|
|
134
|
-
"title": "
|
|
133
|
+
"version": "2.3.0",
|
|
134
|
+
"title": "流程实例撤回期限与业务终止授权",
|
|
135
135
|
"status": "reviewed",
|
|
136
|
-
"summary": "
|
|
136
|
+
"summary": "为标准流程实例增加可选的撤回时间限制和精确业务能力终止授权,应用编译器与平台共用策略校验。",
|
|
137
137
|
"newFeatures": [
|
|
138
|
-
"
|
|
138
|
+
"流程可声明 instanceCommands,以必填时间事实限制撤回,并以同应用的精确能力授权业务管理员终止。"
|
|
139
139
|
],
|
|
140
140
|
"fixes": [
|
|
141
|
-
"
|
|
141
|
+
"阻止未绑定时间事实、跨应用能力和未声明终止能力进入可发布应用包。"
|
|
142
142
|
],
|
|
143
143
|
"affectedUsers": [
|
|
144
|
-
"
|
|
144
|
+
"需要限制标准流程撤回时间或授权业务角色终止流程的 V2 应用开发者。"
|
|
145
145
|
],
|
|
146
146
|
"compatibility": {
|
|
147
147
|
"node": ">=24",
|
|
@@ -150,17 +150,20 @@
|
|
|
150
150
|
"v2"
|
|
151
151
|
],
|
|
152
152
|
"v1Policy": "V1 引擎与应用契约不变。",
|
|
153
|
-
"platformPolicy": "
|
|
153
|
+
"platformPolicy": "开发与部署需要匹配的共享校验器版本。使用新策略必须由平台提供 workflow.instance-cancellation-policy 1.0.0;平台预检会拒绝不支持该能力的版本。"
|
|
154
154
|
},
|
|
155
155
|
"upgradeSteps": [
|
|
156
|
-
"将应用 openxiangda 精确依赖升级为 2.
|
|
156
|
+
"将应用 openxiangda 精确依赖升级为 2.3.0,更新锁文件并刷新技能与资料。",
|
|
157
|
+
"待目标平台部署匹配版本后执行正式检查、测试发布及真实角色验收。"
|
|
157
158
|
],
|
|
158
159
|
"knownLimitations": [
|
|
159
|
-
"
|
|
160
|
+
"新策略只作用于声明该策略的新定义,不改写既有实例固定的定义。",
|
|
161
|
+
"撤回和终止的线上执行由平台版本提供;本工具包发布不代表平台已完成部署。",
|
|
162
|
+
"驳回意见校验与 Data API 事务时钟问题不在本次工具包修复范围。"
|
|
160
163
|
],
|
|
161
164
|
"issues": [],
|
|
162
|
-
"sha256": "
|
|
163
|
-
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.
|
|
165
|
+
"sha256": "134f47befeec3138041d5eb24558379135456cf2f7d437502643fc5919331ec4",
|
|
166
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.3.0"
|
|
164
167
|
},
|
|
165
168
|
"scripts": {
|
|
166
169
|
"build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "openxiangda.release-notes/v1",
|
|
3
|
+
"version": "2.3.0",
|
|
4
|
+
"title": "流程实例撤回期限与业务终止授权",
|
|
5
|
+
"status": "reviewed",
|
|
6
|
+
"summary": "为标准流程实例增加可选的撤回时间限制和精确业务能力终止授权,应用编译器与平台共用策略校验。",
|
|
7
|
+
"newFeatures": [
|
|
8
|
+
"流程可声明 instanceCommands,以必填时间事实限制撤回,并以同应用的精确能力授权业务管理员终止。"
|
|
9
|
+
],
|
|
10
|
+
"fixes": [
|
|
11
|
+
"阻止未绑定时间事实、跨应用能力和未声明终止能力进入可发布应用包。"
|
|
12
|
+
],
|
|
13
|
+
"affectedUsers": [
|
|
14
|
+
"需要限制标准流程撤回时间或授权业务角色终止流程的 V2 应用开发者。"
|
|
15
|
+
],
|
|
16
|
+
"compatibility": {
|
|
17
|
+
"node": ">=24",
|
|
18
|
+
"workspaceGenerations": [
|
|
19
|
+
"v1",
|
|
20
|
+
"v2"
|
|
21
|
+
],
|
|
22
|
+
"v1Policy": "V1 引擎与应用契约不变。",
|
|
23
|
+
"platformPolicy": "开发与部署需要匹配的共享校验器版本。使用新策略必须由平台提供 workflow.instance-cancellation-policy 1.0.0;平台预检会拒绝不支持该能力的版本。"
|
|
24
|
+
},
|
|
25
|
+
"upgradeSteps": [
|
|
26
|
+
"将应用 openxiangda 精确依赖升级为 2.3.0,更新锁文件并刷新技能与资料。",
|
|
27
|
+
"待目标平台部署匹配版本后执行正式检查、测试发布及真实角色验收。"
|
|
28
|
+
],
|
|
29
|
+
"knownLimitations": [
|
|
30
|
+
"新策略只作用于声明该策略的新定义,不改写既有实例固定的定义。",
|
|
31
|
+
"撤回和终止的线上执行由平台版本提供;本工具包发布不代表平台已完成部署。",
|
|
32
|
+
"驳回意见校验与 Data API 事务时钟问题不在本次工具包修复范围。"
|
|
33
|
+
],
|
|
34
|
+
"issues": [],
|
|
35
|
+
"sha256": "134f47befeec3138041d5eb24558379135456cf2f7d437502643fc5919331ec4",
|
|
36
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.3.0"
|
|
37
|
+
}
|
package/skills/manifest.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"name": "openxiangda-v2",
|
|
6
6
|
"description": "使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具体变更出发,通过对话发现模块、完成详细产品设计,再开发、检查和交付应用。维护 1.x 应用时使用对应的 1.x 技能。",
|
|
7
|
-
"sha256": "
|
|
7
|
+
"sha256": "533d36eee4faac5be82c5ad9bd87a1e6803b17be62bf376ed250f73443209203"
|
|
8
8
|
}
|
|
9
9
|
]
|
|
10
10
|
}
|
|
@@ -18,10 +18,10 @@ description: 使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具
|
|
|
18
18
|
未创建工作区时使用本 Skill 随根包发布的精确版本:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
pnpm dlx openxiangda@2.
|
|
22
|
-
pnpm dlx openxiangda@2.
|
|
23
|
-
pnpm dlx openxiangda@2.
|
|
24
|
-
pnpm dlx openxiangda@2.
|
|
21
|
+
pnpm dlx openxiangda@2.3.0 auth status --base-url <平台地址> --json
|
|
22
|
+
pnpm dlx openxiangda@2.3.0 login --base-url <平台地址>
|
|
23
|
+
pnpm dlx openxiangda@2.3.0 create <应用目录> --base-url <同一平台地址>
|
|
24
|
+
pnpm dlx openxiangda@2.3.0 skill install --force
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
|
|
@@ -11,10 +11,10 @@ OpenXiangda 2.0 默认生成 React 应用和共享契约。普通 CRUD、标准
|
|
|
11
11
|
以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
pnpm dlx openxiangda@2.
|
|
15
|
-
pnpm dlx openxiangda@2.
|
|
16
|
-
pnpm dlx openxiangda@2.
|
|
17
|
-
pnpm dlx openxiangda@2.
|
|
14
|
+
pnpm dlx openxiangda@2.3.0 skill install --force
|
|
15
|
+
pnpm dlx openxiangda@2.3.0 auth status --base-url <平台地址> --json
|
|
16
|
+
pnpm dlx openxiangda@2.3.0 login --base-url https://platform.example.com
|
|
17
|
+
pnpm dlx openxiangda@2.3.0 create my-app --base-url https://platform.example.com
|
|
18
18
|
cd my-app
|
|
19
19
|
pnpm openxiangda context --json
|
|
20
20
|
pnpm openxiangda dev
|
|
@@ -114,9 +114,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
|
|
|
114
114
|
无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
|
|
115
115
|
|
|
116
116
|
```bash
|
|
117
|
-
pnpm dlx openxiangda@2.
|
|
118
|
-
pnpm dlx openxiangda@2.
|
|
119
|
-
pnpm dlx openxiangda@2.
|
|
117
|
+
pnpm dlx openxiangda@2.3.0 auth status --base-url <平台> --json
|
|
118
|
+
pnpm dlx openxiangda@2.3.0 source resolve <仓库URL> --base-url <平台> --json
|
|
119
|
+
pnpm dlx openxiangda@2.3.0 source clone <仓库URL> <新目录> --base-url <平台> --json
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
|
|
@@ -37,6 +37,64 @@ Head、实例/任务版本、允许的命令集合与 CSRF。命令请求只提
|
|
|
37
37
|
`expectedTaskVersion`/`expectedInstanceVersion` 不再是合同。冲突必须刷新 Surface,
|
|
38
38
|
不得自动重放旧意图。
|
|
39
39
|
|
|
40
|
+
### 撤回与业务终止策略
|
|
41
|
+
|
|
42
|
+
需要按业务时间限制取消时,在固定 Workflow definition 中声明:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
instanceCommands: {
|
|
46
|
+
withdraw: { beforeFact: 'startsAt' },
|
|
47
|
+
terminate: {
|
|
48
|
+
capability: 'app:reservation-center:meeting:cancel',
|
|
49
|
+
beforeFact: 'startsAt',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`beforeFact` 必须是 `inputSchema` 中 required 的根字段,类型为
|
|
55
|
+
`string`、格式为 `date-time`,并通过 `subject.factProjection` 映射到非空
|
|
56
|
+
`datetime` 业务字段。例如定义与模型的相关部分为:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
// Workflow definition
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: 'object',
|
|
62
|
+
additionalProperties: false,
|
|
63
|
+
required: ['startsAt'],
|
|
64
|
+
properties: { startsAt: { type: 'string', format: 'date-time' } },
|
|
65
|
+
},
|
|
66
|
+
subject: {
|
|
67
|
+
resourceCode: 'meetings',
|
|
68
|
+
factProjection: { startsAt: 'startsAt' },
|
|
69
|
+
},
|
|
70
|
+
// meetings 模型字段
|
|
71
|
+
fields: [{ code: 'startsAt', label: '开始时间', type: 'datetime', required: true }],
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
时间值必须携带 `Z` 或 `±HH:mm` 时区,可省略秒的小数部分或使用 1–3 位小数,
|
|
75
|
+
例如 `2026-09-08T09:00:00+08:00`、`2026-09-08T01:00:00.000Z`。
|
|
76
|
+
标准字段和 Data API 将 datetime 规范化为毫秒 ISO 字符串后冻结为事实。
|
|
77
|
+
平台在锁定实例后,
|
|
78
|
+
按数据库当前时间严格判断 `当前时间 < 截止时间`;事先取得 token 不能绕过
|
|
79
|
+
后续的时限或授权检查。缺失或非法事实拒绝执行。Surface 到期禁用操作,
|
|
80
|
+
应用收到冲突后刷新详情,不自动换幂等键重试。
|
|
81
|
+
|
|
82
|
+
撤回始终只允许发起人。终止允许原应用超级管理员,或当前角色并集拥有
|
|
83
|
+
所声明精确 capability 的用户;capability 必须在同一应用显式声明,不支持
|
|
84
|
+
通配符。该授权同时允许读取对应流程实例的详情及时间线,包括完成后查阅;
|
|
85
|
+
不授予审批、抄送、改派、删除、普通数据读取或管理后台权限。撤销 capability
|
|
86
|
+
后读取和终止权限都失效。撤回、终止均要求填写原因;超级管理员也遵守已声明时限。
|
|
87
|
+
|
|
88
|
+
不声明 `instanceCommands` 时沿用既有行为;只为终止授权时可以省略其
|
|
89
|
+
`beforeFact`。声明策略的交付包自动要求平台能力
|
|
90
|
+
`workflow.instance-cancellation-policy`,旧平台无法激活该应用版本。
|
|
91
|
+
已经固定该策略的实例存在期间,平台回滚也必须保留策略执行能力。
|
|
92
|
+
发布新 definition 不会改写旧实例固定的 definition 版本,因此不会给旧实例
|
|
93
|
+
补上截止时间或业务管理员终止授权。升级前应盘点存量实例,按各自原定义完成
|
|
94
|
+
或由原有授权主体处置;不要通过重发事件或改写事实迁移策略。已使用新策略的
|
|
95
|
+
实例在截止后及终态仍允许当前被授权的业务管理员查阅,撤销其 capability
|
|
96
|
+
也会撤销这些存量实例的详情读取权限。
|
|
97
|
+
|
|
40
98
|
## 事实和消息投影
|
|
41
99
|
|
|
42
100
|
Workflow 在同一 PostgreSQL 事务中提交状态、fact 和 outbox。每个实例使用严格单调的 `instanceSequence`,每位审批人拥有独立 participant 生命周期。
|