快速业务通道

jBPM-4.0中文开发指南-第13章 执行模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

jBPM-4.0中文开发指南-第13章 执行模式

时间:2011-09-24

第 13 章 执行模式

这里有三种基本的流程执行模式:对象,持久化和嵌入。 对于持久化和嵌入执行模式, 流程执行必 须在一个事务中执行。在那种情况, 流程执行必须放在一个环境的内部。 环境将用来绑定流程执行,更 新到一个应用事务的事务中。 环境可以被用来绑定,比如一个JDBC连接, JTA,BMT,Spring事务等等。

13.1. 对象执行模式

对象执行模式是使用流程虚拟机的最简单形式。 这意味着通过客户端API直接使用流程定义和执行对 象。 让我们通过一个例子演示这个。 我们通过创建一个ClientProcessDefinition开始,看起来像这样 :

对象执行模式是使用流程虚拟机的最简单形式。 这意味着通过客户端API直接使用流程定义和执行对 象。 让我们通过一个例子演示这个。 我们通过创建一个ClientProcessDefinition开始,看起来像这样 :

图 13.1. 贷款流程

ClientProcessDefinition processDefinition = ProcessFactory.build("loan")   .activity("submit loan request").initial().behaviour(AutomaticActivity.class)     .transition().to("evaluate")   .activity("evaluate").behaviour(WaitState.class)      .transition("approve").to("wire money")     .transition("reject").to("end")   .activity("wire money").behaviour(AutomaticActivity.class)     .transition().to ("archive")   .activity("archive").behaviour(WaitState.class)     .transition ().to("end")   .activity("end").behaviour(WaitState.class) .done();

ProcessFactory是一个帮助类, 为构建一个表现为流程定义的对象图提供方便。 AutomaticActivity 是一个通过活动, 没有任何操作发生,WaitState会等到外部signal发生。 这两个活动实现都会在后面 讨论更深。

processDefinition对象作为一个工厂,为流程实例对象。 一个流程实例表现为流程定义的一个执行 。 更准确的说,流程实例是执行的主路径。

ClientExecution execution = processDefinition.startProcessInstance();

jBPM-4.0中文开发指南-第13章 执行模式(2)

时间:2011-09-24

一个流程实例自己也是一个Execution. 潜在的,一个执行可以拥有子执行 表现执行的同步路径。

execution可以看做是一个状态机, 在流程定义里像描述一样操作。启动一个流程实例意思是 流程定 义的初始节点被执行。 因为这是一个自动活动,执行会执行到evaluate活动。 evaluate活动是一个等待 状态。 当执行到达evaluate活动,startProcessInstance方法 会返回并等待一个外部signal使用signal 方法提供。 所以在startProcessInstance之后,我们可以证实 如果执行定位在evaluate活动。

assertEquals("evaluate", execution.getActivityName());

为了让流程执行得更远,我们提供一个外部触发器使用 signal方法。执行的结果会被作为 signalName参数给与,像这样:

execution.signal("approve");

WaitState活动实现会根据给出的signalName 选择转移。所以执行将首先执行自动活动wire money 然 后在进入等待状态archive后 返回。

assertEquals("archive", execution.getActivityName());

当执行在archive活动等待时,默认的signal会让它 选择第一个未命名的转移。

execution.signal(); assertEquals("end", execution.getActivityName());

流程执行在客户端的线程中。 startProcessInstance方法只在到达evaluate活动时返

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号