最近,我在做流程引擎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 根據 流程例項ID 獲取發起人
- Thread 併發執行例項thread
- NCF的Dapr應用例項的執行
- Qt中的多執行緒與執行緒池淺析+例項QT執行緒
- 唯一標識 Java 執行的例項Java
- 執行caffe自帶的mnist例項教程
- php例項化物件的例項方法PHP物件
- docker 執行elasticsearch單例項(elasticsearch:7.12.0)DockerElasticsearch單例
- Linux中執行多個MySQL例項LinuxMySql
- 【多執行緒與高併發3】常用鎖例項執行緒
- 在Windows中執行多個MySQL例項WindowsMySql
- Python程式和執行緒例項詳解Python執行緒
- 專案資源管理流程例項
- 刪除所有正在執行和退出的docker例項Docker
- Spring中Bean的例項化詳細流程SpringBean
- 例項後臺執行訓練或任務
- 執行緒問題2(注意例項變數)執行緒變數
- 【爬蟲】Heritrix 3.2安裝和執行例項爬蟲
- unittest例項
- OkHttpClient例項HTTPclient
- jQuery 例項jQuery
- Java 例項 - 如何檢視當前 Java 執行的版本?Java
- Java CXF介紹與例項Java
- Memcached安裝與使用例項
- expand 與 unexpand 命令例項教程
- 如何區分例項化網格中的每個例項
- CRLF Injection漏洞的利用與例項分析
- RDD用法與例項(五):glom的用法
- CSS 例項之文字的凸起與凹陷CSS
- 使用Portainer集中管理多地域內網執行的Docker例項AI內網Docker
- Java之執行緒同步完成售票例項的6種方式Java執行緒
- 策略模式例項模式
- Draggable 拖拽例項
- python例項1Python
- 類和例項
- pinctrl使用例項
- SQLMAP 例項COOKBOOKSQL