ForeExec

Синтаксис

ForeExecResult ForeExec(ForeId tFore, ForeExecArg tArg)

Параметры

tFore. Моникёр объекта среды разработки, содержащего реализацию выполняемого метода.

tArg. Параметры выполнения операции.

Описание

Операция ForeExec выполняет методы, реализованные в Fore-модулях.

Комментарии

Для выполнения операции необходимо в поле tFore указать моникёр модуля/сборки, содержащего реализацию выполняемого метода. Моникёр может быть получен при выполнении операции GetObjects. В поле tArg.methodName укажите наименование выполняемого метода, а в поле tArg.args значения входных параметров метода. Реализация метода должна располагаться в глобальном пространстве имен.

Сигнатура выполняемого метода может содержать параметры простых типов и возвращать значение простого типа. Если метод возвращает какое-либо значение, то оно будет доступно в результате выполнения операции.

Если выполняемый метод содержит параметры с типом Object, то в качестве значения этих параметров должны передаваться строковые представления моникёров каких-либо объектов. При выполнении операции по моникёру будет получен и передан в выполняемый метод соответствующий объект репозитория. Для работы с этим объектом приведите его к интерфейсу, который описывает его структуру. Например, при передаче моникёра соединения с репозиторием параметр в методе будет иметь тип IMetabase, при передаче моникёра экспресс-отчета - IEaxAnalyzer и так далее.

Если передаётся моникёр бинарного объекта, сохранённого на сервере с помощью операции PutBin, то в выполняемом методе такой объект может быть приведён к интерфейсу IBinary.

Операция ForeExec может передавать в выполняемый метод объекты в JSON-формате, а также принимать ответ в JSON-формате. Соответствующие параметры в сигнатуре метода должны иметь тип IJsonObject. Возвращаемый тип значения также должен быть IJsonObject.

Рекомендации по использованию

При разработке веб-приложения, из которого предполагается запуск на выполнение различных методов, используйте следующие рекомендации:

Запрет выполнения операции ForeExec

Ввиду возможного использования операции ForeExec для выполнения кода, к которому конкретный пользователь не должен иметь доступа, существует ряд возможностей запрета выполнения операции:

Примечание. Более подробно о месте расположения параметров читайте в описании соответствующих файлов конфигурации.

<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>

Особенности работы

При работе операции ForeExec не проверяется время изменения модулей/сборок, поэтому при первом выполнении метода в кеш сборок будет загружена текущая версия объекта из репозитория. Если в дальнейшем код метода изменяется, то его повторный запуск с помощью операции ForeExec приведёт к выполнению старой версии метода, которая уже имеется в кеше сборок. Для использования актуальной версии метода потребуется перезагрузка BI-сервера.

Пример

Различные варианты использования операции приведены в следующих примерах:

Наименование примера
Выполнение Fore-метода
Передача объектов в качестве значений параметров
Работа с объектами в JSON-формате

См. также:

Специфические операции