注:1、表格中模式名和描述都是我自己根据理解写的,并没有完全翻译这些模式的完整描述;
2、有关流程模式的完整描述请参考http://www.workflowpatterns.com/;
3、PE实现一栏是只在ProcessEngineer这个系统中有关结构模式的实现情况,PE设计器的详细文档将会在下月公布;
4、这些都是小弟的一己愚见,如有不正之处还请大虾们多多指点,这也是我把这个放在blog上的主要目的。
模式E名 |
模式名 |
描述 |
PE实现 |
1. Sequence |
顺序流 |
当一个活动完成时,后一个活动才可执行 |
BPMN实现 |
2. Parallel Split |
并行分支 |
多个活动分支同时执行 |
BPMN实现 |
3. Synchronization |
并行同步 |
多个分支合并,多个分支活动都完成时,才继续执行下一个活动 |
BPMN实现 |
4. Exclusive Choice |
多选一分支 |
多个活动分支中选择其一执行 |
BPMN实现 |
5. Simple Merge |
多选一合并 |
多个分支合并,其中任意一个活动完成,就继续执行下一个活动。 |
BPMN实现 |
|
|
|
|
6. Multi-Choice |
多选多分支 |
多个活动分支中选择任意多个分支执行 |
BPMN实现 |
7. Structured Synchronizing Merge |
结构性同步合并 |
多个分支合并,不论其中多少分支活动正在执行,都等待这些分支活动完成后,才继续执行。 |
ORGateway中设置IsStructured属性实现 |
8. Multi-Merge |
多分支合并 |
多个分支合并,等待多个分支活动中任意多个活动完成后,继续执行下一个活动 |
BPMN实现 |
9. Structured Discriminator |
结构性鉴别器 |
多个分支合并,当其中一个活动完成,立即执行下一个活动;但其他分支活动执行完成后,不执行下一个活动 |
Gateway中设置Discriminator属性实现(合并ParallelGateway不支持该模式) |
28. Blocking Discriminator |
阻塞性辨别器 |
|
暂不支持 |
29. Cancelling Discriminator |
取消性辨别器 |
多个分支合并,当其中一个活动完成,立即执行下一个活动;但其他分支活动被取消执行 |
Gateway中设置Discriminator属性实现(合并ParallelGateway不支持该模式) |
30. Structured Partial Join |
结构性部分合并 |
多个分支合并,等待多个分支活动中任意多个活动完成后,继续执行下一个活动;但其他分支执行完成后,不执行一下个活动 |
Gateway中设置Discriminator属性实现(合并ParallelGateway不支持该模式) |
31. Blocking Partial Join |
阻塞性部分合并 |
|
暂不支持 |
32. Cancelling Partial Join |
取消性部分合并 |
多个分支合并,等待多个分支活动中任意多个活动完成后,继续执行下一个活动;但其他分支活动被取消执行 |
Gateway中设置Discriminator属性实现(合并ParallelGateway不支持该模式) |
33. Generalised AND-Join |
通用性并行同步 |
多个分支合并,多个分支活动都完成时,才继续执行下一个活动;同时多个实例同时到达,需按到达次序执行。 |
暂不支持 |
37. Local Synchronizing Merge |
本地同步合并 |
多个分支合并,有多少分支完成时,才继续执行下一个活动是由本地数据来动态决定的。 |
ORGateway中设置规则实现 |
38. General Synchronizing Merge |
一般性同步合并 |
|
暂不支持 |
41. Thread Merge |
线程合并 |
活动需要等待多个流程实例完成该活动后,再继续执行下一个活动 |
Task中设置IsThreadMerge和ThreadCount属性实现 |
42. Thread Split |
线程分支 |
每次执行活动时,会产生多个分支执行下一个活动 |
Task中设置IsThreadSplit和ThreadCount属性实现 |
|
|
|
|
12. Multiple Instances without Synchronization |
非同步性多实例 |
每次执行活动时,会产生多个该活动的实例;它们并行、独立、互不相关地执行,不需同步,而且该活动后的活动不会重复执行 |
暂不支持 |
13. Multiple Instances with a Priori Design-Time Knowledge |
设计时确定多实例 |
执行活动的次数由流程设计期间确定,这些实例需要同步后才继续执行 |
Activity的Loop功能实现 |
14. Multiple Instances with a Priori Run-Time Knowledge |
运行前期确定多实例 |
执行活动的次数由活动运行前确定,这些实例需要同步后才继续执行 |
Activity的Loop功能实现 |
15. Multiple Instances without a Priori Run-Time Knowledge |
非运行前期确定多实例 |
执行活动的次数由活动运行时确定,这些实例需要同步后才继续执行 |
Activity的Loop功能实现 |
34. Static Partial Join for Multiple Instances |
静态部分合并多实例 |
执行活动的次数确定后,其中部分活动实例完成后,立即执行下一个活动,其他实例可以执行,但不继续执行下一个活动 |
Activity的Loop功能实现 |
35. Cancelling Partial Join for Multiple Instances |
取消部分合并多实例 |
执行活动的次数确定后,其中部分活动实例完成后,立即执行下一个活动,其他实例被取消执行 |
Activity的Loop功能实现 |
36. Dynamic Partial Join for Multiple Instances |
动态部分合并多实例 |
执行活动的次数确定后,运行期决定其中多少活动实例完成后,立即执行下一个活动;而其他实例可以执行,但不继续执行下一个活动 |
暂不支持 |
|
|
|
|
16. Deferred Choice |
推迟选择 |
多个分支的选择,由其中哪个分支的活动先开始执行,即选择哪个分支执行。 |
BPMN实现(Event base XOR) |
17. Interleaved Parallel Routing |
依次并发 |
多个活动分支依次执行,一个分支中的活动完成后,执行下一个 |
暂不支持 |
18. Milestone |
里程碑 |
只有当某个活动执行时,该活动(或分支)才能被执行;否则该活动(或分支)是不可见的 |
暂不支持(可以通过组合Gateway间接模拟) |
39. Critical Section |
互斥组 |
两个组的活动不能同时执行 |
暂不支持 |
40. Interleaved Routing |
依次循环 |
多个活动分支依次执行,一个分支中的活动完成后,执行下一个;但执行顺序随机 |
暂不支持 |
|
|
|
|
|