1. 程式人生 > >【入門篇】Activiti查詢指定流程定義下已完成的流程例項

【入門篇】Activiti查詢指定流程定義下已完成的流程例項

需求

使用者和管理員有時候需要統計,有多少個業務例項通過了稽核,這個時候需要查詢指定流程下的已完成的流程例項,用做後期的統計。

涉及到的表

act_hi_procinst:流程例項歷史表

方案

根據流程定義key,依賴historyservice服務來完成

程式碼(這裡可以附加其他的條件,來細化查詢結果)

public void queryHistoryProcessInstance() {
	
	HistoryService historyService = processEngine.getHistoryService();
	
	//建立歷史流程例項,查詢物件
	HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery();
	
	//設定查詢條件
	//指定流程定義key,只查詢某個業務流程的例項
	String processDefinitionKey = "purchasingflow";
	historicProcessInstanceQuery.processDefinitionKey(processDefinitionKey);
	//設定只查詢已完成的
	historicProcessInstanceQuery.finished();
	//資料列表
	List<HistoricProcessInstance> list = historicProcessInstanceQuery.list();
	
	for (HistoricProcessInstance historicProcessInstance : list) {
		System.out.println("===================");
		System.out.println("流程例項所屬流程定義id:" + historicProcessInstance.getProcessDefinitionId());
		System.out.println("流程例項id:"+ historicProcessInstance.getId());
		System.out.println("業務標識:" + historicProcessInstance.getBusinessKey());
		System.out.println("開始執行時間:" + historicProcessInstance.getStartTime());
		System.out.println("結束執行時間:" + historicProcessInstance.getEndTime());
		System.out.println("執行時長:" + historicProcessInstance.getDurationInMillis());
	}
}