Ниже приведен пример использования операции ForeExec для выполнения метода с передачей объектов репозитория в качестве значений параметров. В запросе передаётся наименование выполняемого метода и моникёр объекта среды разработки, содержащего его реализацию. В значениях параметров передаются моникёры соединения с репозиторием и какого-либо объекта репозитория. Выполняемый метод имеет следующий синтаксис:
В примере C# используется функция FindObjectById, код которой приведён в примере «Получение описания объекта по его идентификатору».
{
"ForeExec" :
{
"tFore" :
{
"id" : "OFOMADGBDDDFGOAEMBGBIAEKAJPBNMNEJKDFELDOIMPMLNDA!M!7360"
},
"tArg" :
{
"methodName" : "WorkWithObject",
"args" :
{
"it" :
[
{
"k" : "1",
"value" : "OFOMADGBDDDFGOAEMBGBIAEKAJPBNMNEJKDFELDOIMPMLNDA!M"
},
{
"k" : "2",
"value" : "OFOMADGBDDDFGOAEMBGBIAEKAJPBNMNEJKDFELDOIMPMLNDA!M!S!EJBBMDGGBDDDFGOAEIAJALLMHHKLAKEMEOLDFCEDHOKFABHCE"
}
]
}
}
}
}
{
"ForeExecResult" :
{
"result" : ""
}
}
public static ForeExecResult ExecMethodWithObject(MbId mb, string assmId, string methodName, string objMoniker)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tExec = new ForeExec()
{
tArg = new ForeExecArg()
{
methodName = methodName,
// Моникёры в качестве значений параметров
args = new OdArg[2]
{
new OdArg(){ k = 1, value = mb.id },
new OdArg(){ k = 2, value = objMoniker }
}
},
// Моникёр объекта среды разработки с реализацией метода
tFore = new ForeId()
{
id = mb.id + "!" + FindObjectById(mb, assmId).k
}
};
// Выполнение метода
var result = somClient.ForeExec(tExec);
return result;
}
См. также: