工作流模式
廣告:
1. 順序(Sequence)
工作流中的各個(gè)活動(dòng)在同一個(gè)進(jìn)程中按順序依次執(zhí)行。
例子:在“發(fā)送貨物”之后“發(fā)送單據(jù)”。
2. 平行拆分(Parallel Split)
工作流中從一個(gè)線程中的一個(gè)點(diǎn)拆分為在多個(gè)線程中平行執(zhí)行的多個(gè)活動(dòng)。
例子:活動(dòng)“付款”激活了“發(fā)送貨物”以及“通知顧客”的執(zhí)行。
3. 同步(Synchronization)
工作流中的多個(gè)活動(dòng)在一個(gè)點(diǎn)上匯合成一個(gè)線程。
例子:活動(dòng)“歸檔”在“發(fā)票”和“收款”全部完成后被激活。
4. 排他選擇(Exclusive Choice)
工作流中的一個(gè)點(diǎn),基于決定或者工作流中的數(shù)據(jù),流向若干個(gè)分支中的一個(gè)。
5. 單合并(Single Merge)
工作流程中的一個(gè)點(diǎn)在兩個(gè)或者多個(gè)分支發(fā)生非同步的匯合時(shí)執(zhí)行。它假設(shè)這些分支中不存在平行執(zhí)行的情況。
例子:在收到支付或者確認(rèn)信用之后,汽車被交付給顧客。
6. 多選(Multi-choice)
工作流中的一個(gè)點(diǎn),基于決定或者工作流中的數(shù)據(jù),流向若干個(gè)分支中的幾個(gè)。
7. 平行合并(Synchronize Merge)
工作流程中的多個(gè)路徑在一個(gè)點(diǎn)被匯合成一個(gè)單一的進(jìn)程。如果多于一個(gè)的路徑到達(dá)了,活動(dòng)線程就需要進(jìn)行同步。如果只有一個(gè)路徑到達(dá),那么其它的路徑應(yīng)該非同步的重新會聚。該模式假設(shè)在一個(gè)分支被激活后,不會在等待其它分支完成的過程中再次被激活。
這種模式的難點(diǎn)在于決定在哪些分支到達(dá)后啟動(dòng)活動(dòng)。
8. 多合并(Multi-merge)
工作流程中的多個(gè)分支在一個(gè)點(diǎn)進(jìn)行非同步的匯聚。如果多于一個(gè)的分支被激活——可能是并發(fā)的——每個(gè)進(jìn)入分支的每個(gè)活動(dòng)都在合并之后啟動(dòng)新的活動(dòng)。
9. 鑒別器(Discriminator)
鑒別器是工作流中的一個(gè)點(diǎn),它等待進(jìn)入分支中的一個(gè)完成,然后才激活其后的活動(dòng)序列。從那個(gè)時(shí)刻開始,它等待所有剩余的分支完成,并且“忽略”它們。一旦所有的分支都已被觸發(fā),它就會重置自己,以便能被再次觸發(fā)。
例子:在三個(gè)分支中的任意兩個(gè)到達(dá)之后啟動(dòng)后面的活動(dòng)。
10. 強(qiáng)制循環(huán)(Arbitrary Cycles)
工作流中的一個(gè)點(diǎn)可以讓一個(gè)或多個(gè)活動(dòng)反復(fù)的執(zhí)行。
11. 隱式終止(Implicit Termination)
一個(gè)子過程應(yīng)該在沒有什么事情可做的時(shí)候被停下來。換句話說,在工作流中沒有別的活動(dòng)在執(zhí)行并且沒有活動(dòng)可被激活的時(shí)候終止。
12. 非同步的多實(shí)例(Multiple Instances Without Synchronization)
在一個(gè)工作流的內(nèi)部中,可以創(chuàng)建一個(gè)活動(dòng)的多個(gè)實(shí)例,當(dāng)然,這需要對新產(chǎn)生的線程的控制能力。
13. 在設(shè)計(jì)期間預(yù)先確定的多實(shí)例(Multiple Instances With a Priori Design Time Knowledge)
在特定過程中的特定活動(dòng)的數(shù)量是在設(shè)計(jì)時(shí)就被確定的。一旦所有的實(shí)例都完成了,其它的活動(dòng)應(yīng)該被啟動(dòng)。
例子:有關(guān)危險(xiǎn)品的請求需要三個(gè)不同的審核。
14. 在運(yùn)行期預(yù)先確定的多實(shí)例(Multiple Instances With a Priori Runtime Knowledge)
在一個(gè)活動(dòng)能夠被多次激活的這種情況下,在指定情況下的指定活動(dòng)的實(shí)例數(shù)量可能取決于情況的特性或者資源的可用性。但是,在活動(dòng)被創(chuàng)建之前,在運(yùn)行中的某個(gè)階段,這個(gè)數(shù)量是可以預(yù)知的。一旦所有的實(shí)例都完成了,其它的活動(dòng)應(yīng)該被啟動(dòng)。
例子:在預(yù)定旅行的過程中,如果旅途包含多個(gè)飛行的話,活動(dòng)“預(yù)定機(jī)票”會被多次執(zhí)行。如果所有預(yù)定都完成了,發(fā)票會被發(fā)送給客戶。
15. 無法在運(yùn)行期預(yù)先確定的多實(shí)例(Multiple Instances With a Priori Runtime Knowledge)
在一個(gè)活動(dòng)能夠被多次激活的這種情況下,在指定情況下的指定活動(dòng)的實(shí)例數(shù)量無論是在設(shè)計(jì)時(shí)或者運(yùn)行時(shí)都不能在活動(dòng)的實(shí)例被創(chuàng)建之前預(yù)先確定。但是,在活動(dòng)被創(chuàng)建之前,在運(yùn)行中的某個(gè)階段,這個(gè)數(shù)量是可以預(yù)知的。一旦所有的實(shí)例都完成了,其它的活動(dòng)應(yīng)該被啟動(dòng)。這個(gè)模式和模式14的區(qū)別在于,在某些實(shí)例運(yùn)行結(jié)束之后,新的實(shí)例仍能被創(chuàng)建。
16. 延遲選擇(Deferred Choice)
工作流中的一個(gè)點(diǎn),有一個(gè)或多個(gè)分支已經(jīng)被選擇。與XOR拆分相比,并沒有明確的選擇,但是,選擇是取決于環(huán)境的。與AND拆分相比,兩者中只有一個(gè)被執(zhí)行。這意味著一旦環(huán)境啟動(dòng)了其中的一個(gè),另一個(gè)就被取消。要注意,選擇是被延遲到兩個(gè)分支中的一個(gè)真正開始執(zhí)行時(shí),也就是說,選擇是可以盡可能的推后的。
例子:在收到貨物之后,有兩種方法可以將其送到。選擇取決于相關(guān)資源的可用性。因此,選擇會被推遲到直到其中一個(gè)資源可用為止。
17. 交替平行路由(Interleaved Parallel Routing)
一組活動(dòng)以任意的順序執(zhí)行,每個(gè)活動(dòng)都被執(zhí)行,他們的順序是在運(yùn)行時(shí)決定的,并且在任意一個(gè)時(shí)刻都不會有兩個(gè)活動(dòng)在執(zhí)行。
18. 里程碑(Milestone)
一個(gè)活動(dòng)能否執(zhí)行取決于一個(gè)指定的狀態(tài)。也就是說,只有在到達(dá)一個(gè)特定的未過期的里程碑時(shí),活動(dòng)才被執(zhí)行。
例子:一個(gè)顧客只有在進(jìn)行六個(gè)月以上的飛行之后才能聲明自己的飛行里程。
19. 取消活動(dòng)(Cancel Activity)
一個(gè)可執(zhí)行的活動(dòng)被強(qiáng)制失效了,也就是說,一個(gè)正在等待執(zhí)行的活動(dòng)所在線程被移除了。
例子:如果顧客取消了一個(gè)請求,那么與之相關(guān)的活動(dòng)也被取消了。
20. 取消實(shí)例(Cancel Case)
一個(gè)活動(dòng)的實(shí)例被完全消除了。
廣告:


