相關代碼參考gihub:https://github.com/changwensir/Activiti/tree/master/ActivitiDemo1java
實際工做流項目中,有一個功能叫作 歷史任務查詢。某一次流程的執行一共經歷了多少個任務.咱們其實查詢的是歷史任務實例表;git
固然這個表的話,無論是已經完結的任務 仍是正在執行的任務,都會記錄下這個表裏。Activiti給咱們提供了一個接口 finished;加了以後 就是查詢已經完結的任務; 同理還有一個接口unfinished 顧名思義,就是查詢未完結的任務;固然這兩個都不加,就是把全部任務都查詢出來;github
OK咱們上代碼:數據庫
[java] view plain copyapp
[java] view plain copyspa
開發中 有時候咱們也須要經過流程實例ID來查詢歷史流程實例。其實本質就是查詢歷史流程實例表;.net
這裏有一點說下 這個表的id和流程實例id始終是同樣的。因此Activiti沒有提供獲取流程實例id的接口;由於直接getId()獲取的值和流程實例Id是同樣的;code
[java] view plain copy對象
在流程系統開發中,咱們有這樣一種需求,當流程實例完成後,咱們要查下流程活動具體的執行狀況,好比這個流程實例何時開始的,何時結束的,以及中間具體的執行步驟,這時候,咱們須要查詢歷史流程活動執行表,act_hi_actinstblog
好比上面這個流程;Activiti提供了豐富的接口讓咱們查詢歷史活動,上代碼:
[java] view plain copy
執行結果: 任務ID:27502 流程實例ID:27501 活動名稱:Start 辦理人:null 開始時間:Thu Jun 30 10:13:20 CST 2016 結束時間:Thu Jun 30 10:13:20 CST 2016 =========================== 任務ID:27503 流程實例ID:27501 活動名稱:學生請假申請 辦理人:張三 開始時間:Thu Jun 30 10:13:20 CST 2016 結束時間:Thu Jun 30 10:16:13 CST 2016 =========================== 任務ID:30001 流程實例ID:27501 活動名稱:班長審批 辦理人:李四 開始時間:Thu Jun 30 10:16:13 CST 2016 結束時間:Thu Jun 30 10:16:36 CST 2016 =========================== 任務ID:32501 流程實例ID:27501 活動名稱:班主任審批 辦理人:王五 開始時間:Thu Jun 30 10:16:36 CST 2016 結束時間:Thu Jun 30 10:16:57 CST 2016 =========================== 任務ID:35001 流程實例ID:27501 活動名稱:End 辦理人:null 開始時間:Thu Jun 30 10:16:57 CST 2016 結束時間:Thu Jun 30 10:16:57 CST 2016 =========================== |
[java] view plain copy
某一次流程的執行一共設置的流程變量
[java] view plain copy
總結
因爲數據庫中保存着歷史信息以及正在運行的流程實例信息,在實際項目中對已完成任務的查看頻率遠不及對代辦和可接任務的查看,因此在activiti採用分開管理,把正在運行的交給RuntimeService、TaskService管理,而歷史數據交給HistoryService來管理。
這樣作的好處在於,加快流程執行的速度,由於正在執行的流程的表中數據不會很大
文章轉自《http://blog.csdn.net/ochangwen/article/details/51910695》,感謝做者分享!