Ниже приведен пример использования операции 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; }
См. также:
SOAP