마이크로플로우는 receive 활동 또는 pick 활동으로 시작됩니다.
마이크로플로우서 여러 onMessage 정의를 갖는 pick 확동으로 시작할 경우 시작 서비스는 고유하지 않습니다.
이 타스크의 수행 목적 및 시기
마이크로플로우가 요청-응답 조작을 구현하는 경우, 즉, 프로세스에 응답이 포함된 경우,
호출 메소드를 사용하여 호출에서 시작 서비스의 ID를 전달하는 프로세스를 실행할 수 있습니다.
마이크로플로우가 단방향 조작이면 sendMessage 메소드를 사용하여 프로세스를 실행하십시오. 이 예에서는 이 메소드를 다루지 않습니다.
이 타스크의 단계
- 옵션: 프로세스 템플리트를 나열하여 실행하려는 프로세스 이름을
찾으십시오.
프로세스의 이름을 이미 아는 경우 이 단계는 선택사항입니다.
ProcessTemplateData[] processTemplates = process.queryProcessTemplates
("PROCESS_TEMPLATE.EXECUTION_MODE =
PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_MICROFLOW",
"PROCESS_TEMPLATE.NAME",
new Integer(50),
(TimeZone)null);
결과는 이름별로 정렬됩니다.
조회는
마이크로플로우로 시작할 수 있는 처음 50개의 정렬된 템플리트를 포함하는 배열을 리턴합니다.
- 호출할 시작 서비스를 판별하십시오.
이 예에서는 첫 번째 발견된 템플리트를 사용합니다.
ProcessTemplateData template = processTemplates[0];
ActivityServiceTemplateData[] startActivities =
process.getStartActivities(template.getID());
- 해당 유형의 입력 메시지로 프로세스를 시작하십시오.
메시지를 작성하는 경우
메시지 유형 이름을 지정하여 메시지 정의가 포함되도록 해야 합니다.
ActivityServiceTemplateData activity = startActivities[0];
//create a message for the service to be called
ClientObjectWrapper input =
process.createMessage(activity.getServiceTemplateID(),
activity.getActivityTemplateID(),
activity.getInputMessageTypeName());
DataObject myMessage = null;
if ( input.getObject()!= null && input.getObject() instanceof DataObject )
{
myMessage = (DataObject)input.getObject();
//set the strings in the message, for example, a customer name
myMessage.setString("CustomerName", "Smith");
}
//run the process
ClientObjectWrapper output = process.call(activity.getServiceTemplateID(),
activity.getActivityTemplateID(),
input);
//check the output of the process, for example, an order number
DataObject myOutput = null;
if ( output.getObject() != null && output.getObject() instanceof DataObject )
{
myOutput = (DataObject)output.getObject();
int order = myOutput.getInt("OrderNo");
}
이 조치를 통해
프로세스 템플리트의 인스턴스인 CustomerTemplate가 작성되고 일부 고객 데이터가
전달됩니다. 프로세스가 완료된 경우에만 조작이 리턴됩니다. 프로세스 OrderNo의 결과가 호출자에게 리턴됩니다.