Отримання ролей користувача з Keycloak: Get Keycloak roles from user
Цей документ пояснює, як отримати системні та реєстрові ролі користувача з Keycloak у бізнес-процесі.
1. Загальна інформація
Інтеграційне розширення Get Keycloak roles from user дозволяє вам отримати ролі користувача з певного Keycloak-реалму за userName.
| Назва | Пояснення | 
|---|---|
| Бізнес-назва інтеграційного розширення | Get Keycloak roles from user | 
| Службова назва інтеграційного розширення | 
 | 
| Назва файлу в бібліотеці розширень | keycloakGetUserRoleConnectorDelegate.json | 
2. Перед початком
| Якщо ви використовуєте функціональність Кабінету адміністратора регламентів для розробки реєстру, вам не потрібно встановлювати типові розширення, додаткові зовнішні застосунки та плагіни. Портал містить усе необхідне вбудоване з коробки. При моделюванні бізнес-процесів із використанням сторонніх застосунків, важливо інтегрувати каталог типових розширень з нашого репозиторію. Завітайте до business-process-modeler-extensions, щоб завантажити необхідні файли. Наприклад, для таких інструментів, як Camunda Modeler, у вашій теці /element-templates мають бути включені відповідні JSON-файли. Для детальних інструкцій, будь ласка, перегляньте Встановлення типових розширень. | 
3. Налаштування
Делегат Get Keycloak roles from user призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він отримує список ролей користувача з певного Keycloak-реалму за іменем користувача.
3.1. Налаштування сервісного завдання
- 
Створіть завдання типу Service Task у вашому бізнес-процесі. 
- 
Назвіть завдання, наприклад, Отримання системних і реєстрових ролей користувача.
- 
Застосуйте шаблон делегата, обравши відповідний зі списку в налаштуваннях завдання.  
3.2. Налаштування делегата
- 
У полі Realm оберіть Officerдля надавачів послуг абоCitizenдля отримувачів послуг.
- 
Для Username встановіть, наприклад, ${initiator}, щоб вказати ініціатора процесу.
- 
Оберіть Role Type, щоб визначити, які ролі повертати: REGISTRY ROLES,PLATFORM ROLESабоALL ROLES. Ви можете запитати всі (системні та реєстрові), лише системні, або лише реєстрові ролі, доступні для використання у реєстрі. За замовчуванням встановленоREGISTRY ROLES.
- 
Вкажіть змінну процесу (наприклад, rolesResponse), куди буде збережено відповідь. Ця змінна буде тимчасовою (transient). Це дозволяє ефективно управляти отриманими даними без зайвого зберігання інформації в базі даних.
Результатом виконання запита буде повернення переліку назв ролей певного користувача для визначеного реалма: List<String>.
[
  "user",
  "admin",
  "hierarchy-registry-manager",
  "personnel-officer-admin",
  "reviewer"
]Надалі ви зможете використовувати отриманий список ролей для різних цілей у бізнес-процесі. Наприклад, ви зможете отримати лише певну роль зі списку за індексом, сформувати payload із відповідним значенням та зберегти до тимчасової змінної для подальшого застосування у процесі:
// Визначення масиву ролей
def roles = ["user", "admin", "hierarchy-registry-manager", "personnel-officer-admin", "reviewer"]
// Отримання першої ролі з масиву
def firstRole = roles[0]
// Формування результату. Наприклад, створимо Map для тимчасової змінної payload
def payload = [firstRole: firstRole]
// Припустимо, що весь масив ролей є доступними ролями, які ми хочемо зберегти
def availableRoles = roles
// Запис даних у змінні процесу
set_transient_variable('payload', payload)
set_variable('availableRoles', availableRoles)4. Приклад
Ось референтний приклад, який показує, як відповідний делегат використовується у бізнес-процесі:
 
| Де можна знайти приклад бізнес-процесу?Адміністратор Платформи може розгорнути для вас демо-реєстр — еталонний реєстр, що містить референтні та інші приклади файлів для створення цифрового регламенту. Він містить різноманітні елементи для розробки моделі даних, бізнес-процесів, UI-форм, аналітичної звітності, витягів, сповіщень, зовнішніх інтеграцій та багато іншого. Еталонний регламент з прикладами для України зберігається в репозиторії  Детальну інструкцію щодо розгортання демо-реєстру та отримання референтних прикладів моделювання ви знайдете на сторінці Розгортання демо-реєстру із референтними прикладами. Приклад BPMN-схеми процесу буде доступний у регламенті демо-реєстру за пошуком по ключовим словам — reference-assign-role-officer та reference-assign-role. Назви форм ви можете знайти всередині відповідних користувацьких задач (User Task) бізнес-процесів у полі  
 У Кабінеті користувача бізнес-процес буде доступний у розділі .   |