版權聲明:工作流模式版權歸 Workflow Patterns 組 織 ( http://www.workflowpatterns.com ) 所 有 。 經 Workflow Patterns授權,中文簡體版由辛鵬和榮浩翻譯。未經譯者書面許可,不得將該中文簡體版用於商業目的。
基本控制模式包括基本的順序、並發、條件和合並路由,是其他控制模式的基礎。基本控制模式有以下5種,如圖A-2所示。
圖 A-2 基本控制模式
- 順序:活動順序執行。
- 並發分裂:分支分裂為兩個或多個后續分支,所有后續分支都被同時觸發執行。
- 同步:兩個或多個分支合並為一個后續分支,只有所有分支都執行完畢后,后續分支才 會被觸發執行。
- 排他選擇:分支分裂為兩個或多個后續分支,只有一個后續分支被選擇執行。
- 簡單合並:兩個或多個分支合並為一個后續分支,分支不需要同步,任何一個分支執行完畢后就會觸發后續分支的執行。
1、順序(WCP_1: Sequence)
描述:在一個流程實例里,活動在前續活動完成后順序觸發,如圖A-3所示。
同義詞
順序執行、串行路由。
應用
順序模式是工作流建模的基礎,是流程定義里最基本的構建塊,用以描述連續互相依賴的一 系列活動。
2、並發分裂(WCP_2: Parallel Split)
描述
分支分裂為兩個或多個后續分支,分支執行完畢后觸發后續並發分支的同時執行,如圖A-4 所示。新員工入職時,先去人力資源部報道,接下來填寫入職資料和簽訂合同,於此同時,IT部 門幫忙開通RTX郵件開發環境權限、初始化機器,兩個工作同時進行。
圖 A-4 並發分裂
同義詞
AND-split、Fork、並行路由、並行分裂。
應用
作為設計流程的一個基本原則,我們應該盡可能采用並行過程。信息化的一個重要作用就是 加快信息的流動,讓並行工作越來越成為可能。試想如果沒有辦公自動化系統,我們到人力資源 部報到后,IT部門並沒有及時收到消息,那么我們填完入職資料后還要去IT部門申請機器,這個效率就非常低了。 對流程而言,流程實例執行時間是最重要的衡量指標:執行時間越短,對顧客越有效率,沒
有人喜歡等待。
3、同步(WCP_3: Synchronization)
描述
兩個或多個分支合並為一個后續分支,被合並的分支都執行完畢后,后續分支才會觸發,如 圖A-5所示。當資料填寫完畢、IT部門初始化機器完畢並送至工位后,我們就可以收拾工位並和 新同事打招呼了。
圖 A-5 分支同步
同義詞
AND-join、匯聚、同步。
4、排他選擇(WCP_4: Exclusive Choice)
描述
分支分裂為兩個或多個后續分支,分支執行完畢后,根據用戶決策或流程數據選擇觸發一個 后續分支執行,即多選一,如圖A-6所示。在線購物時,確定訂單后我們需要選擇付款的方式, 或者在線支付或者貨到付款。
圖 A-6 排他選擇
同義詞
XOR-split、排他OR-split、條件路由。
應用
流程實例中的路由條件判斷,路由條件是前續活動的輸出、流程數據、表達式或者規則引擎 的計算結果。
5、簡單合並(WCP_5: Simple Merge)
描述
兩個或多個分支合並為一個后續分支,任何一個分支執行完畢后就會觸發后續分支的執行, 不需要同步,遵循先進先出的原則。該模式有個前提條件,即前續分支有且只有一個會執行,這 一條件限定了后續分支只會被觸發一次。
如圖A-7所示,選擇完付款方式后我們就可以提交訂單,整個在線購物流程結束
圖 A -7 簡單合並
同義詞
XOR-join、排他OR-join、merge。
小結
基本控制模式非常簡單,順序、排他選擇、簡單合並模式組合的流程和我們編寫程序的邏輯 流程圖非常相似,這三種模式同時能夠對程序的邏輯流程圖進行建模。
商業快速開發平台產品就使用了流程引擎來編排程序邏輯。他們的做法是將細粒度的代碼邏 輯封裝為運算構件,然后再通過流程的可視化編輯器將這些運算構件粘合起來。這樣,傳統方式 下采用代碼實現業務邏輯的過程,變成了繪制流程圖的過程。這樣的實現看上去很美,其實存在 嚴重的弊端。首先,編寫代碼變得復雜了,明明幾十行代碼能夠實現的邏輯卻需要經過編寫構件、 繪制程序流程圖、部署、運行好多步才能實現,編程效率非常低下;其次是代碼的執行效率低, 程序的運行需要經過一次流程定義的解釋才能執行;最后是這種實現完全犧牲了語言自身的特 性,面向過程,很難提供代碼級別的單元測試環境,只能提供有限的調試。該實現實際上是定義 了一種簡單的流程語言,通過該流程語言來進行功能函數(運算構件)調用的編排。活動編排沒 有問題,服務編排也沒有問題,但是如果編排細粒度到功能函數,那么就超出了流程引擎的作用 域。正如搭建房子,用積木搭建挺好,用木屑搭建就過猶不及了。提升編程效率的最好途徑總是 語言而不是工具。