最近,我在做流程引擎Activiti相關的東西,剛開始時的一個知識點困擾了我許久,那就是Activiti的ProcessInstance與Execution的區別,這是一個Activiti的難點,能夠懂得這個,Activiti也就入門大半了,下面,我就細緻的講解一下他們的區別。
(1)首先,我們來看一張我總結的圖片(這個圖片中兩條紅色的execution包含閘道器與開始與結束節點,這個圖片能夠理解,那就不用再細緻的看了)
這張圖片就細緻的說明了Activiti中流程例項ProcessInstance與Execution的區別,ProcessInstance與Execution的區別主要表現在有分支的流程中:
(i)如果流程是單線流程,那麼此時的ProcessInstance就是Execution
,這可以再資料庫表act_ru_execution表中看出,在資料庫表act_ru_exection表中的ID_與PROC_INST_ID_的值相同,這時的資料代表的就是ProcessInstance的相關資料,標紅的資料再與上面條資料進行對比,就會非長容易的發現,再標紅的資料下面沒有資料的PARENT_ID_是等與標紅的PROC_INST_ID_的,因為act_ru_execution表就是執行例項表,所以ProcessInstance也就是Execution的一種特殊情況,所以此時的ProcessInstance就是Execution
(ii)下面我們來說一下圖中的分支流程部分,在圖中可以看出,一個流程會對應一個ProcessInstance還有與分支數量相同的Execution
,然後我們通過act_ru_exection表中的資料細緻的分析與對比一下
此時我們圖中所畫的流程圖在act_ru_execution表中對應的三條資料,與單線流程的知識相結合可以得知,吃屎得第一條資料對應的就是ProcessInstance的相關資料,三條資料的PROC_INST_ID_相等,可以得知它們是屬於同一流程,再通過下面兩條資料的PARENT_ID_等於第一條資料的PROC_INST_ID_可以知道,這兩條資料是兩條不同分支的執行例項資訊Execution
(2)然後,我們再在程式碼層面說說ProcessInstance與Execution的關係
在這裡,我們可以看出ProcessInstance繼承與Execution
,本質上ProcessInstance與Execution是一個東西。
Activiti的流程例項【ProcessInstance】與執行例項【Execution】
相關文章
- 3.activiti7 流程例項
- Activiti 學習筆記四:流程例項、任務的執行筆記
- activiti 根據 流程例項ID 獲取發起人
- java多執行緒例項Java執行緒
- dddsample一個可執行的例項
- Thread 併發執行例項thread
- 單節點執行ASM例項ASM
- Qt中的多執行緒與執行緒池淺析+例項QT執行緒
- NCF的Dapr應用例項的執行
- 唯一標識 Java 執行的例項Java
- 執行caffe自帶的mnist例項教程
- C#實現單例項執行C#單例
- JVM 位元組碼執行例項分析JVM
- 限制程式執行例項數 (轉)
- ruby中的類例項變數和例項的例項變數變數
- php例項化物件的例項方法PHP物件
- 【多執行緒與高併發3】常用鎖例項執行緒
- JavaScript單例模式概念與例項JavaScript單例模式
- 單例與單例項之爭單例
- 執行緒控制時間的隨筆(例項)執行緒
- 【RAC】rac中如何指定job的執行例項
- Linux中執行多個MySQL例項LinuxMySql
- 在Windows中執行多個MySQL例項WindowsMySql
- docker 執行elasticsearch單例項(elasticsearch:7.12.0)DockerElasticsearch單例
- crontab定期執行命令詳解,以及例項
- linux執行緒池簡單例項Linux執行緒單例
- 單例項刪除ASM例項單例ASM
- 專案資源管理流程例項
- 研發專案流程例項(轉)
- 刪除所有正在執行和退出的docker例項Docker
- 關於JSP 例項方法的執行緒安全JS執行緒
- 有關jbpm流程例項版本的問題
- Ajax Post 與 Get 例項
- 引用物件與例項物件物件
- 執行緒問題2(注意例項變數)執行緒變數
- Python程式和執行緒例項詳解Python執行緒
- 【爬蟲】Heritrix 3.2安裝和執行例項爬蟲
- c++11多執行緒入門例項C++執行緒