feat: add versioned form and process routing

This commit is contained in:
selfrelease
2026-07-18 21:26:44 +08:00
parent 24101398d8
commit 15abd8a32f
14 changed files with 319 additions and 63 deletions
+34
View File
@@ -0,0 +1,34 @@
# 表单版本与流程选择
## 发布模型
表单定义以 `tenant + formKey + version` 唯一标识,状态为 `DRAFT``PUBLISHED``RETIRED`。同一租户同一表单只能有一个已发布版本。
流程绑定将以下条件映射到 Flowable Process Definition Key
- 业务类型
- 表单 Key 和版本
- 可选业务枚举,例如请假类型
- 可选最小时长和最大时长
- 优先级
- ACTIVE / INACTIVE 状态
## 运行时选择
Flutter 只能提交业务表单数据,不能提交流程定义 ID。Kotlin 后端按当前租户和权威业务数据查询绑定:
1. 只选择 ACTIVE 绑定。
2. 业务类型必须精确匹配。
3. 枚举和时长条件必须满足。
4. 优先级高的规则优先。
5. 精确枚举或范围规则优先于通配规则。
6. 无匹配绑定时拒绝提交,不启动默认或任意流程。
流程启动后保存实际 `processDefinitionId`,运行中实例不会因之后修改绑定而切换版本。
## 安全边界
- 只有 OA 管理员拥有 `PROCESS_CONFIGURATION_MANAGE_TENANT`
- 新表单版本先进入草稿,发布前执行 Schema 结构校验。
- 绑定只能引用数据库中存在的表单版本和 Flowable 已部署流程 Key。
- 创建、发布、启停均写入审计。
+1
View File
@@ -55,6 +55,7 @@
- [x] 流程定义、版本和运行实例只读管理
- [x] Flutter 管理工具入口与权限驱动展示
- [x] 业务与推送运行指标仪表板
- [x] 表单版本发布、业务流程绑定与服务端路由选择
## Definition of Done