Ниже приведен пример использования операции GetMs для возобновления расчёта модели. В запросе передаются: экземпляр открытого контейнера моделирования, шаблон и параметры расчёта модели. В ответе приходит информация о расчёте.
{
"Envelope" :
{
"Body" :
{
"GetMs" :
{
"tMs" :
{
"id" : "S42!M!S!C1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true",
"item" :
{
"key" : "2803",
"problem" :
{
"calculation" :
{
"calculationState" : ""
}
}
}
},
"execParams" :
{
"problemCalculationKey" : "0",
"execResume" : "true"
}
}
}
}
}
}
{
"Envelope" :
{
"Body" :
{
"GetMsResult" :
{
"id" :
{
"id" : "S42!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" : "Расчет задачи окончен. Время расчета составило 00:00:04" }, "isSuspend" : "0" } } } } } } } }
Функция GetMsCalcResume возобновляет расчёт указанной модели. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ рассчитываемой модели;
prCalcKey. Ключ объекта, выполняющего расчёт.
В результате выполнения функция возвращает рассчитываемую модель.
public static MsItem GetMsCalcResume(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()
{
execResume = true,
problemCalculationKey = prCalcKey
}
};
// Создаем прокси-объект для выполнения операции
var somClient = new SomPortTypeClient();
// Выполняем расчёт
GetMsResult getMsResult = somClient.GetMs(getMsOp);
return getMsResult.meta.item;
}
См. также:
SOAP