提示:此为在bpmn流程图中设置会签
前言
会签就是多人处理完成过后才进入下一节点,下一级节点处理人仅处理一次任务
一、bpmn设置
示例:${nrOfCompletedInstances/nrOfInstances==1} ==1表示所有任务实例完成才可以进入下一个节点 (==0.75则需要完成3/4) 以此类推
二、代码实现
@RequestMapping("confirmNodeProcessEmployee")
public void confirmNodeProcessEmployee() {
//根据bpmn文件部署流程
repositoryService.createDeployment().addClasspathResource("processes/test.bpmn").deploy();
// 设置多个处理人变量 这里设置了三个人
Map<String, Object> map= new HashMap<>();
List<String> manageList= new ArrayList<>();
manageList.add("zhangsan");
manageList .add("lisi");
manageList.add("wangwu");
map.put("manageList", manageList); //map中的key为流程图中的Collection设置的值
//采用key来启动流程定义并设置流程变量,返回流程实例
ProcessInstance pi = runtimeService.startProcessInstanceByKey("test", map);
String processId = pi.getId();
System.out.println("流程创建成功,当前流程实例ID:"+processId);
// 查看zhangsan的任务
List<Task> list = taskService.createTaskQuery().taskAssignee("zhangsan").list();
if(list!=null && list.size()>0){
for(Task task:list){
System.out.println("任务ID:"+task.getId());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
}
}
// 查看lisi的任务
List<Task> list2 = taskService.createTaskQuery().taskAssignee("lisi").list();
if(list2!=null && list2.size()>0){
for(Task task:list2){
System.out.println("任务ID:"+task.getId());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
}
}
// 查看wangwu的任务
List<Task> list3 = taskService.createTaskQuery().taskAssignee("wangwu").list();
if(list3!=null && list3.size()>0){
for(Task task:list3){
System.out.println("任务ID:"+task.getId());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
}
}
}
/**
* 查询全部流程任务
* @date 2020/9/10 11:22
**/
@GetMapping("/query")
public WebResult findAllProcessTask() {
List<Task> taskList = taskService.createTaskQuery().list();
List<ActRuTask> actRuTaskList = taskList.stream().map(task -> {
ActRuTask ruTask = new ActRuTask();
BeanUtils.copyProperties(task,ruTask);
return ruTask;
}).collect(Collectors.toList());
for (ActRuTask task : allProcessTask) {
System.out.println("流程实例ID:" + task.getProcessInstanceId());
System.out.println("任务ID:" + task.getId()); //5002
System.out.println("任务负责人:" + task.getAssignee());
System.out.println("任务名称:" + task.getName());
}
return WebResult.success().withData(allProcessTask);
}