1. 审批流基础概念:工作流、BPMN 2.0 与核心要素

各位同学好,我是老赵。做企业系统架构十几年了,今天咱们来聊聊审批流。说实话,很多刚入行的朋友一听到「工作流」「BPMN」就觉得头大,觉得这是高大上的东西。其实没那么玄乎,说白了,它就是一套「事情该怎么走」的规则。

我刚开始带项目那会儿,也踩过不少坑。有一次给一家制造企业做OA系统,客户说「我们要一个简单的请假流程」,结果一调研,光请假就分了年假、病假、事假、调休,每种假期的审批链还不一样,部门经理、HR、分管副总、总经理……层层嵌套。那时候我才意识到,没有一套标准化的建模方法,光靠口头描述和Excel画图,根本搞不定。

所以,这一章我们先打好地基。把工作流是什么、BPMN 2.0 这个行业标准长什么样、审批流里最核心的三个零件——节点、连线、网关——彻底讲透。

1.1 什么是工作流?

工作流(Workflow),你可以把它理解成「业务流程的自动化」。举个例子:你提交一份报销单,它先到部门主管那,主管批了再到财务,财务审核完打款。这一连串的「谁做什么、做完给谁」就是工作流。

我个人习惯把工作流拆成三个层面来看:

  • 流程定义:画出来的那张图,规定了步骤和顺序。
  • 流程实例:某一次实际跑起来的流程。比如张三今天请了一天假,这就是一个实例。
  • 任务:流程中某个节点上具体要干的事。比如「李四审批张三的请假单」就是一个任务。

核心观点:工作流不是软件,是一种思想。它的目标是「把正确的事情,在正确的时间,交给正确的人去做」。BPMN 2.0 只是实现这种思想的图形化语言。

你想想看,如果没有工作流,企业里会是什么样?全靠邮件、、口头传达。审批到哪了?不知道。卡在谁手里了?得挨个问。效率低不说,还容易扯皮。工作流就是把这些「隐性流程」显性化、标准化、自动化。

1.2 BPMN 2.0 标准介绍

BPMN 全称是 Business Process Model and Notation,业务流程模型与符号。2.0 是目前最主流的版本,2011 年就发布了,到现在十几年了,江湖地位很稳。

为什么要有这个标准?我举个例子你就明白了。以前大家画流程图,A公司用矩形表示「任务」,B公司用圆角矩形,C公司用菱形。开会一碰,鸡同鸭讲。BPMN 2.0 就是统一了这些符号——什么形状代表什么含义,箭头怎么画,网关长什么样,全球通用。

我记得第一次接触 BPMN 2.0 是在一个跨国项目里,德国团队、印度团队、中国团队一起做流程设计。如果没有统一标准,光沟通成本就能把项目拖垮。BPMN 2.0 的图一摆,大家都不用废话,直接看符号就知道意思。

BPMN 2.0 的核心元素可以分为四大类:

类别 说明 常见符号
流对象 流程中的核心元素,描述「做什么」和「怎么走」 事件、活动、网关
数据 流程中产生的或需要的数据 数据对象、数据存储、消息
连接对象 把流对象串起来的线 顺序流、消息流、关联
泳道 划分职责,谁负责哪一块 池、道

咱们这门课主要关注审批流场景,所以重点会放在活动(任务)、网关和顺序流上。事件和数据我们也会涉及,但不会像专业流程引擎那样深挖。

小提示:BPMN 2.0 的规范文档有 500 多页,你不需要全背下来。实际项目中常用的符号不超过 20 个。把核心的掌握住,剩下的遇到了再查。

1.3 审批流核心要素:节点、连线、网关

好,接下来是本章的重头戏。审批流虽然看起来花样繁多,但拆开来看,核心零件就三个:节点、连线、网关。就像盖房子,节点是砖,连线是水泥,网关是决定往哪砌的拐点。

1.3.1 节点(Node / Activity)

节点就是流程中「做事」的地方。在审批流里,最常见的节点类型有:

  • 用户任务(User Task):需要人来操作,比如「经理审批」「财务打款」。这是审批流里出现频率最高的节点。
  • 服务任务(Service Task):系统自动执行,比如「发送通知邮件」「更新库存」。不需要人参与。
  • 开始/结束事件(Start/End Event):流程的起点和终点。一个流程有且只有一个开始事件,但可以有多个结束事件。

我曾经遇到过一个坑:客户把所有节点都设计成用户任务,连「发送短信提醒」这种纯系统操作也要人工点一下。结果审批员每天光点「发送通知」就点到手软。后来我建议把这类操作改成服务任务,系统自动触发,效率直接翻倍。

1.3.2 连线(Sequence Flow)

连线就是箭头,表示节点之间的流转方向。它解决的是「做完这一步,下一步去哪」的问题。

连线本身很简单,就是一个带箭头的实线。但要注意两点:

  • 条件流:连线上可以加条件表达式,比如「金额 > 5000 走这条线,否则走那条」。条件流通常用一个小菱形标记在连线上。
  • 默认流:当所有条件都不满足时,走默认流。这个在排他网关里特别常用。

注意:连线不能形成死循环,也不能出现「断头路」(有节点没有出去的线,除非是结束事件)。很多初学者画图时容易漏掉结束事件,导致流程引擎报错。

1.3.3 网关(Gateway)

网关是审批流的「大脑」,负责做决策、分流、合并。BPMN 2.0 定义了多种网关,审批流里最常用的是这三种:

网关类型 图标 作用 审批流典型场景
排他网关 菱形内打叉 多选一,只有一个分支会被激活 请假天数 ≤3 天走主管审批,>3 天走经理审批
并行网关 菱形内加号 所有分支同时执行,不等待 采购申请同时发财务审核和法务审核
包容网关 菱形内圆圈 满足条件的分支都执行,类似「或」逻辑 报销金额 > 5000 走财务审核,涉及项目经费走项目经理审核,两者可同时触发

嗯,这里要注意:很多新手分不清排他网关和包容网关。我教你一个记忆方法——排他网关是「只走一条路」,像单选题;包容网关是「符合条件的都走」,像多选题。并行网关最简单,就是「所有路都走」,像全选题。

1.4 一张图看懂审批流核心结构

说了这么多,不如直接看一张图。下面我用 SVG 画了一个典型的审批流结构,包含了我们刚才讲的所有核心要素。

审批流核心结构示意图(BPMN 2.0 风格) 开始 提交申请 ✕ 主管审批 经理审批 + 通知财务 更新系统 结束 金额≤5000 金额>5000 图例 开始事件 用户任务 排他网关 并行网关 服务任务 结束事件 顺序流(连线) 带箭头连线

这张图展示了一个典型的费用报销审批流程。从「提交申请」开始,经过排他网关判断金额大小,分流到主管或经理审批,然后通过并行网关同时触发「通知财务」和「更新系统」两个服务任务,最后结束。你看,节点、连线、网关,三个要素就把整个流程说清楚了。

1.5 避坑指南:我踩过的三个坑

最后,分享几个我早年做审批流时踩过的坑,希望能帮你少走弯路。

坑一:网关成对使用

我曾经在一个项目里,用了并行网关分流,但忘记在合并时也放一个并行网关。结果流程跑起来后,分支任务各自为政,流程实例永远结束不了。记住:有分必有合。排他网关分流后可以用排他网关或直接汇聚,但并行网关分流后必须用并行网关合并。

坑二:条件表达式写错

有一次客户说「金额大于1000走经理审批」,我写成了 amount >= 1000。结果刚好1000块的单子走了主管审批,客户投诉说流程不对。后来我养成了习惯:条件边界一定要和业务确认清楚,是「大于」还是「大于等于」,差一点都不行。

坑三:忽略默认流

排他网关如果没有设置默认流,当所有条件都不满足时,流程会卡住。我见过一个生产环境的事故,就是因为新增了一个审批类型,但网关条件没覆盖到,导致几百个工单卡在网关节点上。所以,排他网关一定要配默认流,哪怕它指向一个「异常处理」节点也好。