Activiti工作流學習筆記入門(四)——流程例項的構建、判斷狀態、歷史流程例項查詢和歷史活動查詢
阿新 • • 發佈:2018-12-21
第一節:構建學生請假審批流程
第二節:執行物件概念
第三節:判斷流程例項狀態
第四節:歷史流程例項查詢
第五節:歷史活動查詢
package com.java1234.activiti.flow; import java.util.List; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.history.HistoricActivityInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; public class StudentLeaveProcess { /** * 獲取預設流程引擎例項,會自動讀取activiti.cfg.xml檔案 */ private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /** * 部署流程定義 */ @Test public void deploy() { Deployment deployment = processEngine.getRepositoryService()//獲取部署相關Service .createDeployment()//建立部署 .addClasspathResource("diagrams/StudentLeaveProcess.bpmn")//載入資原始檔 .addClasspathResource("diagrams/StudentLeaveProcess.png")//載入資原始檔 .name("學生請假流程")//流程名稱 .deploy(); System.out.println("流程部署ID:"+deployment.getId()); System.out.println("流程部署Name:"+deployment.getName()); } /** * 啟動流程例項 */ @Test public void start() { ProcessInstance pi = processEngine.getRuntimeService()//執行時Service .startProcessInstanceByKey("studentLeaveProcess");// System.out.println("流程例項ID:"+pi.getId()); System.out.println("流程部署Name:"+pi.getProcessDefinitionId()); } /** * 檢視任務 */ @Test public void findTask() { String assignee = "學生"; List<Task> taskList = processEngine.getTaskService() .createTaskQuery() .taskAssignee(assignee) .list(); for (Task task : taskList) { System.out.println("任務ID:"+task.getId()); System.out.println("任務名稱:"+task.getName()); System.out.println("任務建立時間:"+task.getCreateTime()); System.out.println("任務為派人:"+task.getAssignee()); System.out.println("流程例項ID:"+task.getProcessDefinitionId()); } } /** * 完成任務 */ @Test public void completeTask() { processEngine.getTaskService() .complete("15004"); } /** * 查詢流程狀態(正在執行or已經執行結束) */ @Test public void processState() { ProcessInstance pi = processEngine.getRuntimeService() .createProcessInstanceQuery() .processInstanceId("15001") .singleResult(); if(pi!=null){ System.out.println("流程正在執行!"); }else{ System.out.println("流程已經執行結束!"); } } /** * 歷史任務查詢 */ @Test public void historyTaskList() { List<HistoricTaskInstance> list = processEngine.getHistoryService() .createHistoricTaskInstanceQuery() .processInstanceId("15001") .finished() .list(); for (HistoricTaskInstance hti : list) { System.out.println("任務ID:"+hti.getId()); System.out.println("流程例項ID:"+hti.getProcessInstanceId()); System.out.println("任務名稱:"+hti.getName()); System.out.println("辦理人:"+hti.getAssignee()); System.out.println("開始時間:"+hti.getStartTime()); System.out.println("結束時間:"+hti.getEndTime()); System.out.println("================================="); } } /** * 歷史活動查詢 */ @Test public void historyActInstantceList() { List<HistoricActivityInstance> list = processEngine.getHistoryService()//歷史相關Service .createHistoricActivityInstanceQuery()//建立歷史活動例項查詢 .processInstanceId("15001")//執行流程例項id .finished() .list(); for (HistoricActivityInstance hai : list) { System.out.println("活動ID:"+hai.getId()); System.out.println("流程例項ID:"+hai.getProcessInstanceId()); System.out.println("活動名稱:"+hai.getActivityName()); System.out.println("辦理人:"+hai.getAssignee()); System.out.println("開始時間:"+hai.getStartTime()); System.out.println("結束時間:"+hai.getEndTime()); System.out.println("================================="); } } }