ImageVerifierCode 换一换
格式:PDF , 页数:91 ,大小:1.96MB ,
资源ID:5129    下载:注册后免费下载
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-5129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JBPM工作流开发指南 .pdf)为本站会员(刘岱文)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

JBPM工作流开发指南 .pdf

1、JBPM 工作流开发指南 JBPM开发指南 上海锐道信息技术有限公司 高杰 1JBPM 工作流开发指南 目 录 一、概述. .4 二、第一个流程 .4 2.1、开始前的准备 .4 2.2 、Hello World 例子 .5 三、学习JPDL .9 3.1 、简介 .9 3.2 、流程版本(Version) .10 3.3 、流程定义 .11 3.3.1 process-definition(流程定义) .11 3.3.2 node(自动节点) .11 3.3.3 start-state(开始状态) .12 3.3.4 end-state(结束节点) .12 3.3.5 state(状态) .

2、13 3.3.6 task-node (任务节点) .13 3.3.7 fork(分支) .15 3.3.8 join(联合) .16 3.3.9 decision(决策) .17 3.3.10 transition(转换) .18 3.3.11 event(事件) .19 3.3.12 action(动作) .19 3.3.13 script(脚本) .20 3.3.14 expression(表达式) .21 3.3.15 variable(变量) .22 3.3.16 handler(句柄) .22 3.3.17 timer(定时器) .23 3.3.18 create-timer(创建

3、定时器) .24 3.3.19 cancel-timer(取消定时器) .25 3.3.20 task(任务) .25 3.3.21 swimlane(泳道) .26 3.3.22 assignment(委派) .27 3.3.23 controller(控制器) .28 3.3.24 process-state 子流程 .28 3.3.25 sub-process 子流程 .29 3.3.26 condition 条件 .29 3.3.27 exception-handler 异常处理 .30 小结 .32 四、流程中任务的分配 .35 4.1 assignment-handler方式的任务

4、分配 .36 4.2 swimlane方式的任务分配 .37 上海锐道信息技术有限公司 高杰 2JBPM 工作流开发指南 五、JBPM持久化 .39 5.1 特殊数据库支持 .39 5.2 JBPM数据库的安装 .39 5.2 JBPM流程发布 .42 5.2.1 搭建JBPM的WEB应用 .43 5.2.2 发布第一个流程 .45 六、日历(Scheduler) .50 6.1 Scheduler在C/S 程序上的应用 .51 6.2 Scheduler 在Web 上的应用 .53 6.3 Scheduler时间的分类 .55 七、异步执行 .58 八、JBPM流程建模与应用 .58 7.1

5、 JBPM的建模工具 .58 7.1.1 建模工具的安装 .59 7.2 公司报销流程示例 .61 7.2.1 流程建模 .61 7.2.2 流程数据库搭建 .71 7.2.3 构建业务表 .74 7.2.4 报销流程的发布 .77 7.2.5 应用程序搭建 .79 九、写在最后 .91 上海锐道信息技术有限公司 高杰 3JBPM 工作流开发指南 一、概述 JBPM 是一个扩展性很强的工作流系统,百分百用 JAVA 语言开发, 持久层采用 Hibernate实现,理论上说,只要 Hibernate 支持的数据库 JBPM 都支持。同时它还能被部署在任何一款 JAVA 应用服务器上 二、第一个流

6、程 2.1、开始前的准备 JBPM的工程文件,大家可以到如下网站上去下载:http:/ 目前的最新版本是 3.2.1,本文就以此版本为例。在这里请大家下载jbpm-starter s-kit-3.1.2 这样一个版本。在这个版本里包括一个JBPM流程设计器的Eclipse插件,和一个用JBOSS作为服务器的示例流程等相关文件。解压jbpm-starters-kit-3.1.2.rar到某个特定目录,这里我们首先用到的是包里的JBPM目录下的文件。 JBPM 目录里面是 JBPM 的Eclipse 的工程文件,我们可以用 Eclipse 导入该工程。从Eclipse 的File 菜单里选择 im

7、port Existin g Projects into Workspacen ext根据向导找到前面提到的 JBPM 目录就可以把该工程导入到 Eclipse 当中。如下图: 上海锐道信息技术有限公司 高杰 4JBPM 工作流开发指南 好了,接下来,我们就在这个工程的基础之上来开始我们的第一个流程。 2.2 、Hello World 例子 我们的第一个流程示例源自 JBPM 的reference。流程图如下: JBPM 的流程定义采用 XML 的方式(实际绝大多数的流程引擎的流程定义都采用的是这种方式),作为测试 XML定义我们既可以写在代码当中,也可以以一个独立的 XML文件的形式存在,接

8、下来的例子我们将分别为大家介绍一下这两种情况。我们首先来看看把 XML 流程定义写在代码中的方式。 上海锐道信息技术有限公司 高杰 5JBPM 工作流开发指南 新建一个 Junit 的测试用例,测试代码如下: package org.jbpm.tutorial.helloworld; import junit.framework.TestCase; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; import org.jbpm.graph.exe.Token; pub

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

10、tion processDefinition = ProcessDefinition.parseXmlString( “ + “ “ + “ “ + “ “ + “ “ + “ “ + “ “ + “ “ + “ 上海锐道信息技术有限公司 高杰 6JBPM 工作流开发指南 ); /* 下边的一行根据流程定义构造了的一个具体的执行实例。 构造以后,执行的流程就有了一个被定位在开始状态(start-state)上的主要的执行路径 */ ProcessInstance processInstance = new ProcessInstance(processDefinition); /* 构造以后,

11、执行的流程就有了一个主要的执行路径(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 */ token.signal(); 上海锐道信息技术有限公司 高杰 7JBPM 工作流开发指南 /* 流程实例已经到达了结束状态。 */ assertSame(processDefinition.getNode(“end“), token.getNode(); 运行测试,我们看到流程和我们预想的结果完全符合。

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

14、efinition; import org.jbpm.graph.exe.ProcessInstance; import org.jbpm.graph.exe.Token; 上海锐道信息技术有限公司 高杰 8JBPM 工作流开发指南 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“), tok

16、en.getNode(); token.signal(); assertSame(processDefinition.getNode(“end“), token.getNode(); 运行测试,得到的结果同上例完全相同。 到这里为止,我们已经做了一个非常简单的流程示例,对 JBPM 的流程定义及使用方法也有了初步的概念,在下面的内容中我们将着重来讨论 JBPM 的流程定义方法,及各个节点的主要含义及使用方法。 三、学习JPDL 3.1 、简介 JPDL(JBPM Process Definition Language)是 JBPM 流程定义语言。JPDL详细定义了这个状态图的每个部分,如: 开

17、始、结束状态,状态之间的转换等。这种语言的定义对于用户来说比较容易理解,也比较容易对其进行扩展。 上海锐道信息技术有限公司 高杰 9JBPM 工作流开发指南 一个 JBPM 的流程定义 XML 文件中包含一个元素,而一个元 素又包含零个或一个元素,零个或多个的元素,一个元素,零个或多个的元素或元素或元素或元素,以及零个或多个的元素,零个或多个和元素,一个元素等等。此外,元素有一个标示符,以“name”属性来表示,这个属性必须存在,用来表示该流程的名称。 3.2 、流程版本(Version) 我们的流程 XML 文件定义完成之后,接下来的工作就是要将其发布到对应的数据库中,当我们每次将我们的流程

18、定义部署到数据库时, 部署时流程的名称就是前面提高的里定义的 name”属性的值。 JBPM 的版本机制允许在数据库中多个同名流程定义共存,流程实例以当时的最新版本来启动,并且在它的整个生命周期中将保持以相同的流程定义执行。当一个新的版本被部署,新的流程实例以新版本启动,而老的流程实例则以老的流程定义继续执行。 在部署的时候,jbpm 安排一个版本(version)号码(数字)给流程定义。为了实现安排version号码, 如果它是第一个版本 (version) , JBPM采取1+或者1。 从ProcessDefinition pd=JbpmContext.getGraphSession()

19、.findLatestProcessDefinition(“processName“) 中可以通过一个给定的 processName查找最近的流程定义,这里的 processName 就是前面我们在定义流程的时候在里定义的name”属性的值,这个属性就是用来表示该流程的名称。如我们的下列代码就是要列出 JBPM 数据库里的有所有最后一次发布的流程定义的版本: JbpmContext context=JbpmContext.getCurrentJbpmContext(); List ls=context.getGraphSession().findLatestProcessDefinitions(); /* 这里返回的List是ProcessDefinition的集合 */ 上海锐道信息技术有限公司 高杰 10

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


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

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

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