Ниже приведен пример использования операции GetMs для создания объекта, выполняющего расчёт модели. В запросе передаются: экземпляр открытого контейнера моделирования, шаблон и параметры расчёта модели. В ответе приходят параметры расчёта.
{ "Envelope" : { "Body" : { "GetMs" : { "tMs" : { "id" : "S30!M!S!C1" },
"tArg" : { "pattern" : { "obInst" : "true", "item" : { "key" : "2803", "problem" : {
"calculation" : { "calculationState" : "" } } } }, "execParams" : { "calculationSettings" :
{ "includedScenarioKeys" : "", "factIncluded" : "true", "paramValues" : { "its" : { "Item" : { "k" : "0",
"id" : "ITEM1", "value" : "5" } } }, "period" : { "identificationStartDate" : "1990-01-01", "identificationEndDate" : "2005-01-01", "forecastStartDate" : "2006-01-01",
"forecastEndDate" : "2015-01-01" }, "dataLoadingPeriod" : { "useDefault" : "false", "startDate" : "1990-01-01", "endDate" : "2006-01-01" }, "defaultLevel" : "Year", "breakOnError" : "true",
"clearSeriesOnWarning" : "true", "filterWarnings" : "true" }, "execSaveProblem" : "true", "execCalculate" : "true" } } } } } }
{ "Envelope" : { "Body" : { "GetMsResult" : { "id" : {
"id" : "S30!M!S!C1" }, "meta" : { "obInst" : { "obDesc" : { "@isShortcut" : "0", "i" : "MODELSPACE",
"n" : "Контейнер моделирования", "k" : "1581", "c" : "5121", "p" : "1580", "h" : "0" } }, "dirty" : "0", "item" : {
"k" : "2803", "id" : "TEMP_MODEL", "n" : "TEMP_MODEL", "vis" : "1", "type" : "Problem", "problemMd" : { "calculation" : { "pointCount" : "0",
"pointPassed" : "0", "saveData" : "1", "copyFact" : "0", "treatNullsAsZeros" : "0", "isRunning" : "0", "calculationState" : { "scenarioKey" : "4294967295", "currentPoint" : "1899-12-30", "message" : ""
}, "isSuspend" : "0" }, "problemCalculationKey" : "0" } } } } } } }
Функция GetMsStartCalc создаёт объект для расчёта указанной модели. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ рассчитываемой модели.
В результате выполнения функция возвращает ключ объекта, выполняющего расчёт модели.
public static ulong? GetMsStartCalc(MsId ms, ulong modelKey) { var getMsOp = new GetMs(); // Задаем параметры выполнения операции getMsOp.tMs = ms; getMsOp.tArg = new GetMsArg() { // Задаем общий шаблон извлечения данных
pattern = new MsMdPattern() { item = new MsItemPattern() { // Задаем ключ рассчитываемой модели key = modelKey, problem = new MsProblemPattern() { // Задаем шаблон расчёта данных calculation = new MsProblemCalculationPattern() { calculationState = new MsCalculationStatePattern(){}
} } } }, execParams = new MsMdExecParams() { // Задаём параметры расчёта calculationSettings = new MsProblemCalculationSettings() { includedScenarioKeys = new long[] { }, factIncluded = true,
// Задаём значения параметров метамодели paramValues = new MsModelParamValues() { its = new MsModelParamValue[] { new MsModelParamValue() { id = "ITEM1", value = "5" }
} },// Задаём периоды расчёта period = new MsModelPeriod() { identificationStartDate = DateTime.Parse("01.01.1990"), identificationEndDate = DateTime.Parse("01.01.2005"), forecastStartDate = DateTime.Parse("01.01.2006"), forecastEndDate = DateTime.Parse("01.01.2015") }, // Задаём периоды загрузки данных dataLoadingPeriod = new MsDataLoadingPeriod()
{ useDefault = false, startDate = DateTime.Parse("01.01.1990"), endDate = DateTime.Parse("01.01.2006") },// Задаём календарную динамику и прочие параметры defaultLevel = DimCalendarLvl.Year, breakOnError = true, clearSeriesOnWarning = true, filterWarnings = true },
execCalculate = true, execSaveProblem = true } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Запускаем расчёт GetMsResult getMsResult = somClient.GetMs(getMsOp); ulong? prCalcKey = getMsResult.meta.item.problemMd.problemCalculationKey; return prCalcKey; }
См. также: