.NET 開源工作流: Slickflow流程引擎高階開發(八) -- 審批閘道器(ApprovalOrSplit)模式的應用

slickflowteam發表於2020-11-23

前言:業務流程流轉過程中,審批型別的節點是比較常見的,在審批操作中,常見的操作就是就是主管人員對待辦事項進行同意或者拒絕。所以閘道器處理節點,就是需要對這兩種審批結果進行預備處理,審批閘道器是在或分支(OrSplit)的基礎上,特意針對審批型別進行處理(同意或拒絕),跟或分支的區別方式是:條件引數不用每次配置,而是對連線(Transition)的屬性進行快速配置就可以。審批閘道器建立的好處就是省去條件引數的傳遞,也簡化程式設計過程中的條件(Condition)變數的維護。值得在流程中推廣使用。

1. 或分支(OrSplit)介紹

 或分支是一種決策結果的處理,通常可以在連線(Transition)屬性上進行條件引數的配置,當條件表示式被滿足時,可以走該分支,當條件引數不滿足時,則會繼續遍歷下一個分支,依次完成該閘道器節點的執行。圖形示例和條件表示式示例如下:

 

 

 

 圖1-或分支

2. 審批閘道器(ApprovalOrSplit)介紹

審批閘道器是在或分支的基礎上進行的擴充套件,因為在一些審批過程中,對事項的處理要麼是同意,要麼是拒絕,結果導向非常明確,沒有其它條件引數的干擾。所以針對這種型別,可以構建出一種專門的審批閘道器模式。跟或分支閘道器模式的區別是:不用配置條件引數,而是增加了審批結果:同意或拒絕的列舉型別設定。轉移屬性的配置頁面如下圖所示:

 

 

 

 圖2-同意分支配置

 

3. 普通流程的審批閘道器模式應用

 在一個任務節點處理中,其後面可以直接繪製一個審批閘道器節點,這樣當使用者對該任務節點進行同意(Agreed)或者拒絕(Refused)的操作(可以呼叫WorkflowService介面),其對應的分支也會被選擇。其示例圖形如下:

     

 

 圖3-普通流程審批閘道器模式

 

 

 

4. 高階會籤流程的審批閘道器模式應用

會籤節點的處理,是多人對同一辦理事項的集中投票處理,所以會籤節點上面,會涉及到會籤型別,會籤通過率的設定等操作。會籤模式可以跟審批閘道器模式結合使用,因為會籤最終的結果就是要麼同意,要麼拒絕,所以非常適合審批閘道器模式的應用。會籤流程圖形示例如下:


 

圖4-會籤審批閘道器模式

在程式設計模型中,會籤節點能否通過,需要計算會籤節點的通過率,這個是根據每個會籤例項節點上的審批狀態(ApprovalStatus)的數值來進行計算。當例項中的會籤同意數量達到通過率要求,才可以使整個會籤節點通過,並且根據審批閘道器上的分支選擇匹配的分支,這樣不用額外的條件引數配置,簡化了會籤流程的處理。會籤審批資料如下:

 

 圖5-會籤節點審批狀態資料

5. 總結

1) 審批閘道器(ApprovalOrSplit)可以被廣泛應用在審批型別的節點操作中,因為其預備處理了同意或拒絕的兩種結果處理,所以是比較方便的。

2) 在BPMN圖形繪製過程中,建議保留閘道器(Gateway)節點的繪製,這樣比較方便業務人員對流程的理解,在有些廠商的流程模型中,是在任務節點的屬性上面配置了審批結果的分支選擇。圖形中的閘道器節點的出現,比較有助於使用者對業務流程的理解,值得使用者採納使用。

 

相關文章