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 tra istanze di processo
  
Sincronizzazione tra istanze di processo
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 di un'attività.
Workflow di riferimento
SynchronizationAccrossProcessInstances.xml
SynchronizeProcessInstance.xml
Descrizione
Questo tipo di sincronizzazione è molto simile alla sincronizzazione di processi indipendenti. L'unica differenza è che, in questo caso, il robot resta in ascolto dell'evento ACTIVITY_STATE_CHANGED di wt.workflow.engine.WfProcess anziché di WfAssignedActivity. Nell'espressione riportata di seguito il robot controlla se il processo che ha emesso l'evento State_Changed corrisponde a quello che sta cercando. In caso positivo, il robot esegue un instradamento in base allo stato del processo.
Istruzioni
processName è una variabile definita nel processo padre del robot. Rappresenta il nome di un processo rilevante per il robot.
* 
È possibile che più processi abbiano il nome "processName".
Copiare il codice riportato di seguito.
//get the process that emitted the event
wt.workflow.engine.WfProcess processInstance = ( wt.workflow.engine.WfProcess ) ((wt.events.KeyedEvent)event).getEventTarget();
//Check if the process that triggered the event is the same one we are interested in.
if ( processInstance.getName( ).equals(processName)){
//If so, check for the state of the process. Set result to "completed" if the process has been successfully completed
// and to "terminated" if the process has been terminated. In all other cases, check again.
if ( wt.workflow.engine.WfState.CLOSED_COMPLETED_EXECUTED.equals(processInstance.getState( ))){
result= "completed";
}
else if ( wt.workflow.engine.WfState.CLOSED_TERMINATED.equals(processInstance.getState( ))){
result= "terminated";
}
}