Функція system_user()

1. Опис

JUEL-функція system_user(): UserDto необхідна для отримання системного користувача з Keycloak.

2. Параметри

Ця функція не приймає параметрів.

3. Що повертає

Ця функція повертає об’єкт типу UserDto, що містить дані про системного користувача.

Таблиця 1. UserDto

Поле

Опис

userName

Ім’я користувача.

accessToken

Токен користувача.

language

Мова користувача.

drfo

Ідентифікаційний код користувача.

edrpou

Код ЄДРПОУ користувача.

fullName

Повне ім’я користувача.

roles

Ролі користувача.

subjectType

Тип суб’єкта користувача.

isRepresentative

Чи є користувач представником.

attributes

Інші атрибути користувача у вигляді ключів-значень.

UserDto — клас, що є обгорткою даних користувача (тут — системного користувача). Завжди містить у собі userName, токен і JwtClaimsDto.

4. Методи взаємодії

Функція надає наступні методи:

Таблиця 2. Методи взаємодії

Метод

Опис

getUserName()

Повертає ім’я користувача, що можна використовувати в полях Assignee та Candidate Users задач користувача.

getAccessToken()

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

getLanguage()

Повертає мову користувача, що можна використовувати для налаштування інтерфейсу.

getDrfo()

Делегує виклик на JwtClaimsDto та повертає Keycloak-атрибут drfo користувача.

getEdrpou()

Делегує виклик на JwtClaimsDto та повертає Keycloak-атрибут edrpou користувача.

getFullName()

Делегує виклик на JwtClaimsDto та повертає Keycloak-атрибут fullName користувача.

getRoles()

Повертає ролі користувача.

getSubjectType()

Повертає тип суб’єкта користувача.

isRepresentative()

Повертає, чи є користувач представником.

getAttributes()

Повертає інші атрибути користувача у вигляді ключів-значень.

Функція system_user() використовується для отримання інформації про системного користувача, що зберігається в Keycloak.

5. Приклади використання

Приклад 1. Використання функції system_user().accessToken

Один із можливих випадків використання функції system_user() — це передача X-Access-Token системного користувача для автентифікації під час виконання інтеграційних операцій у бізнес-процесі. Наприклад, у розширенні System signature by DSO service можна передати токен системного користувача, використовуючи функцію system_user() та метод accessToken.

${system_user().accessToken}
  • system_user() — викликає системного користувача, під яким відбувається процес.

  • accessToken — отримує токен доступу системного користувача.

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

Використання токенів інших користувачів

Крім токена системного користувача, є інші варіанти роботи з токенами в процесі:

  1. Використання токена ініціатора процесу. Ви можете отримати токен ініціатора, тобто користувача, який запустив процес, за допомогою функції initiator():

    ${initiator().accessToken}

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

  2. Використання токена виконавця попередньої задачі. Функція completer(): дозволяє отримати токен користувача, який завершив попереднє завдання у процесі:

    ${completer('Task definition ID').accessToken}

    'Task definition ID' — ідентифікатор попередньої задачі користувача.

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

Приклад 2. Отримання мови системного користувача

Функція system_user().language дозволяє отримати мову системного користувача для налаштування інтерфейсу або локалізації. Це корисно, коли потрібно забезпечити єдину локалізацію для системних дій або повідомлень у процесі.

Значення за замовчуванням для мови системного користувача береться з поточної локалі реєстру. Коли клієнтський додаток виконує запит до сервісів user-task-management або user-process-management, значення HTTP-заголовка Accept-Language зберігається разом із JWT-токеном системного користувача в БД Redis для подальшого доступу через JUEL-функцію system_user().language.

Приклад. Отримання мови системного користувача для налаштування локалізації
${system_user().language}

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