Алгоритм выбора схемы обработки

Помимо механизма автоматического выбора схемы, по которой будет обрабатываться сообщение, в Платформе реализована возможность выбора схемы при помощи скрипта на языке С#. Это дает возможность гибко и подробно выстроить логику выбора на основании информации, которую несет в себе сообщение.

Для написания и редактирования скрипта схемы обработки перейдите в раздел Обработка данных -> Схемы обработки.

../../_images/selection_algorithm_3.png

В таблице дважды нажмите на строку Скрипт выбора схемы обработки. В рабочей области отобразится инструмент для создания и редактирования скрипта.

При выборе схемы в первую очередь запускается скрипт выбора (если он присутствует). Если схема обработки не была определена, после завершения выполнения скрипта запускается автоматический выбор схемы. Список схем формируется из процессов и алгоритмов с признаком Запускать автоматически, для которых тип переменной процесса соответствует типу сообщения, реализует тип сообщения, или является сообщением.

В скрипте доступна системная переменная 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): для типа.

Выбор схемы обработки для сообщения можно отследить в Цепочке событий, которая доступна на вкладке События системы, процесса или сервера. Рекомендуется обратиться к серверу, поскольку именно на сервере происходит определение схемы.

Для этого следует перейти в Центр мониторинга и администрирования, выбрать сервер и перейти на вкладку События.

Выберите любое событие из цепочки, связанной с сообщением и нажмите на на кнопку Цепочка событий.

Откроется цепочка событий и маршрут сообщения внутри Платформы:

../../_images/selection_algorithm_1.png

На шаге DefineFunc на сервере определяется схема обработки БП для сообщения, и далее сервис процессов запускает выбранную схему обработки.

Если схему обработки определить не удалось, то в событиях сервера будет отображено событие Error.