Ниже приведен пример использования операции GetMs для создания переменной на основе ряда из БД временных рядов. В запросе передается экземпляр открытого контейнера моделирования, шаблон для изменения модели и временной ряд. В ответе приходит описание созданной переменной.
{
"GetMs" :
{
"tMs" :
{
"id" : "S70!M!S!C1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true",
"item" :
{
"key" : "4412",
"metaModel" :
{
"tag" : "false",
"visualControllerPattern" : ""
}
}
},
"execParams" :
{
"rubFacts" :
{
"it" :
{
"k" : "10113",
"vis" : "true",
"atts" :
{
"its" :
{
"it" :
[
{
"k" : "9",
"id" : "COUNTRY",
"n" : "Страна",
"vis" : "true",
"value" : "313"
}
]
}
}
} }, "inputRubKey" : "2940", "execSaveProblem" : "true", "execGetVariablesByFactors" : "true" } } } } } }
{
"GetMsResult" :
{
"id" :
{
"id" : "S70!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" :
{
"variablesByFactors" :
{
"its" :
{
"Item" :
{
"slice" :
{
"k" : "0",
"id" : "OBJ_TSDB!313",
"n" : "БД временных рядов!d12",
"vis" : "1",
"variableKey" : "4563",
"stubKey" : "2940",
"selections" :
{
"its" :
{
"Item" :
{
"id" :
{
"id" : "208"
},
"variant" : "313"
}
}
},
"aggregator" : "None",
"parametrizedDimensions" :
{
"its" :
{
"Item" :
{
"dimension" : "0",
"parameter" : "0"
}
}
},
"unitInfo" :
{
"unit" : "4294967295",
"measure" : "4294967295",
"baseUnit" : "4294967295",
"unitsDimensionKey" : "0"
},
"level" : "None"
},
"variableExists" : "0"
} } } } } } }
public static MsItem GetMsRubVar(MsId ms, uint metaModelKey, RubFact varRub, uint rubKey)
{
var getMsOp = new GetMs()
{
tMs = ms,
tArg = new GetMsArg()
{
pattern = new MsMdPattern()
{
item = new MsItemPattern()
{
key = metaModelKey,
metaModel = new MsMetaModelPattern()
{
tag = false,
visualControllerPattern = new MsMetaModelVisualControllerPattern() { }
}
}
},
execParams = new MsMdExecParams()
{
execGetVariablesByFactors = new MsMdExecGetVariablesByFactors()
{
rubFacts = new RubFact[] { varRub },
inputRubKey = rubKey
}
}
}
};
// Создаем прокси-объект для выполнения операции
var somClient = new SomPortTypeClient();
// Добавление переменной из БД временных рядов
var result = somClient.GetMs(getMsOp);
var metaVC = result.meta.item.metaModelMd.visualController;
var vars = metaVC.variablesByFactors;
foreach (MsVariableByFactor vbf in vars.its)
{
Console.WriteLine("Добавлена переменная: " + vbf.chainEntry.n);
Console.WriteLine(" - переменная существует: " + vbf.variableExists);
};
return result.meta.item;
}
См. также: