jBPM-4.4:fork和join的一个例子
来源:互联网 发布:python 更新包 编辑:程序博客网 时间:2024/06/05 19:06
现在,有这样一个需求:
1、真正开始执行实际业务之前,因为要和多方进行交互(远程通信),需要对对外部各方进行一系列的鉴权;
2、对外部各方之间进行鉴权,存在一定的先后顺序;
3、如果某一个鉴权步骤失败,整个流程终止;
4、全部鉴权完毕后,需要收集一些数据(组装报文),为后续的业务调用提供组装报文的数据。
通过jBPM的fork和join可以很好地实现上述的需求,我们定义的流程,如下图所示:
上述流程对应的流程定义文件multiple-fork-join-process.jpdl.xml内容如下所示:
上述流程简要描述如下:
1、校验用户(CheckUser)的合法性,例如如果是远程移动支付,用户提供的手机号必须在线,而且开通了某项业务鉴权才通过,才可以进行后续的校验;
2、校验提供商品的商户(CheckMer),校验提供支付的银行(也就是支付商,CheckBank),校验提供的商品(CheckGoods),这几项是可以并行进行的(不过,貌似jBPM启动流程执行fork的时候,只能单线程执行,而无法多线程并行校验);
3、校验商户支付商关系(CheckMerBank),校验商品支付商关系(CheckGoodsBank)。由于商户支付商关系鉴权依赖于商户和支付商的校验,商品支付商关系鉴权依赖于商品和支付商的校验,所以在CheckBank结点进行了fork,然后分别和CheckMer、CheckGoods做了一个join操作;
4、校验提供商品的商户(CheckMer)与校验提供支付的银行(CheckBank)都完成后,需要将在发起远程支付交易的请求中数据都汇集,join后,在AggregateData中进行处理(例如内部报文到内部报文的转换操作)。
对于每个结点(这里只上述流程定义中的custom对应的处理类)要进行的处理,完全可以自己模拟,例如,我的com.umpay.ubp.jbpm.handler.PrintInfoHandler的继承关系如下所示:
在AbstractHandler中,对业务流程处理进行了抽象。
上述流程对应的测试用例如下所示:
- jBPM-4.4:fork和join的一个例子
- JBPM知识点------fork、join
- jbpm fork join
- JBPM知识点------fork、join
- jBPM-4.4:基于decision和event-listener的一个例子
- jbpm的例子之三 使用fork
- fork的一个例子
- jbpm分叉并行fork节点会和节点join
- JBPM具体应用之fork,join,state节点的使用
- Java-Fork/Join的简单例子
- fork-join 入门例子
- 一个fork的小例子
- jbpm知识点——fork、join
- 工作流jbpm中join与fork用法
- jbpm知识点——fork、join
- jbpm流程设计之fork、join
- [jbpm]一个完整的spring+jbpm+mysql整合例子
- JBPM工作流引擎测试的一个例子
- java proxy方法实现的机理
- Failed creating java D:/jre6/bin/client/jvm.dll的解决
- android 2.2(froyo)源码下载
- sudo: /etc/sudoers is mode 0640, should be 0440的解决方法
- 从员工离职看职业道德
- jBPM-4.4:fork和join的一个例子
- 《Effective C++》学习笔记(1)
- 家庭正版成功升级旗舰正版步骤(真不好意思,图片放在博客相册了,您可以看看)
- 004--ubuntu下图形模式与linux命令行模式切换方法
- 005--让 Ubuntu 开机以命令行登录的两种方法
- 关于创新和自己的路
- w23
- poj 2388 Who's in the Middle
- 006--如何启用 Ubuntu 中的 root 帐号