業務流程的流轉過程中,經常會有需要併發處理的過程,即流程流轉到下一步,同時產生多個當前需要處理的過程,這些過程不分先後處理順序,只要都處理完成了,最後匯聚到一起,再接著主流程執行,就可以了。例如:乙份報銷單,填寫完成後,同時啟動財務部門審核和本部門的審核,這兩部分的審核不分先後順序,只要都完成後,再將結果返回給報銷單填寫人,繼續下面的流轉。這種的並行處理的過程,就需要流程引擎支援分支和聚合。
分支又分為 靜態的分支 和動態的分支。
靜態的分支,即在業務流程建模之初,就能確定好有多少個分支,每個分支的具體流轉,具體處理過程。
動態的分支,即在業務流程建模的時候,只能確定好一條分支的模版處理過程,在流程例項執行時,每流程例項根據自己的情況確定本次能產生多少個分支,然後依據分支模版的處理過程,複製出n個併發的分支線路,每分支線路的執行軌跡根據動態分支引數的設定而不盡相同。
聚合也分為 靜態聚合 和 動態聚合
靜態聚合,和靜態分支匹配,當有靜態的分支併發流**生後,需要用靜態聚合來匯聚併發的線路。
動態聚合,和動態分支匹配,當有動態的分支併發流**生後,需要用動態聚合來匯聚併發的線路。
靜態分支模式:
動態分支模式:
靜態分支裡面可以巢狀 靜態分支:
動態分支裡面也可以巢狀 動態分支:
靜態分支裡面可以巢狀 動態分支 (暫未做示例)
動態分支裡面也可以巢狀 靜態分支:
注意:靜態分支,必須用靜態聚合來匯聚, 動態分支必須用動態聚合來匯聚。
為了 方便 設定匯聚條件,分支巢狀的時候,避免 內層聚合--到--外層聚合 的 這種流程建模方式,如果業務流程中,確實是內層聚合--到--外層聚合 的流轉,那就增加乙個 自動步驟的 節點。即 內層聚合--自動步驟--外層聚合。此自動步驟,帶有自動執行的方法,當流程流轉到這裡時,會自動完成此步驟。
靜態分支後產生的併發流程,在流程建模時候,和普通的流程節點一樣設計。
動態分支後產生的併發流程,有些引數需要在流程例項執行時設定,如動態分支的個數,每分支的步驟執行人等等。
動態分支節點,在流程建模時,先定義好需要那些引數,在分支模版節點中,引入這些引數。流程例項執行時,各流程例項根據實際情況給引數賦值,分支節點中遇到引數表示式,解釋並得到引數值,參與到流程的流轉中。
參見 web工作流管理系統開發之二十 動態建立流程多分支節點
工作流系統之三十 流程的靜態分支與動態分支
業務流程的流轉過程中,經常會有需要併發處理的過程,即流程流轉到下一步,同時產生多個當前需要處理的過程,這些過程不分先後處理順序,只要都處理完成了,最後匯聚到一起,再接著主流程執行,就可以了。例如 乙份報銷單,填寫完成後,同時啟動財務部門審核和本部門的審核,這兩部分的審核不分先後順序,只要都完成後,再...
工作流系統之三十五 自由流的實現
工作流系統在給業務流程建模的時候,按照流程引擎的設計,將業務流程定義出來。這個業務流程的每個流程例項,就按照流程建模時定義好的線路流轉。通常自由流是指向前的跳轉,回退流是回退到曾經執行過的軌跡。向前跳轉會略過一些節點,不執行,直接到達新的節點。回退流是回到原來的軌跡,再重新執行,對應重做 撤回 的功...
工作流系統之三十一 回退流的實現
在流程建模的時候,定義好了返回的線路,這種嚴格來說,不是回退流。例如,審核不通過,則返回重新填寫,這種只是條件路由。工作流的回退流,是流程例項在流轉的過程中,可以回退到執行軌跡的任意步驟,同時還可以輔助一些業務補償方法,使得回退時候的環境和原來執行時候的環境一樣。所以回退流,和流程引擎支援的正常的路...