Скрипт определения списка пользователей, обладающих ролью

Описание скрипта

Скрипт определяет список пользователей, обладающих ролью, и применяется для формирования списка оповещаемых лиц.

Место настройки скрипта

Форма добавления роли пользователей, см. Роли пользователей.

Когда выполняется скрипт

При отправке оповещения, если в качестве получателей оповещения выбрана скриптовая роль.

Результат выполнения скрипта

Возвращает список сотрудников, обладающих указанной ролью.

Переменные и их значения

Глобальные переменные:

  • user — текущий сотрудник, пользователь. Является объектом класса "Сотрудник" (employee).
  • ip — ip-адрес рабочего места пользователя user. Если действие выполняется автоматически системой (а не пользователем), то переменная не определяется.
  • appVersion — версия приложения.
  • api — используется для обращения к методам api, например api.utils, api.ldap, api.timing, см. Методы API;
  • modules — используется для обращения к скриптовому модулю и конкретному методу, определенному в нем, с помощью конструкции: modules.{код модуля}.{имя метода}({параметры метода}...), см. Скрипт текста модуля;
  • logger — используется для отладки скриптов и позволяет вывести в лог на указанный уровень переданную строку, см. Оформление и отладка скриптов.
  • utils — синоним api.utils.

Переменные контекста:

  • subject — объект, относительно которого проверяются права. Используется при создании относительной пользовательской роли. Наличие данной роли у пользователя вычисляется относительно отдельного объекта указанного класса.

    Значение subject может быть "null", если проверяются права на добавление объекта.

  • initialValues — значение атрибута на форме добавления объекта. Используется при проверке прав на добавление объекта. Позволяет выполнять проверку прав в момент открытия формы добавления и в момент сохранения объекта, учитывая заполнение значений атрибутов на форме добавления:

    • при открытии формы добавления объекта содержит значения атрибутов явно переданных в ссылке на форму добавления;
    • при сохранении формы добавления объекта также содержит значения атрибутов, введенные на форме добавления;
    • в других случаях значение переменной не определено (null).
  • oldSubject — объект до выполнения редактирования, для которого проверяется право. Во всех случаях, кроме непосредственно редактирования, данная переменная равна null. Переменная может быть использована только для пользовательских атрибутов.

    При использовании переменной значение атрибутов типа "Обратная ссылка" всегда будет равно null.

  • sourceObject — объект, относительно которого проверяется право, в данном скрипте sourceObject = null.
  • cardObject — объект, из карточки которого было инициировано действие.

    Если действие инициировано НЕ из карточки объекта, то cardObject = null.

Примеры скрипта

1. Скрипт формирует роль "Роль: Сотрудники команд, участвующих в голосовании". Все сотрудники команд, указанных в атрибуте из параметра, войдут в список пользователей обладающих ролью, т.е. получат оповещение.

 //код атрибута типа "Ссылка на бизнес-объект"
//"Набор ссылок на БО"/"Обратная ссылка" на класс "Команда""
def ATTR = 'teamAttrCode'
def collection = [] as Set
def voters = ([] + subject[ATTR]).findAll{it.removed == false}
if(voters != null && !voters.isEmpty())
{
voters.each()
{
collection += it.members.findAll{it.removed == false}
}
}
return collection

2. Скрипт возвращает сотрудников (в виде списка, который хранится в определенном атрибуте).

// Атрибут типа "Ссылка на бизнес-объект класса "Сотрудник"
def ATTR = 'attrCode' 
// Получение компании
def root = utils.get('root', [:])  
def dev_head = root[ATTR]
def objs = []
objs.add(dev_head)
return objs