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事件创建相应的数据,当某个中间事件先被触发了,流程就会选择触发事件所在的顺序流走下去。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
activiti是一个流程管理和工作流引擎,而Spring Boot是一个开发框架,它提供了简化的方式来创建独立的、基于Spring的应用程序。 互斥网关activiti的一个特殊类型的网关,用于处理并行分支互斥情况。在一个并行分支,任务可能会并行执行,但是在某些情况下,我们需要确保只有一个任务能够继续执行,而其他任务必须等待。 在activiti,可以使用互斥网关来实现这个目的。当并行分支的一个任务到达互斥网关时,它会暂停并等待其他任务完成。一旦其他任务完成,互斥网关会选择一个任务继续执行,而其他任务将继续等待。 在Spring Boot,可以使用activiti-spring-boot-starter来集成activiti流程引擎。通过在Spring Boot应用程序添加依赖和配置,可以轻松地创建和管理activiti流程。 要在activiti使用互斥网关,需要在流程定义添加互斥网关节点。可以使用XML或Java代码来定义流程,然后使用activiti流程引擎来部署和执行流程。 使用互斥网关时,需要注意以下几点: 1.确保互斥网关所在的分支是并行分支。 2.确保互斥网关的输出路径只能有一个,以确保只有一个任务能够继续执行。 3.可以使用条件表达式来控制互斥网关的选择路径。 总之,activiti和Spring Boot结合使用可以轻松地创建和管理流程,而互斥网关则是在并行分支保证只有一个任务能够继续执行的一种机制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值