快速业务通道

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

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

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

时间:2011-09-24

第 5 章 实现基本活动

这一章解释了流程定义的基础,流程虚拟机给予的功能 以及活动实现是如何构建的。 同时,客户端 API被用来执行包含了那些活动实现的流程。

5.1. ActivityBehaviour

PVM库没有包含完整的流程结构。 作为替代的是,活动的运行时行为被委派给一个 ActivityBehaviour. 换句话讲,ActivityBehaviour是一个接口,它用来在纯java环境实现流程结构的运 行时行为。

public interface ActivityBehaviour extends Serializable {   void execute (ActivityExecution execution) throws Exception; }

当一个活动行为被调用时,它就处于执行传播的全部控制中。 换句话说,一个活动行为可以决定下一 步应该执行什么执行。 比如,可以使用execution.take(Transition)获得一个转移,或者使用 execution.waitForSignal()进入等待阶段。 万一活动行为没有调用任何上述的执行传播方法,执行将 按默认方式执行。

5.2. ActivityBehaviour实例

我们会启动一个非常原始的hello world例子。 一个Display活动会将一条信息打印到控制台:

public class Display implements ActivityBehaviour {   String message;   public Display(String message) {     this.message = message;   }   public void execute(ActivityExecution execution) {     System.out.println (message);   } }

让我们使用这个活动构建我们第一个流程定义:Display实例流程

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

图 5.1. Display实例流程

TODO add ProcessBuilder example code

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

时间:2011-09-24

现在我们可以像下面这样执行流程:

Execution execution = processDefinition.startExecution();

startExecution的调用会在控制台打印hello world:

hello

world

一个总是值得提醒的事情是活动可以使用属性进行配置。 在Display例子中,你可以看到message属性 在两种使用方法中配置的不同。 通过配置属性,我们可以写出可复用的活动。 它们可以在以后每次使用 在流程中都进行不同的配置。 这是一个基本的部分,将流程语言构建在流程虚拟机之上。

其他需要解释的部分是 这个活动实现没有包含任何执行传播的功能。 当一个新流程实例启动时,执 行会定位到初始活动,那个活动会被执行。 Display.execute方法用来决定默认的执行传播。 具体的, 这意味着活动自己 没有调用任何执行传播的方法。 那种情况下,默认的传播会执行。默认传播会选择第 一个转移,如果这个转移存在的话。 如果没有,它会结束这个执行。 这揭示了为什么a活动和b活动都被 执行,而在b活动执行完执行会停止。

关于默认流程行为的更多细节可以 在第 7.3 节 “默认执行行为”找到。

5.3. ExternalActivityBehaviour

外部活动是负责流程执行由外部转移进来的活动,外部的意思是来自流程系统的外部。 这意味着这个 执行流程对于系统来说,这是一个等待状态。 这个执行会一直等待到外部触发器调用。

为了处理外部触发器,ExternalActivityBehaviour 为ActivityBehaviour添加了一个方法:

public interface ExternalActivity extends Activity {   void signal (Execution execution,               String signal,                Map<String, Object> parameters) throws Exception; }

就像普通的活动,当一个执行到达一个活动,外部活动行为的execute方法会被调用。 在外部活动中 ,execute方法会传递另一个系统的响应,然后通过调用execution.waitForSignal() 进入等待状态。 比如在execute方法中,响应可能是由一个人传入,

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