Створення сутності у Фабриці даних: Create entity in data factory
1. Загальна інформація
Інтеграційне розширення Create entity in data factory дозволяє налаштовувати завдання для створення нових сутностей у базі даних в рамках бізнес-процесу. Це розширення допомагає автоматизувати процеси збереження даних до БД, забезпечуючи належне оброблення запитів та передачу даних між процесами. Розширення додає різні властивості до завдання типу Service Task.
| Назва | Пояснення |
|---|---|
Бізнес-назва інтеграційного розширення |
Create entity in data factory |
Службова назва інтеграційного розширення |
|
Назва файлу у бібліотеці розширень |
dataFactoryConnectorCreateDelegate.json |
Розширення Create entity in data factory використовується, коли необхідно створити новий запис з певними даними у базі даних.
2. Перед початком
|
Якщо ви використовуєте функціональність Кабінету адміністратора регламентів для розробки реєстру, вам не потрібно встановлювати типові розширення, додаткові зовнішні застосунки та плагіни. Портал містить усе необхідне вбудоване з коробки. При моделюванні бізнес-процесів із використанням сторонніх застосунків, важливо інтегрувати каталог типових розширень з нашого репозиторію. Завітайте до business-process-modeler-extensions, щоб завантажити необхідні файли. Наприклад, для таких інструментів, як Camunda Modeler, у вашій теці /element-templates мають бути включені відповідні JSON-файли. Для детальних інструкцій, будь ласка, перегляньте Встановлення типових розширень. |
3. Налаштування
Делегат Create entity in data factory призначений для використання у завданнях типу Service Task бізнес-процесу. Він дозволяє налаштувати збереження даних до БД.
Створення сутності у Фабриці даних відбувається за допомогою POST-метода.
|
3.1. Налаштування завдання
-
Створіть завдання типу Service Task у вашому бізнес-процесі.
-
Назвіть завдання, наприклад,
Збереження даних до БД. -
Застосуйте шаблон делегата, обравши Create entity in data factory зі списку в налаштуваннях завдання.

3.2. Налаштування делегата
Виконайте наступні налаштування:
- Resource
-
У полі Resource вкажіть назву ендпоінту / таблиці, в яку будуть зберігатися дані. Наприклад,
entity-build-acts. - Payload
-
У полі Payload введіть дані для створення запису:
${payload}. Це забезпечить передачу необхідних даних у задачу.Дані для створення запису можна отримати скриптом, сформувати JSON-об’єкт та передати у полі Payload у вигляді змінної.
Наприклад, це може бути об’єкт, що містить інформацію про будівлю:
def formDataForm = submission('UserTask_SignDataBuildInfo').formData def buildTypeId = formDataForm.prop('buildType').prop("buildTypeId").value() def data = [:] data['buildType'] = buildTypeId; data['buildNumber'] = formDataForm.prop('buildNumber').value() data['sectionNumber'] = formDataForm.prop('sectionNumber').value() data['flatNumber'] = formDataForm.prop('flatNumber').value() def payload = S(data, 'application/json') set_transient_variable('payload', payload)Пояснення роботи скрипту, який формує об’єкт
payload:-
Отримання даних форми:
def formDataForm = submission('UserTask_SignDataBuildInfo').formDataЦей рядок коду отримує дані з форми, яка була заповнена користувачем у завданні
UserTask_SignDataBuildInfo. Дані форми зберігаються у зміннійformDataForm. -
Отримання конкретного значення з форми:
def buildTypeId = formDataForm.prop('buildType').prop("buildTypeId").value()Цей рядок отримує значення властивості
buildTypeId, яка знаходиться всередині властивостіbuildType. Це значення зберігається у зміннійbuildTypeId. -
Формування об’єкта
data:def data = [:] data['buildType'] = buildTypeId; data['buildNumber'] = formDataForm.prop('buildNumber').value() data['sectionNumber'] = formDataForm.prop('sectionNumber').value() data['flatNumber'] = formDataForm.prop('flatNumber').value()Тут створюється порожній об’єкт
dataу вигляді мапи (словника). Далі у цю мапу додаються наступні поля:-
buildTypeз отриманим значеннямbuildTypeId. -
buildNumberз значенням поляbuildNumberз форми. -
sectionNumberз значенням поляsectionNumberз форми. -
flatNumberз значенням поляflatNumberз форми.
-
-
Створення об’єкта
payloadу форматі JSON:def payload = S(data, 'application/json')Тут об’єкт
dataперетворюється у формат JSON та зберігається у зміннійpayload. -
Встановлення змінної
payloadяк транзитної:set_transient_variable('payload', payload)Цей рядок зберігає змінну
payloadяк транзитну змінну, що дозволяє використовувати її у подальших кроках процесу.
Таким чином, скрипт отримує дані з форми, формує об’єкт
payloadу форматі JSON, який містить необхідні дані для створення запису в базі даних, та зберігає цей об’єкт як транзитну змінну для подальшого використання у процесі.Дані, що передаються для створення запису, повинні мати відповідний формат:
Приклад. Тіло POST-запита{ "name": "string", "active": true, "buildTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } -
- X-Access-Token
-
У полі X-Access-Token вкажіть токен доступу користувача, під яким виконується операція. Цей токен забезпечує повноваження виконавця задачі щодо доступу до даних.
-
Наприклад, вкажіть токен ініціатора процесу через JUEL-функцію
initiator(), використавши методaccessToken:${initiator().accessToken} -
Альтернативно, ви можете вказати токен виконавця останнього користувацького завдання. Для цього ви можете використати JUEL-функцію
completer(), передавши ID попередньої задачі та використавши методaccessToken. Наприклад:${completer('UserTask_SignDataBuildInfo').accessToken}-
completer()— назва JUEL-функції. -
'UserTask_SignDataBuildInfo'— ID попередньої задачі користувача. -
accessToken— метод, який передає JWT-токен користувача.
-
-
- X-Digital-Signature source
-
У полі X-Digital-Signature source вкажіть джерело цифрового підпису. Це поле вказує на Ceph-документ із цифровим підписом даних КЕП на стороні користувача (див. детальніше про підпис КЕП у делегатах Підписання даних КЕП надавача послуг: Officer Sign Task та Підписання даних КЕП отримувача послуг: Citizen Sign Task). Функція
sign_submission()та методsignatureDocumentIdдозволяють отримати підписані дані з UI-форми та передати ID Ceph-документа. Наприклад:${sign_submission('UserTask_SignDataBuildInfo').signatureDocumentId}-
sign_submission— назва JUEL-функції. -
'UserTask_SignDataBuildInfo'— ID завдання користувача, із даними, на які накладено КЕП. -
signatureDocumentId— метод, який дозволяє отримати ID Ceph-документа, в якому зберігаються підписані КЕП дані.
-
- X-Digital-Signature-Derived source
-
У полі X-Digital-Signature-Derived source вкажіть джерело системного цифрового підпису (цифрової печатки). Це поле вказує на Ceph-документ із системним цифровим підписом (цифровою печаткою), накладеним на дані. Наприклад,
${system_signature_key}.Значення ключа/ідентифікатора системного підпису можна отримати після підпису даних за допомогою делегата Підписання даних системним ключем: System signature by DSO service. Результат виконання операції підписання даних системним ключем буде збережено до вказаної змінної, наприклад,
system_signature_key. Надалі ви зможете використати змінну в іншому місці процесу, зокрема під час збереження даних до БД або для генерування витягу тощо. - Result variable
-
У полі Result variable задайте ім’я для змінної, в якій буде зберігатися відповідь від операції створення сутності, наприклад,
response.
|
Після успішного завершення операції, делегат отримує у відповідь HTTP-код:
Тіло відсутнє. |
4. Приклад
Ось приклад, який показує, як відповідний делегат використовується у бізнес-процесі:
Де можна знайти приклад бізнес-процесу?Адміністратор Платформи може розгорнути для вас демо-реєстр — еталонний реєстр, що містить референтні та інші приклади файлів для створення цифрового регламенту. Він містить різноманітні елементи для розробки моделі даних, бізнес-процесів, UI-форм, аналітичної звітності, витягів, сповіщень, зовнішніх інтеграцій та багато іншого. Еталонний регламент з прикладами для України зберігається в репозиторії Детальну інструкцію щодо розгортання демо-реєстру та отримання референтних прикладів моделювання ви знайдете на сторінці Розгортання демо-реєстру із референтними прикладами. Create entity in data factory — делегат, який використовується у всіх бізнес-процесах, які потребують збереження даних до БД. Ви можете використати один із багатьох прикладів процесів за пошуком по ключовим словам — reference-search-type-or. У Кабінеті користувача бізнес-процес буде доступний у розділі Доступні послуги. |