快速业务通道

jBPM-4.0中文开发指南-第7章 高级图形执行 - 编程入门网

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

jBPM-4.0中文开发指南-第7章 高级图形执行

时间:2011-09-24

第 7 章 高级图形执行

7.1. 循环

活动可以实现循环,基于转移或活动组合。 循环可以包含等待状态。

为了支持多次自动循环执行,流程虚拟机 把执行的传播从尾部递归转换成while循环。

7.2. 子流程

TODO: 子流程

7.3. 默认执行行为

当一个Activity被用作活动行为, 它可以使用下面的方法从外部控制流程:

* waitForSignal()

* take(Transition)

* end(*)

* execute(Activity)

* createExecution(*)

当Activity实现用做活动行为, 没有调用任何下面的流程传播方法,然后 在活动执行时,执行会使用默认执行行为。

默认执行行为定义在下面:

* 如果当前活动有一个默认向外转移,选择它。

* 如果当前活动有一个父活动,回退到父活动。

* 否则,结束这个执行。

流程语言可以重写默认执行行为, 通过重写ExecutionImpl中的 proceed方法。

jBPM-4.0中文开发指南-第7章 高级图形执行(2)

时间:2011-09-24

7.4. 功能活动

活动也可以用作事件监听器,被称作功能活动。 自动活动的例子是发送邮件,执行数据库更新, 生成pdf,计算平均数,等等。 所有这些都是自动活动,没有改变执行流向。 这里是这些活动如何实现:

public class FunctionalActivity implements Activity, EventListener {     public void execute(ActivityExecution execution) {       perform(execution);     }     public void notify(EventListenerExecution execution) {       perform(execution);     }     void perform(OpenExecution execution) {       ...do functional work...     }   }

perform方法获得一个OpenExecution, 这是ActivityExecution和 EventListenerExecution的超类。 OpenExecution没有提供任何特定目的的方法, 但是依旧是当前状态,流程定义可以通过变量检验, 这包含了环境信息 对应流程执行。

这些方法其实都不能调用执行传播方法。 所以在perform方法完成后,执行会 执行默认的方式。

7.5. 执行和线程

这一章解释流程虚拟机如何通过客户端的线程, 把一个执行从一个等待状态带到另一个。

当一个客户调用一个执行的一个方法(比如signal方法)。 默认,流程虚拟机会使用线程执行流程 直到它到达一个等待状态。一旦下一个等待状态到达, 这个方法会返回,客户端的线程就会返回。 这是流程虚拟机操作的默认方式。 两个更多的异步执行可以补充默认行为: 异步继续 和异步命令服务。

下一个流程会展示基本理论。 它有三个等待状态和四个自动活动。

有很多顺序自动活动的流程。

图 7.1. 有很多顺序自动活动的流程。

jBPM-4.0中文开发指南-第7章 高级图形执行(3)

时间:2011-09-24

这里是如何构建流程:

ClientProcessDefinition processDefinition = ProcessFactory.build("automatic")     .activity("wait 1").initial().behaviour(new WaitState())       .transition().to("automatic 1")     .activity("automatic 1").behaviour(new Display("one"))       .transition().to("wait 2")     .activity("wait 2").behaviour(new WaitState())       .transition().to("automatic 2")     .activity("automatic 2").behaviour(new Display("two"))       .transition().to("automatic 3")     .activity("automatic 3").behaviour(new Display("three"))       .transition().to("automatic 4")

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