Отмена процесса по кнопке. Настройка шаблонов записи, шаблонов процесса и кнопки
Введение
Comindware Platform позволяет гибко управлять процессами, в том числе завершать их.
В некоторых бизнес-сценариях пользователь должен иметь возможность отменять процесс. Например, в процессе согласования договора инициатор может отозвать его и остановить процесс.
Для этого можно создать кнопку отмены процесса на любом этапе.
Здесь представлен пример настройки приложения с кнопкой быстрой остановки процесса.
Исходные данные
Имеется шаблон записи «Договоры» с текстовым атрибутом «ID процесса» (системное имя — processID
).
Имеется шаблон процесса «Согласование договора», который связан с шаблоном «Договоры».
Прикладная задача
Требуется настроить кнопку на форме согласования договора, которая будет останавливать процесс согласования.
Настройка завершения процесса по нажатию кнопки
Настройка процесса «Согласование договора»
- Откройте для редактированию диаграмму процесса «Согласование договора».
- Откройте сценарий на выходе из стартового события.
-
Внутрь действия «Сменить контекст» добавьте действие «Изменить значения атрибутов» со следующими свойствами:
- Атрибут: ID процесса
- Операция со значениями: заменить
-
Значение: формула
FORMAT("{0}", LIST($$ProcessObject))
-
После стартового события добавьте развилку «и».
- После развилки «и» добавьте пользовательскую задачу «Согласовать договор», исполнителем назначьте себя.
- Добавьте промежуточное событие–получение сообщения.
- В свойствах события-получения сообщения на вкладке «Дополнительные» установите имя сообщения «ProcessCancelMessage».
- Соедините событие-получение сообщения с развилкой «и».
- Добавьте конечное событие-остановку процесса «Согласование отменено» и соедините его с событием-получением сообщения.
-
Добавьте конечное событие-остановку процесса «Договор согласован» и соедините его с задачей «Согласовать договор».
Логика процесса
Все конечные события процесса обязательно должны быть типа конечное событие-остановка процесса. Это требуется, чтобы останавливался весь процесс, а не только одна его ветвь.
Таким образом, при запуске процесса будут активны обе его ветви и процесс завершится либо по завершении основной ветви, либо при получении сообщения об отмене согласования договора.
Настройка процесса «Отмена согласования договора»
-
Создайте шаблон записи «Отменённые договоры» со следующим атрибутом:
- Название: Договор
- Системное имя: Contract
- Тип: запись
- Связанный шаблон: Договоры
-
Создайте шаблон процесса «Отмена согласования договора», связанный с шаблоном «Отменённые договоры».
-
Добавьте промежуточное событие-отправку сообщения со следующими дополнительными свойствами:
- Место назначения: промежуточное событие
- Имя сообщения: ProcessCancelMessage
-
Экземпляр процесса: формула
$Contract->processID
Логика работы имён сообщений
Передача данных между событиями отправки и получения сообщений происходит посредством имён сообщений. Имена сообщений служат идентификаторами событий.
Поэтому имя сообщения в промежуточном событии-отправке сообщения должно совпадать с именем сообщения в промежуточном событии–получении сообщения другого процесса.
Настройка кнопки отмены процесса
-
В шаблоне «Договоры» создайте кнопку «Отменить согласование» со следующими свойствами:
- Контекст операции: запись
- Операция: запустить процесс по связанному шаблону
- Сохранять запись после выполнения: флажок установлен
- Результат выполнения: обновить данные
- Шаблон: Отмена согласования договора (атрибут: Contract)
-
Поместить кнопку «Отменить согласование» на форму шаблона «Договоры».
Тестирование
- Запустите процесс «Согласование договора».
- Откройте договор, проходящий согласование.
- Нажмите кнопку «Отменить согласование».
- Перейдите к списку экземпляров процесса «Согласование договора».
- Экземпляр отменённого должен иметь статус «Завершён».
Эта статья была полезна 1 чел.