1. 程式人生 > >【入門篇】Activiti查詢指定流程定義下待辦task

【入門篇】Activiti查詢指定流程定義下待辦task

需求

某人登入系統後,需要對他待辦的任務進行處理

涉及到的表

act_ru_task

方案

根據流程定義key和任務人,依賴taskservice服務,查詢act_ru_task表待辦內容

程式碼

//查詢當前使用者的待辦任務
@Test
public void findPersonalTaskList(){
	//得到runtimeService
	RuntimeService runtimeService = processEngine.getRuntimeService();
	//查詢任務使用TaskService
	TaskService taskService = processEngine.getTaskService();
	//流程定義key(流程定義的標識)
	String processDefinitionKey = "purchasingflow";//採購流程標識
	//任務負責人
	String assignee = "zhangsan";
	//建立查詢物件
	TaskQuery taskQuery = taskService.createTaskQuery();
	//設定查詢條件
	taskQuery.taskAssignee(assignee);
	//指定流程定義key,只查詢某個流程的任務
	taskQuery.processDefinitionKey(processDefinitionKey);
	//獲取查詢列表
	List<Task> list = taskQuery.list();
	
	for (Task task : list) {
		
		//流程例項id
		String processInstanceId = task.getProcessInstanceId();
		//根據流程例項id找到流程例項物件
		ProcessInstance processInstance = runtimeService
				.createProcessInstanceQuery()
				.processInstanceId(processInstanceId)
				.singleResult();
		//從流程例項物件獲取bussinesskey
		String businessKey = processInstance.getBusinessKey();
		//根據businessKey查詢業務系統,獲取相關的業務資訊
		System.out.println("流程例項id:" + task.getProcessInstanceId());
		System.out.println("任務id:" + task.getId());
		System.out.println("任務標識:" + task.getTaskDefinitionKey());
		System.out.println("任務負責人:" + task.getAssignee());
		System.out.println("任務名稱:" + task.getName());
		System.out.println("任務建立時間:" + task.getCreateTime());
	}
}