Базовое администрирование > Поддержка совместной работы > Администрирование рабочих процессов > Инструменты рабочего процесса > Администрирование шаблонов рабочего процесса > Примеры кодов рабочего процесса > Подсчет по голосам > Пример выражения для подсчета с несколькими вызовами функции подсчета
  
Пример выражения для подсчета с несколькими вызовами функции подсчета
В этом разделе приведен пример использования нескольких вызовов функции подсчета в выражении и предотвращения повторной инициации того же события.
Рабочий процесс для справки
TallyExpressionWithTwoTallyCalls.xml
Описание
В одном выражении можно использовать несколько вызовов функции подсчета. В этом случае существует риск неоднократного добавления одного и того же управляющего события в список событий. Чтобы этого не случилось, используйте метод setEvents( ), как показано в приведенном здесь примере. Этот метод собирает недублирующиеся управляющие события таким образом, чтобы каждое управляющее событие в списке инициировалось только один раз. В приведенном ниже выражении подсчитывается, сколько раз было выбрано Test, и результат сохраняется в векторе tallyResults. Затем подсчитывается процент исполнителей, выбирающих вариант Modify вместо двух других. Результат подсчета добавляется в вектор tallyResults. При использовании метода setEvents событие Modify (появляющееся в обоих вызовах функции подсчета) не появляется дважды в списке событий для инициации. Результат присваивается вектору tallyResults.
Инструкции
Для этой задачи можно использовать любое количество управляющих событий. В опросе учитываются только голоса исполнителей, которые были объявлены как требуемые в определении рабочего процесса.
Скопируйте следующий код.
//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