기본 관리 > 공동 작업 지원 > 워크플로 관리 > 워크플로 도구 > 워크플로 템플릿 관리 > 워크플로 코드 예 > 동기화 로봇 샘플 > 등위 하위 프로세스의 동기화
  
등위 하위 프로세스의 동기화
이 항목에서는 상위 프로세스의 하위 프로세스의 활동 상태 변경을 수신하는 동기화 로봇 노드의 예제를 제공합니다.
참조된 워크플로
SynchronizingOnSiblingSubProcess.xml
SiblingSubProcess.xml
설명
아래 표현식은 지정된 활동에 의해 발생한 ACTIVITY_STATE_CHANGED 이벤트를 수신하는 로봇을 대상으로 합니다. 이 표현식은 이벤트를 발생한 활동 노드가 동기화 로봇 노드가 속한 상위 워크플로 템플릿의 하위 프로세스 중 하나에 속하는지 확인합니다. 속할 경우 활동 노드의 상태에 따라 적절한 라우팅 이벤트를 발생시킵니다.
지침
이런 경우 로봇은 ACTIVITY_STATE_CHANGED 이벤트를 수신하며, 주목해야 할 Windchill 클래스는 wt.workflow.work.WfAssignedActivity입니다.
이 예제에서는 활동이 첫 번째 수준의 프로세스에 속한다고 가정합니다. 즉, 로봇은 중첩된 하위 프로세스에 존재하지 않습니다. 이러한 활동은 추적이 가능하며, 그러기 위해서는 로봇이 중첩된 하위 프로세스의 구조를 알아야 합니다.
다음 코드를 복사합니다.
//Get the Activity that generated the event
wt.workflow.engine.WfActivity activity = (( wt.workflow.engine.WfActivity ) (((wt.events.KeyedEvent)event).getEventTarget()));
//Get the sub process that the Activity belongs to
wt.workflow.engine.WfProcess subProcess = activity.getParentProcess();
//Get the Parent of that sub process
wt.workflow.engine.WfProcess activityParentProcess = (( wt.workflow.engine.WfActivity ) subProcess.getRequester( )). getParentProcess( );
//Get the parent process of the Synch robot that has this expression
wt.workflow.engine.WfProcess myParentProcess = ( wt.workflow.engine.WfProcess ) self.getObject( );
//If the object IDs of the parent of the activity and the parent of the Synch Robot are the same,check for the state of the activity.
if ( wt.fc.PersistenceHelper.isEquivalent(activityParentProcess , myParentProcess )){
//If the Activity has been executed, set result to "completed" and if it has been terminated, setresult to "terminated". Else wait //for a state change.
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";
}
}