审批流生命周期:流程设计、流程部署、流程实例化、流程执行、流程归档
审批工作流从创建到完成,遵循一个清晰的生命周期。理解这五个阶段,是配置变更记录与权限的基础。每个阶段都有其特定的任务、参与者和数据状态。
生命周期五阶段总览
| 阶段 | 核心活动 | 主要参与者 | 数据状态 |
|---|---|---|---|
| 流程设计 | 绘制流程图、定义节点、配置表单与规则 | 流程分析师、企业架构师 | 草稿 / 未发布 |
| 流程部署 | 发布设计成果到运行时引擎、版本管理 | DevOps 工程师、系统管理员 | 已激活 / 可调用 |
| 流程实例化 | 根据业务事件创建具体审批任务 | 业务用户、上游系统 | 运行中 / 待处理 |
| 流程执行 | 任务流转、审批操作、条件判断、变更记录写入 | 审批人、经办人 | 运行中 / 已处理 |
| 流程归档 | 实例完成、数据持久化、审计日志封存 | 系统自动触发 | 已完成 / 只读 |
阶段一:流程设计
设计阶段是生命周期的起点。在此阶段,架构师使用 BPMN 2.0 标准或低代码工具,定义审批流的拓扑结构。关键产出物包括:
- 流程图:包含开始事件、用户任务、排他网关、并行网关、结束事件。
- 表单定义:每个审批节点需要填写或展示的字段。
- 权限矩阵:哪些角色可以发起、审批、驳回或撤回。
- 变更记录策略:哪些字段的变化需要被记录,记录粒度(全量/增量)。
设计原则:在设计阶段就为每个用户任务绑定“变更记录监听器”,可以避免后期为流程实例追加审计逻辑的麻烦。推荐使用“字段级别”的变更追踪,而非“表单级别”。
阶段二:流程部署
部署是将设计产物(BPMN 文件、表单 JSON、脚本代码)发布到流程引擎的过程。现代流程引擎(如 Camunda、Flowable、Activiti)支持多版本并行部署。
// 示例:使用 Camunda REST API 部署流程定义
POST /engine-rest/deployment/create
Content-Type: multipart/form-data
--boundary
Content-Disposition: form-data; name="deployment-name"
审批流程_v2.1
--boundary
Content-Disposition: form-data; name="deploy-changed-only"
true
--boundary
Content-Disposition: form-data; name="data"; filename="approval.bpmn"
Content-Type: application/xml
[ BPMN XML 内容 ]
--boundary--
部署时需注意:
- 版本隔离:新部署的版本不应影响正在运行的旧版本实例。
- 权限同步:部署脚本应自动将流程定义中的角色映射到组织架构。
- 回滚策略:保留至少最近 3 个可回滚的部署版本。
阶段三:流程实例化
当业务条件满足时(如用户提交申请、系统检测到异常事件),流程引擎创建一个新的流程实例。实例化过程会:
- 根据流程定义复制一份运行时数据。
- 初始化全局变量(如申请人、申请金额、部门)。
- 创建第一个待办任务,并写入初始变更记录:“流程实例已创建”。
- 触发权限校验:当前用户是否有权发起该流程。
实例化与变更记录:实例化时刻是变更记录的“基线快照”。建议在此阶段记录所有业务字段的初始值,便于后续对比每次审批操作产生的增量变化。
阶段四:流程执行
执行阶段是生命周期中最活跃的部分。任务在用户之间流转,每个操作都可能触发权限检查和变更记录写入。
典型的执行路径包含以下操作:
- 审批通过:更新业务状态,写入“字段 X 由 A 变更为 B”。
- 驳回:流程回退到上一节点,记录驳回原因。
- 加签/转办:动态调整审批人,记录权限变更。
- 条件分支:根据变量值选择不同路径,记录决策依据。
阶段五:流程归档
当流程实例到达结束事件,或被人为终止时,进入归档阶段。归档操作包括:
- 数据持久化:将运行时变量、任务历史、变更记录写入长期存储(如历史表、数据仓库)。
- 权限回收:撤销所有与该实例相关的待办任务权限。
- 审计封存:变更记录表添加“已归档”标记,禁止任何修改操作。
- 资源清理:释放流程引擎中的运行时缓存。
归档陷阱:不要在归档阶段才去补录变更记录。所有变更记录必须在执行阶段实时写入。归档阶段只做“封存”和“转储”,不做“生成”。否则会导致审计数据缺失或时间戳错乱。
生命周期与权限配置的映射关系
| 生命周期阶段 | 权限控制要点 | 变更记录关注点 |
|---|---|---|
| 流程设计 | 谁可以编辑流程定义 | 版本变更历史 |
| 流程部署 | 谁可以发布新版本 | 部署时间、部署人、版本号 |
| 流程实例化 | 谁可以发起流程 | 初始字段快照 |
| 流程执行 | 谁可以审批、驳回、加签 | 字段级增量变更 |
| 流程归档 | 谁可以查询历史数据 | 只读封存,不可篡改 |