1. 工作流基础概念:工作流定义、BPMN2.0标准、审批流核心要素
在深入审批工作流优化之前,必须建立对工作流基础概念的共识。本章将围绕工作流的本质定义、BPMN 2.0 国际标准的核心要素,以及审批流中不可或缺的节点、连线和网关展开讲解。
1.1 工作流定义与核心特征
工作流(Workflow)是指一系列相互关联的任务或活动,按照预定义的规则和顺序自动流转,以实现特定的业务目标。在审批场景中,工作流将“人、事、规则、时间”四个维度串联起来,确保每一步操作都有据可查、有迹可循。
| 维度 | 说明 | 审批流示例 |
|---|---|---|
| 人 | 任务的执行者、审批者、知会者 | 申请人、部门经理、财务总监 |
| 事 | 需要流转的业务数据或单据 | 采购申请单、请假单、合同审批单 |
| 规则 | 决定流转路径的条件与约束 | 金额 > 5000 需总监审批 |
| 时间 | 任务触发、超时、催办的时间节点 | 48 小时未审批自动升级 |
实践要点: 工作流设计的核心不是“画图”,而是“定义规则”。一个清晰的工作流定义应包含:触发条件、参与者、任务类型、流转规则、异常处理。
1.2 BPMN 2.0 标准概述
BPMN(Business Process Model and Notation)2.0 是 OMG 组织发布的业务流程建模国际标准。它提供了一套统一的图形符号,使得业务分析师、开发人员和业务人员能够使用同一种“语言”沟通流程设计。
BPMN 2.0 的核心元素分为四大类:
- 流对象(Flow Objects): 事件(Event)、活动(Activity)、网关(Gateway)
- 连接对象(Connecting Objects): 顺序流(Sequence Flow)、消息流(Message Flow)、关联(Association)
- 泳道(Swimlanes): 池(Pool)、道(Lane)
- 工件(Artifacts): 数据对象(Data Object)、组(Group)、注释(Annotation)
在审批工作流中,最常用的 BPMN 2.0 元素包括:
| 元素 | BPMN 符号 | 审批流中的含义 |
|---|---|---|
| 开始事件 | 圆圈(单细线) | 流程启动,如“提交申请” |
| 用户任务 | 圆角矩形(带人形图标) | 需要人工审批的节点 |
| 排他网关 | 菱形(内部 X) | 条件分支,如“金额 > 5000” |
| 并行网关 | 菱形(内部 +) | 多人同时会签 |
| 结束事件 | 圆圈(单粗线) | 流程终结,如“审批通过/驳回” |
为什么选择 BPMN 2.0? 它不仅是图形标准,还定义了流程的 XML 序列化格式(.bpmn 文件),可以直接被 Activiti、Camunda、Flowable 等流程引擎解析执行。这意味着“设计即开发”,减少从业务需求到技术实现的翻译损耗。
1.3 审批流核心要素:节点、连线、网关
一个完整的审批工作流由三个基本要素构成:节点(Node)、连线(Sequence Flow) 和 网关(Gateway)。理解这三者的关系是配置任何审批流程的前提。
1.3.1 节点(Node)
节点是流程中的“停靠点”,代表一个需要执行的动作或等待状态。在审批流中,节点主要分为:
- 任务节点: 需要人工参与的操作,如“部门经理审批”、“财务复核”。
- 事件节点: 流程的启动(开始)和结束(结束),以及中间发生的定时器、消息等。
- 子流程节点: 嵌套的独立流程,如“采购审批”内部嵌套“预算校验子流程”。
1.3.2 连线(Sequence Flow)
连线是节点之间的“路径”,定义了流程的流转方向。每条连线可以附带条件表达式,只有条件满足时流程才会沿该连线流转。例如:
// 连线条件示例(使用 Spring EL 表达式)
${amount > 5000} → 流向“总监审批”
${amount <= 5000} → 流向“经理审批”
1.3.3 网关(Gateway)
网关是流程的“岔路口”,用于控制流程的分支与合并。审批流中最常用的网关类型:
| 网关类型 | BPMN 符号 | 行为描述 | 审批场景示例 |
|---|---|---|---|
| 排他网关 | 菱形 + X | 仅选择一条满足条件的路径执行 | 请假天数 ≤ 3 天 → 经理审批;> 3 天 → 总监审批 |
| 并行网关 | 菱形 + + | 所有路径同时执行,等待所有分支完成后再合并 | 合同审批需要法务部 + 财务部同时会签 |
| 包容网关 | 菱形 + O | 选择所有满足条件的路径执行(可多选) | 金额 > 10000 且涉及海外业务 → 同时触发风控和合规审批 |
常见误区: 排他网关与并行网关不能混用。排他网关的分支条件必须互斥(不能同时为 true),否则流程引擎会抛出异常。并行网关的分支不应附带条件,否则会破坏“并行”语义。
1.4 核心要素的配置原则
在实际配置审批工作流时,需要遵循以下原则:
- 节点命名规范: 使用“角色 + 动作”格式,如“部门经理审批”、“财务付款”,避免模糊命名如“节点1”、“审批1”。
- 连线条件互斥: 排他网关的所有出口连线条件必须覆盖所有可能情况,且互不重叠。建议最后加一条“默认连线”作为兜底。
- 网关配对使用: 并行网关的分支与合并必须成对出现,否则会导致流程挂起或死锁。
- 最小化网关层级: 避免嵌套超过 3 层的网关,否则流程的可读性和维护性会急剧下降。
配置检查清单:
✅ 每个节点都有明确的审批人/候选组配置
✅ 每条连线都有条件表达式(或标记为默认)
✅ 排他网关的分支条件覆盖所有输入情况
✅ 并行网关的合并节点等待所有分支完成
✅ 流程图中没有“断头路”(未连接结束事件的节点)
✅ 每个节点都有明确的审批人/候选组配置
✅ 每条连线都有条件表达式(或标记为默认)
✅ 排他网关的分支条件覆盖所有输入情况
✅ 并行网关的合并节点等待所有分支完成
✅ 流程图中没有“断头路”(未连接结束事件的节点)