Template: IEtlTemplate;
Template: Prognoz.Platform.Interop.KeFore.IEtlTemplate;
Свойство Template определяет шаблон для источника пользователя.
Шаблон используется для задания внешнего вида алгоритма пользователя на рабочем поле.
Для выполнения примера в репозитории необходимо наличие:
модуля с идентификатором «USERSCLASSFORETL», содержащего класс «User» для реализации необходимых интерфейсов;
задачи ETL с идентификатором «ETL_TASK».
Добавьте ссылки на системные сборки: Andy, Drawing, Etl, Fore, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
EtlTask: IEtlTask;
FixedUserProvider: IEtlPlainDataFixedUserProvider;
FixedUserConsumer: IEtlPlainDataFixedUserConsumer;
Paramss: ISharedParams;
Templates: IEtlTemplates;
Template: IEtlTemplate;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Получим задачу ETL
MObj := MB.ItemById("ETL_TASK").Edit;
EtlTask := MObj As IEtlTask;
//Создадим объект "Источник пользователя"
FixedUserProvider := EtlTask.Create(EtlObjectType.PlainDataFixedUserProvider) As IEtlPlainDataFixedUserProvider;
// Будем использовать шаблон
Paramss := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Edit As ISharedParams;
Templates := Paramss.EtlTemplates(ETLTemplateType.Provider);
Template := Templates.Add;
Template.Module := mb.ItemById("USERSCLASSFORETL");
Template.Class_ := "User";
Template.Id := "TemplateProv";
Template.Name := "TemplNameP";
FixedUserProvider.Template := Template;
(Paramss As IMetabaseObject).Save;
// Установим режим для источника
FixedUserProvider.ExMode := True;
// Зададим наименование источника
FixedUserProvider.Name := "Источник пользователя";
// Визуальное представление источника в задаче
CreateWXP(FixedUserProvider, EtlTask);
//Создадим объект "Приемник пользователя"
FixedUserConsumer := EtlTask.Create(EtlObjectType.PlainDataFixedUserConsumer) As IEtlPlainDataFixedUserConsumer;
// Будем использовать шаблон
Paramss := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Edit As ISharedParams;
Templates := Paramss.EtlTemplates(ETLTemplateType.Consumer);
Template := Templates.Add;
Template.Module := mb.ItemById("USERSCLASSFORETL");
Template.Class_ := "User";
Template.Id := "TemplateCons";
Template.Name := "TemplNameC";
FixedUserProvider.Template := Template;
(Paramss As IMetabaseObject).Save;
// Установим монопольный режим для приемника
FixedUserConsumer.ExMode := True;
// Зададим наименование приемника
FixedUserConsumer.Name := "Приемник пользователя";
// Визуальное представление приемника в задаче
CreateWXC(FixedUserConsumer, EtlTask);
// Сохраним изменения
Mobj.Save;
End Sub UserProc;
// Создание визуального объекта источника данных
Sub CreateWXP(CopyObj: IEtlPlainDataProvider; Etltask: IEtltask);
Var
WxDataTrans: IWxRectangle;
WxETLDataTrans: IWxEtlObject;
Begin
WxDataTrans := EtlTask.Workspace.CreateRectangle;
WxDataTrans.Id := CopyObj.Id;
WxETLDataTrans := New WxEtlObject.Create;
WxETLDataTrans.EtlObject := CopyObj;
WxDataTrans.Style.TextPosition := WxTextPosition.Bottom;
WxDataTrans.Style.PictureMarginTop := -10;
WxDataTrans.PinPosition := New GxPointF.Create(20, 20);
WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXP;
// Создание визуального объекта приемника данных
Sub CreateWXC(CopyObj: IEtlPlainDataConsumer; Etltask: IEtltask);
Var
WxDataTrans: IWxRectangle;
WxETLDataTrans: IWxEtlObject;
Begin
WxDataTrans := EtlTask.Workspace.CreateRectangle;
WxDataTrans.Id := CopyObj.Id;
WxETLDataTrans := New WxEtlObject.Create;
WxETLDataTrans.EtlObject := CopyObj;
WxDataTrans.Style.TextPosition := WxTextPosition.Bottom;
WxDataTrans.Style.PictureMarginTop := -10;
WxDataTrans.PinPosition := New GxPointF.Create(40, 40);
WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXC;
После выполнения примера будет созданы источник и приёмник данных на основе шаблона.
Необходимые требования и результат выполнения примера 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;
MObj: IMetabaseObject;
EtlTask: IEtlTask;
FixedUserProvider: IEtlPlainDataFixedUserProvider;
FixedUserConsumer: IEtlPlainDataFixedUserConsumer;
Paramss: ISharedParams;
Templates: IEtlTemplates;
Template: IEtlTemplate;
Begin
// Получим репозиторий
MB := Params.Metabase;
// Получим задачу ETL
MObj := MB.ItemById["ETL_TASK"].Edit();
EtlTask := MObj As IEtlTask;
//Создадим объект "Источник пользователя"
FixedUserProvider := EtlTask.Create(EtlObjectType.eotPlainDataFixedUserProvider) As IEtlPlainDataFixedUserProvider;
// Будем использовать шаблон
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 := "TemplateProv";
Template.Name := "TemplNameP";
FixedUserProvider.Template := Template;
(Paramss As IMetabaseObject).Save();
// Установим режим для источника
FixedUserProvider.ExMode := True;
// Зададим наименование источника
FixedUserProvider.Name := "Источник пользователя";
// Визуальное представление источника в задаче
CreateWXP(FixedUserProvider, EtlTask);
//Создадим объект "Приемник пользователя"
FixedUserConsumer := EtlTask.Create(EtlObjectType.eotPlainDataFixedUserConsumer) As IEtlPlainDataFixedUserConsumer;
// Будем использовать шаблон
Paramss := MB.SpecialObject[MetabaseSpecialObject.msoSharedParams].Edit() As ISharedParams;
Templates := Paramss.EtlTemplates[ETLTemplateType.etlttConsumer];
Template := Templates.Add();
Template.Module := MB.ItemById["USERSCLASSFORETL"];
Template.@Class := "User";
Template.Id := "TemplateCons";
Template.Name := "TemplNameC";
FixedUserProvider.Template := Template;
(Paramss As IMetabaseObject).Save();
// Установим монопольный режим для приемника
FixedUserConsumer.ExMode := True;
// Зададим наименование приемника
FixedUserConsumer.Name := "Приемник пользователя";
// Визуальное представление приемника в задаче
CreateWXC(FixedUserConsumer, EtlTask);
// Сохраним изменения
Mobj.Save();
End Sub;
// Создание визуального объекта источника данных
Public Shared Sub CreateWXP(CopyObj: IEtlPlainDataProvider; Etltask: IEtltask);
Var
WxDataTrans: IWxRectangle;
WxETLDataTrans: IWxEtlObject = New WxEtlObjectClass();
PointF: GxPointF = New GxPointFClass();
Begin
WxDataTrans := EtlTask.Workspace.CreateRectangle();
WxDataTrans.Id := CopyObj.Id;
//WxETLDataTrans := New WxEtlObject.Create;
WxETLDataTrans.EtlObject := CopyObj;
WxDataTrans.Style.TextPosition := WxTextPosition.wtpBottom;
WxDataTrans.Style.PictureMarginTop := -10;
WxDataTrans.PinPosition := PointF;
PointF.Create(20, 20);
WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXP;
// Создание визуального объекта приемника данных
Public Shared Sub CreateWXC(CopyObj: IEtlPlainDataConsumer; Etltask: IEtltask);
Var
WxDataTrans: IWxRectangle;
WxETLDataTrans: IWxEtlObject = New WxEtlObjectClass();
PointF: GxPointF = New GxPointFClass();
Begin
WxDataTrans := EtlTask.Workspace.CreateRectangle();
WxDataTrans.Id := CopyObj.Id;
//WxETLDataTrans := New WxEtlObject.Create;
WxETLDataTrans.EtlObject := CopyObj;
WxDataTrans.Style.TextPosition := WxTextPosition.wtpBottom;
WxDataTrans.Style.PictureMarginTop := -10;
WxDataTrans.PinPosition := PointF;
PointF.Create(20, 20);
WxDataTrans.Extension := WxETLDataTrans As IWxShapeExtension;
End Sub CreateWXC;
См. также: