IEtlTaskExecutionEvents.OnEndBlock

Синтаксис Fore

OnEndBlock(Task: IEtlTask;

           Object: IEtlObject;

           Duration: Integer;

           TotalRecIn: IDictionary;

           TotalRecOut: IDictionary;

           ErrorRec: IDictionary);

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

OnEndBlock(Task: Prognoz.Platform.Interop.Etl.IEtlTask;

           Object: Prognoz.Platform.Interop.Etl.IEtlObject;

           Duration: integer;

           InRec: System.Collections.IDictionary;

           OutRec: System.Collections.IDictionary;

           ErrorRec: System.Collections.IDictionary);

Параметры

Task. Задача ETL;

Object. Объект задачи ETL;

Duration. Время выполнения блока в миллисекундах;

TotalRecIn. Таблица-источник записей;

TotalRecOut. Таблица-приемник записей;

ErrorRec. Таблица пропущенных в результате ошибки записей.

Описание

Метод OnEndBlock реализует событие при завершении блока задачи ETL.

Комментарии

Блок задачи ETL - это совокупность двух объектов и связи между ними в задаче ETL.

Для параметров TotalRecIn, TotalRecOut, ErrorRec должны быть созданы:

Для реализации события, возникающего при запуске блока задачи ETL, используйте IEtlTaskExecutionEvents.OnStartBlock.

Для определения объекта Fore/Fore.NET, который будет использоваться в качестве обработчика событий, и класса, описанного в этом объекте, используйте свойства: IEtlTask.EventsAssembly и IEtlTask.EventsClass.

Пример Fore

В примере описывается класс, который может быть использован в качестве обработчика событий задачи ETL.

В классе имеется возможность получить глобальную переменную ETLTaskRunId, которая используется для получения идентификатора запуска задачи ETL. Ее использование представлено в примере «Использование глобальной переменной ETLTaskRunId».

Добавьте ссылки на системные сборки: Collections, Etl, Ui.

Class EventsClass: EtlTaskExecutionEvents
    
    // Событие, возникающее при запуске задачи ETL
    Public Sub OnStartTask(Task: IEtlTask);
    Begin
        WinApplication.InformationBox("Событие OnStartTask" + #13 + #10 +
            "Количество объектов задачи ETL = " + Task.Count.ToString);
    End Sub OnStartTask;
    
    // Событие, возникающее при завершении задачи ETL
    Public Sub OnEndTask(Task: IEtlTask; Duration, TotalRec, ErrorRec: Integer);
    Begin
        WinApplication.InformationBox("Событие OnEndTask" + #13 + #10 +
            "Количество объектов задачи ETL = " + Task.Count.ToString + #13 + #10 +
            "Прогресс выполнения задачи = " + Duration.ToString + #13 + #10 +
            "Количество записей на входе = " + TotalRec.ToString + #13 + #10 +
            "Количество пропущенных записей на выходе = " + ErrorRec.ToString);
    End Sub OnEndTask;
    
    // Событие, возникающее при запуске блока задачи ETL
    Public Sub OnStartBlock(Task: IEtlTask; Object: IEtlObject);
    Begin
        WinApplication.InformationBox("Событие OnStartBlock" + #13 + #10 +
            "Наименование объекта задачи ETL - " + Task.Item(0).Name + #13 + #10 +
            "Идентификатор объекта задачи ETL - " + Object.Id);
    End Sub OnStartBlock;
    
    // Событие, возникающее при завершении блока задачи ETL
    Public Sub OnEndBlock(Task: IEtlTask; Object: IEtlObject; Duration: Integer; TotalRecIn, TotalRecOut, ErrorRec: IDictionary);
    Begin
        WinApplication.InformationBox("Событие OnEndBlock" + #13 + #10 +
            "Наименование объекта задачи ETL - " + Task.Item(0).Name + #13 + #10 +
            "Идентификатор объекта задачи ETL - " + Object.Id + #13 + #10 +
            "Прогресс выполнения задачи = " + Duration.ToString + #13 + #10 +
            "Количество записей на входе = " + TotalRecIn.Count.ToString + #13 + #10 +
            "Количество записей на входе = " + TotalRecOut.Count.ToString + #13 + #10 +
            "Количество пропущенных записей на выходе = " + ErrorRec.Count.ToString);
    End Sub OnEndBlock;
    
    // Событие, возникающее в процессе выполнения задачи ETL
    Public Sub OnProgress(Task: IEtlTask; Progress: Integer);
    Begin
        WinApplication.InformationBox("Событие OnProgress" + #13 + #10 +
            "Наименование объекта задачи ETL - " + Task.Item(0).Name + #13 + #10 +
            "Прогресс выполнения задачи = " + Progress.ToString);
    End Sub OnProgress;

    // Событие, возникающее при возникновении ошибки блока задачи ETL
    Public Sub OnError(Task: IEtlTask; Object: IEtlObject; Excep: IException);
    Begin
        WinApplication.InformationBox("Событие OnError" + #13 + #10 +
            "Наименование объекта задачи ETL - " + Task.Item(0).Name + #13 + #10 +
            "Идентификатор объекта задачи ETL - " + Object.Id + #13 + #10 +
            "Текст ошибки - " + Excep.Message);
    End Sub OnError;
    
End Class EventsClass;

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Etl;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Ui;
Imports System.Windows.Forms;
Imports System.Collections;

Public Class EventsClass: EtlTaskExecutionEvents
    
    // Событие, возникающее при запуске задачи ETL
    Public Sub OnStartTask(Task: IEtlTask);
    Begin
        MessageBox.Show("Событие OnStartTask" + "u000d\u000a" +
            "Количество объектов задачи ETL = " + Task.Count.ToString());
    End Sub OnStartTask;
    
    // Событие, возникающее при завершении задачи ETL
    Public Sub OnEndTask(Task: IEtlTask; Duration, TotalRec, ErrorRec: Integer);
    Begin
        MessageBox.Show("Событие OnEndTask" + "u000d\u000a" +
            "Количество объектов задачи ETL = " + Task.Count.ToString() + "u000d\u000a" +
            "Прогресс выполнения задачи = " + Duration.ToString() + "u000d\u000a" +
            "Количество записей на входе = " + TotalRec.ToString() + "u000d\u000a" +
            "Количество пропущенных записей на выходе = " + ErrorRec.ToString());
    End Sub OnEndTask;
    
    // Событие, возникающее при запуске блока задачи ETL
    Public Sub OnStartBlock(Task: IEtlTask; Object: IEtlObject);
    Begin
        MessageBox.Show("Событие OnStartBlock" + "u000d\u000a" +
            "Наименование объекта задачи ETL - " + Task.Item[0].Name + "u000d\u000a" +
            "Идентификатор объекта задачи ETL - " + Object.Id);
    End Sub OnStartBlock;
    
    // Событие, возникающее при завершении блока задачи ETL
    Public Sub OnEndBlock(Task: IEtlTask; Object: IEtlObject; Duration: integer; InRec, OutRec, ErrorRec: IDictionary);
    Begin
        MessageBox.Show("Событие OnEndBlock" + "u000d\u000a" +
            "Наименование объекта задачи ETL - " + Task.Item[0].Name + "u000d\u000a" +
            "Идентификатор объекта задачи ETL - " + Object.Id + "u000d\u000a" +
            "Прогресс выполнения задачи = " + Duration.ToString() + "u000d\u000a" +
            "Количество записей на входе = " + TotalRecIn.Count.ToString() + "u000d\u000a" +
            "Количество записей на входе = " + TotalRecOut.Count.ToString() + "u000d\u000a" +
            "Количество пропущенных записей на выходе = " + ErrorRec.Count.ToString());
    End Sub OnEndBlock;
    
    // Событие, возникающее в процессе выполнения задачи ETL
    Public Sub OnProgress(Task: IEtlTask; Progress: Integer);
    Begin
        MessageBox.Show("Событие OnProgress" + "u000d\u000a" +
            "Наименование объекта задачи ETL - " + Task.Item[0].Name + "u000d\u000a" +
            "Прогресс выполнения задачи = " + Progress.ToString());
    End Sub OnProgress;

    // Событие, возникающее при возникновении ошибки блока задачи ETL
    Public Sub OnError(Task: IEtlTask; Object: IEtlObject; Excep: Exception);
    Begin
        MessageBox.Show("Событие OnError" + "u000d\u000a" +
            "Наименование объекта задачи ETL - " + Task.Item[0].Name + "u000d\u000a" +
            "Идентификатор объекта задачи ETL - " + Object.Id + "u000d\u000a" +
            "Текст ошибки - " + Excep.Message);
    End Sub OnError;
    
End Class EventsClass;

См. также:

IEtlTaskExecutionEvents