目录
四、事件
1、事件分类
事件分类方式
1)按在流程中的处理阶段分类
- 开始阶段(Start):使用单线圈包含事件图标
- 中间阶段(Intermediate):使用双线圈包含事件图标
- 结束阶段(End):使用粗线圈包含事件图标
2)按处理方式分类
- 捕获事件(Catching events):使用空心事件图标
- 抛出事件(Throwing events):使用实心事件图标
3)按是否放置在活动边界上分类
- 非活动边界上的事件(non-Boundary)
- 活动边界上的事件(Boundary)
都是中间阶段的事件,都用双线圈包含事件图标
4)按中断分类
- 不可中断事件(non-interrupted):使用虚线圈包含事件图标
- 可中断事件(interrupted):使用实线圈包含事件图标
以下是所有事件按不同分类使用时,应该使用的图标的汇总:
2、处理流程
活动边界上与中断事件相关的处理流程
1)可中断事件(interrupted):双实线圈
流程中的token行为:
- 当token移动到task1时,task1开始执行
- 当task1正在处理中,若event1发生,task1立即取消,token会移动到task3
- 当task1正在处理中,若event1没发生,task1继续处理,token会移动到task2
- 若event1在task1处理完毕后发生,则忽略
2)不可中断事件(non-interrupted):双虚线圈
流程中的token行为:
- 当token移动到task1时,task1开始执行
- 当task1正在处理中,若event1发生,token被复制,task1继续处理,token会移动到task2,被复制的token会移动到task3;若在task1处理中时,event1发生多次,则token被复制多次,被复制的token会移动到task3
- 当task1正在处理中,若event1没发生,task1继续处理,token会移动到task2
- 若event1在task1处理完毕后发生,则忽略
3、事件介绍
3.1 消息(Message)
消息事件具有以下特点:
- 消息事件可以出现在流程的任何位置
- 抛出消息事件可以用发送消息任务替代,它们的不同点在于,发送消息任务还可以挂载其它边界事件
- 接收消息事件可以用接收消息任务替代,它们的不同点在于,接收消息任务还可以挂载其它边界事件
3.2 定时(Timer)
定时事件可用作开始事件、中间事件、边界事件,同时作为边界事件支持中断和非中断。
3.3 条件(Conditional)
条件事件是一种等待事件,只有当变量满足条件时才会触发。
需要在信号事件中定义判断条件。
信号事件除以下位置外都可放置:
- 结束事件
- 抛出事件
3.4 连接(Link)
连接事件是一种特殊的事件。用于将截断的路径连接起来。
同一个连接事件可以在不同的路径上抛出,但这个连接事件作为捕获事件时必须唯一。
3.5 信号(Signal)
信号事件是全局范围的,它通过广播的形式通知所有关注此事件的流程。
信号事件使用前需要专门定义。
信号事件可以出现在任意位置。
3.6 错误(Error)
错误事件只会出现的3个位置:
- 活动边界上(任务、子流程)
- 流程结束处
- 子流程开始处
BPMN2.0中定义的错误指的是业务错误,不是技术错误。流程中使用到的错误需要专门定义。
3.7 提升(Escalation)
升级事件是用于子流程给父流程,或子流程与其平级的子流程之间传递信息的事件。
升级事件使用前需要专门定义。
升级事件只会出现在如下位置:
- 子流程中间阶段(只作抛出事件、不作捕获事件)
- 子流程开始处
- 子流程结束处
- 子流程边界上
3.8 终止(Termination)
终止事件会中止当前流程实例,并将其中包含的所有子流程实例也一起终止。
终止事件只能作为结束事件
终止事件主要用于有多个并行路径,或有多个子流程的情况,无论并行路径或子流程是否执行完成,它会将它们全部终止。
3.9 补偿(Compensation)
若补偿事件被抛出,则当前范围内的所有活动都会做补偿。
若触发补偿的活动是个子流程,则此子流程中的所有活动也会触发补偿。若这些活动又包含子流程,则这些活动的子流程中的活动也会触发补偿,如此递归执行下去。但补偿事件不会传播到子流程的范围之外。
若一个要做补偿处理的活动是个子流程,并且子流程中包含一个由补偿启动事件触发的事件子流程,则只会触发事件子流程这个活动,不会触发子流程下的其它处理补偿事件的活动。
补偿的执行顺序与活动执行的顺序正好相反。
补偿事件子流程成功执行完成后,抛出补偿事件也可以让补偿事件子流程做补偿处理。
3.10 取消(Cancel)
取消事件需要与事务子流程一起使用。
取消事件只有两种使用形式。
- 取消结束事件
- 取消边界事件
取消结束事件发生后,必须由取消边界事件捕获。
取消边界事件只有中断这一种形式,不存在非中断的形式。
取消边界事件被捕获到后,会中断所有它的范围内活动的运行实例,并且启动范围内所有边界补偿事件,只有所有的补偿处理都完成后,才会离开事务范围,并离开取消边界事件。
3.11 多重(Multiple)
多重事件包含多个具体的事件,只要其中任意一个事件被触发,则多重事件被触发,流程继续。
等同于:
3.12 并行 (Parallel)
并行事件包含多个具体的事件,只有其中所有事件都被触发,则并行事件被触发,流程继续。
参考文档
BPMN 2.0 Symbol Reference
BPMN 2.0 Symbols - A complete guide with examples. - Camunda
BPMN 2.0 Implementation Reference
BPMN 2.0 Implementation Reference | docs.camunda.org
Get started with Camunda
Getting started with Camunda Platform | docs.camunda.org
Camunda User Guide
User Guide | docs.camunda.org
Camunda Best Practices
https://camunda.com/best-practices/