博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JBoss 系列三十九:jBPM5示例之 Multiple Instance Sub-Process
阅读量:6844 次
发布时间:2019-06-26

本文共 2057 字,大约阅读时间需要 6 分钟。

hot3.png

jBPM5中的Multiple Instance sub-process是较特殊的子流程,它允许多次执行包含的子流程,当一个集合中有元素存在,则子流程循环执行,直到集合中的元素为空,子流程执行结束。如下为Multiple Instance sub-process流程示意:

如图,在主流程启动时我们传入一个队列,队列中包括一系列整数,子流程运行每次判断队列中的整数能否被2整除(奇数),如果不能被则将相应的整数添加到错误列表,注意,子流程运行的次数等于队列的大小。流程运行结束打印输出错误列表。

  • Multiple Instance sub-process流程运行代码:
  • Multiple Instance sub-process流程:
运行org.jbpm.quickstarts.subprocess.MultipleNodeInstanceProcessStart将会启动Multiple Instance sub-process流程,MultipleNodeInstanceProcessStart类代码如下:

package org.jbpm.quickstarts.subprocess;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.drools.runtime.StatefulKnowledgeSession;import org.drools.runtime.process.ProcessInstance;import org.drools.runtime.process.WorkflowProcessInstance;import org.jbpm.quickstarts.QuickStartBase;public class MultipleNodeInstanceProcessStart extends QuickStartBase {	public static void main(String[] args) {		new MultipleNodeInstanceProcessStart().test();	}	public void test() {		StatefulKnowledgeSession ksession = createKnowledgeSession("quickstarts/multipleNodeInstanceProcess.bpmn");				List
numbers = new ArrayList
(); numbers.add(2); numbers.add(4); numbers.add(56); numbers.add(7); numbers.add(10); numbers.add(13); Map
parameters = new HashMap
(); parameters.put("numberList", numbers); parameters.put("errorList", new ArrayList()); //Start the process using its id ProcessInstance process = ksession.startProcess("org.jbpm.quickstarts.multiplenodeinstanceprocess",parameters); List errorList = (List) ((WorkflowProcessInstance)process).getVariable("errorList"); System.out.println("Error List: " + errorList); }}
Multiple Instance sub-process流程运行结果:

Is 2 Even? trueIs 4 Even? trueIs 56 Even? trueIs 7 Even? falseOdd number found: 7Is 10 Even? trueIs 13 Even? falseOdd number found: 13Error List: [7, 13]
如上结果显示,队列中奇数为7和13.

转载于:https://my.oschina.net/iwuyang/blog/197242

你可能感兴趣的文章
用wget一次下载所有链接, 下载文件夹
查看>>
Collect logs from the Windows servers
查看>>
HT图形组件设计之道(四)
查看>>
用vbs删除前一天创建的备份文件
查看>>
聊聊同步、异步、阻塞与非阻塞
查看>>
BlockingQueue队列生产者消费者示例
查看>>
excel VBA中如何模拟键盘输入
查看>>
YUV420查表法高效、无失真的转换为RGB32格式
查看>>
C# 程序中如何获取当前目录
查看>>
lucene初识
查看>>
我的友情链接
查看>>
网卡工作模式
查看>>
deepin安装Curl的方法
查看>>
SAP系统日常管理 常见 t-code (一)
查看>>
C++ VS2010 error:LNK2005 已经在*.obj中定义
查看>>
Linux 多线程编程
查看>>
在rhel7中搭建openstack kilo
查看>>
我的友情链接
查看>>
there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
查看>>
LINUX下多路径(multi-path)介绍及使用
查看>>