Ниже приведен пример использования операции GetMs для создания переменной на основе ряда из БД временных рядов. В запросе передается экземпляр открытого контейнера моделирования, шаблон для изменения модели и временной ряд. В ответе приходит описание созданной переменной.
{ "Envelope" : { "Body" : { "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" } } } } } }
{ "Envelope" : { "Body" : { "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"
} } } } } } } } } } }
Функция GetMsRubVar создаёт переменную на основе указанного ряда из БД временных рядов. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
metaModelKey. Ключ цепочки расчёта, в которую добавляется переменная;
varRub. Временной ряд;
rubKey. Ключ БД временных рядов, содержащей ряд varRub.
В результате выполнения функция возвращает модель, содержащую новую переменную. Данные о переменной выводятся в окно консоли.
public static MsItem GetMsRubVar(MsId ms, ulong metaModelKey, RubFact varRub, ulong rubKey) { 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() {} } } }, execParams = new MsMdExecParams() { rubFacts = new RubFact[] { varRub }, inputRubKey = rubKey, execGetVariablesByFactors = true, execSaveProblem = true } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.GetMs(getMsOp); MsMetaModelVisualController metaVC = result.meta.item.metaModelMd.visualController; MsVariablesByFactors vars = metaVC.variablesByFactors; foreach (MsVariableByFactor vbf in vars.its) { Console.WriteLine("Добавлена переменная: " + vbf.slice.n); Console.WriteLine(" - переменная существует: " + vbf.variableExists); }; return result.meta.item; }
См. также: