最近项目中用JBoss开源jBPM4.3流程引擎实现了几个流程。使用上感觉比jBPM3更简单,但是对PVM流程虚拟机如何工作的一头雾水,今天开始终于有时间可以看看PVM的源码,但是对个包机构不熟悉,因此参考了http://www.family168.com/jbpm4/pvm.html的简介很详细。粘贴过来以便学习之用。以下是PVM各包的作用:
流程虚拟机,我们对它的期望是它可以为所有流程提供一套通用平台,之后无论我们是需要对原有流程语言进行扩展,或者重新实现一套自定义的流程语言,都可以很简单的使用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.3所需jar包** JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。在JBPM 4.3版本中,为了实现完整功能,需要一系列的jar包来支持其运行环境。...
SSH+JBPM4.3的整合是企业级应用开发中的一种常见组合,SSH指的是Spring、Struts和Hibernate这三个开源框架的集成,而JBPM4.3则是一个强大的工作流管理系统,用于实现业务流程自动化。这篇内容将深入探讨这两个技术...
【JBPM4.3培训学习视频】是一套针对初学者设计的教程,旨在帮助学习者掌握JBPM4.3这一企业级工作流管理系统的核心概念和技术。JBPM是Java Business Process Management的缩写,是一个开源的工作流和业务流程管理平台...
【jbpm4.3视频教程+代码】是一个深入学习和实践Jbpm4.3的资源包,包含高质量的视频教程和相应的代码示例。Jbpm,全称Java Business Process Management,是一款开源的工作流管理系统,它允许开发者设计、部署和执行...
【JBPM4 Java源代码分包详解】 JBPM4是一个流行的开源工作流管理系统,它提供了一整套用于设计、执行和管理业务流程的工具。在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1....
**jbpm4.3:开启开源工作流新篇章** jbpm4.3是一个强大的开源工作流管理系统,它允许开发者和业务分析师以图形化的方式设计、执行和管理业务流程。这个工具的核心在于将复杂的业务逻辑转化为计算机可以理解并执行的...
jbpm4.3是JBoss Business Process Management (BPM) Suite的一个版本,它是一个开源的企业级BPM平台,用于设计、执行和管理业务流程。在这个"jbpm4.3工作流程管理例子"中,我们将深入探讨jbpm4.3的核心特性和如何...
【jbpm4.3 工作流实例与Java结合详解】 在信息技术领域,工作流管理系统(Workflow Management System,简称WfMS)是用于自动化业务流程的软件系统。jbpm(Business Process Management)是一款开源的工作流引擎,...
### jbpm4.3与Spring框架的整合指南 在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring...
**jbPM 4.3 知识点详解** jbPM,全称为Java Business Process Management,是一个开源的工作流管理系统,主要用于企业级应用中的业务流程管理。jbPM 4.3是该系统的一个重要版本,虽然其帮助文档是英文的,但内容...
《深入理解Jbpm4.3请假流程应用与jar包详解》 Jbpm,全称为Java Business Process Management,是一款开源的工作流管理系统,主要用于企业业务流程的建模、执行和管理。在Jbpm4.3版本中,它提供了一个灵活且强大的...
综上所述,jbpm-4.3-src的源代码包为开发者提供了一次深入理解jBPM工作流程引擎的机会,同时也为定制和优化流程管理解决方案提供了可能。对于想要学习和应用BPM技术的人来说,这是一个宝贵的资源。
1. **jbpm4.3**:jbpm(Java Business Process Management)是一个开源的工作流管理系统,版本4.3是其历史版本之一,用于业务流程自动化,支持BPMN2.0标准。 2. **集成环境**:jbpm4.3需要与应用服务器如Tomcat或...
jbpm4是jbpm的第四个主要版本,而jbpm4.3则是该版本的一个具体迭代,带来了诸多改进和新特性。 在jbpm4.3中,关键知识点主要包括以下几个方面: 1. **流程建模**:jbpm4.3支持BPMN 2.0标准,使得业务流程可以用...
### jBPM4.3与SSH环境搭建详解 #### 一、引言 jBPM (JBoss Business Process Management) 是一个开源的工作流管理系统,它提供了用于定义业务流程的工具和APIs。本文将详细介绍如何在开发环境中安装并配置jBPM4.3...
jBPM4.3的下载可以从官方网站获取,包括完整的发行包和源代码。下载后,开发者可以解压并开始设置环境。 **1.3. 源码** 对于希望进行深度定制或者开发的用户,jBPM提供源码,可以在Eclipse等IDE中导入项目,进行...
jbpm jbpm4.3.jar DDDDDDDD
jbpm4.3是Jboss Business Process Management (BPM)平台的一个版本,它是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本篇主要针对jbpm4.3使用过程中遇到的问题及其解决方法进行详细阐述。 首先,...
通过【jbpm4.3-demo】项目,学习者可以实践上述知识点,了解如何部署流程定义,启动流程实例,以及如何在Java代码或Web应用中与jbpm交互。这个示例可能包含了从简单到复杂的各种流程示例,涵盖了jbpm4.3的主要特性和...
Example 目录提供了 JBPM 自带的示例,Install 目录是安装目录,lib 目录包含了 JBPM 所有依赖包,Migration 目录用于 JBPM3 到 jbpm4.3 的回退升级,Src 目录包含了 JBPM4.3 的源码包。 自动化部署 JBPM4.3 的...