关键词:业务流程、BPM、工作流引擎、状态机、编排
适合读者:后端工程师、架构师、产品经理、技术负责人
一、什么是业务流程(Business Process)?
1.1 基本定义
业务流程是指为了实现某个业务目标,按照一定规则,由多个参与者(人或系统)依次或并行完成的一系列活动集合。
一句话概括:
业务流程 = 目标 + 活动 + 顺序 + 规则
例如:
电商下单 → 支付 → 发货 → 收货
请假申请 → 审批 → 通知
保险理赔 → 审核 → 赔付
1.2 业务流程的核心要素
要素 | 说明 |
|---|---|
活动(Activity) | 具体要做什么,如“支付订单” |
参与者(Participant) | 谁来执行,如用户、运营、系统 |
流转规则(Flow) | 什么时候走哪一步 |
条件(Condition) | 分支判断依据 |
数据(Data) | 流转过程中的输入输出 |
二、业务流程 vs 工作流(Workflow)
很多同学容易混淆这两个概念:
维度 | 业务流程 | 工作流 |
|---|---|---|
视角 | 业务视角 | 技术视角 |
关注点 | “为什么要这么做” | “怎么实现流转” |
抽象层级 | 高 | 低 |
示例 | 电商履约流程 | BPMN 流程引擎 |
✅工作流是实现业务流程的技术手段之一。
三、业务流程建模:用 Mermaid 表达业务
3.1 最简单的线性流程
这是一个典型的顺序流程,适合表达简单、无分支的业务。
3.2 带条件的分支流程
这里引入了:
网关(Gateway)
条件判断
并行汇聚
这是业务流程建模的核心能力。
四、工作流技术概述
4.1 什么是工作流(Workflow)
工作流 = 业务流程的自动化执行引擎
它负责:
流程定义解析
节点流转控制
状态持久化
任务分配与调度
异常处理与回滚
4.2 工作流系统的核心组件
五、常见工作流技术模型
5.1 状态机模型(State Machine)
适合强状态约束的业务,如订单、工单。
✅ 优点:
状态清晰
易维护
不易出错
❌ 缺点:
不适合复杂多分支流程
5.2 BPMN 工作流模型(推荐)
BPMN(Business Process Model and Notation)是目前行业标准。
✅ 优点:
表达能力最强
业务与技术都能看懂
可落地为引擎执行
5.3 编排(Orchestration)vs 协同(Choreography)
编排模式(集中式)
中央控制
易治理
适合复杂业务
协同模式(去中心化)
松耦合
分布式
适合微服务
六、工作流引擎的典型实现
6.1 常见引擎
类型 | 代表 |
|---|---|
Java | Activiti / Flowable / Camunda |
Go | Temporal / Cadence |
Node.js | Workflow Engine |
国产 | 宜搭、钉钉流程、飞书审批 |
6.2 一个简化的工作流执行流程
七、业务流程设计的最佳实践
✅ 推荐做法
先画流程图,再写代码
使用 BPMN 表达复杂流程
明确“谁在什么时候做什么”
状态必须可回溯
所有流转必须有日志
❌ 常见反模式
用 if-else 堆砌流程
状态分散在多个字段
流程逻辑写死在代码中
忽略异常与补偿机制
八、总结
层面 | 要点 |
|---|---|
业务 | 明确目标、角色、规则 |
建模 | 使用 Mermaid / BPMN |
技术 | 状态机 or 工作流引擎 |
架构 | 编排优于硬编码 |
一句话总结:
业务流程是“为什么”,工作流是“怎么做”,而 Mermaid 是你和团队沟通的桥梁。
如果你愿意,我可以继续为你输出:
✅ 一篇“如何用 Camunda 实现审批流程” 的实战博文
✅ 一套业务流程设计模板(含 Mermaid 示例)
✅ 面向DDD + 工作流 的高级架构文章
欢迎继续交流 👋