Збереження атрибутів надавача послуг в Keycloak: Save officer user attributes to Keycloak

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

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

Інтеграційне розширення Save officer user attributes to Keycloak дозволяє вам додавати атрибути користувача в Keycloak-реалмі officer.

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

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

Save officer user attributes to Keycloak

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

${keycloakSaveOfficerUserAttributesDelegate}

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

keycloakSaveOfficerUserAttributesDelegate.json

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

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

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

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

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

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

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

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

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

    save officer user attributes to kc 2

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_SignUserWithUpdatedAttributes').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().

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

Після завершення операції, делегат не отримує жодних даних у відповідь.

4. Приклад

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

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

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

Еталонний регламент з прикладами для України зберігається в репозиторії ua-registry-demo-regulation.

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

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