====== Создание вызова в очереди событий ======
Метод: **InsertTimerEvent**
Позволяет запланировать запуск бизнес-операции на определённый день и время.
**Примечание:**
Информацию о способе вызова также можно найти на странице «APIScheduledEvents» (относительный путь для установленной системы ADVANTA: «/components/services/APIScheduledEvents.asmx»).
=====Передаваемые параметры=====
^Параметр^Тип^Назначение^
|**ASPNETSessionId**|string|Идентификатор сессии пользователя, от имени которой создается событие|
|**CallTime**|DateTime|**Обязательный**. Дата и время планируемого отправки сообщения на шину|
|**ObjectId**|Guid|Идентификатор объекта (GUID), к которому привязано событие. Смысл идентификатора определяется логикой обработчика (может быть ID записи таблицы, элемента дерева, пользователя и т.д.). Необязательный. Допускается значение null|
|**OperationCode**|int|**Обязательный**. Целочисленный код операции. Код должен быть предварительно зарегистрирован в соответствующем справочнике кодов операций. В противном случае метод вернет ошибку «Код операции не зарегистрирован»|
|**Parameters**|string|Строка в формате **JSON**, содержащая произвольные дополнительные параметры, необходимые для последующей обработки события|
string
dateTime
guid
int
string
=====Возвращаемые параметры=====
^Параметр^Название^Описание^Тип данных^
|InsertTimerEventResponse|Ответ на добавление события|Подтверждение успешного создания события таймера|Контейнер|
**Примечания:**
* Пустой элемент означает успешное выполнение операции (без дополнительных данных)
* Пространство имен XML: ''http://streamline/''
* Код ответа ''HTTP 200 OK'' также подтверждает успешное выполнение
\\
===== Пример вызова API «InsertTimerEvent» в Postman =====
Протестировать создание сообщения о выполнении бизнес-операции проще всего через систему Postman. Ниже приведены снимки настроек SOAP-запроса в ней:
{{ :product:api:picture_6.png?600direct&400 |}}
//Рисунок 1. Настройки заголовков запроса (закладка «Headers»)//
\\
\\
{{ :product:api:picture_7.png?600direct&400 |}}
//Рисунок 2. Настройки тела запроса (закладка «Body»)//
\\
===== Пример триггера для обработки события =====
Обработать сообщение, которое появилось в шине, можно с помощью триггера. Он должен реагировать на событие «Событие таймера, запланированное по подписке».
Общие настройки триггера:
{{ :product:api:picture_8.png?600direct&400 |}}
//Рисунок 3. Настройки триггера//
\\
Код проверки «условия» запуска триггера:
TriggerConsole.WriteLine($"Проверка условия: ID события - {Context.EventId}, отправлено - {Context.EventSentTime}");
// Реагируем только на бизнес-операцию с кодом №1
if (Event.BusinessOperationCode == 1){
TriggerConsole.WriteLine($"ID cобытия таймера: {Event.BusinessOperationCode}");
} else {
return false; // Если это не операция с кодом №1, не запускаем триггер
}
return true;
\\
Код «скрипта». В данном примере просто выводим в консоль ID и время сообщения, а также параметры, переданные в API-функции «InsertTimerEvent»:
TriggerConsole.WriteLine($"ID события = {Context.EventId}");
TriggerConsole.WriteLine($"Дата и время = {Context.EventSentTime}");
// Код бизнес-операции:
TriggerConsole.WriteLine($"BusinessOperationCode = {Event.BusinessOperationCode}");
// UID объекта, указанный при вызове API InsertTimerEvent:
TriggerConsole.WriteLine($"ObjectId = {Event.ObjectId}");
// Параметры, переданные через API InsertTimerEvent:
TriggerConsole.WriteLine($"Parameters = {Event.Parameters}");
\\
В результате, в логе триггера будут видны переданные через API значения:
{{ :product:api:picture_9.png?600direct&400 |}}
//Рисунок 4. Лог триггера//