Ниже приведен пример использования операции SetMs для изменения параметров уравнения. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции, настройки уравнения для метода «Фильтр Бакстера-Кинга» и шаблон получения измененных данных. В результате выполнения операция возвращает модель, содержащую измененное уравнение.
{ "Envelope" : { "Body" : {
"SetMs" : { "tMs" : { "id" : "S20!M!S!C1" }, "tArg" : { "pattern" : {
"obInst" : "true", "item" : { "key" : "3317", "model" : { "transform" : { "formulas" : "" }
} } }, "meta" : { "item" : { "k" : "3317", "type" : "Model", "modelMd" :
{ "transform" : { "formulas" : { "its" : { "it" : [ {
"k" : "0", "kind" : "BandpassFilter", "method" : { "bandpassFilter" : { "missingData" : "", "width" : "3", "frequencyLow" : "2", "frequencyHigh" : "8",
"outputType" : "CycleSeries" } } } ] } } } } }
}, "metaGet" : { "obInst" : "true", "scenarios" : "Get", "item" : { "key" : "2803", "problem" : {
"metamodel" : { "calculationChain" : "Get", "calcChainPattern" : { "modelPattern" : { "transform" : { "formulaCount" : "true",
"formulas" : { "method" : "" }, "equationsFormula" : { "method" : "" }, "kind" : "true" }
} }, "visualControllerPattern" : { "variableRubricatorKey" : "true", "chainWorkbookKey" : "true", "freeVariables" : "true" } } }
} }, "execParams" : { "execSaveModel" : "true" } } } } } }
{ "Envelope" : { "Body" : { "SetMsResult" : {
"id" : { "id" : "S20!M!S!C1" }, "meta" : { "obInst" : { "obDesc" : {
"@isShortcut" : "0", "i" : "MODELSPACE", "n" : "Контейнер моделирования", "k" : "1581", "c" : "5121", "p" : "1580", "h" : "0" } }, "dirty" : "0",
"scenarios" : { "nodes" : { "it" : { "@isFolder" : "0", "k" : "1628", "id" : "OBJ1628", "n" : "Базовый",
"vis" : "1", "scenDesc" : { "@isShortcut" : "0", "i" : "OBJ1628", "n" : "Базовый", "k" : "1628", "c" : "5124", "p" : "1627", "h" : "0"
} } } }, "item" : { "k" : "2803", "id" : "TEMP_MODEL", "n" : "TEMP_MODEL", "vis" : "1",
"type" : "Problem", "problemMd" : { "metamodel" : { "k" : "2804", "calculationChain" : { "its" : {
"Item" : { "k" : "3317", "id" : "OBJ3317", "n" : "MyInputVavable[t] = HPFilter(MyInputVavable[t], Степень = 2.000)", "vis" : "1", "type" : "Model", "excluded" : "0", "model" : {
"transform" : { "formulaCount" : "1", "formulas" : { "its" : { "it" : [ {
"k" : "0", "kind" : "BandpassFilter", "method" : { "bandpassFilter" : { "missingData" : { "specifiedVector" : "", "method" : "None",
"methodParameter" : "5", "specifiedValue" : "0" }, "width" : "3", "frequencyLow" : "2.000000", "frequencyHigh" : "8.000000", "outputType" : "CycleSeries", "explained" : { "slice" :
{ "k" : "0", "id" : "261", "n" : "MyInputVavable", "vis" : "1", "variableKey" : "3319", "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" }, "lag" : "", "key" : "0", "termToText" : "{MyInputVavable[t]}", "termToInnerText" : "@_3319:0[]", "termInfo" : { "k" : "4294967295", "lag" : "0",
"inversion" : { "type" : "None", "lag" : "PrecidingValue", "previousLag" : "-1", "seasonality" : "None", "dependence" : "Linear", "K" : "3" } },
"unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" } }, "cycleTerm" : {
"k" : "4294967295" }, "nonCyclicalTerm" : { "k" : "4294967295" } }, "inversionInfo" : { "type" : "None",
"lag" : "PrecidingValue", "previousLag" : "-1", "seasonality" : "None", "dependence" : "Linear", "K" : "3" } }, "calendarLevel" : "Year", "outputSliceKey" : "0" }
] } }, "kind" : "Simple" } } } } }, "visualController" :
{ "variableRubricatorKey" : "2805", "chainWorkbookKey" : "2837", "freeVariables" : { "its" : { "Item" : { "k" : "0",
"id" : "262", "n" : "MyOutputVavable", "vis" : "1", "variableKey" : "2840", "stubKey" : "2805", "selections" : { "its" : { "Item" :
{ "id" : { "id" : "2818" }, "variant" : "262" } } }, "aggregator" : "None",
"parametrizedDimensions" : { "its" : { "Item" : { "dimension" : "0", "parameter" : "0" } }
}, "unitInfo" : { "unit" : "4294967295", "measure" : "4294967295", "baseUnit" : "4294967295", "unitsDimensionKey" : "0" }, "level" : "None" }
} } } } } } } } } } }
Функция SetMsBpf изменяет метод расчёта уравнения. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ модели, содержащей уравнение;
eqKey. Ключ уравнения.
В результате выполнения функция возвращает модель, содержащую уравнение.
public static MsItem SetMsBpf(MsId ms, ulong modelKey, ulong eqKey) { // vars.its.Length var setMsOp = new SetMs(); // Задаем параметры выполнения операции setMsOp.tMs = ms; setMsOp.tArg = new SetMsArg() { // Задаем шаблон изменения данных pattern = new MsMdPattern() { item = new MsItemPattern() { // Указываем ключ модели key = modelKey, problem = new MsProblemPattern() { metamodel = new MsMetaModelPattern() { calculationChain = ListOperation.Change } } } }, // Задаем данные, которые необходимо изменить meta = new MsMd() { item = new MsItem() { k = modelKey, type = MsItemType.Problem, problemMd = new MsProblem() { metamodel = new MsMetaModel() { calculationChain = new MsCalculationChainEntries() { its = new MsCalculationChainEntry[] { new MsCalculationChainEntry() { k = eqKey, type = MsCalculationChainType.Model, model = new MsModel() { transform = new MsFormulaTransform() { formulas = new TsFormulas() { its = new TsFormula[] { new TsFormula() { kind = TsFormulaKind.BandpassFilter, method = new TsMethod() { // Задаем параметры метода «Фильтр Бакстера-Кинга» bandpassFilter = new TsBandpassFilterMethod() { // Задаём метод обработки пропусков missingData = new StatMissingData(){}, // Задаём параметры периода цикличности width = 3, frequencyLow = 2, frequencyHigh = 8, // Задаём компоненту, выгружаемую в моделируемую переменную outputType = TsBPFOutputType.CycleSeries, // Циклическую и нециклическую компоненты дополнительно не выгружаем cycleTerm = null, nonCyclicalTerm = null } } } } } } } } } } } } } }, // Задаем шаблон извлечения измененных данных metaGet = new MsMdPattern() { scenarios = ListOperation.Get, period = true, item = new MsItemPattern() { key = modelKey, problem = new MsProblemPattern() { details = true, scenarios = ListOperation.Get, useSavedCoefficients = true, metamodel = new MsMetaModelPattern() { calculationChain = ListOperation.Get, calcChainPattern = new MsCalculationChainPattern() { modelPattern = new MsModelPattern() { transform = new MsFormulaTransformPattern() { kind = true, formulaCount = true, formulas = new TsFormulaPattern() { method = new TsMethodPattern() { } }, equationsFormula = new TsFormulaPattern() { method = new TsMethodPattern() { } } } } }, visualControllerPattern = new MsMetaModelVisualControllerPattern() { variableRubricatorKey = true, levelFormat = MsLevelFormat.Short, useSourceName = false, freeVariables = true } } } } } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.SetMs(setMsOp); return result.meta.item; }
См. также:
SetMs: Операция | Фильтр Бакстера-Кинга