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