快速业务通道

jBPM-4.0中文开发指南-第5章 实现基本活动 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
通过在任务管理系统中创建一个任务入口,然后等待 到这个人完成这个任务。

一旦活动行为已经处于等待状态,然后执行会等待到调用signal方法。 执行会委派signal给 ExternalActivityBehaviour对象 分配给当前的活动。

所以活动的signal方法 会在等待期间,在执行获得一个外部触发器的时候调用。 signal方法中,响 应会传递给后面的流程执行。 比如,当一个人完成了一个任务,任务管理系统 会在执行中调用signal方 法。

一个signal可选择使用signal名字和一个参数map. 活动行为拦截signal和参数的最常用方式是 signal对应选择的外出转移,参数作为执行中的变量。但那些只是例子,它一直等到活动使用singal和它 期望的参数。

jBPM-4.0中文开发指南-第5章 实现基本活动(3)

时间:2011-09-24

5.4. ExternalActivity实例

这里是一个简单等待状态实现的第一个例子:

public class WaitState implements ExternalActivity {   public void execute (ActivityExecution execution) {     execution.waitForSignal();   }   public void signal(ActivityExecution execution,                      String signalName,                      Map<String, Object> parameters) {     execution.take(signalName);   } }

execute方法调用execution.waitForSignal()。 execution.waitForSignal()的调用 会使流程执 行进入等待状态,直到一个外部触发器出现。

signal方法使用signal参数对应的转移名称 来选择转移。所以当一个执行获得一个外部触发器, signal名称被拦截,作为外部转移的名称,执行会被传播到那个转移上。

这里是从a到b有一个转移的相同的流程。 这时候,两个活动的行为都是WaitState.

外部活动实例流程

jBPM-4.0中文开发指南-第5章 实现基本活动 - 编程入门网

图 5.2. 外部活动实例流程

ClientProcessDefinition processDefinition = ProcessFactory.build()     .activity("a").initial().behaviour(new WaitState())       .transition().to("b")     .activity("b").behaviour(new WaitState()) .done();

jBPM-4.0中文开发指南-第5章 实现基本活动(4)

时间:2011-09-24

让我们为流程定义启动一个新流程实例:

ClientExecution execution = processDefinition.startProcessInstance();

启动这个流程会执行a中的WaitState活动。 WaitState.execute会调用 ActivityExecution.waitForSignal. 所以当processDefinition.startProcessInstance()返回,执行 会一直处在a活动。

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

然后我们提供了外部触发器,通过调用signal方法。

execution.signal();

execution.signal()会委派给当前活动。 所以在这种情况下就是a活动里的 WaitState活动。 WaitState.signal会调用 ActivityExecution.take(String transitionName)。 当我们没有提供一个 signal名称,第一个名字是null会被选中。 我们指定的a的唯一转移没有名字,所以会选中这个。 然后 这个转移指向b. 当执行到达b活动,b活动中的WaitState活动会被执行。 就像我们上面看到的,执行会 在b一直等待,这时signal会返回,离开的执行指向b活动。

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

5.5. 基本流程执行

在下一个例子里,我们会结合自动活动和等待状态。 这里例子构建了贷款审批流程,使用WaitState 和Display活动,我们刚刚创建的。 贷款流程的图形看起来像这样:

jBPM-4.0中文开发指南-第5章 实现基本活动 - 编程入门网

图 5.3. 贷款流程

使用Java构建流程图形是很乏味的事情,因为你必须在局部变量中跟踪所有的引用。 为了解决这个问 题,流程虚拟机提供了一个P

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号