activiti 候選人:(候選組)流程設計:
候選人:可以設定多個執行,但是真正執行的只有1個,只要有人簽收之後,其他人的代簽收任務將會沒有這些任務:即只要有人簽收任務,其他人的任務就直接被刪除(隱式的刪除)
流程設計
人事部審批節點候選人:zzz,xxx
部署流程後:流程定義ID:候選人:1:85004
查詢節點執行人(包括候選人和候選組):act_hi_identitylink
啟動流程:
public voidstartprocessByKey(String key){
Stringapplyuser ="zyq";
identityService.setAuthenticatedUserId(applyuser
Map<String,Object>variables = new HashMap();//設定流程變數
variables.put("applyUserId","qwer");
variables.put("applyTitle","test_請假申請流程");
variables.put("applyTime","7天");
variables.put("applyCtreateTime",new Date());
variables.put("applyReason","休假");
//設定候選人:上級領導審批
Listlist =new ArrayList();
list.add("zzz");
list.add("xxx");
variables.put("managerIds",list);
ProcessInstanceprocessInstance = runtimeService.startProcessInstanceByKey(key,variables);
Tasktask = taskService.createTaskQuery().processInstanceId(processInstance
System.out.println(task.getAssignee());
}
這時流程表中:
正在執行的變數:
正在執行的任務:(歷史表中也一樣)
查詢候選人任務:taskCandidateUser/taskCandidateOrAssigned
List<Task> list = taskService.createTaskQuery().taskCandidateUser(assignee).
orderByTaskCreateTime().desc().list();//查詢所擁有的候選任務
List<Task> list =taskService.createTaskQuery().taskCandidateOrAssigned(assignee)
.orderByTaskCreateTime().desc().list();//查詢所擁有的個人&候選任務
辦理候選任務
首先要領取任務:
taskService.claim(taskId, assignee);
taskService.complete(taskId,variables);
例如:xxx 簽收辦理了
public void mytaskClaimAComplete(String taskId,String assignee){
taskService.claim(taskId, assignee);
Map<String,Object>variables = new HashMap();//設定流程變數
variables.put("managerCheckResult", "同意");
variables.put("managerCheckreason","可用年休假");
variables.put("managerTime",new Date());
taskService.complete(taskId,variables);
}
歷史任務表:
上級領導審批人:assingee: xxx
在人事部審批節點也是要先簽收後辦理;
已辦理任務查詢沒有什麼特殊的,按常規查詢即可