JBoss 系列四十:jBPM5示例之 Embedded Sub-Process

100 篇文章 56 订阅

jBPM5中EmbeddedSubProcess是指在流程设计时子流程镶嵌在主流程,如下为EmbeddedSubProcess流程示意:

如图Tag Messages Sub-Process为镶嵌在主流程中的子流程,EmbeddedSubProcess流程运行时传输三条字符串message 1,message 2和message 3,在流程运行时主流程的Format tag节点中生成一个tag,在子流程Apply Tag中将生成的tsg添加到每一条消息的末尾,流程运行结束输出三条消息确认设定tag情况。

主流程的Format tag节点为Service Task节点,运行时执行的Java代码如下:

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("mm-dd-yyyy");
kcontext.setVariable("tag",  sdf.format(new java.util.Date(System.currentTimeMillis())));

即将当前的时间以mm-dd-yyyy格式作为tag。

子流程Apply Tag节点为Service Task节点,运行时执行的Java代码如下:

java.util.List<String> taggedMessages = new java.util.ArrayList<String>();
for (Object message : messages){
    taggedMessages.add(((String)message)+" - "+tag);    
}
kcontext.setVariable("messages",taggedMessages);

运行org.jbpm.quickstarts.subprocess.EmbeddedSubProcessStart将会运行EmbeddedSubProcess流程,EmbeddedSubProcessStart代码如下:

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 EmbeddedSubProcessStart extends QuickStartBase{

	public static void main(String[] args) {
		new EmbeddedSubProcessStart().test();
	}

	public void test() {
		StatefulKnowledgeSession ksession = createKnowledgeSession("quickstarts/embeddedSubProcess.bpmn");
		List<String> messages = new ArrayList<String>();
        messages.add("message 1");
        messages.add("message 2");
        messages.add("message 3");
        Map<String,Object> parameters = new HashMap<String, Object>();
        parameters.put("messages", messages); 
        
        ProcessInstance process = ksession.startProcess("org.jbpm.quickstarts.embeddedsubprocess",parameters);
        
        messages = (List<String>) ((WorkflowProcessInstance)process).getVariable("messages");
        for (String message : messages) {
            System.out.println("Message = "+message);
        }
	}

}

EmbeddedSubProcess流程运行输出的结果如下:

Message = message 1 - 44-29-2013
Message = message 2 - 44-29-2013
Message = message 3 - 44-29-2013

如上44-29-2013为设定的tag。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值