Подія «Помилка» у транзакційному підпроцесі
1. Загальний опис
При моделюванні транзакційних підпроцесів, якщо підпроцес закінчується подією «Помилка» (Error Event), то транзакція завершується помилкою. Така помилка не обробляється в межах підпроцесу, і транзакція переривається без будь-якої компенсації. Батьківський бізнес-процес продовжується із проміжною подією «Помилка» (Error Boundary Interrupting Intermediate Event) на межі транзакційного підпроцесу.
- В рамках моделювання застосовують 2 типи подій «Помилка»:
-
-
Кінцева подія «Помилка» (Error End Event) — подія, що моделюється при завершенні транзакційного підпроцесу помилкою. Коли досягається подія «Помилка», всі активні потоки процесу припиняються, й помилка має бути перехоплена граничною подією «Помилка».
-
Гранична переривальна подія помилки (Error Boundary Interrupting Intermediate Event) — подія, що моделюється на межі підпроцесу транзакції як перехоплювальна проміжна подія «Помилка». Така подія ініціюється, коли транзакція закінчується елементом Error End Event.
-
2. Моделювання та налаштування події «Помилка» при роботі із транзакційним підпроцесом
2.1. Моделювання та налаштування кінцевої події «Помилка»
Для моделювання та налаштування кінцевої події «Помилка», необхідно виконати наступні кроки:
-
Змоделюйте батьківський бізнес-процес.
-
Змоделюйте транзакційний підпроцес із використанням необхідних активностей.
-
У транзакційному підпроцесі додайте подію завершення для альтернативного потоку послідовності.
-
Виділіть подію завершення в альтернативній гілці підпроцесу, натисніть іконку ключа та оберіть у налаштуваннях значення Error End Event.
-
На панелі налаштувань справа відкрийте вкладку General та сконфігуруйте елемент:
-
У полі
Id
вкажіть робочий ідентифікатор елемента, або залиште значення за замовчуванням. -
У полі
Name
вкажіть робочу назву елемента. Наприклад,credit card is NOT valid
).
-
-
Розгорніть блок Details. Для цього натисніть позначку плюса (
+
).-
У полі
Name
вкажіть назву помилки, що зберігається до бази даних. Наприклад,cardNotValid
. -
У полі
Code
, за потреби, вкажіть змінну коду помилки. Наприклад,InvalidCreditCard
. -
У полі
Global Error referenced
оберіть посилання до елемента помилки. Наприклад,cardNotValid (code= InvalidCreditCard)
.У цьому полі значення встановлюється автоматично та відповідає вказаному назві помилки у полі
Name
.Якщо вказано також змінну коду помилки, то у полі
Global Error referenced
буде автоматично встановлено значення із прив’язкою до цього коду (полеCode
). -
За потреби, у полі
Message
вкажіть дані помилки, що передається до бази даних.
-
2.2. Моделювання та налаштування граничної переривальної події «Помилка»
Продовжіть моделювання транзакційного підпроцесу:
-
На межі транзакційного підпроцесу додайте проміжну подію для альтернативного потоку послідовності. Для цього на панелі зліва оберіть елемент Create Intermediate/Boundary Event та розташуйте його на межі контейнера із транзакційним підпроцесом.
-
Виділіть граничну подію, змодельовану на межі підпроцесу, натисніть іконку ключа та оберіть у налаштуваннях значення Error Boundary Event.
-
На панелі налаштувань справа відкрийте вкладку General та налаштуйте елемент:
-
У полі
Id
вкажіть робочий ідентифікатор елемента, або залиште значення за замовчуванням. -
У полі
Name
вкажіть робочу назву елемента. Наприклад,Error charge credit card
. -
Розгорніть блок Details. Для цього натисніть позначку плюса (
+
). -
Якщо помилку ініціює елемент Error End Event, то необхідно у полі
Global Error referenced
обрати посилання до елемента помилки, який перехоплюється (наприклад, такого, що змодельовано та налаштовано у транзакційному підпроцесі). При цьому значення полівName
таCode
заповнюються автоматично.Вказане значення поля Global Error referenced
має бути ідентичним для пов’язаних елементів: відправника та перехоплювального елемента помилки. -
Якщо подія «Помилка» ініціюється помилкою, що передбачена бізнес-логікою при виконанні задачі бізнес-процесу, то необхідно:
-
у полі
Code Variable
вказати константу або JUEL-функцію, яка містить код помилки; -
у полі
Message Variable
вказати константу або JUEL-функцію, яка містить дані помилки.Ініціювати подію «Помилка» можна або за допомогою генерації події «Помилка» у визначеному процесі, або з коду делегування (
Delegation Code
).Інша можливість визначити помилку — встановити тип (назву класу) будь-якого винятку Java як коду помилки.
Помилка виключення виникає, коли у транзакційному процесі є необроблена помилка (наприклад, неправильний номер рахунку), яка не дозволяє продовжити підпроцеси дебетових та кредитних операцій. Діяльність підпроцесу припиняється без компенсації.
Інформація бази даних відновлюється до початкового стану (rollback), і процес продовжується за допомогою проміжної події «Помилка» (Credit error).
Обробка винятку здійснюється за допомогою проміжної події «Помилка». Потік події скасування виконується як:
-
Спроба здійснити дебет з рахунку клієнта, але сервер не відповідає. Інтерфейс генерує результат помилки, і запускається подія Error Boundary Event.
-
Переказ коштів здійснюється за телефоном (Perform phone transfer).
-
-
-
-
Завершіть моделювання батьківського бізнес-процесу та всіх альтернативних виходів із транзакційного підпроцесу.