`
timeson
  • 浏览: 144369 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

工作流模式_多实例模式(C5)

阅读更多
这四个模式的共同点在于:都是多个流程实例之间的交互,包括:
  •  Multiple processes without synchronization(非同步的多实例模式)
  •  Multiple processes with design time knowledge(设计时的多实例模式)
  •  Multiple processes with run time knowledge(运行时的多实例模式)
  •  Multiple processes without run time knowledge(非运行时的多实例模式)



WP_12、Multiple Instances without synchronization(异步的多实例模式)
      描述:在流程实例中,一个活动可以激活为多个实例,并且彼此不相关,对于这些多实例不需要同步。在流程设计阶段并不确定有多少个执行路径。 执行路径在完成后不需要同步。

在实现中,有2种设计方式:
      首先是基于活动方式,活动本身会有规则属性来控制是否能多个实例化,缺省是实例化1次,缺省实例化是流程实例化的时候完成。当auto活动2发现特定参数传来了一个集合类似的数据(比如List),就根据List.size在内存中创建新的时候,并在完成的时候持久化到数据库中。



                      图wp12:非同步的多实例(自动活动实现方式)


       第二种方式是借助子过程的方式,并且设置子过程为异步方式(如果设定为同步,要等所有的子流程实现完毕才能执行auto活动3)。本身子过程是延后创建实例的,也就是说当流程实例化的时候,先实例化的是普通流程,只有当流程推进到了子过程活动的时候,才会实例化该子过程,这样就可以根据传来的参数的个数,实例化子过程。


                     图wp12a:非同步的多实例(子过程实现方式)




                     图wp12:非同步的多实例(flash)



WP_13、Multiple Instances with design time knowledge(设计时确定的同步多流程模式)
       描述:一个活动可以激活多次产生多个实例。而产生的实例的个数在流程设计时就事先知道了。一旦所有的实例都执行完成,就会激活其他活动(也就是说这里采取的是同步方式)。

这里有2种设计方式:
        首先是基于活动方式,在相关活动上有规则来确定是否能多个实例化,以及实例化的个数。
流程实例启动后,执行到当前活动节点,就会根据模型定义实例化指定的个数。当多个实例执行完毕,在激活后续的auto活动3。

                       图wp13:设计时确定的多实例模式(自动活动实现方式)



           第二种方式是借助子过程的方式,通过传递参数的方式,并根据参数的个数来实例化子流程的个数。这里的子流程需要设定为同步机制。这样当多个子过程实例完成后才激活auto活动3。


                        图wp13a:设计时确定的多实例模式(子过程实现方式)



                     图wp13:设计时确定的多实例模式(flash)



WP_14、Multiple Instances with run time knowledge(运行时确定的同步多流程模式)
描述:一个活动可以激活多次产生多个实例。而产生的实例的个数是变化的,取决于实例的特点或者可用资源数目,但是在流程执行过程的某个时期,在这个活动的实例产生以前,要产生的实例个数是能确定的。所有的实例都运行完成后,激活后续活动在流程设计阶段并不确定有多少个执行路径。
    也就是说多实例在设计的是不清楚,只有到了运行时候,才知道具体的活动实例个数。只有当这些实例都执行完毕,才执行后续的auto活动3,即采取同步模式。


这里有2种设计方式:

         首先是基于活动方式,活动本身有规则来控制是否能多个实例化,缺省是实例化1次,缺省实例化是流程实例化的时候完成。当auto活动2发现特定参数传来了一个集合类似的数据(比如List),就根据List.size在内存中创建新的时候,并在完成的时候持久化到数据库中。
当多个实例执行完毕,在激活后续的auto活动3。

         第二种方式是借助子过程的方式,设置实例化的次数以及子过程为同步方式,这样当多个子过程实例完成后才激活auto活动3。




                     图wp14:运行时确定的多实例模式(flash)



WP_15、Multiple Instances without run time knowledge(运行时不确定的多流程模式)
描述:一个活动可以激活多次产生多个实例。而产生的实例的个数在设计流程时既不知道,在运行时也不知道。所有的实例都运行完成后,激活后续活动。即同步模式。

例子:订购100 台电脑,涉及多个供应商,但是每个供应商供应多少台电脑是不知道的,因此供应商的数量事先也不确定。但是当每次供应商送货后,就会将现在所拥有的电脑数量和所需的100 台进行比较,来决定是否要下一个供应商继续送货。因为有太多的不可控制的因素,在实际使用中引擎不支持该种模式。


                     图wp14:运行时不确定的多实例模式(flash)
  • 大小: 40.7 KB
  • 大小: 19.6 KB
  • 大小: 37.2 KB
  • 大小: 19.5 KB
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics