Ниже приведен пример использования операции SetMs для добавления сценария в расчет модели. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции и добавляемый сценарий. В результате выполнения операция возвращает дерево сценариев модели.
{ "Envelope" : { "Body" :
{ "SetMs" : { "tMs" : { "id" : "S115!M!S!C1" }, "tArg" : { "pattern" :
{ "obInst" : "true", "item" : { "key" : "2803", "problem" : { "scenarioKey" : "1628", "scenarios" : "Add" }
} }, "meta" : { "item" : { "k" : "2803", "type" : "Problem", "problemMd" : {
"scenarios" : { "its" : { "Item" : { "k" : "1628", "id" : "OBJ1628", "n" : "Базовый", "vis" : "true",
"isProtected" : "false" } } } } } }, "metaGet" : { "obInst" : "true",
"scenarios" : "Get" }, "execParams" : { "execSaveProblem" : "true" } } } } } }
{ "Envelope" : { "Body" : {
"SetMsResult" : { "id" : { "id" : "S115!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" } } } } } } } } }
Функция SetMsAddScenModel добавляет указанный сценарий в расчёт модели. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ изменяемой модели;
scen. Сценарий, добавляемый в расчёт модели.
В результате выполнения функция возвращает дерево сценариев модели.
public static MsScenarioTree SetMsAddScenModel(MsId ms, ulong modelKey, MsScenarioNode scen) { var setMsOp = new SetMs(); setMsOp.tMs = ms; setMsOp.tArg = new SetMsArg() { // Задаем шаблон изменения данных pattern = new MsMdPattern() { item = new MsItemPattern() { // Задаём ключ модели key = modelKey, problem = new MsProblemPattern() { // Задаём ключ сценария
scenarioKey = scen.k, scenarios = ListOperation.Add } } }, // Задаем данные, которые необходимо изменить meta = new MsMd() { item = new MsItem() {
k = modelKey, type = MsItemType.Problem, problemMd = new MsProblem() { scenarios = new MsScenarioList() { its = new MsScenario[] { new MsScenario() {
id = scen.id, k = scen.k, n = scen.n, vis = scen.vis, internalKey = null, isProtected = false } } } }
} }, // Задаём шаблон извлечения измененных данных metaGet = new MsMdPattern() {scenarios = ListOperation.Get}, execParams = new MsMdExecParams() {execSaveProblem = true} }; // Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.SetMs(setMsOp); return result.meta.scenarios; }
См. также: