Dimension: IDimensionModel;
Dimension: Prognoz.Platform.Interop.BISearch.IDimensionModel;
Свойство Dimension определяет измерение источника данных, к атрибуту которого осуществляется привязка.
Для выполнения примера предполагается наличие в репозитории контейнера запланированных задач с идентификатором «TASK_CONTAINER». Первая задача в контейнере предназначена для обновления поискового индекса. В настройках задачи определены параметры индексации для стандартного куба. В настройках индексации и поиска репозитория создано пользовательское поле «TAG».
Sub UserProc;
Var
MB: IMetabase;
Container: IScheduledTasksContainer;
Task: ISearchEngineImportScheduledTask;
EngineSchema: ISolrSearchEngineSchema;
ImportContext: ISourceDataImportContext;
Cube: ICubeModel;
CubeDimensions: ICubeModelDimensions;
Dimension: IDimensionModel;
SourceInfo: ISourceDataImportInfo;
DestinationInfo: ISourceDataImportDestinationInfo;
FieldBindings: ISolrImportFieldBindings;
FieldBinding: ISolrImportAttributeFieldBinding;
Field: ISolrField;
Begin
MB := MetabaseClass.Active;
//Получение задачи
Container := MB.ItemById("TASK_CONTAINER").Bind As IScheduledTasksContainer;
Task := Container.Tasks.Item(0).Edit As ISearchEngineImportScheduledTask;
//Контекст для индексации объектов
EngineSchema := Task.Engine.SearchEngineSchema As ISolrSearchEngineSchema;
ImportContext := Task.ImportContext(SearchEngineTargetType.SourceData) As ISourceDataImportContext;
//Получение параметров индексации куба
SourceInfo := ImportContext.SourceInfos.Item(0);
DestinationInfo := SourceInfo.DestinationInfos.Item(0);
Cube := MB.Item(SourceInfo.Key).Bind As ICubeModel;
CubeDimensions := Cube.Destinations.DefaultDestination.Dimensions;
Dimension := CubeDimensions.FindById("COUNTRY");
//Параметры заполнения пользовательских полей
FieldBindings := (DestinationInfo As ISolrSourceDataImportDestinationInfo).FieldBindings;
//Поле, для которого будут настроены параметры
Field := EngineSchema.Fields(SearchEngineTargetType.SourceData).FindById("TAG");
//Заполнение из значений атрибута измерения
FieldBinding := FieldBindings.AddBinding(SolrFieldBindingType.ByAttribute, Field) As ISolrImportAttributeFieldBinding;
FieldBinding.Dimension := Dimension;
FieldBinding.Attribute := Dimension.Attributes.FindById("NAME");
//Установка настроенного контекста в задачу
Task.ImportContext(SearchEngineTargetType.SourceData) := ImportContext;
//Сохранение задачи
(Task As IMetabaseObject).Save;
End Sub UserProc;
При выполнении примера в задаче будут настроены параметры заполнения значений пользовательского поля «TAG»: в качестве значений поля будут подставляться значения атрибута «NAME» измерения «COUNTRY».
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Container: IScheduledTasksContainer;
Task: ISearchEngineImportScheduledTask;
EngineSchema: ISolrSearchEngineSchema;
ImportContext: ISourceDataImportContext;
Cube: ICubeModel;
CubeDimensions: ICubeModelDimensions;
Dimension: IDimensionModel;
SourceInfo: ISourceDataImportInfo;
DestinationInfo: ISourceDataImportDestinationInfo;
FieldBindings: ISolrImportFieldBindings;
FieldBinding: ISolrImportAttributeFieldBinding;
Field: ISolrField;
Begin
MB := Params.Metabase;
//Получение задачи
Container := MB.ItemById["TASK_CONTAINER"].Bind() As IScheduledTasksContainer;
Task := Container.Tasks.Item[0].Edit() As ISearchEngineImportScheduledTask;
//Контекст для индексации объектов
EngineSchema := Task.Engine.SearchEngineSchema As ISolrSearchEngineSchema;
ImportContext := Task.ImportContext[SearchEngineTargetType.settSourceData] As ISourceDataImportContext;
//Получение параметров индексации куба
SourceInfo := ImportContext.SourceInfos.Item[0];
DestinationInfo := SourceInfo.DestinationInfos.Item[0];
Cube := MB.Item[SourceInfo.Key].Bind() As ICubeModel;
CubeDimensions := Cube.Destinations.DefaultDestination.Dimensions;
Dimension := CubeDimensions.FindById("COUNTRY");
//Параметры заполнения пользовательских полей
FieldBindings := (DestinationInfo As ISolrSourceDataImportDestinationInfo).FieldBindings;
//Поле, для которого будут настроены параметры
Field := EngineSchema.Fields[SearchEngineTargetType.settSourceData].FindById("TAG");
//Заполнение из значений атрибута измерения
FieldBinding := FieldBindings.AddBinding(SolrFieldBindingType.sfbtByAttribute, Field) As ISolrImportAttributeFieldBinding;
FieldBinding.Dimension := Dimension;
FieldBinding.Attribute := Dimension.Attributes.FindById("NAME");
//Установка настроенного контекста в задачу
Task.ImportContext[SearchEngineTargetType.settSourceData] := ImportContext;
//Сохранение задачи
(Task As IMetabaseObject).Save();
End Sub;
См. также:
ISolrImportAttributeFieldBinding | Системные и пользовательские поля