目录
- 定义
- 图形标记
- XML内容
- 使用示例
- 视频教程
定义
通常网关根据连线条件来决定后继路径,但事件网关不同,它提供了根据事件做选择的方式。
事件网关的每个外出顺序流都需要连接至一个捕获中间事件。当流程执行到达事件网关时,网关类
似处于等待的状态,暂停执行,并为每个外出顺序流创建相对的事件订阅。事件网关只有分支行为,
流程的走向完全是由于中间事件的选择,它允许从多个候选分支中选择事件最先触发的分支(如时
间事件、消息事件),并取消其他分支。
事件网关的外出顺序流和普通顺序流不同,这些顺序流从不实际被执行。相反,它们允许流程
引擎决定,当执行到达一个事件网关时,需要订阅什么事件。事件网关的使用需要注意以下几个约
束条件:
1、一个事件网关,必须有两条或以上外出顺序流。
2、事件网关后只能连接 intermediateCatchEvent(中间捕获事件)类型的元素。在 Flowable 中,
事件网关后还不支持连接接收任务(Receive Task)。
3、连接到事件网关的中间捕获事件,必须只有一个入口顺序流。
图形标记
事件网关和其他 BPMN 网关一样显示成一个菱形,内部包含指定图标,如图所示:
XML内容
定义包容网关的 XML 定义如下:
<eventBasedGateway id="exclusiveGateway1" />
使用示例
<signal id="alertSignal" name="alert" flowable:scope="global" />
<process id="EventBasedGatwayTest" name="网关-事件网关" isExecutable="true">
<startEvent id="ab90dd1d6552e49c09dec232671467890" />
<userTask id="a53b48e07e88d4adb8b65bf3ab3460e0a" name="客户投诉">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="a6171b16076dd41b6a67d25fd838218c4" sourceRef="ab90dd1d6552e49c09dec232671467890" targetRef="a53b48e07e88d4adb8b65bf3ab3460e0a" />
<sequenceFlow id="Flow_0h5e59j" sourceRef="a53b48e07e88d4adb8b65bf3ab3460e0a" targetRef="Gateway_0pspvvy" />
<eventBasedGateway id="Gateway_0pspvvy" />
<intermediateCatchEvent id="Event_0f966w5" name="3分钟">
<timerEventDefinition>
<timeDuration>PT2M</timeDuration>
</timerEventDefinition>
</intermediateCatchEvent>
<sequenceFlow id="Flow_0ajw2tf" sourceRef="Gateway_0pspvvy" targetRef="Event_0f966w5" />
<intermediateCatchEvent id="Event_0g20b6y" name="信号">
<signalEventDefinition signalRef="alertSignal" />
</intermediateCatchEvent>
<sequenceFlow id="Flow_1w1y6zy" sourceRef="Gateway_0pspvvy" targetRef="Event_0g20b6y" />
<userTask id="Activity_0aug760" name="二级客服处理">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="Flow_0sqnwot" sourceRef="Event_0f966w5" targetRef="Activity_0aug760" />
<userTask id="Activity_1wlis7z" name="一级客户处理">
<extensionElements>
<flowable:formData />
<flowable:assigneeType>static</flowable:assigneeType>
</extensionElements>
</userTask>
<sequenceFlow id="Flow_1x3g9hf" sourceRef="Event_0g20b6y" targetRef="Activity_1wlis7z" />
<endEvent id="Event_139njtd" />
<sequenceFlow id="Flow_143bcf9" sourceRef="Activity_0aug760" targetRef="Event_139njtd" />
<sequenceFlow id="Flow_1i2cmpp" sourceRef="Activity_1wlis7z" targetRef="Event_139njtd" />
</process>
视频教程
事件网关