快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门威利斯人网站44_酒文化网进入



一、jBPM入门简介

概述

事情流营业流程治理技巧是基于SOA技巧实现的一个核心部分。应用事情流能够在软件开拓和营业两个层次受益:

1、方便开拓

事情流治理系统能够简化企业级软件开拓以致掩护。

◆低落开拓风险 - 经由过程应用状态和动作这样的术语,营业阐发师和开拓职员应用同一种说话交谈。这样开拓职员就不必将用户需求转化成软件设计了。

◆实现的集中统一 -营业流程常常变更,应用事情流系统的最大年夜好处是:营业流程的实今世码,不再是散落在各类各样的系统中 。

◆加快利用开拓 - 你的软件不用再关注流程的介入者,开提议来更快,代码更轻易掩护。

2、营业流程治理 (BPM)

在自动化营业流澳门威利斯人网站44程之前,阐发并将它们规格化是一件困难但会有很好回报的事情:

◆前进效率 - 许多流程在自动化历程中会去除一些不需要的步骤较好的流程节制 - 经由过程标准的事情措施和跟踪审计,前进了营业流程的治理

◆改进客户办事 - 由于流程的同等性,前进了对客户相应的可预见性

◆机动 - 超过流程的软件节制,使流程可以按照营业的必要从新设计。

◆营业流程改进 - 对流程的关注,使它们趋向于流通和简单

但从长远的角度,事情流流程治理技巧的钻研可为两个阶段进行:1.今朝办理华研往后新项目中繁杂营业流程若何应用事情流引擎技巧进行实现的问题。

2.上升到面向办事体系架构,实现各个办事之间的营业流程。

jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级事情流治理系统。jBPM是公开源代码项目,它应用要遵照 Apache License.

jBPM在2004年10月18日,宣布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中心件平台的一个组成部分,它的名称也改成JBoss jBPM.跟着jBPM加入JBoss组织,jBPM也将进入一个全新的成长期间,它的前景是十分灼烁的。

JBoss jBPM 只有最小的倚赖性,它可以很轻易的作为java库来应用。当然它也可以用在造访量很大年夜的J2EE 群利用办事器情况中。 JBoss jBPM 可以同任何数据库设置设置设备摆设摆设可以支配在任何利用办事器上。

jBPM 最大年夜的特色便是它的商务逻辑定义没有采纳今朝的一些规范,如WfMC XPDL, BPML, ebXML, BPEL4WS等,而是采纳了它自己定义的JBoss jBPM Process definition language (jPdl)。jPdl觉得一个商务流程可以被看作是一个UML状态图。jPdl便是具体定义了这个状态图的每个部分,如肇端、停止状态,状态之间的转换等。

jBPM的另一个特色是它应用Hibernate来治理它的数据库。Hibernate是今朝Java领域最好的一种数据持久层办理规划。经由过程Hibernate,jBPM将数据的治理本能机能分离出去,自己专注于商务逻辑的处置惩罚。(详细选型申报可参考事情流技巧选型评估申报)。

本文档主如果事情流钻研小组关于开源事情流引擎jbpm的钻研成果总结。内容包括事情流钻研场景的先容、jbpm的情况设置设置设备摆设摆设,并包括以下六个钻研主题:

◆JBPM同开拓若何结合,又若何维持自力性;对利用系统的设计实现有什么样的制约

◆用户/角色若何同利用系统结合,变更又若何处置惩罚

◆流程中每个活动,若何动态指定履行者

◆类似传阅功能若何实现

◆子流程若何实现

◆流程履行步骤耗时阀值和自动提醒设置

◆jBPM当前版本的稳定性评估

术语、定义和缩略语

498)this.style.width=498;" border=0 twffan="done">

利用处景

本场景是从房地产营销系统的需求中提掏出来的,在房地产项目中,客户选户购房的历程是一个异常范例的事情流场景。我们将这一历程提掏出来,作为jbpm技巧钻研的场景。

在购房历程中,会有以下职员介入。

客户:购房的主体

贩卖职员:在购房历程中指示看房,购房。

贩卖经理:确定认购信息。

财务职员:收取定金。

客服职员:打印收据,打印客户认购书。

客户购房的历程可以描述如下。

◆客户来到售楼中间,贩卖职员进行款待。

◆客户向贩卖职员供给预先申请的办事号。

◆贩卖职员确认办事号是否有效,假如无效现场给出一个新的办事号。

◆贩卖职员向导客户选房。

◆客户确定户型,房号。

◆贩卖职员录入客户认购资料。

◆贩卖职员确认认购资料填写完备。

◆贩卖职员将认购资料提交给贩卖经理审批。

◆确定是否可以得到优惠,假如客户是一次交清房款,得到0.1%优惠。

◆交上级经理审批。

◆贩卖职员向导客户到财务处交纳定金。

◆交纳定金后,客服职员打印收据。

◆客服职员打印认购书。

为了应用钻研的场景更有代表性,揉合其他范例的事情流利用处景,将上面的流程作一些编削。

客户认购的流程改为:

◆客户确定购房,贩卖职员录入认购资料。

◆提交认购资料,必须包管录入资料的完备性。

◆提交审核,按总金额进行分类审核。假如金额小于50万贩卖经理审核即可,大年夜于50万还要上级经理两人同时审核经由过程。

◆审批完成,客户到财务处交纳定金。

◆客服职员为客户打印收据,打印认购书,认购完成。

上面的流程中一些非常环境(流程中的一些分支),在这里先不作斟酌,如,客户在交纳定金之前可以随时放弃认购。

客户的认购要录入的资料内容包括:客户姓名,房号,定金,总金额,流程号等,这里仅拔取几个紧张的数据作为保存工具。保存录入资料时自动取得一个流程号,任何时刻,可以根据此流程号跟踪流程状态,以是在保存认购资料时要记录流程号。

通用的标准规范

jBPM澳门威利斯人网站44 是个功能周全的Workflow Engine,交融了4大年夜功能:Workflow,BPM,BPEL,PageFlow。它自己有个BPEL扩展,采纳jboss Hibernate实现,它应用自定义的自定义标准jpdl,不支持今朝公开的事情流(营业流程)标准,如:

◆JCP

◆JSR208 Java Business Integration

◆JSR207 Process Definition for Java

◆OASIS

◆WS-BPEL

◆Workflow Management Coalition(WFMC)

◆WFMC XPDL

◆Business Process Management Initiative (BPMI)

◆BPMN

◆Object Management Group (OMG)

◆State Chart XML (SCXML)

处置惩罚测试阶段的JBoss jBPM BPEL扩展筹备支持BPEL 1.1标准(非标准组织经由过程的标准)。

技巧规划

因为公司采取的架构是ejb3+tapestry4架构,以是我们的场景实现架构也是基于以上架构进行实现的(tapestry4+ejb3+jbpm3.2),我们所采取的jbpm版本是3.2,这也是今朝jbpm最新的版本。这里我们应用jboss作为我们的web办事器

开拓情况

这里我们是采纳eclipse3.2开拓对象进行开拓,Tapestry4+ejb3的开拓情况设置设置设备摆设摆设和以往的项目设置设置设备摆设摆设基础维持同等,这里就不再进行具体先容,关键便是jbpm3.2的设置设置设备摆设摆设措施。

我们从jBoss官方网站(http://www.jboss.org)高低载jbpm-jpdl-suite-3.2.GA.zip,最新的版本是3.2.GA,这个包括:

◆jbpm-server , 预先设置设置设备摆设摆设的jboss 利用办事器.

◆jbpm-designer , jBPM流程图形化设计器的eclipse 插件.

◆jbpm-db , jBPM 数据库兼容包 (参看下面).

◆jbpm , 核心jbpm组件包括库和用户手册.

◆jbpm-bpel , JBoss jBPM BPEL 扩展参考.

预设置设置设备摆设摆设的JBoss 利用办事器有下列安装组件:

核心jBPM 组件 , 打包作为JBoss办事档案

一个包括所有jBPM 表格的完备数据库 : 默认的 hypersonic 数据库包孕所有的jBPM 表格和已经定义的流程.

jBPM 节制台web利用法度榜样 这个可以用来为jBPM治理员.

jBPM调整法度榜样 所有准时器的履行. 调整法度榜样在新手对象箱里设置设置设备摆设摆设成了一个servlet.这个Servlet会为孕育发生一个线程来监视每个准时器的履行.

一个流程例子 已经宣布进了jBPM 数据库,关于jbpm-jpdl-suite-3.2套件包的详细先容,可以参考JBoss jBPM Cookbook手册。

JBoss jBPM 是一个Java库. 是以,它可以用在任何java情况比如web 利用法度榜样,Swing利用法度榜样,EJB,Web Service等等,JBoss jBPM 核心组件被打包成一个简单的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的用户手册)

在jbpm中,流程的定义主如果编写在xml文件中的,我们必要将详细的营业流程在xml中定义。以是我们必要在项目的根目录上新建一个源目录,这里我们命名为“processes”,在该目录我们可以保存流程定义xml文件。

JBoss jBPM 包括一个图形化的流程设计对象. 这个设计器是用来创作商业流程的,该图形设计器是一个Eclipse插件,图形化设计对象最紧张的特点是它同时支持营业阐发员和技巧开拓职员. 这样就可以在营业流程建模和实际履行之间平滑转换。应用该插件你可以经由过程界面来疲塌描画你的营业流程,而不必要靠手写编码来设计。该插件位于jbpm-jpdl-suite-3.2.GA.zip中,插件的安装措施可以参考elipse插件的安装措施。安装完毕后,我们下面可以经由过程该插件新建流程设计文件。

步骤如下:1、在processes目录中右建选择“New”—》“other”

2、选择“Process Definition”,点击“Next”

输入Process name,点击完成。打开设计界面,我们就可以在上面根据我们的营业来设计事情流流程文件。

Jbpm本身包孕很多自己的jbpm数据库表,jBPM内部应用hibernate来治理它的数据库,经由过程Hibernate,jBPM将数据的治理本能机能分离出去,自己专注于商务逻辑的处置惩罚,而且我们可以使jBPM移植在不合的数据库.。我们进行的每一步流程操作都保存在jbpm数据表中,经由过程调用jbpm供给的接口,我们可以对jBPM数据库进行存储,更新和检索流程信息的办事。这里我们应用Mysql5.0数据库,下面我们在项目中新建一个源目录“config.files”,名字可以随意率性,在该目录建立hibernate.cfg.xml文件:

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<!-- hibernate dialect -->

<!--property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property-->

<property name="hibernate.dialect">

org.hibernate.dialect.MySQLDialect

</property>

<!-- JDBC connection properties (begin) ===

<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>

<property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>

<property name="hibernate.connection.username">sa</property>

<property name="hibernate.connection.password"></property>

==== JDBC connection properties (end) -->

<!-- JDBC connection for MySQL database -->

<property name="connection.driver_class">

com.mysql.jdbc.Driver

</property>

<property name="connection.url">

jdbc:mysql://localhost/myjbpm

</property>

<property name="connection.username">root</property>

<property name="connection.password">1234</property>

<!-- JDBC connection pool (use the built-in) -->

<property name="connection.pool_size">1</property>

<property name="hibernate.cache.provider_class">

org.hibernate.cache.HashtableCacheProvider

</property>

<!-- use data source -->

<!-- DataSource properties (begin)

<property name="hibernate.connection.datasource">

java:comp/env/JbpmDS</property>

DataSource properties (end) -->

<!-- Drop and re-create the database schema on startup -->

<property name="hbm2ddl.auto">create</property>

<!-- JTA transaction properties (begin) ===

<property name="hibernate.transaction.factory_class">

org.hibernate.transaction.JTATransactionFactory</property>

<property name="hibernate.transaction.manager_lookup_class">

org.hibernate.transaction.JBossTransactionManagerLookup</property>

==== JTA transaction properties (end) -->

<!-- CMT transaction properties (begin) ===

<property name="hibernate.transaction.factory_class">

org.hibernate.transaction.CMTTransactionFactory</property>

<property name="hibernate.transaction.manager_lookup_class">

org.hibernate.transaction.JBossTransactionManagerLookup</property>

==== CMT transaction properties (end) -->

<!-- logging properties (begin) ===

<property name="hibernate.show_sql">true</property>

<property name="hibernate.format_sql">true</property>

<property name="hibernate.use_sql_comments">true</property>

==== logging properties (end) -->

<!-- ############################################ -->

<!-- # mapping files with external dependencies # -->

<!-- ############################################ -->

<!-- following mapping file has a dependendy on-->

<!-- 'bsh-{version}.jar'.-->

<!-- uncomment this if you don't have bsh on your -->

<!-- classpath.you won't be able to use the-->

<!-- script element in process definition files-->

<mapping resource="org/jbpm/graph/action/Script.hbm.xml" />

<!-- following mapping files have a dependendy on-->

<!-- 'jbpm-identity.jar', mapping files-->

<!-- of the pluggable jbpm identity component.-->

<!-- Uncomment the following 3 lines if you-->

<!-- want to use the jBPM identity mgmgt-->

<!-- component.-->

<!-- identity mappings (begin) -->

<mapping resource="org/jbpm/identity/User.hbm.xml" />

<mapping resource="org/jbpm/identity/Group.hbm.xml" />

<mapping resource="org/jbpm/identity/Membership.hbm.xml" />

<!-- identity mappings (end) -->

<!-- following mapping files have a dependendy on-->

<!-- the JCR API-->

<!-- jcr mappings (begin) ===

<mapping resource="org/jbpm/context/exe/variableinstanc

/JcrNodeInstance.hbm.xml"/>

==== jcr mappings (end) -->

<!-- ###################### -->

<!-- # jbpm mapping files # -->

<!-- ###################### -->

<!-- hql queries and type defs -->

<mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />

<!-- graph.def mapping files -->

<mapping

resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml" />

<mapping resource="org/jbpm/graph/def/Node.hbm.xml" />

<mapping resource="org/jbpm/graph/def/Transition.hbm.xml" />

<mapping resource="org/jbpm/graph/def/Event.hbm.xml" />

<mapping resource="org/jbpm/graph/def/Action.hbm.xml" />

<mapping resource="org/jbpm/graph/def/SuperState.hbm.xml" />

<mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml" />

<mapping resource="org/jbpm/instantiation/Delegation.hbm.xml" />

<!-- graph.node mapping files -->

<mapping resource="org/jbpm/graph/node/StartState.hbm.xml" />

<mapping resource="org/jbpm/graph/node/EndState.hbm.xml" />

<mapping resource="org澳门威利斯人网站44/jbpm/graph/node/ProcessState.hbm.xml" />

<mapping resource="org/jbpm/graph/node/Decision.hbm.xml" />

<mapping resource="org/jbpm/graph/node/Fork.hbm.xml" />

<mapping resource="org/jbpm/graph/node/Join.hbm.xml" />

<mapping resource="org/jbpm/graph/node/State.hbm.xml" />

<mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml" />

<!-- context.def mapping files -->

<mapping

resource="org/jbpm/context/def/ContextDefinition.hbm.xml" />

<mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml" />

<!-- taskmgmt.def mapping files -->

<mapping

resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml" />

<mapping

resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml" />

<!-- module.def mapping files -->

<mapping

resource="org/jbpm/module/def/ModuleDefinition.hbm.xml" />

<!-- bytes mapping files -->

<mapping resource="org/jbpm/bytes/ByteArray.hbm.xml" />

<!-- file.def mapping files -->

<mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml" />

<!-- scheduler.def mapping files -->

<mapping

resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml" />

<mapping

resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml" />

<!-- graph.exe mapping files -->

<mapping resource="org/jbpm/graph/exe/Comment.hbm.xml" />

<mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml" />

<mapping resource="org/jbpm/graph/exe/Token.hbm.xml" />

<mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml" />

<!-- module.exe mapping files -->

<mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml" />

<!-- context.exe mapping files -->

<mapping

resource="org/jbpm/context/exe/ContextInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/VariableInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml" />

<mapping

resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml" />

<!-- job mapping files -->

<mapping resource="org/jbpm/job/Job.hbm.xml" />

<mapping resource="org/jbpm/job/Timer.hbm.xml" />

<mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml" />

<mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml" />

<!-- taskmgmt.exe mapping files -->

<mapping

resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml" />

<mapping

resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml" />

<!-- logging mapping files -->

<mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml" />

<mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml" />

<mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml" />

<mapping

resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml" />

<mapping

resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/TokenCreat澳门威利斯人网站44eLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml" />

<mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml" />

<mapping resource="org/jbpm/context/log/VariableLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/VariableCreateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml" />

<mapping

resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/l澳门威利斯人网站44og/TaskEndLog.hbm.xml" />

<mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml" />

<mapping

resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml" />

<mapping

resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml" />

</session-factory>

</hibernate-configuration>

我们在web利用项目的web.xml文件中定义JbpmContextFilter过滤类,它用于实现JBPMCONTEXT 的初始化

<filter>

<filter-name>JbpmContextFilter</filter-name>

<filter-class>org.jbpm.web.JbpmContextFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>JbpmContextFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

到这里,jbpm的设置设置设备摆设摆设已经基础完成,关于jbpm具体资料大年夜家可以参考jbpm用户指南,这里就不多说。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: