Скрипт кастомизации уведомления на портале

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

Скрипт кастомизации уточняет параметры отправки уведомления на портале или само отправляемое уведомление.

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

  • Форма добавления действия по событию (для уведомления на портал).
  • Форма редактирования действия по событию (для уведомления на портал).

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

Скрипт выполняется после проверки условий действия по событию, перед выполнением отправки уведомления.

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

Нет возвращаемого значения.

Некоторые значения можно вложить в ассоциативный массив для последующего использования в теле уведомления. Пример: pushPortal.scriptParams['param'] = 123.

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

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

  • user — пользователь, инициализировавший событие. Является объектом класса "Сотрудник" (employee).

    Если событие инициализировал суперпользователь, то user=null.

    Если событие инициализировано скриптом (скриптовое действие по событию, скрипт на вход в статус), то переменная user берется из контекста инициировавшего его скрипта.

    Пример: пользователь выполнил изменение атрибута → произошло изменение статуса объекта (действие по событию) → произошло изменение ответственного (действие на вход в статус) → произошло оповещение (действие по событию) .Во всех скриптах этой цепочки переменная user должна содержать сотрудника, выполнившего первоначальное изменение атрибута.

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

    Пример цепочки: пользователь изменяет статус объекта → инициируется событие "Смена статуса" → выполняется редактирование объекта (скрипт действия при входе в статус редактирует переменную subject через utils.edit) → инициируется событие "Изменение объекта" → отправляется оповещение (скрипт действия по событию "Изменение объекта"). Если в данной цепочке в переменную utils.edit не передать значение user, то в скрипте действия по событию user=null.

    Пример: Передача значения переменной user в следующий скрипт цепочки действий редактировании объекта.

    def serviceCall = utils.get('serviceCall$3801');

    utils.edit(serviceCall, ['title' : 'qwerty', '@user' : user]);

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

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

  • subject — текущий объект, над которым производится действие.

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

  • pushPortal — текущее уведомление, для которого выполняется настройка.

    • scriptParams['param'] — задает значения для каждой переменной, которая будет использоваться в тексте уведомления.
    • toEmployee — список сотрудников-получателей уведомления. Используется для добавления сотрудника в список получателей уведомления.

      Поле push.toEmployee всегда будет пустым списком в момент начала выполнения скрипта. Данное поле необходимо заполнять в самом скрипте

    • toRemoveEmployee — используется для исключения сотрудника из списка получателей уведомления.
    • portalNoticeLink — ссылка на объект, размещенная в уведомлении. Используется для размещения ссылки, по которой можно перейти на карточку объекта при нажатии на уведомление.
  • lang — локаль текущего уведомления, для которого выполняется настройка.

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

1. Добавление одного сотрудника в список получателей уведомления:

pushPortal.toEmployee << empl

2. Удаление сотрудника из получателей уведомления:

pushPortal.toRemoveEmployee << empl