Деривация ролей

Предлагаю вкратце рассмотреть, что представляет из себя деривация ролей.

Вступление

Рассмотрим ситуацию, в которой функциональному консультанту необходимо создать несколько пользовательских ролей, отличающихся, к примеру, значением Раздела персонала (PERSA). Задача довольно простая, и есть, как минимум, два способа ее решения.

Первый способ — создавать несколько ролей, используя в профиле полномочий разные значение для PERSA.

Второй способ — создать одну мастер-роль, в которой определить необходимый набор полномочий. Затем создать зависимые роли, указав, что для них будет использован механизм деривации полномочий из мастер-роли. И в итоге заполнить вновь созданные (зависимые) роли полномочиями (из мастер-роли). Ниже будет рассмотрен второй способ.

1. Создание мастер-роли

Создайте мастер-роль и определите в ней полномочия, которые в последующем будут унаследованы во все зависимые роли

Рисунок 1.

В роль ZHR_ROLE_XXXX я добавил объект полномочий P_ORGIN, для которого определил только те значения, которые, как мне кажется, не будут меняться в зависимости от раздела персонала. Сам же раздел персонала я оставляю без значения (то есть открытым). Запускаю генерацию профиля нажатием на кнопку .

2. Создание «зависимых» ролей

В рамках данной заметки я создам две зависимые роли, которые, по легенде, будут предназначены для различных Разделов персонала (PERSA):

  • ZHR_ROLE_ES01
  • ZHR_ROLE_ES02

При создании роли, обратите внимание на поле Derive from. Для данного поля необходимо указать наименование мастер-роли, из которой будет скопирован профиль полномочий (см. пункт #1 Создание мастер-роли)

Рисунок 3.

Сохраните внесенные изменения. В появившемся информационном сообщении нажмите на кнопку YES

Рисунок 4.

После сохранения

Рисунок 5.

Еще раз обращаю ваше внимание на то, что на данном шаге для зависимых ролей не требуется создания/изменения профиля полномочий.

Итого, создали одну главную роль, и две зависимые:

Рисунок 6.

3. Копирование профиля полномочий в подчиненные роли

Откройте мастер-роль ZHR_ROLE_XXXX, перейдите в ее профиль полномочий, и нажмите на кнопку  Generate derived roles

Рисунок 7.

Открываем и проверяем роль ZHR_ROLE_ES01

Рисунок 8.

Профиль полномочий скопирован. Теперь для зависимой роли необходимо указать значение для Раздела персонала, и сгенерировать профиль еще раз. Аналогичная ситуация и для роли ZHR_ROLE_ES02

Рисунок 9.

4. Добавление новых объектов полномочий

Для того, чтобы добавить новый объект полномочий, необходимо внести изменения только в мастер-роль. Например, в мастер-роль ZHR_ROLE_XXXX добавим объект полномочий S_TCODE

Рисунок 10.

Генерируем профиль, применяем выполненные изменения для всех зависимых ролей, нажав на кнопку Generate derived roles.

Проверяем ZHR_ROLE_ES01 / ZHR_ROLE_ES02

[Рисунок 11.

5. Минусы использования данного подхода

Основным минусом данного способа, с моей точки зрения, является возможность затереть изменения, сделанные в зависимых в ролях, при условии, что вы будете обновлять профиль полномочий мастер-роли. Изменения, сделанные в зависимых ролях, не реплицируются на мастер-роль.

Применительно к ситуации, рассмотренной в данной заметке: если я захочу добавить какой-нибудь объект в роль _ZHR_ROLE_XXXX _и затем применить эти изменения к двум зависимым ролям (ZHR_ROLE_ES01 / ZHR_ROLE_ES02), то значения разделов персонала, которые я вручную указал в обеих зависимых ролях, будут перезаписаны значением из, так называемой, шаблонной роли.

К сожалению, я почти не пользовался данным функционалом. Поэтому рассуждения мои относительно минусов могут быть ошибочными. В любом случае, более детальную информацию можно получить здесь: Role Derivation.

Read more