文章目录
- 定义
- [Flow Objects(流程核心元素)](#Flow Objects(流程核心元素))
-
- [Event 必须分三类:](#Event 必须分三类:)
- [Activity(活动):Activity 就是流程中"正在干活的那一段时间"干的事。](#Activity(活动):Activity 就是流程中“正在干活的那一段时间”干的事。)
- Gateway(网关)
-
- [Exclusive Gateway(排他网关,XOR)](#Exclusive Gateway(排他网关,XOR))
- [Parallel Gateway(并行网关,AND)](#Parallel Gateway(并行网关,AND))
- [Event-based Gateway(事件网关)](#Event-based Gateway(事件网关))
- 进阶
-
- [边界事件(Boundary Event)](#边界事件(Boundary Event))
定义
BPMN的英文全称是 Business Process Model and Notation(业务流程模型与符号)
Process 是 BPMN 中对"业务流程"的正式定义,它由一组 Flow Elements(事件、活动、网关等)以及它们之间的 Sequence Flow 组成
bash
BPMN
├─ Flow Objects(流程核心元素)
│ ├─ Events(事件)
│ │ → 表示流程的开始、过程中的触发点、以及结束
│ ├─ Activities(活动)
│ │ → 实际要做的事情,比如任务或子流程
│ └─ Gateways(网关)
│ → 控制流程怎么分支、合并(判断、并行等)
│
├─ Connecting Objects(连接关系)
│ ├─ Sequence Flow
│ │ → 箭头,表示流程的执行顺序(先做什么再做什么)
│ ├─ Message Flow
│ │ → 不同参与者之间发送消息(只能跨 Pool)
│ └─ Association
│ → 仅用于"说明/关联",不影响流程执行
│
├─ Swimlanes(职责划分)
│ ├─ Pool
│ │ → 一个参与方/系统/组织,代表一个独立流程
│ └─ Lane
│ → Pool 内的职责划分(角色、部门)
│
└─ Artifacts(补充信息)
├─ Data Object
│ → 流程中使用或产生的数据
├─ Group
│ → 逻辑分组,仅用于阅读理解
└─ Annotation
→ 文字说明,给人看的,不影响执行
Flow Objects(流程核心元素)
Flow Objects 一共 三类:
Event(事件)
Activity(活动)
Gateway(网关)
Event 必须分三类:
Start Event(开始事件): 流程从这里开始

Intermediate Event(中间事件): 流程进行中发生的事情

End Event(结束事件): 流程在这里结束,整个流程结束,子流程也会结束

Activity(活动):Activity 就是流程中"正在干活的那一段时间"干的事。
把流程想成一天的时间线:
Event:某个"瞬间"
上班打卡
下班打卡
Activity:两次打卡之间你在干的事
写代码
开会
审批单子
Task:
任务是一种原子活动,在流程模型中不能再被分解为更细的层级
四种最常见 Task:
User Task(用户任务):表示 需要由人来完成的工作,流程引擎负责分配与等待,但不执行实际工作,一定涉及人工,流程会 等待用户完成

Service Task(服务任务): 表示 由某种自动化服务执行的工作,不涉及人工交互,自动执行

Script Task(脚本任务):Script Task 表示 由流程引擎执行的一段脚本逻辑。

Receive Task(接收任务):Receive Task 是一种 等待接收某条消息的任务,在消息到达之前,流程会被阻塞。这是唯一一个"会等待"的 Task

所以:Event 描述"发生了什么",Task 描述"流程做了什么"。
Gateway(网关)
网关不表示任何工作的执行。
Gateway 只做一件事:用于控制顺序流分支与汇聚的节点。
Sequence Flow: 通过条件表达式,限制是否可走
Exclusive Gateway(排他网关,XOR)

或

流程到达排他网关后,只会选择一条满足条件的 Sequence Flow 继续执行
Parallel Gateway(并行网关,AND)

并行网关(Parallel Gateway)就是:该一起干的事,一起干;该等大家干完,再往下走。
Event-based Gateway(事件网关)

事件网关表示一种分支点,流程走向由"发生的事件"决定,而不是由条件表达式决定。
事件网关表示一种分支点,流程走向由"发生的事件"决定,而不是由条件表达式决定。
多个事件同时被"监听",谁先发生,流程就沿着谁继续,其他分支立即失效。
进阶
边界事件(Boundary Event)
边界事件是一种中间事件,附着在某个活动(Activity)的边界上。
分类:
中断型边界事件(Interrupting):触发后:立刻打断 Activity,后续流程不在执行,顺着边界事件的 Sequence Flow 往下走
非中断型边界事件(Non-interrupting):触发后:Activity 继续执行只是"额外走一条路",图形特征:
虚线圆
例子:
B中status=0则直接结束该流程,不走后续逻辑,图形特征:实线圆
