工作流模型分析(4)——组合嵌套模型

类别:软件工程 点击:0 评论:0 推荐:

 

流程模型分析(4

              ——组合嵌套模型

 

 

四、流程组合嵌套模型

一直到现在,所说的模型,都是定位在“任务之间的关系”。不论前面的发散运转模型,还是聚合运转模型,都只是流程内部的任务关系,而不涉及到流程与流程之间的关系。

请参看下图,虽然任务很复杂,但是所有的任务都限定在同一个流程中,而且为了巩固前面的一些运转模型概念,我特意在里面包含了并行,发散,自循环,鉴别聚合,同步聚合等模型。

图(4-1

 

让我们再来看看下面的流程,看起来比上面的流程简单,其实不是。仔细的看,其实这里面有两个流程在运行,一个主流程内嵌一个子流程。

图(4-2

 

       接下来,就来看看流程与流程之间会存在什么样的关系,存在什么可能的模型。

 

 

4.1 内嵌模型

内嵌模型刚刚已经提到了,就是在一个主流程中,内嵌了一个或多个子流程。每个子流程自身可能是可独立运转的;也有可能是主流程的辅助性子流程,不可独立运行。

 

主流程等待方式

请参考下图,在主流程运行到“Router”位置的时候,会激活一个子流程的运行;在子流程运行完后,会重新运行到主流程的“Router”位置,继续主流程的运行。

 

图(4-3

 

       在这种方式下,当子流程运行的时候,主流程会暂停,等待子流程的完结。

 

主流程也运行方式

比较下面的图与4.1.1节的图,就会发现很大的不同。

与“主流程”相同的是,当主流程运行到“Router”位置的时候,会激活一个子流程的运行。但是,激活子流程后,主流程并没有停止,而是基于按照预定的流程方向运行;同时,激活后的子流程也同样处于软转状态。

说到这里,估计很多让都会询问,那么子流程的信息什么时候返回呢?虽然在下图中,表示为子流程的信息返回到主流程的“任务A3”。但是,依然涉及到很多问题,比如:什么时候聚合,怎么聚合的问题了;而且主流程和子流程的运行时间未必搭配恰当,有可能存在主流程首先运行到Task A3点,而这时候子流程还没有运行结束情况,反之亦然。

这种情况,大多数采用“同步聚合”的方式:如果有一方未到达的情况下,另一方会等待。当然,这其中可能涉及到等待超时等不良因素,这时候主流程时选择继续等待,还是发催办消息,还是继续运行,就是工作流引擎的设计问题了。

图(4-4

 

 

4.2 外嵌模型

与内嵌模型不同的地方,就是外嵌的子流程,不返回主流程。在主流程激活子流程后,主流程继续运行,且不关心子流程的运行状态或运行结果。

       参考下图,你会发现其与内嵌模型中的“主流程也运行方式”非常的相似,区别就是,子流程最终没有返回到主流程。

 

图(4-5

 

 

 

---------------------------

作者:胡长城 (银狐999 , james999)

Email:[email protected]

 

本文地址:http://com.8s8s.com/it/it37526.htm