Flowable-网关-事件网关

✨✨✨ 最好用的Flowable流程设计器


定义

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

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>

视频教程

事件网关

演示demo

事件网关

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
并行是Flowable工作流引擎中的一个重要组件,用于同时执行多个并发的执行流。它可以将一个执行流分岔成多个同时执行的执行流,并将多个执行流合并为一个执行流。与其他不同的是,并行不会解析流条件,即使顺序流中定义了流条件,也会被忽略。并行可以同时具有分岔和合并两种行为,允许多个执行流到达该时被合并,然后再随机分岔为多个执行流。因此,并行在处理多个并发执行流时非常灵活和强大。 同时,包含也可以充当并行的角色。包含是排他和并行的结合体,可以选择多于一条顺序流,并且在执行流中具有分岔和合并的行为。当包含作为并行使用时,它遵循并行的特性,既有分岔行为也有合并行为。与并行不同的是,包含还可以解析流条件,并根据条件选择不同的顺序流进行执行。因此,包含在流程中的使用非常灵活,既可以用作排他,也可以用作并行。 总结来说,Flowable中的并行是一个同时执行多个并发执行流的组件,可以实现分岔和合并的行为,而包含则是排他和并行的结合体,既可以充当排他,也可以充当并行。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生05101

flowable

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值