1、信号边界事件
描述
一个活动边界上附加的中间捕获 信号或简称为边界信号事件捕获与参考信号定义具有相同信号名称的信号。
注意: 与其他事件(如边界错误事件)相反,边界信号事件不仅捕获从附加范围抛出的信号事件。相反,信号事件具有全局范围(广播语义),这意味着信号可以从任何地方,甚至从不同的过程实例抛出。
注意: 与其他事件(如错误事件)相反,如果捕获到信号,则不消耗信号。如果您有两个活动的信号边界事件捕获相同的信号事件,则即使这两个边界事件是不同流程实例的一部分,也会触发这两个边界事件。
图形表示法
边界信号事件被视为边界上典型的中间事件(内部有较小圆圈的圆),信号图标在里面。信号图标是白色(未填充),以指示其捕获语义。
XML表示
边界信号事件被定义为典型的边界事件:
<boundaryEvent id="boundary" attachedToRef="task" cancelActivity="true">
<signalEventDefinition signalRef="alertSignal"/>
</boundaryEvent>
2、消息边界事件
描述
在活动边界上附加的中间捕获 消息或简称为边界消息事件,捕获与引用的消息定义具有相同消息名称的消息。
图形表示法
边界消息事件可视化为边界上典型的中间事件(内部带有较小圆圈的圆),消息图标在里面。消息图标是白色(未填充),以指示其捕获语义。
请注意,边界消息事件既可以是中断(右侧)也可以是不中断(左侧)。
XML表示
边界消息事件被定义为典型的边界事件:
<boundaryEvent id="boundary" attachedToRef="task" cancelActivity="true">
<messageEventDefinition messageRef="newCustomerMessage"/>
</boundaryEvent>
3、取消边界事件
描述
当交易取消时,会触发交易子流程边界附加的中间追踪取消事件或简称边界取消事件。当取消边界事件被触发时,它首先中断当前范围内的所有活动执行。接下来,它开始对交易范围内的所有有效的补偿边界事件进行补偿。补偿是同步进行的,换句话说,边界事件在离开交易之前等待补偿完成。当补偿完成时,交易子过程留在使用从取消边界事件中流出的任何序列流。
注意:事务子流程只允许一个取消边界事件。
注意:如果事务子进程托管嵌套子进程,则仅对已成功完成的子进程触发补偿。
注意:如果在具有多实例特性的事务子进程上放置取消边界事件,如果一个实例触发取消,边界事件将取消所有实例。
图形表示法
取消边界事件被视为边界上典型的中间事件(内部有小圈的圆),里面有取消图标。取消图标是白色(未填充),以指示其捕捉的语义。
XML表示
取消边界事件被定义为典型的边界事件:
<boundaryEvent id="boundary" attachedToRef="transaction" >
<cancelEventDefinition />
</boundaryEvent>
由于取消边界事件总是中断,所以cancelActivity不需要该属性。
4、补偿边界事件
描述
附加的中间捕获补偿在活动边界或补偿边界事件简称,可用于附加补偿处理程序的活动。
补偿边界事件必须使用定向关联引用单个补偿处理程序。
补偿边界事件与其他边界事件有不同的激活策略。其他边界事件(如信号边界事件)在其附加活动开始时被激活。当活动完成时,它们被停用,相应的事件订阅被取消。补偿边界事件是不同的。补偿边界事件在附加活动成功完成时激活。此时,将创建相应的补偿事件订阅。当一个补偿事件被触发或相应的流程实例结束时,订阅被删除。由此可见:
- 当补偿被触发时,与补偿边界事件相关联的补偿处理程序被调用与它所附加的活动成功完成的次数相同的次数。
- 如果补偿边界事件附加到具有多个实例特征的活动,则会为每个实例创建补偿事件订阅。
- 如果补偿边界事件附加到循环中包含的活动,则每次执行活动时都会创建一个补偿事件订阅。
- 如果流程实例结束,则补偿事件的订阅将被取消。
注意:嵌入式子流程不支持补偿边界事件。
图形表示法
补偿边界事件被视为边界上典型的中间事件(内部有小圈的圆),里面有补偿图标。补偿图标是白色(未填充),以指示其捕捉的语义。除补偿边界事件外,下图显示了使用单向关联与边界事件关联的补偿处理程序:
XML表示
补偿边界事件被定义为典型的边界事件:
<boundaryEvent id="compensateBookHotelEvt" attachedToRef="bookHotel" >
<compensateEventDefinition />
</boundaryEvent>
<association associationDirection="One" id="a1"
sourceRef="compensateBookHotelEvt" targetRef="undoBookHotel" />
<serviceTask id="undoBookHotel" isForCompensation="true" flowable:class="..." />
由于补偿边界事件在活动成功完成后激活,因此cancelActivity不支持该属性。
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号: