Destination: ICubeModelDestination;
Destination: Prognoz.Platform.Interop.Cubes.ICubeModelDestination;
Свойство Destination возвращает вариант отображения, для которого задаются настройки индексации.
Свойство возвращает тот вариант отображения, который был передан в метод ISourceDataImportDestinationInfos.Add.
Для выполнения примера предполагается наличие в репозитории контейнера запланированных задач с идентификатором «TASK_CONTAINER». В контейнере создана одна задача, осуществляющая обновление поискового индекса. Задача настроена на обновление поискового индекса для нескольких источников. Подключите системные сборки: BiSearch, Cubes, Fore, Metabase.
Sub UserProc;
Var
MB: IMetabase;
Container: IScheduledTasksContainer;
Task: ISearchEngineImportScheduledTask;
EngineSchema: ISolrSearchEngineSchema;
ImportContext: ISourceDataImportContext;
SourceInfos: ISourceDataImportInfos;
SourceInfo: ISourceDataImportInfo;
DestinationInfos: ISourceDataImportDestinationInfos;
CubeDest: ICubeModelDestination;
i, j: Integer;
Begin
MB := MetabaseClass.Active;
//Получение задачи
Container := MB.ItemById("TASK_CONTAINER").Bind As IScheduledTasksContainer;
Task := Container.Tasks.Item(0).Bind As ISearchEngineImportScheduledTask;
//Контекст для индексации объектов
EngineSchema := Task.Engine.SearchEngineSchema As ISolrSearchEngineSchema;
ImportContext := Task.ImportContext(SearchEngineTargetType.SourceData) As ISourceDataImportContext;
//Получение индексируемых объектов
SourceInfos := ImportContext.SourceInfos;
//Просмотр информации
For i := 0 To SourceInfos.Count - 1 Do
SourceInfo := SourceInfos.Item(i);
Debug.WriteLine("Источник: " + MB.Item(SourceInfo.Key).Name + "(Ключ: " + SourceInfo.Key.ToString + ')');
Debug.WriteLine("Индексируемые варианты отображения:");
Debug.Indent;
DestinationInfos := SourceInfo.DestinationInfos;
For j := 0 To DestinationInfos.Count - 1 Do
CubeDest := DestinationInfos.Item(j).Destination;
Debug.WriteLine(CubeDest.Name + '(' + CubeDest.Id + ')');
End For;
Debug.Unindent;
End For;
End Sub UserProc;
При выполнении примера в консоль среды разработки будет выведена информация по источникам и их вариантам отображения, которые будут использоваться при обновлении поискового индекса.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.Cubes;
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;
SourceInfos: ISourceDataImportInfos;
SourceInfo: ISourceDataImportInfo;
DestinationInfos: ISourceDataImportDestinationInfos;
CubeDest: ICubeModelDestination;
i, j: Integer;
Begin
MB := Params.Metabase;
//Получение задачи
Container := MB.ItemById["TASK_CONTAINER"].Bind() As IScheduledTasksContainer;
Task := Container.Tasks.Item[0].Bind() As ISearchEngineImportScheduledTask;
//Контекст для индексации объектов
EngineSchema := Task.Engine.SearchEngineSchema As ISolrSearchEngineSchema;
ImportContext := Task.ImportContext[SearchEngineTargetType.settSourceData] As ISourceDataImportContext;
//Получение индексируемых объектов
SourceInfos := ImportContext.SourceInfos;
//Просмотр информации
For i := 0 To SourceInfos.Count - 1 Do
SourceInfo := SourceInfos.Item[i];
System.Diagnostics.Debug.WriteLine("Источник: " + MB.Item[SourceInfo.Key].Name + "(Ключ: " + SourceInfo.Key.ToString() + ')');
System.Diagnostics.Debug.WriteLine("Индексируемые варианты отображения:");
System.Diagnostics.Debug.Indent();
DestinationInfos := SourceInfo.DestinationInfos;
For j := 0 To DestinationInfos.Count - 1 Do
CubeDest := DestinationInfos.Item[j].Destination;
System.Diagnostics.Debug.WriteLine(CubeDest.Name + '(' + CubeDest.Id + ')');
End For;
System.Diagnostics.Debug.Unindent();
End For;
End Sub;
См. также: