activiti学习(十六)

您所在的位置:网站首页 重启网关啥意思呀 activiti学习(十六)

activiti学习(十六)

2024-07-16 19:06:36| 来源: 网络整理| 查看: 265

网关和分支是流程图中相当重要的一环。毕竟不可能所有流程都是一条直线走到底的,可能需要并行处理,也可能需要根据条件的不同选择对应的路由,网关的作用正是在此。本文主要探索一下这几种网关的常用方法,以及一些特殊情况会发生什么。由于前面文章中已多次列出流程文档部署、流程启动、提交等代码,本文不再详细列出。

并行网关

并行网关就是当流程到达改网关时,会分成多个分支,对应业务中的并发情况。

假设现在有这么一个场景,公司进行进行项目申报,需要走申报项目流程,待财务部门、采购部门、法律部门审批之后,再到老板审批,最后结束。这过程中财务、采购、合同审批是可以并行处理的。对应的流程图如下:

这里用菱形里面一个“+”的图案表示并行网关,左边的表示分支,右边的表示聚合。我们启动流程之后看看数据库情况。并行网关的“出线”属于无条件走出,即使在“出线”上设置了条件,也不会影响其效果。具体bpmn文档如下:

当流程到“申报项目”时

执行表act_ru_execution:

任务表act_ru_task:

这两个表的情况和之前的普通流程没什么不一样。

 

提交“申报项目”环节到并行分支之后

执行表act_ru_execution:

任务表act_ru_task:

可以看到此时执行表分列成4条记录,其中三条执行分别是采购审批、财务审批、合同审批,还有一条在并行网关处,另外IS_ACTIVE、IS_CONCURRENT、IS_SCOPE有所不同需要注意。而任务表则是三个审批任务。

 

提交“财务审批”后

执行表act_ru_execution:

任务表act_ru_task:

这时候之前“财务审批”那条execution已经走到了聚合网关,聚合网关正在等待其他的execution。

 

提交“采购审批”后

执行表act_ru_execution:

任务表act_ru_task:

和上面的执行情况差不多,不需要分析。

 

提交“合同审批”后

执行表act_ru_execution:

任务表act_ru_task:

当聚合网关的所有“进线”的execution都执行完,就会合并到并行前的execution上,到下一个节点。

并行网关的特点是会使流程从一个execution变成并行的多个execution。通常需要在后面添加聚合网关把并行的execution聚合。如果不加聚合网关,那么流程就会一直维持多个并行execution的状态。

 

排他网关

当流程执行到排他网关时,排他网关会选择第一条符合条件路由走出。

例如上图,两条“出线”没有设置条件的话,就是默认满足任何条件。此时网关会选择第一条符合的路由。至于哪条是第一条呢?不是由流程图的上下左右方位控制,而是与bpmn文档的顺序有关。因此为了同时符合多个条件时,不知道会走哪条路由的情况,最好还是让路由的条件形成互斥关系。另外,如果流程不满足任意一条“出线”的条件,那么流程就会抛出异常。

现在我们假设一个场景。员工需要走请假申请流程,如果请假小于3天,那么科长审批即可,如果请假大于等于3天,那么需要处长审批。流程图和对应的流程文档大致如下:

=3}]]>

通过xml写入条件比较麻烦,我们通过eclipse的Activiti Diagram Editor插件进行编辑。这里使用了表达式进行条件设置。

例如这里我们给上面这条“出线”设置day变量大于等于3,下面那条“出线”设置day变量小于3

启动流程,程走到“请假申请”环节

任务表act_ru_task:

之后提交下一个环节前,我们传入day变量,设置为2

public void completeTaskWithVar() { Map vars = new HashMap(); vars.put("day", 2); TaskService taskService = pe.getTaskService(); taskService.complete("5010", vars); System.out.println("完成提交"); }

 

流程到排他网关,根据条件选择路由后

任务表act_ru_task:

通过任务表可以看到流程走到了“科长审批”环节。由于day设置为2,通过排他网关两条“出线”的条件判断,走下面那条路由。

 

包含网关

包含网关融合了并行网关和排他网关的特点,并行网关的“出线”属于无条件,而排他网关只能选择符合条件的第一条“出线”。那如果我们需要一个路由选择,只要满足条件的“出线”,都可以路由走出去,这时候需要选择包含网关。

例如上图,我们设定一个采购申报流程,无论什么情况,都需要采购部领导审批,而如果费用大于等于1万元,则同时需要通过大老板审批。包含网关上面的“出线”没设任何条件,下面的“出线”设置了cost大于等于10000。

读者可以分别设置条件。当流程变量中的cost变量设置小于1万时,流程表现与排他网关类似;当流程变量中的cost变量设置大于等于1万时,流程表现与并行网关类似。

 

本文通过数据库跟踪流程,分析了并行网关、排他网关和包含网关的作用与效果。值得注意的是当流程处于并行状态时,执行表act_ru_execution中的IS_SCOPE、IS_CONCURRENT、IS_ACTIVE等都有所不同。以后阅读源码时会发现,这几项都会对活动的行为类有所影响。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭