Завдання 5. Моделювання бізнес-процесу із декількома учасниками
- 1. Мета завдання
- 2. Передумови
- 3. Процес виконання завдання
- 3.1. Моделювання бізнес-процесу
- Чекліст моделювання бізнес-процесу
- 3.1.1. Створення пулу для бізнес-процесу
- 3.1.2. Створення початкової події
- 3.1.3. Створення задачі скриптування "Підготовка даних для показу"
- 3.1.4. Створення користувацької задачі "Додати інформацію про лабораторію"
- 3.1.5. Створення сервісної задачі "Пошук даних про лабораторію (transient var)"
- 3.1.6. Створення та заповнення XOR-шлюзу "Дані присутні?"
- 3.1.7. Створення гілки з валідаційною помилкою
- 3.1.8. Створення гілки з подальшим продовженням бізнес-процесу
- 3.1.9. Створення користувацької задачі для підпису даних
- 3.1.10. Створення сервісної задачі "Отримання користувачів із роллю 'officer' "
- 3.1.11. Створення користувацької задачі "Призначення виконавця задачі "Перевірка документів на відповідність"
- 3.1.12. Створення задачі скриптування "Підготовка даних документа для показу"
- 3.1.13. Створення користувацької задачі "Перевірка унікальности запису про лабораторію"
- 3.1.14. Створення XOR-шлюзу "Лабораторія унікальна?"
- 3.1.15. Створення гілки із негативним результатом бізнес-процесу
- 3.1.16. Створення гілки із подальшим продовженням бізнес-процесу
- 3.1.17. Створення користувацької задачі для підпису даних
- 3.1.18. Створення задачі скриптування "Підготовка даних до запису (transient var)"
- 3.1.19. Моделювання сервісної задачі для підпису даних системним ключем
- 3.1.20. Створення сервісної задачі "Зберегти дані до Фабрики даних"
- 3.1.21. Створення події для опрацювання помилки
- 3.1.22. Створення сервісної задачі для встановлення результату бізнес-процесу
- 3.1.23. Створення події завершення бізнес-процесу
- 3.1.24. Збереження змодельованої схеми бізнес-процесу
- 3.2. Моделювання UI-форм для бізнес-процесу
- 3.3. Моделювання форм за допомогою formVariables
- 3.4. Моделювання доступу до бізнес-процесу
- 3.1. Моделювання бізнес-процесу
- 4. Перенесення файлів регламенту до віддаленого репозиторію Gerrit
- 5. Додатки
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Мета завдання
- Мета завдання:
-
-
навчити моделювати бізнес-процес, що має декількох учасників.
-
навчити моделювати форми та налаштовувати їх за допомогою formVariables.
-
- В рамках цього завдання моделювальники мають:
-
-
змоделювати 1 бізнес-процес;
-
змоделювати 5 форм внесення даних до бізнес-процесу;
-
створити ролі, необхідні для функціонування у бізнес-процесі;
-
надати доступи до бізнес-процесу для відповідних ролей;
-
зберегти створені артефакти до локального git-репозиторію;
-
перенести локальні зміни до віддаленого Gerrit-репозиторію.
-
2. Передумови
Перед проходженням завдання необхідно виконати наступні передумови:
3. Процес виконання завдання
3.1. Моделювання бізнес-процесу
На етапі моделювання бізнес-процесу необхідно створити та зберегти відповідну BPMN-діаграму. Використовуйте файл citizen-add-lab.bpmn із готовою схемою бізнес-процесу як приклад. |
Чекліст моделювання бізнес-процесу
Використовуйте наведений чекліст із переліком кроків для створення бізнес-процесу:
-
Створення користувацької задачі "Додати інформацію про лабораторію"
-
Створення сервісної задачі "Пошук даних про лабораторію (transient var)"
-
Створення сервісної задачі "Отримання користувачів із роллю 'officer' "
-
Створення задачі скриптування "Підготовка даних документа для показу"
-
Створення користувацької задачі "Перевірка унікальности запису про лабораторію"
-
Створення задачі скриптування "Підготовка даних до запису (transient var)"
-
Моделювання сервісної задачі для підпису даних системним ключем
-
Створення сервісної задачі для встановлення результату бізнес-процесу
Важливо! Після проходження всіх етапів, не забудьте зберегти змодельовану схему бізнес-процесу до відповідної папки з регламентом реєстру (див. Збереження змодельованої схеми бізнес-процесу) |
3.1.1. Створення пулу для бізнес-процесу
Найперше, змоделюйте пул для бізнес-процесу. Для цього виконайте кроки, подані нижче:
Моделювання діаграми бізнес-процесу має відбуватися в рамках елемента Create Pool/Participant. |
-
Відкрийте додаток Camunda Modeler та створіть нову діаграму BPMN. Для цього у лівому верхньому куті натисніть меню File → New File → BPMN Diagram:
-
На панелі інструментів зліва знайдіть елемент Create pool/Participant та перетягніть його до панелі моделювання:
-
Заповніть наступні поля відповідними значеннями:
-
у полі
Name
введіть значенняСтворення лабораторії
; -
у полі
Process id
вкажітьcitizen-add-lab
; -
у полі
Process name
вкажітьПроцес створення лабораторії
:
-
3.1.2. Створення початкової події
Створіть початкову подію. Для цього виконайте наступні кроки:
-
На панелі інструментів, зліва, знайдіть елемент (коло) CreateStartEvent та перетягніть його до панелі моделювання:
-
На панелі налаштувань справа заповніть наступні параметри відповідними значеннями:
-
у полі
Name
введітьПочаток
; -
у полі
Initiator
введітьinitiator
.
-
3.1.3. Створення задачі скриптування "Підготовка даних для показу"
На цьому етапі необхідно змоделювати задачу скриптування для підготовки даних до показу. Для цього виконайте наступні кроки:
-
Оберіть коло із початковою подією, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task:
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Script Task (Задача скриптування):
-
Виділіть додану задачу скриптування та налаштуйте наступні параметри:
-
у полі
Id
вкажітьconvertSignFormDataToDataFactoryFormatActivity
; -
у полі
Name
введітьПідготовка даних для показу
; -
у полі
Script Format
зазначте формат (мову) скриптуванняgroovy
; -
у полі
Script type
вкажіть тип скриптуInlineScript
; -
у полі
Script
вставте безпосередньо groovy-скрипт:Натисніть, щоб розгорнути або згорнути
def cephData = [:] cephData['edrpou'] = initiator().edrpou execution.removeVariable('payload') set_transient_variable('payload', S(cephData, 'application/json'))
-
3.1.4. Створення користувацької задачі "Додати інформацію про лабораторію"
На цьому етапі необхідно змоделювати користувацьку задачу Додати інформацію про лабораторію
.
На прикладі Завдання 3 створіть користувацьку задачу, призначену для внесення даних користувачем. Для цього виконайте наступні кроки:
-
Оберіть прямокутник із задачею скриптування, змодельованою на попередньому етапі, та приєднайте нову задачу.
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form із каталогу та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Id
зазначтеaddLabCitizenActivity
; -
у полі
Name
введітьДодати інформацію про лабораторію
; -
у полі
Form key
введітьcitizen-add-lab-bp-add-lab
; -
у полі
Assignee
вкажіть${initiator}
; -
у полі
Form data pre-population
вкажіть${payload}
.
-
3.1.5. Створення сервісної задачі "Пошук даних про лабораторію (transient var)"
На цьому етапі необхідно створити сервісну задачу Пошук даних про лабораторію (transient var)
.
На прикладі Завдання 3 змоделюйте сервісну задачу для пошуку даних про лабораторію. Для цього виконайте наступні кроки:
-
Оберіть прямокутник із користувацькою задачею
Додати інформацію про лабораторію
, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task. -
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task (Сервісна задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон Search for entities in data factory (Пошук значень у фабриці даних) та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Name
має бути вказаноПошук даних про лабораторію (transient var)
; -
у розділі Input Parameters → Resource зазначте наступне:
-
у полі
Variable Assignment Type
вкажітьString or Expression
; -
у полі
Variable Assignment Value
вкажітьlaboratory-equal-edrpou-name-count
;
-
-
у розділі Input Parameters → Search Variables вкажіть наступне:
-
у полі
Variable Assignment type
вкажітьMap
. -
у полі
Add Entry
додайте параметриname
таedrpou
, натиснувши на позначку плюса (+
) та вкажіть для них відповідні значення:Key Value name
${submission('addLabCitizenActivity').formData.prop('name').value()}
edrpou
${submission('addLabCitizenActivity').formData.prop('edrpou').value()}
-
-
у розділі Input Parameters → X-Access-Token вкажіть наступне:
-
у полі
Variable Assignment Type
вкажітьString or Expression
; -
у полі
Variable Assignment Value
вкажіть${completer('addLabCitizenActivity').accessToken}
.Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію
completer('<task_id>')
для отримання даних користувача, замістьinitiator()
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
).JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.
Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.
-
-
У розділі Output Parameters → Result Variable параметр
Assign to Process Variable
заповніть значеннямresponse
:
-
3.1.6. Створення та заповнення XOR-шлюзу "Дані присутні?"
На прикладі Завдання 3 приєднайте XOR-шлюз. Для цього виконайте кроки, подані нижче:
-
Оберіть прямокутник із сервісною задачею
Пошук даних про лабораторію (transient var)
, змодельованою на попередньому етапі, та приєднайте XOR-шлюз, натиснувши іконку Append Gateway. -
На панелі налаштувань справа, у полі
Name
вкажіть назву шлюзу —Дані присутні?
.
3.1.7. Створення гілки з валідаційною помилкою
На прикладі Завдання 3 створіть гілку з валідаційною помилкою. Для цього виконайте кроки, подані нижче:
-
Оберіть ромб із XOR-шлюзом
Дані присутні?
, змодельованим на попередньому етапі, та створіть нову сервісну задачу, натиснувши іконку Append Task. -
Визначте тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task (Сервісна задача).
-
Натисніть
Open Catalog
, оберіть шаблон Throw validation error та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Name
введітьФормування валідаційної помилки
. -
У розділі Input Parameters → Validation Errors зазначте наступне:
-
у полі
Variable Assignment Type
вкажіть типList
; -
для поля
Value
додайте наступне значення:Значення{"field": "name", "value": "${submission('addLabCitizenActivity').formData.prop('name').stringValue().replaceAll("\"", "\\\\\"")}", "message": "Дані про цю лабораторію вже присутні"}
-
-
-
На гілці, що прямує від шлюзу
Дані присутні?
до сервісної задачіФормування валідаційної помилки
, потрібно налаштувати наступне:-
у полі
Name
введітьтак
; -
у полі
Condition Type
введіть типExpression
; -
у полі
Expression
введіть${!response.value.responseBody.elements().isEmpty()}
.
-
3.1.8. Створення гілки з подальшим продовженням бізнес-процесу
На прикладі Завдання 3 необхідно створити гілку, що продовжить бізнес-процес.
Для цього на гілці, що прямує від шлюзу Дані присутні?
до користувацької задачі Підписати дані про лабораторію
(див. нижче Створення користувацької задачі для підпису даних) налаштуйте такі параметри:
-
У полі
Id
лишіть значення за замовчуванням. -
У полі
Name
вкажітьні
. -
у полі
Condition Type
вкажітьExpression
. -
У полі
Expression
вкажіть${response.value.responseBody.elements().isEmpty()}
.
3.1.9. Створення користувацької задачі для підпису даних
На прикладі Завдання 3 необхідно створити користувацьку задачу для підпису даних. Для цього виконайте наступні кроки:
-
Визначте тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
Натисніть
Open Catalog
, оберіть шаблон Citizen Sign Task та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Id
вкажітьsignLabCitizenActivity
; -
у полі
Name
введітьПідписати дані про лабораторію
; -
у полі
Form key
введітьshared-citizen-sign-lab
; -
у полі
Assignee
вкажіть${initiator}
; -
у полі
Form data pre-population
введіть${submission('addLabCitizenActivity').formData}
. -
поле
INDIVIDUAL
залиште у значенніdisabled
(за замовчуванням); -
для поля
ENTREPRENEUR
оберіть значенняenabled
; -
для поля
LEGAL
оберіть значення —enabled
.
-
3.1.10. Створення сервісної задачі "Отримання користувачів із роллю 'officer' "
На прикладі Створення сервісної задачі "Пошук даних про лабораторію (transient var)" необхідно створити сервісну задачу для отримання користувачів із роллю "Посадова особа" із сервісу управління ідентифікацію та доступом Keycloak. Для цього виконайте наступні кроки:
-
Оберіть прямокутник із користувацькою задачею
Підписати дані про лабораторію
, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task. -
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task (Сервісна задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон Get users by role from keycloak (Отримання користувачів у Keycloak за роллю) та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Name
введітьОтримання користувачів з роллю 'officer'
; -
у полі
Result Variable
вкажітьofficerUsers
.
-
3.1.11. Створення користувацької задачі "Призначення виконавця задачі "Перевірка документів на відповідність"
На прикладі Створення користувацької задачі для підпису даних необхідно створити користувацьку задачу, що дозволить призначати виконавця іншої задачі. Для цього виконайте наступні кроки:
-
Оберіть прямокутник із користувацькою задачею
Отримання користувачів із роллю 'officer'
, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task. -
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Id
введітьdispatchTaskActivity
; -
у полі
Name
введітьПризначення виконавця задачі "Перевірка документів на відповідність"
; -
у полі
Form key
вкажітьshared-dispatch-task
; -
у полі
Assignee
вкажіть ${initiator}; -
у полі
Candidate roles
введіть значенняtask-dispatcher
— роль, для якої буде доступна ця задача; -
у полі
Form variables
вкажітьofficerUsers
— змінну, що буде передана на форму.
-
3.1.12. Створення задачі скриптування "Підготовка даних документа для показу"
На прикладі Створення задачі скриптування "Підготовка даних для показу" змоделюйте та приєднайте нову задачу скриптування. Для цього виконайте наступні кроки:
-
Оберіть прямокутник із користувацькою задачею, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Script Task (Задача скриптування).
-
Виділіть додану задачу скриптування та налаштуйте наступні параметри:
-
у полі
Name
вкажітьПідготовка даних документа для показу
; -
у полі
Script Format
вкажіть тип (мову) скриптування —groovy
; -
у полі
Script Type
вкажіть тип скриптуInlineScript
; -
у полі
Script
вставте безпосередньо groovy-скрипт:Натисніть, щоб розгорнути або згорнути
execution.removeVariable('officerAssignee') set_variable('officerAssignee', submission('dispatchTaskActivity').formData.prop('userTaskAssignee').prop('userName').value())
-
3.1.13. Створення користувацької задачі "Перевірка унікальности запису про лабораторію"
На прикладі Створення користувацької задачі "Призначення виконавця задачі "Перевірка документів на відповідність" створіть нову користувацьку задачу для перевірки унікальності запису про лабораторію. Для цього виконайте кроки, подані нижче:
-
Оберіть прямокутник зі скрипт-задачею, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task (Користувацька задача).
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Id
введітьcheckLabOfficerActivity
; -
у полі
Name
введітьПеревірка унікальности запису про лабораторію
; -
у полі
Form key
вкажітьshared-officer-check-lab
; -
у полі
Assignee
введіть${officerAssignee}
; -
у полі
Form data pre-population
вкажіть${submission('signLabCitizenActivity').formData}
.
-
3.1.14. Створення XOR-шлюзу "Лабораторія унікальна?"
На прикладі Створення та заповнення XOR-шлюзу "Дані присутні?" змоделюйте та приєднайте новий XOR-шлюз. Для цього виконайте кроки, подані нижче:
-
Оберіть прямокутник із користувацькою задачею, змодельованою на попередньому етапі, та приєднайте XOR-шлюз, натиснувши іконку Append Gateway.
-
На панелі налаштувань справа, у полі
Name
вкажіть назву шлюзу —Лабораторія Унікальна? labUniqueCheckFlag
.
3.1.15. Створення гілки із негативним результатом бізнес-процесу
На прикладі Створення гілки з валідаційною помилкою створіть нову гілку із негативним результатом бізнес-процесу. Для цього виконайте кроки, подані нижче:
-
Оберіть ромб із XOR-шлюзом
Лабораторія унікальна?
, змодельованим на попередньому етапі, та створіть нову сервісну задачу, натиснувши іконку Append Task. -
Визначте тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task (Сервісна задача).
-
Натисніть
Open Catalog
, оберіть шаблон Define business process status та натиснітьApply
для підтвердження. -
На панелі налаштувань справа заповніть наступні поля:
-
у полі
Name
введіть значенняРезультат виконання "Лабораторія не створена - Дублікат"
; -
у полі
Status
введітьЛабораторія не створена - Така лабораторія вже існує
.
-
-
Виділіть гілку, що прямує до сервісної задачі
"Результат виконання "Лабораторія не створена - Дублікат"
та налаштуйте такі параметри:-
у полі
Name
введіть значенняні
; -
у полі
Condition Type
типExpression
; -
у полі
Expression
вкажіть вираз${!submission('checkLabOfficerActivity').formData.hasProp('labUniqueCheckFlag') || submission('checkLabOfficerActivity').formData.prop('labUniqueCheckFlag').value() == false}
.
-
3.1.16. Створення гілки із подальшим продовженням бізнес-процесу
На прикладі Створення гілки з подальшим продовженням бізнес-процесу створіть нову гілку для продовження процесу.
Для цього на гілці, що прямує від шлюзу Лабораторія унікальна?
(див. Створення XOR-шлюзу "Лабораторія унікальна?") до користувацької задачі Підписати дані лабораторії
(див. нижче Створення користувацької задачі для підпису даних) налаштуйте такі параметри:
-
У полі
Id
лишіть значення за замовчуванням. -
У полі
Name
вкажітьтак
. -
у полі
Condition Type
вкажітьExpression
. -
У полі
Expression
вкажіть вираз${submission('checkLabOfficerActivity').formData.hasProp('labUniqueCheckFlag') && submission('checkLabOfficerActivity').formData.prop('labUniqueCheckFlag').value() == true}
.
3.1.17. Створення користувацької задачі для підпису даних
Необхідно створити користувацьку задачу для підпису даних. Для цього виконайте наступні кроки:
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт User Task.
-
На панелі налаштувань справа натисніть
Open Catalog
, оберіть шаблон User Form та натиснітьApply
для підтвердження. -
Заповніть наступні поля відповідними значеннями:
-
у полі
Id
вкажітьsignLabOfficerActivity
; -
у полі
Name
введітьПідписати дані лабораторії
; -
у полі
Form key
введітьshared-officer-sign-lab
; -
у полі
Assignee
вкажіть${officerAssignee}
; -
у полі
Form data pre-population
введіть${submission('checkLabOfficerActivity').formData}
.
-
3.1.18. Створення задачі скриптування "Підготовка даних до запису (transient var)"
Створіть нову задачу скриптування для підготовки даних до запису_. Для цього виконайте подальші налаштування:
-
Оберіть прямокутник із користувацькою задачею, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Script Task (Задача скриптування).
-
Виділіть додану задачу скриптування та налаштуйте наступні параметри:
-
у полі
Name
вкажітьПідготовка даних для запису (transient var)
; -
у полі
Script Format
вкажіть тип (мову) скриптування —groovy
; -
у полі
Script Type
вкажіть тип скриптуInlineScript
; -
у полі
Script
вставте безпосередньо groovy-скрипт:Натисніть, щоб розгорнути або згорнути
def signedFormData = submission('signLabOfficerActivity').formData signedFormData.prop('oblast', signedFormData.prop('oblast').prop('code')) signedFormData.prop('koatuuId', signedFormData.prop('koatuu').prop('koatuuId')) signedFormData.deleteProp('koatuu') signedFormData.prop('ownershipId', signedFormData.prop('ownership').prop('ownershipId')) 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) } execution.removeVariable('dataPayload') set_transient_variable('dataPayload', signedFormData)
-
3.1.19. Моделювання сервісної задачі для підпису даних системним ключем
Створіть сервісну задачу (Service Task) для підпису даних системним ключем та налаштуйте відповідне інтеграційне розширення. Для цього виконайте кроки, подані нижче:
-
Оберіть прямокутник зі скриптовою задачею, змодельованою на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.
-
Вкажіть тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task.
-
На панелі налаштувань справа натисніть
Open Catalog
, щоб відкрити список доступних шаблонів делегатів. -
З отриманого переліку оберіть шаблон System signature by DSO service, який необхідно використовувати для підписання даних системним ключем.
-
На панелі налаштувань справа, відкрийте вкладку General та сконфігуруйте параметри делегата:
-
у полі
Name
вкажіть назву задачі — "Підписати дані системним ключем"; -
у полі
Payload
передайте дані, на які треба накласти системний підпис — ${dataPayload};-
у полі
X-Access-Token source
передайте токен доступу особи, яка наразі виконує задачу з ID'signLabOfficerActivity'
—${completer('signLabOfficerActivity').accessToken}
;Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію
completer('<task_id>')
для отримання даних користувача, замістьinitiator()
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
).JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.
Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.
-
у полі
Result variable
зазначте назву змінної, до якої запишеться цифровий підпис вказаних даних —system_signature_ceph_key
.
-
-
3.1.20. Створення сервісної задачі "Зберегти дані до Фабрики даних"
На цьому кроці необхідно створити та налаштувати нову сервісну задачу для збереження даних до Дата-фабрики. Для цього виконайте кроки, зазначені нижче:
-
Оберіть прямокутник зі створеною на попередньому етапі задачею Call Activity та створіть нову сервісну задачу
Зберегти дані до Фабрики даних
, натиснувши іконку ключа та обравши з меню пункт Service Task. -
Натисніть
Open Catalog
, оберіть шаблон Create entity in data factory та натиснітьApply
для підтвердження. -
На панелі налаштувань справа сконфігуруйте наступні параметри:
-
у полі
Name
введітьЗберегти дані до Фабрики даних
; -
у полі
Resource
вкажітьlaboratory
; -
у полі
Payload
введіть${dataPayload}
; -
у полі
X-Access-Token
введіть${completer('signLabOfficerActivity').accessToken}
;Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію
completer('<task_id>')
для отримання даних користувача, замістьinitiator()
.Токен доступу береться з АБО ініціатора (наприклад,
$initiator().accessToken}
), АБО виконавця останньої користувацької задачі (наприклад,${completer('taskDefinitionId').accessToken}
).JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.
Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.
-
у полі
X-Digital-Signature source
введіть${sign_submission('signLabOfficerActivity').signatureDocumentId}
; -
у полі
X-Digital-Signature-Derived source
введіть${system_signature_ceph_key}
; -
у полі
Result Variable
вкажітьresponse
.
-
3.1.21. Створення події для опрацювання помилки
На цьому етапі необхідно змоделювати та налаштувати проміжну граничну подію для опрацювання сценарію із виникненням передбачених помилок. Для цього виконайте кроки, подані нижче:
-
Перетягніть Intermediate/Boundary event з панелі інструментів та прикріпіть його до Service Task "Зберегти дані в Дата-фабрику".
-
Визначте тип події як Error Boundary Event (Проміжна гранична подія "Помилка").
-
Створіть Gateway (шлюз), який буде виконувати роль контрольної точки для перенаправлення у випадку виникнення помилки.
-
Додайте логіку опрацювання помилки за допомогою з’єднання Error Boundary Event та Gateway.
Це буде означати, що при виникненні помилки на етапі "Збереження даних в Дата-фабрику" ми автоматично повернемося до контрольної точки, звідки заново почнеться виконання процесу.
Компоненти моделювання "Дата Фабрика" та усі пунктирні лінії носять виключно інформаційний характер. Прикладу їх створення в інструкції немає, але можете додати їх самостійно за бажанням. |
3.1.22. Створення сервісної задачі для встановлення результату бізнес-процесу
На прикладі Завдання 3 змоделюйте нову сервісну задачу, що встановлюватиме результат бізнес-процесу. Для цього виконайте кроки, подані нижче:
-
Оберіть прямокутник із сервісною задачею, створеною на попередньому етапі, та приєднайте нову задачу, натиснувши іконку Append Task.
-
Визначте тип задачі, натиснувши іконку ключа та обравши з меню пункт Service Task.
-
Натисніть
Open Catalog
, оберіть шаблон Define business process status та натиснітьApply
для підтвердження. -
На панелі налаштувань справа сконфігуруйте наступні параметри:
-
у полі
Name
вкажітьРезультат виконання "Лабораторія створена"
; -
у полі
Status
вкажітьЛабораторія створена
.
-
3.1.23. Створення події завершення бізнес-процесу
На цьому етапі необхідно створити подію, яка завершуватиме бізнес-процес.
-
На прикладі Завдання 3 приєднайте та налаштуйте подію завершення бізнес-процесу.
-
На панелі налаштувань справа для параметра
Name
вкажіть значенняЛабораторія створена
.
В результаті маємо змодельований бізнес-процес для використання декількома учасниками та з викликом зовнішнього підпроцесу Call Activity. |
3.1.24. Збереження змодельованої схеми бізнес-процесу
Після завершення процесу моделювання збережіть отриману схему бізнес-процесу із назвою citizen-add-lab.bpmn до регламентної папки bpmn проєкту в Gerrit-репозиторії. Для цього у лівому верхньому куті відкрийте меню File > Save File As..
, введіть відповідну назву та шлях.
3.2. Моделювання UI-форм для бізнес-процесу
На етапі моделювання форм необхідно створити та прив’язати JSON-форми до попередньо змодельованих задач в рамках бізнес-процесу. Форми прив’язуються до бізнес-процесів за службовою назвою. Використовуйте файли shared-officer-sign-lab.json, shared-officer-check-lab.json, shared-dispatch-task.json, shared-citizen-sign-lab.json, citizen-add-lab-bp-add-lab.json зі змодельованими формами для прикладу. |
Чекліст моделювання UI-форм
- Використовуйте наведений чекліст із переліком кроків для створення форм:
Після проходження всіх етапів, завантажте та збережіть файли зі схемами форм до відповідної папки з регламентом реєстру (див. Завантаження змодельованих форм бізнес-процесу до локальної директорії) |
3.2.1. Створення форми для внесення даних
Змоделюйте форму для внесення даних користувачем, використовуючи приклад із Завдання 3. |
-
Увійдіть до застосунку Кабінет адміністратора регламентів.
За замовчуванням користувач опиняється на домашній сторінці Огляд версії майстер-версії регламенту.
Детальніше про майстер-версію регламенту ви можете переглянути за посиланням:
Майстер-версія змін до регламенту реєстру дозволяє працювати з UI-формами лише у режимі перегляду.
Для того, щоб створювати, або редагувати будь-які сутності регламенту (форми, бізнес-процеси тощо), а також їх складові, необхідно створити нову версію-кандидат на внесення змін до регламенту реєстру і працювати в ній.
-
Створіть новий запит на внесення змін до регламенту, тобто створіть нову версію-кандидат на внесення змін.
АБО
Оберіть наявну версію-кандидат на внесення змін.
Детальніше про створення та перегляд запитів на внесення змін до регламенту ви можете переглянути за посиланнями:
-
В рамках своєї версії-кандидата перейдіть до розділу UI-форми.
-
Скопіюйте форму add-lab-bp-add-lab, змодельовану в рамках Завдання 3, натиснувши іконку копіювання — це дозволить створити форму із готового шаблону.
-
У новому вікні, на вкладці Загальна введіть бізнес-назву форми —
Внести дані про лабораторію
. Назва відповідає бізнес-назві змодельованої користувацької задачіaddLabCitizenActivity
. -
Заповніть поле
Службова назва форми
значеннямcitizen-add-lab-bp-add-lab
(відповідає значенню поляForm key
тієї ж користувацької задачіaddLabCitizenActivity
); -
Перейдіть на вкладку Конструктор.
-
У компонентах "Область", "Назва населеного пункту", та "Форма власності", на вкладці Data у полі
Data Source type URL
видаліть/officer
.
-
Переконайтеся, що остаточний вигляд компонентів є наступним:
-
компонент "Область" —
/api/data-factory/koatuu-obl-contains-name
; -
компонент "Назва населеного пункту" —
/api/data-factory/koatuu-np-starts-with-name-by-obl
; -
компонент "Форма власності" —
/api/data-factory/ownership-contains-name
.
-
-
-
Збережіть форму, натиснувши кнопку
Зберегти зміни
у правому верхньому куті.
3.2.2. Моделювання форми підпису даних отримувачем послуг реєстру
Після завершення попереднього етапу зі створенням форми для внесення даних, створіть ще одну форму — для підпису даних.
Змоделюйте форму для внесення даних користувачем, використовуючи приклад із Завдання 3. |
-
Скопіюйте UI-форму для внесення даних про лабораторію, натиснувши іконку копіювання — це дозволить створити форму із готового шаблону.
-
Увійдіть до режиму редагування форми та перейдіть на вкладку Загальна.
-
У полі
Бізнес-назва форми
введіть назву відповідної користувацької задачіПідписати дані про лабораторію
(signLabCitizenActivity
); -
Заповніть поле
Службова назва форми
значеннямshared-citizen-sign-lab
(відповідає значенню поляForm key
тієї ж користувацької задачіsignLabCitizenActivity
). -
Перейдіть на вкладку Конструктор та у налаштуваннях кожного компонента виконайте наступне:
-
На вкладці Display встановіть прапорець для параметра Disabled.
-
Натисніть кнопку
Save
для збереження змін.
-
-
Перейдіть на вкладку Перегляд. Тут ви можете побачити, як виглядатиме форма в інтерфейсі користувачів. Усі поля є неактивними.
-
Збережіть форму, натиснувши кнопку
Зберегти зміни
у правому верхньому куті.
3.3. Моделювання форм за допомогою formVariables
3.3.1. Моделювання форми призначення виконавця задачі
Продовжуйте моделювання форм в рамках тієї ж версії-кандидата на внесення змін, що була створена у попередньому розділі. |
-
В рамках своєї версії-кандидата перейдіть до розділу UI-форми.
-
Щоб створити нову форму для бізнес-процесу, натисніть кнопку
Створити нову форму
:-
У новому вікні, у полі
Бізнес-назва форми
вкажіть назву, що відповідає назві змодельованої користувацької задачі —Призначення виконавця задачі
(dispatchTaskActivity
). -
Заповніть поле
Службова назва форми
значеннямshared-dispatch-task
(має відповідати значенню поляForm key
тієї ж користувацької задачіПризначення виконавця задачі
(dispatchTaskActivity
).
-
-
Перейдіть на вкладку Конструктор та виконайте моделювання форми за допомогою компонентів.
-
З панелі компонентів зліва перетягніть компонент Select до панелі моделювання та виконайте подальші налаштування компонента:
-
Перейдіть на вкладку Display та заповніть поле
Label
значеннямОберіть ПІБ виконавця
: -
Перейдіть на вкладку API та заповніть поле
Property Name
значеннямuserTaskAssignee
: -
Перейдіть на вкладку Data та налаштуйте наступні параметри:
-
у полі
Data source type
введітьCustom
; -
у полі
Id Path
вкажітьuserName
; -
у полі
Custom Values
вкажітьvalues = formVariables.officerUsers
; -
у полі
Item Template
введіть<span>{{ item.fullName }}</span>
.
-
-
Натисніть кнопку
Save
для збереження.
-
-
Збережіть форму, натиснувши кнопку
Створити форму
у правому верхньому куті:
3.3.2. Моделювання форми перевірки даних посадовою особою
Змоделюйте форму для можливості перевірки даних посадовою особою. Для цього виконайте наступні кроки:
-
Скопіюйте форму Призначення виконавця задачі, змодельовану вище, натиснувши іконку копіювання — це дозволить створити форму із готового шаблону:
-
У новому вікні відкрийте вкладку Загальна.
-
У полі
Бізнес-назва форми
введіть назвуПеревірка унікальності запису про лабораторію
, що відповідає назві користувацької задачіcheckLabOfficerActivity
. -
Заповніть поле
Службова назва форми
значеннямshared-officer-check-lab
(має відповідати значенню поляForm key
тієї ж користувацької задачі —checkLabOfficerActivity
.
-
-
Перейдіть на вкладку Конструктор виконайте моделювання форми за допомогою компонентів.
-
З панелі компонентів зліва перетягніть компонент Checkbox до панелі моделювання та виконайте подальші налаштування:
-
Перейдіть на вкладку Display та заповніть поле
Label
значеннямЛабораторія не дублюється
: -
Перейдіть на вкладку API та заповніть поле
Property Name
значеннямlabUniqueCheckFlag
. -
Натисніть кнопку
Save
для збереження змін:
-
-
Збережіть форму, натиснувши кнопку
Створити форму
у правому верхньому куті:
3.3.3. Моделювання форми підпису даних посадовою особою
Змоделюйте форму для можливості підпису даних посадовою особою. Для цього виконайте наступні кроки:
-
Скопіюйте форму перевірки даних посадовою особою, змодельовану вище, натиснувши іконку копіювання — це дозволить створити форму із готового шаблону:
-
У новому вікні перейдіть до вкладки Загальна.
-
У полі
Бізнес-назва форми
введіть назвуПідписати дані лабораторії
, що відповідає назві користувацької задачіsignLabOfficerActivity
. -
Заповніть поле
Службова назва форми
значеннямshared-officer-sign-lab
(має відповідати значенню поляForm key
тієї ж користувацької задачіsignLabOfficerActivity
.
-
-
Перейдіть на вкладку Конструктор та виконайте наступні налаштування для усіх компонентів форми:
-
Перейдіть на вкладку Display та встановіть прапорець для параметра
Disabled
—True
. -
Натисніть кнопку
Save
для збереження.
-
-
Збережіть форму, натиснувши кнопку
Створити форму
у правому верхньому куті.
3.3.4. Завантаження змодельованих форм бізнес-процесу до локальної директорії
Завантажте форми, натиснувши ⤓
(іконку завантаження) , та помістіть їх до регламентної папки forms проєкту в локальному Gerrit-репозиторії.
3.4. Моделювання доступу до бізнес-процесу
На цьому етапі необхідно надати доступ до бізнес-процесу із Кабінету отримувача послуг. Параметри доступу налаштовуються у конфігураційному файлі, що має назву citizen.yml. |
-
Створіть файл citizen.yml та сконфігуруйте в ньому наступні параметри:
Приклад. Налаштування доступу до бізнес-процесу із Кабінету отримувача послуг реєструauthorization: realm: 'citizen' process_definitions: - process_definition_id: 'citizen-add-lab' process_name: 'Процес створення лабораторії' process_description: 'Бізнес-процес створення лабораторії отримувачем послуг реєстру' roles: - 'unregistered-individual' - 'unregistered-entrepreneur' - 'unregistered-legal'
-
Збережіть файл до папки bp-auth проєкту.
3.4.1. Створення нової ролі для розподілення задач в Кабінеті посадової особи
-
Перейдіть до регламентної папки roles, знайдіть файл officer.yml та додайте у ньому до наявних 2 нових параметри:
Приклад. Додавання параметрів для створення ролі для розподілення задач- name: task-dispatcher description: Task dispatcher role
-
Збережіть файл до папки bp-auth проєкту.
3.4.2. Збереження файлів із налаштуваннями доступу
Збережіть файл officer.yml до регламентної папки bp-auth проєкту в локальному Gerrit-репозиторії.
4. Перенесення файлів регламенту до віддаленого репозиторію Gerrit
Для успішного розгортання бізнес-процесу, форм, а також застосування правильних налаштувань доступу до бізнес-процесу у цільовому середовищі, адміністратор регламенту має завантажити збережені локально файли регламенту реєстру до віддаленого сховища коду Gerrit.
Для цього виконайте кроки з інструкції Операції з регламентом в Gerrit.
Після того, як локальні зміни потраплять до регламенту в Gerrit, та після того, як ви переконаєтеся, що все працює коректно, видаліть створену версію-кандидат на внесення змін у Кабінеті адміністратора регламентів. |
5. Додатки
Розділ містить приклади іх готовими артефактами моделювання регламенту, які ви можете використовувати під час виконання цього завдання.