Самостійна реєстрація користувачів з автоматичною модерацією
- 1. Загальний опис
- 2. Передумови
- 3. Референтний приклад процесу
- 3.1. Створення пулу для учасника процесу
- 3.2. Початок процесу
- 3.3. Моделювання XOR-шлюзу та додавання логіки через вирази умови
- 3.4. Виведення інформації на форму про відсутність дозволу на реєстрацію (альтернативний потік)
- 3.5. Визначення статусу виконання процесу (альтернативний потік)
- 3.6. Видалення ролі unregistered-officer та призначення ролі officer посадовій особі
- 3.7. Виведення на форму інформації по успішне завершення процесу реєстрації
- 3.8. Встановлення результату виконання та завершення процесу
1. Загальний опис
Розглянемо опис бізнес-процесу самостійної реєстрації посадових осіб (надавачів послуг) з автоматичною модерацією.
Цей процес виконує самореєстрацію посадової особи, перевіряючи, чи належить ЄДРПОУ (код юридичної особи) до дозволеного переліку. Ось кроки, які проходить процес:
-
Автоматичний старт процесу після автентифікації з роллю
unregistered-officer
. -
Виконується перевірка, чи належить ЄДРПОУ до дозволеного переліку (ексклюзивний шлюз).
-
Якщо ЄДРПОУ належить до дозволеного переліку (Так):
-
Видаляється роль
unregistered-officer
і додається рольofficer
. -
Інформує користувача про успішну самореєстрацію і необхідність повторного логіну.
-
Змінює статус на
Самореєстрацію пройдено
. -
Процес завершується зі статусом
Самореєстрацію пройдено
.
-
-
Якщо ЄДРПОУ не належить до дозволеного переліку (Ні):
-
Інформує користувача про відсутність дозволу на самореєстрацію.
-
Змінює статус на
Самореєстрацію не пройдено
. -
Процес завершується зі статусом
Самореєстрацію не пройдено
.
-
Перелік дозволених ЄДРПОУ задається при моделюванні condition. Роль користувача змінюється з unregistered-officer
на officer
у разі успішної самореєстрації.
2. Передумови
Для того, щоб бізнес-процес самореєстрації запрацював, активуйте опцію самореєстрації надавачів послуг в адміністративній панелі Control Plane.
Детальніше про це — див. на сторінці Налаштування самостійної реєстрації для надавачів послуг. |
3. Референтний приклад процесу
Приклад .bpmn-моделі процесу, а також користувацькі .json-форми до нього ви можете знайти у регламенті демо-реєстру consent-data за посиланням: https://admin-tools-consent-data.apps.envone.dev.registry.eua.gov.ua/gerrit. Процес буде доступний за назвою officer-selfregistration-automoderation.bpmn. Назви форм ви можете знайти всередині відповідних користувацьких задач бізнес-процесу у полі |
Процес є спрощеною версією процесу самореєстрації посадових осіб із ручною модерацією, який ви можете переглянути на сторінці Самостійна реєстрація користувачів з ручною модерацією. |
3.1. Створення пулу для учасника процесу
Створіть пул (Participant) для учасника процесу — посадової особи-заявника, яка самореєструється.
Вкажіть наступні параметри у налаштуваннях:
-
Participant Name
— назва пулу для процесу. -
Process ID
— ідентифікатор процесу в регламенті реєстру. -
Process name
— бізнес-назва процесу. -
Активуйте чекбокс
Executable
.
3.2. Початок процесу
Змоделюйте стартову подію. Ця подія ініціює автоматичний старт процесу після автентифікації з роллю unregistered-officer
.
-
Вкажіть назву задачі.
-
Вкажіть ініціатора процесу як
initiator
.Що таке ініціатор?
"Start initiator = initiator"
вказує на те, що значення ініціатора (тобто особи чи системи, яка розпочала процес) буде встановлено якinitiator
.У контексті бізнес-процесів, ініціатор — це той, хто починає процес або відповідає за його запуск. Зазвичай, ініціатор — це користувач, який викликає дію, або система, яка автоматично розпочинає процес.
У цьому випадку,
initiator
може бути використаний для ідентифікації особи чи системи, що стартували процес, у подальших етапах бізнес-процесу або для контролю доступу до ресурсів.
3.3. Моделювання XOR-шлюзу та додавання логіки через вирази умови
Змоделюйте XOR-шлюз, який на основі певної умови визначатиме, за яким потоком далі піде бізнес-процес. У нашому випадку ексклюзивний шлюз перевіряє, чи належить код ЄДРПОУ до переліку дозволених.
Перелік дозволених ЄДРПОУ задається при моделюванні У нашому базовому бізнес-процесі перевірка коду ЄДРПОУ на відповідність списку дозволених значень не є обов’язковою. Цей крок виконується лише для перевірки альтернативного сценарію, який гарантує, що при виникненні помилок або невдалій валідації, користувач не зможе завершити процес реєстрації. |
Якщо ЄДРПОУ не належить до дозволеного переліку (Ні), тобто підпадає під умову ${initiator().edrpou != '15250623'}
(введіть ваш код/коди), то процес іде за альтернативним потоком та:
-
Інформує користувача про відсутність дозволу на самореєстрацію.
-
Змінює статус на
Самореєстрацію не пройдено
. -
Процес завершується зі статусом
Самореєстрацію не пройдено
, а користувач залишається з роллюunregistered-officer
.
Якщо ЄДРПОУ належить до дозволеного переліку (Так), тобто підпадає під умову ${initiator().edrpou == '15250623'}
(введіть ваш код/коди), то процес іде за основним потоком та:
-
Видаляється роль
unregistered-officer
і додається рольofficer
. -
Інформує користувача про успішну самореєстрацію і необхідність повторного логіну.
-
Змінює статус на
Самореєстрацію пройдено
. -
Процес завершується зі статусом
Самореєстрацію пройдено
.
3.4. Виведення інформації на форму про відсутність дозволу на реєстрацію (альтернативний потік)
Ця задача є користувацькою задачею (User Task) і призначена для надання інформації користувачеві про відсутність дозволу на реєстрацію.
Ця задача призначена для ініціатора процесу (camunda:assignee="${initiator}"
), який є заявником. Форма, пов’язана з цією задачею, має ключ selfregistration-denied-automoderation
(camunda:formKey="selfregistration-denied-automoderation"
), який відображає форму з інформацією про відсутність дозволу на реєстрацію.
- Виконайте налаштування наступним чином:
-
-
У полі
Name
введіть назву користувацької задачі. -
Застосуйте шаблон делегата для цієї задачі — User Form.
-
Поєднайте користувацьку задачу із UI-формою за допомогою параметра
Form key
. Введіть значенняselfregistration-denied-automoderation
. -
У полі
Assignee
вкажіть змінну для особи, якій призначається поточна задача, —${initiator}
.
-
Далі встановлюється результат виконання, що реєстрацію не пройдено й відбувається завершення процесу відповідно до кінцевої події в альтернативному потоці.
3.5. Визначення статусу виконання процесу (альтернативний потік)
Ця задача встановлює результат виконання процесу "Самореєстрацію не пройдено" за допомогою шаблону делегата defineBusinessProcessStatusDelegate
. Задача приймає вхідні дані з попередньої задачі та передає результат до наступного етапу процесу.
- Встановіть результат виконання:
-
-
Оберіть шаблон делегата Define business process status у списку доступних.
-
У полі Status введіть статус —
Самореєстрацію не пройдено
.
-
3.6. Видалення ролі unregistered-officer та призначення ролі officer посадовій особі
Після підтвердження реєстрації, дані передаються до сервісної задачі, яка використовує делегат Save user roles
для перепризначення ролей користувачам та збереження їх до БД Keycloak.
Ця задача виконує наступні дії:
-
Видаляє роль
unregistered-officer
у користувача, який проходить самореєстрацію. -
Додає роль officer до користувача після успішної самореєстрації.
Задача використовує делегат ${keycloakSaveUserRoleConnectorDelegate}
, який взаємодіє з Keycloak для зміни ролей користувача. Інформація про ролі та інші параметри передаються через input-параметри:
-
realm
встановлюється якOFFICER
. -
roles
містить список ролей, які будуть додані користувачу (у цьому випадку —officer
). -
username
отримує значення імені користувача, який проходить самореєстрацію (${initiator().userName}
). -
roleType
встановлюється наALL ROLES
, що вказує на те, що зміни будуть застосовані до всіх ролей користувача.
Детальніше про делегат ви можете переглянути на сторінці Збереження ролей користувачів до Keycloak (Save user roles). |
3.7. Виведення на форму інформації по успішне завершення процесу реєстрації
Ця задача (User Task) відображає інформаційне повідомлення для користувача після успішної самореєстрації. Користувач повинен переглянути інформацію та підтвердити її перегляд. Задача використовує шаблон форми User form
та ключ форми selfregistration-success
для відображення відповідного інтерфейсу користувача. Задача призначена для виконання ініціатором процесу самореєстрації (${initiator}
).
- Виконайте наступні налаштування:
-
-
У полі
Name
введіть назву користувацької задачі. -
Застосуйте шаблон делегата для цієї задачі — User Form.
-
Поєднайте користувацьку задачу із UI-формою за допомогою параметра
Form key
. Введіть значенняselfregistration-success
. -
У полі
Assignee
вкажіть змінну для особи, якій призначається поточна задача, —${initiator}
.
-
3.8. Встановлення результату виконання та завершення процесу
У наступних задачах встановіть результат виконання процесу, використавши для цього сервісну задачу та делегат Define business process status, та закінчіть процес подією завершення (End event).