Aalst提出了工作流有20種基本模式。
如果不知道的可參考《Workflow Patterns-2002》
工作流20種基本模式的理解(當(dāng)然了,后人陸續(xù)擴(kuò)展、變化,模式數(shù)量不斷變化,但萬變不離其宗,可從這些基本模式看起)
下面是我的初步分析:
模式名稱
|
模式關(guān)鍵字
|
模式說明
|
Basic Control Patterns
|
Sequence
|
Sequence
|
1
|
Parallel Split
|
AND Split
|
2
|
Synchronization
|
AND Join
|
3
|
Exclusive Choice
|
XOR Split
|
4
|
Simple Merge
|
XOR Join
|
5
|
ADVANCED BRANCHING AND SYNCHRONIZATION PATTERNS
|
Multiple Choice
|
OR Split
|
6
|
Synchronizing Merge
|
AND Join
|
7
|
Multi-merge
|
OR Join(+Multi)
|
8,
|
Discriminator
|
OR Join(+Reset/Ignore)
|
9
|
N-out-of-M-join
|
OR Join(+Multi M)
|
9a,N分支,M聚合即可
|
STRUCTURAL PATTERNS
|
Arbitrary Cycles[自由循環(huán)]
|
XOR Split
|
10
|
Implicit Termination
|
Multi(OR/AND) Split End
|
11
|
PATTERNS INVOLVING MULTIPLE INSTANCES
|
MI without synchronization
|
Runtime independent thread by condition
|
12,在運(yùn)行期創(chuàng)建獨(dú)立實(shí)例(線程、程序等)
|
MI with a priori known design time knowledge
|
Design time priori Instance
|
13,設(shè)計(jì)期多實(shí)例,且需全部完成
|
MI with a priori known runtime knowledge
|
Runtime multi Instance by condition/free
|
14,運(yùn)行期可基于條件創(chuàng)建多實(shí)例
|
MI with no a priori runtime knowledge
|
Runtime multi Instance free by people
|
15,運(yùn)行期可手工隨意創(chuàng)建多實(shí)例
|
STATE-BASED PATTERNS
|
Deferred Choice
|
XOR Split(By choice)
|
16,“推著走”流程,或基于既定條件分支
|
Interleaved Parallel Routing
|
OR Split + OR Join, Parallel
|
17,多分支聚合,分支執(zhí)行順序由運(yùn)行期確定
|
Milestone
|
Wait by Milestone
|
18,在“里程碑”節(jié)點(diǎn)等待
|
CANCELLATION PATTERNS
|
Cancel Activity
|
Cancel in specified Activity
|
19,在指定的活動(dòng)取消
|
Cancel Case
|
Cancel Anywhere/Anytime
|
20,任意時(shí)候可取消
|
可以看到,其實(shí)很多是類似的,這為下一步的工作流引擎需求、設(shè)計(jì)打下基礎(chǔ)。
拋磚引玉,供大家參考。