Flowable-网关-事件网关
  4BbmSa234H9N 2023年11月02日 69 0



目录

  • 定义
  • 图形标记
  • XML内容
  • 使用示例
  • 视频教程
  • 演示demo


定义

通常网关根据连线条件来决定后继路径,但事件网关不同,它提供了根据事件做选择的方式。
事件网关的每个外出顺序流都需要连接至一个捕获中间事件。当流程执行到达事件网关时,网关类
似处于等待的状态,暂停执行,并为每个外出顺序流创建相对的事件订阅。事件网关只有分支行为,
流程的走向完全是由于中间事件的选择,它允许从多个候选分支中选择事件最先触发的分支(如时
间事件、消息事件),并取消其他分支。
事件网关的外出顺序流和普通顺序流不同,这些顺序流从不实际被执行。相反,它们允许流程
引擎决定,当执行到达一个事件网关时,需要订阅什么事件。事件网关的使用需要注意以下几个约
束条件:

1、一个事件网关,必须有两条或以上外出顺序流。

2、事件网关后只能连接 intermediateCatchEvent(中间捕获事件)类型的元素。在 Flowable 中,
事件网关后还不支持连接接收任务(Receive Task)。

3、连接到事件网关的中间捕获事件,必须只有一个入口顺序流。

图形标记

事件网关和其他 BPMN 网关一样显示成一个菱形,内部包含指定图标,如图所示:

Flowable-网关-事件网关_流程引擎

XML内容

定义包容网关的 XML 定义如下:

<eventBasedGateway id="exclusiveGateway1" />

使用示例

Flowable-网关-事件网关_7z_02

<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>

视频教程

事件网关

演示demo

事件网关 本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
4BbmSa234H9N