Amministrazione di base > Supporto per la collaborazione > Amministrazione dei workflow > Strumenti per workflow > Amministrazione dei modelli di workflow > Esempi di codice di workflow > Conteggio dei voti > Esempio di espressione di conteggio con più chiamate di conteggio
  
Esempio di espressione di conteggio con più chiamate di conteggio
Questo argomento contiene un esempio relativo all'utilizzo di più chiamate di conteggio in un'espressione e illustra come impedire che uno stesso evento venga attivato due volte.
Workflow di riferimento
TallyExpressionWithTwoTallyCalls.xml
Descrizione
In una stessa espressione è possibile utilizzare più chiamate di conteggio. In tal caso, tuttavia, esiste il rischio di aggiungere più volte uno stesso evento di instradamento all'elenco degli eventi. Per evitare il problema, utilizzare il metodo setEvents( ), come mostrato nell'esempio. Questo metodo consente di raccogliere eventi di instradamento non duplicati, in modo che ogni evento di instradamento nell'elenco venga attivato una sola volta. Con l'espressione riportata di seguito viene eseguita una verifica del numero di volte per cui "Test" è stato scelto e il risultato viene memorizzato nel vettore tallyResults. Quindi, viene eseguita una verifica della percentuale di assegnatari che hanno scelto "Modifica," rispetto agli altri due eventi. Il risultato di questa verifica viene aggiunto al vettore tallyResults. L'utilizzo del metodo setEvents impedisce che l'evento "Modifica" (che appare in entrambe le chiamate di conteggio) compaia due volte nell'elenco di eventi da attivare. Il risultato viene quindi impostato sul vettore tallyResults.
Istruzioni
Per questa attività è possibile utilizzare un numero qualsiasi di eventi di instradamento. Nella verifica vengono considerati solo i voti degli assegnatari che sono stati impostati come obbligatori nella definizione del workflow.
Copiare il codice riportato di seguito.
//Create a vector that will hold all the non-duplicated UserEvents chosen for this activity.
Vector tallyResults = new Vector( );
//Get the object representing this activity.
wt.workflow.work.WfAssignedActivity mySelf = (( wt.workflow.work.WfAssignedActivity ) self.getObject( ));
//Get all the UserEvents for this activity. The resulting Vector may hold duplicate values of some events.
Vector userEvents = (Vector) mySelf.getUserEventList( );
//If "Test" receives 2 or more of the required votes, get "Test", else get "Modify".
//Collect the non-duplicated events into the Vector tallyResults ( i.e add only those events that do not already exist in the vector.
WfTally.setEvents(tallyResults , wt.workflow.work.WfTally.number(self , WfTally.GTE, 2, "Test", "Modify"));
//If "Modify" receives more than 35% of the required votes, get "Modify" else get "Approve and Release".
//Collect the non-duplicated events into the Vector tallyResults ( i.e add only those events that do not already exist in the vector.
WfTally.setEvents(tallyResults , wt.workflow.work.WfTally.percent(self , WfTally.GT, 35, "Modify", "Approve and Release"));
//set result to the tallyResults Vector.
result= tallyResults