天天看点

Flowable入门系列文章32 - Activity解读 08

1、计时器边界事件

描述

定时器边界事件充当秒表和闹钟。当执行到达边界事件附加的活动时,计时器启动。当定时器触发时(例如,在指定的时间间隔之后),活动被中断,顺序流出边界事件。

图形表示法

定时器边界事件可视化为一个典型的边界事件(边界上的圆形),内部有计时器图标。

Flowable入门系列文章32 - Activity解读 08

XML表示

定时器边界事件定义为常规边界事件。在这种情况下,特定类型的子元素是一个timerEventDefinition元素。

<boundaryEvent id="escalationTimer" cancelActivity="true" attachedToRef="firstLineSupport">
<timerEventDefinition>
<timeDuration>PT4H</timeDuration>
</timerEventDefinition>
</boundaryEvent>
           

有关定时器配置的详细信息,请参阅定时器事件定义。

在图形表示中,如上例所示,圆的线条为点状:

Flowable入门系列文章32 - Activity解读 08

一个典型的用例是在一段时间后发送升级电子邮件,但不会影响正常的流程。

中断和不中断计时器事件之间有一个关键的区别。不中断意味着原始活动不会中断,而是保持原样。中断行为是默认行为。在XML表示中,cancelActivity属性设置为false:

注意:启用作业或异步执行时边界计时器事件仅燃煤(jobExecutorActivate或asyncExecutorActivate需要被设置为true在

flowable.cfg.xml,因为工作和异步执行默认情况下禁用)。

已知的边界事件问题

在使用任何类型的边界事件时,有一个关于并发性的已知问题。目前,不可能将多个外发序列流附加到边界事件。解决这个问题的方法是使用一个去往并行网关的流出序列流。

Flowable入门系列文章32 - Activity解读 08

2、错误边界事件

描述

活动边界上的中间捕获错误或简称为边界错误事件,会捕获在其所定义的活动范围内抛出的错误。

定义边界错误事件对嵌入式子流程或调用活动最有意义,因为子流程会为子流程内的所有活动创建一个范围。错误结束事件引发错误。这样的错误会向上传播其父作用域,直到找到一个与错误事件定义匹配的边界错误事件被定义的作用域。

当捕获到错误事件时,定义边界事件的活动将被销毁,同时也会销毁(并发活动,嵌套子进程等等)内的所有当前执行。在边界事件的流出顺序流程之后,流程继续执行。

图形表示法

边界错误事件可视化为边界上典型的中间事件(内部具有较小圆圈的圆),并在内部显示错误图标。错误图标是白色的,表示它的catch语义。

Flowable入门系列文章32 - Activity解读 08

XML表示

边界错误事件被定义为典型的边界事件:

<boundaryEvent id="catchError" attachedToRef="mySubProcess">
<errorEventDefinition errorRef="myError"/>
</boundaryEvent>
           

与错误结束事件一样,errorRef引用在process元素之外定义的错误:

<error id="myError" errorCode="123" />
...
<process id="myProcess">
...
           

该的errorCode用来匹配被发现的错误:

  • 如果errorRef被省略,边界错误事件将捕获任何错误事件,而不管的的errorCode的错误。
  • 如果提供了errorRef并且引用了现有的错误,则边界事件将只捕获具有相同错误代码的错误。
  • 如果提供了errorRef,但在BPMN 2.0文件中没有定义错误,那么errorRef被用作errorCode(类似于错误结束事件)。

以下示例过程显示了如何使用错误结束事件。当“审核盈利能力”用户任务完成时,如果提供的信息不足,则会引发错误。当在子流程的边界上发现该错误时,“审核销售主管”子流程中的所有活动活动都将被销毁(即使“审核客户评级”尚未完成),以及“提供其他详细信息’用户任务被创建。

Flowable入门系列文章32 - Activity解读 08

此过程作为演示设置中的示例发货。流程XML和单元测试可以在org.flowable.examples.bpmn.event.error包中找到。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/

文章翻译提交:https://github.com/qiudaoke/flowable-userguide

了解更多文章可以关注微信公众号:

Flowable入门系列文章32 - Activity解读 08