IEtlPlainDataTransformer.ErrorOutput

Синтаксис Fore

ErrorOutput(Index: Integer): IEtlPlainOutput;

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

ErrorOutput[Index: Integer]: Prognoz.Platform.Interop.Etl.IEtlPlainOutput;

Параметры

Index. Индекс выхода с ошибочными записями.

Описание

Свойство ErrorOutput возвращает параметры указанного выхода с ошибочными записями.

Комментарии

В текущей реализации для каждого преобразователя доступен только один выход с ошибочными записями, поэтому в качестве параметра Index необходимо передавать значение «0».

Пример Fore

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

Sub UserProc;
Var
    MB: IMetabase;
    ETLTask: IEtlTask;
    Transform: IEtlPlainDataTransformer;
    ErrorConsumer: IEtlPlainDataConsumer;
    Link: IEtlPlainLink;
    Shapes: IWxShapes;
Begin
    MB := MetabaseClass.Active;
    ETLTask := MB.ItemById("ETL_Task").Edit As IEtlTask;
     //Преобразователь
    Transform := ETLTask.FindById("PLAINDATATRANSFORMER"As IEtlPlainDataTransformer;
     //Приемник ошибочных записей

    ErrorConsumer := ETLTask.FindById("ERRORCONSUMER"As IEtlPlainDataConsumer;
     //Связь и настройка выхода с ошибочными значениями
    Transform.ErrorOverlimitPolicy := EtlErrorOverlimitPolicy.StopOutput;
    Transform.ErrorStopLimit := 100;
     //Связь полей выхода преобразователя и входа приемника ошибочных записей
    FillFields(ErrorConsumer.PlainInput.Fields, Transform.ErrorOutput(0).Fields);
     //Создание связи
    Link := CreateLink(ETLTask, Transform.ErrorOutput(0), ErrorConsumer.PlainInput);
     //Создание визуальной связи
    Shapes := ETLTask.Workspace.Shapes;

    CreateWXLink(ETLTask, Shapes.FindById(Transform.Id), Shapes.FindById(ErrorConsumer.Id), Link);
    (ETLTask As IMetabaseObject).Save;
End Sub UserProc;
//Заполнение списков полей входов/выходов
Sub FillFields(Fields, FieldsSource: IEtlPlainFields);
Begin
    Fields := Fields.Edit;
    Fields.Fill(FieldsSource);
    Fields.Save;
End Sub FillFields;
//Создание связи между объектами
Function CreateLink(ETLTask: IEtlTask; Output: IEtlPlainOutput; Input: IEtlPlainInput): IEtlPlainLink;
Var
    Link: IEtlPlainLink;
Begin
    Link := ETLTask.CreatePlainLink;

    Link.SourceObjectOutput := Output;
    Link.DestinationObjectInput := Input;
    Link.FillDefault;
    Return Link;
End Function CreateLink;
//Создание визуальных связей
Sub CreateWXLink(ETLTask: IEtlTask; Shape1: IWxShape; Shape2: IWxShape; Link: IEtlPlainLink);
Var
    WLink: IWxLink;
    WxETLLink: IWxEtlObject;
Begin

     //Создаем визуальные объекты связи
    WLink := ETLTask.Workspace.AutoLinkShapes(Shape1, Shape2);
    WLink.Style.LinePenBeginWxCap := WxLineCap.Flat;
    WLink.Style.LinePenEndWxCap := WxLineCap.Arrow30DegreeFilled;
    WxETLLink := New WxEtlObject.Create;
    WxETLLink.EtlObject := Link;
    WLink.Extension := WxETLLink As IWxShapeExtension;
End Sub CreateWXLink;

При выполнении примера будет осуществлена настройка выхода с ошибочными записями для преобразователя «PLAINDATATRANSFORMER»:

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    ETLTask: IEtlTask;
    Transform: IEtlPlainDataTransformer;
    ErrorConsumer: IEtlPlainDataConsumer;
    Link: IEtlPlainLink;
    Shapes: IWxShapes;
Begin

    MB := Params.Metabase;
    ETLTask := MB.ItemById["ETL_Task"].Edit() As IEtlTask;
     //Преобразователь
    Transform := ETLTask.FindById("PLAINDATATRANSFORMER"As IEtlPlainDataTransformer;
     //Приемник ошибочных записей
    ErrorConsumer := ETLTask.FindById("ERRORCONSUMER"As IEtlPlainDataConsumer;
     //Связь и настройка выхода с ошибочными значениями
    Transform.ErrorOverlimitPolicy := EtlErrorOverlimitPolicy.eopStopOutput;
    Transform.ErrorStopLimit := 100;
     //Связь полей выхода преобразователя и входа приемника ошибочных записей
    FillFields(ErrorConsumer.PlainInput.Fields, Transform.ErrorOutput[0].Fields);
     //Создание связи
    Link := CreateLink(ETLTask, Transform.ErrorOutput[0], ErrorConsumer.PlainInput);
     //Создание визуальной связи
    Shapes := ETLTask.Workspace.Shapes;

    CreateWXLink(ETLTask, Shapes.FindById(Transform.Id), Shapes.FindById(ErrorConsumer.Id), Link);
    (ETLTask As IMetabaseObject).Save();
End Sub;
//Создание визуальных связей
Public Shared Sub CreateWXLink(ETLTask: IEtlTask; Shape1: IWxShape; Shape2: IWxShape; Link: IEtlPlainLink);
Var
    WLink: IWxLink;
    WxETLLink: IWxEtlObject = New WxEtlObject();
Begin
     //Создаем визуальные объекты связи
    WLink := ETLTask.Workspace.AutoLinkShapes(Shape1, Shape2);

    WLink.Style.LinePenBeginWxCap := WxLineCap.wlcFlat;
    WLink.Style.LinePenEndWxCap := WxLineCap.wlcArrow30DegreeFilled;
    WxETLLink.EtlObject := Link;
    WLink.Extension := WxETLLink As IWxShapeExtension;
End Sub;
//Заполнение списков полей входов/выходов
Public Shared Sub FillFields(Fields, FieldsSource: IEtlPlainFields);
Begin
    Fields := Fields.Edit();
    Fields.Fill(FieldsSource);
    Fields.Save();

End Sub;
//Создание связи между объектами
Public Shared Function CreateLink(ETLTask: IEtlTask; Output: IEtlPlainOutput; Input: IEtlPlainInput): IEtlPlainLink;
Var
    Link: IEtlPlainLink;
Begin
    Link := ETLTask.CreatePlainLink();
    Link.SourceObjectOutput := Output;
    Link.DestinationObjectInput := Input;
    Link.FillDefault();
    Return Link;
End Function;

См. также:

IEtlPlainDataTransformer