Problem: IMsProblem;
Problem: Prognoz.Platform.Interop.Ms.IMsProblem;
Свойство Problem определяет задачу моделирования, которая рассчитывает метамодель.
Значение свойства должно быть обязательно задано для работы со сценариями моделирования. См. IMsMetaModelVisualController.UseScenarios, IMsMetaModelVisualController.CopyScenarioData.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MODEL_SPACE», содержащего задачу моделирования с идентификатором «WEB_PROBLEM». Задача должна содержать внутреннюю метамодель.
Добавьте ссылки на системные сборки «Metabase», «Ms».
Sub UseScenarios;
Var
mb: IMetabase;
msKey: Integer;
Problem: IMsProblem;
Meta: IMsMetaModel;
MetaVisual: IMsMetaModelVisualController;
Begin
mb := MetabaseClass.Active;
// Получаем ключ контейнера моделирования
msKey := mb.GetObjectKeyById("MODEL_SPACE");
// Получаем задачу моделирования
Problem := mb.ItemByIdNamespace("WEB_PROBLEM", msKey).Edit As IMsProblem;
// Получаем метамодель
Meta := Problem.MetaModel;
MetaVisual := Meta.VisualController;
// Задаем задачу моделирования
MetaVisual.Problem := Problem;
// Включаем сценарное моделирование
If Not MetaVisual.UseScenarios Then
MetaVisual.UseScenarios := True;
End If;
// Сохраняем изменения
(Problem As IMetabaseObject).Save;
End Sub UseScenarios;
После выполнения примера для расчёта метамодели будет использоваться сценарное моделирование.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
msKey: uinteger;
Problem: IMsProblem;
Meta: IMsMetaModel;
MetaVisual: IMsMetaModelVisualController;
Begin
mb := Params.Metabase;
// Получаем ключ контейнера моделирования
msKey := mb.GetObjectKeyById("MODEL_SPACE");
// Получаем задачу моделирования
Problem := mb.ItemByIdNamespace["WEB_PROBLEM", msKey].Edit() As IMsProblem;
// Получаем метамодель
Meta := Problem.MetaModel;
MetaVisual := Meta.VisualController;
// Задаем задачу моделирования
MetaVisual.Problem := Problem;
// Включаем сценарное моделирование
If Not MetaVisual.UseScenarios Then
MetaVisual.UseScenarios := True;
End If;
// Сохраняем изменения
(Problem As IMetabaseObject).Save();
End Sub;
См. также: