В большинстве случаев работа прикладного приложения будет построена на взаимодействии с репозиторием и его объектами. Интерфейс IMetabase описывает соединение с репозиторием и имеет набор различных свойств/методов для получения доступа к объектам, менеджеру безопасности и другим блокам платформы.
Для получения доступа к репозиторию в языке Fore используйте статическое свойство MetabaseClass.Active:
Public Sub WorkInRepository;
Var
Mb: IMetabase;
Begin
Mb := MetabaseClass.Active;
//...
// Дальнейшая работа в текущем репозитории
//...
End Sub WorkInRepository;
Если требуется создать новое соединение с репозиторием во время выполнения кода, то используются описания репозиториев из коллекции IMetabaseManager.Definitions менеджера репозиториев. Менеджер репозитория, описываемый интерфейсом IMetabaseManager, можно получить с помощью свойства IMetabaseManagerFactory.Active:
Function ConnectToRepository: IMetabase;
Var
MbManager: IMetabaseManager;
MbDef: IMetabaseDefinition;
Package: ISecurityPackage;
Creds: IPasswordCredentials;
Mb: IMetabase;
Begin
// Менеджер репозитория
MbManager := MetabaseManagerFactory.Active;
// Описание репозитория, к которому осуществляется подключение
MbDef := MbManager.Definitions.FindById("Repository");
If MbDef <> Null Then
Package := MbManager.Packs.FindById(MbDef.SecurityPackage).Package;
//
Учётные данные для подключения
Creds := Package.CreateCredentials(AuthenticationMode.Password) As IPasswordCredentials;
Creds.UserName := "User";
Creds.Password := "Password";
//
Подключение
Mb := MbDef.Open(Creds);
If Mb <> Null Then
Return Mb;
Else
Return Null;
End If;
Else
Return Null;
End If;
End Function ConnectToRepository;
Каждый объект репозитория имеет описание, в котором содержится базовая информация об объекте: наименование, идентификатор, класс объекта, списки дочерних и зависимых объектов и другая информация. Для работы с описанием объекта предназначен интерфейс IMetabaseObjectDescriptor. Получить описание одного или нескольких объектов можно с помощью различных свойств и методов интерфейса IMetabase, IMetabaseObjectDescriptor и других:
Public Sub WorkInRepository;
Var
Mb: IMetabase;
MDesc: IMetabaseObjectDescriptor;
MDescs: IMetabaseObjectDescriptors;
FindInfo: IMetabaseObjectFindInfo;
Begin
Mb := MetabaseClass.Active;
// Получение описания объекта по идентификатору
MDesc := Mb.ItemById("Folder");
// База данных репозитория по умолчанию
MDesc := Mb.SpecialObject(MetabaseSpecialObject.DefaultDatabase);
// Описание дочерних объектов для указанного объекта
MDescs := Mb.ItemById("Folder").Children;
// Поиск объектов по заданным параметрам
FindInfo := Mb.CreateFindInfo;
FindInfo.Text := "Module";
FindInfo.Attribute := FindAttribute.NameOrIdent;
FindInfo.WholeWordsOnly := False;
MDescs := MB.Find(FindInfo);
End Sub WorkInRepository;
Получив описание объекта, можно перейти к настройке его свойств, работать с данными, настраивать права доступа и выполнять другие специфические действия.
См. также: