12
返回列表 发新帖
楼主: jieforest

使用JBoss/jBPM编排长运行活动

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
11#
 楼主| 发表于 2009-11-3 09:13 | 只看该作者
至此,图6中所实现的流程实现还需要一点修改就能满足我们的基本实现。首先,timing out节点可以决定继续等待,或则采取一个纠正动作,不过这两种情况的最终结果都是控制权转移到Starting pipeline节点上;另外,这个timing out节点还必须要知晓脚本是否正在运行(继续等待动作)还是不在运行(启动脚本)。该逻辑的最简单实现方式是引入流程变量(见列表3):
String state = (String)executionContext.getVariable(processName);
if(state != null){
if("completed".equals(state)){
executionContext.leaveNode(completeTransition);
return;
}
else{
executionContext.leaveNode(waitTransition);
return;
}
}
executionContext.setVariable(processName, "started");
…………
列表3 执行路径选择
其次,在本例中,通过流程实例/令牌的的“盲”信令(signaling)来完成执行的做法是不成立的。原因有以下两个方面:
因为本例中的Running Pipeline状态有多个迁移(transition),REST API应该具备选择特定的迁移(transition)作为流程或令牌的信令结果的能力。
当回调处理器被调用时,图6中的例子无法保证流程正处于Running Pipeline状态。譬如,它可能正处于Timing out节点。这就意味着REST API应该具备只针对特定流程状态发出信令的能力。
我们可以对列表1中的REST API做些修改让它支持流程实例或令牌信令的上面所描述的两个参数(见列表4)
@POST
  @Path("instance/{id}/signal")
  public Response signalProcess(
      @PathParam("id") String id,
      @QueryParam("transition") String transition.
      @QueryParam("state") String state


  )
  ……………………
  @POST
  @Path("token/{id}/signal")
  public Response signalToken(
      @PathParam("id")String id,
      @QueryParam("transition") String transition,
      @QueryParam("state") String state
  )
  ……………………
列表4 扩展的REST API
由于可以使用jBPM的API获得特定流程实例的当前节点,并根据要求触发相应的迁移,因此扩展实现是相当直截了当的。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
12#
 楼主| 发表于 2009-11-3 09:14 | 只看该作者
脚本执行结果
支持脚本执行结果的实现也是相当直观的。通过简单地再引入一些流程变量就可以实现,这些变量可以通过回调处理器对其进行设置。

流程组件化
一个非常重要的例子是长运行活动本身就是一个jBMP流程。jPDL的目前版本(jPDL-3)没有显式提供多流程之间协作的支持。所以,流程设计 者经常把所需的功能都实现到一个大流程块中。这样的做法和创建很大的Java类一样存在一些弊端,如可读性和管理上的问题,以及重用的限制等。将流程分解 成多个流程9,并在运行时协作的做法在一定程度上可以减轻上述弊端。
JBoss SOA平台所提供的jBPM/ESB运行多流程之间的协作10, 它通过将这些流程包装成JBoss ESB服务,并使用jBMP ESB节点去调用它们。尽管这种方式没有问题,但需要在整体方案中引入JBoss ESB。如果ESB仅仅用于流程调用协作的话,理由难免有点牵强。一个更轻量的做法是通过程序的方式(使用一个流程节点)启动从属流程,然后使用jBPM REST服务器和回调处理器(上文描述的)实现主从流程间的协作。

总结
JBoss jBPM的简单性和扩展性使得它在实现jBPM本身不具备的附加功能时非常简单,这在很大程度上开拓了基于jBPM的解决方案的应用范围。

致谢
非常感谢NAVTEQ的同事们,特别是Catalin Capota,他参与了实现方案的讨论和原型设计。

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
13#
发表于 2009-11-4 23:14 | 只看该作者
图呢

使用道具 举报

回复
论坛徽章:
129
2015年新春福章
日期:2015-03-06 11:57:31ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262010世博会纪念徽章
日期:2010-10-05 15:55:362010广州亚运会纪念徽章:手球
日期:2010-09-15 22:46:19设计板块每日发贴之星
日期:2010-07-23 01:01:01行业板块每日发贴之星
日期:2010-07-22 01:01:04开发板块每日发贴之星
日期:2010-07-22 01:01:04
14#
发表于 2009-11-5 23:47 | 只看该作者
学习一下

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
15#
发表于 2009-11-5 23:58 | 只看该作者
原帖由 yellowweng 于 2009-11-5 23:47 发表
学习一下

使用道具 举报

回复
论坛徽章:
15
2009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192012新春纪念徽章
日期:2012-01-04 11:54:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512011新春纪念徽章
日期:2011-02-18 11:43:352011新春纪念徽章
日期:2011-01-04 10:37:34ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ERP板块每日发贴之星
日期:2010-05-01 01:01:022010新春纪念徽章
日期:2010-03-01 11:04:592010新春纪念徽章
日期:2010-01-04 08:33:08
16#
发表于 2010-5-6 11:20 | 只看该作者
thanks

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表