OnEndBlock(Task: IEtlTask; Object: IEtlObject; Duration: Integer; TotalRecIn: IDictionary; TotalRecOut: IDictionary; ErrorRec: IDictionary);
Task. Задача ETL;
Object. Объект задачи ETL;
Duration. Время выполнения блока в миллисекундах;
TotalRecIn. Таблица-источник записей;
TotalRecOut. Таблица-приёмник записей;
ErrorRec. Таблица пропущенных в результате ошибки записей.
Метод OnEndBlock реализует событие при завершении блока задачи ETL.
Блок задачи ETL - это совокупность двух объектов и связи между ними в задаче ETL.
Для параметров TotalRecIn, TotalRecOut, ErrorRec должны быть созданы:
таблица, которая должна содержать поля:
Id. Идентификатор записи таблицы-источника;
Value. Значение записи таблицы-источника;
таблица, которая должна содержать поля:
Id. Идентификатор записи таблицы-приёмника;
Value. Значение записи таблицы-приёмника;
таблица, которая должна содержать поля:
Id. Идентификатор записи таблицы-приёмника;
Value. Значение пропущенной записи таблицы-приёмника;
Для реализации события, возникающего при запуске блока задачи ETL, используйте IEtlTaskExecutionEvents.OnStartBlock.
Для определения объекта Fore, который будет использоваться в качестве обработчика событий, и класса, описанного в этом объекте, используйте свойства: IEtlTask.EventsAssembly и IEtlTask.EventsClass.
В примере описывается класс, который может быть использован в качестве обработчика событий задачи ETL.
Добавьте ссылки на системные сборки: 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;
В результате выполнения примера при возникновении события будет выдано информационное сообщение.
См. также: