审批流生命周期:流程设计、流程部署、流程实例化、流程执行、流程归档

审批工作流从创建到完成,遵循一个清晰的生命周期。理解这五个阶段,是配置变更记录与权限的基础。每个阶段都有其特定的任务、参与者和数据状态。

生命周期五阶段总览

阶段 核心活动 主要参与者 数据状态
流程设计 绘制流程图、定义节点、配置表单与规则 流程分析师、企业架构师 草稿 / 未发布
流程部署 发布设计成果到运行时引擎、版本管理 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 个可回滚的部署版本。

阶段三:流程实例化

当业务条件满足时(如用户提交申请、系统检测到异常事件),流程引擎创建一个新的流程实例。实例化过程会:

  1. 根据流程定义复制一份运行时数据。
  2. 初始化全局变量(如申请人、申请金额、部门)。
  3. 创建第一个待办任务,并写入初始变更记录:“流程实例已创建”。
  4. 触发权限校验:当前用户是否有权发起该流程。
实例化与变更记录:实例化时刻是变更记录的“基线快照”。建议在此阶段记录所有业务字段的初始值,便于后续对比每次审批操作产生的增量变化。

阶段四:流程执行

执行阶段是生命周期中最活跃的部分。任务在用户之间流转,每个操作都可能触发权限检查和变更记录写入。

典型的执行路径包含以下操作:

  • 审批通过:更新业务状态,写入“字段 X 由 A 变更为 B”。
  • 驳回:流程回退到上一节点,记录驳回原因。
  • 加签/转办:动态调整审批人,记录权限变更。
  • 条件分支:根据变量值选择不同路径,记录决策依据。
审批流执行阶段——任务流转与变更记录写入 开始 用户任务:审批 条件 通过 驳回 变更记录写入 权限校验 执行阶段关键规则 1. 每个用户任务完成前,必须执行一次变更记录写入。 2. 权限校验在任务领取和提交两个时刻分别触发。 3. 条件分支的决策变量(如金额 > 10000)应一并记录到变更日志。 4. 驳回操作会触发流程回滚,变更记录需标记为“已回滚”。

阶段五:流程归档

当流程实例到达结束事件,或被人为终止时,进入归档阶段。归档操作包括:

  • 数据持久化:将运行时变量、任务历史、变更记录写入长期存储(如历史表、数据仓库)。
  • 权限回收:撤销所有与该实例相关的待办任务权限。
  • 审计封存:变更记录表添加“已归档”标记,禁止任何修改操作。
  • 资源清理:释放流程引擎中的运行时缓存。
归档陷阱:不要在归档阶段才去补录变更记录。所有变更记录必须在执行阶段实时写入。归档阶段只做“封存”和“转储”,不做“生成”。否则会导致审计数据缺失或时间戳错乱。

生命周期与权限配置的映射关系

生命周期阶段 权限控制要点 变更记录关注点
流程设计 谁可以编辑流程定义 版本变更历史
流程部署 谁可以发布新版本 部署时间、部署人、版本号
流程实例化 谁可以发起流程 初始字段快照
流程执行 谁可以审批、驳回、加签 字段级增量变更
流程归档 谁可以查询历史数据 只读封存,不可篡改