Приведено использование операции OpenMs для открытия контейнера моделирования. В запросе передаются: моникёр контейнера и шаблон получения данных. В ответе приходят: моникёр открытого экземпляра контейнера моделирования и данные о сценариях контейнера.
{
"OpenMs" :
{
"tOb" :
{
"id" : "DHBHAJPMANJBFOAEDNFOJNMAGMDOKOGEAIHDMOJANENOLHHL!M!1581"
},
"tArg" :
{
"args" : "",
"metaGet" :
{
"obInst" : "false",
"all" : "false",
"scenarios" : "Get",
"period" : "false"
}
}
}
}
{
"OpenMsResult" :
{
"id" :
{
"id" : "DHBHAJPMANJBFOAEDNFOJNMAGMDOKOGEAIHDMOJANENOLHHL!M!S!CBDMOGKANANJBFOAEKPBOKHMPKEPCPPFEAIEDKBCJMDFEGEIK"
},
"meta" :
{
"scenarios" :
{
"nodes" :
{
"it" :
[
{
"@isFolder" : "0",
"k" : "1628",
"id" : "OBJ1628",
"n" : "Базовый",
"vis" : "1",
"scenDesc" :
{
"@fullUrl" : "http:\/\/v-shp-development.dev.fs.fsight.world\/",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "0",
"@hf" : "0",
"i" : "OBJ1628",
"n" : "Базовый",
"k" : "1628",
"c" : "5124",
"p" : "1627",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
},
"internalKey" : "1629"
},
{
"@isFolder" : "0",
"k" : "5371",
"id" : "OBJ5371",
"n" : "Базовый (копия1)",
"vis" : "1",
"scenDesc" :
{
"@fullUrl" : "http:\/\/v-shp-development.dev.fs.fsight.world\/",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "0",
"@hf" : "0",
"i" : "OBJ5371",
"n" : "Базовый (копия1)",
"k" : "5371",
"c" : "5124",
"p" : "1627",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
},
"internalKey" : "5372"
}
]
}
}
},
"readOnly" : "0"
}
}
Функция OpenMsMeta извлекает из открытого контейнера моделирования данные о сценариях. Моникёр соединения с репозиторием и идентификатор контейнера передаются в качестве входных параметров. В примере используется функция FindObjectById, код которой приведен в разделе «Получение описания объекта по его идентификатору».
public static MsScenarioTree OpenMsMeta(MbId mb, string msId)
{
// Получаем ключ контейнера моделирования
ulong msKey = FindObjectById(mb, msId).k;
// Задаем параметры выполнения операции
var tMsOp = new OpenMs();
tMsOp.tArg = new OpenMsArg()
{
// Задаем параметры октрытия контейнера
args = new MsOpenArgs(),
// Задаем шаблон получения данных
metaGet = new MsMdPattern()
{
all = false,
obInst = false,
period = false,
scenarios = ListOperation.Get
}
};
tMsOp.tOb = new OdId();
// Формируем моникёр контейнера моделирования
tMsOp.tOb.id = mb.id + "!" + msKey.ToString();
// Создаем прокси-объект для выполнения операции
var somClient = new SomPortTypeClient();
// Открываем контейнер моделирования для редактирования
OpenMsResult tResult = somClient.OpenMs(tMsOp);
// Возвращаем данные о сценариях
MsMd mcMeta = tResult.meta;
MsScenarioTree scTree = mcMeta.scenarios;
return scTree;
}
См. также:
SOAP