jBPM-4.4:主流程(process)与子流程(sub-process)之间交换数据
来源:互联网 发布:python语言程序设计pdf 编辑:程序博客网 时间:2024/06/06 16:46
现在假设存在这样一个流程:
首先需要进行复杂的鉴权,而且可能随着需求的变化而变化,这导致鉴权的流程也是时刻可能变化的。而只有当鉴权成功以后,才能执行实际的交易操作,例如向外部系统发送请求报文获取某些交易的数据。
这时,可以考虑将鉴权流程独立做成一个子流程,然后将其嵌入到主流程中去,适应局部流程变化而无需修改全局流程的问题,在子流程与主流程之间实际要做的就是约定数据的交换协议,即确定数据在子流程与主流程之间的流入与流出。
下面通过一个实际例子来说明并实践。
首先,定义主流程。
主流程包含鉴权的子流程,鉴权通过之后,收集鉴权过程中获取到的交易必需的数据,组装请求报文,流程定义如图所示:
对应的流程定义文件main-process.jpdl.xml,如下所示:
上面,sub-process-key="SubCheckProcess"表示一个嵌入主流程中的鉴权子流程。通过流程定义文件内容,可以看到,在主流程与子流程之间交换数据,是通过变量myRequest来实现的:
<parameter-in>元素表示从主流程MainProcess中流入到子流程SubCheckProcess中变量为myRequest,而var="myRequest"表示在主流程中变量名称,而subvar="myRequest"表示在子流程中可以通过获取到myRequest变量从而得到数据。同理,<parameter-out>元素表示从子流程SubCheckProcess中流出到MainProcess中,将数据又传回主流程中,继续后续流程的操作。
另外,主流程在执行完子流程后,又执行了ExternalRequest结点,对应的处理类为com.umpay.workflow.jbpm.handler.ExternalRequestHandler,如下所示:
然后,实现子流程。
子流程定义,如图所示:
对应的流程定义文件sub-check-process.jpdl.xml,内容如下所示:
上面对应了6个处理类,实现分别如下所示:
在执行子流程的过程中,在每一个节点处处理,都模拟了“获取到一些额外的必需数据”。
最后,测试用例。
测试用例,如下所示:
上述程序,开始要需要部署流程,主流程和子流程需要单独部署,实际是在这个具体的例子中,存在两个流程,它们在执行自己的实例的时候是独立的。在流程启动之前,需要根据流程执行需要,输入在流程中能够获取到的数据(Key+Value的形式)。接着就可以运行了,可以看到,最终可以看到流程数据的集合 :
Main process variables: {goodsId=030, mobileId=13800138000, userId=20110001674, merId=001, goodsCount=2000, mbr=mbr_001_CMPAY010, gbr=gbr_030_CMPAY010, bankId=CMPAY010}
这里,数据集合{userId=20110001674, goodsCount=2000, mbr=mbr_001_CMPAY010, gbr=gbr_030_CMPAY010}都是在执行处理的时候获取到的交易操作所需要的数据。
- jBPM-4.4:主流程(process)与子流程(sub-process)之间交换数据
- JBPM流程实例(PI)Process Instance
- JBPM流程实例(PV)Process Variables
- Shark api 应用:获得子流程(sub process)
- jbpm流程定义实体(Process Definition)(转)
- jBPM4.4开发(四)-----------sub-process节点
- JBPM(Java Business Process Management)工作流管理系统
- 标准工作流程(Standard Operation Process )
- 12.结账流程(Checkout Process)
- 软件开发流程(Software Development Process)
- 软件开发流程(Software development process)
- jbpm -----Process 部分
- E: Sub-process /usr/bin/dpkg returned an error code (1)错误解决 (转载)
- jbpm - java Business process management
- JBPM(java business process manage)
- java基础知识(七) Runtime与Process
- 程序流程和环境变量说明(Process and Environment Control)
- 进程(Process)
- PKU ACM-1019题 java Number Sequence
- PKU ACM- 1016 题 java Numbers That Count
- PKU ACM- 1067 题 java 取石子游戏
- PKU ACM- 1007 题 java DNA Sorting
- PKU ACM-1006题 java Biorhythms
- jBPM-4.4:主流程(process)与子流程(sub-process)之间交换数据
- java BufferedReader例程
- Symbian程序隐藏(Program hide)
- HyperLink控件动态绑定超链接
- RFC2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))
- 第一次来这里!
- GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new
- 过完年要不要跳槽?
- java项目开发流程