UserData: IXmlDomElement;
UserData: Prognoz.Platform.Interop.MsXml2.IXmlDomElement;
Свойство UserData определяет дополнительные настройки в формате XML для пользовательского источника данных.
Дополнительные настройки определяются в интерфейсе IDtRecordsetUserData класса, реализующего данный интерфейс и интерфейс IDtRecordsetProvider.
Особенности работы с XML-файлами представлены на странице «Пример работы с XML-файлами».
Для выполнения примера в репозитории необходимо наличие:
задачи ETL с идентификатором «ETL»;
модуля с идентификатором «MYPROVIDER». Модуль содержит класс, реализующий интерфейсы IDtRecordsetProvider, IDtRecordsetUserData. Пример класса представлен в описании IDtRecordsetUserData.UserData.
Добавьте ссылки на системные сборки: Andy, Dal, Drawing, Dt, Etl, Metabase, Xml.
Sub UserProc;
Var
MB: IMetabase;
EtlTask: IEtlTask;
EtlProvider: IEtlPlainDataProvider;
UserProvider: IDtUserProvider;
WxProvider: IWxRectangle;
WxETLProvider: IWxETLObject;
Fields: IDtFieldDefinitions;
Field: IDtFieldDefinition;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Получим задачу ETL
EtlTask := MB.ItemById("ETL").Edit As IEtlTask;
//Создадим объект «Источник пользователя» в задаче ETL
EtlProvider := EtlTask.Create(EtlObjectType.PlainDataUserProvider) As IEtlPlainDataProvider;
EtlProvider := EtlProvider.Edit;
EtlProvider.Id := "User_Provider";
EtlProvider.Name := "Источник пользователя";
EtlProvider.Description := "Источник пользователя";
//Настроим источник данных
UserProvider := EtlProvider.Provider As IDtUserProvider;
UserProvider.ForeModule := MB.ItemById("MYPROVIDER").Bind;
UserProvider.ForeClass := "MyProvider";
Debug.WriteLine("Пользовательские данные в формате XML" + UserProvider.UserData.xml);
Fields := UserProvider.Fields;
Field := Fields.Add;
Field.DataType := DbDataType.String;
Field.Name := "Наименование";
Field := Fields.Add;
Field.DataType := DbDataType.Float;
Field.Name := "Значение";
EtlProvider.FillDefault;
//Сохраним настройки источника данных
EtlProvider.Save;
// Создадим визуальное представление объекта в задаче ETL
WxProvider := EtlTask.Workspace.CreateRectangle;
WxETLProvider := New WxETLObject.Create;
WxETLProvider.ETLObject := EtlProvider;
WxProvider.Style.TextPosition := WxTextPosition.Bottom;
WxProvider.Style.PictureMarginTop := -10;
WxProvider.PinPosition := New GxPointF.Create(50, 50);
WxProvider.Extension := WxETLProvider As IWxShapeExtension;
//Сохраненим изменения
(EtlTask As IMEtabaseObject).Save;
End Sub UserProc;
После выполнения примера в указанной задаче ETL будет создан пользовательский источник данных на основе указанного класса. В окно консоли будут выведены пользовательские данные в формате XML.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Andy;
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.Etl;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
EtlTask: IEtlTask;
EtlProvider: IEtlPlainDataProvider;
UserProvider: IDtUserProvider;
WxProvider: IWxRectangle;
WxETLProvider: WxETLObject = New WxETLObjectClass();
PointF: GxPointF = New GxPointFClass();
Fields: IDtFieldDefinitions;
Field: IDtFieldDefinition;
Begin
// Получим репозиторий
MB := Params.Metabase;
// Получим задачу ETL
EtlTask := MB.ItemById["ETL"].Edit() As IEtlTask;
//Создадим объект «Источник пользователя» в задаче ETL
EtlProvider := EtlTask.Create(EtlObjectType.eotPlainDataUserProvider) As IEtlPlainDataProvider;
EtlProvider := EtlProvider.Edit();
EtlProvider.Id := "User_Provider";
EtlProvider.Name := "Источник пользователя";
EtlProvider.Description := "Источник пользователя";
//Настроим источник данных
UserProvider := EtlProvider.Provider As IDtUserProvider;
UserProvider.ForeModule := MB.ItemById["MYPROVIDER"].Bind();
UserProvider.ForeClass := "MyProvider";
System.Diagnostics.Debug.WriteLine("Пользовательские данные в формате XML" + UserProvider.UserData.xml);
Fields := UserProvider.Fields;
Field := Fields.Add();
Field.DataType := DbDataType.ddtString;
Field.Name := "Наименование";
Field := Fields.Add();
Field.DataType := DbDataType.ddtFloat;
Field.Name := "Значение";
EtlProvider.FillDefault();
//Сохраним настройки источника данных
EtlProvider.Save();
// Создадим визуальное представление объекта в задаче ETL
WxProvider := EtlTask.Workspace.CreateRectangle();
WxETLProvider.ETLObject := EtlProvider;
WxProvider.Style.TextPosition := WxTextPosition.wtpBottom;
WxProvider.Style.PictureMarginTop := -10;
PointF.Create(50, 50);
WxProvider.PinPosition := PointF;
WxProvider.Extension := WxETLProvider As IWxShapeExtension;
//Сохраненим изменения
(EtlTask As IMEtabaseObject).Save();
End Sub;
См. также: