Скрипты
Интегрированные языки выражений и запросов SberMobile помогают в решении большинства повседневных задач по обработке данных. Однако иногда этого недостаточно. Бывает, становятся необходимыми возможности полноценного языка программирования с циклами, переменными, объявлениями методов и пр. С этой целью, SberMobile Server может обрабатывать скрипты, написанные на Java и R. Эти скрипты выполняются внутри виртуальной машины Java (JVM) сервера, разрешая им доступ ко всем внутренним данным сервера в добавок к входным параметрам самого скрипта. Таким образом, скрипты - это очень мощный инструмент, дающий возможность полностью контролировать сервер в режиме реального времени.
Скрипты можно вызывать из выражений, что делает их доступными для:
Активирования тревог
Обработки данных настраиваемых форм и интерфейсов
Подготовки исходных данных для отчета
Существует два способа запустить скрипт:
Выполнение вручную путем вызова действия выполнить контекста Скрипт. Входная таблица данных функции (которая может быть любого формата), будет передана прямо в скрипт.
Автоматическое выполнение при запуске %ls%>. Выполнение скрипта происходит автоматически при запуске, если включен флажок Запускать автоматически при включении сервера в свойствах скрипта. В этом случае, входные данные не передаются в скрипт.
Скрипт может вернуть некоторые данные в форме объекта таблица данных. Данная таблица возвращается функцией выполнить контекста Скрипт. Если скрипт возвращает NULL
, функция выполнить возвращает таблицу из одной ячейки с пустым (nullable) строковым полем.
Как и когда писать скрипты
Скрипты имеют неограниченные возможности по использованию сред разработки и доступу к ресурсам сервера. Однако разработка скриптов, имеющих доступ к машинным ресурсам нижнего уровня или недокументированным классам SberMobile, часто могут нарушать работоспособность и производительность системы.
Следующие правила позволяют написать хороший скрипт:
Лучший скрипт - тот, который берет входные данные и использует математическую/логическую обработку для преобразования их в выходные данные, не затрагивая и не влияя на среду выполнения.
Если необходим доступ к окружению, его следует осуществлять через формализованные программные интерфейсы и классы унифицированной модели данных SberMobile. К этим интерфейсам относятся
Context
,ContextManager
,DataTable
, и др. Для большей информации см. главу Разработка.У скриптов не должно быть доступа к сокетам и они не должны выполнять никакого сетевого взаимодействия. Сетевые операции, используемые для получения внешних данных или для показа локальных данных внешним системам, должны выполняться драйверами устройств.
Скрипты не должны иметь прямого доступа к файловой системе сервера. Это можно осуществить через драйверы устройств Файл и Папка.
Скрипты не должны создавать потоки и запускать сторонние процессы. Многопоточность осуществляется должным образом во всех "активных" объектах системы (таких как модели), которые могут вызвать ваш скрипт как обратный вызов.
Хороший скрипт должен иметь ограниченное и предсказуемое время выполнения. Он не должен надолго зависать ни при каких обстоятельствах.
Если скрипт вызывает методы сторонних библиотек, они должны отвечать вышеперечисленным правилам (иметь минимум взаимодействия со средой, не иметь доступа к ресурсам системы и т.д.)
Администрирование скриптов
Для администрирования скриптов используются два контекста: общий контекст Скрипты, который служит в качестве контейнера, и контекст Скрипт, который содержит информацию об определенном скрипте. |
Каждый пользователь имеет свой набор скриптов. |
Встроенные скрипты
В настоящее время всего один скрипт входит в ядро дистрибутива SberMobile Server. Этот скрипт называется Расчет даты нарушения SLA и описан в руководстве Прогнозирование нарушений SLA.