任务加签,转办
流程:开始---》经理---》财务-----》老板---》结束
加签:
@Test
public void addOneTask() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery()
.processInstanceBusinessKey("bussiness2")
.singleResult();
taskService.delegateTask(task.getId(), "加签人1");
}
加签审批通过:
@Test
public void jiaCompleteProcess(){
String user = "加签人1";
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
Task taskSingle = taskService.createTaskQuery()
.processInstanceBusinessKey("bussiness2")
.taskAssignee(user)
.singleResult();
if(Objects.isNull(taskSingle)){
System.out.println("此加签人当前节点没有审批任务");
return;
}
taskService.resolveTask(taskSingle.getId());
System.out.println("任务: bussiness2 加签人 ==> "+user+"审批完成");
}
转办:
@Test
public void trunTask() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery()
.processInstanceBusinessKey("bussiness2")
.singleResult();
taskService.setAssignee(task.getId(), "转签人1");
}
转办人完成(就是正常的完成)
@Test
public void completeProcess(){
String user = "转签人1";
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
Task taskSingle = taskService.createTaskQuery()
.processInstanceBusinessKey("bussiness2")
.taskAssignee(user)
.singleResult();
if(Objects.isNull(taskSingle)){
System.out.println("此人当前节点没有审批任务");
return;
}
taskService.complete(taskSingle.getId());
System.out.println("任务: bussiness1 ==> "+user+"审批完成");
}
抄送任务:
第 1 种方式:
根据业务逻辑实现就行了
创建流程时根据业务id创建抄送信息,单独存表,
业务id,抄送人id,是否已读
第 2 种方式:
审批流不存在子任务时(也就是没用到 act_run_task ===> parent_task_id 这个字段时 就可以用这个字段保存业务id,当做此业务抄送)
createSonTask("bussiness2");
public void createSonTask(String bussinessId){
String users = "曹操,典韦,刘备";
List<String> split = Arrays.asList(users.split(","));
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
split.forEach(e->{
Task newtask = taskService.newTask();
newtask.setAssignee(e);
newtask.setName("抄送任务");
newtask.setParentTaskId(bussinessId);
taskService.saveTask(newtask);
});
}
@Test
public void findSonTask(){
String user = "曹操";
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
List<Task> taskList = taskService.createTaskQuery().taskAssignee(user).list()
.stream().filter(e->StringUtils.isNotBlank(e.getParentTaskId())).collect(Collectors.toList());
System.out.println(taskList);
}
@Test
public void readSonTask(){
String user = "刘备";
String businessId = "";
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery().taskAssignee(user).list();
for(Task task:list){
if(!StringUtils.isBlank(businessId) && StringUtils.equals(businessId,task.getParentTaskId())){
taskService.complete(task.getId());
break;
}else {
taskService.complete(task.getId());
}
}
}