Створення користувача в Keycloak: Create Keycloak officer user

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

1. Загальна інформація

Інтеграційне розширення Create Keycloak officer user дозволяє вам отримати список усіх ролей з певного Keycloak-реалму.

Таблиця 1. Короткі відомості про делегат
Назва Пояснення

Бізнес-назва інтеграційного розширення

Create Keycloak officer user

Службова назва інтеграційного розширення

${keycloakCreateOfficerUserDelegate}

Назва файлу в бібліотеці розширень

keycloakCreateOfficerUserDelegate.json

2. Перед початком

Якщо ви використовуєте функціональність Кабінету адміністратора регламентів для розробки реєстру, вам не потрібно встановлювати типові розширення, додаткові зовнішні застосунки та плагіни. Портал містить усе необхідне вбудоване з коробки.

При моделюванні бізнес-процесів із використанням сторонніх застосунків, важливо інтегрувати каталог типових розширень з нашого репозиторію. Завітайте до business-process-modeler-extensions, щоб завантажити необхідні файли. Наприклад, для таких інструментів, як Camunda Modeler, у вашій теці /element-templates мають бути включені відповідні JSON-файли. Для детальних інструкцій, будь ласка, перегляньте Встановлення типових розширень.

3. Налаштування делегата

Делегат Create Keycloak officer user призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він створює користувачів (надавачів послуг) у Keycloak-реалмі officer зі збереженням визначених атрибутів. Це охоплює як обов’язкові атрибути, зокрема fullName, edrpou та drfo так і будь-які додаткові, надаючи більш гнучке налаштування профілів користувачів залежно від конкретних вимог бізнесу та безпеки.

3.1. Налаштування сервісного завдання

  1. Створіть завдання типу Service Task у вашому бізнес-процесі.

  2. Назвіть завдання, наприклад, Створення користувача в Keycloak.

  3. Застосуйте шаблон делегата, обравши відповідний зі списку в налаштуваннях завдання.

    create keycloak officer user 1

3.2. Налаштування делегата

  1. У розділі Inputs вкажіть map атрибутів користувача з Keycloak.

    1. Local variable assignment  ON.

    2. Assignment type: String or expression.

    3. У полі Value вкажіть перелік додаткових атрибутів. Наприклад, ${attributes.value}. Додаткові атрибути не є обов’язковими для створення користувача у Keycloak і використовуються у специфічних сценаріях, відповідно до передбаченої бізнес-логіки.

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

      def formData = submission('UserTask_SignOfficerAttributes').formData
              def attributes = [:]
              if(formData.hasProp('workStartDate') && !formData.prop('workStartDate').value().isEmpty()) {
              attributes.workStartDate = formData.prop('workStartDate').value()
              }
      
              attributes.hierarchy_code = formData.prop('unit').prop('hierarchyCode').value()
              set_transient_variable('attributes', attributes)
  2. У розділі Custom properties вкажіть перелік основних обов’язкових атрибутів користувача, а також змінну для збереження результату.

    1. У полі Full name вкажіть прізвище, ім’я та по батькові користувача. Відповідає Keycloak-атрибуту fullName. Наприклад:

      ${submission('UserTask_SignOfficerAttributes').formData.prop('fullName').value()}

      У цьому прикладі передаємо значення атрибута, отримане з UI-форми UserTask_SignOfficerAttributes за допомогою кастомної JUEL-функції submission().

    2. У полі Drfo вкажіть ідентифікаційний номер користувача (також — РНОКПП). Відповідає Keycloak-атрибуту drfo. Наприклад:

      ${submission('UserTask_SignOfficerAttributes').formData.prop('drfo').value()}

      У цьому прикладі передаємо значення атрибута, отримане з UI-форми UserTask_SignOfficerAttributes за допомогою кастомної JUEL-функції submission().

    3. (Необов’язковий параметр). У полі Edrpou вкажіть ЄДРПОУ користувача. Відповідає Keycloak-атрибуту edrpou. Наприклад:

      ${submission('UserTask_SignOfficerAttributes').formData.prop('fullName').value()}

      У цьому прикладі передаємо значення атрибута, отримане з UI-форми UserTask_SignOfficerAttributes за допомогою кастомної JUEL-функції submission().

    4. Вкажіть змінну процесу (наприклад, keycloakUserName), куди буде збережено відповідь. Ця змінна буде тимчасовою (transient). Це дозволяє ефективно управляти отриманими даними без зберігання інформації в БД.

У результаті, буде система створить користувача зі збереженим списком атрибутів у БД Keycloak.

Після завершення операції, делегат отримує у відповідь ім’я користувача у форматі рядка (String). Наприклад:

username

4. Приклад

Ось референтний приклад, який показує, як відповідний делегат використовується у бізнес-процесі:

create keycloak officer user 2
Зображення 1. Референтний приклад. Управління посадовими особами
Де можна знайти приклад референтного бізнес-процесу?

Адміністратор Платформи може розгорнути для вас демо-реєстр — еталонний реєстр, що містить референтні та інші приклади файлів для створення цифрового регламенту. Він містить різноманітні елементи для розробки моделі даних, бізнес-процесів, UI-форм, аналітичної звітності, витягів, сповіщень, зовнішніх інтеграцій та багато іншого.

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

Приклад BPMN-схеми процесу буде доступний у регламенті демо-реєстру за пошуком по ключовим словам — reference-officers-management. Назви форм ви можете знайти всередині відповідних користувацьких задач бізнес-процесу у полі Form key.