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