Моделювання бізнес-процесу для завантаження даних з CSV-файлу масивом у БД

Можливість завантаження даних масивом до БД дозволяє створювати бізнес-процеси, завдяки яким користувачі реєстру можуть вносити масив даних одним файлом, наприклад, наповнення довідників реєстру або дозавантаження даних.

Для того, щоб змоделювати бізнес-процес з можливістю імпорту даних з CSV-файлу масивом у БД виконайте наступні дії.

Скористайтеся готовою BPMN-схемою тестового бізнес-процесу та формами Завантаження даних про дипломи (csv file) і Підпис даних про дипломи (csv file), щоб побачити більше контексту для подальшого використання.

1. Моделювання бізнес-процесу

Змоделюйте бізнес-процес згідно з інструкцією за посиланням.

Передумови:

Перед моделюванням процесу та налаштуванням делегата Batch creation of entities in data factory v2, переконайтеся, що папка /element-templates застосунку Camunda Modeler містить файл dataFactoryConnectorBatchCreateDelegateV2.json.

В іншому випадку скористайтеся інструкцією для завантаження делегата, що доступна за посиланням.

Використання делегата Batch creation of entities in data factory v2 можливо лише для таблиць, що мають атрибут ext:bulkLoad="true" в середині тегу <createTable>.

  1. Створіть користувацьку задачу з використанням форми, яка містить відповідний компонент для завантаження файлу.

    • у полі Name вкажіть назву задачі;

    • у полі Form key вкажіть службову назву форми;

    • у полі Assignee вкажіть ${initiator} - користувач, який ініціював виконання цього бізнес-процесу.

    loading data from csv 01

  2. Створіть користувацьку задачу з використанням форми для підписання даних.

    • у полі Name вкажіть назву задачі;

    • у полі Form key вкажіть службову назву форми для підписання даних;

    • у полі Assignee вкажіть ${initiator} - користувач, який ініціював виконання цього бізнес-процесу;

    • у полі Form data pre-population вкажіть змінну ${submission('addCsvFileActivity').formData}.

    loading data from csv 02

  3. Створіть задачу скриптування для підготовки даних до запису.

    • у полі Name вкажіть назву задачі;

    • у полі Script Format оберіть groovy;

    • у полі Script Type оберіть InlineScript;

    • у полі Script вкажіть сам скрипт, наприклад, у нашому випадку:

      set_transient_variable('payload', submission('signCsvFileActivity').formData.prop('csvFile').elements().first())

    loading data from csv 03

  4. Створіть сервісну задачу для збереження даних.

    • натисніть Open Catalog та оберіть делегат Batch creation of entities in data factory v2, після чого натисніть Apply;

      loading data from csv 05

    • у полі Name вкажіть назву задачі;

    • У полі Resource вкажіть ресурс, назву ендпоінту для таблиці, куди зберігатимуться дані;

    • у полі Upload type оберіть CSV;

    • у полі Payload введіть дані для створення - ${payload};

    • у полі X-Access-Token зазначте токен доступу користувача до системи, під яким виконується операція, наприклад: ${completer('signCsvFileActivity').accessToken};

    • у полі X-Digital-Signature source вкажіть джерело цифрового підпису, наприклад: ${sign_submission('signCsvFileActivity').signatureDocumentId};

    • у полі Result variable вкажіть будь-яке ім’я для вихідного параметра (за замовчуванням — response).

    loading data from csv 04

2. Моделювання форм

Змоделюйте форми згідно з інструкцією за посиланням.

2.1. Форма для завантаження даних

  1. Вкажіть Бізнес-назву форми та Службову назву форми.

    loading data from csv 06

  2. Перейдіть на вкладку Конструктор. Оберіть розділ Оновлені. Виберіть компонент Content та перетягніть його до панелі моделювання.

    loading data from csv 07

    Рекомендуємо обов’язково на формі для завантаження файлу змоделювати підказку для заповнення файлу (наприклад, з компонентом Content), на якій вказати описання вимог до файлу, що завантажується.

  3. Додайте опис вимог до файлу та натисніть Save.

    loading data from csv 08

    На цей час запроваджено наступні обмеження для файлу:

    • можливо завантажити за один раз тільки один файл;

    • формат файлу лише CSV;

    • кодування — UTF-8;

    • максимальна кількість записів — 50.

    • максимальний розмір файлу — 100 MB. Це ліміт на обробку даних для збереження, або зміни (загальний input-ліміт).

    Вимоги до даних у файлі:

    • роздільник даних у файлі — ";" (крапка з комою);

    • формат полів у файлі повинен відповідати полям в базі даних;

    • якщо завантажуються дані до довідника, то кожен запис обов’язково повинен містити унікальний ключ відповідного формату.

  4. В розділі Оновлені оберіть компонент File та перетягніть його до панелі моделювання.

    loading data from csv 09

  5. У полі Label вкажіть назву компонента.

    loading data from csv 10

  6. Перейдіть до вкладки File. У полі File Pattern вкажіть значення *.csv. Нижче на формі зазначте мінімальне та максимально допустиме значення розміру файлу у відповідних полях File Minimum Size та File Maximum Size (не більше 1 MB).

    loading data from csv 11

  7. Перейдіть на вкладку Validation. Встановіть прапорець Required та вкажіть назву таблиці, до якої буде виконуватися запис даних у полі Resource for validation.

    loading data from csv 12

  8. Перейдіть на вкладку API. У полі Property Name вкажіть csvFile. Натисніть Save для збереження змін.

    loading data from csv 13

  9. Додайте та налаштуйте компонент Button.

    loading data from csv 16

  10. У правій верхній частині сторінки натисніть Створити форму.

    loading data from csv 14

2.2. Форма для підписання даних

  1. Вкажіть Бізнес-назву форми та Службову назву форми.

    loading data from csv 15

  2. Перейдіть на вкладку Конструктор. Оберіть розділ Оновлені. Виберіть компонент File та перетягніть його до панелі моделювання.

    loading data from csv 17

  3. Налаштуйте компонент за аналогією попереднього розділу, за винятком того, що форма повинна бути доступна лише для перегляду. Для цього на вкладці Display встановіть прапорець Disabled та змініть назву компонента.

    loading data from csv 18

  4. Додайте та налаштуйте компонент Button.

    loading data from csv 19

  5. У правій верхній частині сторінки натисніть Створити форму.

    loading data from csv 20

Застосуйте зміни для змодельованих форм, для цього перейдіть до розділу Огляд версії та натисніть кнопку Застосувати зміни до мастер-версії.

loading data from csv 21

3. Приклад бізнес-процесу у Кабінеті посадової особи

  1. Перейдіть до відповідної послуги, що була змодельована, у Кабінеті посадової особи у меню Доступні послуги.

    loading data from csv 22

  2. Додайте файл, що відповідає встановленим вимогам та натисніть Далі.

    loading data from csv 23

    Під час завантаження, спрацьовує попередня валідація даних у CSV-файлі одразу на формі.

    У випадку помилки, система попереджує користувача про невідповідність формату ще до переходу на UI-форму підписання даних КЕП.

    Наразі є 3 типи перевірок CSV-файлу при завантаженні даних до БД:
    1. Перевірка формату (розширення) та кодування.

      • Формат — CSV, кодування — UTF-8.

        loading data from csv 27
    2. Перевірка кількості записів у файлі.

      • Максимально допустима кількість записів у файлі — 50.

        loading data from csv 28
    3. Перевірка структури даних, що завантажуються.

      • Роздільник — крапка з комою (;).

      • Назви колонок у файлі мають збігатися із назвами колонок у БД.

      • Формат значення полів має відповідати формату бази даних.

        loading data from csv 29
  3. На етапі підписання даних попередньо завантажений файл доступний лише для перегляду. Внизу сторінки заповніть параметри ключа та натисніть Зчитати.

    loading data from csv 24

  4. Щоб накласти цифровий підпис натисніть Підписати.

    loading data from csv 25

  5. Виконаний бізнес-процес завантаження даних з форми масивом (csv file) фіксується у розділі Мої послугиНадані послуги.

    loading data from csv 26