보스 시리즈 서른여덟 : 재사용 하위 프로세스의 jBPM5 예

재사용 서브 프로세스 jBPM5 재사용 서브 프로세스 노드 jBPM5 프로세스 실행 엔진에 진행 프로세스 (하위 프로세스) 제공 ID, 내부 주 유로의 재사용 서브 프로세스를 기반으로하는 방법 (서브 프로세스)에있어서 행해진 다 다음의 예시적인 처리 (메인과 서브 프로세스 공정) :


주요 흐름


하위 프로세스

재사용 서브 프로세스 수신 예시적인 프로세스는 세 문자열 메시지 1, 메시지 2, 메시지 3을 실행하는 노드는 TSG 태그 생성 된 서브 프로세스의 각각에 첨가한다 적용 프로세스 실행시 태그 format 태그의 주요 흐름을 생성 메시지의 끝에서, 프로세스의 끝은 설정 태그 상황을 확인하기 위해 출력을 세 메시지를 실행합니다. 서비스 작업 노드에 대한 기본 프로세스의 형식 태그 노드는 자바 런타임 코드 실행은 다음과 같다 :

System.out.println("Parent-process id = "+kcontext.getProcessInstance().getId());
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("mm-dd-yyyy");
kcontext.setVariable("tag",  sdf.format(new java.util.Date(System.currentTimeMillis())));

서비스 작업 노드는 자바 런타임 코드 실행을 다음과 같이 태그의 서브 프로세스 노드입니다 적용 :

System.out.println("Child-process id = "+kcontext.getProcessInstance().getId());
java.util.List<String> taggedMessages = new java.util.ArrayList<String>();
for (Object message : internalMessages){
    taggedMessages.add(((String)message)+" - "+internalTag);    
}
kcontext.setVariable("internalMessages",taggedMessages);

다음과 같이 실행 org.jbpm.quickstarts.subprocess.ReusableSubProcessStart은 재사용 하위 프로세스의 예 흐름을 실행, ReusableSubProcessStart 코드는 다음과 같습니다

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

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

	public void test() {
		StatefulKnowledgeSession ksession = createKnowledgeSession("quickstarts/reusableSubProcess-Parent.bpmn", "quickstarts/reusableSubProcess-Child.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); 
        
        //Start the process using its id
        ProcessInstance process = ksession.startProcess("org.jbpm.quickstarts.reusablesubprocessparent",parameters);
        messages = (List<String>) ((WorkflowProcessInstance)process).getVariable("messages");
        for (String message : messages) {
            System.out.println("Message = "+message);
        }
        ksession.dispose();
	}

}

다음과 같이 재사용 하위 프로세스 대표적인 출력 프로세스를 실행합니다 :

Parent-process id = 1
Child-process id = 2
Message = message 1 - 01-31-2013
Message = message 2 - 01-31-2013
Message = message 3 - 01-31-2013

태그의 위에서 2013년 1월 31일.

HTTPS : //my.oschina.net/iwuyang/blog/197189 재현

추천

출처blog.csdn.net/weixin_34288121/article/details/91897309