Подієвий підпроцес
1. Загальний опис
Подієвий підпроцес (Event Subprocess) — це підпроцес, що ініційований подією. Його можна додати локально всередині вбудованого підпроцесу. Такий підпроцес починає виконуватися, якщо ініціюється його початкова подія. Батьківський[1] процес зупиняється в точці очікування результату від підпроцесу.
Типи подій
Для ініціювання подієвого підпроцесу можуть бути використані наступні типи подій:
- Подія «Повідомлення» (Message Event)
-
Подія «Повідомлення» (Message Event) — це подія у бізнес-процесі, яка використовується для передачі інформації від одного бізнес-процесу до іншого бізнес-процесу або підпроцесу за допомогою повідомлення.
- Подія «Помилка» (Error Event)
-
Під час автоматизації процесів можна часто стикнутися із відхиленнями від стандартного сценарію. Одним зі способів усунути відхилення є використання BPMN-події «Помилка», що дозволяє моделі бізнес-процесу реагувати на передбачені сценаріями помилки в рамках виконання задачі.
Початкова подія, викликана помилкою (Error Start Event), може використовуватися лише для запуску подієвого підпроцесу.
Подію «Помилка» не можна використовувати для запуску екземпляра процесу. Початкова подія, викликана помилкою, є завжди переривальною. |
2. Моделювання вбудованого підпроцесу, ініційованого подією «Повідомлення»
2.1. Передумови
Перед застосуванням сценарію із запуском підпроцесу подією «Повідомлення», виконайте наступні передумови:
-
Змоделюйте батьківський процес (він може запускати підпроцес, а може і не запускати).
-
Змоделюйте (за необхідності) інший процес, що запускатиме підпроцес.
Процес, що надсилатиме повідомлення, повинен мати змодельовану подію відправки повідомлення (проміжну або кінцеву) для запуску підпроцесу (див. приклад нижче). Приклад. Моделювання підпроцесу, ініційованого подією «Повідомлення» -
Налаштуйте подію відправки повідомлення:
-
Виділіть елемент та перейдіть до панелі налаштувань.
-
У полі
Global Message Name
таGlobal Message referenced
введіть значення дляGlobal Message
. ЗначенняGlobal Message referenced
заповнюється автоматично. Наприклад,sendMessagefirst
.Значення параметрів Global Message Name
таGlobal Message referenced
для обох подій (відправки та отримання повідомлення) мають бути ідентичними. Для елемента відправки параметри необхідно ввести. Для елемента отримання параметри необхідно обрати із випадного списку для кореляції.
-
2.2. Моделювання
Після виконання усіх передумов, продовжіть моделювання та налаштування подієвого підпроцесу:
-
На панелі інструментів зліва оберіть елемент Create expanded SubProcess та перетягніть його до області моделювання, всередину пулу із батьківським процесом.
-
Виділіть контейнер із вбудованим підпроцесом та вкажіть тип підпроцесу, натиснувши іконку ключа (Change Type) та обравши Event Sub Process.
-
Виділіть стартову подію у підпроцесі й вкажіть її тип, натиснувши іконку ключа та обравши Message Start Event (non-interrupting).
На відміну від налаштувань основного процесу, подія старту підпроцесу додається автоматично, разом із контейнером Create expanded SubProcess.
Вибір переривальної події (non-interrupting) обумовлений тим, що при виборі переривальної, токен батьківського процесу анулюється відразу ж при старті підпроцесу, і батьківський процес вже НЕ запуститься.
-
Налаштуйте стартову подію, що прийматиме повідомлення у підпроцесі:
-
Виділіть елемент та перейдіть до панелі налаштувань.
-
У полі
Global Message Name
таGlobal Message referenced
оберіть значення дляGlobal Message
. ЗначенняGlobal Message referenced
заповнюється автоматично. Наприклад,sendMessagefirst
.Значення параметрів Global Message Name
таGlobal Message referenced
для обох подій (відправки та отримання повідомлення) мають бути ідентичними. Для елемента відправки параметри необхідно ввести. Для елемента отримання параметри необхідно обрати із випадного списку для кореляції.
-
-
Приєднайте будь-яку проміжну задачу та завершіть підпроцес.
В результаті підпроцес, що ініційований подією «Повідомлення», змодельовано та налаштовано.
3. Моделювання вбудованого підпроцесу, ініційованого подією «Помилка»
Для запуску вбудованого підпроцесу подією «Помилка», використовується стартова переривальна подія «Помилка» — Error Sub-Process Interrupting Start Event.
Стартова переривальна подія «Помилка» (Error Sub-Process Interrupting Start Event) може використовуватися лише для запуску подієвого підпроцесу й не може ініціювати запуск екземпляра процесу. Така подія є завжди переривальною. |
Для моделювання та налаштування стартової події «Помилка» у підпроцесі, необхідно виконати наступні кроки:
-
Змоделюйте батьківський бізнес-процес, який завершується, наприклад, кінцевою подією «Помилка» (Error End Event).
Детальніше про моделювання та налаштування кінцевої події «Помилка» (Error End Event) — за посиланням. Елемент Error Sub-Process Interrupting Start Event може бути ініційований не лише елементом Error End Event, а й бізнес-помилкою, яка сталася при виконанні певної задачі (користувацької, сервісної тощо) у батьківському бізнес-процесі. -
На панелі зліва оберіть елемент Create expanded SubProcess.
-
Перетягніть елемент Create expanded SubProcess до пулу із батьківським процесом.
-
Змініть тип вбудованого підпроцесу, натиснувши іконку ключа — (Change Type) та обравши Event Sub Process (Подієвий підпроцес).
-
Виділіть стартову подію у підпроцесі й вкажіть її тип, натиснувши іконку ключа та обравши Error Start Event.
На відміну від налаштувань основного процесу, подія старту підпроцесу додається автоматично, разом із контейнером Create expanded SubProcess.
-
На вкладці General налаштуйте елемент:
-
У полі
Id
вкажіть робочий ідентифікатор елемента, або залиште значення за замовчуванням. -
У полі
Name
вкажіть робочу назву елемента.
-
-
Розгорніть блок Details. Для цього натисніть позначку плюса (
+
).-
Якщо помилка ініціюється елементом Error End Event, то у полі
Global Error referenced
необхідно обрати посилання до елемента помилки-відправника (наприклад, таку, що змодельовано та налаштовано у батьківському бізнес-процесі). При цьому значення полівName
таCode
заповнюються автоматично.Вказане значення поля Global Error referenced
має бути ідентичним для пов’язаних елементів: відправника та приймального елемента помилки. -
Якщо подія «Помилка» ініціюється помилкою, що передбачена бізнес-логікою при виконанні задачі бізнес-процесу, то необхідно:
-
У полі
Name
вказати найменування помилки. Наприклад,startError
. -
У полі
Code
вказати тип (назву класу) будь-якого винятку Java як коду помилки. Наприклад,java.lang.Exception
.Значення коду
java.lang.Exception
перехоплюватиме будь-яку логічну помилку, яка відбудеться у батьківському бізнес-процесі. -
Значення поля
Global Error referenced
заповнюється автоматично, відповідно до введених даних назви та коду помилки. Наприклад,startError
(code=java.lang.Exception
). -
За потреби, у полі
Message
вкажіть дані помилки, що передається системою. -
Якщо помилка ініціюється змінною, то її значення можна вказати наступним чином:
-
у полі
Code Variable
вкажіть константу або JUEL-функцію, яка містить код помилки; -
у полі
Message Variable
вкажіть константу або JUEL-функцію, яка містить дані помилки.
-
-
-
-
Завершіть моделювання активностей підпроцесу.
В результаті підпроцес, що ініційований подією «Помилка», змодельовано та налаштовано.