主题
流程引擎底座 需求分析文档
文档版本:1.01 | 最近核对日期:2026-11-04
平台审批流统一由 Warm-Flow 引擎底座承载:流程定义、审批工作台、待办/已办/抄送、消息通知和业务集成事件都在底座内实现,业务模块只保存单据与流程实例的关联、展示业务状态,不再各自复制一套"我的任务"。本文件维护该底座的业务范围、规则和验收依据;实现方案见概要设计,页面与接口细节见详细设计。
文档控制
| 项目 | 内容 |
|---|---|
| 模块名称 | 流程引擎底座 |
| 实现范围说明 | 已实现:流程分类管理、流程定义管理(设计器、导入/导出/复制/发布/挂起/失效)、SpEL 表达式管理、审批工作台(我的待办/我的已办/我的发起/我的抄送/所有待办/所有已办)、标准办理动作(通过/退回/终止/委派/转办/加签/减签)、节点按钮权限与扩展配置、动态办理人解析、抄送与消息通知(站内信/邮箱/短信)、流程实例管理与流程图查看、业务集成契约(启动/办理/删除/查询/事件监听)。业务模块的流程 JSON 编排遵循流程图编排规范,不在本模块范围内 |
| 未实现/待确认 | 待确认项逐条标注待核对;电子签名图片由系统设置个人中心维护,审批时由底座在办理记录中引用 |
背景
平台包含招投标、规划、勘察设计、工程手续、工程变更、安质环、投资、运营对接等多个需要多级审批的业务域。若各业务模块分别实现待办列表、办理动作和消息提醒,会出现重复建设、状态口径不一致、审批历史无法统一追溯的问题。平台采用 Warm-Flow 作为统一流程引擎(warm-flow.enabled=true 时启用),并以此模块对引擎做平台化封装,形成所有业务模块共用的流程引擎底座。
目标
- 全平台共用一套流程分类、流程定义和版本管理入口,流程定义支持设计器维护与 JSON 导入/导出,版本与发布状态可控。
- 用户在统一的审批工作台查看与办理全部业务的待办、已办、发起和抄送,不必进入各业务台账找审批入口。
- 办理动作、按钮权限、办理人选择、抄送与消息通知按节点配置统一生效,业务模块不重复实现。
- 业务模块通过稳定契约(
digital-construction-api中的com.bokun.workflow.api)启动流程、办理任务、查询状态并接收流程事件,单据与流程实例通过businessId关联。
范围
纳入范围
- 流程分类管理:树形分类维护(新增、修改、删除、导出),按"先分类、后定义"的层级组织流程定义。
- 流程定义管理:流程定义列表、新增、修改、删除、复制、发布、取消发布、导入、导出、激活/挂起、流程 XML/JSON 查看与设计器编辑;设计器支持 CLASSICS 经典模型。
- SpEL 表达式管理:网关条件等场景使用的 SpEL 表达式集中维护,支持新增、修改、删除、查询与预览。
- 审批工作台:我的待办、我的已办、我的发起、我的抄送、所有待办、所有已办六个任务视图;任务详情、流程进度、审批时间线与附件查看。
- 办理动作:通过、退回(含画线指定驳回与退回发起人)、终止、委派、转办、加签、减签、修改办理人、催办;动作可用性受节点按钮权限约束。
- 节点扩展配置:节点级抄送设置、扩展流程变量与按钮权限(弹窗选人、委托、转办、抄送、退回、加签、减签、终止、附件上传)。
- 动态办理人解析:办理/退回时指定下一办理人、动态变量
${nextHandlerId}、申请节点自动回到发起人。 - 消息与抄送:按消息类型(站内信/邮箱/短信)发送待办提醒与结果通知(已完成/已退回通知发起人),抄送记录落库供"我的抄送"查看。
- 流程实例管理:运行中/已完成实例查询、按业务或实例删除、取消申请、激活/挂起、作废、变量查询与更新、当前办理人查询、历史任务查询。
- 业务集成契约:
WorkflowService门面(启动、办理、启动即办理、删除实例、状态/变量/版本/节点查询、当前任务办理人查询)与ProcessEvent、ProcessTaskEvent、ProcessDeleteEvent事件发布,业务模块通过监听事件落业务状态。 - 流程图查看:实例图与进度查看,节点提示同时读取已办理历史任务和当前运行任务。
不纳入范围
- 各业务流程的 JSON 编排与业务校验规则:归各业务模块资料,编排规范见流程图编排规范。
- 电子签名图片的上传与合规校验:归系统设置个人中心,底座仅在审批时间线引用。
- 站内信、邮箱、短信通道自身的实现:由系统模块提供,底座只按配置调用。
角色与场景
| 角色 | 典型场景 |
|---|---|
| 流程管理员 | 维护流程分类树;在流程定义页新增定义、导入 JSON、发布版本;维护 SpEL 表达式;处理挂起/失效定义 |
| 业务办理人 | 在"我的待办"查看任务、打开业务表单办理(通过/退回/终止/转办等);查看"我的已办"和"我的抄送" |
| 业务发起人 | 从业务台账或"我的发起"跟踪进度;收到流程完成/退回结果通知;必要时取消申请 |
| 监督/管理岗 | 在"所有待办/所有已办"查看全平台任务分布,必要时修改办理人或催办 |
| 业务模块(系统) | 调用 WorkflowService 启动流程、办理任务、查询状态;监听 ProcessEvent/ProcessTaskEvent 更新业务单据状态 |
业务规则
流程定义与分类
- 流程定义必须归属到流程分类;分类与定义命名遵循流程菜单与分类命名:分类按页面层级建树,定义名称与对应页面叶子名称一致。
- 流程定义按
flowCode + version管理版本;同一flowCode多版本并存,发布后供新实例使用,在途实例继续使用启动时的版本。 - 新建流程定义必须使用 CLASSICS 设计器模型;存量 MIMIC 定义按流程图编排规范区分处理,不混用锚点标准。
- 发布(
IS_PUBLISH=1)后的定义才能被新流程实例引用;取消发布、挂起(ACTIVITY_STATUS=0)的定义不接受新实例。 - 流程定义 JSON 修改与升版遵循流程图编排规范的版本保护、节点连线一致性与在途实例约束。
审批工作台与办理
- 待办、已办、发起、抄送均以流程任务/实例归属用户判定,不按业务模块台账判定;业务台账只展示业务状态。
- 办理动作默认开启除委托、终止外的全部按钮权限;只有明确保存过按钮权限配置的节点才按该配置收紧(见业务地图·工作流)。
- 加签、减签仅适用于会签或票签节点;默认开启的动作不绕过流程状态、当前办理人和节点类型校验。
- 退回不依赖图上的退回连线:办理页按传入目标节点直接跳转;线条指定为驳回且驳回目标为申请节点时,流程实例状态置为"已退回"。
- 办理或退回时可指定下一办理人:正向指定办理人变量只消费一次,驳回指定人变量保留供重复驳回使用。
- 申请节点(首个发起节点)的任务办理人自动置为流程发起人;退回申请节点的场景只发送"已退回"结果消息,不再叠加"新的待办"提醒。
- 抄送人由节点扩展配置或办理时的
flowCopyList变量指定;抄送记录独立落库,与办理人无关。 - 消息类型支持站内信、邮箱、短信(编码 1/2/3);待办消息发给新节点办理人,结果消息只发发起人。
- 催办对指定任务向当前办理人发送提醒;系统后台无用户信息的自动办理通过
ignore变量跳过办理权限校验。
业务集成
- 业务模块通过
businessId与流程实例一一关联;删除业务单据时通过WorkflowService.deleteInstance同步清理流程实例,触发ProcessDeleteEvent。 - 业务模块监听
ProcessEvent(草稿、撤销、退回、作废、终止、已完成等总体状态)与ProcessTaskEvent(新待办节点)更新业务状态,不自行解析流程定义或复制任务列表。 - 流程状态编码统一为:0 待提交、1 审批中、2 审批通过、4 终止、5 作废、6 撤销、8 已完成、9 已退回、10 失效、11 拿回(
FLOW_STATUS,与 Warm-Flow 框架一致)。 - 业务节点动态表单数据只通过显式扩展变量(如工程变更动作)进入业务事件,底座不把流程内部变量整体暴露给业务模块。
非功能需求
- 权限:管理端接口按
workflow:分类|定义|实例|spel:动作权限码鉴权(@SaCheckPermission),与菜单/按钮权限逐字一致;任务办理按任务归属与流程状态双重校验。 - 数据一致性:流程状态变更与业务事件在同一事务边界内发布;业务模块的事件处理按其自身事务约定执行。
- ID 规范:流程表主键为 Long 雪花 ID,前端保持
string | number原值传输,禁止数字化转换。 - 可配置启停:全部底座组件通过
warm-flow.enabled=true条件装配,关闭后不加载流程功能。
验收标准
以下为关键路径的"角色—操作—预期结果"验收例子:
- 流程管理员新增分类并发布流程定义后,业务模块按
flowCode启动流程成功,实例绑定发布版本。 - 办理人在"我的待办"打开任务,执行"通过"并选择下一办理人后,任务流转到下一节点,下一办理人收到待办消息,发起人无多余提醒。
- 办理人执行"退回"到发起人后,流程状态变为"已退回",发起人收到且仅收到一条退回结果消息。
- 配置了抄送的节点办理后,被抄送人能在"我的抄送"看到该任务;未配置抄送的节点不产生抄送记录。
- 按钮权限未配置的节点默认展示除委托、终止外的全部动作;保存配置后按配置展示。
- 业务模块删除单据后,对应流程实例(含运行与历史记录)被删除,"我的发起"不再出现该单据。
- 流程管理员挂起定义后,该定义不再接受新实例启动;在途实例不受影响。
业务模块侧的流程编排与具体业务校验收归各业务模块资料验证。