Введение
Ввиду ограниченных штатных возможностей взаимодействия платформы 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. Пользовательский интерфейс подсистемы.
Общие настройки
Для использования рабочих серверов OneScript, необходимо настроить параметры взаимодействия с ними. Для хранения этих параметров, предназначен справочник Сервисы Onescript (см. рис. 2.).
Рисунок 2. Справочник Сервисы OneScript.
Каждый элемент справочника соответствует рабочему серверу (ноде) или ферме серверов, в случае использования кластера, и содержит настройки подключения к http-сервисам рабочего сервера/фермы.
Как можно увидеть, справочник имеет иерархическую структуру, где на верхнем уровне расположены одиночные рабочие сервера и фермы серверов. Рабочие сервера, входящие в состав ферм, рекомендуется включать как дочерние элементы соответствующего сервиса фермы.
Как правило, при использовании рабочих серверов OneScript, существует хотя-бы один сервер или ферма серверов. Для хранения настроек этой фермы используется константа Ферма серверов по умолчанию (см. рис. 3.).
Рисунок 3. Ферма серверов по умолчанию.
Если в параметрах методов не указана конкретная ферма/сервер, программный код будет обращаться к ферме серверов по умолчанию.
Работа из программного кода
Функции работы с сервисами OneScript расположены в общем модуле OneScriptАИТП.
ВыполнитьСкрипт – используется для выполнения фрагментов кода в синхронном и асинхронном режиме.
ЗаданиеАктивно – используется для проверки факта окончания асинхронного выполнения фрагмента кода.
ПолучитьРезультатВыполненияЗадания – используется для получения результата асинхронного выполнения фрагмента кода.
УдалитьРезультатВыполненияЗадания – используется для удаления результата асинхронного выполнения фрагмента кода. Как правило, вызывается сразу после получения результата выполнения.
УдалитьРезультатыВыполненияЗаданийСозданныхДоПериода – используется для удаления оставшихся результатов заданий, старше определенного периода.
Инструменты разработки
Для облегчения разработки процессов, в подсистему включены средства для интерактивной работы с СУБД (рис. 4.), а также консоль выполнения кода (рис. 5.), которые позволяют в интерактивном режиме выполнять запросы к СУБД, а также выполнять фрагменты кода OneScript.
Рисунок 4. Интерактивная работа с запросами к СУБД.
Ввиду того, что данное средство использует технологию COM компонентов, его использование возможно в случае, если сервер 1С:Предприятие, на котором размещена конфигурация АИТП, работает под управлением ОС Windows. Однако, данный факт не мешает выполнению запросов к СУБД на рабочем сервере OneScript в среде Linux.
Рисунок 5. Консоль выполнения кода.
Мониторинг доступности
Мониторинг доступности и работоспособности сервисов OneScript является важной задачей т.к. это напрямую влияет на возможность выполнения ваших прикладных процессов, если они используют рабочие сервера OneScript. Для мониторинга доступности сервисов OneScript, в конфигурации реализован механизм мониторинга состояния сервисов, который размещен в подсистеме МониторингДоступностиСервисовOneScriptАИТП.
Логика работы механизма проста:
Через определенные промежутки времени, определяемые настройками расписания соответствующего регламентного задания (Мониторинг доступности сервисов OneScript), на всех сервисах, сконфигурированных для мониторинга (см. рис. 6.), производится запуск тестового скрипта и/или вызов тестового метода. В случае обнаружения недоступности сервиса по каким-либо причинам, создается процесс мониторинга недоступного сервиса, логика работы которого, представлена на рис. 7.
Рисунок 6. Конфигурирование сервисов OneScript для мониторинга.
Рисунок 7. Схема процесса мониторинга недоступного сервиса.
“Сборка мусора”
В процессе эксплуатации могут возникать ситуации, когда из-за программных, сетевых или иных ошибок, удаления результатов асинхронного выполнения скриптов не происходит. Результатом этого факта является накопление “забытых” файлов результатов, на рабочем сервере, что в конечном счете может привести к проблемам с дисковым пространством.
Для борьбы с этим явлением, существует специальный механизм, реализованный в подсистеме УдалениеРезультатовЗаданийСервисовOneScriptАИТП.
Логика работы механизма, аналогична логике работы механизма мониторинга:
Через определенные промежутки времени, определяемые настройками расписания соответствующего регламентного задания (Удалить результаты заданий сервисов OneScript), производится попытка удаления файлов с результатами асинхронного выполнения скриптов, которые существуют более определенного периода времени. Попытка удаления предпринимается на всех сервисах, для которых произведены соответствующие настройки (см. рис 8.), причем для каждого сервера создается отдельное фоновое задание.
Рисунок 8. Настройки удаления результатов заданий.
В случае возникновения каких-либо проблем, для каждого проблемного сервиса создается процесс обработки ошибки. Логика работы процесса представлена на рис 9.
Рисунок 9. Схема процесса обработки ошибки удаления результатов заданий.
Для оперативного контроля, необходимо настроить адресацию задач и оповещения, по методике, описанной в этой статье.
Заключение
Надеюсь, что данная статья поможет Вам в использовании конфигурации АИТП, для автоматизации Ваших процессов.