zoukankan      html  css  js  c++  java
  • Activiti中的互斥网关、并行网关、兼容网关、事件网关

    前提

    流程中的网关用于控制顺序流的分支和汇合,如果不需要进行顺序流的控制,则可以不使用网关。

    一:互斥网关(单行网关)

    1、互斥网关就好像一个人走到了一个岔路口,只能选择一条路前进,至于选择哪条路由顺序流的条件决定;也就是从互斥网关输出的顺序流1和顺序流2都被设置的有条件;

    (1)、如果只有一个顺序流的条件满足要求,则就走这个顺序流;

    (2)、如果有多个顺序流的条件满足要求,则哪个顺序流的定义在流程文件中靠前,走哪个顺序流;

    (3)、如果没有顺序流的条件满足要求,则抛出异常。

    二:并行网关

    1、并行网关对执行流会有两种行为:分岔和合并;

    (1)、分岔(上图中的第一个并行网关):可以让一个执行流变为多个同时进行的并发执行流;从并行网关输出的顺序流1和顺序流2中不用设置条件,就算设置条件,并行网关也会忽略,因为他们不使用条件进行判断。

    (2)、合并(上图中的第二个并行网关):可以让多个执行流合并为一个执行流;

    2、并行网关并不要求成对出现,即有了分岔并不一定有合并,有了合并也不一定有分岔;

    3、一个并行网关允许同时出现分岔和合并两种行为,即多个执行流到达该并行网关时被合并,然后随机又被分岔为多个执行流。

    三:兼容网关

    1、兼容网关就好像是互斥网关和并行网关的结合体,即可以当互斥网关使用,也可以当并行网关使用;

    2、当互斥网关使用时,需要为从兼容网关输出的顺序流1和顺序流2设置条件:

    (1)、如果只有一个顺序流的条件满足要求,则就走这个顺序流;

    (2)、如果有多个顺序流的条件满足要求,则会并行走满足条件的所有顺序流;(这点和互斥网关有区别,互斥网关是哪个顺序流的定义在流程文件中靠前,走哪个顺序流);

    (3)、如果没有顺序流的条件满足要求,则抛出异常。

    3、当并行网关使用时,不能为从兼容网关输出的顺序流1和顺序流2设置条件;这样以来它就和并行网关的特性一模一样,既有分岔行为也有合并行为,且处理方式也和并行网关一致。

    四:事件网关

    1、事件网关是根据它所连接的中间Catching事件来决定流程的走向;

    2、上图中事件网关直接连接了顺序流1和顺序流2,顺序流1直接连接了信号事件,顺序流2直接连接了定时器事件;

    3、有些同学会有以下疑惑:当流程走到事件网关时,并不知道是往顺序流1走?还是往顺序流2走?因为只有走了顺序流1或者顺序流2后才能到达各自连接的事件,然后才能根据事件进行判断;这样以来就出现了走向选择的问题。

    4、实际上当流程走到事件网关时,并不会立马选择走顺序流1还是走顺序流2,而是Activiti会为全部的中间Catching事件创建相应的数据,当某个中间事件先被触发了,流程就会选择触发事件所在的顺序流走下去。

  • 相关阅读:
    ElasticSearch——Logstash输出到Elasticsearch配置
    ElasticSearch——分词
    Kafka——JVM调优
    HBase管理与监控——强制删除表
    HBase管理与监控——HBase region is not online
    HBase管理与监控——内存调优
    C#利用WMI获取 远程计算机硬盘数据
    防止SQL注入方法总结
    C# 将一个DataTable的结构直接复制到另一个DataTable
    C# 按位或,按位与, 按位异或
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302400.html
Copyright © 2011-2022 走看看