Activiti7-网关-包含网关
设计的流程是:
大于三天是部门经理和人事经理审批,
小于三天是部门总监和人事经理审批。
张三发起请假申请:
查询任务:由于设置的是4天,所以是部门经理和人事经理审批
部门经理审批:
查询任务:
人事经理审批:
查询任务:
由于连线设置了大于3天,总经理审批
所以周总经理审批:
查询任务:没有任务,流程结束了
代码参考:
package com.nanjing;
import com.nanjing.pojo.Evection;
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.List;
import java.util.Map;
public class ActivitiGatewayInclusive {
/**
* 部署流程定义
*/
@Test
public void testDeployment(){
// 1、创建ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2、得到RepositoryService实例
RepositoryService repositoryService = processEngine.getRepositoryService();
// 3、使用RepositoryService进行部署
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("leave15.bpmn20.xml") // 添加bpmn资源
// .addClasspathResource("bpmn/evection.png") // 添加png资源
.name("出差申请流程-包含网关")
.deploy();
// 4、输出部署信息
System.out.println("流程部署id:" + deployment.getId());
System.out.println("流程部署名称:" + deployment.getName());
}
/**
* 启动流程实例,设置流程变量的值
*/
@Test
public void startProcess(){
// 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取RunTimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
// 流程定义key
String key = "myEvection15";
// 创建变量集合
Map<String, Object> map = new HashMap<>();
// 创建出差pojo对象
Evection evection = new Evection();
// 设置出差天数
evection.setNum(4d);
// 定义流程变量,把出差pojo对象放入map
map.put("evection",evection);
map.put("assignee0","张三");
map.put("assignee1","刘经理");
map.put("assignee11","王总监");
map.put("assignee12","人事经理");
map.put("assignee2","周总经理");
// 启动流程实例,并设置流程变量的值(把map传入)
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(key, map);
// 输出
System.out.println("流程实例名称="+processInstance.getName());
System.out.println("流程定义id=="+processInstance.getProcessDefinitionId());
}
@Test
public void completTask(){
// 流程定义的Key
String key = "myEvection15";
// 任务负责人
String assingee = "周总经理";
// 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取taskservice
TaskService taskService = processEngine.getTaskService();
// 查询任务
Task task = taskService.createTaskQuery()
.processDefinitionKey(key)
.taskAssignee(assingee)
.singleResult();
if(task != null){
// 根据任务id来 完成任务
taskService.complete(task.getId());
}
}
@Test
public void queryTask(){
// 流程定义的Key
String key = "myEvection15";
// 任务负责人
//String assingee = "周总经理";
// 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取taskservice
TaskService taskService = processEngine.getTaskService();
// 查询任务
final List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey(key)
// .taskAssignee(assingee)
.list();
for(Task task:tasks){
// 根据任务id来 完成任务
System.out.println(task.getId());
System.out.println(task.getName());
System.out.println(task.getAssignee());
}
}
}
还没有评论,来说两句吧...