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

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

PVM的流程定义模型

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

Java代码

protected Map<String, EventImpl> events;

Event又做了些什么呢?EventImpl透过EventListenerReference实例的集合持有EventListener实例。这样在引擎执行过程调度时,就非常容易地通过流程元素本身获取事件监听器并在相应的时候执行它们。

Java代码

protected List<EventListenerReference> listenerReferences;

和传统的观察者模式一致,EventListener接口有且只有一个方法:

Java代码

void notify(EventListenerExecution execution) throws Exception;

紧接着ObservableElement的是CompositeElement,其扩展了ObservableElement接口。先看看它的方法:

Java代码

List<? extends Activity> getActivities();

  boolean hasActivity(String activityName);

  Activity getActivity(String activityName);

很明显,它持有了Activity的集合,对于ProcessDefinition来说,这是一件很自然地事情:流程定义包含多个节点定义。重要的是Activity自身华丽的变身:节点定义实现了嵌套,出现了结构块。看图说话:

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

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

时间: 2024-11-01 08:12:22

jBPM4 PVM的流程定义模型与过程调度的相关文章

jbpm4 jndi-JBPM4发布流程定义时遇到问题

问题描述 JBPM4发布流程定义时遇到问题 最近在根据family168的视频在自学JBPM4,可是在进行流程定义发布测试时遇到以下问题: 16:37:25,829 FIN | [TransactionBinding] use default user-transaction: [UserTransaction] 16:37:25,830 FIN | [TransactionBinding] get transaction-manager from hibernate configuration

activiti自定义流程之整合(四):整合自定义表单部署流程定义

综合前几篇博文内容,我想在整合这一部分中应该会有很多模块会跳过不讲,就如自定义表单的表单列表那一块,因为这些模块在整合的过程中都几乎没有什么改动,再多讲也是重复无用功. 正因为如此,在创建了流程模型之后,模型列表的展示也是和之前的没有什么区别,而且都是很简单的后台查询以及前台展示,这一部分也就不过多的讲了. 模型列表页面如下:   至于其中的修改和删除也没什么多讲的,删除很简单,而修改也是activiti-modeler实现的主要功能,我们只需要跳转过去就行. 重要的部分在于部署,因为点击部署到

activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型         (3)流程模型列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示 1.maven导包及spring的一些基本配置与之前的没有什么变化,依旧沿用

Oozie工作流程定义详解

Oozie工作流程定义是一个DAG(Directed Acyclical Graphs)图,它由控制流节点(Control Flow Nodes)或动作节点(Action Nodes)组成,各个节点又是通过表征转移的箭线(transitions arrows)互相连通.对于工作流一般对应存在流程定义语言,例如jBPM是jPDL,大多数都是基于XML定义的,Oozie流程定义语言也是基于XML定义的,称为hPDL(Hadoop Process Definition Language). 下面,我们

activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表

注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型         (3)流程模型列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示        (4)部署流程定义:activiti自定义流程之Spring整

Jbpm如何在流程定义中加入自定义的内容

问题描述 在xpdl中,可以以如下方式在流程定义中加入自己的内容:<ExtendedAttributes> <ExtendedAttribute Name="MBBH" Value="4"/> <ExtendedAttribute Name="MBMC" Value="发文流程(有核文)"/> <ExtendedAttribute Name="YWLB" Value

云计算环境下基于Petri网的流程计费模型

云计算环境下基于Petri网的流程计费模型 黄卫东   于瑞强 通过分析云计算环境下服务模块流程组合的动态性,运用随机Petri网进行动态流程建模与追踪,给出了分层计费体系下的流程计费模型,使用Petri网对该计费流程进行建模分析和设计,便于云服务提供商实现基于状态的计费控制,从而优化计费策略.实现了云计算基于过程模型的服务计量,并根据该模型进行相应定价,用户即可按需付费.通过应用实例验证了该计费方法的有效性和可操作性,为云服务提供商计费决策提供了技术支撑. 云计算环境下基于Petri网的流程计

使用GPD创建JBPM4.4流程定义文件

问题描述 我用的myeclipse8.6,jbpm版本4.4,已经安装成功了GPD,但在菜单"file"下的new"下找不到"jbpm4processdefinition"的菜单,郁闷!!! 解决方案 解决方案二:你点击window->P....那个下边能看到jboss的项么?如果看不到jboss及jpd那应该是没有安装成功.解决方案三:你按1喽的看看8.6版本不怎么好更新的我用8.5版本的时候都是重新弄个3.4遍才安装成功的解决方案四:卸载重装可能

使用Silverlight实现工作流流程定义

Silverlight 是一种跨浏览器.跨平台的 .NET Framework实现.具有如下优势: 提供一致的体验,而与在何处运行没有关系 它对视频和音频进行流处理.它将视频品质调整到适合各种环境:从移动设备到桌面浏览器以及 720p HDTV 视频模式 用户可以直接在浏览器中操作(拖动.旋转和缩放)的足够清晰的2D和3D图形 我们可以直接使用它在Web上来完成工作流流程的定义,直接绘制可拉伸,拖放的复杂图形,获得非常 好的用户体验.而这在以前只能通过GDI+或者其他并不友好的方法实现.重要的是