收藏 分享(赏)

JBPM工作流开发指南v10-20070706.doc

上传人:李静文 文档编号:10511 上传时间:2018-06-02 格式:DOC 页数:102 大小:2.85MB
下载 相关 举报
JBPM工作流开发指南v10-20070706.doc_第1页
第1页 / 共102页
JBPM工作流开发指南v10-20070706.doc_第2页
第2页 / 共102页
JBPM工作流开发指南v10-20070706.doc_第3页
第3页 / 共102页
JBPM工作流开发指南v10-20070706.doc_第4页
第4页 / 共102页
JBPM工作流开发指南v10-20070706.doc_第5页
第5页 / 共102页
点击查看更多>>
资源描述

1、JBPM 工作流开发指南 v1.0第 1 页 共 102 页JBPM 开发指南BSTEK2007 年 7 月JBPM 工作流开发指南 v1.0第 2 页 共 102 页目录一、概述 .4二、第一个流程 .52.1、开始前的准备 .52.2 、Hello World 例子 .6三、学习 JPDL.113.1 、简介 .113.2 、流程版本(Version) .113.3 、流程定义 .123.3.1 process-definition(流程定义 ) .123.3.2 node(自动节点) .133.3.3 start-state(开始状态) .133.3.4 end-state(结束节点)

2、.143.3.5 state(状态) .143.3.6 task-node (任务节点) .153.3.7 fork(分支 ).163.3.8 join(联合) .173.3.9 decision(决策) .183.3.10 transition(转换) .193.3.11 event(事件) .203.3.12 action(动作) .203.3.13 script(脚本) .223.3.14 expression(表达式) .233.3.15 variable(变量) .233.3.16 handler(句柄) .233.3.17 timer(定时器 ) .243.3.18 create-

3、timer(创建定时器) .253.3.19 cancel-timer(取消定时器) .263.3.20 task(任务) .263.3.21 swimlane(泳道) .273.3.22 assignment(委派) .283.3.23 controller(控制器) .293.3.24 process-state 子流程 .293.3.25 sub-process 子流程 .303.3.26 condition 条件 .303.3.27 exception-handler 异常处理 .31小结 .33四、流程中任务的分配 .374.1 assignment-handler 方式的任务分配

4、.384.2 swimlane 方式的任务分配 .39五、JBPM 持久化 .42JBPM 工作流开发指南 v1.0第 3 页 共 102 页5.1 特殊数据库支持 .425.2 JBPM 数据库的安装 .425.2 JBPM 流程发布 .455.2.1 搭建 JBPM 的 WEB 应用 .465.2.2 发布第一个流程 .48六、日历(Scheduler) .546.1 Scheduler 在 C/S 程序上的应用 .546.2 Scheduler 在 Web 上的应用 .576.3 Scheduler 时间的分类 .60七、异步执行 .63八、JBPM 流程建模与应用 .648.1 JBP

5、M 的建模工具 .648.1.1 建模工具的安装 .648.2 公司报销流程示例 .678.2.1 流程建模 .678.2.2 流程数据库搭建 .768.2.3 构建业务表 .798.2.4 搭建工程 .828.2.5 报销流程的发布 .838.2.6 应用程序搭建 .84九、写在最后 .100JBPM 工作流开发指南 v1.0第 4 页 共 102 页一、概述JBPM 是一个扩展性很强的工作流系统,百分百用 JAVA 语言开发,持久层采用Hibernate 实现,理论上说,只要 Hibernate 支持的数据库 JBPM 都支持。同时它还能被部署在任何一款 JAVA 应用服务器上。JBPM

6、工作流开发指南 v1.0第 5 页 共 102 页二、第一个流程2.1、开始前的准备JBPM 的工程文件,大家可以到如下网站上去下载:http:/ 目前的最新版本是 3.2.1,本文就以此版本为例。在这里请大家下载 jbpm-starters-kit-3.1.2 这样一个版本。在这个版本里包括一个 JBPM 流程设计器的 Eclipse 插件,和一个用 JBOSS 作为服务器的示例流程等相关文件。解压 jbpm-starters-kit-3.1.2.rar 到某个特定目录,这里我们首先用到的是包里的 JBPM 目录下的文件。JBPM 目录里面是 JBPM 的 Eclipse 的工程文件,我们可

7、以用 Eclipse 导入该工程。从 Eclipse 的 File 菜单里选择 import Existing Projects into Workspacenext根据向导找到前面提到的 JBPM 目录就可以把该工程导入到 Eclipse 当中。如下图:JBPM 工作流开发指南 v1.0第 6 页 共 102 页好了,接下来,我们就在这个工程的基础之上来开始我们的第一个流程。2.2 、Hello World 例子我们的第一个流程示例源自 JBPM 的 reference。流程图如下:JBPM 的流程定义采用 XML 的方式(实际绝大多数的流程引擎的流程定义都采用的是这种方式) ,作为测试 X

8、ML 定义我们既可以写在代码当中,也可以以一个独立的 XML 文件的形式存在,接下来的例子我们将分别为大家介绍一下这两种情况。我们首先来看看把XML 流程定义写在代码中的方式。JBPM 工作流开发指南 v1.0第 7 页 共 102 页新建一个 Junit 的测试用例,测试代码如下:package org.jbpm.tutorial.helloworld;import junit.framework.TestCase;import org.jbpm.graph.def.ProcessDefinition;import org.jbpm.graph.exe.ProcessInstance;imp

9、ort org.jbpm.graph.exe.Token;public class HelloWorldTest extends TestCase public void testHelloWorldProcess() /*这个段测试方法演示了一个流程的在代码中以字符串形式定义和这个流程定义的具体执行。这个流程定义包含三个节点:一个未命名的开始状态(start-state), 一个名字为s的状态(state)和一个名字为 end的结束状态(end-state)。 下一行的功能是把一段xml文本解析为一个 ProcessDefinition,一个ProcessDefinition是一个java对

10、象的形式对流程的正式的描述。*/ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(“ +“ “ +“ “ +“ “ +“ “ +“ “ +“ “ +“ “ +JBPM 工作流开发指南 v1.0第 8 页 共 102 页“);/*下边的一行根据流程定义构造了的一个具体的执行实例。 构造以后,执行的流程就有了一个被定位在开始状态(start-state)上的主要的执行路径 */ProcessInstance processInstance = new ProcessInstance(processDefin

11、ition);/*构造以后,执行的流程就有了一个主要的执行路径(root token) */Token token = processInstance.getRootToken();/*当然,构造以后,流程定义的主要的执行路径被定位在开始状态(start-state)*/assertSame(processDefinition.getStartState(), token.getNode(); /*开始流程执行,通过默认的转换(transition)离开开始状态( start-state)*/token.signal();/*直到运行的流程进入一个等待状态,signal 方法将一直被阻塞,运行

12、的流程将要进入第一个等待状态:状态s.因此现在主要的执行路径 ,定位到了状态s 上。 */assertSame(processDefinition.getNode(“s“), token.getNode();/*执行signal,流程将继续执行,将通过默认的转换( transition)离开状态s*/JBPM 工作流开发指南 v1.0第 9 页 共 102 页token.signal();/*流程实例已经到达了结束状态。*/assertSame(processDefinition.getNode(“end“), token.getNode();运行测试,我们看到流程和我们预想的结果完全符合。在

13、这里我们的流程定义是写在一个代码中,XML 的定义方式是以通过拼字符串的方式完成的,这种方式给我们带来的结果是不直观,同时流程定义起来也很不方便。除了这种定义方式之外我们可以把刚才那段写在代码里的流程定义信息搬到我们的 XML 文件里,同样可以达到相同的效果。接下来我们就来看一下这种做法。流程定义文件:helloWorld.xml测试代码:HelloWorldTest.javapackage org.jbpm.tutorial.helloworld;import junit.framework.TestCase;import org.jbpm.graph.def.ProcessDefiniti

14、on;import org.jbpm.graph.exe.ProcessInstance;JBPM 工作流开发指南 v1.0第 10 页 共 102 页import org.jbpm.graph.exe.Token;public class HelloWorldTest extends TestCase public void testHelloWorldProcess() ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource(“helloWorld.xml“);/*从这里可以看出,与上面那段代码唯一不

15、同之处就是没有字符串形式的流程定义信息了,取而代之的是对流程定义的XML进行解析*/ProcessInstance processInstance = new ProcessInstance(processDefinition);Token token = processInstance.getRootToken();assertSame(processDefinition.getStartState(), token.getNode(); token.signal();assertSame(processDefinition.getNode(“s“), token.getNode();token.signal();assertSame(processDefinition.getNode(“end“), token.getNode();运行测试,得到的结果同上例完全相同。到这里为止,我们已经做了一个非常简单的流程示例,对 JBPM 的流程定义及使用方法也有了初步的概念,在下面的内容中我们将着重来讨论 JBPM 的流程定义方法,及各个节点的主要含义及使用方法。

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 网络技术 > 软件架构

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报