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
相關文章
- linux 清空歷史執行記錄Linux
- activiti學習記錄
- activiti學習筆記二筆記
- 透過歷史記錄執行本地模型模型
- Sqlite學習筆記之Sqlite歷史SQLite筆記
- 查詢SQL Server的歷史執行記錄SQLServer
- activiti學習筆記(四)managementService筆記
- Git 學習記錄之演變歷史Git
- 檢視提交歷史 —— Git 學習筆記 11Git筆記
- Sermant執行流程學習筆記,速來抄作業筆記
- go 學習記錄--如何執行Go
- Java多執行緒學習筆記(六) 長樂未央篇Java執行緒筆記
- TcxMRUEdit 最近歷史記錄
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- Activiti工作流基礎學習筆記筆記
- 資料庫學習筆記1(資料管理歷史)資料庫筆記
- Dynamics CRM 在表單上顯示更改歷史記錄(稽核歷史記錄)
- Linux程式執行緒學習筆記Linux執行緒筆記
- Java 多執行緒學習筆記Java執行緒筆記
- Python學習筆記 - 多執行緒Python筆記執行緒
- Java學習筆記記錄(二)Java筆記
- win10執行記錄不儲存怎麼辦 win10執行儲存歷史記錄設定方法Win10
- HexMap學習筆記(六)——河流筆記
- 隨記(九):記錄Fastjson遠端命令執行流程ASTJSON
- Java多執行緒學習筆記(自用)Java執行緒筆記
- Python學習筆記|Python之執行緒Python筆記執行緒
- Spring 學習筆記(五)執行時注入Spring筆記
- spark學習筆記--叢集執行SparkSpark筆記
- JVM學習筆記——節碼執行引擎JVM筆記
- 以太坊學習筆記————4、以太坊發展歷史回顧筆記
- win10執行欄輸入歷史怎麼刪除 win10電腦的執行欄歷史記錄如何清理Win10
- vue學習筆記(六) ----- vue元件Vue筆記元件
- python學習筆記(六)——函式Python筆記函式
- win10怎樣看歷史記錄_win10檢視歷史記錄的方法Win10
- Spring學習筆記目錄Spring筆記
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- C# 多執行緒學習筆記 – 1C#執行緒筆記
- Win10執行無法儲存歷史記錄怎麼辦 win10開始執行記錄不儲存如何解決Win10