Деривация ролей
Предлагаю вкратце рассмотреть, что представляет из себя деривация ролей.
Вступление
Рассмотрим ситуацию, в которой функциональному консультанту необходимо создать несколько пользовательских ролей, отличающихся, к примеру, значением Раздела персонала (PERSA). Задача довольно простая, и есть, как минимум, два способа ее решения.
Первый способ — создавать несколько ролей, используя в профиле полномочий разные значение для PERSA.
Второй способ — создать одну мастер-роль, в которой определить необходимый набор полномочий. Затем создать зависимые роли, указав, что для них будет использован механизм деривации полномочий из мастер-роли. И в итоге заполнить вновь созданные (зависимые) роли полномочиями (из мастер-роли). Ниже будет рассмотрен второй способ.
1. Создание мастер-роли
Создайте мастер-роль и определите в ней полномочия, которые в последующем будут унаследованы во все зависимые роли
В роль ZHR_ROLE_XXXX я добавил объект полномочий P_ORGIN, для которого определил только те значения, которые, как мне кажется, не будут меняться в зависимости от раздела персонала. Сам же раздел персонала я оставляю без значения (то есть открытым). Запускаю генерацию профиля нажатием на кнопку .
2. Создание «зависимых» ролей
В рамках данной заметки я создам две зависимые роли, которые, по легенде, будут предназначены для различных Разделов персонала (PERSA):
- ZHR_ROLE_ES01
- ZHR_ROLE_ES02
При создании роли, обратите внимание на поле Derive from. Для данного поля необходимо указать наименование мастер-роли, из которой будет скопирован профиль полномочий (см. пункт #1 Создание мастер-роли)
Сохраните внесенные изменения. В появившемся информационном сообщении нажмите на кнопку YES
После сохранения
Еще раз обращаю ваше внимание на то, что на данном шаге для зависимых ролей не требуется создания/изменения профиля полномочий.
Итого, создали одну главную роль, и две зависимые:
3. Копирование профиля полномочий в подчиненные роли
Откройте мастер-роль ZHR_ROLE_XXXX, перейдите в ее профиль полномочий, и нажмите на кнопку Generate derived roles
Открываем и проверяем роль ZHR_ROLE_ES01
Профиль полномочий скопирован. Теперь для зависимой роли необходимо указать значение для Раздела персонала, и сгенерировать профиль еще раз. Аналогичная ситуация и для роли ZHR_ROLE_ES02
4. Добавление новых объектов полномочий
Для того, чтобы добавить новый объект полномочий, необходимо внести изменения только в мастер-роль. Например, в мастер-роль ZHR_ROLE_XXXX добавим объект полномочий S_TCODE
Генерируем профиль, применяем выполненные изменения для всех зависимых ролей, нажав на кнопку Generate derived roles.
Проверяем ZHR_ROLE_ES01 / ZHR_ROLE_ES02
[
5. Минусы использования данного подхода
Основным минусом данного способа, с моей точки зрения, является возможность затереть изменения, сделанные в зависимых в ролях, при условии, что вы будете обновлять профиль полномочий мастер-роли. Изменения, сделанные в зависимых ролях, не реплицируются на мастер-роль.
Применительно к ситуации, рассмотренной в данной заметке: если я захочу добавить какой-нибудь объект в роль _ZHR_ROLE_XXXX _и затем применить эти изменения к двум зависимым ролям (ZHR_ROLE_ES01 / ZHR_ROLE_ES02), то значения разделов персонала, которые я вручную указал в обеих зависимых ролях, будут перезаписаны значением из, так называемой, шаблонной роли.
К сожалению, я почти не пользовался данным функционалом. Поэтому рассуждения мои относительно минусов могут быть ошибочными. В любом случае, более детальную информацию можно получить здесь: Role Derivation.