Sincronización en subprocesos del mismo nivel 
En este tema se proporciona un ejemplo de nodo de robot de sincronización que espera un cambio en el estado de actividad de un subproceso padre.
Procesos de trabajo de referencia
SynchronizingOnSiblingSubProcess.xml
SiblingSubProcess.xml
Descripción
La siguiente expresión es para un robot que vigila un evento ACTIVITY_STATE_CHANGED emitido por una actividad asignada. La expresión comprueba si el nodo de actividad que ha emitido el evento pertenece a uno de los subprocesos del proceso de trabajo padre al que pertenece el nodo de robot de sincronización. En caso afirmativo, arranca el evento de distribución adecuado en función del estado del nodo de actividad.
Instrucciones
En este caso, el robot espera el evento ACTIVITY_STATE_CHANGED y la clase Windchill a la que se debe prestar atención es wt.workflow.work.WfAssignedActivity.
En este ejemplo se supone que la actividad pertenece a un proceso de primer nivel; es decir, que no existe en un subproceso anidado. Es posible localizar una actividad de este tipo, pero para ello es necesario que el robot tenga conocimiento de la estructura de los subprocesos anidados.
Copie el código siguiente:
//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";
}
}
¿Fue esto útil?