IMsMetaModelVisualController.Problem

Синтаксис Fore

Problem: IMsProblem;

Синтаксис Fore.NET

Problem: Prognoz.Platform.Interop.Ms.IMsProblem;

Описание

Свойство Problem определяет задачу моделирования, которая рассчитывает метамодель.

Комментарии

Значение свойства должно быть обязательно задано для работы со сценариями моделирования. См. IMsMetaModelVisualController.UseScenarios, IMsMetaModelVisualController.CopyScenarioData.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.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;

См. также:

IMsMetaModelVisualController