Aalst提出了工作流有20种基本模式。
如果不知道的可参考附件《Workflow Patterns-2002.pdf》
(当然了,后人陆续扩展、变化,模式数量不断变化,但万变不离其宗,可从这些基本模式看起)
下面是我的初步分析:
模式名称 | 模式关键字 | 模式说明 |
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,任意时候可取消 |
可以看到,其实很多是类似的,这为下一步的工作流引擎需求、设计打下基础。
抛砖引玉,供大家参考。