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 di eventi di workflow personalizzati
  
Sincronizzazione di eventi di workflow personalizzati
Questo argomento contiene un esempio relativo a un nodo di robot di sincronizzazione che blocca un processo fino a quando non viene attivato un evento definito dall'utente in un altro processo.
Workflow di riferimento
SynchronizationOfUserDefinedEvents.xml
UserEventsWorkflow.xml
Descrizione
È possibile definire un robot che consenta di bloccare l'avanzamento di un processo fino a quando non viene attivato un evento definito dall'utente in un altro processo. Nell'espressione riportata di seguito il robot resta in ascolto dell'evento ACTIVITY_STATE_CHANGED di un'attività e verifica se è stato attivato uno dei tre eventi definiti dall'utente (analisi termica, analisi della resistenza a fatica o analisi delle sollecitazioni). Per ognuno di questi eventi esiste un evento corrispondente da attivare che viene aggiunto al vettore: tempResult. Infine, il risultato dell'espressione viene impostato sul vettore tempResult. Il robot attiva quindi tutti gli eventi contenuti nel vettore dei risultati.
Istruzioni
Copiare il codice riportato di seguito.
Vector tempResult = new Vector ();
//Get activity that caused the event
WfAssignedActivity activity = (WfAssignedActivity) (( wt.events.KeyedEvent) event).getEventTarget();
//Check if the activity and process are the one's we're looking for
if (activity.getName().equals(activityName)){
//Check if the Parent process of the activity is the one we are interested in.
if (activity.getParentProcess().getName().equals(processName)){
//Check if the list of events for the activity contains the event "thermal analysis".
//If so, add to the Vector tempResult, the appropriate event to fire for the robot.
if (activity.getAllEvents().contains("thermal analysis")){
tempResult.addElement("thermal analysis");
}
//Check if the list of events for the activity contains the event "fatigue analysis".
//If so, add to the Vector tempResult, appropriate event for the robot.
if (activity.getAllEvents().contains("fatigue analysis")){
tempResult.addElement("fatigue analysis");
}
//Check if the list of events for the activity contains the event "stress analysis".
//If so, add to the Vector tempResult, appropriate event for the robot.
if (activity.getAllEvents().contains("stress analysis")){
tempResult.addElement("stress analysis");
}
}
}
//Set result to the Vector tempResult.
//Note that in the previous steps, all the events that the robot must fire were added to tempResult.
result = tempResult;