====== Создание вызова в очереди событий ====== Метод: **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. Лог триггера//