Завдання 7. Моделювання бізнес-процесу із викликом ШБО "Трембіта"

ЗМІСТ

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

Мета завдання — навчитися моделювати бізнес-процес із викликом зовнішніх сервісів через ШБО "Трембіта".

В рамках цього завдання моделювальники мають:
  • змоделювати 1 бізнес-процес;

  • змоделювати 3 форми внесення даних до бізнес-процесу;

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

  • зберегти створені артефакти до локального git-репозиторію;

  • перенести локальні зміни до віддаленого Gerrit-репозиторію;

  • перевірити працездатність бізнес-процесу.

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

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

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

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

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

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

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

    bp 1

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

    bp 2

  3. Заповніть наступні поля:

    • У полі Participant Name введіть значення Trembita Integration Demo.

    • У полі Process id вкажіть trembita-integration-demo.

    • У полі Process Name введіть Trembita Integration Demo.

    task 7 1 trembita

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

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

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

  2. На панелі налаштувань справа заповніть наступні параметри:

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

    • у полі Name вкажіть значення Початок.

      Параметр Name має лише інформаційне значення і не впливає на логіку виконання бізнес-процесу. Можна лишити його порожнім.

    task 7 2 trembita

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

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

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

    task 3 3 bp append task

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

    task 3 3 bp user task

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

    task 3 3 bp open catalog

    task 3 3 bp user form

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

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

    • у полі Name введіть user task1;

    • у полі Form key введіть search-subject-form;

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

    task 7 3 trembita

3.1.4. Створення сервісної задачі пошуку інформації за суб’єктом в ЄДР

Далі необхідно створити сервісну задачу пошуку інформації за суб’єктом в ЄДР (search subject). Для цього виконайте наступні кроки:

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

    task 7 4 trembita

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

    task 7 5 trembita

  3. На панелі налаштувань справа натисніть Open Catalog, оберіть шаблон Search Subjects Edr Registry та натисніть Apply для підтвердження.

    element template settings 01

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

    • у полі Name введіть search subject;

    • у полі Authorization token вкажіть прочерк (-);

    • у полі Code вкажіть ${submission('task1').formData.prop('code').value()};

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

    task 7 7 trembita

Приклад 1. Відповідь від сервісу ЄДР з інформацією про суб’єкт
{
    "name":"Сидоренко Василь Леонідович",
    "code":"88888888",
    "id":9,
    "state":"CANCEL_STATE"
}

Детальну інформацію з описом сервісу ЄДР ви можете знайти на сторінці Реєстри та системи ШБО "Трембіта".

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

На цьому етапі необхідно змоделювати задачу скриптування (prepare form data for task2) для підготовки даних до показу. Для цього виконайте наступні кроки:

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

    task 7 8 trembita

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

    task 7 9 trembita

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

    • у полі Name вкажіть prepare form data for task2;

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

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

    • у полі Script вставте groovy-скрипт:

      def response = ssResponse.responseBody.elements().get(0)
      
      def formPrePopulation = [:]
      formPrePopulation['id'] = response.prop('id').value().toString()
      formPrePopulation['code'] = response.prop('code').value()
      formPrePopulation['name'] = response.prop('name').value()
      formPrePopulation['state'] = response.prop('state').value()
      
      execution.removeVariable('payload')
      set_transient_variable('payload', S(formPrePopulation, 'application/json'))

    task 7 10 trembita

3.1.6. Створення користувацької задачі "Відображення інформації за суб’єктом у ЄДР"

На прикладі Створення користувацької задачі "Внесення даних для пошуку" необхідно створити користувацьку задачу відображення інформації за суб’єктом в ЄДР (user task2). Для цього виконайте наступні кроки:

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

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

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

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

    • у полі Name введіть user task2;

    • у полі Form key введіть display-search-subject-form;

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

    • у полі Form data pre-population введіть ${payload}.

    task 7 11 trembita

3.1.7. Створення сервісної задачі пошуку деталізованої інформації за суб’єктом в ЄДР

  1. На прикладі Створення сервісної задачі пошуку інформації за суб’єктом в ЄДР створіть та приєднайте нову сервісну задачу пошуку деталізованої інформації за суб’єктом в ЄДР (get subject detail), натиснувши іконку ключа та обравши з меню пункт Service Task.

  2. Натисніть Open Catalog, оберіть шаблон Get Subject Detail Edr Registry та натисніть Apply для підтвердження.

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

    • у полі Name введіть get subject detail;

    • у полі Authorization token вкажіть прочерк (-);

    • у полі Id введіть ${submission('task2').formData.prop('id').value()};

      Тут ми використовуємо id запису, отриманого на кроці Створення сервісної задачі пошуку інформації за суб’єктом в ЄДР для одержання деталізованої інформації за цим же суб’єктом в ЄДР.
    • у полі Result variable вкажіть значення змінної, до якої запишеться результат — sdResponse.

    task 7 12 trembita

Приклад 2. Відповідь від сервісу ЄДР з деталізованою інформацією про суб’єкт
{
    "address":"м.Харків, Київський район ВУЛИЦЯ СУМСЬКА буд. 1221",
    "email":"harry@com.ua"
}

Детальну інформацію з описом сервісу ЄДР ви можете знайти на сторінці Реєстри та системи ШБО "Трембіта".

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

  1. На прикладі Створення задачі скриптування підготування даних для користувацької задачі 2 створіть та приєднайте нову задачу скриптування prepare from data for task3, натиснувши іконку ключа та обравши з меню пункт Script Task.

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

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

    • у полі Name вкажіть prepare form data for task3;

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

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

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

      def formPrePopulation = [:]
      
      ['email', 'address'].each {
          formPrePopulation[it] = sdResponse.responseBody.prop(it).value()
      }
      
      execution.removeVariable('payload')
      set_transient_variable('payload', S(formPrePopulation, 'application/json'))

    task 7 13 trembita

3.1.9. Створення користувацької задачі відображення деталізованої інформації за суб’єктом в ЄДР

На прикладі Створення користувацької задачі "Внесення даних для пошуку" необхідно створити користувацьку задачу (user task3). Для цього виконайте наступні кроки:

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

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

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

    • у полі Name введіть user task3;

    • у полі Form key введіть display-additional-info;

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

    • у полі Form data pre-population введіть ${payload}.

    task 7 14 trembita

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

  1. Оберіть прямокутник із щойно створеною задачею Створення користувацької задачі відображення деталізованої інформації за суб’єктом в ЄДР, приєднайте та налаштуйте подію, що завершує процес, натиснувши іконку Append EndEvent:

    task 7 15 trembita

  2. На панелі налаштувань справа у полі Name вкажіть Кінець.

    task 7 16 trembita

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

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

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

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

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

Використовуйте файли display-additional-info.json, display-search-subject-form.json та search-subject-form.json зі змодельованими формами для прикладу.

Чекліст моделювання UI-форм

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

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

Змоделюйте форму для внесення даних для пошуку — search-subject-form.
  1. Увійдіть до застосунку Кабінет адміністратора регламентів.

    admin portal form modeling step 1

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

    new admin portal 1

    Детальніше про майстер-версію регламенту ви можете переглянути за посиланням:

    Майстер-версія змін до регламенту реєстру дозволяє працювати з UI-формами лише у режимі перегляду.

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

  2. Створіть новий запит на внесення змін до регламенту, тобто створіть нову версію-кандидат на внесення змін.

    task 5 forms new change request

    АБО

    Оберіть наявну версію-кандидат на внесення змін.

    task 5 forms new change request 1

    Детальніше про створення та перегляд запитів на внесення змін до регламенту ви можете переглянути за посиланнями:

  3. В рамках своєї версії-кандидата перейдіть до розділу UI-форми.

    task 5 forms overview

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

    task 5 forms overview 1

    • У новому вікні, у полі Бізнес-назва форми вкажіть назву форми — search-subject-form. Форма поєднана зі змодельованою користувацькою задачею — Внесення даних для пошуку (task1).

    • Заповніть поле Службова назва форми значенням search-subject-form (має відповідати значенню поля Form key тієї ж користувацької задачі — Внесення даних для пошуку (task1).

    task 7 17 trembita

  5. Перейдіть на вкладку Конструктор та виконайте моделювання форми за допомогою компонентів.

    task 7 17 1 trembita

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

    task 3 27 forms drag text field

    • У новому вікні перейдіть на вкладку Display, заповніть поле Label значенням Erdpou or rnokpp.

      task 7 18 trembita

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

      task 7 19 trembita

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

      task 7 20 trembita

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

    task 7 21 trembita

Під час введення даних на формі у Кабінеті посадової особи використовуйте Erdpou or rnokpp: 88888888 для перевірки.

3.2.2. Створення форми для відображення даних

Далі створіть форму для відображення даних — display-search-subject-form. Для цього виконайте кроки за аналогією до попереднього пункту.
  1. У розділі UI-форми натисніть кнопку Створити нову форму.

    task 5 forms overview 1

    task 7 06 1 trembita

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

    task 7 06 trembita

  3. З панелі компонентів зліва перетягніть компонент Text Field до панелі моделювання. Необхідно змоделювати 4 таких поля: ID, Code, Name, State, та виконати їх налаштування.

    Значення параметра Property Name має бути у нижньому регістрі. Groovy-скрипти бізнес-процесу використовують назви саме у нижньому регістрі.
    • Змоделюйте текстове поле ID:

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

      • Активуйте параметр Disabled - True.

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

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

    • Змоделюйте текстове поле Code:

      • У новому вікні перейдіть на вкладку Display, заповніть поле Label значенням Сode.

      • Активуйте параметр Disabled - True.

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

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

    • Змоделюйте текстове поле Name:

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

      • Активуйте параметр Disabled - True.

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

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

    • Змоделюйте текстове поле State:

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

      • Активуйте параметр Disabled - True.

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

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

    task 7 22 1 trembita

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

    task 7 22 trembita

3.2.3. Створення форми для відображення додаткової інформації

Далі створіть форму для відображення додаткової інформації — display-additional-info. Для цього виконайте кроки за аналогією до попереднього пункту
  1. У розділі UI-форми натисніть кнопку Створити нову форму.

    task 5 forms overview 1

    task 7 07 trembita

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

    task 7 23 trembita

  3. З панелі компонентів зліва перетягніть компонент Text Field до панелі моделювання. Необхідно змоделювати 2 таких поля: Address, Email, та виконати їх налаштування.

    Значення параметра Property Name має бути у нижньому регістрі. Groovy-скрипти бізнес-процесу використовують назви саме у нижньому регістрі.
    • Змоделюйте текстове поле Address:

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

      • Активуйте параметр Disabled - True.

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

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

    • Змоделюйте текстове поле Email:

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

      • Активуйте параметр Disabled - True.

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

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

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

    task 7 24 trembita

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

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

task 7 05 trembita

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

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

Налаштуйте параметри доступу до бізнес-процесу у конфігураційному файлі bp-auth/officer.yml.

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

Приклад. Налаштування доступу до бізнес-процесу із Кабінету посадової особи
authorization:
  realm: 'officer'
  process_definitions:
    - process_definition_id: 'trembita-integration-demo'
      process_name: 'Trembita Integration Demo'
      process_description: 'test'
      roles:
        - officer

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

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

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

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