Генерация и обработка событий

# Общее описание и настройка

До версии 4.3.0 в RunaWFE для межпроцессного взаимодействия использовались такие элементы как «Отправить/Получить сообщение» (отправить сообщение/получить сообщение, пример использования механизма сообщений), близкими аналогами которых в BPMN являются сигналы и сообщения.
В настоящий момент данные элементы заменены (с поддержкой обратной совместимости) на события обработки и генерации, которые делятся на следующие типы:

  • сообщение
  • сигнал
  • отмена
  • ошибка

В палитру графических элементов добавлены соответственно «Генерация события», «Обработка событий» (иконки в палитре соответствуют сообщениям до версии RunaWFE 4.3.0)

Signals 1.png

Тип события выбирается в свойствах элемента. Каждому типу соответствует свой значок.

Signals 2.png

События обработки можно использовать как в виде отдельного элемента так и помещать в: узел-действие, мультидействие, задачу сценария, подпроцесс (композицию), мультиподпроцесс. Генерация события используется только как отдельный элемент.

Signals 5.png

По умолчанию элемент помещенный на схему бизнес-процесса имеет тип «сообщение», в узел — «сигнал».

Signals 3.png

К элементу «Обработка события» помещенному в узел можно присоединить исходящий переход. В случае получения события на присоединенном переходе генерируется новая точка управления. При этом старая точка управления может оставаться. За данное поведение отвечает свойство «Прерывающий» — Да/Нет. По умолчанию установлено в значение «Да» т.е. при переходе старая точка управления удаляется.

Если событие не прерывающее, то значок обводится пунктиром.

Signals 4.png

Сообщение.

Отправить сообщение/получить сообщение, Пример использования механизма сообщений, Практическое занятие «Межпроцессное взаимодействие»

# Сигнал

Используются преимущественно для межпроцессного взаимодействия.

# Отмена

Инициируют или реагируют на отмену транзакции.

На примере ниже видно, что выполняется мультиподпроцесс в рамках которого запущено два подпроцесса. В мультиподпроцесс помещена обработка события «Отмена», событие прерывающее (т.к. значок не обведен пунктиром).

Signals 10.png

Если выполнить задачу «Отменить заявки», то сгенерированное сообщение будет обработано элементом «Обработка события» в мультиподпроцессе, в результате чего управление пойдет по исходящему переходу, а подпроцессы автоматически завершатся.

Signals 11.png

Signals 12.png

Если использовать свойство «Прерывающий» со значением «нет», то подпроцессы завершены не будут

Signals 13.png

# Ошибка

Позволяют сымитировать ошибку, а также выполнить обработку бизнес-исключения в процессе.

Замечание. Обработка исключений поддерживается только в задаче сценария (скрипте) и задаче бота..

Рассмотрим пример использования обработки бизнес-исключения.

Signals 6.png

В задачу-сценария помещен элемент «обработка события-ошибка», к которому присоединен исходящий переход в узел-действие «Task1». В сценарии используется SQL обработчик с намеренно некорректной конфигурацией.
В свойствах маршрутизации события используется переменная сообщения — «error_event_message», содержащая текст ошибки в случае возникновения исключения.

Signals 7.png

Запустим данный процесс на выполнение

Signals 8.png

Скрипт выполнился с ошибкой и точка управления пошла по исходящему из события-ошибки переходу в задачу Task1.

В переменной error содержится текст ошибки:

Signals 9.png