版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、、jBPM入门简介概述工作流业务流程管理技术是基于SOA技术实现的一个核心部分。使用工作流能够在软件开发和业务两个层次受益:1、方便开发工作流管理系统能够简化企业级软件开发甚至维护。降低开发风险-通过使用状态和动作这样的术语,业务分析师和开发人员使用同一种语言交谈。这样开发人员就不必将用户需求转化成软件设计了。实现的集中统一-业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各种各样的系统中。加快应用开发-你的软件不用再关注流程的参与者,开发起来更快,代码更容易维护。2、业务流程管理(BPM>在自动化业务流程之前,分析并将它们规格化是一件艰苦但会有很好回报的工
2、作:提高效率-许多流程在自动化过程中会去除一些不必要的步骤较好的流程控制-通过标准的工作方法和跟踪审计,提高了业务流程的管理改进客户服务-因为流程的一致性,提高了对客户响应的可预见性灵活-跨越流程的软件控制,使流程可以按照业务的需要重新设计。业务流程改进-对流程的关注,使它们趋向于流畅和简单但从长远的角度,工作流流程管理技术的研究可为两个阶段进行:1目前解决华研今后新项目中复杂业务流程如何使用工作流引擎技术进行实现的问题。2上升到面向服务体系架构,实现各个服务之间的业务流程。jBPM,全称是JavaBusinessProcessManagement,是一种基于J2EE的轻量级工作流管理系统。j
3、BPM是公开源代码项目,它使用要遵循ApacheLicense。jBPM在2004年10月18日发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBossjBPM。随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。JBossjBPM只有最小的倚赖性,它可以很容易的作为java库来使用.当然它也可以用在访问量很大的J2EE群应用服务器环境中JBossjBPM可以同任何数据库配置可以部署在任何应用服务器上jBPM最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如WfMCXPDL,BPML,ebX
4、ML,BPEL4WS等,而是采用了它自己定义的JBossjBPMProcessdefinitionIanguage(jPdl>。jPdl认为一个商务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据持久层解决方案。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。<具体选型报告可参考工作流技术选型评估报告)。本文档主要是工作流研究小组关于开源工作流引擎jbpm的研究成果总结
5、。内容包括工作流研究场景的介绍、jbpm的环境配置,并包括以下六个研究主题:JBPM同开发如何结合,又如何保持独立性;对应用系统的设计实现有什么样的制约用户/角色如何同应用系统结合,变化又如何处理流程中每个活动,如何动态指定执行者类似传阅功能如何实现子流程如何实现流程执行步骤耗时阀值和自动提醒设置jBPM当前版本的稳定性评估术语、定义和缩略语序号性定久业务就程(businessprocessJ取湘公商的开礴工作流引辇应用场景本场景是从房地产营销系统的需求中提取出来的,在房地产项目中,客户选户购房的过程是一个非常典型的工作流场景。我们将这一过程提取出来,作为jbpm技术研究的场景。在购房过程中,
6、会有以下人员参与。客户:购房的主体销售人员:在购房过程中指导看房,购房。销售经理:确定认购信息。财务人员:收取定金。客服人员:打印收据,打印客户认购书。客户购房的过程可以描述如下。客户来到售楼中心,销售人员进行接待。客户向销售人员提供预先申请的服务号。销售人员确认服务号是否有效,如果无效现场给出一个新的服务号。销售人员引导客户选房。客户确定户型,房号。销售人员录入客户认购资料。销售人员确认认购资料填写完整。销售人员将认购资料提交给销售经理审批。确定是否可以获得优惠,如果客户是一次交清房款,获得0.1%优惠。交上级经理审批。销售人员引导客户到财务处交纳定金。交纳定金后,客服人员打印收据。客服人员
7、打印认购书。为了使用研究的场景更有代表性,揉合其他典型的工作流应用场景,将上面的流程作一些删改。客户认购的流程改为:客户确定购房,销售人员录入认购资料。提交认购资料,必须保证录入资料的完整性。提交审核,按总金额进行分类审核。如果金额小于50万销售经理审核即可,大于50万还要上级经理两人同时审核通过。审批完成,客户到财务处交纳定金。客服人员为客户打印收据,打印认购书,认购完成。启金静否归戎汕号9启金静否归戎汕号9/于別万I面的流程中一些异常情况(流程中的一些分支,在这里先不作考虑,如,客户在交纳定金之前可以随时放弃认购。客户的认购要录入的资料内容包括:客户姓名,房号,定金,总金额,流程号等,这里
8、仅选取几个重要的数据作为保存对象。保存录入资料时自动取得一个流程号,任何时候,可以根据此流程号跟踪流程状态,所以在保存认购资料时要记录流程号。通用的标准规范jBPM是个功能全面的WorkflowEngine,融合了4大功能:Workflow,BPMBPELPageFlow。它自己有个BPEL扩展,采用jbossHibernate实现,它使用自定义的自定义标准jpdl,不支持目前公开的工作流业务流程)标准,如:JC”JSR208JavaBusinessIntegrationJSR207ProcessDefinitionforJavaOASI*WS-BPEWorkflowManagementCoa
9、lition(WFMC>WFMCXPXBusinessProcessManagementInitiative(BPMI>BPMObjectManagementGroup(OMG>StateChartXML(SCXML>处理测试阶段的JBossjBPMBPEL扩展准备支持BPEL1.1标准(非标准组织通过的标准。技术方案因为公司采取的架构是ejb3+tapestry4架构,所以我们的场景实现架构也是基于以上架构进行实现的tapestry4+ejb3+jbpm3.2),我们所采取的jbpm版本是3.2,这也是目前jbpm最新的版本。这里我们使用jboss作为我们的web服务
10、器开发环境这里我们是采用eclipse3.2开发工具进行开发,Tapestry4+ejb3的开发环境配置和以往的项目配置基本保持一致,这里就不再进行详细介绍,关键就是jbpm3.2的配置方法。我们从jBoss官方网站(上下载jbpm-jpdl-suite-32GA.zip,最新的版本是,这个包括:jbpm-server,预先配置的jboss应用服务器.jbpm-designer,jBPM流程图形化设计器的eclipse插件jbpm-db,jBPM数据库兼容包(参看下面.jbpm,核心jbpm组件包括库和用户手册.jbpm-bpel,JBossjBPMBPEL扩展参考.预配置的JBoss应用服务
11、器有下列安装组件:核心jBPM组件,打包作为JBoss服务档案一个包括所有jBPM表格的完整数据库:默认的hypersonic数据库包含所有的jBPM表格和已经定义的流程.jBPM控制台web应用程序这个可以用来为jBPM管理员.jBPM调度程序所有定时器的执行.调度程序在新手工具箱里配置成了一个servlet.这个Servlet会为产生一个线程来监视每个定时器的执行.一个流程例子已经发布进了jBPM数据库,关于jbpm-jpdl-suite-3.2套件包的具体介绍,可以参考JBossjBPMCookbook手册。JBossjBPM是一个Java库.因此,它可以用在任何java环境比如web应
12、用程序,Swing应用程序,EJB,WebService等等,JBossjBPM核心组件被打包成一个简单的Java库文件.它依赖你所使用的功能性,库jbpm-jpdl.jar及一些相关的第三方的库比如.hibernate3.2,dom4j等等在我们实现场景中。要使用jbpm,我们首先需要将jbpm3.2的包导入我们的项目当中,jbpm3.2的主要包括两个包jbpm-jpdl.jar和jbpm-identity.jar。而jbpm-jpdl.jar是jbpm的核心包,jbpm-identity.jar则是jbpm自带的用户角色权限管理包。我们将这两个包导入我们的项目中。具体可参考jbpm的用户手
13、册)在jbpm中,流程的定义主要是编写在xml文件中的,我们需要将具体的业务流程在xml中定义。所以我们需要在项目的根目录上新建一个源目录,这里我们命名为“processes”,在该目录我们可以保存流程定义xml文件。JBossjBPM包括一个图形化的流程设计工具.这个设计器是用来创作商业流程的,该图形设计器是一个Eclipse插件,图形化设计工具最重要的特性是它同时支持业务分析员和技术开发人员这样就可以在业务流程建模和实际执行之间平滑转换。使用该插件你可以通过界面来拖拉描绘你的业务流程,而不需要靠手写编码来设计。该插件位于jbpm-jpdl-suite-32GA.zip中,插件的安装方法可以
14、参考elipse插件的安装方法。安装完毕后,我们下面可以通过该插件新建流程设计文件。步骤如下:1、在processes目录中右建选择"NeW'"other”2、选择"ProcessDefinition",点击"Next”输入Processname,点击完成。打开设计界面,我们就可以在上面根据我们的业务来设计工作流流程文件。Jbpm本身包含很多自己的jbpm数据库表,jBPM内部使用hibernate来管理它的数据库,通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理,而且我们可以使jBPM移植在不同的数据
15、库.。我们进行的每一步流程操作都保存在jbpm数据表中,通过调用jbpm提供的接口,我们可以对jBPM数据库进行存储,更新和检索流程信息的服务。这里我们使用Mysql5.0数据库,下面我们在项目中新建一个源目录“config.files",名字可以任意,在该目录建立文件:?xmlversion='1.0'encoding='utf-8'?>< !DOCTYPEhibernate-configurationPUBLIC"-/Hibernate/HibernateConfigurationDTD3.0/EN""&q
16、uot;->hibernate-configuration>< session-factory><!-hibernatedialect-< -propertyname="hibernate.dialect"/property->< /property>< !-JDBCconnectionproperties(begin>=propertyname="hibernate.connection.driver_class"/property>propertyname="hiber
17、nate.connection.url"< propertyname="hibernate.connection.username"propertyname="hibernate.connection.password"=JDBCconnectionproperties(end>-<< /property>propertyname="connection.url">jdbc:mysql:/localhost/myjbpm/property>< propertyname=&quo
18、t;connection.username"propertyname="connection.password"< !-JDBCconnectionpool(usethebuilt-in>->>>jdbc:hsqldb:mem:jbpm</property>sa</property>></property>>root</property>>1234</property>>1</property><propertyname="
19、connection.pool_size"<</property><!-usedatasource-<!-DataSourceproperties(begin><propertyname="hibernate.connection.datasource"java:comp/env/JbpmDS</property>DataSourceproperties(end>-<!-Dropandre-createthedatabaseschemaonstartup-<propertyname="
20、;hbm2ddl.auto">create</property<!-JTAtransactionproperties(begin>=<propertyname="hibernate.transaction.factory_class"</property<</property=JTAtransactionproperties(end>-<!-CMTtransactionproperties(begin>=<propertyname="hibernate.transaction.fac
21、tory_class"</property<propertyname="hibernate.transaction.manager_lookup_class"=cmttransactionproperties(end>->!-loggingproperties(begin>=< propertyname="hibernate.show_sql">true</property>propertyname="hibernate.format_sql">true</p
22、roperty>< propertyname="hibernate.use_sql_comments">true</property>=loggingproperties(end>->< !-#->!-#mappingfileswithexternaldependencies#->< !-#->!-followingmappingfilehasadependendyon-><!-'bsh-version.jar'.->!-uncommentthisifyoudon
23、9;thavebshonyour->< !-classpath.youwon'tbeabletousethe->!-scriptelementinprocessdefinitionfiles->< mappingresource="org/jbpm/graph/action/Script.hbm.xml"/>!-followingmappingfileshaveadependendyon-><!-'jbpm-identity.jar',mappingfiles->!-ofthepluggablej
24、bpmidentitycomponent.->< !-Uncommentthefollowing3linesifyou->!-wanttousethejBPMidentitymgmgt-><!-identitymappings(begin-><mappingresource="org/jbpm/identity/User.hbm.xml"/><mappingresource="org/jbpm/identity/Group.hbm.xml"/><mappingresource="
25、org/jbpm/identity/Membership.hbm.xml"/<!-identitymappings(end>-><!-followingmappingfileshaveadependendyon-><!-theJCRAPI->!-jcrmappings(begin>=< mappingresource="org/jbpm/context/exe/variableinstanc/JcrNodelnstance.hbm.xml"/>=jcrmappings(end>->!-#-&g
26、t;< !-#jbpmmappingfiles#->!-#->< !-hqlqueriesandtypedefs->mappingresource="org/jbpm/db/hibernate.queries.hbm.xml"/< !-graph.defmappingfiles->mappingresource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>mappingresource="org/jbpm/graph/def/Node.hbm.x
27、ml"/>< mappingresource="org/jbpm/graph/def/Transition.hbm.xml"/>mappingresource="org/jbpm/graph/def/Event.hbm.xml"/>< mappingresource="org/jbpm/graph/def/Action.hbm.xml"/>mappingresource="org/jbpm/graph/def/SuperState.hbm.xml"/>< m
28、appingresource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>mappingresource="org/jbpm/instantiation/Delegation.hbm.xml"/><!-graph.nodemappingfiles->mappingresource="org/jbpm/graph/node/StartState.hbm.xml"/>< mappingresource="org/jbpm/graph/node/
29、EndState.hbm.xml"/>mappingresource="org/jbpm/graph/node/ProcessState.hbm.xml"/>< mappingresource="org/jbpm/graph/node/Decision.hbm.xml"/>mappingresource="org/jbpm/graph/node/Fork.hbm.xml"/>< mappingresource="org/jbpm/graph/node/Join.hbm.xml&q
30、uot;/>mappingresource="org/jbpm/graph/node/State.hbm.xml"/>< mappingresource="org/jbpm/graph/node/TaskNode.hbm.xml"/><!-context.defmappingfiles-><mappingresource="org/jbpm/context/def/ContextDefinition.hbm.xml"/><mappingresource="org/jbpm
31、/context/def/VariableAccess.hbm.xml"/><mapping< mappingresource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>mappingresource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>< mappingresource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>< !-module.defm
32、appingfiles->mappingresource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>!-bytesmappingfiles->< mappingresource="org/jbpm/bytes/ByteArray.hbm.xml"/>!-file.defmappingfiles->< mappingresource="org/jbpm/file/def/FileDefinition.hbm.xml"/>!-schedu
33、ler.defmappingfiles->< mappingresource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>< mappingresource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>< !-graph.exemappingfiles->mappingresource="org/jbpm/graph/exe/Comment.hbm.xml"/><
34、 mappingresource="org/jbpm/graph/exe/Processlnstance.hbm.xml"/><mappingresource="org/jbpm/graph/exe/Token.hbm.xml"/v!-module.exemappingfiles-vmappingresource="org/jbpm/module/exe/Modulelnstance.hbm.xml"/v!-context.exemappingfiles-vmappingresource="org/jbpm/co
35、ntext/exe/Contextlnstance.hbm.xml"/vmappingresource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/vmappingresource="org/jbpm/context/exe/VariableInstance.hbm.xml"/vmappingresource="org/jbpm/context/exe/variableinstance/ByteArraylnstance.hbm.xml"/>vmappingresou
36、rce="org/jbpm/context/exe/variableinstance/Datelnstance.hbm.xml"/vmappingresource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/vl"/>xml"/>mappingresource="org/jbpm/context/exe/variableinstance/Longlnstance.hbm.xml"/< mappingresource=
37、"org/jbpm/context/exe/variableinstance/Nulllnstance.hbm.xml"/mappingresource="org/jbpm/context/exe/variableinstance/Stringlnstance.hbm.xml"/< !-jobmappingfiles->mappingresource="org/jbpm/job/Job.hbm.xml"/>< mappingresource="org/jbpm/job/Timer.hbm.xml&qu
38、ot;/>mappingresource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>< mappingresource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>!-taskmgmt.exemappingfiles-><mappingresource="org/jbpm/taskmgmt/exe/TaskMgmtlnstance.hbm.xml"/<mappingresource="org/jbpm/task
39、mgmt/exe/Tasklnstance.hbm.xml"/<mappingresource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/<mappingresource="org/jbpm/taskmgmt/exe/Swimlanelnstance.hbm.xml"/<mappingresource="org/jbpm/logging/log/ProcessLog.hbm.xml"/><mappingresource="org/jbpm/
40、logging/log/MessageLog.hbm.xml"/><mappingresource="org/jbpm/logging/log/CompositeLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/ActionLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/NodeLog.hbm.xml"/><mappingresource="org/jbpm/gr
41、aph/log/ProcesslnstanceCreateLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/ProcesslnstanceEndLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/SignalLog.hbm.xml"/><mappingr
42、esource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/><mappingresource="org/jbpm/graph/log/TransitionLog.hbm.xml"/><mappingresource="org/jbpm/context/log/VariableLog.hbm.xml"/><m
43、appingresource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/><mappingresource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/><mappingresource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>< mappingresource="org/jbpm/context/log/variableinstance
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水电站建设爆破服务协议
- KTV地暖安装工程协议
- 道路电缆铺设承诺书
- 培训办公室日常消毒实践
- 矿山开发联合体施工合同
- 求职面试攻略分享模板
- 课件宏观经济分析
- 《重点传染病介绍》课件
- 家居安全标志
- 作批注的方法课件
- 部编版五年级语文下册 祖父的园子 教学课件(第1课时)
- 部编新人教版语文六年级上册期中易读错写错字汇总
- 新概念英语第一册课文完整版
- 《管理学》第四章 决策
- 苏州小吃优质获奖课件
- 钢化玻璃的MSDS英文报告
- 大学生情绪管理1500字论文2篇
- 2023广东省成人高考《英语》(高升专)考试卷及答案(单选题型)
- 年产万吨天然饮用水生产项目可行性研究报告
- 临床药理学第十四章 肾功能不全临床用药
- YS/T 682-2008钌粉
评论
0/150
提交评论