Template: IEtlTemplate;
Template: Prognoz.Platform.Interop.KeFore.IEtlTemplate;
Свойство Template определяет шаблон для алгоритма пользователя.
Шаблон используется для задания внешнего вида алгоритма пользователя на рабочем поле.
Для выполнения примера в репозитории необходимо наличие:
модуля с идентификатором «USERSCLASSFORETL», содержащего класс «User» для реализации необходимых интерфейсов;
задачи ETL с идентификатором «ETL_TASK».
Добавьте ссылки на системные сборки: Andy, Drawing, Etl, Fore, Metabase.
Sub UserProc;
Var
MB: IMetabase;
EtlTask: IEtlTask;
Etl, ETLEdit: IEtlPlainDataFixedUser;
Params: ISharedParams;
Templates: IEtlTemplates;
Template: IEtlTemplate;
Inputs: IEtlPlainInputs;
Outputs: IEtlPlainOutputs;
Rect: IWxRectangle;
WxETL: IWxEtlObject;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Получим задачу ETL
EtlTask := MB.ItemById("ETL_TASK").Edit As IEtlTask;
// Создадим пользовательский преобразователь в задаче
Etl := EtlTask.Create(EtlObjectType.PlainDataFixedUser) As IEtlPlainDataFixedUser;
Etl.Id := "PlainDataFixedUser";
Etl.Name := "Алгоритм пользователя";
// Будем использовать шаблон
Params := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Edit As ISharedParams;
Templates := Params.EtlTemplates(ETLTemplateType.Provider);
Template := Templates.Add;
Template.Module := mb.ItemById("USERSCLASSFORETL");
Template.Class_ := "User";
Template.Id := "TemplID";
Template.Name := "TemplName";
Etl.Template := Template;
(Params As IMetabaseObject).Save;
// Добавим вход, выход, шаблон преобразователя
ETLEdit := ETl.Edit;
Inputs := ETLEdit.PlainInputs;
Inputs.Add;
Outputs := ETLEdit.PlainOutputs;
Outputs.Add;
// Сохраним изменения преобразователя
ETLEdit.Save;
// Создадим визуальное представление преобразователя
Rect := EtlTask.Workspace.CreateRectangle;
WxETL := New WxEtlObject.Create;
WxETL.EtlObject := Etl;
Rect.Style.TextPosition := WxTextPosition.Bottom;
Rect.Style.PictureMarginTop := -10;
Rect.PinPosition := New GxPointF.Create(50, 50);
Rect.Extension := WxETL As IWxShapeExtension;
// Сохраним изменения
(EtlTask As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера в указанной задаче ETL будет создан преобразователь данных на основе шаблона.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Andy;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Etl;
Imports Prognoz.Platform.Interop.KeFore;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
EtlTask: IEtlTask;
Etl, ETLEdit: IEtlPlainDataFixedUser;
Paramss: ISharedParams;
Templates: IEtlTemplates;
Template: IEtlTemplate;
Inputs: IEtlPlainInputs;
Outputs: IEtlPlainOutputs;
Rect: IWxRectangle;
WxETL: WxEtlObjectClass = New WxEtlObjectClass();
PointF: GxPointFClass = New GxPointFClass();
Begin
// Получим репозиторий
MB := Params.Metabase;
// Получим задачу ETL
EtlTask := MB.ItemById["ETL_Tsk"].Edit() As IEtlTask;
// Создадим пользовательский преобразователь в задаче
Etl := EtlTask.Create(EtlObjectType.eotPlainDataFixedUser) As IEtlPlainDataFixedUser;
Etl.Id := "PlainDataFixedUser";
Etl.Name := "Алгоритм пользователя";
// Будем использовать шаблон
Paramss := MB.SpecialObject[MetabaseSpecialObject.msoSharedParams].Edit() As ISharedParams;
Templates := Paramss.EtlTemplates[ETLTemplateType.etlttProvider];
Template := Templates.Add();
Template.Module := mb.ItemById["USERSCLASSFORETL"];
Template.@Class := "User";
Template.Id := "TemplID";
Template.Name := "TemplName";
Etl.Template := Template;
(Paramss As IMetabaseObject).Save();
// Добавим вход, выход, шаблон преобразователя
ETLEdit.Edit();
Inputs := ETLEdit.PlainInputs;
Inputs.Add();
Outputs := ETLEdit.PlainOutputs;
Outputs.Add();
// Сохраним изменения преобразователя
ETLEdit.Save();
// Создадим визуальное представление преобразователя
Rect := EtlTask.Workspace.CreateRectangle();
WxETL.EtlObject := Etl;
Rect.Style.TextPosition := WxTextPosition.wtpBottom;
Rect.Style.PictureMarginTop := -10;
PointF.Create(50, 50);
Rect.PinPosition := PointF;
Rect.Extension := WxETL As IWxShapeExtension;
// Сохраним изменения
(EtlTask As IMetabaseObject).Save();
End Sub;
См. также: