Перевод из XML в формат Prognoz Platform 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перевод из XML в формат Prognoz Platform



Public Class WriteFile: Object

_mb: IMetabase;

_prob: IMetabaseObjectDescriptor;

 

Public Constructor Create(problemDescriptor: IMetabaseObjectDescriptor);

Begin

_mb:= problemDescriptor.Metabase;

_prob:= problemDescriptor;

End Constructor Create;

 

Public Sub CreateDoc;

Var

CrInfo: IMetabaseObjectCreateInfo;

MObj: IMetabaseObject;

Doc: IDocument;

Begin

CrInfo:= _mb.CreateCreateInfo;

CrInfo.ClassID:= MetabaseObjectClass.KE_CLASS_DOCUMENT;

CrInfo.Id:= GetNewId("New_" + _prob.Id);

CrInfo.Name:= "Новый документ_" + _prob.Id;

CrInfo.Parent:= _mb.Root;

Doc:= _mb.CreateObject(CrInfo).Edit As IDocument;

Doc.LoadFromFile("D:\Teterin AV\XML\OBJ2198.xml");

(Doc As IMetabaseObject).Save;

End Sub CreateDoc;

 

Function GetNewId(IdObj: String): String;

Var

findResult: IMetabaseObjectDescriptor;

Begin

findResult:= _mb.FetchItemById(IdObj, _mb.Root.Key);

If findResult <> Null Then

Return GetNewId(IdObj + "_New");

End If;

Return IdObj;

End Function GetNewId;

 

End Class WriteFile;

 

Копирование задачи моделирование

Public Const

Key_Box = 2161;

ID_Box = "MODELSPACE_TRANSFORMS";

 

Public Class ModelCopier: Object

_mb: IMetabase;

_ms: IMetabaseObjectDescriptor;

_problem: IMetabaseObjectDescriptor;

 

Public Constructor Create(msDescriptor, problemDescriptor: IMetabaseObjectDescriptor);

Begin

_ms:= msDescriptor;

_mb:= problemDescriptor.Metabase;

_problem:= problemDescriptor;

End Constructor Create;

 

Public Sub Execute;

Var

Prob: IMsProblem;

MObj: IMetabaseObject;

Meta: IMsMetaModel;

Mode: IMsModel;

metamodel, model: IMetabaseObjectDescriptor;

i: Integer;

id: IStringList;

list: IMetabaseObjectDescriptors;

s, s1, s2, m, m2, m3: String;

Begin

list:= _problem.Dependencies(True);

s:= _mb.GenerateId(_problem.Id) + "_COPY";

m:= _problem.Name + "_COPY";

CopyObject(_problem, s, m);

metamodel:= list.Item(0);

s1:= _mb.GenerateId(metamodel.id) + "_COPY";

m2:= metamodel.Name + "_Копия";

list:= metamodel.Dependencies(True);

CopyObject(metamodel, s1, m2);

id:= New StringList.Create;

For i:= 0 To list.Count - 1 Do

model:= list.Item(i);

s2:= _mb.GenerateId(model.id) + "_COPY";

m3:= model.Name + "_Копия";

id.Add(s2);

CopyObject(model, s2, m3);

End For;

 

MObj:= _mb.ItemByIdNamespace(s1, _ms.Key).Edit;

Meta:= MObj As IMsMetaModel;

Meta.CalculationChain.clear;

MObj.Save;

For i:= 0 To id.Count - 1 Do

MObj:= _mb.ItemByIdNamespace(s1, _ms.Key).Edit;

Meta:= MObj As IMsMetaModel;

Mode:= _mb.ItemByIdNamespace(id.Item(i), _ms.Key).Edit As IMsModel;

Meta.CalculationChain.AddModel(Mode);

MObj.Save;

End For;

MObj:= _mb.ItemByIdNamespace(s, _ms.Key).Edit;

prob:= MObj As IMsProblem;

prob.MetaModel:= Meta;

MObj.Save;

End Sub Execute;

 

Function GetNewId(IdObj: String): String;

Var

findResult: IMetabaseObjectDescriptor;

Begin

findResult:= _mb.FetchItemById(IdObj, Key_Box);

If findResult <> Null Then

Return GetNewId(IdObj + "_COPY");

End If;

Return IdObj;

End Function GetNewId;

Function GetNewName(NameObj: String): String;

Var

findResult: IMetabaseObjectDescriptor;

Begin

findResult:= _mb.FetchItemById(NameObj, Key_Box);

If findResult <> Null Then

Return GetNewName(NameObj + "_COPY");

End If;

Return NameObj;

End Function GetNewName;

 

Sub CopyObject(Des: IMetabaseObjectDescriptor; IdObj: String; NameObj: String);

Var

CInfo: IMetabaseObjectCopyInfo;

Begin

CInfo:= _mb.CreateCopyInfo;

CInfo.Id:= GetNewId(des.Id + "_COPY");

CInfo.Name:= GetNewName(des.Name + "_Копия");

CInfo.WithData:= True;

CInfo.NoSave:= False;

CInfo.Assign:= True;

CInfo.Destination:= _ms;

CInfo.Source:= Des;

_mb.CopyObject(CInfo);

End Sub CopyObject;

End Class ModelCopier;

ПРИЛОЖЕНИЕ 2

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Назначение программы

Программный модуль предназначен для сохранения заранее оговоренных данных задачи моделирования в XML-файл, для использования в компании «Прогноз» сотрудниками отдела моделирования и прогнозирования.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 159; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.212.26.248 (0.129 с.)