Обмен информацией между модулями ADVANTA выполняется через «системную шину данных». В шине публикуются «сообщения» о случившихся в системе событиях и тех изменениях в данных, которые в результате произошли. Сообщения служат сигналами к запуску «триггеров» в модуле «Цифровой помощник». Сообщения о событиях могут появляться в шине:
Помимо изменения данных, могут происходить и события, отражающие специфику бизнес-процессов предприятия, называемые бизнес-операциями.
Бизнес-операции могут быть:
«Однократные» операции можно запускать, когда требуется:
Предположим, в системе электронного документооборота предприятия «утверждён» приказ о реализации проекта. Надо оповестить об этом ADVANTA, поместив в её шину данных сообщение о соответствующей бизнес-операции. Это можно сделать помощью API-функции «InsertTimerEvent». В сообщении можно передать необходимую информацию, например, идентификатор утверждённого проекта и присвоенный ему статус. В результате в ADVANTA выполнят свою работу триггеры, привязанные к бизнес-операции утверждения проекта: создадут необходимые объекты, оповестят проектную команду, запланируют установочное совещание и другое. Если в будущем потребуется выполнять в ADVANTA какое-то дополнительные действия по созданию нового проекта, достаточно будет создать новый триггер и подключить к уже существующей бизнес-операции.
Некоторые бизнес-процессы предприятия требуют выполнения работ в период времени, ограниченный регламентом или SLA. К примеру, при получении сообщения об утверждении проекта, его руководитель обязан в течение двух рабочих дней подготовить документ «паспорт проекта». Помимо простого уведомления о начале этой задачи будет полезно при наступлении планового срока завершения автоматически проверить, подготовил он документ или нет. Если не подготовил, надо оповестить всех заинтересованных участников проекта, напомнить исполнителю и запланировать следующую проверку, например, ещё через сутки.
В этом случае можно организовать работу следующим образом:
Перечень «бизнес-операций» и расписание регулярного таймера для их запуска можно найти в панели администратора ADVANTA, на странице «Дополнительные сервисы / Расписание пользовательских бизнес-операций»:
Чтобы создать новую «бизнес-операцию» перейдите в справочник по ссылке «Справочник бизнес-операций»:
На странице справочника «бизнес-операций» нажмите кнопку «Добавить»:
Введите название новой бизнес-операции и нажмите «Сохранить»:
Операция появится в справочнике. Ей будет присвоен внутренний код, который потребуется при вызове API «InsertTimerEvent»:
Если требуется реализовать регулярную, повторяющуюся бизнес-операцию, настройте запуск по таймеру. Это можно сделать, вернувшись на страницу расписания бизнес-операций (меню «Дополнительные сервисы / Расписание пользовательских бизнес-операций»).
Если требуется однократная операция, которая будет помещаться в шину через API «InsertTimerEvent», расписание не требуется.
Для планирования запуска бизнес-операции на определённый день и время служит API-функция «InsertTimerEvent». Описание этой API можно найти на странице службы «APIScheduledEvents». Относительный путь к странице этой службы на вашем стенде ADVANTA: «/components/services/APIScheduledEvents.asmx».
Формат тела запроса для вызова API «InsertTimerEvent» следующий:
<?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>
Описание параметров API-функции «InsertTimerEvent»:
| Параметр | Описание |
|---|---|
| SessionID | ID сессии пользователя, полученное при авторизации |
| CallTime | Дата и время, когда событие должно быть помещено в шину |
| ObjectID | Идентификатор объекта ADVANTA, к которому будет привязано событие |
| OperationCode | Код операции в справочнике пользовательских бизнес-операций ADVANTA |
| Parameters | Дополнительные параметры, в формате JSON, которые будут прикреплены к событию и доступны триггеру для обработки |
Протестировать создание сообщения о выполнении бизнес-операции проще всего через систему 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 значения:
Увидеть всю очередь сообщений бизнес-операции можно с помощью API-функции «CheckTimerEvent». Информацию о способе её вызова также можно найти на странице службы «APIScheduledEvents» (относительный путь на стенде ADVANTA: «/components/services/APIScheduledEvents.asmx»).
Формат вызова API «CheckTimerEvent»:
<!-- Позволяет проверить расписание вызова -->
<?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>
Пример настройки POST-запроса для вызова «CheckTimerEvent» в Postman:
Если запрос настроен верно, в Postman появится перечень сообщений указанной бизнес-операции. Пример: