activities工作流之流程任務及監聽器

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對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章