Aalst提出了工作流有20种基本模式。
如果不知道的可参考《Workflow Patterns-2002》
工作流20种基本模式的理解(当然了,后人陆续扩展、变化,模式数量不断变化,但万变不离其宗,可从这些基本模式看起)
下面是我的初步分析:
模式名称
|
模式关键字
|
模式说明
|
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[自由循环]
|
XOR Split
|
10
|
Implicit Termination
|
Multi(OR/AND) Split End
|
11
|
PATTERNS INVOLVING MULTIPLE INSTANCES
|
MI without synchronization
|
Runtime independent thread by condition
|
12,在运行期创建独立实例(线程、程序等)
|
MI with a priori known design time knowledge
|
Design time priori Instance
|
13,设计期多实例,且需全部完成
|
MI with a priori known runtime knowledge
|
Runtime multi Instance by condition/free
|
14,运行期可基于条件创建多实例
|
MI with no a priori runtime knowledge
|
Runtime multi Instance free by people
|
15,运行期可手工随意创建多实例
|
STATE-BASED PATTERNS
|
Deferred Choice
|
XOR Split(By choice)
|
16,“推着走”流程,或基于既定条件分支
|
Interleaved Parallel Routing
|
OR Split + OR Join, Parallel
|
17,多分支聚合,分支执行顺序由运行期确定
|
Milestone
|
Wait by Milestone
|
18,在“里程碑”节点等待
|
CANCELLATION PATTERNS
|
Cancel Activity
|
Cancel in specified Activity
|
19,在指定的活动取消
|
Cancel Case
|
Cancel Anywhere/Anytime
|
20,任意时候可取消
|
可以看到,其实很多是类似的,这为下一步的工作流引擎需求、设计打下基础。
抛砖引玉,供大家参考。