====== Подписка на события таймера и создание регулярного таймера ====== Таймер, на который смотрит триггер, позволяет обрабатывать события типа «Если через X часов не произошло что-то, то делать предусмотренное действие». \\ Т.е. можно проверить через некоторое время, выполнилось ли нужное условие, или нет. Также таймер пригодится, если нужно вызывать с какой-то периодичностью скрипт, не привязанный к объектам системы, а в рамках общей логики. ===== Управление событиями таймера ===== «Администрирование» -> «Управление событиями таймера». * «Код операции» – числовой код операции * «Название операции» – из справочника бизнес операций, отображается как гиперссылка на страницу редактирования / удаления соответствующей записи о таймере. * «Расписание» -- расписание, по которому срабатывает таймер. Например: "//Еженедельно, каждый пн, пт, каждую N неделю, в XX:YY//", или "//Периодически раз в 2:00//". * «Последняя сработка» -- дата и время последней генерации соответствующего события, если оно наступало. \\ Если событие еще не наступило, то пусто. По любой колонке можно эту таблицу отсортировать. При нажатии на «Добавить», отображается окно * Выберите здесь нужную вам бизнес-операцию (в частности, с помощью текстового поиска). * Выберите в блоке с расписанием нужный вам способ. =====Справочник бизнес операций===== При вызове по ссылке «Справочник бизнес операций» из формы «Управление событиями таймера», открывается форма с таблицей: * «Код операции» -- Уникальное числовое значение, при вставке заполняется автоматически, как максимум по значениям этого поля + 1. Передается вместе с событием в виде параметра. * «Название» -- Текстовое название операции. При нажатии на кнопку «+ Добавить», отображается поле для ввода названия бизнес операции (как при редактировании), но изначально пустое. После заполнения и сохранения: - операция сохраняется, - ей присваивается новый код -- порядковый номер сохранённой бизнес-операции. ===== Связанные API методы ===== ====InsertTimerEvent==== Cохраняет в очереди один вызов. Параметры метода: |SessionID|ID сессии пользователя| |CallTime|обязательный параметр типа DateTime в котором содержится дата и время, когда необходимо послать сообщение на шину.| |ObjectID|GUID объекта, идентификатор, смысл которого будет известен при создании логики обработки, может быть идентификатором объекта дерева, записи справочника, пользователя и т.п. параметр не обязательный, если он не требуется, то вместо него должен допускаться null| |OperationCode|обязательный целочисленный параметр с кодом операции. Код должен быть зарегистрирован в справочнике кодов операций, если его там нет, то ошибка «Код операции не зарегистрирован»| |Parameters|объект типа JSON, в котором вызывающий может сохранить дополнительные параметры, которые будут необходимы при последующей обработке.| Метод не возвращает ничего если завершение успешно. Если не успешно, то вызывает исключение. ====CheckTimerEvent==== Проверяет, есть ли заданный вызов в очереди среди будущих и еще не сработавших элементов очереди. Параметры метода: |SessionID|ID сессии пользователя| |OperationCode|обязательный целочисленный параметр с кодом операции| |ObjectID|GUID объекта. \\ Не обязательный параметр. Если он передан, ищутся сохраненные в очереди записи с точным совпадением на GUID и код операции. Если параметр null, то необходимо искать в очереди записи только с кодом операции и ObjectID = null.| Возвращать метод должен список, содержащий удовлетворяющие условию поиска элементы очереди с параметрами (CallTime, Parameters), в том числе может быть пустой список, если поиск успешен, если поиск не успешен, то вызывает исключение. =====Генерация событий в шину по подписке===== При наступлении времени, когда должно быть отправлено в шину событие, в зарегистрированных через метод InsertTimerEvent и не обработанных еще на момент наступления заданного времени, генерируется отправка в шину события типа «Подписка на таймер», с параметрами, сохраненными в нем при подписке: * OperationCode * ObjectID * Parameters Подписка отмечается как исполненная. =====Генерация событий в шину по регулярному таймеру===== При наступлении времени, когда должно быть отправлено событие, согласно таблице настроек, в шину отправляется событие типа «Таймер», которое содержит параметры: OperationCode Одновременно должно быть сохранено время последней сработки. [[product/triggers/start|← К оглавлению]] [[/product/triggers/notification|Уведомления →]]