Ниже приведен пример использования операции GetMs для поиска фактора модели. В запросе передаются: экземпляр открытого контейнера моделирования, шаблон для извлечения данных и срез данных, соответствующий искомому фактору. В ответе приходят: ключ фактора и ключ модели, которая его содержит.
{ "Envelope" : { "Body" : { "GetMs" : { "tMs" : { "id" : "S27!M!S!C1"
}, "tArg" : { "pattern" : { "obInst" : "true", "item" : { "key" : "2803", "problem" :
{ "metamodel" : { "tag" : "false", "visualControllerPattern" : "" } } } }, "execParams" :
{ "slice" : { "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" }, "execGetFactorByVariable" : "true" } } } } } }
{ "Envelope" : { "Body" : { "GetMsResult" : { "id" : { "id" : "S27!M!S!C1"
}, "meta" : { "obInst" : { "obDesc" : { "@isShortcut" : "0", "i" : "MODELSPACE", "n" : "Контейнер моделирования",
"k" : "1581", "c" : "5121", "p" : "1580", "h" : "0" } }, "dirty" : "0", "item" : { "k" : "2803",
"id" : "TEMP_MODEL", "n" : "TEMP_MODEL", "vis" : "1", "type" : "Problem", "problemMd" : { "metamodel" : { "k" : "2804", "visualController" :
{ "factorKey" : "10095" } } } } } } } } }
Функция GetMsFactorByVarable ищет в модели фактор, соответствующий указанному срезу данных. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ модели;
slice. Срез данных.
В результате выполнения функция возвращает ключ фактора, который также выводится в окно консоли.
public static ulong? GetMsFactorByVarable(MsId ms, ulong modelKey, MsFormulaTransformSlice slice) { var getMsOp = new GetMs(); getMsOp.tMs = ms; getMsOp.tArg = new GetMsArg() { // Задаем шаблон изменения данных pattern = new MsMdPattern() { item = new MsItemPattern() { key = modelKey, problem = new MsProblemPattern() { metamodel = new MsMetaModelPattern() { tag = false, visualControllerPattern = new MsMetaModelVisualControllerPattern() { } } } } }, execParams = new MsMdExecParams() { slice = slice, execGetFactorByVariable = true } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.GetMs(getMsOp); MsMetaModelVisualController metaVC = result.meta.item.problemMd.metamodel.visualController; ulong? fc = metaVC.factorKey; if (fc != null) {Console.WriteLine("Ключ фактора: " + fc);}; return fc; }
См. также: