快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
rocessFactory. ProcessFactory是一种领域特定语言(DSL),可以嵌入到 Java中,简化流程图形的结构。这个模型也叫做 流畅接口。

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

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

时间:2011-09-24

为了了解ProcessFactory的更多细节,可以参考 api文档。 ProcessFactory的另一种选择是创建一个 XML语言和一个XML解析器,来表示流程。 XML解析器可以直接实例化 org.jbpm.pvm.internal.model包中 的类。 这种方式一般都被流程语言选择使用。

初始化活动submit loan request和 wire the money活动是自动活动。 在这个例子中,wire the money活动的 Display实现 使用Java API来把信息输出到控制台上。但是读取器可以想象一个可选的 Activity实现,使用支付流程库的Java API 来实现一个真实的自动支付。

上述流程的一个新执行可以像下面这样启动

ClientExecution execution = processDefinition.startProcessInstance();

当startExecution方法返回时,submit loan request活动会被执行,执行会位于evaluate活动。

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

图 5.4. 位于''evaluate''活动的执行

现在,执行处在一个很有趣的点。这里有两个转移从evaluate指向外边。 一个转移叫approve 一个转 移叫reject.像我们上面解释的,WaitState实现会根据执行的signal选择转移。 让我们像这样执 行''approve'' signal:

execution.signal("approve");

这个approve signal会导致执行选择approve转移 它会到达wire money活动。

在wire money活动中,信息会打印到控制台里。 因为Display没有调用execution.waitForSignal() ,也没有调用其他执行传播方法,默认流程行为只会让执行继续,使用向外的转移到达archive活动,这 也是一个WaitState.

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

图 5.5. 位于''archive''活动的执行

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

时间:2011-09-24

所以只有当archive到达时,signal("approve")会返回。

另一个signal就像这样:

execution.signal("approve");

将让执行最终到达结束状态。

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

图 5.6. 位于''end''活动的执行

5.6. 事件

事件位于流程定义中,一系列的EventListener可以进行注册。

public interface EventListener extends Serializable {   void notify (EventListenerExecution execution) throws Exception; }

事件的目的是让开发者可以为流程添加程序逻辑,不必改变流程图。 这是非常有价值的机制,可以促 进业务分析人员和开发者之间的协作。 业务分析人员负责描述需求。 当他们使用流程图归档那些需求, 开发者可以获得这些图形,让它可执行化。 事件会非常方便,向一个流程中添加技术细节(比如一些数 据库插入操作) 这些都是业务分析人员不感兴趣的东西。

最常用的事件是由执行自动触发的:

TODO: 在用户手册中

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