Activiti(五)网关_activity5 网关节点不可关联结束节点-程序员宅基地

技术标签: java  activiti  activiti网关  

在学习了activiti的流程变量之后,对整体的一个流程有了一个大致的了解,下面来学习一下activiti的网关。
activiti网关用来控制流程的流向,网关可以 消费,也可以 生成 token。
这里主要是写了排他网关和并行网关的例子。

一、排他网关

这里写图片描述

这里写图片描述
这里写图片描述

测试:
1、部署流程定义
这里写图片描述

2、启动流程实例
这里写图片描述

3、完成任务

/**
 * 完成我的任务
 */
@Test
public void completeMyPersonalTask(){
    //任务ID
    String taskId = "2304";

    Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("money", "800");
    //完成任务的同时,设置流程变量,使用流程变量用来指定完成任务后下一个连线,对应sequenceFlow.bpmn文件中的${money>1000}表达式
    processEngine.getTaskService()//与正在执行的任务管理相关的service
    .complete(taskId,variables);

    System.out.println("完成任务:任务ID:"+taskId);

}

因小于1000且大于500,所以有部门经理审批

这里写图片描述

说明
1、一个排他网关对应一个以上的顺序流
2、由排他网关流出的顺序流都有个conditionExpression元素,在内部维护返回boolean类型的决策结果。
3、决策网关只会返回一条结果。当流程执行到排他网关时,流程引擎会自动检索网关出口,从上到下检索如果发现第一条决策结果为true或者没有设置条件的(默认为成立),则流出。
4、如果没有任何一个出口符合条件,则抛出异常
5、使用流程变量,设置连线的条件,并按照连线的条件执行工作流,如果没有条件符合的条件,则以默认的连线离开

二、并行网关

这里写图片描述

这里写图片描述

测试:

1、部署流程定义
这里写图片描述

2、启动流程实例
这里写图片描述

表中出现数据
这里写图片描述

3、完成任务

(1)、完成买家付款

/**
 * 完成我的任务
 */
@Test
public void completeMyPersonalTask(){
    //任务ID
    String taskId = "2802";

    processEngine.getTaskService()//与正在执行的任务管理相关的service
                    .complete(taskId);

    System.out.println("完成任务:任务ID:"+taskId);

}

这里写图片描述

(2)、完成卖家发货

/**
 * 完成我的任务
 */
@Test
public void completeMyPersonalTask(){
    //任务ID
    String taskId = "2712";

    processEngine.getTaskService()//与正在执行的任务管理相关的service
                    .complete(taskId);

    System.out.println("完成任务:任务ID:"+taskId);

}

这里写图片描述

(3)、完成买家收货

/**
 * 完成我的任务
 */
@Test
public void completeMyPersonalTask(){
    //任务ID
    String taskId = "2902";

    processEngine.getTaskService()//与正在执行的任务管理相关的service
                    .complete(taskId);

    System.out.println("完成任务:任务ID:"+taskId);

}

这里写图片描述

注意:还是三个,一起都是三个

(4)、完成卖家收款

/**
 * 完成我的任务
 */
@Test
public void completeMyPersonalTask(){
    //任务ID
    String taskId = "2812";

    processEngine.getTaskService()//与正在执行的任务管理相关的service
                    .complete(taskId);

    System.out.println("完成任务:任务ID:"+taskId);

}

完成任务,两表都没有数据了

这里写图片描述

说明

1、一个流程中流程实例只有1个,执行对象有多个
2、并行网关的功能是基于进入和外出的顺序流的:
分支(fork): 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
汇聚(join): 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。
3、并行网关的进入和外出都是使用相同节点标识
4、如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。
5、并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。
6、并行网关不需要是“平衡的”(比如, 对应并行网关的进入和外出节点数目不一定相等)。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ITlsc/article/details/51877919

智能推荐

JVM性能检测工具与调优案例实战_vmjy-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏5次。为了验证自己的猜想,于是准备登录后台去测试下,结果在测试的过程中发现到处订单的按钮前端居然没有做点击后按钮置灰交互事件,结果按钮可以一直点,因为导出订单数据本来就非常慢,使用的人员可能发现点击后很久后页面都没反应,结果就一直点,结果就大量的请求进入到后台,堆内存产生了大量的订单对象和EXCEL对象,而且方法执行非常慢,导致这一段时间内这些对象都无法被回收,所以最终导致内存溢出。解决方式除了调整本地内存大小之外,也可以在出现此异常时进行捕获,手动触发GC(System.gc())。_vmjy

mysql主键id的生成方式(自增、唯一不规则)_自增id改uuid作为主键id-程序员宅基地

文章浏览阅读4.4w次,点赞8次,收藏33次。1、利用uuid函数生成唯一且不规则的主键idsql:CREATE TABLE `test` ( `id` varchar(100) COLLATE utf8_estonian_ci NOT NULL COMMENT '唯一不重复', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_tim..._自增id改uuid作为主键id

VSCode中值得推荐的常用的33个高效前端插件「效率篇」_json to ts-程序员宅基地

文章浏览阅读1.5k次。VSCode 是我们前端开发的一个强大的IDE,所以选择趁手好用的插件是提高开发效率,然后剩下的时间用来摸鱼是很有必要滴。_json to ts

Android 保存图片成功后,更新到相册_安卓图库手动更新-程序员宅基地

文章浏览阅读470次。Android下载保存图片,相册不显示图片一下两种方式功参考:作者也是遇到了,写出来供参考,也记下来在清单文件加上 android:requestLegacyExternalStorage="true" 保存成功后,通知相册更新MediaScannerConnection.scanFile(context, new String[]{TargetPath}, null, null);//path:图片保存的路径..._安卓图库手动更新

机器学习入门:玩转sklearn库,AI写作-程序员宅基地

文章浏览阅读283次,点赞19次,收藏8次。sklearn库是一个功能强大且广泛应用的工具,它帮助我们在数据科学和人工智能领域中构建机器学习模型。通过学习和掌握其主要功能和使用方法,我们可以更加高效地进行数据分析和挖掘,为实际问题提供解决方案。希望这篇介绍能够帮助初学者更好地理解和应用sklearn库,进一步探索数据科学和人工智能的奥秘。AI写作

滤波器基础:抗混叠_ad转换前加抗稳叠-程序员宅基地

文章浏览阅读912次。摘要:在数据采样系统中,高于二分之一采样率的频率成分“混叠”(搬移)到有用频带。大多数时间,混叠是有害的副作用,所以在模/数(AD)转换级之前,将“欠采样”的较高频率简单滤除。但有时候,特意设计利用欠采样,混叠使得AD系统作为混频器工作。 本应用笔记讨论数据采样系统的不同滤波要求,介绍混叠以及用于抗混叠的不同类型滤波器。滤波是一种我们往往视为当然的常见过程。我们在打电话时,接收器滤除其它所有信道..._ad转换前加抗稳叠

随便推点

如何获取永久头像地址(非临时)微信小程序_微信头像真实地址-程序员宅基地

文章浏览阅读702次,点赞7次,收藏10次。找了很久也没有找到真实的图片链接地址的获取方式。如果有大佬知道如何弄,还请评论区指条明路。本文用base64代替真实头像地址。后端有python和golang两种方式,供学习参考。博文仅针对这一个功能,其它的比如wxml和wxss设置,或者微信昵称的获取就不多介绍了。_微信头像真实地址

热修复:关于Tinker在Android9.0机器上合成失败的解决方案_tinker在哪个版本不适用了-程序员宅基地

文章浏览阅读1.8k次。Tinker大部分网络所写的文章采用的Tinker版本号都是2018年或者之前的,相对来说比较老旧,去GitHub下载的Demo版本还是解决方法更新Tinker版本,然后可以愉快的继续使用Tinker热修复啦。 TINKER_VERSION=1.9.2TINKERPATCH_VERSION=1.2.2 特意去官网找了下更新日志Tinker官网 发现以下版本可以支持A..._tinker在哪个版本不适用了

应用逻辑回归方法对鸢尾花进行分类_第1关:逻辑回归--鸢尾花数据集分类-程序员宅基地

文章浏览阅读1.4k次。应用逻辑回归方法对鸢尾花进行分类1. 实验目标逻辑回归了解Iris数据集2. 本次实验主要使用的 ????????????ℎ????????Python 库名称版本简介????????????????????numpy1.16.21.16.2线性代数????????????????????????−????????????ℎ????????opencv−python4.1.1.264.1.1.26计算机视觉???????????????????????_第1关:逻辑回归--鸢尾花数据集分类

Windows7+Windows10原版镜像集合_windows7镜像 csdn-程序员宅基地

文章浏览阅读8.8k次。https://blog.csdn.net/u012321199/article/details/79561198_windows7镜像 csdn

AttributeError: module ‘sacrebleu‘ has no attribute ‘compute_bleu‘_module 'sacrebleu' has no attribute 'compute_bleu-程序员宅基地

文章浏览阅读671次。fairseq训练时出现:原因:sacrebleu 版本不对。解决办法:pip install sacrebleu==1.5.1_module 'sacrebleu' has no attribute 'compute_bleu

超高频RFID R200系列远距离一体化读写器开发测试_ypd-r200 rfid-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏33次。超高频UHF RFID R200系列远距离一体化读写器开发测试概述R200系列远距离一体化读写器为一体化设计的UHF 频段读写器,其具有多协议兼容、读取速率快、多标签识读、防水型外观设计等优点,可广泛的应用于各种RFID 系统中。 广泛应用于仓储管理、供应链管理、车辆管理、生产线管理、溯源管理、资产管理、人员管理、考勤管理、产品防伪管理等多种场合。UHF-R200 是一款超高频读写模块,体积小,功耗低,最大功率为28dbm,并且功率可调;主要用于..._ypd-r200 rfid