Flowable入门系列文章41 - 网关 03
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章41 - 网关 03相关的知识,希望对你有一定的参考价值。
基于事件的网关
描述
基于事件的网关提供了一种基于事件做出决定的方式。网关的每个出站序列流都需要连接到中间捕获事件。当进程执行到达一个基于事件的网关时,网关就像一个等待状态:暂停执行。另外,对于每个外发序列流,创建一个事件订阅。
请注意,从基于事件的网关流出的顺序流与普通顺序流不同。这些顺序流程从来没有实际“执行”。相反,它们允许流程引擎确定到达基于事
件的网关的执行需要订阅哪些事件。以下限制适用:
- 基于事件的网关必须有两个或更多的流出序列流。
- 基于事件的网关只能连接到类型元素intermediateCatchEvent(Flowable不支持基于事件的网关之后的接收任务)。
- 一个intermediateCatchEvent连接到一个基于事件的网关必须有一个单一的进入顺序流。
图形表示法
基于事件的网关像其他BPMN网关一样具有菱形外形,内部有一个特殊的图标。
XML表示
用于定义基于事件的网关的XML元素是eventBasedGateway。
以下过程是基于事件的网关进程的示例。当执行到达基于事件的网关时,流程执行被暂停。另外,流程实例订阅警报信号事件,并创建一个10分钟后触发的计时器。这有效地导致流程引擎等待十分钟来处理信号事件。如果信号在10分钟内发生,定时器将被取消,信号后继续执行。如果信号未被触发,则在定时器和信号订阅被取消之后继续执行。
<definitions id="definitions"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:flowable="http://flowable.org/bpmn"
targetNamespace="Examples">
<signal id="alertSignal" name="alert" />
<process id="catchSignal">
<startEvent id="start" />
<sequenceFlow sourceRef="start" targetRef="gw1" />
<eventBasedGateway id="gw1" />
<sequenceFlow sourceRef="gw1" targetRef="signalEvent" />
<sequenceFlow sourceRef="gw1" targetRef="timerEvent" />
<intermediateCatchEvent id="signalEvent" name="Alert">
<signalEventDefinition signalRef="alertSignal" />
</intermediateCatchEvent>
<intermediateCatchEvent id="timerEvent" name="Alert">
<timerEventDefinition>
<timeDuration>PT10M</timeDuration>
</timerEventDefinition>
</intermediateCatchEvent>
<sequenceFlow sourceRef="timerEvent" targetRef="exGw1" />
<sequenceFlow sourceRef="signalEvent" targetRef="task" />
<userTask id="task" name="Handle alert"/>
<exclusiveGateway id="exGw1" />
<sequenceFlow sourceRef="task" targetRef="exGw1" />
<sequenceFlow sourceRef="exGw1" targetRef="end" />
<endEvent id="end" />
</process>
</definitions>
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于Flowable入门系列文章41 - 网关 03的主要内容,如果未能解决你的问题,请参考以下文章
Flowable入门系列文章79 - 流动设计器BPMN功能