Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
product:api:creating_bus_events [03.12.2025 08:45] Москвитина Алина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?500nolink&400 |}} +{{ :product:api:picture_2.png?600direct&400 |}} 
-//Рисунок 2. Переход в справочник бизнес-операций//+<TEXT align="center">//Рисунок 2. Переход в справочник бизнес-операций//</text>
  
 \\ \\
Строка 52: Строка 52:
 На странице справочника «бизнес-операций» нажмите кнопку «Добавить»: На странице справочника «бизнес-операций» нажмите кнопку «Добавить»:
  
-{{ :product:api:picture_3.png?500nolink&400 |}} +{{ :product:api:picture_3.png?600direct&400 |}} 
-//Рисунок 3. Добавление бизнес-операции//+<TEXT align="center">//Рисунок 3. Добавление бизнес-операции//</text>
  
 \\ \\
Строка 59: Строка 59:
 Введите название новой бизнес-операции и нажмите «Сохранить»: Введите название новой бизнес-операции и нажмите «Сохранить»:
  
-{{ :product:api:picture_4.png?500nolink&400 |}} +{{ :product:api:picture_4.png?600direct&400 |}} 
-//Рисунок 4. Создание новой бизнес-операции//+<TEXT align="center">//Рисунок 4. Создание новой бизнес-операции//</text>
  
 \\ \\
Строка 66: Строка 66:
 Операция появится в справочнике. Ей будет присвоен внутренний код, который потребуется при вызове API «InsertTimerEvent»: Операция появится в справочнике. Ей будет присвоен внутренний код, который потребуется при вызове API «InsertTimerEvent»:
  
-{{ :product:api:picture_5.png?500nolink&400 |}} +{{ :product:api:picture_5.png?600direct&400 |}} 
-//Рисунок 5. Новая операция в справочнике бизнес-операций//+<TEXT align="center">//Рисунок 5. Новая операция в справочнике бизнес-операций//</text>
  
 \\ \\
Строка 75: Строка 75:
  
 <callout type="primary">Примечание! Следует подчеркнуть, что справочник бизнес-операций служит лишь для присвоения кода. Логика действий при появлении в шине сообщения о выполнении этой бизнес-операции закладывается в триггерах, реагирующих на это сообщение</callout> <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>
 +