`

深入PVM

 
阅读更多
来源:http://blog.csdn.net/yangzy0808/article/details/4538736
流程虚拟机,我们对它的期望是它可以为所有流程提供一套通用平台,之后无论我们是需要对原有流程语言进行扩展,或者重新实现一套自定义的流程语言,都可以很简单的使用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依赖绑定映射。
分享到:
评论

相关推荐

    PVM编程指南,内容详实,讲解深入浅出。

    PVM编程指南,内容详实,讲解深入浅出。

    jbpm 4.3 pvm的使用

    ### jbpm 4.3 pvm的使用 #### 一、概述 JBPM(Jobflow-Based Process Management)是一个开源的工作...同时,熟悉PVM的工作原理也有助于开发者更深入地了解流程执行的细节,从而更有效地利用JBPM进行流程开发和优化。

    jBPM4的PVM实现解析

    通过对jBPM4的PVM实现的深入解析,我们可以看到PVM不仅是一个强大的流程执行引擎,还具备高度的灵活性和可扩展性。它通过一系列的设计模式和技术手段实现了对流程定义和执行的有效管理。无论是对于业务流程的定义...

    PVM(过程虚拟机或流程虚拟机的)中文译文

    通过深入理解PVM的工作机制,IT专业人员可以更好地设计和实施业务流程管理系统,提升企业的运营效率和自动化水平。在实际应用中,PVM不仅适用于企业内部的流程管理,还可以应用于跨组织、跨系统的协同工作,促进信息...

    jbpm 4 PvM

    【jbpm 4 PVm】是关于业务流程管理(Business Process Management, BPM)的一个主题,主要涉及jbpm框架的第四代版本。...通过深入理解和熟练使用jbpm 4 PVm,可以提高企业的业务流程效率,优化业务流程,提升服务质量。

    P+F(倍加福)绝对值编码器PVM58使用手册中文版(带Profibus通讯连接说明)

    ### P+F(倍加福)绝对值编码器PVM58使用手册中文版解析 #### 知识点一:P+F(倍加福)绝对值编码器PVM58概览 ...通过深入理解其工作原理、功能特性和操作指南,用户可以最大化地发挥其性能,提升生产线的效率和质量。

    pvm英文指南

    通过阅读《PVM英文指南》这份文档,你可以深入理解PVM的工作原理、编程模型以及如何在实际项目中应用PVM。此外,实践是掌握PVM的关键,编写并运行简单的并行程序,逐步熟悉其通信和控制机制。 总的来说,PVM作为...

    PVM:Parallel Virtual Machine

    书中首先介绍了PVM的基本概念和发展背景,随后深入讲解了如何安装配置PVM以及如何利用其提供的API进行编程。此外,还包含了大量的示例代码和实用技巧,帮助读者快速掌握PVM的核心功能并应用于实际项目中。 总之,...

    PV MPPT仿真,pvm模型,matlab

    标题“PV MPPT仿真,pvm模型,matlab”表明我们将探讨使用MATLAB进行光伏系统模型的构建与仿真,特别是MPPT算法的模拟。MATLAB是一个强大的数学计算软件,常用于科学研究和工程应用,其Simulink模块则非常适合进行...

    PVM编程指南借鉴.pdf

    PVM在工作站机群中的作用是提供一个抽象层,使得程序员可以通过标准的API进行并行编程,而不必深入了解每个节点的硬件和网络细节。PVM支持进程间的通信、同步和任务调度,使得开发人员能够专注于算法设计,而不是...

    Faces2pvm-开源

    然而,配置PVM需要对网络、操作系统以及并行计算有深入的理解,这对于许多用户来说是一个挑战。 Faces2pvm解决了这个问题。它作为一个自动化工具,可以自动启动PVM服务,这意味着用户不再需要手动执行启动脚本或者...

    PVM编程指南[归纳].pdf

    总结来说,《PVM编程指南》深入介绍了并行计算的历史、工作站机群的演进,以及PVM在构建并行计算环境中的应用。对于希望掌握并行编程和分布式计算技术的开发者而言,这份指南提供了宝贵的理论知识和实践经验。通过...

    人工智能-图像处理-基于PVM并行图像处理的研究.pdf

    通过深入研究PVM的并行处理机制,开发适应图像处理特性的并行算法,我们可以期待在图像识别、模式分析、视频分析等领域取得突破,进一步推动人工智能技术的发展。此外,这种研究也具有重要的教育价值,可以培养更多...

    绝对值编码器PVM58使用手册中文版无水印

    - **4.1.2 实现细节**:深入探讨实现这些功能的技术细节,如数据结构、命令格式等。 综上所述,绝对值编码器PVM58是一款高性能、多功能的编码器产品,适用于多种工业自动化应用场景。通过详细的使用手册,用户不仅...

    source+code.rar_pvm

    然后对高亮显示这一核心问题进行了深入剖析,并对文件基本操作、基本编辑功能、关键字查找与替换、格式自动编排进行了较为详细的论述。最后,通过用户亲自体验验证了该编辑器的可靠性和实用性。该编辑器支持c/c++...

    SSM-20N5U.pdf

    索尼PVM系列监视器服务手册是一份专门针对...对于监控系统安装、调试和维护的专业人士来说,深入理解索尼PVM系列监视器的这些功能和细节是必要的,这不仅有助于更好地完成工作,也能够提高工作效率和解决故障的能力。

    PVM.zip_C语言_keil

    在本文中,我们将深入探讨C语言以及Keil IDE在嵌入式系统开发中的应用,这些都是“PVM.zip_C语言_keil”压缩包文件的核心内容。C语言是编程领域中的基石,而Keil则是广泛用于微控制器(MCU)开发的强大工具,两者...

Global site tag (gtag.js) - Google Analytics