SignalsGuide

Материал из RunaWFE
Перейти к навигации Перейти к поиску

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

Версия 4.4.1

© 2015-2021, ООО "Процессные технологии", материалы этого документа распространяются свободно на условиях лицензии GNU FDL. RunaWFE Free является системой с открытым кодом и распространяется в соответствии с LGPL лицензией (http://www.gnu.org/licenses/lgpl.html).


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

До версии 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