Конектор до фабрики даних (Connect to data factory)
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний огляд
Розширення 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. Налаштування взаємодії з 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}
, до якої були збережені дані в одній із попередніх задач бізнес-процесу.Приклад 1. Схема тіла запита згідно з 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
-запит. В результаті повертається лише код відповіді та його опис.Приклад 2. Код відповіді та його опис згідно з REST API реєстру201 OK, ресурс успішно створено
-
-
3. Налаштування взаємодії з 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.
Приклад 3. Приклад тіла відповіді згідно з 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-функцій у бізнес-процесах — за посиланням.). Інші параметри є опціональними.Приклад 4. Приклад 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-запит сервіс повертає масив об’єктів/ресурсів за критеріями пошуку.
Приклад 5. Приклад тіла відповіді від сервісу згідно з REST API реєстру[ { "staffStatusId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "constantCode": "string", "name": "string" } ]
-
-
-
4. Налаштування взаємодії з PUT-ендпоінтом
HTTP-метод PUT
використовується для оновлення сутності/ресурсу в базі даних реєстру. Використовується для зміни наявного ресурсу за вказаним ID.
Принцип налаштування делегата для оновлення сутності є ідентичним до Налаштування взаємодії з POST-ендпоінтом за декількома винятками:
Приклад 6. Код відповіді та його опис згідно з REST API реєстру
|
5. Налаштування взаємодії з DELETE-ендпоінтом
HTTP-метод DELETE
використовується для видалення сутності/ресурсу в базі даних реєстру. Використовується для видалення ресурсу за вказаним ID.
Принцип налаштування делегата для видалення сутності є ідентичним до Налаштування взаємодії з PUT-ендпоінтом за двома винятками:
|
6. Налаштування взаємодії з PATCH-ендпоінтом
HTTP-метод PATCH
використовується для часткового оновлення сутності/ресурсу в базі даних реєстру. Використовується для модифікації конкретних параметрів ресурсу за вказаним ID.
Принцип налаштування делегата для часткового оновлення сутності є ідентичним до Налаштування взаємодії з PUT-ендпоінтом за одним винятком:
|