Доступ к репозиторию и объектам

В большинстве случаев работа прикладного приложения будет построена на взаимодействии с репозиторием и его объектами. Интерфейс 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;

Получив описание объекта, можно перейти к настройке его свойств, работать с данными, настраивать права доступа и выполнять другие специфические действия.

См. также:

Разработка прикладного приложения