1. 程式人生 > >21種工作流模式

21種工作流模式

1順序(Sequence)

工作流中的各個活動在同一個程序中按順序依次執行。

在“傳送貨物”之後“傳送單據”。

2。平行拆分(Parallel Split)

工作流中從一個執行緒中的一個點拆分為在多個執行緒中平行執行的多個活動。

活動“付款”激活了“傳送貨物”以及“通知顧客”的執行。

3同步(Synchronization)

工作流中的多個活動在一個點上匯合成一個執行緒。

活動“歸檔”在“發票”和“收款”全部完成後被啟用。

4排他選擇(Exclusive Choice)

工作流中的一個點,基於決定或者工作流中的資料,流向若干個分支中的一個。

5單合併(Single Merge)

工作流程中的一個點在兩個或者多個分支發生非同步的匯合時執行。它假設這些分支中不存在平行執行的情況。

在收到支付或者確認信用之後,汽車被交付給顧客

6多選(Multi-choice)

工作流中的一個點,基於決定或者工作流中的資料,流向若干個分支中的幾個。

7平行合併(Synchronize Merge)

工作流程中的多個路徑在一個點被匯合成一個單一的程序。如果多於一個的路徑到達了,活動執行緒就需要進行同步。如果只有一個路徑到達,那麼其它的路徑應該非同步的重新會聚。該模式假設在一個分支被啟用後,不會在等待其它分支完成的過程中再次被啟用。這種模式的難點在於決定在哪些分支到達後啟動活動。

8多合併(Multi-merge)

工作流程中的多個分支在一個點進行非同步的匯聚。如果多於一個的分支被啟用——可能是併發的——每個進入分支的每個活動都在合併之後啟動新的活動。

9鑑別器(Discriminator)

鑑別器是工作流中的一個點,它等待進入分支中的一個完成,然後才啟用其後的活動序列。從那個時刻開始,它等待所有剩餘的分支完成,並且“忽略”它們。一旦所有的分支都已被觸發,它就會重置自己,以便能被再次觸發。

在三個分支中的任意兩個到達之後啟動後面的活動。

10M中的N模式(N-out-of-M Join)

合併多條路徑,進行部分同步,只執行一次後續活動

11強制迴圈(Arbitrary Cycles)

工作流中的一個點可以讓一個或多個活動反覆的執行。

12隱式終止(Implicit Termination)

一個子過程應該在沒有什麼事情可做的時候被停下來。換句話說,在工作流中沒有別的活動在執行並且沒有活動可被啟用的時候終止。

13非同步的多例項(Multiple Instances - Without Synchronization)

在一個工作流的內部中,可以建立一個活動的多個例項,當然,這需要對新產生的執行緒的控制能力。

14在設計期間預先確定的多例項(Multiple Instances - With a Priori Design Time Knowledge)

在特定過程中的特定活動的數量是在設計時就被確定的。一旦所有的例項都完成了,其它的活動應該被啟動。

有關危險品的請求需要三個不同的稽核。

15在執行期預先確定的多例項(Multiple Instances - With a Priori Runtime Knowledge)

在一個活動能夠被多次啟用的這種情況下,在指定情況下的指定活動的例項數量可能取決於情況的特性或者資源的可用性。但是,在活動被建立之前,在執行中的某個階段,這個數量是可以預知的。一旦所有的例項都完成了,其它的活動應該被啟動。

在預定旅行的過程中,如果旅途包含多個飛行的話,活動“預定機票”會被多次執行。如果所有預定都完成了,發票會被髮送給客戶。

16無法在執行期預先確定的多例項(Multiple Instances - With no Priori Runtime Knowledge)

在一個活動能夠被多次啟用的這種情況下,在指定情況下的指定活動的例項數量無論是在設計時或者執行時都不能在活動的例項被建立之前預先確定。但是,在活動被建立之前,在執行中的某個階段,這個數量是可以預知的。一旦所有的例項都完成了,其它的活動應該被啟動。這個模式和模式14的區別在於,在某些例項執行結束之後,新的例項仍能被建立。

17延遲選擇(Deferred Choice)

工作流中的一個點,有一個或多個分支已經被選擇。與XOR拆分相比,並沒有明確的選擇,但是,選擇是取決於環境的。與AND拆分相比,兩者中只有一個被執行。這意味著一旦環境啟動了其中的一個,另一個就被取消。要注意,選擇是被延遲到兩個分支中的一個真正開始執行時,也就是說,選擇是可以儘可能的推後的。

在收到貨物之後,有兩種方法可以將其送到。選擇取決於相關資源的可用性。因此,選擇會被推遲到直到其中一個資源可用為止。

18交替平行路由(Interleaved Parallel Routing)

一組活動以任意的順序執行,每個活動都被執行,他們的順序是在執行時決定的,並且在任意一個時刻都不會有兩個活動在執行。

19里程碑(Milestone)

一個活動能否執行取決於一個指定的狀態。也就是說,只有在到達一個特定的未過期的里程碑時,活動才被執行。

一個顧客只有在進行六個月以上的飛行之後才能宣告自己的飛行里程。

20取消活動(Cancel Activity)

一個可執行的活動被強制失效了,也就是說,一個正在等待執行的活動所線上程被移除了。

如果顧客取消了一個請求,那麼與之相關的活動也被取消了。

21取消例項(Cancel Case)

一個活動的例項被完全消除了。