ng.app.rubricator
2008-01-07 01:29Рубрикатор - это самый странный наш продукт. Степень завершенности которого не известна, опыта положительного использования пока нет. Хотя ... вроде работает.
Репозиторий программы: http://code.dreambot.ru/svn/ng.app.rubricator/trunk/.
Краткое описание пакета ng.app.rubricator
Пакет разработан для обеспечения возможности автоматической раскладки объектов по дереву рубрик. В рубрики попадают не сами статьи (которые остаются всецело на своих местах), а специальные объекты-ссылки. Рубрикация настраивается при помощи правил, которые размещаются в аннотации в каждой рубрики. Настройка рубрикатора состоит из трех этапов:
- Назаначение интерфейсов объектам так, что бы они могли выполнять роль рубрики и документа соответственно, создание адаптера к единому интерфейсу свойств рубрикации;
- Создание компонент рубрикатора, которые включают в себя хранилище документов, рубрикатор и алгоритм рубрикации;
- Настройка правил рубрикации.
На сегодняшний день рубрикатор является работоспособным прототипом будущего решения.
Интерфейсы объектов
- ng.app.rubricator.interfaces.IRubricateAble
- Объекты, которым назначен этот интерфейс будут рубрицироваться;
- ng.app.rubricator.filterannotation.interfaces.IFilterAnnotable
- Объекты, которым назначен этот интерфейс могут быть рубриками (в них будет размещена аннотация с оценочными выражениями).
Компоненты рубрикатора
Помимо компонент, в качестве которых можно настроить что угодно, назначив соответствующие интерфейсы и сгенерировав несколько адаптеров, существуют специально запрограммированные компоненты, которые концентрируют в себе основную логику работы пакета.
Rulesetevaluator
Интерпретатор оценочных выражений, должен быть создан один такой и зарегистрировать под интерфейсом:
ng.app.rubricator.rulesetevaluator.interfaces.IRulesetevaluator
И с произвольным именем, которое будет затем использовано в настройках других компонент.
NewsRefBackReference
Индекс обратных ссылок, обслуживает события удаления объектов и удаляет ссылки на них. Вызывается алгоритмом рубрикации, что бы удалить старые ссылки при повторной индексации изменившегося объекта. Должен быть создан один такой индекс и зарегистрирован под интерфейсом:
ng.app.rubricator.newsref.newsrefbackreference.interfaces.INewsRefBackReference
И с произвольным именем, которое будет затем использовано в настройках других компонент.
RubricAlgorithm
Алгоритм рубрицирования, осуществляет выбор рубрики для размещения объекта по его содержимому. В настоящее время существует реализация единственного алгоритма, но возможна разработка других. Каким бы ни был алгоритм рубрицирования, он должен быть зарегистрирован под интерфейсом ng.app.rubricator.rubricalgorithm.interfaces.IRubricAlgorithm.
Параметры настройки алгоритма ng.app.rubricator.rubricalgorithm.rubricalgorithm.RubricAlgorithm :
- backreference (unicode)
- Индекс обратных ссылок;
- interface (InterfaceClass)
- Интерфейс, используемый для доступа к параметрам рубрикации объекта;
- rootRubricPath (unicode)
- Путь к корневой рубрике;
- rulesetEvaluator (unicode)
- Интерпретатор правил рубрикации;
Для других реализаций алгоритма параметры настройки могут быть другими.
Настройка правил рубрикации
Во всех рубриках должны быть прописаны правила рубрикации. В настоящий момент, правила записываются в виде префиксных выражений, а алгоритм рубрикации обрабатывает их иерархически.
Вложено:
...



