IEtlPlainDataUserProvider.ExMode

Синтаксис Fore

ExMode: Boolean;

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

ExMode: boolean;

Описание

Свойство ExMode определяет, будет ли источник пользователя помимо Fore поддерживать Fore.NET.

Комментарии

Возможные значения:

Тип интерфейса IDtUserProvider, позволяющий указывать только Fore класс для реализации интерфейса пользовательского источника, не может управлять размерами извлекаемых данных, что приводит к большому потреблению памяти. Целесообразнее использовать новый тип интерфейса IDtUserProviderEx, позволяющего указывать Fore/Fore.NET класс для реализации системного интерфейса пользовательского источника. При реализации Fore.NET класса существует возможность пользоваться частичным извлечением данных.

Для определения, будет ли приемник пользователя помимо Fore поддерживать Fore.NET, используйте IEtlPlainDataUserConsumer.ExMode.

Пример Fore

Для выполнения примера в репозитории необходимо наличие задачи ETL с идентификатором «ETL».

Добавьте ссылки на системные сборки Andy, Drawing, Etl, Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    EtlTask: IEtlTask;
    DataUserProvider: IEtlPlainDataUserProvider;
    DataUserConsumer: IEtlPlainDataUserConsumer;
Begin
    // Получим репозиторий
    MB := MetabaseClass.Active;
    // Получим задачу ETL
    MObj := MB.ItemById("ETL").Edit;
    EtlTask := MObj As IEtlTask;
    //Создадим объект "Источник пользователя"
    DataUserProvider := EtlTask.Create(EtlObjectType.PlainDataUserProvider) As IEtlPlainDataUserProvider;
    // Установим новый тип провайдера для источника
    DataUserProvider.ExMode := True;
    // Зададим наименование источника
    DataUserProvider.Name := "Источник пользователя";
    // Визуальное представление источника в задаче
    CreateWXP(DataUserProvider, EtlTask);
    //Создадим объект "Приемник пользователя"
    DataUserConsumer := EtlTask.Create(EtlObjectType.PlainDataUserConsumer) As IEtlPlainDataUserConsumer;
    // Установим новый тип провайдера для приемника
    DataUserConsumer.ExMode := True;
    // Зададим наименование приемника
    DataUserConsumer.Name := "Приемник пользователя";
    // Визуальное представление приемника в задаче
    CreateWXC(DataUserConsumer, EtlTask);
    // Сохраним изменения
    Mobj.Save;
End Sub UserProc;

// Создание визуального объекта источника данных
Sub CreateWXP(CopyObj: IEtlPlainDataProvider; Etltask: IEtltask);
Var
    WxDataTrans: IWxRectangle;
    WxETLDataTrans: IWxEtlObject;
Begin
    WxDataTrans := EtlTask.Workspace.CreateRectangle;
    WxDataTrans.Id := CopyObj.Id;
    WxETLDataTrans := New WxEtlObject.Create;
    WxETLDataTrans.EtlObject := CopyObj;
    WxDataTrans.Style.TextPosition := WxTextPosition.Bottom;
    WxDataTrans.Style.PictureMarginTop := -10;
    WxDataTrans.PinPosition := New GxPointF.Create(2020);
    WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXP;

// Создание визуального объекта приемника данных
Sub CreateWXC(CopyObj: IEtlPlainDataConsumer; Etltask: IEtltask);
Var
    WxDataTrans: IWxRectangle;
    WxETLDataTrans: IWxEtlObject;
Begin
    WxDataTrans := EtlTask.Workspace.CreateRectangle;
    WxDataTrans.Id := CopyObj.Id;
    WxETLDataTrans := New WxEtlObject.Create;
    WxETLDataTrans.EtlObject := CopyObj;
    WxDataTrans.Style.TextPosition := WxTextPosition.Bottom;
    WxDataTrans.Style.PictureMarginTop := -10;
    WxDataTrans.PinPosition := New GxPointF.Create(4040);
    WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXC;

После выполнения примера в указанной задаче ETL будут созданы два объекта - источник пользователя и приемник пользователя, которые используют новую версию провайдера IDtUserProviderEx.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Andy;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Etl;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    EtlTask: IEtlTask;
    DataUserProvider: IEtlPlainDataUserProvider;
    DataUserConsumer: IEtlPlainDataUserConsumer;
Begin
    // Получим репозиторий
    MB := Params.Metabase;
    // Получим задачу ETL
    MObj := MB.ItemById["ETL"].Edit();
    EtlTask := MObj As IEtlTask;
    //Создадим объект "Источник пользователя"
    DataUserProvider := EtlTask.Create(EtlObjectType.eotPlainDataUserProvider) As IEtlPlainDataUserProvider;
    // Установим монопольный режим для источника
    DataUserProvider.ExMode := True;
    // Зададим наименование источника
    DataUserProvider.Name := "Источник пользователя";
    // Визуальное представление источника в задаче
    CreateWXP(DataUserProvider, EtlTask);
    //Создадим объект "Приемник пользователя"
    DataUserConsumer := EtlTask.Create(EtlObjectType.eotPlainDataUserConsumer) As IEtlPlainDataUserConsumer;
    // Установим монопольный режим для приемника
    DataUserConsumer.ExMode := True;
    // Зададим наименование приемника
    DataUserConsumer.Name := "Приемник пользователя";
    // Визуальное представление приемника в задаче
    CreateWXC(DataUserConsumer, EtlTask);
    // Сохраним изменения
    Mobj.Save();
End Sub;

// Создание визуального объекта источника данных
Public Shared Sub CreateWXP(CopyObj: IEtlPlainDataProvider; Etltask: IEtltask);
Var
    WxDataTrans: IWxRectangle;
    WxETLDataTrans: WxEtlObject = New WxEtlObjectClass();
    OutPoint: GxPointF = New GxPointFClass();
Begin
    WxDataTrans := EtlTask.Workspace.CreateRectangle();
    WxDataTrans.Id := CopyObj.Id;
    WxETLDataTrans.EtlObject := CopyObj;
    WxDataTrans.Style.TextPosition := WxTextPosition.wtpBottom;
    WxDataTrans.Style.PictureMarginTop := -10;
    OutPoint := WxDataTrans.PinPosition;
    OutPoint.Create(2020);
    WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXP;

// Создание визуального объекта приемника данных
Public Shared Sub CreateWXC(CopyObj: IEtlPlainDataConsumer; Etltask: IEtltask);
Var
    WxDataTrans: IWxRectangle;
    WxETLDataTrans: WxEtlObject = New WxEtlObjectClass();
    OutPoint: GxPointF = New GxPointFClass();
Begin
    WxDataTrans := EtlTask.Workspace.CreateRectangle();
    WxDataTrans.Id := CopyObj.Id;
    WxETLDataTrans.EtlObject := CopyObj;
    WxDataTrans.Style.TextPosition := WxTextPosition.wtpBottom;
    WxDataTrans.Style.PictureMarginTop := -10;
    OutPoint := WxDataTrans.PinPosition;
    OutPoint.Create(4040);
    WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXC;

См. также:

IEtlPlainDataUserConsumer