BPM流程管理BPM实例开发培训课件.docx

上传人:b****2 文档编号:1037389 上传时间:2022-10-15 格式:DOCX 页数:100 大小:72.56KB
下载 相关 举报
BPM流程管理BPM实例开发培训课件.docx_第1页
第1页 / 共100页
BPM流程管理BPM实例开发培训课件.docx_第2页
第2页 / 共100页
BPM流程管理BPM实例开发培训课件.docx_第3页
第3页 / 共100页
BPM流程管理BPM实例开发培训课件.docx_第4页
第4页 / 共100页
BPM流程管理BPM实例开发培训课件.docx_第5页
第5页 / 共100页
点击查看更多>>
下载资源
资源描述

BPM流程管理BPM实例开发培训课件.docx

《BPM流程管理BPM实例开发培训课件.docx》由会员分享,可在线阅读,更多相关《BPM流程管理BPM实例开发培训课件.docx(100页珍藏版)》请在冰豆网上搜索。

BPM流程管理BPM实例开发培训课件.docx

BPM流程管理BPM实例开发培训课件

(BPM业务流程管理)BPM实例开发培训课件

jBPM实例开发

1.概述

本处主要将向你展示如何用jpdl创建基本的流程以及如何使用API管理运行期的执行。

本处的形式是解释一组示例,每个示例集中于一个特殊的主题,并且包含大量的注释,这些例子也可以在jBPM下载包的目录src/java.examples中找到。

最好的学习方法就是建立一个工程,并且通过在给定例子上做不同的变化进行实验。

对eclipse用户来说可以如下方式开始:

下载jbpm-3.0-[version].zip并且解压到自己的系统,然后执行菜单“File”-->“Import…”-->“ExistingProjectintoWorkspace”,然后点击“Next”,浏览找到jBPM根目录,点击“Finish”。

现在,在你的工作区中就有了一个jbpm.3工程,你可以在src/java.examples/…下找到本指南中的例子,当你打开这些例子时,你可以使用菜单“Run”-->“RunAs…”-->“JUnitTest”运行它们。

jBPM包含一个用来创作例子中展示的XML的图形化设计器工具,你可以在“2.1下载概述”中找到这个工具的下载说明,但是完成本指南不需要图形化设计器工具。

1.1HelloWorld示例

一个流程定义就是一个有向图,它由节点和转换组成。

Helloworld流程有三个节点,下面来看一下它们是怎样组装在一起的,我们以一个简单的流程作为开始,不用使用设计器工具,下图展示了helloworld流程的图形化表示:

图3.1helloworld流程图

publicvoidtestHelloWorldProcess(){

 //这个方法展示了一个流程定义以及流程定义的执行。

 //这个流程定义有3个节点:

一个没有命名的开始状态,

 //一个状态“s”,和一个名称为“end”的结束状态。

 //下面这行是解析一段xml文本到ProcessDefinition对象(流程定义)。

 //ProcessDefinition把一个流程的规格化描述表现为java对象。

 ProcessDefinitionprocessDefinition=ProcessDefinition.parseXmlString(

   ""+

   " "+

   "   "+

   " "+

   " "+

   "   "+

   " "+

   " "+

   ""

 );

 

 //下面这行是创建一个流程定义的执行。

创建后,流程执行有一个

 //主执行路径(=根令牌),它定位在开始状态。

 ProcessInstanceprocessInstance=

     newProcessInstance(processDefinition);

 

 //创建后,流程执行有一个主执行路径(=根令牌)。

 Tokentoken=processInstance.getRootToken();

 

 //创建后,主执行路径被定位在流程定义的开始状态。

 assertSame(processDefinition.getStartState(),token.getNode());

 

 //让我们开始流程执行,通过它的默认转换离开开始状态。

 token.signal();

 //signal方法将会把流程阻塞在一个等待状态。

 

 //流程执行进入第一个等待状态“s”,因此主执行路径现在定位

 //在状态“s”。

 

 assertSame(processDefinition.getNode("s"),token.getNode());

 

 //让我们发送另外一个信号,这将通过使用状态“s”的默认转换

 //离开状态“s”,恢复流程执行。

 token.signal();

 //现在signal方法将返回,因为流程示例已经到达结束状态。

 

 assertSame(processDefinition.getNode("end"),token.getNode());

}

 

1.2数据库示例

jBPM的特性之一就是在流程等待状态时,拥有把流程的执行持久化到数据库中的能力。

下面的例子将向你展示怎样存储一个流程实例到数据库,例子中还会出现上下文。

分开的方法被用来创建不同的用户代码,例如,一段代码在web应用中启动一个流程并且持久化执行到数据库,稍后,由一个消息驱动bean从数据库中加载流程实例并且恢复它的执行。

有关jBPM持久化的更多信息可以在“第7章持久化”找到。

publicclassHelloWorldDbTestextendsTestCase{

 

 staticJbpmConfigurationjbpmConfiguration=null;

 

 static{

   //在“src/config.files”可以找到象下面这样的一个示例配置文件。

   //典型情况下,配置信息在资源文件“jbpm.cfg.xml”中,但是在这里

   //我们通过XML字符串传入配置信息。

   

   //首先我们创建一个静态的JbpmConfiguration。

一个JbpmConfiguration

   //可以被系统中所有线程所使用,这也是为什么我们可以把它安全的设置

   //为静态的原因。

 

   jbpmConfiguration=JbpmConfiguration.parseXmlString(

     ""+

     

     //jbpm-context机制分离了jbpm核心引擎和来自于外部环境的服务。

     

     " "+

     "   

     "            factory='org.jbpm.persistence.db.DbPersistenceServiceFactory'/>"+

     " "+

     

     //同样,jbpm使用的所有资源文件在jbpm.cfg.xml中被提供。

     

     " 

     "         value='hibernate.cfg.xml'/>"+

     " 

     "         value='org/jbpm/calendar/jbpm.business.calendar.properties'/>"+

     " 

     "         value='org/jbpm/graph/def/jbpm.default.modules.properties'/>"+

     " 

     "         value='org/jbpm/db/hibernate/jbpm.converter.properties'/>"+

     " 

     "         value='org/jbpm/graph/action/action.types.xml'/>"+

     " 

     "         value='org/jbpm/graph/node/node.types.xml'/>"+

     " 

     "         value='org/jbpm/context/exe/jbpm.varmapping.xml'/>"+

     ""

   );

 }

 

 publicvoidsetUp(){

   jbpmConfiguration.createSchema();

 }

 

 publicvoidtearDown(){

   jbpmConfiguration.dropSchema();

 }

 

 publicvoidtestSimplePersistence(){

   //在下面调用的3个方法之间,所有的数据通过数据库被传递。

   //在这个测试中,这3个方法被依次执行,因为我们想要测试一个

   //完整的流程情景。

但是实际上,这些方法表示了对服务器的不同

   //请求。

   

   //因为我们以一个干净的空数据库开始,所以我们首先必须部署流程。

   //事实上,这只需要由流程开发者做一次。

   deployProcessDefinition();

 

   //假设在一个web应用中当用户提交一个表单时我们起动一个流程

   //实例(=流程执行)…

   processInstanceIsCreatedWhenUserSubmitsWebappForm();

 

   //然后,一个异步消息到达时继续执行。

   theProcessInstanceContinuesWhenAnAsyncMessageIsReceived();

 }

 

 publicvoiddeployProcessDefinition(){

   //这个测试展示了一个流程定义以及流程定义的执行。

  //这个流程定义有3个节点:

一个没有命名的开始状态,

 //一个状态“s”,和一个名称为“end”的结束状态。

   ProcessDefinitionprocessDefinition=ProcessDefinition.parseXmlString(

     ""+

     " "+

     "   "+

     " "+

     " "+

     "   "+

     " "+

     " "+

     "<

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

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1