activities工作流之流程任務及監聽器
阿新 • • 發佈:2019-02-13
ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();
一、流程任務型別
①.個人任務
由某一個負責辦理,在任務表中通過assignee欄位記錄
②.公共任務(又稱組任務)
當前的任務可以由多個人辦理,一個人辦理即可流轉至下一個環節
③.接收任務
接收任務不是由某個人負責辦理,通過signal方法讓流程執行的
二、任務操作
①.公共任務查詢
TaskQuery query = pe.getTaskService().createTaskQuery(); String candidateUser = "李四"; //根據候選人過濾 query.taskCandidateUser(candidateUser); List<Task> list = query.list(); for (Task task : list) { System.out.println(task.getName()); }
②.拾取公共任務(即將公共任務變為個人任務)
String taskId = "1602";
String userId = "王五";
pe.getTaskService().claim(taskId , userId);
③.退回任務到公共任務列表
String taskId = "1602";
pe.getTaskService().setAssignee(taskId , null);
④.接受任務(接收任務不是由某個人負責辦理,通過signal方法讓流程執行的)
String executionId = "2101"; pe.getRuntimeService().signal(executionId );
三、流程監聽器
①.流程例項監聽器(監聽流程例項的事件)
(1)自定義流程例項監聽器
public class MyExecutionListener implements ExecutionListener {
//當監聽的事件傳送時執行此方法
public void notify(DelegateExecution execution) throws Exception {
System.out.println("自定義的監聽器執行了。。。1");
}
}
(2)註冊流程例項監聽器
在流程開始任務或者結束任務節點,畫流程圖時,選擇listener的class物件
②.任務監聽器(監聽流程中的任務,即監聽某個待辦節點)
(1)自定義流程例項監聽器
public class MyTaskListener implements TaskListener{
//監聽任務的事件
public void notify(DelegateTask delegateTask) {
String assignee = delegateTask.getAssignee();
String eventName = delegateTask.getEventName();
String name = delegateTask.getName();
String processInstanceId = delegateTask.getProcessInstanceId();
Set<String> variableNames = delegateTask.getVariableNames();
for (String key : variableNames) {
Object value = delegateTask.getVariable(key);
System.out.println(key + " = " + value);
}
System.out.println("一個任務["+name+"]被建立了,由["+assignee+"]負責辦理");
}
}
(2)註冊流程任務監聽器
在流程任務節點,畫流程圖時,選擇listener的class物件