Манипулирование переменными
Этот раздел объясняет, как манипулировать переменными контекста программным путем.
Нахождение доступных переменных
Существует несколько способов получения списка переменных из Context:
getVariableDefinitions()- этот метод вернет список всех переменных в контекстеgetVariableDefinitions(CallerController caller)- этот метод вернет список переменных, доступных вызывающему (как для чтения, так и для записи)getVariableDefinitions(String group)- этот метод вернет список переменных, принадлежащих определенной группе или ее подгруппеgetVariableDefinitions(CallerController caller, String group)- этот метод вернет список переменных, принадлежащих определенной группе и доступных вызывающему
List<VariableDefinition> variables = context.getVariableDefinitions(ContextUtils.GROUP_REMOTE); // Finding all variables in group "remote"Для извлечения одного определения переменной по ее имени вызовите метод getVariableDefinition(String name). Метод getVariableDefinition(String name, CallerController caller) вернет определение или ноль, если переменная недоступна вызывающему.
Переменные чтения и записи
Интерфейс Context имеет два основных метода манипулирования значениями переменных:
getVariable()setVariable()
Эти методы позволяют читать и записывать значения переменных контекста.
Чтение переменных
Метод getVariable() читает значения перменной и возвращает DataTable, представляющую эти значения. Она принимает один или два аргумента: имя переменной для чтения и опциональный экземпляр CallerController, который включает права доступа вызывающей стороны (см. Работа с правами доступа).
При получения таблицы значений переменной вы получаете доступ к ее данным. См. Манипулирование таблицами данных.
Вот пример чтения значения переменной:
DataTable variableValue = context.getVariable("tabularVariable");Запись перменных
Для настройки переменной существует два основных способа:
Путем предоставления предварительно подготовленного объекта
DataTable. Этот объект можно создать с нуля программным способом или получить и модифицировать черезgetVariable().Путем предоставления отдельных значений ячеек.
Пример 1 - настройка значения переменной с использованием встроенной таблицы данных:
DataTable variableValue = new SimpleDataTable(context.getVariableDefinition("tabularVariable").getFormat()); // Creating empty value
variableValue.addRecord().addString("str1").addInt(111); // Adding a record
variableValue.addRecord().addString("str2").addInt(222); // Adding another one
context.setVariable("tabularVariable", variableValue); // Setting variable valueПример 2 - модификация предыдущего значения переменной:
DataTable variableValue = context.getVariable("tabularVariable");
variableValue.addRecord().addString("str1").addInt(111); // Adding a record
variableValue.addRecord().addString("str2").addInt(222); // Adding another one
context.setVariable("tabularVariable", variableValue); // Setting variable valueПример 3 - настройка значения переменной с использованием списка значений ячеек:
context.setVariable("tabularVariable", "str1", 111); // Supplying cell values for the first record of new variable value![]() | Если вы хотите изменить лишь одну ячейку или запись значения переменной, недостаточно прочитать ее значение и изменить полученную Проще говоря, любая модификация переменной требует вызова |
Получение доступа к истории переменных
Существует два способа получить доступ к историческим значениям переменных, хранящихся в базе данных:
Вызвать функцию 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 контекста Утилиты возвращает таблицу данных, каждый ряд которой содержит временную метку и историческое значение переменной. См. ее описание здесь.
DataTable history = utilsContext.callFunction(UtilitiesContextConstants.F_VARIABLE_HISTORY, getCallerController(), con.getPath(), vd.getName()); // Other parameters omitted
for (DataRecord rec : history)
{
// Process historical values
}Использование класса утилит контекста сервера
Статический способ класса ServerContextUtils, который возвращает исторические значения переменной, имеет следующую сигнатуру:
public static Map<Date, DataTable> getVariableHistory(CallerController caller, String context, String variable, Date fromDate, Date toDate, Integer maxResults, boolean sortAscending) throws DaoException, ContextException, DataTableExceptionОн возвращает карту временных меток, указывающую время, когда были сохранены значения и сами значения.
Использование вспомогательных констант
Интерфейсы, которые расположены в пакете com.tibbo.aggregate.common.server, предоставляют константы строк, которые подходят именам большинства переменных контекста сервера и их полям ввода/вывода.
Использование этих констант всегда предпочтительнее, чем использование констант строк, определенных в вашем собственном коде. Это обеспечит безошибочный код, если некоторые переменные или поля будут переименованы или пермещены в будущих версиях AggreGate Server.
Was this page helpful?
