Манипулирование переменными
Этот раздел объясняет, как манипулировать переменными контекста программным путем.
Нахождение доступных переменных
Существует несколько способов получения списка переменных из Context
:
getVariableDefinitions()
- этот метод вернет список всех переменных в контекстеgetVariableDefinitions(CallerController caller)
- этот метод вернет список переменных, доступных вызывающему (как для чтения, так и для записи)getVariableDefinitions(String group)
- этот метод вернет список переменных, принадлежащих определенной группе или ее подгруппеgetVariableDefinitions(CallerController caller, String group)
- этот метод вернет список переменных, принадлежащих определенной группе и доступных вызывающему
|
Для извлечения одного определения переменной по ее имени вызовите метод getVariableDefinition(String name)
. Метод getVariableDefinition(String name, CallerController caller)
вернет определение или ноль, если переменная недоступна вызывающему.
Переменные чтения и записи
Интерфейс Context
имеет два основных метода манипулирования значениями переменных:
getVariable()
setVariable()
Эти методы позволяют читать и записывать значения переменных контекста.
Чтение переменных
Метод getVariable()
читает значения перменной и возвращает DataTable
, представляющую эти значения. Она принимает один или два аргумента: имя переменной для чтения и опциональный экземпляр CallerController
, который включает права доступа вызывающей стороны (см. Работа с правами доступа).
При получения таблицы значений переменной вы получаете доступ к ее данным. См. Манипулирование таблицами данных.
Вот пример чтения значения переменной:
|
Запись перменных
Для настройки переменной существует два основных способа:
- Путем предоставления предварительно подготовленного объекта
DataTable
. Этот объект можно создать с нуля программным способом или получить и модифицировать черезgetVariable()
. - Путем предоставления отдельных значений ячеек.
Пример 1 - настройка значения переменной с использованием встроенной таблицы данных:
|
Пример 2 - модификация предыдущего значения переменной:
|
Пример 3 - настройка значения переменной с использованием списка значений ячеек:
|
Если вы хотите изменить лишь одну ячейку или запись значения переменной, недостаточно прочитать ее значение и изменить полученную Проще говоря, любая модификация переменной требует вызова |
Получение доступа к истории переменных
Существует два способа получить доступ к историческим значениям переменных, хранящихся в базе данных:
- Вызвать функцию variableHistory из контекста Утилиты. Этот способ работает как локально (внутри драйверов/плагинов сервера), так и удаленно (через API сервера).
- Вызвать статический метод Java
ServerContextUtils.getVariableHistory()
. Этот способ чуть быстрее предыдущего, но работать он будет только внутри виртуальной машины Java (т.е. в драйверах/плагинах).
Полная сигнатура метода ServerContextUtils.getVariableHistory()
:
public static Iterator<Pair<Date, DataTable>> getVariableHistory(ServerContextManager cm, CallerController caller, String context, String variable, Date fromDate, Date toDate, Integer maxResults, boolean sortAscending) throws DaoException |
Вызов функции variablehistory
Функция variableHistory
контекста Утилиты возвращает таблицу данных, каждый ряд которой содержит временную метку и историческое значение переменной. См. ее описание здесь.
|
Использование класса утилит контекста сервера
Статический способ класса ServerContextUtils, который возвращает исторические значения переменной, имеет следующую сигнатуру:
|
Он возвращает карту временных меток, указывающую время, когда были сохранены значения и сами значения.
Использование вспомогательных констант
Интерфейсы, которые расположены в пакете com.tibbo.aggregate.common.server
, предоставляют константы строк, которые подходят именам большинства переменных контекста сервера и их полям ввода/вывода.
Использование этих констант всегда предпочтительнее, чем использование констант строк, определенных в вашем собственном коде. Это обеспечит безошибочный код, если некоторые переменные или поля будут переименованы или пермещены в будущих версиях SberMobile Server.