Алгоритм выбора схемы обработки
Помимо механизма автоматического выбора схемы, по которой будет обрабатываться сообщение, в Платформе реализована возможность выбора схемы при помощи скрипта на языке С#. Это дает возможность гибко и подробно выстроить логику выбора на основании информации, которую несет в себе сообщение.
Для написания и редактирования скрипта схемы обработки перейдите в раздел Обработка данных -> Схемы обработки.
В таблице дважды нажмите на строку Скрипт выбора схемы обработки. В рабочей области отобразится инструмент для создания и редактирования скрипта.
При выборе схемы в первую очередь запускается скрипт выбора (если он присутствует). Если схема обработки не была определена, после завершения выполнения скрипта запускается автоматический выбор схемы. Список схем формируется из процессов и алгоритмов с признаком Запускать автоматически, для которых тип переменной процесса соответствует типу сообщения, реализует тип сообщения, или является сообщением.
В скрипте доступна системная переменная Message InitMessage для доступа к контексту обрабатываемого сообщения.
Для определения схемы в скрипте определения схем доступны следующие методы:
DefineFunctions.Add(Metadata.Functions function): добавляет в список схем для обработки текущего сообщения новую схему.
SetFunction(Metadata.Functions function): замещает список схем для обработки текущего сообщения одной новой схемой.
Чтобы получить список определенных автоматически схем:
OwnList<Metadata.Functions: для InitMessage.
OwnList<Metadata.Functions> CalculateFunctions(Message message): для Message.
OwnList<Metadata.Functions> CalculateFunctions(Metadata.DataTypes type): для типа.
Выбор схемы обработки для сообщения можно отследить в Цепочке событий, которая доступна на вкладке События системы, процесса или сервера. Рекомендуется обратиться к серверу, поскольку именно на сервере происходит определение схемы.
Для этого следует перейти в Центр мониторинга и администрирования, выбрать сервер и перейти на вкладку События.
Выберите любое событие из цепочки, связанной с сообщением и нажмите на на кнопку Цепочка событий.
Откроется цепочка событий и маршрут сообщения внутри Платформы:
На шаге DefineFunc на сервере определяется схема обработки БП для сообщения, и далее сервис процессов запускает выбранную схему обработки.
Если схему обработки определить не удалось, то в событиях сервера будет отображено событие Error.