Ниже приведен пример использования операции GetMs для добавления переменных в модель. В запросе передаются: экземпляр открытого контейнера моделирования, шаблон для извлечения данных и срезы данных, соответствующие добавляемым переменным. В ответе приходят переменные, которые не входят ни в одно уравнение модели.
{ "Envelope" : { "Body" : { "GetMs" : { "tMs" :
{ "id" : "S38!M!S!C1" }, "tArg" : { "pattern" : { "obInst" : "true", "item" : {
"key" : "4412", "metaModel" : { "tag" : "false", "visualControllerPattern" : { "freeVariables" : "true" } } }
}, "execParams" : { "slices" : { "its" : { "Item" : { "k" : "0",
"id" : "261", "n" : "MyInputVavable", "vis" : "true", "variableKey" : "5156", "stubKey" : "2805", "selections" : { "its" : { "Item" :
{ "id" : { "id" : "2818" }, "variant" : "261" } } }, "aggregator" : "None",
"parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } }
}, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "None" }
} }, "execSaveMetaModel" : "true", "execSaveProblem" : "true", "execCreateVariables" : "true" } } } } } }
{ "Envelope" : { "Body" : {
"GetMsResult" : { "id" : { "id" : "S38!M!S!C1" }, "meta" : { "obInst" : {
"obDesc" : { "@isShortcut" : "0", "i" : "MODELSPACE", "n" : "Контейнер моделирования", "k" : "1581", "c" : "5121", "p" : "1580", "h" : "0" }
}, "dirty" : "0", "item" : { "k" : "4412", "id" : "MODEL_DEL_METAMODEL", "n" : "model_del", "vis" : "1", "type" : "MetaModel", "metaModelMd" :
{ "k" : "4412", "visualController" : { "freeVariables" : { "its" : { "Item" : {
"k" : "0", "id" : "261", "n" : "MyInputVavable", "vis" : "1", "variableKey" : "5179", "stubKey" : "2805", "selections" : { "its" : {
"Item" : { "id" : { "id" : "2818" }, "variant" : "261" } } },
"aggregator" : "None", "parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" }
} }, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "None"
} } } } } } } } } } }
Функция GetMsAddVars добавляет в модель указанные переменные. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
metaModelKey. Ключ цепочки расчёта модели;
slices. Срезы данных, соответствующие добавляемым переменным.
В результате выполнения функция возвращает цепочку расчёта модели.
public static MsItem GetMsAddVars(MsId ms, ulong metaModelKey, MsFormulaTransformSlices slices) { var getMsOp = new GetMs(); getMsOp.tMs = ms; getMsOp.tArg = new GetMsArg() { // Задаем шаблон изменения данных pattern = new MsMdPattern() { item = new MsItemPattern() { key = metaModelKey, metaModel = new MsMetaModelPattern() { tag = false, visualControllerPattern = new MsMetaModelVisualControllerPattern() { freeVariables=true } } } }, execParams = new MsMdExecParams() { slices = slices, execCreateVariables = true, execSaveProblem = true, execSaveMetaModel = true } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.GetMs(getMsOp); return result.meta.item; }
См. также: