`
iuottp
  • 浏览: 171505 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

jBPM4的PVM解析

阅读更多

 jBPM4的PVM解析

转载:http://www.family168.com/jbpm4/pvm.html

流程虚拟机,我们对它的期望是它可以为所有流程提供一套通用平台,之后无论我们是需要对原有流程语言进行扩展,或者重新实现一套自定义的流程语言,都可以很简单的使用pvm实现了。现在我们要来看看pvm到底有没有这个本领实现我们的期望。

实际上,jBoss已经在PVM的基础上完成jPDL, BPEL和基于Seam的PageFlow三个实现,对于我们来说最常见的就是jPDL了,它是jBPM-4中默认使用的流程语言的实现。

java源代码分包详解

org.jbpm.pvm.internal.ant提供使用ant发布流程,辅助启动jboss的任务。

org.jbpm.pvm.internal.builder用来构造各种模型,包括活动,活动行为,事件,事件处理器,流程定义,变量,任务,等等。

org.jbpm.pvm.internal.cal提供日历,包括日期,时间段,持续时间,节假日。

org.jbpm.pvm.internal.cfg中的JbpmConfiguration和SpringConfiguration实现了org.jbpm.api.Configuration,用来从配置文件构造ProcessEngine。

org.jbpm.api.client这部分包含ClientExecution, ClientProcessDefinition, ClientProcessInstance。ClientExecution继承了OpenExecution,声明了end(), signal(), suspend(), resume()之类的方法。ClientProcessDefintion继承了OpenProcessDefintion,其中的功能主要是 createProcessInstance和startProcessInstance。

org.jbpm.pvm.internal.cmd包含Command和CommandService,这是命令设计模式的基础。其中放着所有的命令,所有的流程操作都可以在这里找到。

org.jbpm.pvm.internal.email下面有两个子包impl和spi,只要注意spi下的AddressResolver, MailProducer和MailSession就可以实现自定义的实现了。

org.jbpm.pvm.internal.env包含Context, Environment, EnvironmentFactory, Transaction, WireObject。其中Context, Environment和EnvironmentFactory组成了jBPM4里的IoC系统。Transaction定义了通用事务。 WireObject用来做依赖绑定。下面保存着环境有关的实现类。包括Authentication权限认证,Environment与context 相关的各个类。

org.jbpm.pvm.internal.hibernate下面的类是专门与hibernate进行交互的类,包含类型转换,命名策略和最主要的DbSessionImpl,所有与数据库的操作都来源于此。

org.jbpm.pvm.internal.history下面是历史操作所需要的部分,其下还包含events和model包。

org.jbpm.pvm.internal.identity包主要负责身份认证的操作。包含三个子包cmd, impl和spi,cmd下定义所用到的命令,impl下是实现类,spi下放着IdentitySession。

org.jbpm.pvm.internal.jms包括JmsMessageSession和 JmsMessageUtil,应该是用来处理jms的,JmsMessageSession与org.jbpm.api.job.Message相关 联。说明job下的Message是依靠jms发送异步消息的。

org.jbpm.pvm.internal.job中提供了对job, message和timer的实现

org.jbpm.pvm.internal.jobexecutor提供了任务执行器,包括JobExecutorServlet和对应的线程池,以及一系列的命令和处理器。无论是job, message或是timer,最终都会被这里执行。

org.jbpm.pvm.internal.lob主要用来处理流程发布时的文件内容,需要把jpdl.xml文件和图片,甚至是以后可能把class文件都以附件形式保存到数据库中,以备后用。

org.jbpm.pvm.internal.model这个模型包中包含了很多很多类,包括Activity, CompositeElement, Condition, ObservableElement, OpenProcessDefinitionTransition。简单分类一下。最底层的是ObservableElement,它是可以被事件监听的 元素,并且可以继承,CompositeElement继承了 ObservableElement,它里面可以装填多个活动。再加上Event中定义了多个事件,这些就构成了最基本的事件模型。Activity和 ActivityCoordinates分别定义了活动类和活动位置。以这些为基础,OpenProcessDefinition继承了 ProcessDefinition和CompositeElement。最终,我们还有一个Condition类,它只有一个evaluate方法,接 受OpenExecution作为参数返回boolean值,Condition和Activity组合成了Transition,这个转移包含了起点, 终点,以及条件判断。最庞大的模型部分,活动,转移,流程定义,流程实例的实现类都放在这里。在它的op子包中包含的是流程进行中的各项操作。

org.jbpm.pvm.internal.query中放的是History, Job, ProcessDefintion, ProcessInstance这四个query类的实现,还提供了一个Page类,但是其中只有firstResult和maxResults,所以没 啥大用。

org.jbpm.pvm.internal.repository负责的是流程的发布,主要有Deployment和Repository对应的service, session和cache,这里使用的缓存,所以每次使用流程定义的时候可以利用缓存提高效率。

org.jbpm.pvm.internal.script包含对脚本的支持,默认支持了JuelScriptEngine。

org.jbpm.pvm.internal.session中支持各种会话,DbSession, MessageSession, RepositorySession和TimerSession。

org.jbpm.pvm.internal.spring这里只有一个CommandTransactionCallback用来实现从spring中获得事务,并用其执行jbpm中定义的各种命令。

org.jbpm.pvm.internal.stream用于从各种途径读取资源,无论是jbpm配置文件和流程资源都要通过这些来转换成流的形式,以供给jbpm处理。

org.jbpm.pvm.internal.svc其中svc或许是service的缩写。这个包中除了包括org.jbpm.api包下定义的所有service接口的实现,还包括commandService的实现和认证拦截器。

org.jbpm.pvm.internal.task这里代表了所有与任务,任务参与者相关的信息,包括 Assignable, AssignmentHandler, OpenTask, Participation, Swimlane, Task, TaskDefinition。简单划分后,主要有任务,任务定义任务处理。剩下的都是与任务分配有关了。TaskDefinition从字面上来看是指 任务定义,里边只有一个getName()。Task中保存了任务相关的一些内容,OpenTask主要用来处理历史事件。参与者部分基本分成三个部分, 以Assignable和AssignmentHandler组成的自定义分配部分,Participation参与者和swimlane泳道。暂时没有 发现三者之间与任务的联系。

org.jbpm.pvm.internal.test包下放了一个JobTestHelper,显然是可以帮助在测试环境下运行job的,个人认为它放在pvm中似乎有点儿不妥。

org.jbpm.pvm.internal.tx其中负责处理事务,JtaTransaction 啦,SpringTransationInterceptor啦,StandardTransaction啦,这些需要根据实际环境具体选择。jta的实 现部分已经单独放到子包jta中了。希望spring中的事务也能这样处理就好了。

org.jbpm.pvm.internal.type用来进行类型转换,主要是加载jbpm.cfg.xml对流程引擎进行初始化时,还有就是发布流程的时候进行类型转换。子包包括converter,matcher和variable,类型转换器,类型匹配器和变量。

org.jbpm.pvm.internal.util包含常用工具。

org.jbpm.pvm.internal.wire用来在ioc里进行依赖绑定。子包包含binding, descriptor, operation和xml,个人认为这是很麻烦的绑定方式,而且默认的绑定方式是使用field,而不是常见的setter绑定方式。

org.jbpm.pvm.internal.xml包主要用于解析xml的,主要解析jbpm.cfg.xml和流程定义文件。

配置文件

jbpm配置jbpm.default.cfg.xml,流程引擎的默认配置文件。 jbpm.identity.cfg.xml, jbpm.jboss.idm.cfg.xml身份验证配置文件。jbpm.jbossremote.cfg.xml远程调用jboss实现命令模式。 jbpm.jobexecutor.cfg.xml任务执行器的配置。

hibernate映射jbpm.execution.hbm.xml, jbpm.history.hbm.xml, jbpm.identity.hbm.xml, jbpm.repository.hbm.xml, jbpm.task.hbm.xml这五个是hibernate映射文件。

任务生命周期jbpm.task.lifecycle.xml任务的生命周期,包括启动,暂停,继续,完成,取消之类。

事务配置jbpm.tx.hibernate.cfg.xml默认的hibernate事务配置。jbpm.tx.jta.cfg.xml使用jta的事务配置。

IoC配置jbpm.variable.types.xml变量类型映射。jbpm.wire.bindings.xml依赖绑定映射。

分享到:
评论

相关推荐

    jBPM4的PVM实现解析

    ### jBPM4的PVM实现解析 #### 一、PVM概述 PVM(流程虚拟机)是jBPM4中的核心概念之一,它提供了一个抽象层来处理流程定义和执行逻辑。PVM的设计目的是为了使流程引擎更加灵活、可扩展,并能够支持多种流程语言。...

    jbpm 4.3 pvm的使用

    PVM (Process Virtual Machine) 是JBPM的一个核心组件,它负责解析和执行流程定义。PVM支持多种类型的流程定义语言,如BPMS (Business Process Model and Notation) 和JSR 208 (Java Specification Request for ...

    JBPM4 java源代码分包详解JBPM4

    4. **org.jbpm.pvm.internal.cfg**: 这里包含了配置文件的解析和流程引擎的初始化。`JbpmConfiguration`和`SpringConfiguration`实现了`org.jbpm.api.Configuration`接口,使得可以从配置文件中加载并创建`...

    JBPM4_PVM源代码分析.doc

    本文档将详细解析JBPM4_PVM的源代码结构,重点介绍其中的关键类及其功能。 #### 二、org.jbpm.pvm.internal.ant包 该包提供了与Ant集成的功能,用于发布流程定义并辅助启动JBoss应用服务器。 ##### 1. AntHelper....

    Jbpm源代码分包详解

    `org.jbpm.pvm.internal.email`包支持电子邮件集成,允许自定义地址解析、邮件生产者和邮件会话,以实现流程中的通知机制。 `org.jbpm.pvm.internal.env`包包含了IoC(Inversion of Control)系统,包括`Context`、...

    JBPM4 开发文档 实例 流程

    JBPM4引入了Process Virtual Machine(PVM)机制,用以替代之前的Token机制,以更灵活高效的方式管理流程执行。 总结,JBPM4提供了一套完整的工作流管理系统,包括流程设计、执行、监控和优化等功能,通过JPdl语言...

    JBPM4.0源码以及分析

    **JBPM4.0源码解析与分析** JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的业务流程管理解决方案。在JBPM4.0版本中,系统的核心是Process Virtual Machine(PVM)和Job...

    Jbpm4.4 整合Spring Hibernate4

    - `jbpm-pvm-4.4.jar`:包含流程虚拟机(PVM)的核心实现,是Jbpm执行流程的基础。 - `jbpm-jpdl-4.4.jar`:提供了JPDL(Jbpm Process Definition Language)的支持,用于描述和解析流程定义文件。 - `jbpm-bpmn-4.4...

    应用jBPM4解决中国特色的流程需求

    jBPM4作为一个革命性的升级版本,其核心特点是基于流程虚拟机(PVM)的机制重新设计了整个核心引擎。这一改变不仅提高了jBPM4的灵活性和扩展性,还使其能够支持多种流程定义语言。具体而言,jBPM4的革新之处在于: ...

    JBPM4工作流应用开始指南.rar

    完全解析jBPM4应用开发技术 9位工作流业内专家联袂推荐 随着在现代企业管理中对于信息化、流程化的深度挖掘,具有业务流程管理的技术和思想已经成为致力于全面掌控企业级应用系统人士“日常生活、居家旅行”的必备...

    JBPM4.3数据库说明书

    JBPM4在架构设计上采用了流程虚拟机(Process Virtual Machine, PVM)的概念,极大地简化了流程定义和执行的过程。本文将深入探讨JBPM4.3版本中的数据库结构,以便更好地理解和运用这一强大的工作流引擎。 #### 二...

    jbpm3.2.3 源码

    在`org.jbpm.pvm.persistence.jpa`包下,可以看到如何将流程对象映射到数据库表,以及事务管理的相关实现。 6. **事件处理**: `org.jbpm.event`包包含了对流程事件的处理,如开始事件、结束事件、异常事件等。...

    JBPM工作流应用开发文档

    【JBPM工作流应用开发文档】深入解析 JBPM(java Business Process Management)是一个基于JavaEE的轻量级工作流管理系统,旨在支持企业级的流程定义、部署、执行和管理。作为JBoss的一个子项目,它与其他优秀开源...

    JBPM4.4使用到的术语及注意项

    JBoss jBPM 团队正式发布了 jBPM4 的正式版,jBPM4 完全基于流程虚拟机(PVM)的机制,对核心引擎进行了重新设计,而 PVM 的引入也使得 jBPM4 可以支持多流程语言了。 jBPM4 的特点包括: * 流程定义对象的变化在...

    JBPM-Side流程设计器架构说明

    Model 模型组件是 Xml 流程定义文件解析的结果,本地建模和 jBPM4 的 PVM 建模一致。重要的类有 ProcessModel、NodeModel 和 ConnectionModel,这些类分别代表流程定义、节点定义和连接线定义。目前模型类还非常简单...

    jbpm_工作流架构.pdf

    通过对JBPM配置文件的解析及PVM架构的理解,我们可以清楚地了解到JBPM是如何通过高度模块化的设计来实现灵活、高效的工作流管理的。无论是从配置文件的灵活定义,还是PVM架构中对流程执行细节的高度抽象,都展现了...

    jBPM4.3简略深入 了解(一)

    <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" /> // 获取所需的服务 RepositoryService repositoryService = processEngine.getRepositoryService(); ExecutionService ...

Global site tag (gtag.js) - Google Analytics