JBPM与Spring集成开发指导书_第1页
JBPM与Spring集成开发指导书_第2页
JBPM与Spring集成开发指导书_第3页
JBPM与Spring集成开发指导书_第4页
JBPM与Spring集成开发指导书_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . nn更多企业学院:中小企业管理全能版183套讲座+89700份资料总经理、高层管理49套讲座+16388份资料中层管理学院46套讲座+6020份资料 国学智慧、易经46套讲座人力资源学院56套讲座+27123份资料各阶段员工培训学院77套讲座+ 324份资料员工管理企业学院67套讲座+ 8720份资料工厂生产管理学院52套讲座+ 13920份资料财务管理学院53套讲座+ 17945份资料 销售经理学院56套讲座+ 14350份资料销售人员培训学院72套讲座+ 4879份资料n更多企业学院:中小企业管理全能版183套讲座+89700份资料总经理、高层管理49套讲座+16

2、388份资料中层管理学院46套讲座+6020份资料 国学智慧、易经46套讲座人力资源学院56套讲座+27123份资料各阶段员工培训学院77套讲座+ 324份资料员工管理企业学院67套讲座+ 8720份资料工厂生产管理学院52套讲座+ 13920份资料财务管理学院53套讲座+ 17945份资料 销售经理学院56套讲座+ 14350份资料销售人员培训学院72套讲座+ 4879份资料PM与Spring集成开发指南 1 术语工作流:全部或者部分,由计算机支持或自动处理的业务过程。工作流管理系统:工作流管理系统是这样的一个系统,详细定义、管理并执行“workflows”,系统通过运行

3、一些软件来执行workflows,这些软件的执行顺序由工作流逻辑的计算机表示形式(计算机化的业务规则过程定义)驱动。工单:一次申请的提交记录,该记录具有唯一性。工单相关的概念: l 工单管理:对投诉工单、建议工单、座席建议工单、业务受理工单等不同类型的工单进行派发、接收处理、回复等一系列工单处理操作。 l 工单统计:对各种处理工单的数量,类型进行数据统计和导出、报表打印。 l 工单系统管理:对工单系统进行管理,设置相应的处理部门、处理人员和相应的权限,规定处理流程。 l 工单日志:记录工单操作日志,有效管理日志的处理状况和责任。 2 背景工作流管理系统一项快速发展的技术,各种行业渐渐的采用工作

4、流技术。工作流技术的主要特点是:过程的自动化处理,这些过程包含由人与以机器为基础的活动相结合;特别是对那些与IT 应用程序、工具交互的过程,进行自动化处理。虽然,工作流技术广泛用于办公环境中,例如保险、银行、法院和行政管理等,然而工作流技术,也可以应用于一些类型的工业和制造业。 3 概述在人们日常生活和工作中,都将与工作流程发生密切的关系,“工作流”干预过程、业务程序的自动化处理,文档、信息或者任务按照定义好的规则在参与者间传递,来完成整个业务目标或者对整个业务目标的完成做贡献。应用领域广泛,比如: l 公司或组织部请假或休假流程、通知分发流程等 l 政府政策审批流程、 l 网上书店图书订阅流

5、程、发送流程等 l 驾照学习流程等等。同时,“工作流”可能由手工组织,实际上,多数“工作流 ”都在IT系统中进行组织的,从而对过程自动化提供计算机支持。“工作流”采用计算机化后,可以大大提高工作和生活的效率,而信息化过程中,对于采用的技术实现方式的不同,将直接影响到信息化的质量,包括:开发成本、维护成本等。好的工作流解决方案,可以大大提高业务流程流转效率、容易扩展对新流程的支持等。PM是当前优秀的开源工作流引擎。本文档是关于PM与Spring框架集成分析文档。包括:基本概念、设计要点、常见问题解答、参考资源等。本文主要介绍了集成开发的高级容,基础知识参见:参考资料本文档适合所有计算机开发人员。

6、 4 基本概念 4.1 什么是工作流“工作流”干预过程、业务程序的自动化处理,文档、信息或者任务按照定义好的规则在参与者间传递,来完成整个业务目标或者对整个业务目标的完成做贡献。同时,“工作流”可能由手工组织,实际上,多数“工作流 ”都在IT系统中进行组织的,从而对过程自动化提供计算机支持,WFMC把工作定位在这个方向上。“工作流”定义:全部或者部分,由计算机支持或自动处理的业务过程。工作流经常与“过程重组(BPRBusiness Process Re-engineering)”联系在一起。BPR 是关于企业(组织)核心业务过程的评估、分析、模拟、定义以与其后的操作实现。尽管,不是所有的BPR

7、都是采用工作流实现的,但工作流技术是最佳的方法,主要因为,工作流技术提供了业务过程逻辑与IT操作支持的分离,从而以后可以修改过程规则来重定义业务过程。相反,工作流技术并不只在BPR中采用,例如用于现有的业务过程中。“工作流管理系统(WFMSWorkflow Management System)”通过管理工作活动序列,调用与各种活动步骤相关的人员、IT资源,对业务过程提供自动化处理。“工作流管理系统”定义:工作流管理系统是这样的一个系统,详细定义、管理并执行“workflows”,系统通过运行一些软件来执行workflows,这些软件的执行顺序由工作流逻辑的计算机表示形式(计算机化的业务规则过程

8、定义)驱动。每个业务过程都有一个生命周期,从几分钟到几天(甚至数月),由过程的复杂性与组成活动的持续时间来决定。有多种方法实现工作流管理系统,使用多种IT和通讯组件,运行环境可以从一个小的本地工作组到企业间。因此,WFMC参考模型从各种角度考虑工作流管理系统,希望提供各种不同的实现技术、运行环境。尽管实现的方法多种多样,但所有的WFMS都表现出某种共同的特性,这为不同产品间的集成、协同工作提供了基础。参考模型描述了工作流系统的一个公共模型,并且指出参考模型如何能使其与其他各种不同的实现方法相关联。在最高层,所有的WFMS都一样的特性,即为下边的3个功能提供支持: 建立时期(Build-time

9、)功能,定义、模拟工作流过程,与其组成活动。 运行时期(Run-time)控制功能,在运行环境中管理工作流过程,管理不同 运行时期与用户、IT应用程序(工具)的交互,来处理各种活动的执行。下图描述WFMS的基本特性,以与上述功能间的关系: 4.2 PM4.2.1 介绍PM is a platform for executable process languages ranging from business process management (BPM) over workflow to service orchestration. There are many process langua

10、ges. Each one is targeted towards a specific function and a specific environment. PM allows all of these process languages to be build natively on top of one single technology: the Process Virtual Machine (PVM). PM already supports 3 very different process languages: jPDL, WS-BPEL and Seam Pageflow.

11、 This might expand in the future as new process languages are added to our platform. PM(oss Business Process Management业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 jPDL是构建于PM框架上的流程语言之一。在jPDL中提供了任务(tasks)、待处理状态 (wait states)、计时器(timers)、自动处理(automated actions)等术语,并通过图型化的流程定义,很直观地描述业务流程。 j

12、PDL可以部署于Java语言的任何应用环境下,JavaSE Application(Swing/SWT)、JavaEE Application(Application Server) 。4.2.2 jPDL分发包组成目前jPDL的最新版本是3.2.2,您可以在以下地址:labs.oss./osspm/jpdl_downloads/获得官方下载包。下载包分为两种,一种是标准包(pm-jpdl-3.2.2.zip)只有20M左右;一种是套件包(pm-jpdl-suite-3.2.2.zip)将近80M。两者最大的区别是套装包自带一个已经配置好的oss服务,下载解压缩后,可直接运行。4.2.3 jP

13、DL的核心程序包(pm-jpdl.jar) 它是一个典型的jar文件,它涵盖对流程定义和运行时流程实例上下文环境的操作API。在最简化的业务流程样例中,jPDL将流程定义存储与XML格式的定义文件中,在运行时载入存,在存里记录完整的业务实例和执行过程的环境变量,并完成全部操作。显然,在实际应用中,流程信息必须被持久化的存储于数据库中。jPDL使用了Hibernate作为其对象持久化的API。4.2.4 Graphical Process Designer插件(pm-jpdl-designer-3.1.2.zip) 它是一个基于Eclipse的图型编辑插件。使用它可以对业务流程进行可视化的定制,

14、而无须手动编辑XML文件。该插件还提供了流程定义上传功能,可以将新定义的流程发布到在线运行的jPDL系统上。 4.2.5 jPDL身份包(pm-identity.jar) 它是jPDL的一个轻量级扩展包,简单实现了组Group、用户User、许可权Permission等用户身份认证和鉴权机制。如果您的应用环境只需要简单的用户认证鉴权管理,那么它十分适合您。4.2.6 jPDL Web控制台(pm-console.war) 它是一个标准Web应用(使用了JSF技术),提供了对jPDL平台执行情况的监控程序(对jPDL数据库的监控)。管理员可以通过该程序方便的维护jPDL的数据库,管理流程定义和流

15、程实例的执行情况。同时,它还提供了一个简单的Getting started DEMO,方便初学者了解jPDL。 4.2.7 静态的流程定义模型 流程定义实体(Process Definition)编号 PD-001对象 流程定义实体(Process Definition)描述 流程定义实体是对一个流程抽象的对象化定义,如图-002。一套系统中,用户可以定义保存多个流程定义实体,如:报销流程定义、请假流程定义、人事录用流程定义等。每个流程定义还可以有多个不同的版本,如:针对同样的报销流程可以有修订前和修订后的两个流程定义,同时存储于jPDL数库中。用户可以通过流程名称和版本号获取相

16、应的流程定义。在默认请况下,系统启用最新的流程定义。Java对象 org.pm.graph.def.ProcessDefinition数据库表 PM_PROCESSDEFINITION该表存储流程定义的通用信息,如:流程名称、版本号表关联说明 PM_PROCESSDEFINITION表中,每条记录有自己的数据库流水号 ID_PM_PROCESSDEFINITION的外键(Foreign Keys):startstate_ 同PM_NODE(流程结点)表关联。此外键指向流程定义中的起始结点ID 流程结点(Node)编号 PD-002对象 流程结点(Node)描述 流程结点是对流程

17、中的过程环节/行为的抽象对象化定义,如图-002中的每个方框即代表一个结点。结点有两个主要职责:一,实现某个指定行为,这在PM中就是执行一段制定的Java代码;二,转递、维持流程的延续,直至达到最终结点。在jPDL的结点设计中,系统开放了充分的用户行为模型,程序员可以基于这些行为接口,实现自定义的业务功能。在jPDL中,系统预定义了一系列的Node类型,同时也允许程序员开发定义自己的Node类型。Java对象 org.pm.graph.def.Node数据库表 PM_NODE该表存储结点的定义信息。 表关联说明 PM_NODE表中,每条记录有自己的数据库流水号 ID_PM_NODE的外键(Fo

18、reign Keys):processdefinition_ - 此外键说明该Node从属的流程定义对象ID subprocessdefinition_- 此外键指定了一个由该Node发起的子流程。在主流程离开当前结点之前,该子流程必须完成执行过程。action_ - 此外键指定该结点动作类的ID superstate_ - 该外键是一个自关联键,指向结点的上级父结点ID。一个子流程中的多个结点从属于同一个父流程结点。 decisiondelegation_ 该外键指定了结点委派的判定类ID(所谓委派判定类是指根据用户的业务逻辑,判定流程的下一个流向的Java Class) 流

19、程转向(Transitions)编号 PD-003对象 流程转向(Transitions)描述 流程转向是描述流程中从一个结点到另一个结点的状态转换过程,因此一个转向一定有一个源结点和一个目标结点。 在jPDL中transition的命名是通产是唯一的,结点依靠transition的命名来区别到下一结点的路径,当一个Node中存在有多个同名的transition的时候,第一个transition将会被选中。结点转向的过程中,排在transition列表第一位置的即是默认的transition。Java对象 org.pm.graph.def.Transition数据库表 PM_TRANSITIO

20、N该表存储流程定义中的转向对象。 表关联说明 PM_TRANSITION表中,每条记录有自己的数据库流水号 ID_PM_TRANSITION的外键(Foreign Keys):processdefinition_ - 该外键指向transition所属的流程定义对象ID from_ - 该外键指向transition的源结点ID to_ -该外键指向transition的目标结点ID 动作(Actions)编号 PD-004对象 动作(Actions)描述 Actions是指一系列的在流程事件中运行的Java代码。流程图是软件需求的传达的重要手段,但它只是软件需求的一个投影,隐

21、藏了很多技术实现的细节。Actions则是向流程图添加技术实现细节的一种机制,它可以很好的补充和修饰流程图。这意味着在不改变流程图结构的情况下,可以将Java的代码与之关联。Actions通过事件(Events)同流程绑定,常用的主要事件包括:进入结点、离开结点、进行转向。请注意,同Events关联的Actions和处于Node中的Actions是有不同的。处于Events中的Actions是通过事件触发执行的,它是典型的观察者模式,是无法影响流程控制的流向。而处于Node中的Action则要承担起流程传递的责任。此外,Actions是可以命名的。可以通过Actions的命名在任何地方引用该A

22、ctions。命名的Actions可以作为主流程定义的公用子元素。这个功能可以提高对Actions定义的复用。Java对象 org.pm.graph.def.Action数据库表 PM_ACTION该表存储流程定义中的动作对象。 表关联说明 PM_ACTION表中,每条记录有自己的数据库流水号ID_ PM_ACTION的外键(Foreign Keys):processdefinition_ - 指明action所属的流程定义ID event_ - 指明action绑定的event ID actiondelegation_ - 指明action的委派对象ID exceptionhandler_

23、- 指定action的异常处理ID referencedaction_ - 指向当前action引用的action的ID timeraction_ - 指向当前action引用的计时器action 事件(Events)编号 PD-005对象 事件(Events)描述 事件表示流程执行中的某个特定的时刻。在流程执行的过程中,通过PM的引擎触发事件,这通常发生在pm计算后续状态的时候。事件总是和流程中的元素绑定,这些元素包括:流程定义(process definition)、流程结点(node)、流程转向(transition)和任务(task)。不同的元素会触发不同的事件,拿no

24、de元素来说,有 node-enter事件和node-leave事件。事件是action的钩子,一个事件可以回调一系列的action。当PM引擎触发事件的时候,事件中绑定的action就会被执行。在PM中,事件模型是可传播的。一个子元素触发的事件,将逐层向上传播到顶层的流程定义元素。这样的设计使得事件可以被集中化处理。Java对象 org.pm.graph.def. Event数据库表 PM_EVENT该表存储流程定义中的事件对象,这些事件与相关的action绑定。 表关联说明 PM_EVENT表中,每条记录有自己的数据库流水号ID_ PM_EVENT的外键(Foreign Keys):pro

25、cessdefinition_ - 指向event所属的流程定义ID node_ - 指向event所属的node ID transition_ - 指向event所属的transition ID task_ - 指向event所属的任务ID 任务(Task)编号 PD-006对象 任务(Task)描述 任务作为流程定义中的一部分,定义了如何创建任务实例(Task instances)以与任务分配。任务可以在任务结点(Task-Node)和流程定义(process-definition)两个地方定义。通常会在一个任务结点中定义一个或多个的任务。在这种情况下,任务结点表示在流程中

26、等待用户处理的交互操作。业务流程会停留在任务处,等待用户完成相应的操作之后继续。任务也可在流程定义中声明。通过任务名,可以找到相应的任务定义,并引用他们。实际上任何有命名的任务都可以通过名字被引用。在整个的流程定义中,任务名必须是唯一的。此外,还可以给任务设定优先级,这些优先级属性将成为任务实例化时的默认设置。任务实例可以在之后的运行中改变优先级。.Java对象 org.pm.taskmgmt.def.Task数据库表 PM_TASK该表存储流程定义中声明的任务对象。 表关联说明 PM_TASK表中,每条记录有自己的数据库流水号ID_PM_TASK的外键(Foreign Keys):proce

27、ssdefinition_ -指向task所属的流程定义ID taskmgmtdefinition_ - 指向task引用的TaskMgmtDefintion对象ID tasknode_ - 指向task所属的任务结点ID startstate_ -指向task所属流程的起始结点ID assignmentdelegation_ - 指定task委派处理的class对象的ID swimlane_ - 指定task要授权的swimlane(角色)ID taskcontroller_ - 指定一个task赋值的委托类 4.2.8 具体化的流程实例模型流程实例中最重要的三个对象:流程实例(Proces

28、s Instance)、令牌(Token)、任务实例(Task Instance). 流程实例(Process Instance)编号 PI-001对象 流程实例(Process Instance)描述 流程实例是流程定义的运行时状态,它记录了一个流程运行的起始时间、结束时间等状态信息Java对象 org.pm.graph.exe.ProcessInstance数据库表 PM_PROCESSINSTANCE该表存储运行时的流程对象信息。 表关联说明 PM_PROCESSINSTANCE表中,每条记录有自己的数据库流水号 ID_PM_PROCESSINSTANCE的外键(Forei

29、gn Keys):processdefinition_ - 该流程实例对应的流程定义的ID roottoken_ - 该流程实例引用的跟令牌 superprocesstoken_ - 如果当前流程是某个流程实例的子流程,则指向该父流程的ID 令牌(Token)编号 PI-002对象 令牌(Token)描述 令牌代表一个流程执行的路径,它维护着流程定义中各个结点的指针,同时记录了流程当前执行的位置。Java对象 org.pm.graph.exe.Token数据库表 PM_TOKEN该表存储运行时令牌对象信息,它表示当前流程执行到的位置。 表关联说明 PM_TOKEN表中,每条记录

30、有自己的数据库流水号ID_ PM_TOKEN的外键(Foreign Keys):processinstance_ - 指向该令牌所属的流程实例的ID。 subprocessinstance_ - 指向该令牌所属的子流程实例ID。 node_ - 令牌所在(所指向的)的当前节点ID. parent_ - 如果当前令牌是一个分支流程或子流程的令牌,则该值指向其父令牌ID。 任务实例(Task Instance)编号 PI-003对象 任务实例(Task Instance)描述 一个任务实例对象可以分配给指定的操作者处理,当任务完成后,将触发流程继续下行。任务实例的生命周期很简单,生

31、成实例->开始处理->任务结束。从弹性设计考虑出发,任务的分配不属于实例生命周期的一部分,任务是否被分配是不会影响其生命周期过程的。当流程进入一个任务结点的时候,结点上任务被实例化;用户通过访问系统的界面组件,获取自己的任务列表,可以进行任务委派、处理或直接结束任务。任务实例记录着任务创建的时间、结束时间,这些信息可以通过TaskInstance对象中的getter方法获取。一个任务实例的结束时间标识它的完成,在后绪的任务查询中,该实例不会被取出,但实例的记录仍保留于数据库中。Java对象 org.pm.taskmgmt.exe.TaskInstance数据库表 PM_ TASKI

32、NSTANCE该表存储运行时任务实例信息。 表关联说明 PM_ TASKINSTANCE表中,每条记录有自己的数据库流水号ID_PM_ TASKINSTANCE的外键(Foreign Keys):task_ - 指向定义该实例的任务ID token_ - 指向任务实例对应的令牌ID swimlaneinstatnce_ - swimlane 实例,表示处理该任务的角色 taskmgmtinstance_ - 管理该任务的模块实例ID 4.3 SpringSpring Framework 是一个 Java/Java EE/.NET 的分层应用程序框架。该框架基于 Expert One-on-On

33、e Java EE Design and Development(ISBN 0-7645-4385-7)一文中的代码,并最初由 Rod Johnson 和 Juergen Hoeller et al 开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。 Spring 中包含的关键特性: 强大的基于 JavaBeans 的采用控制翻转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。 一个可用于从 applet 到 Java EE 等不同运行环境的核心 B

34、ean 工厂。 数据库事务的一般化抽象层,允许插件式事务管理器,简化事务的划分使之与底层无关。 建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境,这与一般的 JTA 或者 E CMT 相反。 JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码), 简化了错误处理, 大大减少了程序员的编码量. 再次利用JDBC时,你无需再写出另一个 '终止' 模块. 并且面向JDBC的异常与Spring 通用数据访问对象 (Data Access Object) 异常等级相一致. 以资源容器,DAO 实现和事

35、务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成。利用众多的翻转控制方便特性来全面支持, 解决了许多典型的Hibernate集成问题. 所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规. 灵活的基于核心 Spring 功能的 MVC 网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现技术,例如 JSP,FreeMarker,Velocity,Tiles,iText 以与 POI。值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,例如 Struts,WebWork,或 T

36、apestry。 提供诸如事务管理等服务的面向方面编程框架。 4.4 Spring ModulesSpring Modules is a sub-project of Spring intended to ease integration with 3rd party products without overloading the core framework with additional dependencies.The modules included in the 0.9 release are:Ant integration. Flux suite of products inte

37、gration. HiveMind integration. Lucene integration. Apache O integration. O/R Broker integration. OSWorkflow integration. Tapestry integration. Support for declarative caching services including EHCache, JCS, OSCache, GigaSpaces and others. Support for db4o Support for JSR-94 Rules Engines such as Dr

38、ools and Jess Support for various Jakarta Commons components such as Configuration, Lang, Chain and Commons Validator Support for JavaSpaces, including Gigaspaces and Blitz. Support for PM 3.0.x and 3.1.x Support for JSR-170 (Java Content Repository) including Jackrabbit and Jeceira. Support for web

39、 template engines like Freemarker, Groovy, Velocity, WebMacro and XSLT. Valang: Validation Language. Bean Validation Framework. Spring MVC add-ons. XT Framework: Domain-Driven Design oriented framework and Spring MVC AJAX support for developing richer domain models and richer user interfaces. 5 集成 5

40、.1 Introductionj PM module offers integration between the Spring and PM allowing for reuse of Spring's Hibernate support along with the IoC container. The module allows PM's underlying Hibernate sessionFactory to be configured through Spring and PM actions to access Spring's context. 5.2

41、 ConfigurationUsers familiar with Spring will see that the PM module structure resembles with the orm package from the main Spring distribution. The module offers a central template class for working with PM, a callback to access the native pmContext and a local factory bean for configuration and cr

42、eating a PM instance.<beans> <!- DataSource definition -> <bean id="dataSource" class="."> . </bean> <!- Hibernate SessionFactory definition -> <bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessio

43、nFactoryBean"> . </bean> <!- helper for reading PM process definitions -> <bean id="simpleWorkflow" class="org.springmodules.workflow.pm31.definition.ProcessDefinitionFactoryBean"> <property name="definitionLocation" value="classpath:or

44、g/springmodules/workflow/pm31/simpleWorkflow.xml"/> </bean> <!- PM configuration -> <bean id="pmConfiguration" class="org.springmodules.workflow.pm31.LocalpmConfigurationFactoryBean"> <property name="sessionFactory" ref="hibernateSessio

45、nFactory"/> <property name="configuration" value="classpath:pm.cfg.xml"/> <property name="processDefinitions"> <list> <ref local="simpleWorkflow"/> </list> </property> <property name="createSchema" value

46、="true"/> <property name="processDefinitionsResources"> <list> <value>classpath:/org/springmodules/workflow/pm31/someOtherWorkflow.xml</value> </list> </property> </bean> <!- PM template -> <bean id="pmTemplate" clas

47、s="org.springmodules.workflow.pm31.pmTemplate"> <constructor-arg index="0" ref="pmConfiguration"/> <constructor-arg index="1" ref="simpleWorkflow"/> </bean> set </beans> The example above shows how (existing) Spring-managed

48、 Hibernate SessionFactories and transaction management can be reused with PM. 5.3 LocalpmConfigurationFactoryBeanThe main element is LocalpmConfigurationFactoryBean which should be familiar to users acustomed to Spring. Based on the pm configuration file and the given SessionFactory, it will create

49、a PM configuration which can be used for working with the given process definitions. It is possible to replace PM xml configuration with PM 3.1.x newly added ObjectFactory - note that if both are present the xml configuration is preffered. LocalpmConfigurationFactoryBean allows the creation of the u

50、nderlying schema based on the process definitions loaded automatically at startup.Note that the sessionFactory property is not mandatory - Hibernate SessionFactory can be reused with PM or PM can work by itself without any integration with the existing infrastructure. However, in most scenarios, usi

51、ng LocalpmConfigurationFactoryBean allows one to take advantage of Spring transaction management infrastructure so it's possible without any code change to use PM, Hibernate and jdbc-based code inside the same transactional context, be it managed locally or globally (JTA). Moreover, it is possib

52、le to use thread-bound session or OpenSessionInView patterns with PM.LocalpmConfigurationFactoryBean is also aware of the enclosing applicationContext lifecycle - PM will be initialized once the context is started (usually application startup) and will be closed properly when the context is destroye

53、d (application is shutdown).Note that LocalpmConfigurationFactoryBean can be configured programatically and can be used standalone only to build an PM context which can be used independently of Spring Modules PM support. 5.4 Inversion of Control: pmTemplate and pmCallbackAnother important feature of

54、 Spring Modules PM support is pmTemplate. The template offers very convient ways of working directly with process definitions as well as PM API taking care of handling exceptions (be it PM or Hibernate based) in respect to the ongoing transaction (if it's present), the underlying Hibernate sessi

55、on (if pesistent services are used) and the PM context. PM exceptions (and the underlying Hibernate information) are translated into Spring's DAO exception hierarchy. Everything happens in a transparent and consistent manner.This is possible, as with every Spring-style template,even when direct

56、access to the native pmContext is desired, through the pmCallback:public ProcessInstance findProcessInstance(final Long processInstanceId) return (ProcessInstance) execute(new pmCallback() public Object doInpm(pmContext context) / do something . return context.getGraphSession().loadProcessInstance(p

57、rocessInstanceId.longValue(); ); As well, as LocalpmConfigurationFactoryBean, the pmTemplate can be configured programatically and can be used standalone on a pre-existing pmContext (configured through LocalpmConfigurationFactoryBean or not) and can be used independently of Spring Modules PM support. 5.5 ProcessDefinitionFactoryBeanProcessDefinitionFactoryBean is a simple reader that loads PM proces

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论