refactor: support multi-task Flowable approval semantics
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# Flowable 复杂流程能力与业务边界
|
||||
|
||||
## 支持能力
|
||||
|
||||
Flowable 可以承载:
|
||||
|
||||
- 串行审批:多个用户任务依次执行。
|
||||
- 并行审批:Parallel Gateway 同时创建多个任务,全部完成后汇聚。
|
||||
- 条件并行:Inclusive Gateway 根据条件创建一组分支。
|
||||
- 条件路由:Exclusive Gateway 根据金额、类型、风险等选择唯一路径。
|
||||
- 会签和或签:并行或串行 Multi-instance User Task,使用完成条件控制通过比例。
|
||||
- 子流程和复用流程:Embedded Subprocess 与 Call Activity。
|
||||
- 超时、提醒和升级:Timer Boundary Event、定时作业和升级路径。
|
||||
- 决策表:DMN 管理金额、岗位、地区和风险等审批规则。
|
||||
- 撤回、终止和人工干预:运行时实例管理与完整历史记录。
|
||||
- 流程版本:新实例使用新定义,运行中的实例继续引用原版本。
|
||||
|
||||
## AIOA 状态同步规则
|
||||
|
||||
Flowable 负责任务和流程路径,`business.leave_request` 仍是请假业务的权威数据。
|
||||
|
||||
- 用户完成中间审批任务时,申请保持 `PENDING`。
|
||||
- 中间任务只写 `LEAVE_APPROVAL_TASK_APPROVED` 或 `LEAVE_APPROVAL_TASK_REJECTED` 时间线事件。
|
||||
- 只有整个流程实例结束后,业务状态才变为 `APPROVED` 或 `REJECTED`。
|
||||
- 申请人撤回时,业务状态和 Flowable 运行实例在同一事务中结束。
|
||||
- 每个任务动作均重新校验实际 assignee、租户、版本和幂等键。
|
||||
- 申请人不得审批自己的申请。
|
||||
|
||||
## 建模约束
|
||||
|
||||
- BPMN 只保存 `tenantId`、`businessId`、`applicantId`、审批人标识和路由所需的少量变量。
|
||||
- 表单内容、附件和权威状态不能长期放入流程变量。
|
||||
- 并行网关必须成对建模,避免产生无法汇聚的执行路径。
|
||||
- 会签必须明确完成条件,例如全部通过、超过半数或任一通过。
|
||||
- 驳回路径必须明确是结束流程、退回上一步还是返回申请人修改。
|
||||
- 流程发布前必须覆盖通过、驳回、超时、撤回和无审批人等路径测试。
|
||||
|
||||
当前仓库部署的是单主管审批定义,但后端状态同步已经按多任务流程设计,不会在第一个串行或并行任务完成时提前结束申请。
|
||||
Reference in New Issue
Block a user