Ниже приведен пример использования операции GetMs для запуска расчёта модели. В запросе передаются: экземпляр открытого контейнера моделирования, шаблон и параметры расчёта модели. В ответе приходит информация о расчёте.
{ "Envelope" : { "Body" : { "GetMs" : {
"tMs" : { "id" : "S43!M!S!C1" }, "tArg" : { "pattern" : { "obInst" : "true", "item" :
{ "key" : "2803", "problem" : { "calculation" : { "calculationState" : "" } } }
}, "execParams" : { "problemCalculationKey" : "0", "execRun" : "true" } } } } } }
{ "Envelope" : { "Body" : { "GetMsResult" : { "id" :
{ "id" : "S43!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" : "72", "pointPassed" : "36", "saveData" : "1", "copyFact" : "0", "treatNullsAsZeros" : "0", "isRunning" : "0", "calculationState" : { "scenarioKey" : "4294967295", "currentPoint" : "1990-01-01",
"message" : "Идентификация модели "MyInputVavable[t] = A1*MyOutputVavable[t]"" }, "isSuspend" : "1" } } } } } } } }
Функция GetMsCalcRun запускает расчёт указанной модели. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ рассчитываемой модели;
prCalcKey. Ключ объекта, выполняющего расчёт.
В результате выполнения функция возвращает рассчитываемую модель.
public static MsItem GetMsCalcRun(MsId ms, ulong modelKey, ulong? prCalcKey) { 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() { execRun = true, problemCalculationKey = prCalcKey } }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Выполняем расчёт GetMsResult getMsResult = somClient.GetMs(getMsOp); return getMsResult.meta.item; }
См. также: