Ниже приведен пример использования операции SetMs для добавления переменной в уравнение. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции и добавляемая переменная. В результате выполнения операция возвращает изменённое уравнение.
{
"SetMs" :
{
"tMs" :
{
"id" : "S109!M!S!C1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true"
},
"meta" : "",
"metaGet" :
{
"obInst" : "true",
"item" :
{
"key" : "4411",
"problem" :
{
"metamodel" :
{
"calculationChain" : "Get",
"tag" : "false",
"calcChainPattern" :
{
"modelPattern" :
{
"generatedName" : "true"
}
}
}
}
}
},
"execParams" :
{
"k" : "4936",
"slice" :
{
"k" : "0",
"id" : "OBJ_TSDB!313",
"n" : "БД временных рядов!d12",
"vis" : "true",
"variableKey" : "4939",
"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" }, "execSaveProblem" : "true", "execAddFactor" : "true" } } } } } }
{
"SetMsResult" :
{
"id" :
{
"id" : "S109!M!S!C1"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@isShortcut" : "0",
"i" : "MODELSPACE",
"n" : "Контейнер моделирования",
"k" : "1581",
"c" : "5121",
"p" : "1580",
"h" : "0"
}
},
"dirty" : "0",
"item" :
{
"k" : "4411",
"id" : "MODEL_DEL",
"n" : "model_del",
"vis" : "1",
"type" : "Problem",
"problemMd" :
{
"metamodel" :
{
"k" : "4412",
"calculationChain" :
{
"its" :
{
"Item" :
{
"k" : "4936",
"id" : "OBJ4936",
"n" : "Varable[t] = A1*Varable[t]",
"vis" : "1",
"type" : "Model",
"excluded" : "0",
"model" :
{
"generatedName" : "Varable[t] = A1*Varable[t] + A2*БД временных рядов!d12[t]"
}
}
} }, "visualController" : "" } } } }
public static MsItem SetMsAddFactor(MsId ms, ulong modelKey, ulong eqKey, MsFormulaTransformSlice factor)
{
var setMsOp = new SetMs();
setMsOp.tMs = ms;
setMsOp.tArg = new SetMsArg()
{ // Задаем шаблон изменения данных
pattern = new MsMdPattern() { },
meta = new MsMd() { },
// Задаём шаблон извлечения данных
metaGet = new MsMdPattern()
{
item = new MsItemPattern()
{
key = modelKey,
problem = new MsProblemPattern()
{
metamodel = new MsMetaModelPattern()
{
tag = false,
calculationChain = ListOperation.Get,
calcChainPattern = new MsCalculationChainPattern()
{
modelPattern = new MsModelPattern()
{generatedName = true}
}
}
}
}
},// Задаём параметры выполнения операции
execParams = new MsMdExecParams()
{ // Задаём ключ уравнения
k = eqKey,
// Задаём срез, соответствующий ряду slice = factor, execAddFactor = true, execSaveProblem = true } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Выполняем операцию var result = somClient.SetMs(setMsOp); return result.meta.item; }
См. также: