Ниже приведен пример использования операции SetMs для добавления переменной в уравнение. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции и добавляемая переменная. В результате выполнения операция возвращает изменённое уравнение.
{ "Envelope" : { "Body" :
{ "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" } } } } } }
{ "Envelope" : { "Body" : { "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" : "" } } } } } } } }
Функция SetMsAddFactor добавляет в уравнение указанную переменную. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ модели, содержащей переменную;
eqKey. Ключ уравнения, в которое добавляется переменная;
factor. Срез данных, соответствующий добавляемой переменной.
В результате выполнения функция возвращает модель, содержащую изменённое уравнение.
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; }
См. также: