Метод: InsertTimerEvent
Позволяет запланировать запуск бизнес-операции на определённый день и время.
Примечание: Информацию о способе вызова также можно найти на странице «APIScheduledEvents» (относительный путь для установленной системы ADVANTA: «/components/services/APIScheduledEvents.asmx»).
| Параметр | Тип | Назначение |
|---|---|---|
| ASPNETSessionId | string | Идентификатор сессии пользователя, от имени которой создается событие |
| CallTime | DateTime | Обязательный. Дата и время планируемого отправки сообщения на шину |
| ObjectId | Guid | Идентификатор объекта (GUID), к которому привязано событие. Смысл идентификатора определяется логикой обработчика (может быть ID записи таблицы, элемента дерева, пользователя и т.д.). Необязательный. Допускается значение null |
| OperationCode | int | Обязательный. Целочисленный код операции. Код должен быть предварительно зарегистрирован в соответствующем справочнике кодов операций. В противном случае метод вернет ошибку «Код операции не зарегистрирован» |
| Parameters | string | Строка в формате JSON, содержащая произвольные дополнительные параметры, необходимые для последующей обработки события |
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <InsertTimerEvent xmlns="http://streamline/"> <contract> <ASPNETSessionId>string</ASPNETSessionId> <CallTime>dateTime</CallTime> <ObjectId>guid</ObjectId> <OperationCode>int</OperationCode> <Parameters>string</Parameters> </contract> </InsertTimerEvent> </soap:Body> </soap:Envelope>
| Параметр | Название | Описание | Тип данных |
|---|---|---|---|
| InsertTimerEventResponse | Ответ на добавление события | Подтверждение успешного создания события таймера | Контейнер |
Примечания:
http://streamline/HTTP 200 OK также подтверждает успешное выполнение
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <InsertTimerEventResponse xmlns="http://streamline/" /> </soap:Body> </soap:Envelope>
Протестировать создание сообщения о выполнении бизнес-операции проще всего через систему Postman. Ниже приведены снимки настроек SOAP-запроса в ней:
Обработать сообщение, которое появилось в шине, можно с помощью триггера. Он должен реагировать на событие «Событие таймера, запланированное по подписке». Общие настройки триггера:
Код проверки «условия» запуска триггера:
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 значения: