Amministrazione di base > Supporto per la collaborazione > Amministrazione dei workflow > Strumenti per workflow > Amministrazione dei modelli di workflow > Esempi di codice di workflow > Esempi di robot di sincronizzazione > Sincronizzazione del processo padre figlio
  
Sincronizzazione del processo padre figlio
Questo argomento contiene un esempio relativo a un nodo di robot di sincronizzazione che resta in ascolto di una modifica nello stato del ciclo di vita dell'attività che ha emesso l'evento che ha generato il processo di workflow padre.
Workflow di riferimento
SynchronizationOnParentChildProcess.xml
SynchronizeChildProcess.xml
Descrizione
L'espressione riportata di seguito si riferisce a un robot che resta in ascolto di un evento ACTIVITY_STATE_CHANGED emesso da un nodo di attività assegnata. L'espressione verifica se l'attività che ha emesso l'evento appartiene a un processo che ha generato il processo padre del robot. In caso affermativo, viene attivato l'evento di instradamento appropriato in base allo stato del ciclo di vita dell'attività.
Istruzioni
Il robot in questo caso resta in ascolto dell'evento ACTIVITY_STATE_CHANGED, mentre la classe Windchill cui prestare attenzione è wt.workflow.work.WfAssignedActivity.
In questo esempio si presuppone che il robot appartenga a un processo di primo livello e che non sia pertanto presente in un sottoprocesso annidato. Per poter accedere al processo più esterno del modello di workflow, il robot deve conoscere la struttura dei sottoprocessi annidati.
Copiare il codice riportato di seguito.
//Get the Activity that triggered the State_change event.
wt.workflow.engine.WfActivity activity = (( wt.workflow.engine.WfActivity ) (((wt.events.KeyedEvent)event).getEventTarget()));
//get the process that the Activity belongs to
wt.workflow.engine.WfProcess activityParentProcess = activity.getParentProcess();
//Get the Parent of that sub process
wt.fc.ObjectReference activityParentRef = activity.getParentProcessRef( );
//Get the parent process for the Synch Robot
wt.workflow.engine.WfProcess mySubProcess = ( wt.workflow.engine.WfProcess ) self.getObject( );
/Get the parent process that spawns this sub process
wt.workflow.engine.WfActivity myRequestorActivity = (( wt.workflow.engine.WfActivity ) mySubProcess.getRequester( ));
wt.workflow.engine.WfProcess myParentProcess = myRequestorActivity.getParentProcess( );
//Check if the parent of the activity and the parent process of the subprocess that the Synch robot belongs to are the same.
if ( wt.fc.PersistenceHelper.isEquivalent(activityParentProcess , myParentProcess )){
//If the state of the Activity in the ParentProcess is executed, set result to "completed" and ifterminated, set result to "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";
}
}