Создание вызова в очереди событий

Метод: InsertTimerEvent

Позволяет запланировать запуск бизнес-операции на определённый день и время.

Примечание: Информацию о способе вызова также можно найти на странице «APIScheduledEvents» (относительный путь для установленной системы ADVANTA: «/components/services/APIScheduledEvents.asmx»).

ПараметрТипНазначение
ASPNETSessionIdstringИдентификатор сессии пользователя, от имени которой создается событие
CallTimeDateTimeОбязательный. Дата и время планируемого отправки сообщения на шину
ObjectIdGuidИдентификатор объекта (GUID), к которому привязано событие. Смысл идентификатора определяется логикой обработчика (может быть ID записи таблицы, элемента дерева, пользователя и т.д.). Необязательный. Допускается значение null
OperationCodeintОбязательный. Целочисленный код операции. Код должен быть предварительно зарегистрирован в соответствующем справочнике кодов операций. В противном случае метод вернет ошибку «Код операции не зарегистрирован»
ParametersstringСтрока в формате 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Ответ на добавление событияПодтверждение успешного создания события таймераКонтейнер

Примечания:

  • Пустой элемент означает успешное выполнение операции (без дополнительных данных)
  • Пространство имен XML: 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-запроса в ней:

Рисунок 1. Настройки заголовков запроса (закладка «Headers»)


Рисунок 2. Настройки тела запроса (закладка «Body»)


Обработать сообщение, которое появилось в шине, можно с помощью триггера. Он должен реагировать на событие «Событие таймера, запланированное по подписке». Общие настройки триггера:

Рисунок 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 значения:

Рисунок 4. Лог триггера