Skip to content

Commit

Permalink
[EDP-DDM-27530] Added info about the renewed user and attributes crea…
Browse files Browse the repository at this point in the history
…tion and getting role delegates, added deprecated note, edited save-user-roles.adoc

Change-Id: I74fd13f685a3950eebab1b536e5ff5010613acbf
(cherry picked from commit be222587c111102b2955e2ca672e7e550ed9d2b1)
  • Loading branch information
[email protected] committed Mar 14, 2024
1 parent dfaa8ca commit aa463d5
Show file tree
Hide file tree
Showing 8 changed files with 482 additions and 8 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
include::platform:ROOT:partial$templates/document-attributes/default-set-ua.adoc[]

include::platform:ROOT:partial$admonitions/deprecated-ua.adoc[]
Використовуйте нові делегати для отримання ролей: +
- xref:bp-modeling/bp/element-templates/service-task-templates/user-roles/get-keycloak-roles-by-realm.adoc[] +
- xref:bp-modeling/bp/element-templates/service-task-templates/user-roles/get-keycloak-roles-from-user.adoc[]

include::platform:ROOT:partial$admonitions/language-ua.adoc[]

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
= Збереження ролей користувачів до Keycloak (Save user roles)
= Збереження ролей користувачів до Keycloak: _Save user roles_
include::platform:ROOT:partial$templates/document-attributes/default-set-ua.adoc[]

include::platform:ROOT:partial$admonitions/language-ua.adoc[]

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

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

Загальне інтеграційне розширення-делегат надає можливість взаємодіяти із сервісом управління ідентифікацією та доступом *Keycloak* для зміни ролей користувача. Делегат налаштовується у сервісних задачах (*Service Task*) бізнес-процесу за допомогою шаблону *Save user roles*.

.Короткі відомості про делегат
|===
|Назва | Пояснення
Expand All @@ -17,17 +23,26 @@ include::platform:ROOT:partial$admonitions/language-ua.adoc[]
|*_keycloakSaveUserRoleConnectorDelegate.json_*
|===

== Загальний опис
== Перед початком

include::partial$admonitions/install-element-templates.adoc[]

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

Загальне інтеграційне розширення-делегат надає можливість взаємодіяти із сервіс управління ідентифікацією та доступом *Keycloak* для зміни ролей користувача. Делегат налаштовується у сервісних задачах (*Service Task*) бізнес-процесу за допомогою шаблону *Save user roles*.
Делегат *Save user roles* призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він надає можливість додавати або змінювати ролі для надавачів та отримувачів послуг у Keycloak-реалмах `citizen` та `officer`.

== Налаштування шаблону у бізнес-процесі
=== Налаштування сервісного завдання

. Створіть *Service Task*.
. У полі *`Name`* вкажіть назву сервісної задачі.
. Застосуйте шаблон делегата *Save user roles* зі списку доступних у каталозі.

. У секції *Inputs > Roles* передайте ролі, які необхідно призначити користувачу. Наприклад, `officer`.
+
image:bp-modeling/bp/element-temp/service-task/save-user-roles/save-user-roles-01.png[]

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

. У секції menu:Inputs[Roles] передайте ролі, які необхідно призначити користувачу. Наприклад, `officer`.
+
[NOTE]
====
Expand Down Expand Up @@ -80,4 +95,30 @@ ${initiator().userName}
* Якщо при налаштуванні делегата передати регламентні ролі (_тут_ -- `manager1` і `manager2`), то необхідно обрати опцію *`REGISTRY ROLES`*.
====

image:bp-modeling/bp/element-temp/service-task/save-user-roles/delegate-save-user-roles-1.png[]
include::registry-develop:partial$snippets/element-templates/delegate-no-response.adoc[]

== Приклад

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

.Референтний приклад. Самостійна реєстрація надавачів послуг
image::bp-modeling/bp/element-temp/service-task/save-user-roles/delegate-save-user-roles-1.png[]

[TIP]
====
[%collapsible]
.Де можна знайти приклад референтного бізнес-процесу?
=====
include::registry-develop:partial$snippets/demo-reg-reference-examples-ua.adoc[]

Приклад BPMN-схеми процесу буде доступний у регламенті демо-реєстру за пошуком по ключовим словам -- *_officer-selfregistration-handmoderation_*. Назви форм ви можете знайти всередині відповідних користувацьких задач бізнес-процесу у полі *`Form key`*.
=====
====

== Пов'язані сторінки

* xref:bp-modeling/bp/element-templates/service-task-templates/user-roles/get-keycloak-roles-by-realm.adoc[]

* xref:bp-modeling/bp/element-templates/service-task-templates/user-roles/get-keycloak-roles-from-user.adoc[]

* xref:best-practices/bp-officer-self-register-manual.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
= Отримання ролей з Keycloak-реалму: _Get Keycloak roles by realm_
include::platform:ROOT:partial$templates/document-attributes/default-set-ua.adoc[]

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

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

Інтеграційне розширення *Get Keycloak roles by realm* дозволяє вам отримати список усіх ролей з певного Keycloak-реалму.

.Короткі відомості про делегат
|===
|Назва |Пояснення

|Бізнес-назва інтеграційного розширення
|*Get Keycloak roles by realm*

|Службова назва інтеграційного розширення
|`${keycloakGetRolesByRealmConnectorDelegate}`

|Назва файлу в бібліотеці розширень
|_keycloakGetRolesByRealmConnectorDelegate.json_
|===

== Перед початком

include::partial$admonitions/install-element-templates.adoc[]

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

Делегат *Get Keycloak roles by realm* призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він отримує список усіх ролей з певного Keycloak-реалму:

* `citizen` -- список ролей для призначення отримувачам послуг.
* `officer` -- список ролей для призначення надавачам послуг.

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

. Створіть завдання типу *Service Task* у вашому бізнес-процесі.
. Назвіть завдання, наприклад, `Отримання переліку можливих регламентих ролей для реалма`.
. Застосуйте шаблон делегата, обравши відповідний зі списку в налаштуваннях завдання.
+
image:bp-modeling/bp/element-temp/service-task/get-kc-roles-by-realm/get-keycloak-roles-by-realm-1.png[]

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

. У полі *Realm* оберіть `Officer` для надавачів послуг або `Citizen` для отримувачів послуг.
. Оберіть *Role Type*, щоб визначити, які ролі повертати: `REGISTRY ROLES`, `PLATFORM ROLES` або `ALL ROLES`. Ви можете запитати всі (системні та реєстрові), лише системні, або лише реєстрові ролі, доступні для використання у реєстрі. _За замовчуванням встановлено_ `REGISTRY ROLES`.
. Вкажіть змінну процесу (наприклад, `rolesResponse`), куди буде збережено відповідь. Ця змінна буде тимчасовою (transient). Це дозволяє ефективно управляти отриманими даними без зайвого зберігання інформації в базі даних.

Результатом виконання запита буде повернення переліку назв ролей певного користувача для визначеного реалма: `List<String>`.

.Приклад відповіді зі списком ролей у форматі JSON
[source,json]
----
[
"user",
"admin",
"hierarchy-registry-manager",
"personnel-officer-admin",
"reviewer"
]
----

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

.Приклад groovy-скрипту для отримання першої ролі з масиву
[source,groovy]
----
// Визначення масиву ролей
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)
----

== Приклад

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

.Референтний приклад. Управління користувачами
image::bp-modeling/bp/element-temp/service-task/get-kc-roles-by-realm/get-keycloak-roles-by-realm-2.png[]

[TIP]
====
[%collapsible]
.Де можна знайти приклад референтного бізнес-процесу?
=====
include::registry-develop:partial$snippets/demo-reg-reference-examples-ua.adoc[]

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

== Пов'язані сторінки

* xref:bp-modeling/bp/element-templates/service-task-templates/user-roles/get-keycloak-roles-from-user.adoc[]
* xref:bp-modeling/bp/element-templates/service-task-templates/save-user-roles.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
= Отримання ролей користувача з Keycloak: _Get Keycloak roles from user_
include::platform:ROOT:partial$templates/document-attributes/default-set-ua.adoc[]

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

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

Інтеграційне розширення *Get Keycloak roles from user* дозволяє вам отримати ролі користувача з певного Keycloak-реалму за `userName`.

.Короткі відомості про делегат
|===
|Назва |Пояснення

|Бізнес-назва інтеграційного розширення
|*Get Keycloak roles from user*

|Службова назва інтеграційного розширення
|`${keycloakGetUserRoleConnectorDelegate}`

|Назва файлу в бібліотеці розширень
|_keycloakGetUserRoleConnectorDelegate.json_
|===

== Перед початком

include::partial$admonitions/install-element-templates.adoc[]

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

Делегат *Get Keycloak roles from user* призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він отримує список ролей користувача з певного Keycloak-реалму за іменем користувача.

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

. Створіть завдання типу *Service Task* у вашому бізнес-процесі.
. Назвіть завдання, наприклад, `Отримання системних і реєстрових ролей користувача`.
. Застосуйте шаблон делегата, обравши відповідний зі списку в налаштуваннях завдання.
+
image:bp-modeling/bp/element-temp/service-task/get-kc-roles-from-user/get-keycloak-roles-from-user-1.png[]

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

. У полі *Realm* оберіть `Officer` для надавачів послуг або `Citizen` для отримувачів послуг.
. Для *Username* встановіть, наприклад, `${initiator}`, щоб вказати ініціатора процесу.
. Оберіть *Role Type*, щоб визначити, які ролі повертати: `REGISTRY ROLES`, `PLATFORM ROLES` або `ALL ROLES`. Ви можете запитати всі (системні та реєстрові), лише системні, або лише реєстрові ролі, доступні для використання у реєстрі. _За замовчуванням встановлено_ `REGISTRY ROLES`.
. Вкажіть змінну процесу (наприклад, `rolesResponse`), куди буде збережено відповідь. Ця змінна буде тимчасовою (transient). Це дозволяє ефективно управляти отриманими даними без зайвого зберігання інформації в базі даних.

Результатом виконання запита буде повернення переліку назв ролей певного користувача для визначеного реалма: `List<String>`.

.Приклад відповіді зі списком ролей у форматі JSON
[source,json]
----
[
"user",
"admin",
"hierarchy-registry-manager",
"personnel-officer-admin",
"reviewer"
]
----

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

.Приклад groovy-скрипту для отримання першої ролі з масиву
[source,groovy]
----
// Визначення масиву ролей
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)
----

== Приклад

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

.Референтний приклад. Призначення ролей та запуск бізнес-процесу за прямим посиланням
image::best-practices/bp-assign-role-via-url/assign-role-via-url-3.png[]

[TIP]
====
[%collapsible]
.Де можна знайти приклад бізнес-процесу?
=====
include::partial$snippets/demo-reg-reference-examples-ua.adoc[]

Приклад BPMN-схеми процесу буде доступний у регламенті демо-реєстру за пошуком по ключовим словам -- *_reference-assign-role-officer_ та _reference-assign-role_*.

Назви форм ви можете знайти всередині відповідних користувацьких задач (User Task) бізнес-процесів у полі *`Form key`*:

* _reference-assign-role-start-form.json_
* _reference-role-assigned-info-form.json_
* _reference-role-not-assigned-error-info-form.json_

У Кабінеті користувача бізнес-процес буде доступний у розділі menu:Доступні послуги[📂 Бізнес-процеси по призначенню ролей через спеціальні посилання].

image::best-practices/bp-assign-role-via-url/assign-role-via-url-06.png[]
=====
====

== Пов'язані сторінки

* xref:best-practices/bp-launch-via-url.adoc#get-keycloak-roles-from-user[Референтний приклад. Призначення ролей та запуск бізнес-процесу за прямим посиланням]
* xref:bp-modeling/bp/element-templates/service-task-templates/save-user-roles.adoc[]
* xref:bp-modeling/bp/element-templates/service-task-templates/user-roles/get-keycloak-roles-by-realm.adoc[]
Loading

0 comments on commit aa463d5

Please sign in to comment.