1. 程式人生 > >工作流管理系統開發之二十 動態建立流程多分支節點

工作流管理系統開發之二十 動態建立流程多分支節點

      在工作流系統的實際應用中,經常會有根據流程例項的執行,動態的生成N個分支的情況,且每個分支又是一序列流程化的操作,待每個分支執行完成後,再彙集到一起,繼續原來的主流程。

例如,當一個單據填寫完成後,提交給稽核部門,需要根據每張單據的情況,決定提交給幾個部門稽核,並且每個部門的稽核是一系列流程化的操作,操作完成後,各個稽核部門再彙集起來。這樣就必須在流程例項執行時,根據預先定義好的單線流程,動態的生成多份分支,最後再彙集在一起,流轉到主流程。

流程圖例:





 

 
 
 

分支節點---合併節點 之間的操作是一個模板節點,當流程實際執行時,由前面的分配步驟,動態分配需要建立的分支個數。這之間的流程定義為建立分支的模板,每個分支的實際執行軌跡可以根據引數的不同而執行軌跡不盡相同。

實現過程:

每個業務流程在設計完成後,流程實際執行時,會根據設計的流程過程,每啟動一個流程就創建出一個流程例項。流程例項id是唯一標識一條流程記錄。業務流程,通常是通過業務表+流程例項id 和流程關聯起來,當流程例項執行時,執行流程的動作,並填寫相關的業務記錄,導致流程的步驟轉移,流程例項狀態得到升遷,流程得到遞進。

但當流程需要動態建立分支,動態分支節點後定義各步驟動作等節點會動態的創建出n份,且這n份的節點資訊是相同,有相同的節點id和節點名字,在流程引擎中,無法區分當前節點屬於那條分支。因此引入動態節點例項ID,此ID能唯一標識每流程例項的每分支路由。

當流程各分支節點執行時,各分支節點的流程執行軌跡應該是不盡相同,因此需要引入流程動態節點例項的引數(變數),通過對這些引數變數賦予不同值,來達到各分支路由的不同執行軌跡。

動態分支節點例項表,和引數表結構;



 

在流程執行時候,進入動態分支節點之前,需要執行動態分配步驟,來確定此流程例項需要動態建立幾個分支。

建立動態分支,設定引數表單