什么是包含网关?
包含网关可以看做是排他网关和并行网关的结合体,和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析他们,但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关是一样的
其实在我看来就是
排他网关:解析条件,要不报错,要不走一个
并行网关:不解析条件,不报错,都走
包含网关:解析条件,条件成立就走,不成立就不走,全都不成立报错
需求:
体检流程
如果是领导 就走 常规,抽血,VIP,普通员工只走常规,抽血
使用流程变量控制
领导:userType=2
员工:userType=1
package com.itheima.test.testGateWay;
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.Before;
import java.util.HashMap;
import java.util.Map;
/**
* 测试包含网关
*/
public class Test {
ProcessEngine defaultProcessEngine;
@Before
public void init() {
defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
}
@org.junit.Test
public void deployment(){
RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("pic/gateway/holidayGateway3.bpmn")
.name("体检流程")
.deploy();
System.out.println(deploy);
}
@org.junit.Test
public void startProcessInstance(){
RuntimeService runtimeService = defaultProcessEngine.getRuntimeService();
Integer userType = 1;
Map<String,Object> map = new HashMap<>();
map.put("userType",userType);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1", map);
System.out.println(processInstance);
}
/**
* 提交任务
*/
@org.junit.Test
public void completTask(){
String assignee = "sunqi";
Task task = querySingResultByAssignee(assignee);
System.out.println(task);
TaskService taskService = defaultProcessEngine.getTaskService();
taskService.complete(task.getId());
}
/**
* 查询用户唯一任务
* @param assignee
* @return
*/
public Task querySingResultByAssignee(String assignee){
TaskService taskService = defaultProcessEngine.getTaskService();
return taskService.createTaskQuery().processDefinitionKey("myProcess_1").taskAssignee(assignee).singleResult();
}
}
主要查看act_hi_actinst表的流程变化,既可以发现
userType=1 领取->常规->抽血->早餐->结束
userType=2 领取->常规->抽血->早餐->VIP->结束
作者:彼岸舞
时间:2020\09\08
内容关于:Activiti工作流
本文来源于网络,只做技术分享,一概不负任何责任
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。