Результаты согласования (Approval)
Назначение
Механизм Approval предназначен для фиксации результатов согласования в бизнес-процессах UniBPM.
Он позволяет:
- сохранять решения согласующих лиц
- хранить историю согласований
- отображать результаты согласования в карточке заявки
- использовать решения согласующих в логике процесса
Каждое решение пользователя фиксируется отдельно и привязывается к заявке (Ticket).
Как работает механизм
Согласование фиксируется при завершении пользовательской задачи.
Если пользовательская задача настроена как задача согласования, UniBPM автоматически:
- получает результат из формы задачи
- определяет пользователя, принявшего решение
- определяет номер попытки согласования
- определяет этап согласования
- сохраняет результат согласования
Это происходит без дополнительной логики в процессе.
Настройка задачи согласования
Чтобы пользовательская задача работала как задача согласования, необходимо заполнить Extension Properties.
Это настраивается в Modeler.
Extension Properties
Property Значение
unibpm.usertask.type approval
unibpm.approval.decision ${decision}
unibpm.approval.comment ${comment}
unibpm.approval.attempt ${approvalAttempt}
unibpm.approval.stage ${approvalStage}
Назначение свойств
Свойство Описание
unibpm.usertask.type указывает, что задача является
задачей согласования
unibpm.approval.decision имя переменной, содержащей результат
согласования
unibpm.approval.comment имя переменной, содержащей
комментарий согласующего
unibpm.approval.attempt имя переменной, содержащей номер попытки согласования
unibpm.approval.stage имя переменной, содержащей имя этапа согласования
Значения переменных указываются в формате выражений.
Пример:
${decision}
${comment}
В настоящий момент в выражениях поддерживаются только имена переменных!
Переменные формы
Форма пользовательской задачи должна передавать переменные:
Переменная Назначение
decision результат согласования
comment комментарий пользователя
Пример значений переменной decision
Система не ограничивает возможные значения.
Пример:
Значение Описание
APPROVED согласовано REJECTED отклонено APPROVED_WITH_RISK согласовано под ответственность NEEDS_REVISION требуется доработка
Работа с несколькими согласующими
UniBPM поддерживает согласование несколькими пользователями.
Для этого обычно используется Multi Instance User Task.
Каждый согласующий получает собственную задачу и принимает решение независимо.
Каждое решение фиксируется отдельно.
Попытки согласования
Если заявка возвращается на доработку, согласование может выполняться повторно.
Для разделения разных раундов согласования используется переменная, имя которой указывается в extension property unibpm.approval.attempt.
Данная переменная должна иметь числовой тип (Integer).
При каждом новом раунде согласования значение переменной должно увеличиваться.
Пример выражения для увеличения значения переменной (переменная может быть объявлена в скоупе процесса через Output Parameter элемента BPMN, предшествующего задаче согласования):
${execution.hasVariable('approvalAttempt') ? approvalAttempt + 1 : 1}
Это позволяет системе хранить историю всех попыток согласования и корректно анализировать результаты текущего раунда.
Этапы согласования
В одном процессе может быть несколько этапов согласования.
Например:
MANAGER_APPROVAL
HR_APPROVAL
DIRECTOR_APPROVAL
LEGAL_APPROVAL
Имя этапа передается через переменную процесса, имя которой указывается в extension property unibpm.approval.stage.
Это позволяет разделять результаты разных этапов согласования.
История согласования
Все решения сохраняются в истории согласований заявки.
История включает:
Поле Описание
согласующий пользователь решение результат согласования комментарий комментарий дата дата и время решения попытка попытка согласования этап этап согласования
Пример отображения в интерфейсе
История согласования может отображаться во вкладке заявки.
Согласующий Решение Комментарий Дата
Руководитель APPROVED ok 10.03 HR APPROVED 10.03
Рекомендации по моделированию процессов
Один согласующий
Используется одна пользовательская задача.
User Task
│
▼
Gateway
Несколько согласующих
Используется Multi Instance User Task.
Multi Instance User Task
│
▼
Gateway
Каждый согласующий принимает решение независимо.
Использование результатов согласования
Результаты согласования могут использоваться:
- в условиях gateway
- в сервисных задачах
- в логике процесса
Конкретная логика зависит от модели процесса.
Типовые сценарии использования
Механизм согласования применяется в процессах:
- согласование отпусков
- согласование закупок
- согласование договоров
- согласование заявок
- согласование командировок
- согласование внутренних документов
Преимущества механизма
- не требует дополнительной логики в процессе
- сохраняет полную историю согласований
- поддерживает несколько согласующих
- гибко настраивается через форму задачи
- легко отображается в интерфейсе