Подієвий підпроцес

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

Подієвий підпроцес (Event Subprocess) — це підпроцес, що ініційований подією. Його можна додати локально всередині вбудованого підпроцесу. Такий підпроцес починає виконуватися, якщо ініціюється його початкова подія. Батьківський[1] процес зупиняється в точці очікування результату від підпроцесу.

event subprocess 01

Типи подій

Для ініціювання подієвого підпроцесу можуть бути використані наступні типи подій:

Подія «Повідомлення» (Message Event)

Подія «Повідомлення» (Message Event) — це подія у бізнес-процесі, яка використовується для передачі інформації від одного бізнес-процесу до іншого бізнес-процесу або підпроцесу за допомогою повідомлення.

Подія «Помилка» (Error Event)

Під час автоматизації процесів можна часто стикнутися із відхиленнями від стандартного сценарію. Одним зі способів усунути відхилення є використання BPMN-події «Помилка», що дозволяє моделі бізнес-процесу реагувати на передбачені сценаріями помилки в рамках виконання задачі.

Початкова подія, викликана помилкою (Error Start Event), може використовуватися лише для запуску подієвого підпроцесу.

Подію «Помилка» не можна використовувати для запуску екземпляра процесу. Початкова подія, викликана помилкою, є завжди переривальною.

2. Моделювання вбудованого підпроцесу, ініційованого подією «Повідомлення»

2.1. Передумови

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

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

  2. Змоделюйте (за необхідності) інший процес, що запускатиме підпроцес.

    Процес, що надсилатиме повідомлення, повинен мати змодельовану подію відправки повідомлення (проміжну або кінцеву) для запуску підпроцесу (див. приклад нижче).
    Приклад. Моделювання підпроцесу, ініційованого подією «Повідомлення»

    event subprocess 02

  3. Налаштуйте подію відправки повідомлення:

    • Виділіть елемент та перейдіть до панелі налаштувань.

    • У полі Global Message Name та Global Message referenced введіть значення для Global Message. Значення Global Message referenced заповнюється автоматично. Наприклад, sendMessagefirst.

      Значення параметрів Global Message Name та Global Message referenced для обох подій (відправки та отримання повідомлення) мають бути ідентичними. Для елемента відправки параметри необхідно ввести. Для елемента отримання параметри необхідно обрати із випадного списку для кореляції.

      event subprocess 03

2.2. Моделювання

Після виконання усіх передумов, продовжіть моделювання та налаштування подієвого підпроцесу:

  1. На панелі інструментів зліва оберіть елемент Create expanded SubProcess та перетягніть його до області моделювання, всередину пулу із батьківським процесом.

    event subprocess 1

    event subprocess 2

  2. Виділіть контейнер із вбудованим підпроцесом та вкажіть тип підпроцесу, натиснувши іконку ключа (Change Type) та обравши Event Sub Process.

    event subprocess 3

  3. Виділіть стартову подію у підпроцесі й вкажіть її тип, натиснувши іконку ключа та обравши Message Start Event (non-interrupting).

    На відміну від налаштувань основного процесу, подія старту підпроцесу додається автоматично, разом із контейнером Create expanded SubProcess.

    Вибір переривальної події (non-interrupting) обумовлений тим, що при виборі переривальної, токен батьківського процесу анулюється відразу ж при старті підпроцесу, і батьківський процес вже НЕ запуститься.

    event subprocess 4

  4. Налаштуйте стартову подію, що прийматиме повідомлення у підпроцесі:

    • Виділіть елемент та перейдіть до панелі налаштувань.

    • У полі Global Message Name та Global Message referenced оберіть значення для Global Message. Значення Global Message referenced заповнюється автоматично. Наприклад, sendMessagefirst.

      Значення параметрів Global Message Name та Global Message referenced для обох подій (відправки та отримання повідомлення) мають бути ідентичними. Для елемента відправки параметри необхідно ввести. Для елемента отримання параметри необхідно обрати із випадного списку для кореляції.

      event subprocess 5

  5. Приєднайте будь-яку проміжну задачу та завершіть підпроцес.

В результаті підпроцес, що ініційований подією «Повідомлення», змодельовано та налаштовано.

3. Моделювання вбудованого підпроцесу, ініційованого подією «Помилка»

Для запуску вбудованого підпроцесу подією «Помилка», використовується стартова переривальна подія «Помилка» — Error Sub-Process Interrupting Start Event.

Стартова переривальна подія «Помилка» (Error Sub-Process Interrupting Start Event) може використовуватися лише для запуску подієвого підпроцесу й не може ініціювати запуск екземпляра процесу. Така подія є завжди переривальною.

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

  1. Змоделюйте батьківський бізнес-процес, який завершується, наприклад, кінцевою подією «Помилка» (Error End Event).

    Детальніше про моделювання та налаштування кінцевої події «Помилка» (Error End Event) — за посиланням.
    Елемент Error Sub-Process Interrupting Start Event може бути ініційований не лише елементом Error End Event, а й бізнес-помилкою, яка сталася при виконанні певної задачі (користувацької, сервісної тощо) у батьківському бізнес-процесі.
  2. На панелі зліва оберіть елемент Create expanded SubProcess.

    error2 1

  3. Перетягніть елемент Create expanded SubProcess до пулу із батьківським процесом.

    error2 2

  4. Змініть тип вбудованого підпроцесу, натиснувши іконку ключа — (Change Type) та обравши Event Sub Process (Подієвий підпроцес).

    error2 3

  5. Виділіть стартову подію у підпроцесі й вкажіть її тип, натиснувши іконку ключа та обравши Error Start Event.

    На відміну від налаштувань основного процесу, подія старту підпроцесу додається автоматично, разом із контейнером Create expanded SubProcess.

    error2 4

    error2 5

  6. На вкладці General налаштуйте елемент:

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

    • У полі Name вкажіть робочу назву елемента.

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

    error2 6

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

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

      error2 7

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

      • У полі Name вказати найменування помилки. Наприклад, startError.

      • У полі Code вказати тип (назву класу) будь-якого винятку Java як коду помилки. Наприклад, java.lang.Exception.

        Значення коду java.lang.Exception перехоплюватиме будь-яку логічну помилку, яка відбудеться у батьківському бізнес-процесі.

      • Значення поля Global Error referenced заповнюється автоматично, відповідно до введених даних назви та коду помилки. Наприклад, startError (code=java.lang.Exception).

        error2 8

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

      • Якщо помилка ініціюється змінною, то її значення можна вказати наступним чином:

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

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

  8. Завершіть моделювання активностей підпроцесу.

В результаті підпроцес, що ініційований подією «Помилка», змодельовано та налаштовано.

Example 1. Приклад. Моделювання підпроцесу, старт якого ініційовано подією помилки в батьківському бізнес-процесі

error2 9


1. Батьківський або основний процес (Parent process) — процес, що ініціює запуск підпроцесу. Відносно батьківського процесу підпроцес є Child-процесом (Child process).