Вызов функций

Этот раздел объясняет, как составить список и вызвать функции контекста программным путем.

Нахождение доступных функций

Существует несколько способов получения списка функций из Context:

  • getFunctionDefinitions() - этот метод вернет список всех функций в контексте
  • getFunctionDefinitions(CallerController caller) - этот метод вернет список функций, доступных вызывающему
  • getFunctionDefinitions(String group) - этот метод вернет список функций, принадлежащих определенной группе его подгрупп
  • getFunctionDefinitions(CallerController caller, String group) - этот метод вернет список функций, принадлежащих определенной группе и доступных ее вызывающему

List<FunctionDefinition> functions = context.getFunctionDefinitions(ContextUtils.GROUP_REMOTE); // Finding all functions in group "remote"

Для извлечения одного определения функции по ее имени вызовите метод getFunctionDefinition(String name). Метод getFunctionDefinition(String name, CallerController caller) вернет определение или ноль, если функция недоступна вызывающему.

Выполнение функций

Для вызова функции используйте метод Context.callFunction(). Он принимает следующие аргументы: имя функции для вызова, опциональный экземпляр CallerController, который включает права доступа вызывающей стороны (см. Работа с правами доступа) и опциональные параметры функции.

Существует два способа определения параметров ввода функции:

  • Путем предоставления встроенного объекта DataTable. Этот объект может быть с нуля создан программным путем при помощи формата, получаемого через FunctionDefinition.getInputFormat().
  • Путем предоставления отдельных значений ячеек таблицы данных ввода функции.

Метод callFunction() возвращает DataTable, представляющую вывод функции.

Пример 1 - вызов функции путем предоставления встроенной таблицы данных:

DataTable input = new SimpleDataTable(context.getFunctionDefinition("sendSms").getInputFormat());

 

input.addRecord().addString("+12345678900").addInt("First message"); // Adding a record

input.addRecord().addString("+98765432100").addInt("Second message"); // Adding another one

 

DataTable output = context.callFunction("sendSms", input); // Calling function

Пример 2 - вызов функции путем предоставления списка значений ячеек таблицы ввода:

DataTable output = context.callFunction("sendSms", "12345678900", "First message"); // Supplying cell values for the first record of function input table

Использование вспомогательных констант

Интерфейсы, которые расположены в пакете com.tibbo.aggregate.common.server, предоставляют константы строк, которые подходят именам большинства функций контекста сервера и их полям ввода/вывода.

Использование этих констант всегда предпочтительнее, чем использование констант строк, определенных в вашем собственном коде. Это обеспечит безошибочный код, если некоторые функции или поля будут переименованы или перемещены в будущих версиях SberMobile Server.