工作流控制模式-多实例模式7种
版权声明:工作流模式版权归 Workflow Patterns 组 织 ( http://www.workflowpatterns.com ) 所 有 。 经 Workflow Patterns授权,中文简体版由辛鹏和荣浩翻译。未经译者书面许可,不得将该中文简体版用于商业目的。
在一个流程实例里,当一个活动存在多个工作项或活动实例时,我们称之为多实例。多实例 产生于3种情况:
- 活动在触发时产生多个工作项;
- 活动在流程实例中被触发多次,产生了多个活动实例(循环、多实例合并);
- 两个或多个活动具有相同的工作内容,这些内容重复的活动被抽 离成块活动或子流程多次执行。
多实例模式共有7种,如图A-25所示。
图A-25 多实例模式
- 异步多实例:活动创建多个工作项,这些工作项彼此独立同时执行,不需要同步。
- 定义期确定数目的同步多实例:活动创建多个工作项,创建数目在定义期建模时确定, 这些工作项彼此独立同时执行,当它们都执行完毕后才触发后续活动的执行。
- 运行期确定数目的同步多实例:与定义期确定数目的同步多实例区别:创建工作项的数 目在运行期、活动创建工作项前确定。
- 运行期不确定数目的同步多实例:活动创建多个工作项,创建数目依赖于运行时的一系 列因素,这些因素包括流程实例状态、可用的资源、外部环境等,在最后一个工作项执 行完成前都有可能产生新的工作项,这些工作项彼此独立同时执行,所有工作项都执行 完毕后才触发后续活动的执行。
- 多实例的静态部分合并:扩展运行期确定数目的同步多实例模式。创建工作项的数目M 在活动创建前确定,同时确定的还有必须完成的实例数目N,N < M。当N个工作项完成 后即触发后续活动的执行,剩余的工作项继续执行,但是被忽略。
- 多实例的取消部分合并:与多实例的静态部分合并区别:当第N个工作项完成触发后续活 动后,剩余工作项被取消不再执行。
- 多实例的动态部分合并:扩展运行期不确定数目的同步多实例模式,增加活动的完成条 件,只要满足条件就触发后续活动,剩余的工作项继续执行,但被忽略。
异步多实例(WCP_12: Multiple Instances without Synchronization)
描述
在一个流程实例里,一个活动创建多个工作项,这些工作项彼此独立同时执行,不需要同步。 活动创建工作项的数目在定义期确定,是一个固定值。
如图A-26所示, 某单位的发文流程,拟稿后需要局长和副局长审批,然后下发到各科室负 责人进行传阅,传阅这个行为不影响流程实例本身的执行,触发传阅活动后即触发发文活动。
图A-26 异步多实例
我们在活动定义期确定活动产生工作项的数目,如图A-27所示,下属有4个科室,所以我们 设置启动数量为4,为每位科室负责人生成一个工作项;工作项的循环顺序为并行,表明这些工作项并行执行;流转条件是None,表明生成完工作项后就触发后续活动。
图A-27 定义期确定活动产生工作项的数目、异步执行
定义期确定数目的同步多实例(WCP_13: Multiple Instances with a Priori Design- Time Knowledge)
描述
在一个流程实例里,一个活动创建多个工作项,创建数目在定义期建模时确定,这些工作项 彼此独立同时执行,当这些工作项都执行完毕后才触发后续活动的执行。
如图A-28所示,某单位的发文流程,拟稿后需要局长和副局长审批,必须都审批通过后才能 下发到各科室负责人进行传阅。
图A-28 定义期确定数目的同步多实例
我们在活动定义期确定活动产生工作项的数目,如图A-29所示,有2个领导,所以我们设置 启动数量为2,为每位领导生成一个工作项;工作项的循环顺序为并行,表明这些工作项并行执 行;流转条件是All,表明所有工作项都执行完成后才能触发后续活动。
图 A-29 定义期确定活动产生工作项的数目
运行期确定数目的同步多实例 (WCP_14: Multiple Instances with a Priori Run-Time Knowledge)
描述
在一个流程实例里,一个活动创建多个工作项,创建数目在运行期确定,这些工作项彼此独 立同时执行,当这些工作项都执行完毕后才触发后续活动的执行。
如图A-30所示。传阅的名单由局长、副局长在审批时指定。
图A-30 运行时确定数目的同步多实例
运行期不确定数目的同步多实例(WCP_15: Multiple Instances without a Priori Run-Time Knowledge)
描述
在一个流程实例里,一个活动创建多个工作项,创建数目依赖于运行期的一系列因素,这些因素包括流程实例状态、可用的资源、外部环境变化等,在最后一个工作项执行完成前都有可能 产生新的工作项,这些工作项彼此独立同时执行,所有工作项都执行完毕后才触发后续活动的执 行,如图A-31所示。
图A-31 运行期不确定数目的同步多实例
多实例的静态部分合并(WCP_34: Static Partial Join for Multiple Instances)
描述
在一个流程实例里,一个活动创建多个工作项,创建数目M在运行期确定,同时确定的还有 必须完成的工作项数目N,N <= M,这些工作项彼此独立同时执行,当N个工作项完成后即触发 后续活动的执行,其余的工作项继续执行,但是被忽略,不影响流程的路由。
如图A-32所示。传阅的名单由局长、副局长在审批时指定,只要有一半的人阅读了文件没有 意见就可以发文。
图A-32 多实例的静态部分合并
多实例的取消部分合并(WCP_35: Cancelling Partial Join for Multiple Instances)
描述
在一个流程实例里,一个活动创建多个工作项,创建数目M在运行期确定,同时确定的还有 必须完成的工作项数目N,N <= M,这些工作项彼此独立同时执行,当N个工作项完成后即触发 后续活动的执行,其余的工作项被取消。
如图A-33所示。传阅的名单由局长、副局长在审批时指定,只要有一半的人阅读了文件没有 意见就可以发文,剩下的传阅工作被取消,直接阅读正式发文。
图A-33 多实例的取消部分合并
多实例的动态部分合并(WCP_36: Dynamic Partial Join for Multiple Instances)
描述
在一个流程实例里,一个活动创建多个工作项,创建数目依赖于运行期的一系列因素,这些 因素包括流程实例状态、可用的资源、外部环境变化等,在最后一个工作项执行完成前都有可能产 生新的工作项,这些工作项彼此独立同时执行,每个工作项完成时就对活动的完成条件进行验证, 如果满足该条件那么就触发后续的活动,剩余的工作项将继续执行但被忽略,不再产生新的工作项。
如图A-34所示。传阅的名单由局长、副局长在审批时指定,阅读人在阅读过程中可以加入新 的人阅读文件,只要有名单总数一半的人阅读了文件没有意见就可以发文。
图A-34 多实例的动态部分合并