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 等流程引擎解析执行。这意味着“设计即开发”,减少从业务需求到技术实现的翻译损耗。
BPMN 2.0 核心元素图例 BPMN 2.0 核心元素图例(审批流常用) 开始 开始事件 审批 用户任务 X 排他网关 + 并行网关 结束事件 说明:菱形内带“X”为排他网关(单选分支),带“+”为并行网关(多路并发)

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),否则流程引擎会抛出异常。并行网关的分支不应附带条件,否则会破坏“并行”语义。
审批流核心要素组合示例 审批流核心要素组合示例(节点 + 连线 + 网关) 开始 提交申请 X 金额判断 ≤ 5000 > 5000 经理审批 节点 总监审批 节点 结束 审批完成 说明:排他网关根据金额条件选择唯一路径,经理审批与总监审批节点互斥执行 连线上的条件表达式(如 ≤5000 / >5000)决定了流程的实际走向

1.4 核心要素的配置原则

在实际配置审批工作流时,需要遵循以下原则:

  1. 节点命名规范: 使用“角色 + 动作”格式,如“部门经理审批”、“财务付款”,避免模糊命名如“节点1”、“审批1”。
  2. 连线条件互斥: 排他网关的所有出口连线条件必须覆盖所有可能情况,且互不重叠。建议最后加一条“默认连线”作为兜底。
  3. 网关配对使用: 并行网关的分支与合并必须成对出现,否则会导致流程挂起或死锁。
  4. 最小化网关层级: 避免嵌套超过 3 层的网关,否则流程的可读性和维护性会急剧下降。
配置检查清单:
✅ 每个节点都有明确的审批人/候选组配置
✅ 每条连线都有条件表达式(或标记为默认)
✅ 排他网关的分支条件覆盖所有输入情况
✅ 并行网关的合并节点等待所有分支完成
✅ 流程图中没有“断头路”(未连接结束事件的节点)