Ниже приведен пример использования операции SetMs для добавления сценария в расчет модели. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции и добавляемый сценарий. В результате выполнения операция возвращает дерево сценариев модели.
{
"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"
}
}
}
}
}
}
{
"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" } } } } }
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;
}
См. также: