Переход к завершению задания
Многие задачи маршрутизируются с учетом
итогов голосования. Например, задание утверждения может быть назначено нескольким пользователям. Чтобы завершить задание, пользователь должен или утвердить, или отклонить проверяемый объект. Вариант, который он выберет, определяет дальнейшее выполнение рабочего процесса.
Итоги голосования обычно настраиваются добавлением выражения на вкладке
Маршрутизация. Однако для более детального управления процессом подсчета итогов можно использовать переход
Завершить задание на
вкладке Переходы.
Пример
Пусть создается простой шаблон рабочего процесса для использования при проверке определенных объектов. Первая задача требует, чтобы пользователи проверили объект и либо утвердили, либо отклонили его.
Если объект утвержден, он переводится в состояние Утверждено. Если объект отклонен, он переводится в состояние Отклонено:
Все участники являются обязательными. Участники задачи - это пользователи в роли "Начальник ОТК" или "Инженер":
• Чтобы перевести объект в состояние Утверждено, все участники должны голосовать за "Утвердить".
• Если любые 2 пользователя в роли "Начальник ОТК" голосуют за "Отклонить", задача завершается и объект переводится в состояние Отклонено.
Чтобы выполнить это условие, можно ввести следующее выражение для перехода Завершить задание:
java.util.Locale locale=wt.util.WTContext.getContext().getLocale();
int number=wt.workflow.work.WfTally.count(self,"Reject","Quality Manager",locale);
if(number>=2)
{
wt.workflow.work.WorkflowHelper.service.completeActivity(self,"Reject");
}
Интерфейс API перехода завершения задания
Подсчитывать голоса по роли:
/* * @param self : WfAssignedActivity ObjectReference * @param eventToMatch : Routing option to tally * @param assigneeRole : Role for which you want to tally the routing option * @param locale : The locale in which you have specified the assignee role * @return int : Number of votes from user in the specified role * @throws WTException */ public static int count(ObjectReference self,String eventToMatch,String assigneeRole,Locale locale) throws WTException
|
Подсчитывать голоса по управляющему событию:
/* * @param self : WfAssignedActivity ObjectReference * @param eventToMatch : Routing option to tally * @param int : Number of votes for the routing event in the activity * @throws WTException */ public static int count(ObjectReference self,String eventToMatch) throws WTException
|
Завершить задачу при выполнении условий:
/* Supported API : True Method to complete the activity * @param self : WfAssignedActivity ObjectReference * @param events : Routing event to follow * @throws WTException */ public void completeActivity(ObjectReference self,String events) throws WTException
|