Каталог типових розширень до бізнес-процесів
- 1. Встановлення каталогу типових розширень до бізнес-процесів
- 2. Налаштування типових розширень до бізнес-процесів
- 2.1. Типові розширення для користувацьких задач
- 2.2. Типові розширення для сервісних задач
- 2.2.1. Додавання ролі користувачу Keycloak (Add role to Keycloak user)
- 2.2.2. Збереження ролей користувачів до Keycloak (Save user roles)
- 2.2.3. Створення сутностей масивом у фабриці даних (Batch creation of entities in data factory)
- 2.2.4. Створення сутностей масивом у фабриці даних (Batch creation of entities in data factory v2)
- 2.2.5. Групове читання сутностей у фабриці даних (Batch Read entities from data factory)
- 2.2.6. Створення сутності у фабриці даних (Create entity in data factory)
- 2.2.7. Створення декількох сутностей в рамках однієї транзакції (Create nested entities in data factory)
- 2.2.8. Визначення статусу бізнес-процесу (Define business process status)
- 2.2.9. Видалення сутності з фабрики даних (Delete entity from data factory)
- 2.2.10. Розширення для делегата[1] цифрового підпису DSO (Digital signature by DSO service)
- 2.2.11. Отримання ролі з Keycloak (Get roles from Keycloak)
- 2.2.12. Отримання детальної інформації за суб’єктом з ЄДР (Get subject detail EDR Registry)
- 2.2.13. Читання сутності із фабрики даних (Read entity from data factory)
- 2.2.14. Читання користувацьких налаштувань (Read user settings)
- 2.2.15. Видалення ролі у користувача Keycloak (Remove role from Keycloak user)
- 2.2.16. Пошук посадових осіб у Keycloak за їх атрибутами
- 2.2.17. Пошук отримувачів послуг у Keycloak за їх атрибутами (Get citizen users by attributes from keycloak)
- 2.2.18. Пошук сутностей у фабриці даних (Search for entities in data factory)
- 2.2.19. Пошук суб’єкта в ЄДР (Search subjects EDR Registry)
- 2.2.20. Надсилання системної помилки (Throw system error)
- 2.2.21. Надсилання помилки перевірки правдивості (Throw validation error)
- 2.2.22. Оновлення сутності у Фабриці даних (Update entity in data factory)
- 2.2.23. Часткове оновлення сутності у Фабриці даних (Update entity in data factory partially)
- 2.2.24. Конектор до фабрики даних (Connect to data factory)
- 2.2.25. Інтеграція із зовнішніми системами (Connect to external system v2)
- 2.3. Типові розширення для задач на відправлення повідомлень (Send Task)
- 2.4. Типові розширення для виклику глобальних підпроцесів (Call Activity)
1. Встановлення каталогу типових розширень до бізнес-процесів
Для спрощення моделювання бізнес-процесів розроблені типові розширення-конектори — Element Templates.
1.1. Передумови
1.1.1. Встановлення застосунку Сamunda Modeler
-
Завантажте архів із застосунком Camunda Modeler за посиланням.
Рекомендовано використовувати версію саме 4.8.0 для стабільної роботи системи.
-
Оберіть продукт Open Source Modeler та завантажте відповідну версію, сумісну із вашою операційною системою (наприклад,
Windows 64bit
); -
Після завантаження архіву з додатком, розпакуйте його на локальній машині.
Папка із застосунком може мати, наприклад, таку назву:
camunda-modeler-4.8.1-win-x64
1.1.2. Встановлення плагіну BPMN Linter
Встановіть плагін BPMN Linter для розширення функціональності Camunda та валідації ваших BPMN-діаграм.
-
Перейдіть до офіційного репозиторію за посиланням.
-
Натисніть кнопку
Code
→Download ZIP
та завантажте архів. -
Після завантаження, розпакуйте вміст архіву до папки camunda-modeler-4.8.1-win-x64\resources\plugins застосунку Camunda.
-
Перезапустіть додадок Camunda Modeler.
-
Увімкніть плагін. Для цього натисність Plugins → BPMN Linter → Toggle Linting.
Альтернативно застосуйте комбінацію клавіш
Ctrl+L
.Плагін вмикається та вимикається однаково — Ctrl+L
.
1.2. Встановлення каталогу типових розширень для Windows OS
Виконайте настанови, подані нижче, для інсталювання каталогу Element Templates.
-
Завантажте каталог типових розширень одним зі способів:
-
Спосіб 1.
Отримайте каталог з Github-репозиторію за посиланням. -
Спосіб 2.
Отримайте каталог із захищеного сховища артефактів Nexus за посиланням:https://nexus-{CP-NAMESPACE}.{DNS-WILDCARD}/
:{CP-NAMESPACE}
_та{DNS-WILDCARD}
є змінними, де{CP-NAMESPACE}
— назва namespace (простору імен) у Nexus, а{DNS-WILDCARD}
— значення DNS wildcard[2].-
знайдіть папку business-process-modeler-extensions;
-
буде показано каталог папок типу version.build (наприклад, 0.0.1-SNAPSHOT.12);
-
оберіть папку з останньою версією;
-
оберіть
.zip
-файл у папці, що була відкрита (останньою версією zip може бути, наприклад, файл business-process-modeler-extensions-1.7.0.zip); -
на вкладці Summary натисніть правою кнопкою миші на посилання
Path
. Таким чином розпочнеться завантаження.zip
-архіву;
-
-
-
Розпакуйте із заміною завантажений
.zip
-файл у підпапці resources вашої локальної директорії, де зберігається додаток. Приклад шляху може бути наступним: C:\Users\Downloads\camunda-modeler-4.8.1-win-x64\resources.-
camunda-modeler-4.8.1-win-x64 — локальна директорія, в якій зберігається додаток.
-
resources — папка, що містить розширення (element-templates) та плагіни (plugins)_.
-
-
Підсумкова структура директорії resources має виглядати наступним чином:
-
Підсумкова структура директорії element-templates має виглядати наступним чином:
-
Підсумкова структура директорії plugins має виглядати наступним чином:
-
Перезапустіть додаток Camunda Modeler.
-
Перевірте доступність розширень у каталозі при моделюванні бізнес-процесу:
-
Створіть задачу — оберіть Create Task.
-
Натисніть іконку ключа — оберіть Change Type.
-
Вкажіть тип задачі — сервісна (Service Task), користувацька (User Task) або Call Activity.
-
Натисніть кнопку
Open Catalog
.
В результаті відкриється каталог розширень Element Templates, які можна застосувати в процесі моделювання.
-
1.3. Встановлення каталогу типових розширень для Mac OS
Виконайте настанови, подані нижче, для інсталювання каталогу Element Templates.
-
Завантажте каталог розширень до бізнес-процесів за аналогією до пункту Встановлення каталогу типових розширень для Windows OS.
-
Відкрийте термінал.
-
Перейдіть до локальної директорії розміщення ресурсів Camunda Modeler за допомогою команди:
cd ~/Library/Application\ Support/camunda-modeler/resources
-
Створіть нову директорію під розширення категорії
element templates
у випадку, якщо її там немає, за допомогою команди:mkdir element-templates
-
Скопіюйте всі JSON-файли розширень із директорії
business-process-modeler-extensions
до директорії, що була створена, за допомогою команди:cp business-process-modeler-extensions/*.json ~/Library/Application\ Support/camunda-modeler/resources/element-templates
-
Підсумкова структура директорії виглядатиме наступним чином:
~/Library/Application\ Support/camunda-modeler/resources/element-templates/
-
Перезапустіть додаток Camunda Modeler.
-
Перевірте доступність розширень у каталозі при моделюванні бізнес-процесу:
-
Створіть задачу — оберіть Create Task.
-
Натисніть іконку ключа — оберіть Change Type.
-
Вкажіть тип задачі — сервісна (Service Task), користувацька (User Task) або Call Activity.
-
Натисніть кнопку
Open Catalog
.
В результаті відкриється каталог розширень Element Templates, які можна застосувати в процесі моделювання.
-
2. Налаштування типових розширень до бізнес-процесів
Цей розділ описує налаштування типових розширень для бізнес-процесів — Element Templates.
- Типи задач для застосування розширень
-
Типові розширення Element Templates можуть бути застосовані до різних типів задач, наприклад:
Налаштування типових розширень-конекторів відбувається у застосунку Camunda Modeler. Перед початком роботи переконайтеся, що виконано всі передумови, описані у розділі Встановлення каталогу типових розширень до бізнес-процесів. |
2.1. Типові розширення для користувацьких задач
2.1.1. Задача, що потребує валідації підписом особи-отримувача послуг реєстру (Citizen Sign Task)
Розширення використовується для визначення задачі, що потребує валідації підписом особи-отримувача послуг реєстру (може бути доступна тільки ініціаторові бізнес-процесу).
Перш за все, переконайтеся, що папка /element-templates містить файл citizenSignTaskTemplate.json .
|
-
Відкрийте User Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Form key
введіть службову назву форми. -
У полі
Assignee
введіть значення${initiator}
, (для того, щоб призначити задачу одразу користувачеві, що ініціював бізнес-процес) або значення ідентифікатора користувача (для того, щоб призначити задачу одному чітко визначеному користувачу). -
У полі
Candidate users
введіть список користувачів (написаних через кому), для котрих задача буде доступною для виконання. В рамках бізнес-процесу кожен користувач зможе цю задачу призначити собі та виконати. -
У полі
Candidate roles
введіть список ролей (написаних через кому), для яких задача доступна для виконання. В рамках бізнес-процесу кожен користувач, що має хоча б одну з цих ролей зможе цю задачу призначити собі та виконати (навіть якщо у нього немає доступу до самого бізнес-процесу.
Наприклад, бізнес-процес із умовною назвою bp1 зможе ініціювати лише користувач з роллю officer-bp1 , хоча задачу в цьому бізнес-процесі, яка доступна ролі officer-task зможе виконати користувач, лише маючи одну регламенту роль officer-task ).
|
-
Проставте необхідні прапорці у наступних полях, вказавши валідаційний пакет підпису:
-
CITIZEN
— для регламентної роліФізична особа
; -
ENTERPRENEUR
— для регламентної роліФізична особа-підприємець (ФОП)
; -
LEGAL
— для регламентної роліЮридична особа
.
-
2.1.2. Задача, що потребує валідації підписом посадової особи (Officer Sign Task)
Розширення використовується для визначення задачі, що потребує валідації підписом посадової особи.
Перш за все, переконайтеся, що папка /element-templates містить файл officerSignTaskTemplate.json .
|
-
Відкрийте User Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Form key
введіть службову назву форми. -
У полі
Assignee
введіть значення${initiator}
, (для того, щоб призначити задачу одразу користувачеві, що ініціював бізнес-процес) або значення ідентифікатора користувача (для того, щоб призначити задачу одному чітко визначеному користувачу). -
У полі
Candidate users
введіть список користувачів (написаних через кому), для котрих задача буде доступною для виконання. В рамках бізнес-процесу кожен користувач зможе цю задачу призначити собі та виконати. -
У полі
Candidate roles
введіть список ролей (написаних через кому), для яких задача доступна для виконання. В рамках бізнес-процесу кожен користувач, що має хоча б одну з цих ролей зможе цю задачу призначити собі та виконати (навіть якщо у нього немає доступу до самого бізнес-процесу.
Наприклад, бізнес-процес із умовною назвою bp1 зможе ініціювати лише користувач з роллю officer-bp1 , хоча задачу в цьому бізнес-процесі, яка доступна ролі officer-task зможе виконати користувач, лише маючи одну регламенту роль officer-task ).
|
2.1.3. Користувацька форма (User form)
Розширення використовується для визначення звичайної задачі, що не потребує валідації підписом посадової особи.
Перш за все, переконайтеся, що папка /element-templates містить файл userTaskTemplate.json .
|
-
Відкрийте User Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Form key
введіть службову назву форми. -
У полі
Assignee
введіть значення${initiator}
, (для того, щоб призначити задачу одразу користувачеві, що ініціював бізнес-процес) або значення ідентифікатора користувача (для того, щоб призначити задачу одному чітко визначеному користувачу). -
У полі
Candidate users
введіть список користувачів (написаних через кому), для котрих задача буде доступною для виконання. В рамках бізнес-процесу кожен користувач зможе цю задачу призначити собі та виконати. -
У полі
Candidate roles
введіть список ролей (написаних через кому), для яких задача доступна для виконання. В рамках бізнес-процесу кожен користувач, що має хоча б одну з цих ролей зможе цю задачу призначити собі та виконати (навіть якщо у нього немає доступу до самого бізнес-процесу.
Наприклад, бізнес-процес із умовною назвою bp1 зможе ініціювати лише користувач з роллю officer-bp1 , хоча задачу в цьому бізнес-процесі, яка доступна ролі officer-task зможе виконати користувач, лише маючи одну регламенту роль officer-task ).
|
2.2. Типові розширення для сервісних задач
2.2.1. Додавання ролі користувачу Keycloak (Add role to Keycloak user)
Розширення використовується для призначення ролі користувача Keycloak.
Перш за все, переконайтеся, що папка /element-templates містить файл addRoleToKeycloakUser.json .
|
-
Відкрийте Service Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
User name
вкажіть ідентифікатор користувача у Keycloak. -
У полі
Role
вкажіть роль користувача.
2.2.2. Збереження ролей користувачів до Keycloak (Save user roles)
Назва | Пояснення |
---|---|
Бізнес-назва інтеграційного розширення |
Save user roles |
Службова назва інтеграційного розширення |
|
Назва файлу у бібліотеці розширень |
keycloakSaveUserRoleConnectorDelegate.json |
- Загальний опис
-
Загальне інтеграційне розширення-делегат надає можливість взаємодіяти із сервіс управління ідентифікацією та доступом Keycloak для зміни ролей користувача. Делегат налаштовується у сервісних задачах (Service Task) бізнес-процесу за допомогою шаблону Save user roles.
- Налаштування
-
-
Створіть Service Task.
-
У полі
Name
вкажіть назву сервісної задачі. -
Застосуйте шаблон делегата Save user roles зі списку доступних у каталозі.
-
У секції Inputs > Roles передайте ролі, які необхідно призначити користувачу. Наприклад,
officer
.У нашому прикладі передається одна роль (
officer
) масивом (List
).Доступні типи змінних, через які можна передати ролі:
-
List
— список/масив; -
Map
— ключі-значення; -
Script
— скрипт; -
String or expression
— рядок або вираз.
Приклад 1. Масив ролей, які необхідно призначити користувачу['officer', 'manager1', 'manager2']
-
officer
— системна роль, яка призначається користувачу після реєстрації. -
manager1
таmanager2
— можуть бути регламентними ролями у реєстрі.
-
-
Вкажіть ім’я користувача (
username
) у системі Keycloak. Це можна зробити, наприклад, за допомогою juel-функціїinitiator()
:${initiator().userName}
-
Оберіть реалм Keycloak, до якого відноситься користувач. Наприклад,
officer
, при реєстрації посадових осіб.Доступні опції реалмів:
-
CITIZEN
— реалм, в якому зберігаються отримувачі послуг та їх ролі. -
OFFICER
— реалм, в якому зберігаються посадові особи (надавачі послуг) та їх ролі.
-
-
Вкажіть тип ролей, які можуть бути змінені для користувача. Доступні опції:
-
ALL ROLES
— усі поточні ролі будуть заміщені переліком ролей, вказаних у секціїRoles
. -
PLATFORM ROLES
— поточні системні ролі, призначені користувачу, будуть заміщені переліком ролей, вказаних у секціїRoles
. Поточні регламентні/реєстрові ролі залишаться без змін. -
REGISTRY ROLES
— у користувача будуть заміщені лише регламентні/реєстрові ролі.
-
-
Якщо при налаштуванні делегата як input-параметри передати масив ролей, одна з яких — системна, а дві інші - регламентні (тут —
officer
таmanager1
іmanager2
), то необхідно обрати опціюALL ROLES
. -
Якщо при налаштуванні делегата передати системну роль (тут —
officer
), то необхідно обрати опціюPLATFORM ROLES
. -
Якщо при налаштуванні делегата передати регламентні ролі (тут —
manager1
іmanager2
), то необхідно обрати опціюREGISTRY ROLES
.
-
2.2.3. Створення сутностей масивом у фабриці даних (Batch creation of entities in data factory)
Новіша версія цього інтеграційного розширення описана нижче, у розділі Створення сутностей масивом у фабриці даних (Batch creation of entities in data factory v2). |
Назва | Пояснення |
---|---|
Бізнес-назва інтеграційного розширення |
Batch creation of entities in data factory |
Службова назва інтеграційного розширення |
|
Назва файлу у бібліотеці розширень |
dataFactoryConnectorBatchCreateDelegate.json |
- Загальний опис
-
Загальне інтеграційне розширення-делегат надає можливість взаємодіяти з REST API реєстру та створювати сутності у базі даних масивом. Делегат налаштовується у сервісних задачах (Service Task) бізнес-процесу за допомогою шаблону Batch creation of entities in data factory.
- Налаштування шаблону у бізнес-процесі:
-
При налаштуванні делегата у додатку Camunda Modeler, переконайтеся, що папка із застосунком resources > element-templates містить файл dataFactoryConnectorBatchCreateDelegate.json. -
Відкрийте Service Task, натисніть Open Catalog та оберіть шаблон зі списку, після чого натисніть Apply.
-
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс, назву ендпоінту для таблиці, куди зберігатимуться дані. Наприклад,diplomas
. -
У полі
Payload
введіть дані для створення, що передаються як тіло запита. Наприклад,${payload}
.
Payload зазвичай формується у попередній скрипт-задачі процесу та передається до сервісної задачі як змінна. -
У полі
X-Access-Token source
вкажіть токен доступу користувача до системи, під яким виконується операція. Наприклад,${completer('signCsvFileActivity').accessToken}
. -
У полі
X-Digital-Signature source
вкажіть джерело цифрового підпису. Наприклад,${sign_submission('signCsvFileActivity').signatureDocumentId}
. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
-
2.2.4. Створення сутностей масивом у фабриці даних (Batch creation of entities in data factory v2)
Назва | Пояснення |
---|---|
Бізнес-назва інтеграційного розширення |
Batch creation of entities in data factory v2 |
Службова назва інтеграційного розширення |
|
Назва файлу у бібліотеці розширень |
dataFactoryConnectorBatchCreateDelegateV2.json |
- Загальний опис
-
Загальне інтеграційне розширення-делегат надає можливість взаємодіяти з REST API реєстру та створювати сутності у базі даних масивом як
LIST
абоCSV
транзакційно — тобто зберігаються або усі дані, або жодні. Делегат налаштовується у сервісних задачах (Service Task) бізнес-процесу за допомогою шаблону Batch creation of entities in data factory v2.Максимальна кількість записів для завантаження до БД через цей делегат — 50:
-
50 записів для
LIST
-
50 записів для
CSV
.
Детальніше про застосування делегата у бізнес-процесах ви можете переглянути на сторінці Моделювання бізнес-процесу для завантаження даних з CSV-файлу масивом у БД. -
- Налаштування шаблону у бізнес-процесі:
-
При налаштуванні делегата у додатку Camunda Modeler, переконайтеся, що папка із застосунком resources > element-templates містить файл dataFactoryConnectorBatchCreateDelegateV2.json. -
Відкрийте Service Task, натисніть Open Catalog та оберіть шаблон зі списку, після чого натисніть Apply.
-
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс, назву ендпоінту для таблиці, куди зберігатимуться дані. Наприклад,diplomas
. -
У полі
Upload type
оберіть формат завантаження даних зі списку —CSV
, абоLIST
.Для обох типів,
CSV
таLIST
, конфігурація конектора є однаковою. Відрізнятиметься лише${payload}
, який зазвичай формується у попередній скрипт-задачі процесу та передається до сервісної задачі як змінна${payload}
.-
Якщо необхідно завантажити дані масивом у CSV-форматі, то
payload
може формуватися у скрипті наступним чином:Приклад формування payload (CSV)set_transient_variable('payload', submission('signCsvFileActivity').formData.prop('csvFile').elements().first())
Тобто отримуємо список елементів
csvFile
із форми (formData
) за допомогою JUEL-функціїsubmission()
, формуємо об’єктpayload
й надалі використовуємо як змінну при налаштуванні делегата. СSV-дані на форму можна завантажити за допомогою компонентаContent
(детальніше про моделювання форм — за посиланням). -
Якщо необхідно завантажити дані масивом як
LIST
, тоpayload
може формуватися у скрипті наступним чином:Приклад формування масиву даних (LIST)var data= ''' [ { "data":"test data", "description":"some description" }, { "data2":"test data2", "description2":"some description2" } ] ''' execution.setVariable("jsonArray", S(data))
Створюємо рядок
data
, який містить JSON-масив із двома об’єктами. Кожен об’єкт містить пари ключ-значення — дані, які беруться з UI-форми. Результат записуємо до змінноїjsonArray
, яку потім використовуємо при налаштуванні делегата. дані на форму можна завантажити як масив за допомогою компонентаEdit Grid
(детальніше про моделювання форм — за посиланням).
-
-
У полі
Payload
введіть дані для створення, що передаються як тіло запита. Наприклад,${payload}
. -
У полі
X-Access-Token source
вкажіть токен доступу користувача до системи, під яким виконується операція. Наприклад,${completer('signCsvFileActivity').accessToken}
. -
У полі
X-Digital-Signature source
вкажіть джерело цифрового підпису. Наприклад,${sign_submission('signCsvFileActivity').signatureDocumentId}
. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
-
2.2.5. Групове читання сутностей у фабриці даних (Batch Read entities from data factory)
Перш за все, переконайтеся, що папка /element-templates містить файл dataFactoryConnectorBatchReadDelegate.json .
|
-
Відкрийте Service Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс. -
У полі
Resource ids
вкажіть ідентифікатор ресурсу. -
У полі
X-Access-Token source
зазначте токен доступу до системи користувача, під яким виконується операція. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.6. Створення сутності у фабриці даних (Create entity in data factory)
Перш за все, переконайтеся, що папка /element-templates містить файл dataFactoryConnectorCreateDelegate.json .
|
-
Відкрийте Service Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс. -
У полі
Payload
введіть дані для створення. -
У полі
X-Access-Token source
зазначте токен доступу до системи користувача, під яким виконується операція. -
У полі
X-Digital-Signature source
вкажіть джерело цифрового підпису. -
У полі
X-Digital-Signature-Derived source
вкажіть джерело системного цифрового підпису. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.7. Створення декількох сутностей в рамках однієї транзакції (Create nested entities in data factory)
Розширення Create nested entities in data factory — делегат для створення декількох сутностей в рамках однієї транзакції, що налаштовується за допомогою розробленого однойменного шаблону Create nested entities in data factory (dataFactoryConnectorNestedCreateDelegate.json).
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка /element-templates містить файл dataFactoryConnectorNestedCreateDelegate.json.
|
-
Змоделюйте сервісну задачу (Service Task).
-
Натисніть
Open Catalog
та оберіть шаблон Create nested entities in data factory зі списку. -
Сконфігуруйте обраний шаблон:
-
У полі
Name
вкажіть назву задачі. Наприклад,Зберегти дані до Фабрики даних
. -
У полі
Resource
вкажіть ресурс, тобто назву ендпоінту, до якого необхідно звернутися. Наприклад,person-profile
.На рівні API, ендпоінт виглядає наступним чином: /nested/<resource name>
, де<resource name>
— назва ресурсу. Тобто у поліResource
необхідно вказати значення, яке визначається після останньої косої риски (/
). -
У полі
Payload
введіть тіло запита — JSON-об`єкт із вкладеною структурою декількох сутностей, яку необхідно зберегти до Фабрики даних. Наприклад,${payload}
.Майте на увазі, що необхідно попередньо побудувати цей JSON-об`єкт, тобто payload
, в рамках задачі скриптування. -
У полі
X-Access-Token
вкажіть токен доступу.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця задачі (наприклад,${completer('taskDefinitionId').accessToken}
). -
У полі
X-Digital-Signature source
вкажіть джерело цифрового підпису. -
У полі
X-Digital-Signature-Derived source
вкажіть джерело системного цифрового підпису. -
У полі
Result variable
вкажіть назву змінної процесу, до якої необхідно записати результат (за замовчуванням —response
).
-
Особливості використання та налаштування делегата Create nested entities in data factory у бізнес-процесі дивіться за посиланням. |
2.2.8. Визначення статусу бізнес-процесу (Define business process status)
Перш за все, переконайтеся, що папка /element-templates містить файл defineBusinessProcessStatusDelegate.json .
|
-
Відкрийте Service Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Status
вкажіть статус, що відображатиметься після завершення процесу.
2.2.9. Видалення сутності з фабрики даних (Delete entity from data factory)
Перш за все, переконайтеся, що папка /element-templates містить файл dataFactoryConnectorDeleteDelegate.json .
|
-
Відкрийте Service Task, натисніть кнопку
Open Catalog
та оберіть шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс. -
У полі
Payload
введіть дані для створення. -
У полі
X-Access-Token source
зазначте токен доступу до системи користувача, під яким виконується операція. -
У полі
X-Digital-Signature source
вкажіть джерело цифрового підпису. -
У полі
X-Digital-Signature-Derived source
вкажіть джерело системного цифрового підпису. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.10. Розширення для делегата[1] цифрового підпису DSO (Digital signature by DSO service)
Перш за все, переконайтеся, що папка /element-templates містить файл digitalSignatureConnectorDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Payload
введіть дані для підпису. -
У полі
X-Access-Token source
введіть токен доступу до системи користувача, під яким виконується операція. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.11. Отримання ролі з Keycloak (Get roles from Keycloak)
Перш за все, переконайтеся, що папка /element-templates містить файл getRolesFromKeycloak.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (наприклад,rolesOutput
).
2.2.12. Отримання детальної інформації за суб’єктом з ЄДР (Get subject detail EDR Registry)
Перш за все, переконайтеся, що папка /element-templates містить файл subjectDetailEdrRegistryConnectorDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Authorization token
вкажіть токен для доступу до СЕВ ДЕІР «Трембіта». -
Поле
Id
визначає змінну, де зберігається код для пошуку в у зовнішньому реєстрі (ЄДР). -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.13. Читання сутності із фабрики даних (Read entity from data factory)
Перш за все, переконайтеся, що папка /element-templates містить файл dataFactoryConnectorReadDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс. -
У полі
Resource id
введіть ідентифікатор ресурсу. -
У полі
X-Access-Token source
вкажіть токен доступу до системи користувача, під яким виконується операція. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.14. Читання користувацьких налаштувань (Read user settings)
Перш за все, переконайтеся, що папка /element-templates містить файл userSettingsConnectorReadDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
X-Access-Token source
зазначте токен доступу до системи користувача, під яким виконується операція. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.15. Видалення ролі у користувача Keycloak (Remove role from Keycloak user)
Перш за все, переконайтеся, що папка /element-templates містить файл removeRoleFromKeycloakUser.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
User name
вкажіть ідентифікатор користувача у Keycloak. -
У полі
Role
зазначте роль користувача.
2.2.16. Пошук посадових осіб у Keycloak за їх атрибутами
Розширення Get users by attributes from keycloak — делегат ${getUsersByAttributesFromKeycloak}
, для якого імплементовано однойменний шаблон Get users by attributes from keycloak, представлений у вигляді JSON-файлу getUsersByAttributesFromKeycloak.json.
Делегат потрібний для того, щоб при виконанні бізнес-процесу отримувати список користувачів (посадових осіб) за певними атрибутами із сервісу керування ідентифікацією та доступом Keycloak.
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить файл getUsersByAttributesFromKeycloak.json. |
- Налаштування шаблону
-
-
Змоделюйте нову задачу.
-
Визначте її тип, натиснувши іконку ключа та обравши з меню пункт Service Task (сервісна задача).
-
Перейдіть до панелі налаштувань справа та застосуйте делегат Get users by attributes from keycloak. Для цього оберіть відповідний шаблон із каталогу (
Open Catalog
) та натиснітьApply
для підтвердження. -
Виконайте подальші налаштування:
-
У полі
Name
вкажіть назву задачі. Наприклад,Отримати список користувачів із Keycloak
. -
У полі
Edrpou attribute value
вкажіть значення атрибутаedrpou
. Наприклад,11111111
.Значення атрибута
edrpou
є обов’язковим для заповнення. Його можна передати як напряму (тобто ввести код ЄДРПОУ, наприклад,11111111
), так і через функціюsubmission()
, вказавши ID останньої користувацької задачі (наприклад,'userTaskId'
). -
У полі
Drfo attribute value
вкажіть значення атрибутаdrfo
. Наприклад,2222222222
.Значення атрибута
drfo
є опціональним. Його можна передати як напряму (тобто ввести код ДРФО, наприклад,2222222222
), так і через функціюsubmission()
, вказавши ID останньої користувацької задачі (наприклад,'userTaskId'
). -
У полі
Result variable
вкажіть назву змінної, до якої необхідно зберегти відповідь —usersByAttributes
.В результаті запита отримуємо список користувачів із Keycloak за їх атрибутами, який зберігатиметься у змінній
usersByAttributes
.-
Якщо користувач передає лише значення параметра
edrpou
, то сервіс повертає список усіх посадових осіб відповідної організації. -
Якщо користувач передає значення параметрів
edrpou
таdrfo
, то сервіс повертає список з іменем конкретної посадової особи відповідної організації.
-
-
-
Детальніше про налаштування та використання делегата у бізнес-процесі — за посиланням. |
2.2.17. Пошук отримувачів послуг у Keycloak за їх атрибутами (Get citizen users by attributes from keycloak)
Розширення Get citizen users by attributes from keycloak — делегат ${getCitizenUsersByAttributesFromKeycloak}
, для якого імплементовано однойменний шаблон Get citizen users by attributes from keycloak, представлений у вигляді JSON-файлу getCitizenUsersByAttributesFromKeycloak.json.
Делегат потрібний для того, щоб при виконанні бізнес-процесу отримувати список користувачів (отримувачів послуг) за певними атрибутами із сервісу керування ідентифікацією та доступом Keycloak.
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить файл getCitizenUsersByAttributesFromKeycloak.json. |
Налаштування шаблону:
-
Змоделюйте нову задачу.
-
Визначте її тип, натиснувши іконку ключа та обравши з меню пункт Service Task (сервісна задача).
-
Перейдіть до панелі налаштувань справа та застосуйте делегат Get citizen users by attributes from keycloak. Для цього оберіть відповідний шаблон із каталогу (
Open Catalog
) та натиснітьApply
для підтвердження. -
Виконайте подальші налаштування:
-
У полі
Name
вкажіть назву задачі. Наприклад,Отримати список отримувачів послуг із Keycloak
. -
У полі
Edrpou attribute value
вкажіть значення атрибута edrpou. Наприклад,11111111
.Значення атрибута
edrpou
є обов’язковим для заповнення. Його можна передати як напряму (тобто ввести код ЄДРПОУ, наприклад, 11111111), так і через функціюsubmission()
, вказавши ID останньої користувацької задачі (наприклад,userTaskId
). -
У полі
Drfo attribute value
вкажіть значення атрибута drfo. Наприклад,2222222222
.Значення атрибута drfo є опціональним. Його можна передати як напряму (тобто ввести код ДРФО, наприклад, 2222222222), так і через функцію submission(), вказавши ID останньої користувацької задачі (наприклад, 'userTaskId').
-
У полі
Result variable
вкажіть назву змінної, до якої необхідно зберегти відповідь —citizenUsersByAttributes
.В результаті запита отримуємо список користувачів із Keycloak за їх атрибутами, який зберігатиметься у змінній
citizenUsersByAttributes
.-
Якщо користувач передає лише значення параметра
edrpou
, то сервіс повертає список усіх отримувачів послуг відповідної організації. -
Якщо користувач передає значення параметрів
edrpou
таdrfo
, то сервіс повертає список з іменем конкретного отримувача послуг відповідної організації.
-
-
2.2.18. Пошук сутностей у фабриці даних (Search for entities in data factory)
Перш за все, переконайтеся, що папка /element-templates містить файл dataFactoryConnectorSearchDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
. -
У полі
X-Access-Token source
вкажіть токен доступу до системи користувача, під яким виконується операція.
2.2.19. Пошук суб’єкта в ЄДР (Search subjects EDR Registry)
Перш за все, переконайтеся, що папка /element-templates містить файл searchSubjectsEdrRegistryConnectorDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Authorization token
вкажіть токен для доступу до СЕВ ДЕІР «Трембіта». -
Поле
Code
визначає змінну, де зберігається код для пошуку в ЄДР. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.20. Надсилання системної помилки (Throw system error)
Перш за все, переконайтеся, що папка /element-templates містить файл camundaSystemErrorDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Message
зазначте текст помилки, що буде показано.
2.2.21. Надсилання помилки перевірки правдивості (Throw validation error)
Перш за все, переконайтеся, що папка /element-templates містить файл userDataValidationErrorDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У випадному списку Validation errors:
-
зазначте у полі
Variable Assignment Type
тип змінної, вказавши значенняList
; -
натисніть
Add Value
та у поліValue
вкажіть значення помилки, що відображатиметься.
-
{"field": "laboratory", "value": "${submission('start_event').formData.prop('laboratory').prop('laboratoryId').value()}", "message": "Статус в ЄДР "Скаcовано" або "Припинено"}.
2.2.22. Оновлення сутності у Фабриці даних (Update entity in data factory)
Перш за все, переконайтеся, що папка /element-templates містить файл dataFactoryConnectorUpdateDelegate.json .
|
-
Відкрийте Service Task → у вікні справа натисніть кнопку
Open Catalog
та оберіть відповідний шаблон (Template) зі списку. -
У полі
Name
вкажіть назву задачі. -
У полі
Resource
вкажіть ресурс. -
У полі
Resource id
вкажіть ідентифікатор ресурсу. -
У полі
Payload
зазначте дані для створення. -
У полі
X-Access-Token source
введіть токен доступу до системи користувача, під яким виконується операція. -
У полі
X-Digital-Signature source
вкажіть джерело для Ceph-документа, де зберігається підпис користувача, накладений на дані UI-форми при внесенні. -
У полі
X-Digital-Signature-Derived source
вкажіть джерело для Ceph-документа, де зберігається системний підпис, автоматично накладений на тіло запита. -
У полі
Result variable
вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням —response
).
2.2.23. Часткове оновлення сутності у Фабриці даних (Update entity in data factory partially)
Розширення Update entity in data factory partially — делегат для часткового оновлення сутності у фабриці даних, який налаштовується за допомогою розробленого однойменного шаблону Update entity in data factory partially (dataFactoryConnectorPartialUpdateDelegate.json).
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить файл dataFactoryConnectorPartialUpdateDelegate.json. |
-
Створіть Service Task.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
, оберіть відповідний шаблон Update entity in data factory partially зі списку та натиснітьApply
для підтвердження. -
Сконфігуруйте обраний шаблон:
-
У полі
Name
вкажіть назву задачі. Наприклад,Часткове оновлення виконанно
. -
У полі
Resource
вкажіть ресурс, тобто назву ендпоінту, до якого необхідно звернутися, —person-profile
.На рівні API ендпоінт виглядає як /partial/<resource-name>/<resource-id>
, де<resource-name>
— назва ресурсу, а<resource-id>
— ідентифікатор ресурсу у Фабриці даних. У поліResource
необхідно вказати значення між/partial
та/<resource-id>
, без косої риски (/
). -
У полі
Resource id
вкажіть ідентифікатор ресурсу, тобто сутності у Фабриці даних, яку необхідно оновити. Наприклад,{id}
.Ідентифікатор ресурсу визначається у форматі
UUID
. Його можна передати як змінну, взяту із попередніх задач бізнес-процесу, або напряму — якf7dc68fe-98e1-4d95-b80f-df5ce42cebb9
. -
У полі
Payload
введіть тіло запита — JSON-структуру із параметрами, які необхідно оновити у Фабриці даних. Наприклад,${updatePersonPayload}
. -
У полі
X-Access-Token
введіть токен доступу до ресурсу. Наприклад,${completer('signEditedPersonalProfile').accessToken}
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
). -
У полі
X-Digital-Signature source
вкажіть джерело для Ceph-документа, де зберігається підпис користувача, накладений на дані UI-форми при внесенні, —${sign_submission('signEditedPersonalProfile').signatureDocumentId}
. -
У полі
X-Digital-Signature-Derived source
вкажіть джерело для Ceph-документа, де зберігається системний підпис, автоматично накладений на тіло запита, —${updatePersonPayloadDerivedKey}
. -
У полі
Result variable
вкажіть назву змінної процесу, до якої необхідно записати результат (за замовчуванням —response
).
-
Особливості використання та налаштування делегата Update entity in data factory partially у бізнес-процесі дивіться за посиланням. |
2.2.24. Конектор до фабрики даних (Connect to data factory)
Розширення Connect to data factory — загальний делегат для інтеграції бізнес-процесів із Фабрикою даних, який налаштовується за допомогою розробленого однойменного шаблону Connect to data factory (dataFactoryConnectorDelegate.json).
Завдяки цьому делегату можна надіслати будь-який запит до будь-якого АРІ-ендпоінту для отримання будь-яких даних. Тобто можна використати для запита будь-яку точку інтеграції (ендпоінт), розроблену на рівні Фабрики даних, яка відображена у REST API реєстру, тобто у Swagger UI.
Один цей загальний делегат здатен замінити усі інші делегати конкретного призначення. |
- Делегат підтримує взаємодію із HTTP-методами, а саме:
-
-
POST
— для створення сутності/ресурсу. Відповідає БД-операціїCREATE
. -
GET
— для пошуку або читання даних. Відповідає БД-операціїREAD
. -
PUT
— для оновлення сутності. Відповідає БД-операціїUPDATE
. -
DELETE
— для видалення сутності. Відповідає БД-операціїDELETE
). -
PATCH
— для часткового оновлення (модифікації) сутності. Відповідає БД-операціїUPDATE
.
-
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить файл dataFactoryConnectorDelegate.json. |
Ця інструкція розглядає випадки взаємодії делегата з різними типами ендпоінтів на прикладі сутності ownership (право власності).
|
2.2.24.1. Налаштування взаємодії з POST-ендпоінтом
HTTP-метод POST
використовується для створення сутності/ресурсу в базі даних реєстру.
Для налаштування шаблону делегата в Camunda Modeler, необхідно виконати наступні кроки:
-
Створіть Service Task.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
, оберіть відповідний шаблон Connect to data factory зі списку та натиснітьApply
для підтвердження. -
Сконфігуруйте обраний шаблон:
-
У полі
Name
вкажіть назву задачі. Наприклад,Створити сутність (POST)
. -
Розгорніть блок Method у секції Custom Fields та оберіть з випадного списку HTTP-метод
POST
для взаємодії з Фабрикою даних. -
Розгорніть блок Path та вкажіть шлях до ресурсу у Фабриці даних, тобто назву ендпоінту, до якого необхідно звернутися:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для ендпоінту. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
вкажіть ендпоінт —/ownership
.Назву ендпоінту необхідно вказувати через косу риску ( /
) як префікс.
-
-
Метод
POST
не вимагає додаткових request-параметрів, окрім тіла запита, а отже блок Request parameters залиште порожнім. -
Розгорніть блок Payload та вкажіть вхідні параметри, тобто тіло запита:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для тіла запита. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть тіло запита — JSON-структуру із параметрами, які необхідно записати до БД. Наприклад,${payload}
.У нашому прикладі ми передаємо змінну
${payload}
, до якої були збережені дані в одній із попередніх задач бізнес-процесу.Приклад 2. Схема тіла запита згідно з REST API реєстру{ "ownershipId": "b45b90c0-c53d-4fd3-aa82-02e8e7392345", "code": "string", "name": "string" }
-
-
Розгорніть блок X-Access-Token та вкажіть введіть токен доступу до ресурсу:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для токена доступу. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть токен доступу. Наприклад,${completer('taskId').accessToken}
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
).
-
-
Розгорніть блок X-Digital-Signature source та вкажіть джерело для Ceph-документа, де зберігається підпис користувача (КЕП), накладений на дані UI-форми при внесенні:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для КЕП. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
вкажіть підпис користувача (КЕП). Наприклад,${sign_submission('taskId').signatureDocumentId}
.У нашому прикладі ми передаємо КЕП із користувацької форми, де його застосовано, через функцію
sign_submission()
(детальніше про використання JUEL-функцій у бізнес-процесах — за посиланням.)
-
-
Розгорніть блок X-Digital-Signature-Derived source та вкажіть джерело для Ceph-документа, де зберігається системний підпис, автоматично накладений на тіло запита:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для системного підпису. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
передайте системний підпис.Наприклад, `${createPersonPayloadDerivedKey}
.У нашому прикладі ми передаємо змінну ${createPersonPayloadDerivedKey}
, до якої було збережено системний підпис в одній із попередніх задач бізнес-процесу.
-
-
Розгорніть блок Result variable та вкажіть назву змінної процесу, до якої необхідно записати результат (за замовчуванням —
response
):-
Активуйте позначку
Local Variable Assignment
→ON
. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть назву результівної змінної (за замовчуванням —response
).Сервіс не повертає тіла у відповідь на
POST
-запит. В результаті повертається лише код відповіді та його опис.Приклад 3. Код відповіді та його опис згідно з REST API реєстру201 OK, ресурс успішно створено
-
-
2.2.24.2. Налаштування взаємодії з GET-ендпоінтом
HTTP-метод GET
використовується для отримання даних сутності (SELECT
за id із таблиці в БД) або пошуку даних за певними критеріями (SELECT
із представлення (view)) в базі даних реєстру. Використовується для отримання об’єктів. Не змінює стан ресурсу.
КЕП і системний підпис не використовуються при GET-запиті. |
- Отримання даних сутності за id
-
Цей випадок описує приклад отримання ресурсу за його ID із певної таблиці в базі даних.
Для налаштування шаблону делегата в Camunda Modeler, необхідно виконати наступні кроки:
-
Створіть Service Task.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
, оберіть відповідний шаблон Connect to data factory зі списку та натиснітьApply
для підтвердження. -
Сконфігуруйте обраний шаблон:
-
У полі
Name
вкажіть назву задачі. Наприклад,Отримати сутніть за id (GET)
. -
Розгорніть блок Method у секції Custom Fields та оберіть з випадного списку HTTP-метод
GET
для взаємодії з Фабрикою даних. -
Розгорніть блок Path та вкажіть шлях до ресурсу у Фабриці даних, тобто назву ендпоінту, до якого необхідно звернутися:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для ендпоінту. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
вкажіть ендпоінт. Наприклад,/ownership/${response.value.responseBody.prop('id).value()}
.Назву ендпоінту необхідно вказувати через косу риску (
/
) як префікс.Обов’язково необхідно передати ідентифікатор сутності. ID можна передати декількома способами. Наприклад:
-
через змінну як
${response.value.responseBody.prop('id).value()}
; -
через змінну як
/${id}
; -
через функцію
submission()
як${submission('taskId').formData.prop('id').value()}
-
через константне значення UUID напряму —
/b45b90c0-c53d-4fd3-aa82-02e8e7392345
.
-
-
-
Цей випадок не вимагає додаткових request-параметрів, окрім параметрів шляху (path params), а отже блоки Request parameters та Payload залиште порожніми.
-
Розгорніть блок X-Access-Token та вкажіть введіть токен доступу до ресурсу:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для токена доступу. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть токен доступу. Наприклад,${completer('taskId').accessToken}
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
).
-
-
Розгорніть блок Result variable вкажіть назву змінної процесу, до якої необхідно записати результат (за замовчуванням —
response
):-
Активуйте позначку
Local Variable Assignment
→ON
. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть назву результівної змінної (за замовчуванням —response
).У відповідь на GET-запит сервіс повертає ресурс за його ID.
Приклад 4. Приклад тіла відповіді згідно з REST API реєстру{ "ownershipId": "b45b90c0-c53d-4fd3-aa82-02e8e7392345", "code": "string", "name": "string" }
-
-
-
- Пошук даних за критеріями
-
Цей випадок описує приклад отримання списку ресурсів через запит до ендпоінту, що згенерований на базі відповідного представлення (Search Condition) у Фабриці даних.
Для налаштування шаблону делегата в Camunda Modeler, необхідно виконати наступні кроки:
-
Створіть Service Task.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
, оберіть відповідний шаблон Connect to data factory зі списку та натиснітьApply
для підтвердження. -
Сконфігуруйте обраний шаблон:
-
У полі
Name
вкажіть назву задачі. Наприклад,Пошук даних за критеріями (GET)
. -
Розгорніть блок Method у секції Custom Fields та оберіть з випадного списку HTTP-метод
GET
для взаємодії з Фабрикою даних. -
Розгорніть блок Path та вкажіть шлях до ресурсу у Фабриці даних, тобто назву ендпоінту, до якого необхідно звернутися:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для ендпоінту. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
вкажіть ресурс. Наприклад,/staff-equal-constant-code
.-
Назва ресурсу відповідає назві ендпоінту для Search Condition у Фабриці даних.
-
Назву ресурсу необхідно вказувати через косу риску (
/
) як префікс.
-
-
-
Цей випадок вимагає налаштування додаткових параметрів запита — query-параметрів. Розгорніть блок Request parameters та вкажіть query-параметри як пари ключ-значення (Map).
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну ендпоінту для Search Condition. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —Map
. -
У полі
Variable Assignment Value
введіть ключ пошуку —constantCode
та його значення —${submission('formId').formData.prop('staffStatusCode').value()}
.У нашому випадку значення ключа пошуку
constantCode
передається через функціюsubmission()
(детальніше про використання JUEL-функцій у бізнес-процесах — за посиланням.). Інші параметри є опціональними.Приклад 5. Приклад query-параметрів запита у форматі JSON згідно з REST API реєстру{ "offset": 0, "constantCode": "string", "limit": 0 }
-
-
Розгорніть блок X-Access-Token та вкажіть введіть токен доступу до ресурсу:
-
Активуйте позначку
Local Variable Assignment
→ON
. Це дозволить створити локальну змінну для токена доступу. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть токен доступу. Наприклад,${completer('taskId').accessToken}
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
).
-
-
Розгорніть блок Result variable вкажіть назву змінної процесу, до якої необхідно записати результат (за замовчуванням —
response
):-
Активуйте позначку
Local Variable Assignment
→ON
. -
У полі
Variable Assignment Type
оберіть з випадного списку тип призначення змінної —String or Expression
. -
У полі
Variable Assignment Value
введіть назву результівної змінної (за замовчуванням —response
).У відповідь на GET-запит сервіс повертає масив об’єктів/ресурсів за критеріями пошуку.
Приклад 6. Приклад тіла відповіді від сервісу згідно з REST API реєстру[ { "staffStatusId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "constantCode": "string", "name": "string" } ]
-
-
-
2.2.24.3. Налаштування взаємодії з PUT-ендпоінтом
HTTP-метод PUT
використовується для оновлення сутності/ресурсу в базі даних реєстру. Використовується для зміни наявного ресурсу за вказаним ID.
Принцип налаштування делегата для оновлення сутності є ідентичним до Налаштування взаємодії з POST-ендпоінтом за декількома винятками:
Приклад 7. Код відповіді та його опис згідно з REST API реєстру
|
2.2.24.4. Налаштування взаємодії з DELETE-ендпоінтом
HTTP-метод DELETE
використовується для видалення сутності/ресурсу в базі даних реєстру. Використовується для видалення ресурсу за вказаним ID.
Принцип налаштування делегата для видалення сутності є ідентичним до Налаштування взаємодії з PUT-ендпоінтом за двома винятками:
|
2.2.24.5. Налаштування взаємодії з PATCH-ендпоінтом
HTTP-метод PATCH
використовується для часткового оновлення сутності/ресурсу в базі даних реєстру. Використовується для модифікації конкретних параметрів ресурсу за вказаним ID.
Принцип налаштування делегата для часткового оновлення сутності є ідентичним до Налаштування взаємодії з PUT-ендпоінтом за одним винятком:
|
2.2.25. Інтеграція із зовнішніми системами (Connect to external system v2)
Бізнес-назва інтеграційного розширення: Connect to external system v2. Службова назва інтеграційного розширення: Назва файлу у бібліотеці розширень: externalSystemConnectorDelegateV2.json. |
Загальне інтеграційне розширення-делегат, також відоме як REST Connector, надає можливість взаємодіяти із зовнішніми системами через REST API й налаштовується у сервісних задачах (Service Task) бізнес-процесу за допомогою шаблону Connect to external system v2.
При налаштуванні делегата у додатку Camunda Modeler, переконайтеся, що папка із застосунком resources > element-templates містить файл externalSystemConnectorDelegateV2.json. |
Детальніше про застосування REST-конектора у бізнес-процесах ви можете переглянути на сторінці Інтеграція із зовнішніми сервісами за допомогою REST-конектора. |
2.3. Типові розширення для задач на відправлення повідомлень (Send Task)
2.3.1. Відправлення повідомлень користувачу (Send User Notification)
Розширення Send User Notification — делегат для відправлення повідомлень отримувачам послуг електронною поштою, з використанням заданого шаблону в HTML-вигляді.
Делегат застосовується до задач типу Send Task.
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить sendUserNotification.json |
Для налаштування шаблону виконайте наступні кроки:
-
Створіть Send Task.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
та оберіть шаблон (template) делегата — Send User Notification. Для підтвердження натиснітьApply
. -
Виконайте подальші налаштування:
-
У полі
name
вкажіть назву задачі (наприклад,Відправка email користувачу
). -
У полі
Recipient
вкажіть унікальний ідентифікатор —<username>
отримувача повідомлення (наприклад,${initiator().userName}
). -
У полі
Subject
вкажіть текстову назву теми повідомлення (наприклад,Email successfully generated
). -
У полі
Notification message template
— вкажіть унікальну назву FreeMarker-шаблону для формування тіла повідомлення, яка відповідає назві директорії шаблону відповідно до структури <registry-regulation>/notifications/<channel>/<template_name>/*.* (наприклад,add-lab-template
). -
У полі
Notification template model
— вкажіть набір даних для генерації тіла повідомлення на базі шаблону (наприклад,${templateModel}
).
-
2.4. Типові розширення для виклику глобальних підпроцесів (Call Activity)
Каталог розроблених шаблонів для налаштування делегатів зберігається у сховищі коду Gerrit, в окремому репозиторії business-process-modeler-extensions → element-templates. |
Особливості використання Call Activity у бізнес-процесах дивіться за посиланням. |
2.4.1. Делегат виклику глобального підпроцесу (Call Activity)
Розширення Call Activity — загальний делегат для виклику глобального підпроцесу, що налаштовується за допомогою розробленого однойменного шаблону Call Activity (callActivity.json).
Розширення використовується, коли необхідно з одного бізнес-процесу викликати зовнішній підпроцес.
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить файл callActivity.json. |
Існують певні обмеження щодо кількості рівнів вкладеності бізнес-процесів при викликах зовнішніх підпроцесів за допомогою делегата Call Activity. Для правильної роботи функціональності виклику зовнішніх підпроцесів через Call Activity, використовуйте не більше 3-х рівнів вкладеності бізнес-процесів, тобто основний процес, глобальний підпроцес 1-го рівня та глобальний підпроцес 2-го рівня. |
Налаштування шаблону
-
Створіть Call Activity.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
, оберіть відповідний шаблон Call Activity зі списку та натиснітьApply
для підтвердження. -
Виконайте подальші налаштування:
-
У полі
Name
вкажіть назву задачі (наприклад,call-activity-task
). -
У полі
Called Element
вкажіть ідентифікатор стороннього процесу або підпроцесу, що викликатиметься (наприклад,called-process
). -
У полі
Input data
вкажіть вхідні дані, які необхідно передати бізнес-процесу, що викликається. Параметри мають передаватися у вигляді пар ключ-значення (наприклад,${payload}
). -
У полі
Output variable name
вкажіть назву змінної, до якої необхідно записати дані (payload), отримані в результаті виконання підпроцесу, що викликається (наприклад,callActivityOutput
).Якщо підпроцес, що викликали, продукує якісь дані на виході, він запише ці дані до вказаної змінної. Далі, якщо є потреба використати отримані дані в основному процесі, то необхідно звернутися до змінної, де ці дані зберігаються.
-
2.4.2. Делегат виклику підпроцесу для перевірки статусу витягу (Check excerpt status)
Розширення Check excerpt status — специфікований делегат для виклику підпроцесу перевірки статусу витягу, що налаштовується за допомогою розробленого однойменного шаблону Check excerpt status (checkExcerptStatusCallActivity.json).
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить файл checkExcerptStatusCallActivity.json. |
Налаштування шаблону
-
Створіть Call Activity.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
, оберіть відповідний шаблон Check excerpt status зі списку та натиснітьApply
для підтвердження. -
Виконайте подальші налаштування:
-
У полі
Name
вкажіть назву задачі (наприклад,call-activity-task
). -
У полі
Input excerpt identifier
вкажіть ID витягу, який необхідно передати бізнес-процесу, що викликається (наприклад,${excerptIdentifier}
). -
У полі
Output variable name
вкажіть назву змінної, до якої необхідно зберегти статус витягу, отриманий в результаті виконання підпроцесу, що викликається (наприклад,excerptStatusOutput
).Якщо підпроцес, що викликали, продукує якісь дані на виході (тут — статус витягу), він запише ці дані до вказаної змінної. Далі, якщо є потреба використати отримані дані в основному процесі, то необхідно звернутися до змінної, де ці дані зберігаються.
-
Всі інші атрибути, як то Called Element , CallActivity Type тощо, необхідні для налаштування Call Activity вручну, без використання шаблону, визначаються автоматично, "під капотом".
|