АИТП. Подсистема взаимодействия с рабочими серверами OneScript
В статье описан механизм взаимодействия конфигурации АИТП с рабочими серверами OneScript.
- Описание
- Подробнее
Описание
Введение
Ввиду ограниченных штатных возможностей взаимодействия платформы 1С:Предприятие с другими системами, рабочие сервера на основе web-приложения OneScript, играют ключевую роль в выполнении задач, которые не могут быть выполнены средствами платформы.
Таким образом, целью настоящей статьи является знакомство с возможностями конфигурации АИТП (проект на GitHub), в части выполнения задач с использованием рабочих серверов OneScript.
Системные требования
Версия платформы не ниже 8.3.10.2252
Версия конфигурации не ниже 0.4.10.61
Рабочий сервер OneScript
Рабочий сервер OneScript – это кроссплатформенное web-приложение, созданное на основе каркасной конфигурации, и предназначенное для выполнения фрагментов кода или вызова методов в среде OneScript. Готовые к развртыванию файлы web-приложения расположены в макете РабочийСерверOneScriptWebПриложениеАИТП. С примером методики развертывания можно ознакомиться в этой статье.
Основные возможности
Рабочий сервер содержит два http-сервиса (runscript.os и callmethod.os), которые предоставляют API, позволяющее выполнять соответственно фрагменты кода (скрипты) OneScript, вызывать методы, а также осуществлять асинхронное выполнение фрагментов кода.
Сервер содержит в своем составе библиотеку, позволяющую взаимодействовать с устройствами по протоколу SSH и SCP, а также библиотеку для взаимодействия с СУБД. В настоящее время поддерживаются СУБД MS SQL Server, PostgreSQL, а также MySQL. Это позволяет серверу эффективно взаимодействовать с устройствами и СУБД напрямую, как из ОС Windows, так и из ОС Linux.
С целью повышения уровня доступности, а также балансировки нагрузки, возможно развертывание и использование ферм серверов. Пример такого развертывания описан в этой публикации.
Поскольку код сервера полностью открыт, Вы можете в любой момент добавить необходимый Вам функционал или изменить существующий.
Взаимодействие конфигурации с сервером
Как было указано выше, web-приложения рабочего сервера OneScript имеет два http-сервиса, посредством которых производится взаимодействие конфигурации и рабочего сервера.
Взаимодействие конфигурации с рабочим сервером происходит по протоколу http(s) и сводится к отправке POST-запросов с соответствующими параметрами, с последующим получением результатов выполнения скрипта или вызова метода.
При асинхронном выполнении скрипта, после получения запроса, сервер создает и запускает фоновое задание, в котором выполняется необходимый Вам фрагмент кода. Затем, возвращает данные, идентифицирующие фоновое задание, данные результатов выполнения, а также рабочий сервер, на котором выполняется задание. Последний пункт особенно важен в случае развертывания фермы серверов, так как запрос на выполнение кода осуществляется на url кластера, а проверка активности фонового задания, а также получение результатов его выполнения, должны осуществляться посредством выполнения запросов к конкретному экземпляру web-приложения (ноде кластера). В качестве идентификатора экземпляра сервиса (ноды кластера) используется содержимое файла serviceurl, которое используется для поиска необходимого сервиса.
Результаты выполнившихся фоновых заданий хранятся в виде файлов в папке JobResults, web-приложения. После получения информации о результатах выполнения, данная информация должна быть удалена явно, вызовом соответствующего метода.
Общие замечания
Функционал взаимодействия с рабочими серверами OneScript оформлен в виде набора подсистем:
OneScriptАИТП – содержит реализацию функционала взаимодействия с рабочими серверами OneScript.
МониторингДоступностиСервисовOneScriptАИТП – содержит реализацию функционала по мониторингу доступности рабочих серверов.
УдалениеРезультатовЗаданийСервисовOneScriptАИТП – содержит реализацию функционала по “сборки мусора” на рабочих серверах.
ПользовательскийИнтерфейсOneScriptАИТП – содержит настройки пользовательского интерфейса подсистемы (см. рис. 1.).
Рисунок 1. Пользовательский интерфейс подсистемы.
