首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

jBPM4 PVM的流程定义模型与历程调度

2012-08-24 
jBPM4 PVM的流程定义模型与过程调度转载:?完整的jBPM4 PVM介绍发表在《程序员》第8期,这里截取部分的意思是P

jBPM4 PVM的流程定义模型与过程调度

转载:

?

完整的jBPM4 PVM介绍发表在《程序员》第8期,这里截取部分的意思是PVM的过程调度是非常灵活的,PVM提供了一套和token类似的execution过程调度机制,通过对execution的完全操控,节点运行期行为有了无限的可能


首先要说明的是,上图里的类全是接口。位于最上层的是ObservableElement,其提供给流程元素以附加Event(事件)的能力。在ObservableElementImpl里,它持有一个events的集合属性。对于流程元素来说,典型的事件有:流程启动/结束,节点启动/结束和转移线执行(take)。

?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度
这一设计在jBPM3里是没有的,但是在jBPM4里则必须出现,因为结构块是BPEL和BPMN里的重要概念。既然号称PVM,则必须向BPEL和BPMN致敬。稍后我们可以看到,结构块的引入给引擎过程调度增加了很大的复杂度。在jPDL里,与之对应的实现是group。这是jBPM4流程定义模型的最重要改变。


ProcessDefinition和Activity分别继承自CompositeElement,Activity和Transition建立起双向关联,这三者也是工作流模型里的标准建模。

PVM的过程调度
jBPM4采用execution来记录当前流程执行的位置,并通过移动execution来推动流程的流转。

?jBPM4 PVM的流程定义模型与历程调度
execution是可以嵌套的,即会存在一种父子关系构成树状结构,在任何时间,只有叶子execution处于活动状态。最上层的execution称为根execution,jBPM4里,根execution即为流程实例(在jBPM3里,记录流程执行位置的token和流程实例processInstance是独立分开的)。


在两种情况下,execution会产生子execution。一种情况是流程定义里存在并发路径,此时execution会根据并发的路径个数产生相应的子execution,子execution执行完毕并汇聚后则会触发它们的父execution继续流转。另外一种情况是节点定义存在自己的变量定义和时间服务定义,则执行该节点时会为该节点产生一个独立的子execution,产生该execution的目的在于使得该节点拥有独立的作用域,这个子execution也被称为scope execution。节点执行完毕后,与之关联的scope execution将会被移除,同时,父execution被重新激活流转。

1、 execution的移动
execution的移动操作被封装在atomicOperation里。execution通过执行atomicOperation来推动其的转移。目前移动execution的atomicOperation有7种,如下图所示:
jBPM4 PVM的流程定义模型与历程调度
ExecutionActivity执行节点定义的运行期行为。节点的运行期行为委派给ActivityBehaviour实现,当需要对节点行为进行扩展时,需要实现ActivityBehaviour接口。jBPM4存在两个对节点行为进行扩展的接口,分别是ActivityBehaviour和ExternalActivityBehaviour,ActivityBehaviour的execute方法在节点被执行时调用;ExternalActivityBehaviour继承自ActivityBehaviour,多出一个signal方法,在节点处于等待状态被触发流转时调用。

?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度?jBPM4 PVM的流程定义模型与历程调度

热点排行