Activiti的流程實例【ProcessInstance】與執行實例【Execution】


最近,我在做流程引擎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是一個東西。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM