EditMetaModel: IMsMetaModel;
EditMetaModel: Prognoz.Platform.Interop.Ms.IMsMetaModel;
Свойство EditMetaModel возвращает внутреннюю метамодель.
Для создания внутренней метамодели используйте метод IMsProblem.CreateMetaModel.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащим задачу моделирования с идентификатором «PROBLEM_META» и модель с идентификатором «MODEL_LINEARREGR». Задача моделирования должна содержать внутреннюю метамодель.
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
mb: IMetabase;
MsKey: Integer;
CreateInfo: IMetabaseObjectCreateInfo;
Problem: IMsProblem;
Model: IMsModel;
MetaModel: IMsMetaModel;
CalcChain: IMsCalculationChainEntries;
Begin
// Получаем репозиторий
Mb := MetabaseClass.Active;
// Получаем ключ контейнера моделирования
MsKey := mb.GetObjectKeyById("MS");
// Получаем задачу моделирования
Problem := Mb.ItemByIdNamespace("PROBLEM_META", MsKey).Edit As IMsProblem;
// Получаем внутреннюю метамодель
MetaModel := Problem.EditMetaModel;
// Получаем цепочку расчета метамодели
CalcChain := MetaModel.CalculationChain;
// Получаем модель
Model := mb.ItemByIdNamespace("MODEL_LINEARREGR", MsKey).Edit As IMsModel;
If CalcChain.FindById("MODEL_LINEARREGR") = Null Then
// Добавляем полученную модель в цепочку расчета
CalcChain.AddModel(Model);
End If;
// Сохраняем изменения
(Problem As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера в цепочку расчета задачи будет добавлена указанная модель.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
MsKey: uinteger;
CreateInfo: IMetabaseObjectCreateInfo;
Problem: IMsProblem;
Model: IMsModel;
MetaModel: IMsMetaModel;
CalcChain: IMsCalculationChainEntries;
Begin
// Получаем репозиторий
Mb := Params.Metabase;
// Получаем ключ контейнера моделирования
MsKey := mb.GetObjectKeyById("MS");
// Получаем задачу моделирования
Problem := Mb.ItemByIdNamespace["PROBLEM_META", MsKey].Edit() As IMsProblem;
// Получаем внутреннюю метамодель
MetaModel := Problem.EditMetaModel;
// Получаем цепочку расчета метамодели
CalcChain := MetaModel.CalculationChain;
// Получаем модель
Model := mb.ItemByIdNamespace["MODEL_LINEARREGR", MsKey].Edit() As IMsModel;
If CalcChain.FindById("MODEL_LINEARREGR") = Null Then
// Добавляем полученную модель в цепочку расчета
CalcChain.AddModel(Model);
End If;
// Сохраняем изменения
(Problem As IMetabaseObject).Save();
End Sub;
См. также: