Synchronisation d'événements de processus personnalisés
Cette rubrique propose un exemple d'utilisation du noeud d'automate de synchronisation pour suspendre un processus jusqu'à ce qu'un événement défini par l'utilisateur spécifique d'un autre processus soit déclenché.
Processus référencés
SynchronizationOfUserDefinedEvents.xml
UserEventsWorkflow.xml
Description
Vous pouvez définir un automate qui interrompt la progression d'un processus jusqu'au déclenchement d'un événement défini par l'utilisateur dans un autre processus. Dans l'expression ci-dessous, l'automate analyse l'événement ACTIVITY_STATE_CHANGED et vérifie si aucun des trois événements définis par l'utilisateur (analyse thermique, analyse de la fatigue ou analyse du stress) ne s'est déclenché. Chacun de ces événements correspond à un événement qui doit être déclenché, puis intégré dans le vecteur : tempResult. Enfin, il affecte son résultat au vecteur tempResult. L'automate déclenche ensuite tous les événements contenus dans le vecteur obtenu.
Instructions
Copiez le code suivant :
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;