Activiti 學習筆記六:流程執行歷史記錄
一、查詢歷史流程例項
查詢按照某個流程定義的規則一共執行了多少次流程
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/** 查詢歷史流程例項 */
@Test
public void findHistoryProcessInstance() {
String processInstanceId = "2101";
HistoricProcessInstance hpi = processEngine.getHistoryService()// 與歷史資料(歷史表)相關的Service
.createHistoricProcessInstanceQuery()// 建立歷史流程例項查詢
.processInstanceId(processInstanceId)// 使用流程例項ID查詢
.orderByProcessInstanceStartTime().asc().singleResult();
System.out.println(hpi.getId() + " " + hpi.getProcessDefinitionId() + " " + hpi.getStartTime() + " "
+ hpi.getEndTime() + " " + hpi.getDurationInMillis());
}
二、查詢歷史活動
某一次流程的執行一共經歷了多少個活動
/** 查詢歷史活動 */
@Test
public void findHistoryActiviti() {
String processInstanceId = "2101";
List<HistoricActivityInstance> list = processEngine.getHistoryService()//
.createHistoricActivityInstanceQuery()// 建立歷史活動例項的查詢
.processInstanceId(processInstanceId)//
.orderByHistoricActivityInstanceStartTime().asc()//
.list();
if (list != null && list.size() > 0) {
for (HistoricActivityInstance hai : list) {
System.out.println(hai.getId() + " " + hai.getProcessInstanceId() + " " + hai.getActivityType()
+ " " + hai.getStartTime() + " " + hai.getEndTime() + " " + hai.getDurationInMillis());
System.out.println("#####################");
}
}
}
三、查詢歷史任務
某一次流程的執行一共經歷了多少個任務
/** 查詢歷史任務 */
@Test
public void findHistoryTask() {
String processInstanceId = "2101";
List<HistoricTaskInstance> list = processEngine.getHistoryService()// 與歷史資料(歷史表)相關的Service
.createHistoricTaskInstanceQuery()// 建立歷史任務例項查詢
.processInstanceId(processInstanceId)//
.orderByHistoricTaskInstanceStartTime().asc().list();
if (list != null && list.size() > 0) {
for (HistoricTaskInstance hti : list) {
System.out.println(hti.getId() + " " + hti.getName() + " " + hti.getProcessInstanceId() + " "
+ hti.getStartTime() + " " + hti.getEndTime() + " " + hti.getDurationInMillis());
System.out.println("################################");
}
}
}
四、查詢歷史流程變數
某一次流程的執行一共設定的流程變數
/** 查詢歷史流程變數 */
@Test
public void findHistoryProcessVariables() {
String processInstanceId = "2101";
List<HistoricVariableInstance> list = processEngine.getHistoryService()//
.createHistoricVariableInstanceQuery()// 建立一個歷史的流程變數查詢物件
.processInstanceId(processInstanceId)//
.list();
if (list != null && list.size() > 0) {
for (HistoricVariableInstance hvi : list) {
System.out.println(hvi.getId() + " " + hvi.getProcessInstanceId() + " " + hvi.getVariableName()
+ " " + hvi.getVariableTypeName() + " " + hvi.getValue());
System.out.println("###############################################");
}
}
}
五、總結
由於資料庫中儲存著歷史資訊以及正在執行的流程例項資訊,在實際專案中對已完成任務的檢視頻率遠不及對代辦和可接任務的檢視,所以在activiti採用分開管理,把正在執行的交給RuntimeService、TaskService管理,而歷史資料交給HistoryService來管理。
這樣做的好處在於,加快流程執行的速度,因為正在執行的流程的表中資料不會很大。
演示demo原始碼下載:http://download.csdn.net/detail/xunzaosiyecao/9623532
本文部分內容整理自itcast講義,在此表示感謝。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- Activiti 學習筆記四:流程例項、任務的執行筆記
- Activiti 學習筆記五:流程變數筆記變數
- Activiti學習筆記三:管理流程定義筆記
- Activiti 學習筆記十:開始活動節點(判斷流程是否結束及查詢歷史)筆記
- 透過歷史記錄執行本地模型模型
- activiti學習筆記二筆記
- Sqlite學習筆記之Sqlite歷史SQLite筆記
- Git 學習記錄之演變歷史Git
- Activiti 學習筆記一到六小結筆記
- activiti學習筆記(四)managementService筆記
- Activiti 學習筆記 小結筆記
- 檢視提交歷史 —— Git 學習筆記 11Git筆記
- Activiti 學習筆記九:並行閘道器(parallelGateWay)筆記並行ParallelGateway
- Sermant執行流程學習筆記,速來抄作業筆記
- go 學習記錄--如何執行Go
- Activiti 學習筆記七:連線(SequenceFlow)筆記
- Java多執行緒學習筆記(六) 長樂未央篇Java執行緒筆記
- Javascript 學習 筆記六JavaScript筆記
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- iOS執行緒學習筆記iOS執行緒筆記
- 多執行緒學習筆記執行緒筆記
- 資料庫學習筆記1(資料管理歷史)資料庫筆記
- VUE 執行流程 個人筆記Vue筆記
- Activiti工作流基礎學習筆記筆記
- Activiti 學習筆記12:分配個人任務筆記
- Activiti 學習筆記13:分配組任務筆記
- git重寫歷史記錄Git
- Java學習筆記記錄(二)Java筆記
- Java 多執行緒學習筆記Java執行緒筆記
- java學習筆記--多執行緒Java筆記執行緒
- Java學習筆記之執行緒Java筆記執行緒
- 多執行緒學習筆記 (轉)執行緒筆記
- HexMap學習筆記(六)——河流筆記
- android學習筆記六Android筆記
- Spss 學習筆記(六)SPSS筆記
- win10執行記錄不儲存怎麼辦 win10執行儲存歷史記錄設定方法Win10
- Activiti學習筆記一:建立資料庫表筆記資料庫