Подія «Помилка» у транзакційному підпроцесі

1. Загальний опис

При моделюванні транзакційних підпроцесів, якщо підпроцес закінчується подією «Помилка» (Error Event), то транзакція завершується помилкою. Така помилка не обробляється в межах підпроцесу, і транзакція переривається без будь-якої компенсації. Батьківський бізнес-процес продовжується із проміжною подією «Помилка» (Error Boundary Interrupting Intermediate Event) на межі транзакційного підпроцесу.

В рамках моделювання застосовують 2 типи подій «Помилка»:
  • Кінцева подія «Помилка» (Error End Event) — подія, що моделюється при завершенні транзакційного підпроцесу помилкою. Коли досягається подія «Помилка», всі активні потоки процесу припиняються, й помилка має бути перехоплена граничною подією «Помилка».

  • Гранична переривальна подія помилки (Error Boundary Interrupting Intermediate Event) — подія, що моделюється на межі підпроцесу транзакції як перехоплювальна проміжна подія «Помилка». Така подія ініціюється, коли транзакція закінчується елементом Error End Event.

2. Моделювання та налаштування події «Помилка» при роботі із транзакційним підпроцесом

2.1. Моделювання та налаштування кінцевої події «Помилка»

Для моделювання та налаштування кінцевої події «Помилка», необхідно виконати наступні кроки:

  1. Змоделюйте батьківський бізнес-процес.

  2. Змоделюйте транзакційний підпроцес із використанням необхідних активностей.

  3. У транзакційному підпроцесі додайте подію завершення для альтернативного потоку послідовності.

    error3 1

    error3 2

    error3 3

  4. Виділіть подію завершення в альтернативній гілці підпроцесу, натисніть іконку ключа та оберіть у налаштуваннях значення Error End Event.

    error3 4

    error3 5

  5. На панелі налаштувань справа відкрийте вкладку General та сконфігуруйте елемент:

    • У полі Id вкажіть робочий ідентифікатор елемента, або залиште значення за замовчуванням.

    • У полі Name вкажіть робочу назву елемента. Наприклад, credit card is NOT valid).

  6. Розгорніть блок Details. Для цього натисніть позначку плюса (+).

    error3 6

    • У полі Name вкажіть назву помилки, що зберігається до бази даних. Наприклад, cardNotValid.

    • У полі Code, за потреби, вкажіть змінну коду помилки. Наприклад, InvalidCreditCard.

    • У полі Global Error referenced оберіть посилання до елемента помилки. Наприклад, cardNotValid (code= InvalidCreditCard).

      У цьому полі значення встановлюється автоматично та відповідає вказаному назві помилки у полі Name.

      Якщо вказано також змінну коду помилки, то у полі Global Error referenced буде автоматично встановлено значення із прив’язкою до цього коду (поле Code).

    • За потреби, у полі Message вкажіть дані помилки, що передається до бази даних.

      error3 7

2.2. Моделювання та налаштування граничної переривальної події «Помилка»

Продовжіть моделювання транзакційного підпроцесу:

  1. На межі транзакційного підпроцесу додайте проміжну подію для альтернативного потоку послідовності. Для цього на панелі зліва оберіть елемент Create Intermediate/Boundary Event та розташуйте його на межі контейнера із транзакційним підпроцесом.

    error3 8

    error3 9

  2. Виділіть граничну подію, змодельовану на межі підпроцесу, натисніть іконку ключа та оберіть у налаштуваннях значення Error Boundary Event.

    error3 10

    error3 11

  3. На панелі налаштувань справа відкрийте вкладку General та налаштуйте елемент:

    • У полі Id вкажіть робочий ідентифікатор елемента, або залиште значення за замовчуванням.

    • У полі Name вкажіть робочу назву елемента. Наприклад, Error charge credit card.

    • Розгорніть блок Details. Для цього натисніть позначку плюса (+).

      error3 12

    • Якщо помилку ініціює елемент Error End Event, то необхідно у полі Global Error referenced обрати посилання до елемента помилки, який перехоплюється (наприклад, такого, що змодельовано та налаштовано у транзакційному підпроцесі). При цьому значення полів Name та Code заповнюються автоматично.

      Вказане значення поля Global Error referenced має бути ідентичним для пов’язаних елементів: відправника та перехоплювального елемента помилки.

      error3 13

    • Якщо подія «Помилка» ініціюється помилкою, що передбачена бізнес-логікою при виконанні задачі бізнес-процесу, то необхідно:

      • у полі Code Variable вказати константу або JUEL-функцію, яка містить код помилки;

      • у полі Message Variable вказати константу або JUEL-функцію, яка містить дані помилки.

        Ініціювати подію «Помилка» можна або за допомогою генерації події «Помилка» у визначеному процесі, або з коду делегування (Delegation Code).

        Інша можливість визначити помилку — встановити тип (назву класу) будь-якого винятку Java як коду помилки.

        error3 15

        Помилка виключення виникає, коли у транзакційному процесі є необроблена помилка (наприклад, неправильний номер рахунку), яка не дозволяє продовжити підпроцеси дебетових та кредитних операцій. Діяльність підпроцесу припиняється без компенсації.

        Інформація бази даних відновлюється до початкового стану (rollback), і процес продовжується за допомогою проміжної події «Помилка» (Credit error).

        Обробка винятку здійснюється за допомогою проміжної події «Помилка». Потік події скасування виконується як:

        • Спроба здійснити дебет з рахунку клієнта, але сервер не відповідає. Інтерфейс генерує результат помилки, і запускається подія Error Boundary Event.

        • Переказ коштів здійснюється за телефоном (Perform phone transfer).

  4. Завершіть моделювання батьківського бізнес-процесу та всіх альтернативних виходів із транзакційного підпроцесу.

    error3 16