bpmn 的理解和元素

文章目录

  • 定义
  • [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则直接结束该流程,不走后续逻辑,图形特征:实线圆

相关推荐
考虑考虑1 小时前
JDK25模块导入声明
java·后端·java ee
_小马快跑_2 小时前
Java 的 8 大基本数据类型:为何是不可或缺的设计?
java
Re_zero5 小时前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记5 小时前
Spring Boot条件注解详解
java·spring boot
程序员清风1 天前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林5511 天前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing1 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠2 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot