快速业务通道

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

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

事件是由流程元素和事件名称结合而成。 用户和流程语言也可以出发事件,使用编程的方式在流程中 使用fire方法。

public interface Execution extends Serializable {   ...   void fire(String eventName, ProcessElement eventSource);   ... }

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

时间:2011-09-24

可以把一系列的EventListeners分配给一个事件。 但是事件监听器不能控制执行的流向,因为它们仅 仅是监听已经执行了的执行。 这与活动处理活动的行为是不同的。 活动行为可以响应执行的传播。

我们会创建一个PrintLn事件监听器,这与上面的Display活动是非常相似的。

public class PrintLn implements EventListener {   String message;   public PrintLn(String message) {     this.message = message;   }   public void notify(EventListenerExecution execution) throws Exception {     System.out.println("message");   } }

多个PrintLn监听器 会在流程中注册。

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

图 5.7. PrintLn监听器流程

ClientProcessDefinition processDefinition = ProcessFactory.build()   .activity ("a").initial().behaviour(new AutomaticActivity())     .event("end")       .listener(new PrintLn("leaving a"))       .listener(new PrintLn("second message while leaving a"))     .transition().to("b")       .listener(new PrintLn ("taking transition"))   .activity("b").behaviour(new WaitState())     .event ("start")       .listener(new PrintLn("entering b")) .done();

第一个事件演示如何为相同的事件注册多个监听器。 它们会根据它们指定的顺序依次执行。

然后,在转椅上,这里的事件只有一种类型。 所以在那种情况下,事件类型不需要指定, 监听器可以直接添加到转移上。

一个监听器每次都会执行,当一个执行触发事件时,如果这个监听器被注册了。 执行会作为一个参数提供给活动接口, 除了控制流程传播的方法以外, 都可以被监听器使用。

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

时间:2011-09-24

5.7. 事件传播

事件会默认传播给最近的流程元素。 目的是允许监听器在流程定义或组合活动中 可以执行所有发生在流程元素中的事件。 比如这个功能允许为end事件在流程定义或一个组合活动中注册一个事件监听器。 这种动作会被执行,如果一个活动离开。 如果事件监听器被注册到一个组合活动中, 它也会被所有活动执行,当组合活动中出现了离开事件。

为了清楚地显示这个,我们会创建一个DisplaySource事件监听器, 这会把leaving信息和事件源 打印到控制台。

public class DisplaySource implements EventListener { public void execute(EventListenerExecution execution) { System.out.println("leaving "+execution.getEventSource()); } }

注意事件监听器的目的不是可视化,这是为什么事件监听器本身 不应该显示在图形中。一个DisplaySource事件监听器 会作为end事件的监听器添加到组合活动中。

下一个流程展示了DisplaySource事件监听器如何 作为''end''事件的监听器注册到composite活动:

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

图 5.8. 一个在组合活动中为end事件注册了不可见的事件监听器的流程。

ODO 更新代码片段

下一步,我们会启动一个执行。

ClientExecution execution = processDefinition.startProcessInstance();

在启动一个新执行后,执行将在a活动中 作为初始活动。没有活动离开,所以没有信息被记录下来。 下

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