Мельница данных  (13.12.2024)
Функция execute

Функция execute позволяет вызывать методы, доступные для вызова через обработчик сервера приложений, получать результат выполнения методов.

Допустимо использовать любые расширения, в том числе не указывать расширение. Расширение повлияет на формат возвращаемого результата следующим образом:

  • .xml - для получения результата выполнения в формате xml
  • .js/.json - для получения результата выполнения в формате JSON
  • пустое расширение - результат выполнения будет возвращен в формате xml
  • другие расширения - имеет смысл использовать в случаях, когда результатом выполнения метода является "большой объект" (blob, clob) и его тип известен; это позволит получить результат в виде файла или структуры данных определенного типа (.xslt,.pdf, форматы изображений и т.п.)
    если результат выполнения не удастся привести к формату, заданному расширением, результат будет возвращен в формате xml

В значении параметра с именем "query" необходимо передать xml-документ, описывающий вызываемый метод и значения его параметров. Этот параметр можно передавать, обращаясь к url как методом GET, так и методом POST. Значение параметра должно быть закодировано по правилам представления url.

Корневой элемент документа-запроса должен иметь имя execute и может иметь атрибуты:

  • "class" (обязательный) - имя класса, метод которого будет вызываться
  • "method" (обязательный) - имя метода, который будет вызываться

Корневой элемент xml-документа может содержать список узлов row, каждый из которых определяет набор параметров для вызова метода. Таким образом, при помощи одного вызова функции (одним обращением к url) можно вызывать один и тот же метод для набора объектов.

Принципы передачи параметров для вызова метода, включая использование параметров типа "большой объект", описаны в статье Принципы передачи параметров функциям RESTful-service.

Для вызова методов экземпляра необходимо указывать значение неявного параметра с именем "ID". Значением этого параметра должен быть идентификатор объекта, для которого вызывается метод.

Пример
01  <execute class="TPerson" method="GetContactList">
02    <row>
03      <ID>931669</ID>
04      <ContactType>63478</ContactType>
05    </row>
06    <row>
07      <ID>76443</ID>
08      <ContactType>63478</ContactType>
09    </row>
10  </execute>
  

Получить результат вызовов метода GetContactList класса TPerson для объектов с идентификаторами (ID), равными 931669 и 76443 и со значением параметра ContactType, равным 63478.

Пример ответа:

1  <data eof="1">
2    <row>
3      <Result>8-903-73-210-73</Result>
4    </row>
5    <row>
6      <Result>8-916-862-27-77; 8-916-862-2777</Result>
7    </row>
8  </data>
  

Если возвращаемый результат имеет домен класса "большой объект" (clob, clob, "внешний файл"), то возвращаемое значение может быто подвергнуто пост-обработке. Подробнее этот случай описан в разделе: Особенности передачи возвращаемых значений типа "большой объект"