Ниже приведен пример использования операции SetMs для создания параметра метамодели. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции и параметры создаваемого параметра. В результате выполнения операция возвращает метамодель, содержащую параметры.
{ "Envelope" : { "Body" : { "SetMs" : { "tMs" : { "id" : "S11!M!S!C1"
}, "tArg" : { "pattern" : { "obInst" : "true", "item" : { "key" : "2804", "metaModel" :
{ "mmParams" : "Add" } } }, "meta" : { "item" : { "k" : "0",
"type" : "Unknown", "metaModelMd" : { "mmParams" : { "its" : { "Item" : { "k" : "0",
"n" : "testParam", "dataType" : "3", "defaultValue" : "0", "hidden" : "false" } } } } } },
"metaGet" : { "obInst" : "true", "item" : { "key" : "2804", "metaModel" : { "mmParams" : "Get" }
} }, "execParams" : { "execSaveMetaModel" : "true" } } } } } }
{ "Envelope" : { "Body" : { "SetMsResult" : { "id" : { "id" : "S11!M!S!C1" }, "meta" : {
"obInst" : { "obDesc" : { "@isShortcut" : "0", "i" : "MODELSPACE", "n" : "Контейнер моделирования", "k" : "1581", "c" : "5121", "p" : "1580",
"h" : "0" } }, "dirty" : "0", "item" : { "k" : "2804", "id" : "OBJ2804", "n" : "Модель", "vis" : "1",
"type" : "MetaModel", "metaModelMd" : { "k" : "2804", "mmParams" : { "its" : { "Item" : [
{ "k" : "1", "id" : "ITEM1", "n" : "testParam", "vis" : "1", "dataType" : "3", "defaultValue" : "0", "hidden" : "0", "tag" : "" }
] } }, "visualController" : "" } } } } } } }
Функция SetMsAddParam создаёт параметр метамодели. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
mModelKey. Ключ изменяемой метамодели.
В результате выполнения в метамодели создаётся вещественный параметр «testParam».
public static void SetMsAddParam(MsId ms, ulong mModelKey) { var setMsOp = new SetMs(); setMsOp.tMs = ms; setMsOp.tArg = new SetMsArg() { // Задаем шаблон изменения данных pattern = new MsMdPattern() { item = new MsItemPattern() { // Задаём ключ метамодели key = mModelKey, metaModel = new MsMetaModelPattern() {mmParams = ListOperation.Add}
} }, // Задаем данные, которые необходимо изменить meta = new MsMd { item = new MsItem { metaModelMd = new MsMetaModel { mmParams = new MsModelParams
{ its = new MsModelParam[] { new MsModelParam { n = "testParam", dataType = 3, defaultValue = "0", linkedObjectKey = null, hidden = false,
tag = null } } } } } }, metaGet = new MsMdPattern() { item = new MsItemPattern()
{ key = mModelKey, metaModel = new MsMetaModelPattern() { mmParams = ListOperation.Get } } }, execParams = new MsMdExecParams() { execSaveMetaModel = true } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.SetMs(setMsOp); }
См. также: