Завдання 3. Моделювання бізнес-процесу з інтеграцією

ЗМІСТ

1. Мета завдання

Виконання цього завдання має на меті:
  • Навчити моделювати бізнес-процес, що має інтеграцію з фабрикою даних.

  • Навчити моделювати гілки у бізнес-процесі.

  • Навчити моделювати уніфіковані кроки у бізнес-процесах за допомогою Call Activity.

  • Навчити моделювати форми та налаштовувати компоненти Select для отримання даних із фабрики даних.

2. Передумови

Перед проходженням завдання необхідно виконати наступні передумови:

  1. Встановіть додаток Camunda Modeler і типові розширення до нього.

  2. Ознайомтеся із компонентами FormIO для моделювання форм.

  3. Більш детально ознайомтеся із компонентами бізнес-процесу за посиланням

  4. Ознайомтеся з логікою роботи Call Activity за посиланням.

3. Процес виконання завдання

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

На етапі моделювання бізнес-процесу необхідно створити та зберегти відповідну BPMN-діаграму.

Використовуйте файл add-lab.bpmn із готовою схемою бізнес-процесу для прикладу.

3.1.1. Етапи моделювання бізнес-процесу

В рамках цього завдання моделювальник має створити бізнес-процес, що складається з наступних етапів:

Важливо! Після проходження всіх етапів, не забудьте зберегти змодельовану схему бізнес-процесу до відповідної папки з регламентом реєстру (див. Збереження змодельованої схеми бізнес-процесу).

3.1.2. Створення пулу для бізнес-процесу

Найперше, змоделюйте пул для бізнес-процесу. Для цього виконайте кроки, подані нижче:

Моделювання діаграми бізнес-процесу має відбуватися в рамках елемента Create Pool/Participant.
  1. Відкрийте додаток Camunda Modeler та створіть нову діаграму BPMN. Для цього у лівому верхньому куті натисніть меню FileNew FileBPMN Diagram:

    bp 1

  2. На панелі інструментів зліва знайдіть елемент Create pool/Participant та перетягніть його до панелі моделювання:

    bp 2

  3. Заповніть наступні поля відповідними значеннями:

    • у полі Name введіть Створення лабораторії;

    • у полі Process id введіть add-lab;

    • у полі Process name вкажіть Створення лабораторії.

    task 3 1 bp

3.1.3. Створення початкової події

Створіть початкову подію. Для цього виконайте наступні кроки:

  1. На панелі інструментів, зліва, знайдіть елемент (коло) CreateStartEvent та перетягніть його до панелі моделювання:

    bp keys create start event
    bp keys create start event 1
  2. На панелі налаштувань справа заповніть наступні параметри відповідними значеннями:

    • у полі Name введіть Початок;

    • у полі Initiator введіть initiator.

    task 3 2 bp

3.1.4. Створення користувацької задачі для внесення даних про лабораторію

Далі створіть користувацьку задачу, призначену для додавання даних користувачем. Для цього виконайте наступні кроки:

  1. Оберіть коло з початковою подією, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task:

    task 3 3 bp append task

  1. Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача):

    task 3 3 bp user task

  2. На панелі налаштувань справа натисніть Open Catalog, оберіть шаблон User Form (Користувацька форма) та натисніть Apply для підтвердження:

    task 3 3 bp open catalog

    task 3 3 bp user form

  1. На панелі налаштувань справа заповніть наступні поля:

    • у полі Id зазначте addLabFormActivity;

    • у полі Name введіть Додати інформацію про лабораторію;

    • у полі Form key введіть add-lab-bp-add-lab;

    • у полі Assignee вкажіть ${initiator}.

    task 3 3 bp

3.1.5. Моделювання сервісної задачі для створення бізнес ключа

  1. Створіть новий Service Task (Сервісна задача):

    0

  2. Із каталогу розширень (Open Catalog) виберіть шаблон Define process business key.

    task 3 04

  3. На панелі налаштувань задайте наступні поля (назву задачі та скрипт для генерування бізнес ключа):

    • у полі Name введіть Встановити бізнес ключ;

    • у полі Business key введіть:

      ${submission('addLabFormActivity').formData.prop('name').value().concat(' ').concat(submission('addLabFormActivity').formData.prop('edrpou').value())}

    Детальніше ознайомитися з процесом налаштування бізнес-ключів можна за посиланням.

    task 3 05

    За допомогою бізнес-ключа користувач може відрізнити один бізнес-процес від іншого (або одну користувацьку задачу від іншої) в переліку бізнес-задач особистих Кабінетів посадової особи та отримувача послуг.

    bp keys officer portal task

3.1.6. Створення сервісної задачі для пошуку даних про лабораторію

Далі необхідно створити сервісну задачу (Service Task) для пошуку даних про лабораторію. Для цього виконайте наступні кроки:

  1. Створіть новий Service Task (Сервісна задача):

    0

  2. Із каталогу розширень (Open Catalog) виберіть шаблон Search for entities in data factory (Пошук значень у фабриці даних) та натисніть Apply для підтвердження:

    task 3 06

  3. На панелі налаштувань справа заповніть наступні поля:

    • у полі Id введіть searchForLabByNameAndEdrpouActivity;

    • у полі Name має бути вказано Пошук даних про лабораторію (transient var);

    • у розділі Input ParametersResource зазначте наступне:

      • у полі Variable Assignment Type вкажіть String or Expression;

      • у полі Variable Assignment Value вкажіть laboratory-equal-edrpou-name-count.

      task 3 07

    • у розділі Input ParametersSearch Variables вкажіть наступне:

      • у полі Variable Assignment type вкажіть Map.

      • у полі Add Entry додайте параметри name та edrpou, натиснувши на позначку плюса (+) та вкажіть для них відповідні значення:

        Key Value

        name

        ${submission('addLabFormActivity').formData.prop('name').value()}

        edrpou

        ${submission('addLabFormActivity').formData.prop('edrpou').value()}

      task 3 08

    • у розділі Input ParametersX-Access-Token вкажіть наступне:

      • у полі Variable Assignment Type вкажіть String or Expression;

      • у полі Variable Assignment Value вкажіть ${completer('addLabFormActivity').accessToken}.

        Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію completer('<task_id>') для отримання даних користувача, замість initiator().

        Токен доступу береться з АБО ініціатора (наприклад, $initiator().accessToken}), АБО виконавця останньої користувацької задачі (наприклад, ${completer('taskDefinitionId').accessToken}).

        JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.

        Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.

      task 3 6 bp

    • У розділі Output ParametersResult Variable параметр Assign to Process Variable заповніть значенням response:

      task 3 7 bp

3.1.7. Створення та заповнення XOR-шлюзу

Далі необхідно приєднати XOR-шлюз. Для цього виконайте кроки, подані нижче:

  1. Оберіть прямокутник із сервісною задачею Пошук даних про лабораторію (transient var), змодельованою на попередньому етапі, та приєднайте XOR-шлюз, натиснувши іконку Append Gateway:

    task 3 create xor

  2. На панелі налаштувань справа вкажіть ID та назву шлюзу:

    • у полі Id введіть значення isLaboratoryExistGateway;

    • у полі Name введіть значення Дані присутні?.

    task 3 8 bp

3.1.8. Створення гілки з валідаційною помилкою

На цьому етапі необхідно створити гілку з валідаційною помилкою. Для цього виконайте кроки, подані нижче:

  1. Оберіть ромб із XOR-шлюзом Дані присутні?, змодельованим на попередньому етапі, та створіть нову сервісну задачу, натиснувши іконку Append Task:

    task 3 9 bp append task

  2. Зазначте тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task (Сервісна задача):

    task 3 9 bp service task

  3. Натисніть Open Catalog, оберіть шаблон Throw validation error та натисніть Apply для підтвердження:

    task 3 9 bp choose temp

    1. На панелі налаштувань справа заповніть наступні поля:

      • у полі Id введіть throwDuplicateLabValidationError;

      • у полі Name введіть Формування валідаційної помилки.

      • У розділі Input ParametersValidation Errors зазначте наступне:

        • у полі Variable Assignment Type вкажіть тип List;

        • для поля Value додайте наступні значення:

          Значення 1
          {"field": "name", "value": "${submission('addLabFormActivity').formData.prop('name').stringValue().replaceAll("\"", "\\\\\"")}", "message": "Дані про цю лабораторію вже присутні"}
          Значення 2
          {"field": "edrpou", "value": "${submission('addLabFormActivity').formData.prop('edrpou').value()}", "message": "Дані про цю лабораторію вже присутні"}

    task 3 9 bp

    Делегат Throw validation error має можливість виводити декілька повідомлень одночасно.

    У разі формування цієї валідаційно помилки користувач побачить два спливних повідомлення (pop-up) приблизно наступного виду:

    • name: <введене значення name на формі> "Дані про цю лабораторію вже присутні".

    • edrpou: <введене значення edrpou на формі> "Дані про цю лабораторію вже присутні".

  4. На гілці, що прямує від шлюзу Дані присутні? до сервісної задачі Формування валідаційної помилки, потрібно налаштувати наступне:

    • у полі Id введіть isLaboratoryAlreadyExistFlow;

    • у полі Name введіть так;

    • у полі Condition Type введіть тип Expression;

    • у полі Expression введіть ${!response.value.responseBody.elements().isEmpty()}.

    task 3 10 bp

3.1.9. Створення гілки з подальшим продовженням бізнес-процесу

Необхідно на гілці, що прямує від шлюзу Дані присутні? до користувацької задачі Підписати дані про лабораторію (див. нижче Створення користувацької задачі для підпису даних) налаштуйте такі параметри:

  1. У полі Id лишіть значення за замовчуванням.

  2. У полі Name вкажіть ні.

  3. у полі Condition Type вкажіть Expression.

  4. У полі Expression вкажіть ${response.value.responseBody.elements().isEmpty()}.

    task 3 create branch continue bp

3.1.10. Створення користувацької задачі для підпису даних

Необхідно створити користувацьку задачу для підпису даних. Для цього виконайте наступні кроки:

  1. Визначте тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).

  2. Натисніть Open Catalog, оберіть шаблон Officer Sign Task та натисніть Apply для підтвердження.

  3. На панелі налаштувань справа заповніть наступні поля:

    • у полі Id вкажіть signLabFormActivity;

    • у полі Name введіть Підписати дані про лабораторію;

    • у полі Form key введіть add-lab-sign-lab-data;

    • у полі Assignee вкажіть ${initiator};

    • у полі Form data pre-population введіть ${submission('addLabFormActivity').formData}.

    task 3 create user task lab data signing

3.1.11. Створення задачі скриптування "Підготовка даних до запису (transient var)"

Створіть нову задачу скриптування для підготовки даних до запису. Для цього виконайте подальші налаштування:

  1. Оберіть прямокутник із користувацькою задачею, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.

  2. Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Script Task (Задача скриптування).

  3. Виділіть додану задачу скриптування та налаштуйте наступні параметри:

    • у полі Id вкажіть convertSignFormDataToDataFactoryFormatActivity;

    • у полі Name вкажіть Підготовка даних для запису (transient var);

    • у полі Script Format вкажіть тип (мову) скриптування — groovy;

    • у полі Script Type вкажіть тип скрипту InlineScript;

    • у полі Script вставте безпосередньо groovy-скрипт:

      Натисніть, щоб розгорнути або згорнути
      def signedFormData = submission('signLabFormActivity').formData
      
      signedFormData.prop('oblast', signedFormData.prop('oblast').prop('code').value())
      
      signedFormData.prop('koatuuId', signedFormData.prop('koatuu').prop('koatuuId').value())
      signedFormData.deleteProp('koatuu')
      signedFormData.prop('ownershipId', signedFormData.prop('ownership').prop('ownershipId').value())
      signedFormData.deleteProp('ownership')
      
      if (signedFormData.hasProp('premisesFile')
          && !signedFormData.prop('premisesFile').isNull()
          && !signedFormData.prop('premisesFile').elements().isEmpty()) {
          signedFormData.prop('premisesFile', signedFormData.prop('premisesFile').elements()[0])
      } else {
          signedFormData.prop('premisesFile', null as String)
      }
      
      if(signedFormData.hasProp('accreditationFile')
          && !signedFormData.prop('accreditationFile').isNull()
          && !signedFormData.prop('accreditationFile').elements().isEmpty()) {
          signedFormData.prop('accreditationFile', signedFormData.prop('accreditationFile').elements()[0])
      } else {
          signedFormData.prop('accreditationFile', null as String)
      }
      set_transient_variable('dataPayload', signedFormData)

    task 3 create script task prepare data record transient var

3.1.12. Моделювання сервісної задачі для підпису даних системним ключем

Створіть сервісну задачу (Service Task) для підпису даних системним ключем та налаштуйте відповідне інтеграційне розширення. Для цього виконайте кроки, подані нижче:

  1. Оберіть прямокутник зі скриптовою задачею, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.

  2. Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task.

  3. На панелі налаштувань справа натисніть Open Catalog, щоб відкрити список доступних шаблонів делегатів.

  4. З отриманого переліку оберіть шаблон System signature by DSO service, який необхідно використовувати для підписання даних системним ключем.

  5. На панелі налаштувань справа, відкрийте вкладку General та сконфігуруйте параметри делегата:

    • у полі Name вкажіть назву задачі — "Підписати дані системним ключем";

    • у полі Payload передайте дані, на які треба накласти системний підпис — ${dataPayload};

      • у полі X-Access-Token source передайте токен доступу особи, яка наразі виконує задачу з ID 'signLabFormActivity' — ${completer('signLabFormActivity').accessToken};

        Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію completer('<task_id>') для отримання даних користувача, замість initiator().

        Токен доступу береться з АБО ініціатора (наприклад, $initiator().accessToken}), АБО виконавця останньої користувацької задачі (наприклад, ${completer('taskDefinitionId').accessToken}).

        JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.

        Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.

      • у полі Result variable зазначте назву змінної, до якої запишеться цифровий підпис вказаних даних — system_signature_ceph_key.

    task 3 create call activity sign data by system key

3.1.13. Створення сервісної задачі для збереження даних до Фабрики даних

На цьому етапі необхідно створити та налаштувати нову сервісну задачу для збереження даних до фабрики даних. Для цього виконайте кроки, зазначені нижче:

  1. На прикладі Створення сервісної задачі для пошуку даних про лабораторію створіть нову сервісну задачу Зберегти дані до Фабрики даних, натиснувши іконку ключа та обравши з меню пункт Service Task.

  2. Натисніть Open Catalog, оберіть шаблон Create entity in data factory та натисніть Apply для підтвердження:

    task 3 24 bp choose temp

  3. На панелі налаштувань справа сконфігуруйте наступні параметри:

    • у полі Id введіть sendLabToDataFactoryActivity;

    • у полі Name введіть Зберегти дані до Фабрики даних;

    • у полі Resource вкажіть laboratory;

      У цьому прикладі назва ресурсу = назві таблиці laboratory у БД.

      Поле Resource використовується для визначення назви ресурсу (ендпоінт) у фабриці даних, до якого передаються дані.

      Зверніть увагу, що при моделюванні бізнес-процесу необхідно використовувати назви ресурсів через дефіс "-"(замість нижнього підкреслювання “_”, як у БД), що складаються з 2-х і більше слів.

      Наприклад:

      Назва ресурсу у бізнес-процесі: laboratory-test

    • у полі Payload введіть ${dataPayload} дані для збереження;

    • у полі X-Access-Token введіть ${completer('signLabFormActivity').accessToken};

      Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію completer('<task_id>') для отримання даних користувача, замість initiator().

      Токен доступу береться з АБО ініціатора (наприклад, $initiator().accessToken}), АБО виконавця останньої користувацької задачі (наприклад, ${completer('taskDefinitionId').accessToken}).

      JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.

      Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.

    • у полі X-Digital-Signature source введіть ${sign_submission('signLabFormActivity').signatureDocumentId};

    • у полі X-Digital-Signature-Derived source введіть ${system_signature_ceph_key};

    • у полі Result Variable вкажіть response, змінна, до якої записуються відповідь від сервера, якщо така буде.

    task 3 24 bp

3.1.14. Створення сервісної задачі для встановлення результату бізнес-процесу

На цьому етапі необхідно створити та налаштувати сервісну задачу, що встановлюватиме результат бізнес-процесу.

  1. На прикладі Створення сервісної задачі для збереження даних до Фабрики даних змоделюйте нову сервісну задачу Результат виконання "Лабораторія створена", натиснувши іконку ключа та обравши з меню пункт Service Task.

  2. Натисніть Open Catalog, оберіть шаблон Define business process status та натисніть Apply для підтвердження:

    task 3 25 bp choose temp

  3. На панелі налаштувань справа сконфігуруйте наступні параметри:

    • у полі Name вкажіть Результат виконання "Лабораторія створена";

    • у полі Status вкажіть Лабораторія створена!.

    task 3 25 bp

Поле Name має інформативне значення. «Результат виконання "Лабораторія створена!"» буде показано на порталі у полі Статус виконаного бізнес-процесу, повідомляючи нам як завершилось виконання певного бізнес-процесу.

Приклад:

notifications success 01

3.1.15. Створення події завершення бізнес-процесу

На цьому етапі необхідно створити подію, яка завершуватиме основний бізнес-процес.

  1. На прикладі [create-end-event-call-activity] (зовнішнього підпроцесу Call Activity) приєднайте та налаштуйте подію завершення бізнес-процесу.

  2. На панелі налаштувань справа для параметра Name вкажіть значення Лабораторія створена.

task 3 26 bp

В результаті маємо змодельований складний бізнес-процес із налаштуванням та викликом зовнішнього підпроцесу Call Activity.

3.1.16. Збереження змодельованої схеми бізнес-процесу

Після завершення процесу моделювання збережіть отриману схему бізнес-процесу із назвою add-lab.bpmn до регламентної папки bpmn проєкту в Gerrit-репозиторії. Для цього у лівому верхньому куті відкрийте меню FileSave File As.., введіть відповідну назву та шлях.

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

На етапі моделювання форм необхідно створити та прив’язати JSON-форми до попередньо змодельованих задач в рамках бізнес-процесу.

Форми прив’язуються до бізнес-процесів за службовою назвою.

Використовуйте файли add-lab-bp-add-lab.json та add-lab-sign-lab-data.json зі змодельованими формами для прикладу.

3.2.1. Створення форми для внесення даних

Найперше, необхідно створити форму для внесення даних користувачем. Для цього виконайте наступні кроки:

  1. Увійдіть до застосунку Кабінет адміністратора регламентів:

    admin portal form modeling step 1
  2. Створіть нову кандидат-версію Завдання 3:

    task 3 011

    task 3 012

  3. Перейдіть до розділу UI-форм. Щоб створити нову форму для бізнес-процесу, натисніть кнопку Створити нову форму:

    task 3 013

    • У новому вікні, у полі Бізнес-назва форми вкажіть назву, що відповідає назві змодельованої користувацької задачі — Додати інформацію про лабораторію.

    • Заповніть поле Службова назва форми значенням add-lab-bp-add-lab (має відповідати значенню поля Form key тієї ж користувацької задачі).

    task 3 27 forms name

  4. Перейдіть до вкладки Конструктор.

  5. З панелі компонентів зліва перетягніть компонент Text Field до панелі моделювання та виконайте подальші налаштування:

    task 3 27 forms drag text field

    • У новому вікні перейдіть на вкладку Display, заповніть поле Label значенням Назва лабораторії:

      task 3 27 forms

    • Перейдіть на вкладку Validation та встановіть прапорець для параметра Required — true:

      task 3 28 forms

    • Перейдіть на вкладку API та заповніть поле Property Name значенням name.

      Значення поля Property Name повинно бути унікальним.

    • Натисніть кнопку Save для збереження змін:

      task 3 29 forms

    Аналогічно змоделюйте текстові поля (Text Field) для Код ЄДРПОУ або РНОКПП, Адреса, Телефон, Керівник.

  6. З панелі компонентів зліва перетягніть компонент Checkbox до панелі моделювання та виконайте подальші налаштування:

    task 3 30 forms drag checkbox

    • Перейдіть на вкладку Display та заповніть поле Label значенням Наявність акредитації:

      task 3 30 forms

    • Перейдіть на вкладку API та заповніть поле Property Name значенням accreditationFlag.

    • Натисніть кнопку Save для збереження змін:

      task 3 31 forms

  7. З панелі компонентів зліва перетягніть компонент File до панелі моделювання та виконайте подальші налаштування:

    task 3 32 forms drag file

    • Перейдіть на вкладку Display та заповніть поле Label значенням Документи про приміщення:

      task 3 32 forms

    • Перейдіть на вкладку File та заповніть наступні поля:

      • у полі Storage вкажіть Url;

      • у полі Url вкажіть /documents;

        task 3 33 forms

      • у полі вкажіть File Pattern вкажіть application/pdf,image/jpeg,image/png;

      • у полі File Minimum size вкажіть 0KB;

      • у полі File Maximum size вкажіть 50MB.

        task 3 34 forms

    • Перейдіть на вкладку Data та залишіть поле Multiple Values порожнім, тобто зі значенням False:

      task 3 35 forms

    • Перейдіть на вкладку API та заповніть поле Property Name значенням premisesFile.

    • Натисніть кнопку Save для збереження змін:

      task 3 36 forms

  8. З панелі компонентів зліва перетягніть компонент Select до панелі моделювання та виконайте подальші налаштування для отримання інформації з довідника:

    task 3 37 forms drag select

    • Перейдіть на вкладку Display та заповніть поле Label значенням Форма власності:

      task 3 37 forms

    • Перейдіть на вкладку Data та заповніть наступні поля:

      • у полі Data Source Type вкажіть значення URL;

      • у полі Data Source URL вкажіть /officer/api/data-factory/ownership-contains-name,

        де:

        • /officer — вказує, що запит до довідника буде виконано із Кабінету посадової особи;

        • /api/data-factory/ — вказує шлях до фабрики даних;

        • ownership-contains-name — назва критерію пошуку (search condition) для отримання даних із довідника форм власності, що був змодельований та доданий до репозиторію.

      • у полі Value Property вкажіть ownershipId;

        task 3 38 forms

      • у полі Item Template вкажіть <span>{{ item.name }}</span>,

        де name — назва параметра, що повертає критерій пошуку (search condition) та відображатиметься на формі.

        task 3 39 forms

    • На вкладці Validation встановіть прапорець для параметра Required — true;

    • На вкладці API заповніть поле Property Name значенням ownership:

    task 3 40 forms

    • Натисніть кнопку Save для збереження змін.

  9. За аналогією до попереднього кроку, виконайте налаштування для отримання інформації з довідника "Область". З панелі компонентів зліва перетягніть компонент Select до панелі моделювання:

    task 3 37 forms drag select

    • Перейдіть на вкладку Display та заповніть поле Label значенням Область:

      task 3 41 forms

    • Перейдіть на вкладку Data та заповніть наступні поля:

      • у полі Data Source Type вкажіть значення URL;

      • у полі Data Source URL вкажіть /officer/api/data-factory/koatuu-obl-contains-name,

      де:

      • /officer — вказує, що запит до довідника буде виконано із Кабінету посадової особи;

      • /api/data-factory/ — вказує шлях до фабрики даних;

      • koatuu-obl-contains-name — назва критерію пошуку (search condition) для отримання даних із довідника областей, що був змодельований та доданий до репозиторію.

      • у полі Value Property введіть значення code;

        task 3 42 forms

      • у полі Item Template вкажіть <span>{{ item.name }}</span>,

        де name — назва параметра, що повертає критерій пошуку (search condition) та відображатиметься на формі.

      • у полі Refresh Options On зазначте Область (поточне значення буде видалено, коли значення в полі Область зміниться);

      • для поля Clear Value On Refresh Options встановіть прапорець — True.

        task 3 43 forms

    • Перейдіть на вкладку Validation та встановіть прапорець для параметра Required — True.

    • Перейдіть на вкладку API та заповніть поле Property Name значенням oblast:

    task 3 44 forms

    • Натисніть кнопку Save для збереження змін.

  10. Налаштуйте залежний компонент Select. З панелі компонентів зліва перетягніть компонент Select до панелі моделювання та виконайте подальші налаштування для отримання інформації з довідника:

    task 3 37 forms drag select

    • Перейдіть на вкладку Display та заповніть поле Label значенням Назва населеного пункту:

    task 3 45 forms

    • Перейдіть на вкладку Data та заповніть наступні поля:

      • у полі Data Source Type введіть URL;

      • у полі Data Source URL введіть /officer/api/data-factory/koatuu-np-starts-with-name-by-obl,

        де:

        • /officer — вказує, що запит до довідника буде виконано із Кабінету посадової особи;

        • /api/data-factory/ — вказує шлях до фабрики даних;

        • koatuu-np-starts-with-name-by-obl — назва критерію пошуку (search condition) для отримання даних із довідника населених пунктів, що був змодельований та доданий до репозиторію.

      • у полі Value Property вкажіть koatuuId;

        task 3 46 forms

      • у полі Filter Query вкажіть level1={{data.oblast.code}},

        де:

        • level1 — вхідний параметр для ендпоінту koatuu-np-starts-with-name-by-obl;

        • {{data.oblast.code}}-- шлях для отримання даних data.Property name.Value Property із попереднього компонента Select.

      • у полі Item Template вкажіть <span>{{ item.name }}</span>,

        де name — назва параметру, що повертає search condition та буде відображений на формі.

      • у полі Refresh options On введіть значення Область (поточне значення буде видалено, коли значення в полі Область зміниться);

      • встановіть прапорець для параметра Clear Value On Refresh Options — True:

        task 3 47 forms

    • Перейдіть на вкладку Validation та встановіть прапорець для параметра Required — True.

    • Перейдіть на вкладку API та заповніть поле Property Name значенням koatuu.

    • Натисніть кнопку Save, щоб зберегти зміни.

  11. Збережіть форму, натиснувши кнопку Створити форму у правому верхньому куті:

    task 3 48 forms

3.2.2. Створення форми для підпису даних

Після завершення попереднього етапу зі створенням форми для внесення даних, створіть ще одну форму для підпису даних.

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

task 3 49 forms

Налаштуйте параметри форми:

  1. Введіть назву відповідної користувацької задачі Підписати дані про лабораторію в полі Бізнес-назва форми;

  2. Заповніть поле Службова назва форми значенням add-lab-sign-lab-data (відповідає значенню поля Form key тієї ж користувацької задачі);

  3. В усіх компонентах:

    • На вкладці Display встановіть прапорець для параметра Disabled.

    • Натисніть кнопку Save для збереження змін.

      task 3 50 forms

  4. Збережіть форму, натиснувши кнопку Зберегти зміни у правому верхньому куті.

3.2.3. Завантаження змодельованих форм бізнес-процесу до локальної директорії

Завантажте форми, натиснувши іконку завантаження, та помістіть їх до регламентної папки forms проєкту в локальному Gerrit-репозиторії.

task 3 51 forms

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

На цьому етапі необхідно надати доступ до бізнес-процесу в Кабінеті посадової особи для стандартної ролі officer .

Параметри доступу налаштовуються у конфігураційному файлі, що має назву officer.yml із директорії bp-auth.

Відредагуйте файл bp-auth/officer.yml додавши наступні параметри:

Приклад. Налаштування доступу до бізнес-процесу в Кабінеті посадової особи
authorization:
  realm: 'officer'
  process_definitions:
    - process_definition_id: 'add-lab-test'
      process_name: 'Створення лабораторії'
      process_description: 'Регламент для створення лабораторій'
      roles:
        - officer
    - process_definition_id: 'add-lab'
      process_name: 'Створення лабораторії'
      process_description: 'Регламент для створення лабораторій'
      roles:
        - officer

Збереження файлу з налаштуваннями доступу

Збережіть файл officer.yml до регламентної папки bp-auth проєкту в локальному Gerrit-репозиторії.

4. Завантаження файлів регламенту до віддаленого репозиторію Gerrit

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

Для цього виконайте кроки з інструкції Процес розгортання регламенту в Gerrit.