Activiti网关--包含网关
1、什么是包含网关
包含网关可以看做是排他网关和并行网关的结合体;和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们;但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样,包含网关的功能是基于进入和外出顺序流的;
分支:所有外出顺序流的条件都会被解析,结果为true的顺序会以并行方式继续执行,会为每个顺序流创建一个分支;
汇聚:所有并行分支达到包含网关,会进入等待状态,知道每个包含流程token的进入顺序流的分支都到达;这是与并行网关的最大不同;换句话说,包含网关只会等待选中执行了的进入顺序流;在汇聚之后,流程会穿过包含网关继续执行;
2、流程定义


3、部署流程
package com.zn; import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.junit.Test; public class ActivitiInclusiveGateway {
/**
* 流程部署
*/
@Test
public void deployment() {
//获取ProcessEngine对象 默认配置文件名称:activiti.cfg.xml 并且configuration的Bean实例ID为processEngineConfiguration
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取RepositoryService对象进行流程部署
RepositoryService repositoryService = processEngine.getRepositoryService();
//进行部署,将对应的流程定义文件生成到数据库当中,作为记录进行保存
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("bmpnfiles/holidayInclusiveGateway.bpmn") //加载流程文件
.name("请假流程-包含网关") //设置流程名称
.key("holiday")
.deploy(); //部署 //输出部署信息
System.out.println("流程名称:" + deployment.getName());
System.out.println("流程ID:" + deployment.getId());
System.out.println("流程Key:" + deployment.getKey());
}
}
控制台:

数据库:

4、启动流程实例(userType=1)
当userType=1执行的时候,会走常规体验项和抽血化验以及早餐,如果是userType=1会走全部四项;
package com.zn; import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test; import java.util.HashMap;
import java.util.Map; public class ActivitiInclusiveGateway { /**
* 启动流程实例
*/
@Test
public void startInstance() {
//获取ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
//设置流程变量
Map<String, Object> assMap = new HashMap<>();
assMap.put("userType", 1);
//启动流程实例
ProcessInstance holidayGroup = runtimeService.startProcessInstanceByKey("holidayInc", assMap);
System.out.println("流程实例:" + holidayGroup.getId());
}
}
数据库:

5、任务处理
package com.zn; import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test; import java.util.HashMap;
import java.util.Map; public class ActivitiInclusiveGateway { /*
*任务处理
*/
@Test
public void completeTask(){
//获取ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取TaskService对象
TaskService taskService = processEngine.getTaskService();
//查询到自己的任务,然后通过任务ID进行提交
Task task = taskService.createTaskQuery().processDefinitionKey("holidayInc").taskAssignee("zhangsan").singleResult();
//任务处理
taskService.complete(task.getId());
}
}
数据库:

在走到包含网关时,需要判断条件,符合条件的分支,将会执行,最终进行汇聚;
6、任务处理
package com.zn; import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test; import java.util.HashMap;
import java.util.Map; public class ActivitiInclusiveGateway { /*
*任务处理
*/
@Test
public void completeTask(){
//获取ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取TaskService对象
TaskService taskService = processEngine.getTaskService();
//查询到自己的任务,然后通过任务ID进行提交
Task task = taskService.createTaskQuery().processDefinitionKey("holidayInc").taskAssignee("lisi").singleResult();
//任务处理
taskService.complete(task.getId());
}
}
数据库:

7、任务处理
package com.zn; import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test; import java.util.HashMap;
import java.util.Map; public class ActivitiInclusiveGateway { /*
*任务处理
*/
@Test
public void completeTask(){
//获取ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取TaskService对象
TaskService taskService = processEngine.getTaskService();
//查询到自己的任务,然后通过任务ID进行提交
Task task = taskService.createTaskQuery().processDefinitionKey("holidayInc").taskAssignee("wangwu").singleResult();
//任务处理
taskService.complete(task.getId());
}
}
数据库:

8、任务处理
package com.zn; import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test; import java.util.HashMap;
import java.util.Map; public class ActivitiInclusiveGateway { /*
*任务处理
*/
@Test
public void completeTask(){
//获取ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取TaskService对象
TaskService taskService = processEngine.getTaskService();
//查询到自己的任务,然后通过任务ID进行提交
Task task = taskService.createTaskQuery().processDefinitionKey("holidayInc").taskAssignee("sunqi").singleResult();
//任务处理
taskService.complete(task.getId());
}
}
数据库:

执行完成后,整个流程就结束:

Activiti网关--包含网关的更多相关文章
- Activiti7 网关(包含网关)
什么是包含网关? 包含网关可以看做是排他网关和并行网关的结合体,和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析他们,但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关是一样的 ...
- activiti入门3排他网关,并行网管,包含网关,事件网关(转)
网关用来控制流程的流向 网关可以消费也可以生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量 写个带有分支的一个基本流程 流程图: 部署 ...
- activiti入门3排他网关,并行网管,包括网关,事件网关
网关用来控制流程的流向 网关能够消费也能够生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量 写个带有分支的一个基本流程 流程图: wa ...
- Activiti7 网关(并行网关)
什么是并行网关? 并行网关允许将流程分成多条分支,也可以将多条分支合并到一起,并行网关是基于进入和外出顺序流的 fork分支: 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支 jion汇聚: ...
- Activiti7 网关(排他网关)
什么是排他网关? 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用于在流程中实现决策,当流程执行到这个网关,所有分支都会判断条件是否为true,如果为true则执行该分支 注意:排他网关 ...
- Activiti网关--排他网关
排他网关 1.什么是排他网关 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策. 当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分 ...
- Activiti网关--并行网关
1.什么是并行网关 并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,并行网关的功能是基于进 入和外出顺序流的: fork 分支: 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支. ...
- SpringCloud(六):服务网关zuul-API网关(服务降级和过滤)
什么是API网关: 在微服务架构中,通常会有多个服务提供者.设想一个电商系统,可能会有商品.订单.支付.用户等多个类型的服务,而每个类型的服务数量也会随着整个系统体量的增大也会随之增长和变更.作为UI ...
- 电信网关-天翼网关-GPON-HS8145C设置桥接路由拨号认证
需求描述: 自从用了电信的200M光纤,解析卡成狗.打开域名3秒左右,不常见的域名8s左右.怀疑电信的网关有问题,故想让路由器拨号认证,进而设置dns解析域名 修改为路由器拨号认证,域名解析缓慢依然没 ...
随机推荐
- tensorflow feature_column踩坑合集
踩坑内容包含以下 feature_column的输入输出类型,用一个数据集给出demo feature_column接estimator feature_column接Keras feature_co ...
- 编程老司机带你玩转 CompletableFuture 异步编程
本文从实例出发,介绍 CompletableFuture 基本用法.不过讲的再多,不如亲自上手练习一下.所以建议各位小伙伴看完,上机练习一把,快速掌握 CompletableFuture. 个人博文地 ...
- Flutter 裁剪类组件 最全总结
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 ClipRect ClipRect组件使用矩形裁剪子组件, ...
- Map - 与君初相识
前言 生活中,我们常会看到这样一种集合:IP地址与主机名,身份证号与个人等,这种一 一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对应关系的对象,即 java.util.Map 接口 ...
- 在Tomcat上发布Web项目的方式
一. Tomcat的使用: 安装:解压压缩包即可 注意:安装目录不能有中文 目录结构: ①bin:可执行文件 ②conf:可执行文件 ③lib:依赖的jar包 ④logs:日志文件 ⑤:temp:临时 ...
- http2 技术整理 nginx 搭建 http2 wireshark 抓包分析 server push 服务端推送
使用 nginx 搭建一个 http2 的站点,准备所需: 1,域名 .com .net 均可(国内域名需要 icp 备案) 2,云主机一个,可以自由的安装配置软件的服务器 3,https 证书 ht ...
- py2.7 批量转换文件为 utf8 编码
source insight 不支持 utf8 ,但是在 linux 上查看的时候是 utf8 编码,就会显示不正常,所以写了个 python 小脚本,可以批量转换 py2.7 #coding:utf ...
- Oracle根据实体类比对2个数据库结构差异(demo)
源起 在公司做项目时 经常出现 实体结构和线上的数据结构以及公司开发库数据结构不匹配的问题 但是又不能直接把开发库导入到生产库因为生产库已经有实际数据了 所以弄了一个小工具 此处只做记录用 demo级 ...
- eslint常用三种校验语句
1.关闭对整段代码的校验 /* eslint-disable */ code /* eslint-enable */ 2.关闭当前行代码的校验 line code // eslint-disable- ...
- fatal: I don't handle protocol 'git@http' 解决
新建的git,在git push的时候遇到了报错“fatal: I don't handle protocol 'git@http'” 网上搜这个错误基本都是“fatal: I don't handl ...