Пошук користувачів реєстру: Search registry users

Цей документ надає інструкції щодо використання інтеграційного розширення для пошуку користувачів у реєстрі через REST API.

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

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

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

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

Search registry users

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

${searchRegistryUsersByRoleAndAttributes}

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

searchRegistryUsersByRoleAndAttributes.json

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

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

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

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

Делегат Search registry users призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він дозволяє виконати пошук користувачів у реєстрі за заданими атрибутами, роллю. Keycloak API отримує POST-запити із заданими параметрами та повертає масив користувачів, які надалі можна використати у бізнес-процесі.

Наразі обов’язковими атрибутами для всіх реєстрів є drfo та fullName.

Реєстри можуть також використовувати довільні атрибути. Наприклад, hierachy_code.

Зверніть увагу, що залежно від контексту вашої бізнес-логіки, довільний атрибут може бути обов’язковим. Наприклад, коли ви використовуєте ієрархічну модель доступу до даних. Більш детально про це — див. Ієрархічна модель.

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

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

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

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

    search registry users 01

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

У розділі Custom properties налаштуйте параметри пошуку. Секція Inputs дозволяє задати параметри для виконання пошуку.

3.2.1. Пошукові критерії

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

Важливо розуміти, що подані приклади наведені у вигляді JSON-об’єктів для зручності пояснення і можуть варіюватися залежно від специфіки API, через який ви робите запит.
Attributes Equals

Map атрибутів для точного пошуку.

Критерій Attributes Equals використовується для знаходження користувачів, атрибути яких точно збігаються зі вказаними значеннями.

Приклад JSON
{
  "attributesEquals": {
    "department": "HR",
    "role": "manager"
  }
}

У цьому прикладі система знайде користувачів, у яких атрибут department точно дорівнює "HR" і атрибут role точно дорівнює "manager".

Attributes Starts With

Map атрибутів для пошуку за початковими символами.

Критерій Attributes Starts With шукає користувачів, атрибути яких починаються з вказаних у запиті символів.

Приклад JSON
{
  "attributesStartsWith": {
    "lastName": "Iva"
  }
}

Тут пошук буде здійснюватися серед користувачів, прізвище яких починається з "Iva", наприклад, "Ivanenko", "Ivanov" тощо.

Attributes that are start for

Map, що містить атрибути, значення яких мають бути початком для значень вказаних атрибутів користувача.

Критерій Attributes that are start for перевертає логіку пошуку Attributes Starts With, шукаючи користувачів, значення атрибутів яких є початком для значення, заданого в запиті.

Приклад JSON
{
  "attributesThatAreStartFor": {
    "projectCode": "Proj123"
  }
}

У цьому випадку будуть знайдені користувачі, атрибути яких містять значення, що є початком для "Proj123". Наприклад, якщо користувач має атрибут projectCode зі значенням "Proj", він відповідає критерію.

3.2.2. Приклад пошуку за критерієм Attributes Starts With

Розглянемо приклад використання пошукового критерію Attributes Starts With.

Цей приклад виконає пошук користувачів, атрибут hierarchy_code яких починається з "01".

  1. Inputs  Attributes Starts With.

    1. Local variable assignment  ON

    2. Assignment type: Map

    3. Map entries: Задайте пари ключ-значення для пошуку.

    4. Realm: Вкажіть реалм (OFFICER або CITIZEN), у якому потрібно здійснити пошук користувачів.

    5. Status: Статус облікового запису користувача в Keycloak (ENABLED, DISABLED або ALL). Якщо не задано використовує ALL.

    6. Username: Ім’я облікового запису користувача в Keycloak.

    7. Rolename: Роль користувача.

    8. Limit: Кількість користувачів, яких потрібно повернути у відповіді. Якщо не задано або ≤ 0, застосовується значення 100. Максимально допустиме значення — 100.

    9. Offset: Кількість користувачів, яких слід пропустити перед поверненням результатів. Якщо не задано, використовується значення 0.

  2. Outputs  Result variable.
    Вкажіть змінну процесу, до якої буде записано відповідь зі списком користувачів, наприклад, usersResponse.

Приклад формування map атрибутів для пошуку
{
  "hierarchy_code": "${initiator().attributes["hierarchy_code"].get(0)}",
  "realm": "OFFICER",
  "status": "all",
  "username": "acde070d-8c4c-4f0d-9d8a-162843c10333",
  "role": "officer",
  "limit": 10
}

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

Приклад. Тіло відповіді. Об’єкт зі списком користувачів та додатковою інформацією про пагінацію
{
  "users": [
    {
      "enabled": true,
      "id": "c4f8dad1-298b-44ee-9ca2-c83088f160e4",
      "userName": "userName",
      "fullName": "Іванов Іван Іванович",
      "attributes": {
        "edrpou": "11111111",
        "drfo": "1010101010"
      }
    },
    {
      "enabled": true,
      "id": "acde070d-8c4c-4f0d-9d8a-162843c10333",
      "userName": "userName2",
      "fullName": "Петров Петро Петрович",
      "attributes": {
        "edrpou": "22222222",
        "drfo": "2020202020"
      }
    }
  ]
}