Приведено использование операции 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; }
См. также: