Activiti中的互斥网关、并行网关、兼容网关、事件网关

前提

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

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

Activiti中的互斥网关、并行网关、兼容网关、事件网关_第1张图片

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

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

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

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

二:并行网关

Activiti中的互斥网关、并行网关、兼容网关、事件网关_第2张图片

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

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

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

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

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

Activiti中的互斥网关、并行网关、兼容网关、事件网关_第3张图片

三:兼容网关

Activiti中的互斥网关、并行网关、兼容网关、事件网关_第4张图片

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

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

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

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

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

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

四:事件网关

Activiti中的互斥网关、并行网关、兼容网关、事件网关_第5张图片

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

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

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

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

你可能感兴趣的:(Activiti,互斥网关,并行网关,兼容网关,事件网关)