Below is the example of using the SetMs operation to create a metamodel parameter. The request contains an instance of opened modeling container, parameters of operation execution, and parameters of the created parameter. After execution the operation returns the metamodel that contains parameters.
{ "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" : "Modeling container", "k" : "1581", "c" : "5121", "p" : "1580",
"h" : "0" } }, "dirty" : "0", "item" : { "k" : "2804", "id" : "OBJ2804", "n" : "Model", "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" : "" } } } } } } }
The SetMsAddParam function creates a metamodel parameter. Input parameters:
ms. Instance of the opened modeling container.
mModelKey. Key of the metamodel to be changed.
After execution the real-type parameter named testParam is created in the metamodel.
public static void SetMsAddParam(MsId ms, ulong mModelKey) { var setMsOp = new SetMs(); setMsOp.tMs = ms; setMsOp.tArg = new SetMsArg() { // Set data change pattern pattern = new MsMdPattern() { item = new MsItemPattern() { // Set metamodel key key = mModelKey, metaModel = new MsMetaModelPattern() {mmParams = ListOperation.Add}
} }, // Set data that must be changed 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 } }; // Create proxy object for operation execution var somClient = new SomPortTypeClient(); // Set operation execution parameters var result = somClient.SetMs(setMsOp); }
See also: