Глобальний підпроцес (Call Activity)
- 1. Загальний опис
- 2. Типи розширень шаблонів елементів Call Activity
- 3. Моделювання бізнес-процесів із застосуванням розширень Call Activity
- 3.1. Етапи моделювання процесів
- 3.2. Створення пулу для основного бізнес-процесу
- 3.3. Моделювання стартової події основного процесу
- 3.4. Моделювання користувацької задачі внесення даних онлайн-замовлення
- 3.5. Моделювання Call Activity для виклику зовнішнього підпроцесу
- 3.6. Створення пулу для глобального підпроцесу
- 3.7. Моделювання стартової події глобального підпроцесу
- 3.8. Моделювання користувацької задачі "Рішення про погодження онлайн-замовлення"
- 3.9. Моделювання задачі скриптування для підготовки даних до виведення
- 3.10. Моделювання події завершення глобального підпроцесу
- 3.11. Моделювання користувацької задачі для оплати онлайн-замовлення
- 3.12. Моделювання події завершення основного процесу
- 4. Обмеження рівнів вкладеності при викликах підпроцесів за допомогою Call Activity
- 5. Відображення бізнес-процесів у Кабінетах користувачів
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис
Call Activity (або підпроцес, який можна використовувати повторно) — це стандартний елемент BPMN-моделювання, що підтримує Camunda Engine, який дозволяє викликати інший процес як частину поточного процесу. Він подібний до вбудованого підпроцесу, але є зовнішнім, тобто змодельованим в рамках окремого пулу бізнес-процесу, і може використовуватися неодноразово та декількома різними батьківськими[1] бізнес-процесами.
У Camunda BPMN виклики глобального, тобто зовнішнього підпроцесу, можуть виконуватися між процесами, що змодельовані в окремих файлах .bpmn, або ж в рамках одного файлу .bpmn. Таким чином один незалежний бізнес-процес може запускати інший і навпаки. Платформа реєстрів наразі підтримує лише один тип — виклик глобального підпроцесу з основного (батьківського) процесу. З глобального підпроцесу можна також виконати виклик Call Activity — підпроцес 2-го рівня (див. Обмеження рівнів вкладеності при викликах підпроцесів за допомогою Call Activity). Приклад. Виклик між процесами, змодельованими в окремих файлах BPMN
Приклад. Виклик підпроцесу із основного процесу в рамках одного файлу BPMN
|
Коли елемент Call Activity вводиться в дію, створюється новий екземпляр процесу, на який він посилається. Новий екземпляр процесу активується під час події none start[2]. Процес може мати стартові події інших типів, але вони ігноруються.
Коли створений екземпляр процесу завершується, дія виклику припиняється, і продовжується виконання вихідного потоку послідовності. Іншими словами як тільки виконано виклик Call Activity, процес, що ініціював виклик (основний процес), чекає на завершення глобального підпроцесу, і тільки після цього продовжується. |
2. Типи розширень шаблонів елементів Call Activity
Для спрощення моделювання бізнес-процесів в рамках Платформи реєстрів, імплементовано декілька типів розширень (делегатів), що налаштовуються за допомогою розроблених шаблонів елементів для виклику зовнішніх процесів (Call Activity):
-
Call Activity — загальний шаблон для виклику глобального (зовнішнього) підпроцесу.
-
Check excerpt status — специфікований шаблон для виклику підпроцесу перевірки статусу витягу.
Варто розрізняти Call Activity як стандартний BPMN-елемент і Call Activity як розширення цього самого елемента, що налаштовується за допомогою розробленого шаблону callActivity.json, призначеного для виклику глобального (зовнішнього) підпроцесу. |
3. Моделювання бізнес-процесів із застосуванням розширень Call Activity
Розглянемо застосування BPMN-елемента Call Activity із використанням розробленого шаблону-розширення callActivity.json для виклику глобальних підпроцесів на прикладі бізнес-процесів оформлення онлайн-замовлення (далі — основний або батьківський процес) та підтвердження цього замовлення (далі — підпроцес).
На етапі моделювання необхідно створити 2 пули бізнес-процесів та зберегти їх в рамках одного файлу .bpmn. |
3.1. Етапи моделювання процесів
Для того, щоб змоделювати 2 процеси (у нашому випадку — це основний процес та глобальний підпроцес) із застосуванням Call Activity, необхідно пройти наступні етапи:
3.2. Створення пулу для основного бізнес-процесу
Найперше, змоделюйте пул для основного бізнес-процесу. Для цього виконайте кроки, подані нижче:
Моделювання діаграми бізнес-процесу має відбуватися в рамках елемента Create Pool/Participant. |
-
Відкрийте додаток Camunda Modeler та створіть нову діаграму BPMN. Для цього у лівому верхньому куті натисніть меню File → New File → BPMN Diagram.
-
На панелі інструментів зліва знайдіть елемент Create pool/Participant та перетягніть його до панелі моделювання.
-
Заповніть наступні поля відповідними значеннями:
-
У полі
Participant Name
введіть назву пулу, що відображатиметься у моделері —Оформлення замовлення на сайті
. -
У полі
Process id
введіть ідентифікатор бізнес-процесу —create-order
. -
У полі
Process Name
вкажіть бізнес-назву процесу —Оформлення замовлення на сайті
.
-
3.3. Моделювання стартової події основного процесу
Створіть початкову подію. Для цього виконайте наступні кроки:
-
На панелі інструментів, зліва, знайдіть елемент (коло) CreateStartEvent та перетягніть його до панелі моделювання.
-
На панелі налаштувань справа заповніть наступні параметри відповідними значеннями:
-
У полі
Name
введіть назву початкової події —Кошик
; -
У полі
Initiator
введітьinitiator
.initiator
— спеціальна змінна, що встановлюється для користувача, який розпочав процес.
-
3.4. Моделювання користувацької задачі внесення даних онлайн-замовлення
Далі створіть користувацьку задачу, призначену для введення даних користувачем. Для цього виконайте наступні кроки:
-
Створіть нову задачу, вкажіть її тип, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form (Користувацька форма) та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
У полі
Id
вкажіть ідентифікатор задачі —user-form-1
.ID задачі призначається автоматично, за замовчуванням. Введіть значення вручну, якщо це необхідно. -
У полі
Name
вкажіть назву задачі —Форма введення даних онлайн-замовлення
. -
У полі
Form key
введіть ключ форми, що відповідатиме службовій назві форми для внесення даних —add-order-bp-add-order-test
. -
У полі
Assignee
вкажіть змінну, що використовується для зберігання користувача, який запустив екземпляр процесу, —${initiator}
.
-
3.5. Моделювання Call Activity для виклику зовнішнього підпроцесу
На цьому етапі необхідно змоделювати Call Activity (виклик глобального підпроцесу із зовнішнього пулу). Для цього виконайте кроки, подані нижче:
Приклад налаштування делегата Call Activity наведено за посиланням. |
-
Створіть елемент Call Activity.
-
Виконайте подальші налаштування:
-
У полі
Name
вкажіть назву елемента —Рішення щодо підтвердження замовлення
. -
У полі
Called Element
вкажіть ідентифікатор глобального підпроцесу, що викликатиметься, —order-confirm
. -
У полі
Input data
вкажіть вхідні дані, які необхідно передати бізнес-процесу, що викликається. Параметри мають передаватися у вигляді пар ключ-значення (тут —${submission('user-form-1').formData}
).За деталями щодо використання функції submission()
у бізнес-процесах перейдіть на сторінку JUEL-функції у бізнес-процесах. -
У полі
Output variable name
вкажіть назву змінної, до якої необхідно записати дані (payload), отримані в результаті виконання підпроцесу, що викликається (тут —callActivityOutput
).
-
Таким чином поточна конфігурація запускає глобальний підпроцес із основного пулу. Основний процес не може завершитися, доки виконується глобальний підпроцес. |
3.6. Створення пулу для глобального підпроцесу
На прикладі Створення пулу для основного бізнес-процесу, змоделюйте пул для глобального підпроцесу.
-
На панелі інструментів зліва знайдіть елемент Create pool/Participant та перетягніть його до панелі моделювання.
-
Заповніть наступні поля відповідними значеннями:
-
У полі
Participant Name
введіть назву пулу, що відображатиметься у моделері —Рішення щодо підтвердження замовлення
. -
У полі
Process id
введіть ідентифікатор бізнес-процесу —order-confirm
. -
У полі
Process Name
вкажіть бізнес-назву процесу —Рішення щодо підтвердження замовлення
.
-
3.7. Моделювання стартової події глобального підпроцесу
На прикладі Моделювання стартової події основного процесу, створіть стартову подію підпроцесу.
Для цього виконайте наступні кроки:
-
На панелі інструментів, зліва, знайдіть елемент (коло) CreateStartEvent та перетягніть його до панелі моделювання.
-
На панелі налаштувань справа заповніть наступні параметри відповідними значеннями:
-
У полі
Name
введіть назву початкової події —Отримання даних замовлення
. -
У полі
Initiator
введітьinitiator
.initiator
— спеціальна змінна, що встановлюється для користувача, який розпочав процес.
-
3.8. Моделювання користувацької задачі "Рішення про погодження онлайн-замовлення"
На прикладі Моделювання користувацької задачі внесення даних онлайн-замовлення, створіть задачу "Рішення про погодження онлайн-замовлення". Для цього виконайте кроки, подані нижче:
-
Створіть нову задачу, вкажіть її тип, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form (Користувацька форма) та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
У полі
Id
вкажіть ідентифікатор задачі —user-form-2
.ID задачі призначається автоматично, за замовчуванням. Введіть значення вручну, якщо це необхідно. -
У полі
Name
вкажіть назву задачі —Рішення про погодження онлайн-замовлення
. -
У полі
Form key
введіть ключ форми, що відповідатиме службовій назві форми для внесення даних —add-order-bp-order-confirm-test
. -
У полі
Assignee
вкажіть змінну, що використовується для зберігання користувача, який запустив екземпляр процесу, —${initiator}
.
-
3.9. Моделювання задачі скриптування для підготовки даних до виведення
На цьому етапі необхідно створити задачу скриптування для обробки даних та підготовки їх до виведення.
Задача має на меті за допомогою groovy-скрипту із виконанням функції |
-
Створіть нову задачу, вкажіть її тип, натиснувши іконку ключа та обравши з меню пункт Script Task (Задача скриптування).
-
На панелі налаштувань справа заповніть наступні поля:
-
У полі
Name
вкажіть назву задачі —Підготовка даних до виведення
. -
У полі
Script Format
вкажіть формат скрипту —groovy
. -
У полі
Script Type
вкажіть тип скрипту —Inline Script
. -
У полі
Script
введіть безпосередньо groovy-скрипт:var data = submission('user-form-2').formData execution.removeVariable('outputPayload') set_transient_variable('outputPayload', S(data, 'application/json'))
-
3.10. Моделювання події завершення глобального підпроцесу
На цьому етапі необхідно створити подію, яка завершуватиме глобальний підпроцес.
-
Створіть подію завершення бізнес-процесу.
-
На панелі налаштувань справа для параметра
Name
вкажіть значенняЗамовлення підтвержено
.
Дані, отримані в результаті виконання глобального підпроцесу "Рішення щодо підтвердження замовлення", записуються до змінної callActivityOutput , зазначеної у полі Output variable name при моделюванні Call Activity основного процесу, і можуть бути використані на формі для оплати замовлення у основному процесі. Після цього продовжується виконання основного процесу.
|
3.11. Моделювання користувацької задачі для оплати онлайн-замовлення
На прикладі Моделювання користувацької задачі внесення даних онлайн-замовлення створіть користувацьку задачу, призначену для оплати замовлення користувачем. Для цього виконайте наступні кроки:
-
Створіть нову задачу, вкажіть її тип, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form (Користувацька форма) та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
У полі
Name
вкажіть назву задачі —Оплата онлайн-замовлення
. -
У полі
Form key
введіть ключ форми, що відповідатиме службовій назві форми для внесення даних —add-order-bp-view-order-test
. -
У полі
Assignee
вкажіть змінну, що використовується для зберігання користувача, який запустив екземпляр процесу, —${initiator}
.
-
3.12. Моделювання події завершення основного процесу
На цьому етапі необхідно створити подію, яка завершуватиме основний процес.
-
Створіть подію завершення бізнес-процесу.
-
На панелі налаштувань справа для параметра
Name
вкажіть значенняЗамовлення сплачено
.
4. Обмеження рівнів вкладеності при викликах підпроцесів за допомогою Call Activity
Існують певні обмеження на Платформі щодо кількості рівнів вкладеності бізнес-процесів при викликах глобальних підпроцесів за допомогою делегата Call Activity.
Для правильної роботи функціональності виклику глобальних процесів із застосуванням делегата Call Activity, використовуйте не більше 3-х рівнів вкладеності бізнес-процесів, тобто основний процес, глобальний підпроцес 1-го рівня та глобальний підпроцес 2-го рівня. |
5. Відображення бізнес-процесів у Кабінетах користувачів
Користувачі Кабінетів посадової особи та отримувача послуг на сторінках Мої послуги та Мої задачі, під час виконання підпроцесів, як викликаних, так і вбудованих, бачитимуть лише назви батьківських бізнес-процесів найвищого рівня.
Тобто, якщо бізнес-процес А викликав підпроцес Б, а підпроцес Б викликав підпроцес В, користувач бачитиме у Кабінеті лише назву бізнес-процесу А під час виконання задач підпроцесів Б та В.