독립 프로세스의 동기화
이 항목에서는 별도 워크플로 프로세스의 활동 노드가 특정 상태에 도달할 때까지 프로세스를 중단하는 동기화 로봇 노드의 예제를 제공합니다.
참조된 워크플로
SynchronizationOfIndependentProcesses.xml
SynchronizeIndependentProcess.xml
설명
동기화 로봇 노드는 별도 워크플로 프로세스의 활동이 특정 상태에 도달할 때까지 워크플로 프로세스의 진행을 중단할 수 있습니다. 아래 코드는 이러한 로봇의 표현식이 될 수 있습니다. 수신할 클래스는 wt.workflow.work.WfAssignedActivity이고, 수신할 이벤트는 ACTIVITY_STATE_CHANGED입니다. 로봇은 이 이벤트와 해당 상위 프로세스를 트리거한 활동이 로봇에 제공된 것과 동일한지 확인하고 동일하면 활동의 상태에 따라 라우팅합니다. 활동의 상위 워크플로 템플릿을 식별하기 위해서는 활동과 해당 상위 워크플로 템플릿의 이름을 모두 알아야 합니다. 이는 로봇이 속한 프로세스의 변수가 될 수 있습니다.
지침
activityName 및 otherProcessName은 활동의 이름을 나타내는 문자열 값과 로봇이 수신하는 프로세스가 들어 있는 워크플로 템플릿의 변수를 나타냅니다.
* 
이름이 같은 프로세스가 두 개 이상 있을 수 있습니다. 이 예제를 사용하려면 "processName"이라는 프로세스가 하나뿐이거나 이 이름의 모든 프로세스가 동일한 워크플로 템플릿의 인스턴스인지 확인해야 합니다.
다음 코드를 복사합니다.
//get the activity that emitted the event
wt.workflow.engine.WfActivity activity = ( wt.workflow.engine.WfActivity ) ((wt.events.KeyedEvent) event).getEventTarget();
//Check if this activity is the same as the one we are interested in
if (activity.getName().equals(activityName)) {
//Get the parent process of the activity.
wt.workflow.engine.WfProcess activityParent = activity.getParentProcess();
//Check if the parent process of the activity is the same one we are interested in.
if (( activityParent.getName( )). equals(otherProcessName )) {
//Set result to "completed" if the activity has been executed and to "terminated" if it has been terminated. Else check again.
if ( wt.workflow.engine.WfState.CLOSED_COMPLETED_EXECUTED.equals(activity.getState( ))){
result = "completed";
}
else if ( wt.workflow.engine.WfState.CLOSED_TERMINATED.equals(activity.getState( ))){
result = "terminated";
}
}
}
도움이 되셨나요?