Самостійна реєстрація користувачів з автоматичною модерацією

1. Загальний опис

Розглянемо опис бізнес-процесу самостійної реєстрації посадових осіб (надавачів послуг) з автоматичною модерацією.

Цей процес виконує самореєстрацію посадової особи, перевіряючи, чи належить ЄДРПОУ (код юридичної особи) до дозволеного переліку. Ось кроки, які проходить процес:

  1. Автоматичний старт процесу після автентифікації з роллю unregistered-officer.

  2. Виконується перевірка, чи належить ЄДРПОУ до дозволеного переліку (ексклюзивний шлюз).

  3. Якщо ЄДРПОУ належить до дозволеного переліку (Так):

    1. Видаляється роль unregistered-officer і додається роль officer.

    2. Інформує користувача про успішну самореєстрацію і необхідність повторного логіну.

    3. Змінює статус на Самореєстрацію пройдено.

    4. Процес завершується зі статусом Самореєстрацію пройдено.

  4. Якщо ЄДРПОУ не належить до дозволеного переліку (Ні):

    1. Інформує користувача про відсутність дозволу на самореєстрацію.

    2. Змінює статус на Самореєстрацію не пройдено.

    3. Процес завершується зі статусом Самореєстрацію не пройдено.

Перелік дозволених ЄДРПОУ задається при моделюванні 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. Назви форм ви можете знайти всередині відповідних користувацьких задач бізнес-процесу у полі Form key.

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

3.1. Створення пулу для учасника процесу

Створіть пул (Participant) для учасника процесу — посадової особи-заявника, яка самореєструється.

Вкажіть наступні параметри у налаштуваннях:

  • Participant Name — назва пулу для процесу.

  • Process ID — ідентифікатор процесу в регламенті реєстру.

  • Process name — бізнес-назва процесу.

  • Активуйте чекбокс Executable.

officer self register auto mod 01

3.2. Початок процесу

Змоделюйте стартову подію. Ця подія ініціює автоматичний старт процесу після автентифікації з роллю unregistered-officer.

  • Вкажіть назву задачі.

  • Вкажіть ініціатора процесу як initiator.

    Що таке ініціатор?

    "Start initiator = initiator" вказує на те, що значення ініціатора (тобто особи чи системи, яка розпочала процес) буде встановлено як initiator.

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

    У цьому випадку, initiator може бути використаний для ідентифікації особи чи системи, що стартували процес, у подальших етапах бізнес-процесу або для контролю доступу до ресурсів.

officer self register auto mod 1

3.3. Моделювання XOR-шлюзу та додавання логіки через вирази умови

Змоделюйте XOR-шлюз, який на основі певної умови визначатиме, за яким потоком далі піде бізнес-процес. У нашому випадку ексклюзивний шлюз перевіряє, чи належить код ЄДРПОУ до переліку дозволених.

Перелік дозволених ЄДРПОУ задається при моделюванні Condition expression. Роль користувача змінюється з unregistered-officer на officer у разі успішної самореєстрації.

У нашому базовому бізнес-процесі перевірка коду ЄДРПОУ на відповідність списку дозволених значень не є обов’язковою. Цей крок виконується лише для перевірки альтернативного сценарію, який гарантує, що при виникненні помилок або невдалій валідації, користувач не зможе завершити процес реєстрації.

officer self register auto mod 2

Якщо ЄДРПОУ не належить до дозволеного переліку (Ні), тобто підпадає під умову ${initiator().edrpou != '15250623'} (введіть ваш код/коди), то процес іде за альтернативним потоком та:

  1. Інформує користувача про відсутність дозволу на самореєстрацію.

  2. Змінює статус на Самореєстрацію не пройдено.

  3. Процес завершується зі статусом Самореєстрацію не пройдено, а користувач залишається з роллю unregistered-officer.

officer self register auto mod 2 1

Якщо ЄДРПОУ належить до дозволеного переліку (Так), тобто підпадає під умову ${initiator().edrpou == '15250623'} (введіть ваш код/коди), то процес іде за основним потоком та:

  1. Видаляється роль unregistered-officer і додається роль officer.

  2. Інформує користувача про успішну самореєстрацію і необхідність повторного логіну.

  3. Змінює статус на Самореєстрацію пройдено.

  4. Процес завершується зі статусом Самореєстрацію пройдено.

officer self register auto mod 2 2

3.4. Виведення інформації на форму про відсутність дозволу на реєстрацію (альтернативний потік)

Ця задача є користувацькою задачею (User Task) і призначена для надання інформації користувачеві про відсутність дозволу на реєстрацію.

Ця задача призначена для ініціатора процесу (camunda:assignee="${initiator}"), який є заявником. Форма, пов’язана з цією задачею, має ключ selfregistration-denied-automoderation (camunda:formKey="selfregistration-denied-automoderation"), який відображає форму з інформацією про відсутність дозволу на реєстрацію.

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

  2. Застосуйте шаблон делегата для цієї задачі — User Form.

  3. Поєднайте користувацьку задачу із UI-формою за допомогою параметра Form key. Введіть значення selfregistration-denied-automoderation.

  4. У полі Assignee вкажіть змінну для особи, якій призначається поточна задача, — ${initiator}.

officer self register auto mod 3

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

3.5. Визначення статусу виконання процесу (альтернативний потік)

Ця задача встановлює результат виконання процесу "Самореєстрацію не пройдено" за допомогою шаблону делегата defineBusinessProcessStatusDelegate. Задача приймає вхідні дані з попередньої задачі та передає результат до наступного етапу процесу.

Встановіть результат виконання:
  1. Оберіть шаблон делегата Define business process status у списку доступних.

  2. У полі Status введіть статус — Самореєстрацію не пройдено.

officer self register auto mod 4

3.6. Видалення ролі unregistered-officer та призначення ролі officer посадовій особі

Після підтвердження реєстрації, дані передаються до сервісної задачі, яка використовує делегат Save user roles для перепризначення ролей користувачам та збереження їх до БД Keycloak.

Ця задача виконує наступні дії:

  1. Видаляє роль unregistered-officer у користувача, який проходить самореєстрацію.

  2. Додає роль officer до користувача після успішної самореєстрації.

Задача використовує делегат ${keycloakSaveUserRoleConnectorDelegate}, який взаємодіє з Keycloak для зміни ролей користувача. Інформація про ролі та інші параметри передаються через input-параметри:

  • realm встановлюється як OFFICER.

  • roles містить список ролей, які будуть додані користувачу (у цьому випадку — officer).

  • username отримує значення імені користувача, який проходить самореєстрацію (${initiator().userName}).

  • roleType встановлюється на ALL ROLES, що вказує на те, що зміни будуть застосовані до всіх ролей користувача.

officer self register auto mod 5

Детальніше про делегат ви можете переглянути на сторінці Збереження ролей користувачів до Keycloak (Save user roles).

3.7. Виведення на форму інформації по успішне завершення процесу реєстрації

Ця задача (User Task) відображає інформаційне повідомлення для користувача після успішної самореєстрації. Користувач повинен переглянути інформацію та підтвердити її перегляд. Задача використовує шаблон форми User form та ключ форми selfregistration-success для відображення відповідного інтерфейсу користувача. Задача призначена для виконання ініціатором процесу самореєстрації (${initiator}).

Виконайте наступні налаштування:
  1. У полі Name введіть назву користувацької задачі.

  2. Застосуйте шаблон делегата для цієї задачі — User Form.

  3. Поєднайте користувацьку задачу із UI-формою за допомогою параметра Form key. Введіть значення selfregistration-success.

  4. У полі Assignee вкажіть змінну для особи, якій призначається поточна задача, — ${initiator}.

officer self register auto mod 6

3.8. Встановлення результату виконання та завершення процесу

У наступних задачах встановіть результат виконання процесу, використавши для цього сервісну задачу та делегат Define business process status, та закінчіть процес подією завершення (End event).