Перейти к основному содержимому
Версия: 1.21.3

Системные события

Системные события позволяют создавать задачи для выполнения скрипта на стороне сервера или отправки уведомления в указанный момент времени. Это наиболее распространенные варианты использования системных событий. Вы также можете использовать один реестр событий для обеих перечисленных выше задач.

подсказка

Требуемая роль: admin.

Чтобы использовать системные события в своих задачах, выполните следующие шаги:

  1. Создайте запись в реестре событий.
  2. Определите серверый скрипт для системного события, создав запись в таблице Скрипты действий для событий (sys_event_script_action).
  3. Определите правило отправки уведомлений.
  4. Вы можете комбинировать перечисленные выше параметры, чтобы ваша запись реестра событий могла совместно запускать действия и отправлять уведомления.

Структура событий

Создание события


Чтобы создать событие, используйте методы серверного API ss.eventQueue или ss.eventQueueScheduled. В результате создания добавятся записи в таблице События (sys_event).

внимание

Вы не можете создавать, редактировать или удалять записи в таблице События (sys_event) вручную. Их могут читать только пользователи с ролью admin.

Чтобы просмотреть записи событий, перейдите в Системные события → События.

Поля формы Событие

ПолеОписание
НаименованиеИмя записи, вызываемой из таблицы Реестр событий (sys_event_register).
ЭкземплярID записи объекта.
При создании события с помощью вызова методов ss.eventQueue или ss.eventQueueScheduled необходимо передать запись объекта. ID объекта будет сохранен в этом поле.
Это значение можно будет вызвать в теле Скрипта действия для события (sys_event_script_action): event.instance.
ТаблицаЭто поле содержит ссылку на таблицу, которая была передана во время создания события. Это поле заполняется автоматически.
Процесс стартовал вДата и время начала выполнения системного события. Для запланированных событий, это поле заполняется значением, переданным параметром метода ss.eventQueueScheduled.
Дата и время выполнения скрипта События (sys_event).
Процесс завершился вДата и время окончания выполнения системного события.
Параметр 1-5Строковые параметры, которые можно передать в указанную запись События (sys_event) через серверный API SimpleOne (методы ss.eventQueue и ss.eventQueueScheduled).
СтатусСтатус события:
  • Готово – событие ожидает выполнения. Время выполнения указывается в поле Процесс стартовал в.
  • Обработка – событие выполняется.
  • Обработано – событие обработано. Время обработки указывается в поле Процесс завершился в.
  • Ошибка – обработка события не удалась. Время обработки указывается в поле Процесс завершился в.
  • Отменено – событие не будет обрабатываться после изменения статуса Готов на Отменено.
Длительность обработки, мсПродолжительность обработки системного события (в миллисекундах).
ПользовательВ этом поле всегда указывается пользователь системы (который также может отображаться в формах как 100000000000000000). Это пользователь, от имени которого должно выполняться событие.

Связанные списки записи события содержат следующие записи:

  • Список всех связанных записей из таблицы Реестра событий (sys_event_register).
  • Список всех скриптов из таблицы Скрипты действий для событий (sys_event_script_action), которые ссылаются на текущую запись.

Реестр событий

Чтобы создать запись реестра, выполните следующие шаги:

  1. Перейдите в Системные события → Реестр событий.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти.

Поля формы Реестр событий

ПолеОбязательноОписание
НаименованиеДаУкажите название реестра событий. Оно будет отображаться в поле Наименование связанных Событий (sys_event).
Наименование – это первый параметр метода eventQueue().
ТаблицаДаУкажите таблицу, содержащую записи, относящиеся к событиям.
Если вы собираетесь инициировать отправку электронной почты с помощью этой записи, убедитесь, что значение в поле Таблица в записи Правило уведомления такое же, как в этой записи реестра событий.
ОписаниеНетДобавьте описание реестра событий.
Отключить логирование скриптовНетУстановите флажок, чтобы отключить ведение Журнала выполнения скриптов (sys_log_script) при запуске связанного события.

Связанные списки записи реестра событий содержат следующие записи:

  • Список всех скриптов из таблицы Скрипты действий для событий (sys_event_script_action) ссылается на текущую запись.
  • Список всех связанных Правил уведомлений активированных текущей записью реестра событий.

Скрипты действий для событий

Чтобы создать скрипт действия для события, выполните следующие шаги:

  1. Перейдите в Системные события → Скрипты событий.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти.

Поля формы Скрипты действий для событий

ПолеОписание
НаименованиеДа
Запись реестра событийДа
АктивноНет
СкриптДа
примечание

В скрипте действия для события доступен объект event. Объект является экземпляром класса SimpleRecord и ссылается на запись из таблицы События (sys_event), которая запустила скрипт. Чтобы получить значения полей записи, используйте dot-walking для объекта event. Для этого нужно использовать свойства с именами, соответствующими названиям полей записи. Например:


const currentRecord = new SimpleRecord(event.table_id.name);
currentRecord.get(event.instance);
if (String(currentRecord.state) !== event.param_1) {
currentRecord.state = event.param_1;
currentRecord.update();
}

Вы также можете обновить параметры объекта события (Параметр 1-5) с помощью скрипта действий для события.

Пример Скрипта

(function executeEventScript(event) {
const lastComment = new SimpleRecord('sys_activity_feed_item');
lastComment.addQuery('table_id', '156950677111866258'); // itsm_incident
lastComment.addQuery('record_id', event.instance);
lastComment.addQuery('type_id.name', '!=', 'history');
lastComment.orderByDesc('sys_created_at');
lastComment.setLimit(1);
lastComment.query();
event.param_5 = lastComment.next();
})(event);