Створення сутності у Фабриці даних: Create entity in data factory

1. Загальна інформація

Інтеграційне розширення Create entity in data factory дозволяє налаштовувати завдання для створення нових сутностей у базі даних в рамках бізнес-процесу. Це розширення допомагає автоматизувати процеси збереження даних до БД, забезпечуючи належне оброблення запитів та передачу даних між процесами. Розширення додає різні властивості до завдання типу Service Task.

Таблиця 1. Короткі відомості про делегат
Назва Пояснення

Бізнес-назва інтеграційного розширення

Create entity in data factory

Службова назва інтеграційного розширення

${dataFactoryConnectorCreateDelegate}

Назва файлу у бібліотеці розширень

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. Налаштування завдання

  1. Створіть завдання типу Service Task у вашому бізнес-процесі.

  2. Назвіть завдання, наприклад, Збереження даних до БД.

  3. Застосуйте шаблон делегата, обравши Create entity in data factory зі списку в налаштуваннях завдання.

    create entity 2

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:

  1. Отримання даних форми:

    def formDataForm = submission('UserTask_SignDataBuildInfo').formData

    Цей рядок коду отримує дані з форми, яка була заповнена користувачем у завданні UserTask_SignDataBuildInfo. Дані форми зберігаються у змінній formDataForm.

  2. Отримання конкретного значення з форми:

    def buildTypeId = formDataForm.prop('buildType').prop("buildTypeId").value()

    Цей рядок отримує значення властивості buildTypeId, яка знаходиться всередині властивості buildType. Це значення зберігається у змінній buildTypeId.

  3. Формування об’єкта 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 з форми.

  4. Створення об’єкта payload у форматі JSON:

    def payload = S(data, 'application/json')

    Тут об’єкт data перетворюється у формат JSON та зберігається у змінній payload.

  5. Встановлення змінної 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.

Unresolved include directive in modules/registry-develop/pages/bp-modeling/bp/element-templates/service-task-templates/entity-management/create-entity.adoc - include::registry-develop:partial$snippets/element-templates/delegate-http-code-response.adoc[]

4. Приклад

Ось приклад, який показує, як відповідний делегат використовується у бізнес-процесі:

create entity 1
Зображення 1. Приклад. Налаштування делегата Create entity in data factory
Де можна знайти приклад бізнес-процесу?

Адміністратор Платформи може розгорнути для вас демо-реєстр — еталонний реєстр, що містить референтні та інші приклади файлів для створення цифрового регламенту. Він містить різноманітні елементи для розробки моделі даних, бізнес-процесів, UI-форм, аналітичної звітності, витягів, сповіщень, зовнішніх інтеграцій та багато іншого.

Детальну інструкцію щодо розгортання демо-реєстру та отримання референтних прикладів моделювання ви знайдете на сторінці Розгортання демо-реєстру із референтними прикладами.

Create entity in data factory — делегат, який використовується у всіх бізнес-процесах, які потребують збереження даних до БД.

Ви можете використати один із багатьох прикладів процесів за пошуком по ключовим словам — reference-search-type-or.

У Кабінеті користувача бізнес-процес буде доступний у розділі Доступні послуги.