Каталог типових розширень до бізнес-процесів
| Ця сторінка застаріла і незабаром буде видалена. Актуальні інструкції доступні у розділі Інтеграційні розширення бізнес-процесів. | 
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[1].- 
знайдіть папку 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. Розширення для делегата[2] цифрового підпису 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 вручну, без використання шаблону, визначаються автоматично, "під капотом". | 




