基于事件的网关

描述

基于事件的网关提供了一种基于事件做出决定的方式。网关的每个出站序列流都需要连接到中间捕获事件。当进程执行到达一个基于事件的网关时,网关就像一个等待状态:暂停执行。另外,对于每个外发序列流,创建一个事件订阅。

请注意,从基于事件的网关流出的顺序流与普通顺序流不同。这些顺序流程从来没有实际“执行”。相反,它们允许流程引擎确定到达基于事
件的网关的执行需要订阅哪些事件。以下限制适用:

  • 基于事件的网关必须有两个或更多的流出序列流。
  • 基于事件的网关只能连接到类型元素intermediateCatchEvent(Flowable不支持基于事件的网关之后的接收任务)。
  • 一个intermediateCatchEvent连接到一个基于事件的网关必须有一个单一的进入顺序流。

图形表示法

基于事件的网关像其他BPMN网关一样具有菱形外形,内部有一个特殊的图标。

flowable RuntimeService 可以获取多个execution flowable获取流程节点顺序_BPM

XML表示

用于定义基于事件的网关的XML元素是eventBasedGateway。

以下过程是基于事件的网关进程的示例。当执行到达基于事件的网关时,流程执行被暂停。另外,流程实例订阅警报信号事件,并创建一个10分钟后触发的计时器。这有效地导致流程引擎等待十分钟来处理信号事件。如果信号在10分钟内发生,定时器将被取消,信号后继续执行。如果信号未被触发,则在定时器和信号订阅被取消之后继续执行。

flowable RuntimeService 可以获取多个execution flowable获取流程节点顺序_java_02

<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