.NET 開源工作流: Slickflow流程引擎高階開發(九) -- 條件事件模式解釋及應用

slickflowteam發表於2021-11-08

前言:在流程流轉過程中,有時候需要條件模式的支援,這樣可以使得流程流轉更加靈活多變。比如在業務變數滿足一定的條件時,可以啟動特定配置的流程(或者位於主流程內部的子流程)。本文主要描述條件啟動和條件中間流轉的兩種型別來滿足業務過程的需要。

1. 條件啟動

 

 如上圖所示,這是一個條件啟動的流程,開始節點的型別是條件節點,流程啟動的要求是在條件節點上定義的條件表示式被滿足。

 

 條件啟動節點上的條件定義如上圖所示,其中條件表示式: days==3,就是明確定義了流程啟動需要滿足的條件。days是條件變數,數值3表示需要滿足的條件引數。在啟動流程時,需要傳遞條件引數days的數值,如果days的數值恰好為3,流程就可以正常啟動,如果不滿足該條件,流程就不能啟動。這種方式適合一些自動監控的流程,比如溫度報警,欠款超額,信貸逾期等警示型別的監控處理。

2. 條件流轉(中間條件事件)

正常執行中的流程,有時候會碰到一些條件型別的處理,比如設定滿足一定的條件,流程才可以繼續流轉,否則流程就暫停等待在這裡。比如一些投票流程,當投票人數超過設定好的數值後,表示使用者同意流程繼續流轉,否則流程就暫停在當前位置,或者甚至作為自然終止的情況處理。

 

 上圖定義了一箇中間條件事件的節點,表示當執行完Task001後,當前流程會停留在該條件節點位置,等待條件變數,如果條件變數有更新變化,並且滿足條件表示式,則流程可以流轉到下面的Task003位置,否則流程一直保持停留狀態。節點上的條件表示式定義如下:

 

條件表示式:@days-@days>3,其中@days1和@days表示流程變數,該變數需要從流程變數表中讀取(WfProcessVariable),流程變數的更新和檢測判斷,是通過HangFire的後臺作業輪詢來處理。當自動作業檢查到流程的兩個變數@day1和@day2的數值後,然後再解析該條件表示式,如果滿足,則流程正常向下流轉。否則繼續等待停留。

3. 結論

條件模式的應用,可以方便業務過程的警示型別的資料處理,比如溫度過高的報警處理,或者賬款資料過期的報警處理。業務資料的數值範圍通常代表不同的安全級別,條件模式的使用能夠使得業務人員對業務資料的風險狀況提前做出處理,有效化解了一些不必要的災難或不良結果。這對於企業使用者是非常有必要的。建議流程管理人員可以很好地使用條件模式,增強業務流程的可用性。

相關文章