工作流模式網(wǎng)站:
-
http:// is.tm.tue.nl/research/patterns/patterns.htm ?? 列出了21種工作流模式。
- http://www.workflowpatterns.com 在上面21種模式的基礎(chǔ)上進(jìn)行擴(kuò)展,共計(jì)43種;另外將這些種模式歸為Control-Flow Patterns大類,增加的其他大類還有Workflow Data Patterns, Workflow Resource Patterns,Exception Handling Patterns。
下面是按照自己的理解對(duì)Control-Flow Patterns進(jìn)行劃分,主要分析經(jīng)典的21種工作流模式:
順序、分支、合并、循環(huán)
分支點(diǎn):
- 一個(gè)分支點(diǎn)只可能產(chǎn)生一個(gè)分支:Exclusive choice(排他選擇)
- 定義了N個(gè)分支,實(shí)際可能產(chǎn)生M個(gè):Multiple Choice
分支在到達(dá)合并點(diǎn)后應(yīng)用到的模式:
- 能確認(rèn)定義的分支在運(yùn)行時(shí)均會(huì)產(chǎn)生,在到達(dá)合并點(diǎn)后,需要等待所有分支完成后流程才可以向下執(zhí)行:Synchronization;
- 能確認(rèn)定義的分支在運(yùn)行時(shí)只可能產(chǎn)生一個(gè),在到達(dá)合并點(diǎn)后,流程繼續(xù)執(zhí)行:Simple Merge(簡(jiǎn)單合并);
-
分支在運(yùn)行時(shí)可能產(chǎn)生多個(gè),在到達(dá)合并點(diǎn)時(shí):
- 需要鑒別等待哪一個(gè)分支完成后,流程才可以繼續(xù)執(zhí)行,而一旦執(zhí)行后,將忽略其他到達(dá)的分支:Discriminator(鑒別器);
- 需要鑒別哪些分支完成后,流程才可以繼續(xù)執(zhí)行,這是上一個(gè)模式的一個(gè)擴(kuò)展:N-out-of-M Join;
- 無(wú)論產(chǎn)生多少個(gè)分支,每一個(gè)分支都在到達(dá)合并點(diǎn)后均向下執(zhí)行:Multiple Merge;
-
無(wú)論產(chǎn)生多少個(gè)分支,分支點(diǎn)都需要等待分支完成后,才能向下執(zhí)行:Synchronizing Merge;可以看出,該模式包含了Synchronization模式的情形?
?
?
Sequence(順序模式),同義詞:順序流程、順序路由
舉例:一個(gè)最簡(jiǎn)單的費(fèi)用審核步驟
?
?Exclusive choice(排他選擇)
費(fèi)用報(bào)銷錢首先"檢查公司政策",規(guī)則為:若一次性費(fèi)用超過(guò)2500RMB,則拒絕,并通知報(bào)銷人重新確認(rèn)費(fèi)用報(bào)告;只有不超過(guò)2500RMB,流程才可能繼續(xù)執(zhí)行。
?
Simple Merge (簡(jiǎn)單合并)
?
Arbitrary cycles(任意循環(huán))
42種工作流模式對(duì)循環(huán)做了更細(xì)致了劃分,多了2種循環(huán)模式Structured Loop、Recursion
ALBPM似乎只能實(shí)現(xiàn)“結(jié)構(gòu)循環(huán)”,即一個(gè)出口一個(gè)入口。如不能實(shí)現(xiàn)這樣的循環(huán):
現(xiàn)實(shí)中經(jīng)常有這種場(chǎng)景,但類似的需求一般可以變通實(shí)現(xiàn),如:
?
Implicit Termination( 隱式終止)
翻了很多產(chǎn)品支持該模式的“證明”,搞迷糊了。在我看來(lái),如果嚴(yán)格的支持,需要:
- 允許設(shè)置多個(gè)結(jié)束節(jié)點(diǎn),至于到達(dá)結(jié)束節(jié)點(diǎn)后,流程是結(jié)束還是等待,可以事先設(shè)置;
- 允許事先設(shè)置:如果一個(gè)節(jié)點(diǎn)完成后,沒(méi)有可輸出的連接弧,則流程終止。
順便了解,ALBPM不允許一個(gè)節(jié)點(diǎn)沒(méi)有永真的連接弧輸出。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
