Below is the example of using the GetMs operation to open a metamodel. The request contains an instance of opened modeling container and a pattern for opening the metamodel. The response contains the opened metamodel.
{ "GetMs" : { "tMs" : { "id" : "CGKEECJHPGLBFOAENHCHCNMCBALKLKEEEKBNGDKPHJENHLDI!M!S!CHPOBOCJHPGLBFOAEIBNAJLANGNCFIOLENLIGJEOCACFCIOLB" }, "tArg" : { "pattern" : { "obInst" : "true", "scenarios" : "None", "item" : { "key" : "89990", "problem" : { "metamodel" : { "calculationChain" : "Get", "calcChainPattern" : { "metaModelPattern" : { "calculationChain" : "Get", "calcChainPattern" : { "modelPattern" : { "generatedName" : "true" } } }, "modelPattern" : { "generatedName" : "true" } }, "visualControllerPattern" : { "variableRubricatorKey" : "true", "freeVariables" : "true" } } } } } } } }
{ "GetMsResult" : { "id" : { "id" : "CGKEECJHPGLBFOAENHCHCNMCBALKLKEEEKBNGDKPHJENHLDI!M!S!CHPOBOCJHPGLBFOAEIBNAJLANGNCFIOLENLIGJEOCACFCIOLB" }, "meta" : { "obInst" : { "obDesc" : { "@fullUrl" : "http:\/\/v-shp-development.dev.fs.fsight.world\/", "@isShortcut" : "0", "@isLink" : "0", "@ver" : "2", "@hf" : "0", "i" : "MODELSPACE", "n" : "Modeling container", "k" : "1581", "c" : "5121", "p" : "1580", "h" : "0", "hasPrv" : "0", "ic" : "0", "isPermanent" : "1", "isTemp" : "0" } }, "dirty" : "0", "item" : { "k" : "89990", "id" : "MODEL", "n" : "MODEL", "vis" : "1", "type" : "Problem", "problemMd" : { "metamodel" : { "k" : "89991", "calculationChain" : { "its" : { "Item" : [ { "k" : "1", "n" : "Output variable", "vis" : "1", "type" : "Variable", "excluded" : "0", "graphMeta" : "{"Geometry":{"x":10,"y":10,"width":150,"height":50}}", "chainVariable" : { "slice" : { "k" : "0", "id" : "Output variable|A", "n" : "Output variable|A", "vis" : "1", "variableKey" : "1", "stubKey" : "89992", "selections" : { "its" : { "Item" : { "id" : { "id" : "90004" }, "variant" : "1" } } }, "aggregator" : "None", "parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } } }, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "Year" }, "fullName" : "Output variable|A", "originalName" : "Output variable", "originalShortName" : "Output variable", "useCustomName" : "0" } }, { "k" : "2", "n" : "Input variable", "vis" : "1", "type" : "Variable", "excluded" : "0", "graphMeta" : "{"Geometry":{"x":10,"y":70,"width":150,"height":50}}", "chainVariable" : { "slice" : { "k" : "0", "id" : "Input variable|A", "n" : "Input variable|A", "vis" : "1", "variableKey" : "2", "stubKey" : "89992", "selections" : { "its" : { "Item" : { "id" : { "id" : "90004" }, "variant" : "2" } } }, "aggregator" : "None", "parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } } }, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "Year" }, "fullName" : "Input variable|A", "originalName" : "Input variable", "originalShortName" : "Input variable", "useCustomName" : "0" } }, { "k" : "3", "id" : "OBJ3", "n" : "Output variable|A[t] = A0 + A1*Input variable|A[t], (From parent)-(From parent)", "vis" : "1", "type" : "Model", "excluded" : "0", "graphMeta" : "", "model" : { "generatedName" : "Output variable|A[t] = A0 + A1*Input variable|A[t]", "readOnly" : "0" } } ] } }, "visualController" : { "variableRubricatorKey" : "89992", "freeVariables" : { "its" : "" }, "userRPath" : "", "isRExist" : "0" }, "suppressEmptyFilter" : { "suppressEmpty" : "0", "suppressEmptyArea" : "SerieBounds" }, "readOnly" : "0", "variableTestUseR" : "0", "calculateIdentOnFact" : "0" }, "useScenarios" : "0", "readOnly" : "0" } } } } }
The GetMsCalcChain function opens metamodel of the specified model. Input parameters:
ms. Opened modeling container instance.
modelKey. Key of the model that contains a metamodel.
After execution the function returns the opened metamodel. Information about the metamodel is displayed to the console window.
public static MsMetaModel GetMsCalcChain(MsId ms, ulong modelKey) { var getMsOp = new GetMs(); // Set operation execution parameters getMsOp.tMs = ms; getMsOp.tArg = new GetMsArg() { // Set general data extraction pattern
pattern = new MsMdPattern() { scenarios = ListOperation.None, item = new MsItemPattern() { // Set open model key key = modelKey, // Set model data extraction pattern problem = new MsProblemPattern() { // Set metamodel data extraction pattern metamodel = new MsMetaModelPattern()
{ // Set calculation chain data extraction pattern calculationChain = ListOperation.Get, calcChainPattern = new MsCalculationChainPattern() { metaModelPattern = new MsMetaModelPattern() { // Set calculation chain data extraction pattern calculationChain = ListOperation.Get, calcChainPattern = new MsCalculationChainPattern() { modelPattern = new MsModelPattern() { generatedName = true}
} }, modelPattern = new MsModelPattern(){ generatedName = true} }, // Set data extraction pattern for visual model building visualControllerPattern = new MsMetaModelVisualControllerPattern() { variableRubricatorKey = true, freeVariables = true
} } } } } }; // Create proxy object for operation execution var somClient = new SomPortTypeClient(); // Open model GetMsResult getMsResult = somClient.GetMs(getMsOp);
MsMetaModel mModel = getMsResult.meta.item.problemMd.metamodel; // Get calculation chain MsCalculationChainEntries calcChain = mModel.calculationChain; // Output data about chain into console window Console.WriteLine("Calculation chain: "); foreach (MsCalculationChainEntry calcEl in calcChain.its) { switch(calcEl.type) { case MsCalculationChainType.Model:
Console.WriteLine("".PadRight(2) + "model: " + calcEl.model.generatedName); break; case MsCalculationChainType.MetaModel: Console.WriteLine("".PadRight(2) + "metamodel with key: " + calcEl.metaModel.k); break; }; Console.WriteLine("".PadRight(4) + "element is excluded from calculation: " + calcEl.excluded); Console.WriteLine("".PadRight(4) + "parent element key: " + calcEl.parentKey); } return mModel; }
See also: