首页 论坛 BPM专题 BPM网关介绍

该话题包含 0 个回复,有 1 个参与人,并且由  admin1 年, 5 月 前 最后一次更新。

正在查看 1 帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • #250

    admin
    管理员

    一、排他网关 Exclusive Gateway

    排他网关又叫互斥网关,条件计算为true的顺序流会被选择继续流程,有且只有一条出口,如果出现多个条件为true,则会默认选择第一条true来执行,如果没有条件输出true,流程走到这一步的时候则会报错

    二、并行网关 Parallel Gateway

    它可以将执行分支(fork)为多条路径,也可以合并(join)执行的多条入口路径。简单点说就是,并行网关它可以有多条入口和出口,并且在合并入口处会等待其他分支执行完,然后再执行后面的流程,另外,需要注意的是,并行网关没有条件的概念,

    即便设置了条件,它会自动忽略

    三、包容网关 Inclusive Gateway

    用内部带有’圆圈’图标的网关(菱形)表示

    这个网关比较特殊,它集合了前面两个网关的特点,一句话来说就是,它既可以像排他网关那样设置条件,也能像并行网关这样设置多条分支并行执行,在上图中,当流程启动后,如果流程变量paymentReceived == false且shipOrder == true,将会创建两个任务。如果只有一个流程变量等于true,则只会创建一个任务。如果没有条件计算为true,会抛出异常,并可通过指定出口顺序流

    举个例子:启动流程的时候传入下面的参数,执行流程。

    HashMap<String, Object> variableMap = new HashMap<String, Object>();

    variableMap.put(“receivedPayment”, true);

    variableMap.put(“shipOrder”, true);

            在上面的例子中,只有ship order 一个任务会被创建,当这个任务完成后,第二个包容网关会合并这两个执行,并且由于只有一条出口顺序流,不会再创建并行执行路径,只会激活Archive Order任务继续后面的流程。

    四、基于事件的网关 Event-based Gateway

    这个网关相比其他三个网关,用的相对没那么多,主要还是根据业务需求吧

    该网关在执行出口处,要连接一个捕获中间事件。当流程执行到该网关时,流程类似处于等待的状态,此时执行被暂停,并创建一个事件订阅

    需要订阅什么事件。基于下列约束:

    • 一个基于事件的网关,必须有两条或更多的出口顺序流。
    • 基于事件的网关,只能连接至intermediateCatchEvent(捕获中间事件)类型的元素(Activiti不支持基于事件的网关后,连接接收任务,Receive Task)。
    • 连接至基于事件的网关的intermediateCatchEvent,必须只有一个入口顺序流。

    当然,新手看到了这里可能还是不知道什么是事件网关,它到底有什么用处呢?下面,我用一个例子来解释一下:

    上图使用了事件网关、定时器事件,信号捕捉事件,当启动流程后,流程实例订阅alert信号事件,并创建一个 5分钟后触发的定时器。这使得流程引擎等待5分钟,并等待信号事件。如果信号在5分钟内触发,则定时器会被取消,执行沿着信号继续。如果信号未被触 发,执行会在定时器到时后继续,并取消信号订阅。

    一句话概括事件网关,如果你提交了请假申请,此时流程处于等待状态,当某个事件触发时,流程走到用户任务,办理了你的请假申请,那么等待会被取消,如果超过1天,还是没有触发某个事件,那么你的请假单直接跳过你的上级,直接往后面的流程走

    BPMN2.0 网关

    第一期

    BPMN中的网关是用来控制流程中的流向的。更确切的是, 当一个token(BPMN 2.0中execution的概念注解)到达一个网关, 它会根据网关的类型进行合并或切分。

    网关描绘成一个菱形,使用一个内部图标来指定类型 (唯一,广泛,其他)。

    所有网关类型,都可以设置gatewayDirection。 下面的值可以使用:

    • unspecificed (默认):网关可能拥有多个 进入和外出顺序流。
    • mixed:网关必须拥有多个 进入和外出顺序流。
    • converging:网关必须拥有多个进入顺序流, 但是只能有一个外出顺序流。
    • diverging:网关必须拥有一个进入顺序流, 和多个外出顺序流。

    比如下面的例子:并行网关的gatewayDirection属性为’converging’, 会拥有json行为。

    <parallelGateway id=”myJoin” name=”My synchronizing join” gatewayDirection=”converging” />

    注意:gatewayDirection属性根据规范是可选的。 这意味着我们不能通过这个属性来 在运行时知道一个网关的行为(比如,一个并行网关, 如果我们用够切分和合并行为)。然而,gatewayDirection属性用在解析时 作为约束条件对进入、外出顺序流。所以使用这个属性 会减低出错的机会,当引用顺序流时, 但不是必填的。

     

    网关 释义
    排他网关 排他网关(也叫异或网关), 用来在流转中实现发散分支决策。 当流程执行到这个网关,所有流出的迁移线都会被求解计算一遍。 其中第一条条件解析为true迁移线会被选中(当多个条件为true时,第一个决策被执行)并且不再计算其它流出分支,让流程沿着第一条被选中的迁移线运行;如果没有任何一条流出分支可执行,则抛出异常,中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的计算结果为true。
    多路网关(包含网关:这个应该不确切) 多路网关(也叫或网关,也称为发散网关),用来在流转中实现发散分支决策。 当流程执行到这个网关,与排他网关类似,区别在于发散网关将所有外出的分支迁移线都会被求解计算一遍。 其中条件解析为true迁移线会被选中,让流程沿着所有被选中的迁移线并行运行。如果没有任何一条流出分支可执行,则抛出异常,中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的计算结果为true。
    并行网关 并行网关, 用来在流转中实现无条件的聚合分支决策和发散分支决策。当流程执行到这个网关,所有流出的迁移线条件都会被忽略,只有全部流入的分支都到达时才会触发发散分支行为。所有流出的迁移线都会被选中。让流程沿着所有流出的迁移线并行运行。
    复杂网关 复杂网关,复杂网关是聚合网关与发散网关的综合体,用来在流转中实现条件的多路聚合分支决策和多路发散分支决策。当流程执行到这个网关,根据所设定聚合规则进行聚合计算,当聚合完毕触发发散动作,所有流出的分支迁移线条件都会被求解计算一遍。 其中条件解析为true迁移线会被选中,让流程沿着所有被选中的迁移线并行运行。如果没有任何一条流出分支可执行,则抛出异常,中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的计算结果为true。

    只有全部流入的分支都到达时才会触发发散分支行为。

    事件网关 事件网关,基于事件网关允许根据事件判断流向,用来在流转中实现异或分支决策。当流程执行到这个网关,网关的每个流出分支都要连接到一个中间捕获事件,网关会进入等待状态:流程会暂停执行。与此同时,会为每个流出分支建相对的事件订阅,当捕获取事件源时触发条件计算,计算结果为ture时分支被选中,其它分支将被忽略,并选取最先被选中的分支执行流转。
    • 该话题由  admin 于 1 年, 5 月 前 修正。
    • 该话题由  admin 于 1 年, 5 月 前 修正。
    • 该话题由  admin 于 1 年, 5 月 前 修正。
正在查看 1 帖子:1-1 (共 1 个帖子)

抱歉,回复话题必需登录。