Ниже приведен пример использования операции SetMs для создания параметра метамодели. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции и параметры создаваемого параметра. В результате выполнения операция возвращает метамодель, содержащую параметры.
{
"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"
}
}
}
}
}
}
{
"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" : "" } } }
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);
}
См. также: