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