Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
product:api:creating_bus_events [03.12.2025 08:23] Москвитина Алинаproduct:api:creating_bus_events [05.12.2025 09:49] (текущий) Москвитина Алина
Строка 37: Строка 37:
 Перечень «бизнес-операций» и расписание регулярного таймера для их запуска можно найти в панели администратора ADVANTA, на странице «Дополнительные сервисы / Расписание пользовательских бизнес-операций»: Перечень «бизнес-операций» и расписание регулярного таймера для их запуска можно найти в панели администратора ADVANTA, на странице «Дополнительные сервисы / Расписание пользовательских бизнес-операций»:
  
-{{ :product:api:picture_1.png?800nolink&400 |}} +{{ :product:api:picture_1.png?600direct&400 |}} 
-// Рисунок 1. Запуск справочника пользовательских бизнес-операций //+<TEXT align="center">//Рисунок 1. Запуск справочника пользовательских бизнес-операций//</text>
  
 \\ \\
Строка 45: Строка 45:
 \\ \\
  
-{{ :product:api:picture_2.png?700nolink&400 |}}+{{ :product:api:picture_2.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 2. Переход в справочник бизнес-операций//</text> 
 + 
 +\\ 
 +\\ 
 +На странице справочника «бизнес-операций» нажмите кнопку «Добавить»: 
 + 
 +{{ :product:api:picture_3.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 3. Добавление бизнес-операции//</text> 
 + 
 +\\ 
 +\\ 
 +Введите название новой бизнес-операции и нажмите «Сохранить»: 
 + 
 +{{ :product:api:picture_4.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 4. Создание новой бизнес-операции//</text> 
 + 
 +\\ 
 +\\ 
 +Операция появится в справочнике. Ей будет присвоен внутренний код, который потребуется при вызове API «InsertTimerEvent»: 
 + 
 +{{ :product:api:picture_5.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 5. Новая операция в справочнике бизнес-операций//</text> 
 + 
 +\\ 
 +\\ 
 +Если требуется реализовать регулярную, повторяющуюся бизнес-операцию, настройте запуск по таймеру. Это можно сделать, вернувшись на страницу расписания бизнес-операций (меню «Дополнительные сервисы / Расписание пользовательских бизнес-операций»). 
 +Если требуется однократная операция, которая будет помещаться в шину через API «InsertTimerEvent», расписание не требуется. 
 + 
 +<callout type="primary">Примечание! Следует подчеркнуть, что справочник бизнес-операций служит лишь для присвоения кода. Логика действий при появлении в шине сообщения о выполнении этой бизнес-операции закладывается в триггерах, реагирующих на это сообщение</callout> 
 + 
 +\\ 
 +===== Создание сообщения через API «InsertTimerEvent» ===== 
 +Для планирования запуска бизнес-операции на определённый день и время служит API-функция «InsertTimerEvent». Описание этой API можно найти на странице службы «APIScheduledEvents». Относительный путь к странице этой службы на вашем стенде ADVANTA: «/components/services/APIScheduledEvents.asmx».  
 + 
 +Формат тела запроса для вызова API «InsertTimerEvent» следующий: 
 +<code> 
 +<?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> 
 +            <ASPNETSessionIdstring</ASPNETSessionId> 
 +            <CallTime>dateTime</CallTime> 
 +            <ObjectId>guid</ObjectId> 
 +            <OperationCode>int</OperationCode> 
 +            <Parameters>string</Parameters> 
 +        </contract> 
 +    </InsertTimerEvent> 
 +  </soap:Body> 
 +</soap:Envelope> 
 + 
 +</code> 
 + 
 +\\ 
 +Описание параметров API-функции «InsertTimerEvent»: 
 +^ Параметр ^ Описание ^ 
 +|SessionID|ID сессии пользователя, полученное при авторизации| 
 +|CallTime|Дата и время, когда событие должно быть помещено в шину| 
 +|ObjectID|Идентификатор объекта ADVANTA, к которому будет привязано событие| 
 +|OperationCode|Код операции в справочнике пользовательских бизнес-операций ADVANTA| 
 +|Parameters|Дополнительные параметры, в формате JSON, которые будут прикреплены к событию и доступны триггеру для обработки| 
 + 
 +\\ 
 +===== Пример вызова API «InsertTimerEvent» в Postman ===== 
 +Протестировать создание сообщения о выполнении бизнес-операции проще всего через систему Postman. Ниже приведены снимки настроек SOAP-запроса в ней:  
 + 
 +{{ :product:api:picture_6.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 6. Настройки заголовков запроса (закладка «Headers»)//</text> 
 +\\ 
 +\\ 
 +{{ :product:api:picture_7.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 7. Настройки тела запроса (закладка «Body»)//</text> 
 + 
 +\\ 
 +===== Пример триггера для обработки события ===== 
 +Проверить, что сообщение появилось в шине, можно с помощью триггера. Он должен реагировать на событие «Событие таймера, запланированное по подписке». 
 +Общие настройки триггера: 
 + 
 +{{ :product:api:picture_8.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 8. Настройки триггера//</text> 
 + 
 +\\ 
 +Код проверки «условия» запуска триггера: 
 +<code> 
 +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> 
 +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">//Рисунок 9. Лог триггера//</text> 
 + 
 +\\ 
 +===== Просмотр очереди через API «CheckTimerEvent» ===== 
 +Увидеть всю очередь сообщений бизнес-операции можно с помощью API-функции «CheckTimerEvent». Информацию о способе её вызова также можно найти на странице службы «APIScheduledEvents» (относительный путь на стенде ADVANTA: «/components/services/APIScheduledEvents.asmx»). 
 + 
 +Формат вызова API «CheckTimerEvent»: 
 +<code> 
 +<!-- Позволяет проверить расписание вызова  --> 
 +<?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> 
 +    <CheckTimerEvent xmlns="http://streamline/"> 
 +        <contract> 
 +            <ASPNETSessionId>string</ASPNETSessionId> 
 +            <ObjectId>guid</ObjectId> 
 +            <OperationCode>int</OperationCode> 
 +        </contract> 
 +    </CheckTimerEvent> 
 +  </soap:Body> 
 +</soap:Envelope> 
 + 
 +</code> 
 + 
 +\\ 
 +Пример настройки POST-запроса для вызова «CheckTimerEvent» в Postman: 
 + 
 +{{ :product:api:picture_10.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 10. Настройки заголовков вызова API «CheckTimerEvent»//</text> 
 + 
 +\\ 
 +{{ :product:api:picture_11.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 11. Настройки тела запроса API «CheckTimerEvent»//</text> 
 + 
 +\\ 
 +Если запрос настроен верно, в Postman появится перечень сообщений указанной бизнес-операции. Пример: 
 + 
 +{{ :product:api:picture_12.png?600direct&400 |}} 
 +<TEXT align="center">//Рисунок 12. Пример списка запланированных сообщений//</text>