JBossjBPM30相关资料综合概述.docx

上传人:牧羊曲112 文档编号:1663001 上传时间:2022-12-13 格式:DOCX 页数:99 大小:266.37KB
返回 下载 相关 举报
JBossjBPM30相关资料综合概述.docx_第1页
第1页 / 共99页
JBossjBPM30相关资料综合概述.docx_第2页
第2页 / 共99页
JBossjBPM30相关资料综合概述.docx_第3页
第3页 / 共99页
JBossjBPM30相关资料综合概述.docx_第4页
第4页 / 共99页
JBossjBPM30相关资料综合概述.docx_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《JBossjBPM30相关资料综合概述.docx》由会员分享,可在线阅读,更多相关《JBossjBPM30相关资料综合概述.docx(99页珍藏版)》请在三一办公上搜索。

1、JBoss jBPM 3.0 Workflow and BPM 实践 目录 Chapter1.介绍第一章:介绍第一章:介绍JBoss jBPM 是一个复杂的可扩展的工作流管理系统. JBoss jBPM 有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等.把这些操作绑在一起, JBoss jBPM 就有了最强大和易扩展性的控制流机制. JBoss jBPM 只有最小的倚赖性可以很容易的作为java库来使用.当然它也可以用在吞吐量极为关键的J2EE 群应用服务器环境中. JBoss jBPM 可以同任何数据库配置可以部署在任何应用服务器上. 1.1.综述核

2、心工作流和BPM 功能被封状作为一个简单的Java库.这个库包括在jBPM数据库中存储,更新和检索流程信息的服务 Figure1.1.JBoss jBPM 组件一览 1.2.JBoss jBPM新手工具箱 新手工具箱是包含了jBPM所有组件包在一个可下载的包里. 这个包包括: jbpm-server , 预先配置的jboss 应用服务器. jbpm-designer , jBPM流程图形化设计器的eclipse插件 . jbpm-db ,jBPM 数据库兼容包 (参看下面). jbpm , 核心jbpm组件包括库和本手册. jbpm-bpel ,JBoss jBPM BPEL 扩展参考. 预配

3、置的JBoss 应用服务器有下列安装组件: 核心jBPM 组件 , 打包作为JBoss服务档案 一个包括所有jBPM 表格的完整数据库 : 默认的 hypersonic 数据库包含所有的jBPM表格和已经定义的流程. jBPM 控制台web应用程序 这个可以用来为jBPM管理员. jBPM调度程序 所有定时器的执行. 调度程序在新手工具箱里配置成了一个servlet.这个Servlet会为产生一个线程来监视每个定时器的执行. 一个流程例子 已经发布进了jBPM 数据库. 1.3.JBoss jBPM 图形化流程设计器 JBoss jBPM 也包括一个图形化的流程设计工具. 这个设计器是用来创作

4、商业流程的 JBoss jBPM 图形设计器是一个Eclipse插件. 独立安装版本的设计器工具已经在开发路线图里了. 图形化设计工具最重要的特性是它同时支持业务分析员和技术开发人员. 这样就可以在业务流程建模和实际执行之间平滑转换. 插件可用做为本地的update site(Eclipse 纯粹的zip文件),用做符合Eclipse软件更新机制的安装包. 当然你也可以把它展开到你的Eclipse的安装目录. 1.4.JBoss jBPM核心组件 JBoss jBPM 核心组件是纯粹的Java(J2SE)软件,来处理流程定义和运行时的流程实例执行. JBoss jBPM 是一个Java库. 因

5、此,它可以用在任何java环境比如web 应用程序,Swing应用程序,EJB,Web Service等等. jBPM 库可以被打包作为sateless session EJB(无状态会话EJB). 这可以用做集群的发布具有极高的吞吐量可伸缩性. 无状态会话EJB根据J2EE 1.3规范重新写过所以可以发布到任何应用服务器上. JBoss jBPM 核心组件被打包成一个简单的Java库文件.依赖你所使用的功能性,库 jbpm-3.0.jar及一些相关的第三方的库比如 . hibernate, dom4j 等等.这些相关性在有清晰的描述永久性方面, jBPM内部使用hibernate. 除了传统

6、的O/R 映射外, hibernate也分析不同数据库系统的SQL方言 ,这使jBPM在当前所有的数据库上都可以移植. JBoss jBPM API 可以从项目中任意编写的Java软件访问,比如Web应用程序,EJB,或web Service组件,消息bean或其他java组件. 1.5.JBoss jBPM控制台web应用程序 jBPM 控制台web应用程序是为两个目的服务的.首先,它作为流程执行运行时间任务生成的中央用户接口. 其次, 它也是一个管理和监视控制台允许检查和操作运行中的流程实例. 1.6.JBoss jBPM 身份组件 JBoss jBPM可以集成进任何包含公司用户和组织信息

7、的目录. 对项目来说从那里得到组织信息组件不是容易得到的, JBoss jBPM就包含这个组件. 身份组件使用的模型比通常的servlet,ejb和门户模型跟富有. 更多信息可参考1.7.JBoss jBPM调度程序 JBoss jBPM 调度程序是用来监视和运行已经计划到时执行流程的定时器的组件. 定时器组件被打包在核心jbpm库中, 但是它需要被发布到下面的任一环境中: 要不你把调度程序Servlet来产生监视线程或者就必须用独立的JVM来调用调度程序的main方法. 1.8.JBoss jBPM 数据库兼容包 JBoss jBPM 数据库兼容包包括所有支持数据库的相关信息,JDBC驱动程

8、序和数据库初始化脚本. 1.9.JBoss jBPM BPEL扩展 JBoss jBPM BPEL扩展是独立的扩展包用来支持BPEL(Business Process Execution Language 商业流程执行语言). BPEL的基本要素是 xml Scripting语言用来写其他web server的web services. JBoss jBPM 3.0 第二章:开始 第二章 开始第二章 开始本章将带你如何获得JBoss jBPM的第一步并且提供立即运行的初始提示 .2.1.下载包一览下面是当前可用的不同jBPM包清单. 这些包中的每一个都包含一个或多个可下载的文件. 同这些文件一

9、起的包含一个描述它的内容及相关安装的指示 所有下面下载的描述都可以在.上找到2.1.1.jBPM 3这是主要的发行包,包括了主要核心引擎和数个额外的你使用jBPM的时候可能用得上的包.下载这个包的文件从.2.1.1.1.新手工具箱如果你想尽快开始运行jBPM,那么这就是你想下载的文件.工具箱包含了所有jBPM的模块以及图形化的设计工具在一个单独下载的文件里名字为: jbpm-starters-kit-.zip. 展开这个压缩文件到目录下阅读readme.html 获取更多信息.有了这个工具箱,你可以立即开始进入.2.1.1.2.核心引擎和身份组件下载文件名为jbpm-.zip 包含jBPM 核

10、心引擎也包含角色和组管理的身份组件. 开始工作前, 展开文件到一个目录下,然后 jbpm-文件夹下找到包含重要的参考信息的readme.html文件2.1.1.3.数据库扩展如果你想改变jBPM的默认数据库( Hypersonic HSQLDB), 你需要下载这个包.文件名为jbpm-db-.zip 包含你改变数据库需要的各种资源. 包含, 数据库建立脚本, hibernate 属性文件及数据库JDBC驱动程序. 如何操作的步骤包含在 readme.html 文件里,它在你展开这个压缩包的最上层的目录下.2.1.2.jBPM 流程设计器The second package contains t

11、he downloads related to the jBPM Graphical Proces Designer. The designer enables you to author your process definitions and to easily deploy them. You can find these downloads.The designer is a plug-in for the Eclipse platform which is available for download either as a zipped Eclipse feature or as

12、a zipped Eclipse update site. There is no difference in content, the only difference is in the way you have to do the installation.2.1.2.1.Eclipse 更新站点If you want to be absolutely sure that the designer installation goes smoothly, we recommend to use the update site mechanism together with a new Ecl

13、ipse installation. Of cource the Eclipse version should match the downloaded update site archive. To obtain the Process Designer Update Site, you should download the file jbpm-gpd-site-.zip. Then follow the instructions in the readme.html file included in the archives root folder to succesfully inst

14、all the GPD.2.1.2.2.Eclipse 特性If you are tired of each time having to do a fresh Eclipse installation and you are willing to cope with some possible issues, you can try the feature download. In this case installation is as easy as extracting the archive into your Eclipse installation (make sure the

15、included plugins and features folders end up in the same location of your Eclipse installation) overwriting the files and folders with the same name that are possibly already present. This installation is very easy, but you could run into incompatibility issues when you overwrite plugins already pre

16、sent in your installation because of other features that you did install. Though they have the same name it could happen that the versions of these colliding plugins are not equal, hence the possible incompatibilities. Download the file jbpm-gpd-feature-.zip to obtain the GPD feature. The installati

17、on instructions are repeated in the readme.html file.2.1.3.jBPM BPEL 扩展第三个也是最后一个包包含jBPM BPEL 扩展. 它只包含一个文件: jbpm-bpel-.zip. 你可以找到这个包.要开始BPEL扩展,在doc目录下找到Users Guide .2.2.JBoss jBPM 项目号码簿 : JBoss is the company that backs this project with professional support, training and consultancy services. user g

18、uide: is the document youre reading and serves as the main entry point into the project. : description of the downloadables : sourceforge download page for jBPM : get in contact with the community, ask questions and discuss jBPM : extra information, mostly provided by the community : for submitting

19、bugs and feature requests : shows what to expect in the next versions : mailing lists are used for announcements javadocs: part of the download in the doc/javadoc directory. : the details of how to get the jBPM sources from CVS2.3.公开的CVS访问另外,你可以通过JBoss jBPM cvs服务器 得到jBPM服务器的信息如下 Connection type: pse

20、rver User: anonymous Password: Host: Port: 2401 (which is the default) Repository path: /cvsroot/jbpm Label: :pserver:anonymous:/cvsroot/jbpm第三章.讲座第三章.讲座这个讲座将展示如何建造一个jpdl和如何使用API的方法来管理运行时的执行.这个讲座的方式是解释一系列的例子. 每个例子将集中关注特别的主题和额外的说明. 这些例子可以在jBPM包的examples目录下找到.最好的方法就是学着来建立一个Project实验所给的例子.eclipse 用户注意:

21、下载jbpm-3.0-version.zip并且解压缩到系统.然后从菜单 File - Import. - Existing Project into Workspace.点 Next 然后浏览jBPM根目录然后点击 Finish. 现在你的有了jbpm 3 project了. 你可以发现这个讲座目录在目录 src/java.examples/. . 你打开这些例子后,可以运行它们Run - Run As. - JUnit TestjBPM 包括一个图形设计器来产生例子中的XML. 你可以从这里下载和学习有关图形设计器的说明3.1.Hello World 例子一个流程 是有一个定向图(dire

22、cted graph)来定义,由节点和变换组成. hello world流程有3个节点.如下看如何组合起来, 我们先开始一个简单的流程不使用图形设计器. 下面的图形表示hello world 流程: Figure3.1. hello world 流程图public void testHelloWorldProcess() / 这个方法展现流程定义和流程执行的定义 / 流程定义有3个节点. / 一个未命名的开始状态start-state,一个状态 s / 一个结束状态名字为end. / 下面行解析一个xml text为一个ProcessDefinition对象(流程定义) / ProcessDe

23、finition 把流程定义形式描述为java对象 ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( + + + + + + + + ); / 下一行建立了一个流程执行定义. /在构造后,流程执行有一个主要的执行路径 / (= root token 根令牌) 此时位置在start-state处 ProcessInstance processInstance = new ProcessInstance(processDefinition); / 在构造后流程执行有一个主要的执行路径 / (= roott

24、oken 根令牌) . Token token = processInstance.getRootToken(); / 构造后, 位置处于流程定义执行路径start-state的位置 assertSame(processDefinition.getStartState(), token.getNode(); / 现在开始流程执行,离开start-state 结束默认的转换(transition) token.signal(); / 这个signal方法将会阻塞直到流程执行进入 wait 状态 / 流程执行在状态s 进入第一个 等待状态 / 因此执行主路径现在位置在 状态s assertSame

25、(processDefinition.getNode(s), token.getNode(); / 我们再送另外一个信号signal. 这将继续执行离开状态s 结束默认的转换(transition) token.signal(); / 现在信号signal方法将返回,因为流程实例到达了end-state 结束状态 assertSame(processDefinition.getNode(end), token.getNode();3.2.数据库例子jBPM一个基本的特性是当流程处于等待状态时候可以把流程执行 永久化到数据库中 . 下一个例子想你展示了如何存储一个流程实例到jBPM数据库中. 例

26、子给出一个将会发生的上下文.分开的方法用来建立不同部分的用户代码. 比如一部分用户代码在web 应用程序中开始一个流程并永久化执行到数据库中.然后,message drive bean从数据库中载入流程实例并继续它的执行 jBPM 永久化的更多内容可以参看.public class HelloWorldDbTest extends TestCase / 我们在每个应用程序中需要一个JbpmSessionFactory. 因此我们把它放在一个静态变量中 / JbpmSessionFactory 在test 方法中来建立一个 JbpmSessions. static JbpmSessionFact

27、ory jbpmSessionFactory = JbpmSessionFactory.buildJbpmSessionFactory(); static / 因为HSQLDBin-memory数据库是干净的数据库, / 在我们开始测试前,我们需要建立table. / The next line creates the database tables and foreign key / constraints. jbpmSessionFactory.getJbpmSchema().createSchema(); public void testSimplePersistence() / 在3个

28、方法调用下面方法中间,所有数据被写入数据库 / 在单元测试中,这3个方法被正确执行在每个方法之后 / 因为我们想完成测试流程场景 / 但在实际中这些方法代表着server不同的请求 / 因为我们开始的数据库是个干净的数据库,我们需要首先发布流程在里面 / 在真实中,这个是由流程开发人员完成的 deployProcessDefinition(); / 假定我们想开始流程实例(= 流程执行) / 当用户提交一个Web表单的时候. processInstanceIsCreatedWhenUserSubmitsWebappForm(); / 然后,到达的异步消息将继续执行 theProcessInst

29、anceContinuesWhenAnAsyncMessageIsReceived(); public void deployProcessDefinition() /定义一个流程,包括三个及点,一个未命名的start-state,一个状态s /一个结束状态 end-state名字end. ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( + + + + + + + + ); / 打开新的永久层会话 JbpmSession jbpmSession = jbpmSessionFactory.openJb

30、pmSession(); / 并且在永久层会话上开启事务 jbpmSession.beginTransaction(); / 保存流程定义到数据库中 jbpmSession .getGraphSession() .saveProcessDefinition(processDefinition); / 提交事务 jbpmSmitTransaction(); / 关闭会话. jbpmSession.close(); public void processInstanceIsCreatedWhenUserSubmitsWebappForm() / 这个方法里的代码可以放在structs action

31、或JSF管理bean 里 / 打开一个新的永久层会话 JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession(); / 启动事务. jbpmSession.beginTransaction(); / 查询数据库得到我们在上面步骤发布的流程定义 ProcessDefinition processDefinition = jbpmSession .getGraphSession() .findLatestProcessDefinition(hello world); / 有了从数据库中的得到的processDefinition, /

32、我们就可以建立流程执行定义比如hello world 例子(它没有永久化). ProcessInstance processInstance = new ProcessInstance(processDefinition); Token token = processInstance.getRootToken(); assertEquals(start, token.getNode().getName(); / 开始流程执行 token.signal(); / 流程在状态s. assertEquals(s, token.getNode().getName(); / 流程实例被保存在数据库 /

33、所以当前流程执行的状态被保存进数据库 . jbpmSession .getGraphSession() .saveProcessInstance(processInstance); / The method below will get the process instance back out / of the database and resume execution by providing another / external signal. / web应用程序动作结束出,事务被提交. jbpmSmitTransaction(); / 关闭jbpmSession. jbpmSessio

34、n.close(); public void theProcessInstanceContinuesWhenAnAsyncMessageIsReceived() / 这个代码可以包含在message driven bean中. / 打开新的永久性的会话. JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession(); / 永久化会话上开始事务 / 说明它也可能使用应用服务器的DataSource的JDBC连接 jbpmSession.beginTransaction(); GraphSession graphSession = j

35、bpmSession.getGraphSession(); / First, we need to get the process instance back out of the database. / There are several options to know what process instance we are dealing / with here. The easiest in this simple test case is just to look for / the full list of process instances. That should give u

36、s only one / result. So lets look up the process definition. ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition(hello world); / 现在,我们搜索这个流程定义的所有流程实例. List processInstances = graphSession.findProcessInstances(processDefinition.getId(); / We know that in the context of this

37、 unit test there is / only one execution. In real life, the processInstanceId can be / extracted from the content of the message that arrived or from / the user making a choice. ProcessInstance processInstance = (ProcessInstance) processInstances.get(0); / 我们可以继续执行. 说明流程实例委托信号到执行主路径(= the root token

38、) processInstance.signal(); / 在singal后, 我们知道流程执行应该到 end-state assertTrue(processInstance.hasEnded(); / 现在我们可以更新执行状态到数据库中 graphSession.saveProcessInstance(processInstance); / MDB结束, 事务被提交. jbpmSmitTransaction(); / jbpmSession被关闭. jbpmSession.close(); 3.3.上下文例子: 流程变量在流程执行时候流程变量包含上下文信息. 流程变量同java.util.

39、Map相似映射名字到值,值可能是个java对象 . 流程变量被永久化作为流程实例的一部分. 为了让事情简单,这个例子中我们仅仅展示使用变量的API而没有永久化.关于变量的更多信息可以参看 / 这个例子也是从hello world 流程开始. / 甚至没有修改.ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( + + + + + + + + );ProcessInstance processInstance = new ProcessInstance(processDefinition); / 从流程实例中为流程变量获得上下文实例 ContextInstance contextInstance =

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号