在工作流管理系統的實際應用中,經常有這樣的需求,當一個流程流轉到分支的時候,需要產生幾個分支不是在流程定義的時候預先能確定好的,而是在每個流程實例流轉的時候,根據實際的需要動態的產生的。
例如,當一個申請單填寫完成后,交個下一步驟去審批,需要幾組,需要根據申請單中申請的項目數來決定,
如果申請單中有2個明細項,就需要2組人審批;
如果申請單中有3個明細項,就需要3組人審批。
這樣的需求適合用動態分支來實現,產生多少個分支根據申請單中用戶填寫的明細項來決定,當有3項,就做3個動態分支,有2項,就做2個,有n項,做n個分支,每個流程實例是不一樣的,在流程定義的時候,無法確定分支的個數,因此只能做動態分支,在流程實例運行的時候,再根據實際的需要來產生分支的個數。
在動態分支--....--動態合並 這之間的節點,在流程定義的時候,只能做一個節點來定義,即步驟的執行人等,只能是一次性的定義。當需要在每個動態分支中有不同的執行人的時候,則需要在動態分支節點上設置動態分支參數,分支后的節點參數人,選擇設置的動態分支參數。在進入動態分支之前給這些參數賦值好相應的執行人,按每個分支來分配,這樣就能達到各個分支不同了。
如上面的示例中,申請單明細中,如果有A項目,則需要A項目組的上級來審批。
如果有B項目,則需要B項目組的上級來審批。
這時候,就可以在動態分支節點上,先定義一個動態分支參數,在進入分支之前,根據申請單明細項目,找到項目組的上級,賦值給分支變量,分分支來分配變量值。
也可以在進入分支后,核對資質,或項目評估的步驟中,再按項目組找上級,賦值給分支變量,當到達審批節點的時候,就已經分配好了步驟的執行人了。
動態分支在工作流的實際應用中,經常會遇到,需要根據實際情況來確定。動態分支中在流程實例運行的時候,每個分支會產生一個分支實例id,每個節點在運行的時候,也會有運行軌跡id,都會記錄到流程的運行軌跡中。根據動態分支實例id或運行軌跡id,和業務表關聯,也能定位到每個節點上辦理的業務數據,在流程的跟蹤和監控上,分支實例id和軌跡id都可以發揮出作用。
有些審批步驟,可以參與審批的人數不定,但是只是一個審批節點的,這種用會簽型的任務節點,就可以了,不需要用動態分支,動態分支通常是分支和合並之間還有一序列的處理過程,並且每流程實例在運行時產生的分支個數不一樣,這種類型的需求才適合用動態分支。