Files
AIOA/docs/engineering/workflow-capabilities.md
T
2026-07-19 07:49:37 +08:00

3.9 KiB

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_APPROVEDLEAVE_APPROVAL_TASK_REJECTED 时间线事件。
  • 只有整个流程实例结束后,业务状态才变为 APPROVEDREJECTED
  • 申请人撤回时,业务状态和 Flowable 运行实例在同一事务中结束。
  • 每个任务动作均重新校验实际 assignee、租户、版本和幂等键。
  • 申请人不得审批自己的申请。

建模约束

  • BPMN 只保存 tenantIdbusinessIdapplicantId、审批人标识和路由所需的少量变量。
  • 表单内容、附件和权威状态不能长期放入流程变量。
  • 并行网关必须成对建模,避免产生无法汇聚的执行路径。
  • 会签必须明确完成条件,例如全部通过、超过半数或任一通过。
  • 驳回路径必须明确是结束流程、退回上一步还是返回申请人修改。
  • 流程发布前必须覆盖通过、驳回、超时、撤回和无审批人等路径测试。

当前已部署流程

员工提交
  → 部门主管审批
      ├─ 驳回 → REJECTED
      └─ 同意
          ├─ 时长 ≤ 24 小时 → APPROVED
          └─ 时长 > 24 小时
              ├─ 非年假 → OA 管理员串行复核
              └─ 年假 → OA 与 HR 并行复核
                         ├─ 全部同意 → APPROVED
                         └─ 任一驳回 → 终止其他分支并 REJECTED

该流程已经验证条件网关、多级串行、并行拆分、并行汇聚和终止事件。后端状态同步按通用多任务语义设计,不会在第一个串行或并行任务完成时提前结束申请。

可视化流程模板

Web 管理端提供受约束的流程设计器,可生成并部署以下 Flowable BPMN 模板:

  • 串行审批:审批节点依次执行,任一节点驳回即终止。
  • 并行会签:多个审批节点同时执行,全部通过后汇聚,任一驳回即终止其他分支。
  • 条件审批:首个审批通过后按请假时长阈值决定直接结束或增加复核节点。

流程 Key、节点数量、审批人变量、条件变量和阈值均由后端校验。管理端不能上传任意 BPMN XML、任意表达式或任意审批人脚本。部署成功后,新定义立即出现在流程绑定工作台中。

审批规则目录由后端提供:部门主管通过发起人的有效主任职与部门内 manager 岗位解析;OA、HR 分别通过当前租户的 oa_adminhr_reviewer 有效角色解析。所有规则只选择有效任职和正常账号;无人匹配时拒绝提交。并行会签和条件复核强制使用不同规则,避免同一人承担多个职责。

自动化执行测试使用独立内存 Flowable 引擎验证:短条件路径直接结束、长条件路径创建复核任务、并行会签等待全部审批、任一并行节点驳回时终止其余任务。