ForeExecResult ForeExec(ForeId tFore, ForeExecArg tArg)
tFore. Моникер объекта среды разработки, содержащего реализацию выполняемого метода.
tArg. Параметры выполнения операции.
Операция ForeExec выполняет методы, реализованные в Fore или Fore.NET модулях/сборках.
Для выполнения операции необходимо в поле tFore указать моникер модуля/сборки/.NET-сборки, содержащего реализацию выполняемого метода. Моникер может быть получен при выполнении операции GetObjects. В поле tArg.methodName укажите наименование выполняемого метода, а в поле tArg.args значения входных параметров метода. Если метод находится в Fore модуле/сборке, то его реализация должна располагаться в глобальном пространстве имен. В качестве значения поля tArg.methodName указывается наименование выполняемого метода. Если метод находится в Fore.NET сборке, то его реализация должна располагаться в классе. Выполняемый метод должен иметь модификаторы доступа Public и Shared. В качестве значения поля tArg.methodName указывается наименование метода в формате «класс».«метод».
Сигнатура метода должна содержать параметры простых типов и возвращать значение простого типа. Если метод возвращает какое-либо значение, то оно будет доступно в результате выполнения операции.
Если выполняемый метод содержит параметры с типом Object, то в качестве значения этих параметров должны передаваться строковые представления моникеров каких-либо объектов. При выполнении операции по моникеру будет получен и передан в выполняемый метод соответствующий объект репозитория. Для работы с этим объектом приведите его к интерфейсу, который описывает его структуру. Например, при передаче моникера соединения с репозиторием параметр в методе будет иметь тип IMetabase, при передаче моникера экспресс-отчета - IEaxAnalyzer и так далее.
Ниже приведен список различных проблем, которые могут возникнуть при использовании операции ForeExec, и способы их решения.
При выполнении
Fore.NET-метода возникает ошибка об отсутствии зарегистрированного COM-класса
При выполнении Fore.NET-метода
возникает ошибка «Catastrophic failure»
Ввиду возможного использования операции ForeExec для выполнения кода, к которому конкретный пользователь не должен иметь доступа, существует ряд возможностей запрета выполнения операции:
Создание параметра Disallow со значением «1» в файле настроек BI-сервера Settings.xml. Разрешение/запрет операции будет осуществляться BI-сервером.
Создание параметра foreExec со значением False в файле настроек веб-сервера PP.xml. Разрешение/запрет операции будет осуществляться веб-сервером. При этом для запрета операции в заголовке запроса будет автоматически формироваться параметр «p_h» со значением «1».
Примечание. Более подробно о месте расположения параметров читайте в описании соответствующих файлов конфигурации.
В заголовке запроса, выполняющего операцию ForeExec, сформировать параметр «p_h» или «p-h» со значением «1». Формирование параметра производится с использованием ресурсов того языка программирования, на котором ведется разработка в соответствии с прикладной логикой приложения. Например, при разработке на JavaScript код будет следующим:
<html> <body> <script language="javascript" type="text/javascript"> <!--...Предыдущий код приложения...--> <!--...--> <!--Функция для отправки JSON-запроса--> function PostRequest(url, request) { <!--...--> var xhr = new XMLHttpRequest(); <!--...--> xhr.setRequestHeader('p-h', '1'); <!--...--> xhr.send(JSON.stringify(request)); <!--...--> } </script> </body> </html>
Различные варианты использования операции приведены в следующих примерах:
| Наименование примера |
См. также: