什么是包含网关?

包含网关可以看做是排他网关和并行网关的结合体,和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析他们,但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关是一样的

其实在我看来就是

排他网关:解析条件,要不报错,要不走一个

并行网关:不解析条件,不报错,都走

包含网关:解析条件,条件成立就走,不成立就不走,全都不成立报错

需求:

体检流程

如果是领导 就走 常规,抽血,VIP,普通员工只走常规,抽血

使用流程变量控制

领导:userType=2

员工:userType=1

  1. package com.itheima.test.testGateWay;
  2.  
  3. import org.activiti.engine.*;
  4. import org.activiti.engine.repository.Deployment;
  5. import org.activiti.engine.runtime.ProcessInstance;
  6. import org.activiti.engine.task.Task;
  7. import org.junit.Before;
  8.  
  9. import java.util.HashMap;
  10. import java.util.Map;
  11.  
  12. /**
  13. * 测试包含网关
  14. */
  15. public class Test {
  16.  
  17. ProcessEngine defaultProcessEngine;
  18.  
  19. @Before
  20. public void init() {
  21. defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
  22. }
  23.  
  24. @org.junit.Test
  25. public void deployment(){
  26.  
  27. RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
  28.  
  29. Deployment deploy = repositoryService.createDeployment()
  30. .addClasspathResource("pic/gateway/holidayGateway3.bpmn")
  31. .name("体检流程")
  32. .deploy();
  33.  
  34. System.out.println(deploy);
  35.  
  36. }
  37.  
  38. @org.junit.Test
  39. public void startProcessInstance(){
  40.  
  41. RuntimeService runtimeService = defaultProcessEngine.getRuntimeService();
  42.  
  43. Integer userType = 1;
  44.  
  45. Map<String,Object> map = new HashMap<>();
  46.  
  47. map.put("userType",userType);
  48.  
  49. ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1", map);
  50.  
  51. System.out.println(processInstance);
  52.  
  53. }
  54.  
  55. /**
  56. * 提交任务
  57. */
  58. @org.junit.Test
  59. public void completTask(){
  60. String assignee = "sunqi";
  61. Task task = querySingResultByAssignee(assignee);
  62. System.out.println(task);
  63. TaskService taskService = defaultProcessEngine.getTaskService();
  64. taskService.complete(task.getId());
  65. }
  66.  
  67. /**
  68. * 查询用户唯一任务
  69. * @param assignee
  70. * @return
  71. */
  72. public Task querySingResultByAssignee(String assignee){
  73. TaskService taskService = defaultProcessEngine.getTaskService();
  74. return taskService.createTaskQuery().processDefinitionKey("myProcess_1").taskAssignee(assignee).singleResult();
  75. }
  76.  
  77. }

主要查看act_hi_actinst表的流程变化,既可以发现

userType=1 领取->常规->抽血->早餐->结束

userType=2 领取->常规->抽血->早餐->VIP->结束

作者:彼岸舞

时间:2020\09\08

内容关于:Activiti工作流

本文来源于网络,只做技术分享,一概不负任何责任

Activiti7 网关(包含网关)的更多相关文章

  1. Activiti网关--包含网关

    1.什么是包含网关 包含网关可以看做是排他网关和并行网关的结合体:和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们:但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样,包 ...

  2. activiti入门3排他网关,并行网管,包含网关,事件网关(转)

    网关用来控制流程的流向 网关可以消费也可以生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量  写个带有分支的一个基本流程 流程图: 部署 ...

  3. Activiti7 网关(并行网关)

    什么是并行网关? 并行网关允许将流程分成多条分支,也可以将多条分支合并到一起,并行网关是基于进入和外出顺序流的 fork分支: 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支 jion汇聚: ...

  4. Activiti7 网关(排他网关)

    什么是排他网关? 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用于在流程中实现决策,当流程执行到这个网关,所有分支都会判断条件是否为true,如果为true则执行该分支 注意:排他网关 ...

  5. activiti入门3排他网关,并行网管,包括网关,事件网关

    网关用来控制流程的流向 网关能够消费也能够生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量  写个带有分支的一个基本流程 流程图: wa ...

  6. SpringCloud(六):服务网关zuul-API网关(服务降级和过滤)

    什么是API网关: 在微服务架构中,通常会有多个服务提供者.设想一个电商系统,可能会有商品.订单.支付.用户等多个类型的服务,而每个类型的服务数量也会随着整个系统体量的增大也会随之增长和变更.作为UI ...

  7. 电信网关-天翼网关-GPON-HS8145C设置桥接路由拨号认证

    需求描述: 自从用了电信的200M光纤,解析卡成狗.打开域名3秒左右,不常见的域名8s左右.怀疑电信的网关有问题,故想让路由器拨号认证,进而设置dns解析域名 修改为路由器拨号认证,域名解析缓慢依然没 ...

  8. 《springcloud 二》微服务动态网关,网关集群

    动态网关    实际上是网关和分布式配置中心的整合,通过post手动刷新,生效 动态网关 传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.结合整合SpringCloud C ...

  9. Activiti网关--排他网关

    排他网关 1.什么是排他网关 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策. 当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分 ...

随机推荐

  1. C#LeetCode刷题之#16-最接近的三数之和(3Sum Closest)

    目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3620 访问. 给定一个包括 n 个整数的 ...

  2. C#LeetCode刷题-数组

    数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...

  3. Kubernetes基于haproxy实现ingress服务暴露

    HAproxy Ingress控制器 HAproxy Ingress简介 HAProxy Ingress watches in the k8s cluster and how it builds HA ...

  4. mysql-5.7.xx在lcentos7下的安装以及mysql在windows以及linux上的性能差异

    前言: 在centos上安装mysql,整整折腾了将近一天,因为是第一次安装,的确是踩了不少坑,这里详细记录下来,方便各位有同样需求的小伙伴参考. 该选择什么版本? mysql5.7有很多小版本,但是 ...

  5. apache+djnago+websocket 部署配置

    部署Apache服务器 1.apache服务的安装这里不做赘述,因为网上一大堆. 链接:https://blog.csdn.net/qq_24394093/article/details/905501 ...

  6. 实现图像的二值化(java+opencv)

    书里的解释: 其他的没找到什么资料,直接参考百度百科 https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E4%BA%8C%E5%80%BC%E5%8C%9 ...

  7. .Net Core中的诊断日志DiagnosticSource讲解

    前言     近期由于需要进行分布式链路跟踪系统的技术选型,所以一直在研究链路跟踪相关的框架.作为能在.Net Core中使用的APM,SkyWalking自然成为了首选.SkyAPM-dotnet是 ...

  8. Mybatis入门(三)------日志系统

    Mybatis日志系统 简介 Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种方式: •SLF4J •Apache Commons Logging •Log4j 2 •Log4j • ...

  9. Oracle数据库教程-数据定义语言(表操作)

    创建表 建表语法: CREATE TABLE 表名 ( 列1 数据类型 [primary key], 列2 数据类型 default 默认值 [not null], …, constraint 约束名 ...

  10. java面试题0001-区分类中重载方法的依据是什么?

    到底是根据什么来区分类中重载的方法? A:不同的返回值类型. B:不同的参数类型. C:不同的访问权限. D:不同的参数名称. 解析: Step1.我们先在DifferentiateReload类中创 ...