재사용 서브 프로세스 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);
- 재사용 가능한 하위 프로세스 예제 코드를 실행 흐름 : https://github.com/kylinsoong/.../ReusableSubProcessStart.java
- 재사용 가능한 하위 프로세스의 예 흐름 : https://github.com/kylinsoong/.../reusableSubProcess-Parent.bpmn , https://github.com/kylinsoong/.../reusableSubProcess-Child.bpmn
다음과 같이 실행 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 재현