Zählbeispiel mit mehr als einem Zählaufruf
Dieses Thema liefert ein Beispiel dafür, wie mehr als einem Zählaufruf in einem Ausdruck verwendet und wie der zweimalige Aufruf desselben Ereignisses verhindert wird.
Referenzierter Workflow
TallyExpressionWithTwoTallyCalls.xml
Beschreibung
In demselben Ausdruck kann es mehr als einen Zählaufruf geben. In dem Fall besteht die Gefahr, dass dasselbe Routing-Ereignis mehr als einmal zu der Ereignisliste hinzugefügt wird. Um dies zu vermeiden, verwenden Sie die Methode zum Festlegen von Ereignissen, wie im Beispiel gezeigt. Mit dieser Methode werden nicht duplizierte Routing-Ereignisse gesammelt, so dass jedes Routing-Ereignis in der Liste nur einmal ausgelöst wird. Der unten angegebene Ausdruck führt eine Abfrage durch, wie oft "Test" ausgewählt wurde, und speichert das Ergebnis im Vektor "tallyResults". Anschließend führt er eine Abfrage durch, wie viel Prozent der Beauftragten "Ändern" anstatt eine der beiden anderen Optionen gewählt haben. Das Ergebnis dieser Abfrage wird nun zum Vektor tallyResults" hinzugefügt. Die Methode setEvents verhindert, dass das Ereignis "Ändern" (das in beiden Zählaufrufen erscheint) zweimal in der Liste der auszulösenden Ereignisse aufgeführt wird. Das Ergebnis wird anschließend auf dem Vektor "tallyResults" eingestellt.
Anweisungen
Für diese Aktivität kann es beliebig viele Routing-Ereignisse geben. Nur die Stimmen von Beauftragten, deren Teilnahme in der Workflow-Definition als erforderlich festgelegt wurde, werden bei der Abfrage berücksichtigt.
Kopieren Sie den folgenden Code:
//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