2008-01-07

Zope3 продукты ng.app.rss ng.app.smartbanner

ng.app.rubricator

Андрей Орлов  2008-01-07 01:29

Рубрикатор - это самый странный наш продукт. Степень завершенности которого не известна, опыта положительного использования пока нет. Хотя ... вроде работает.

Репозиторий программы: http://code.dreambot.ru/svn/ng.app.rubricator/trunk/.

Краткое описание пакета ng.app.rubricator

Краткое описание пакета ng.app.rubricator

Пакет разработан для обеспечения возможности автоматической раскладки объектов по дереву рубрик. В рубрики попадают не сами статьи (которые остаются всецело на своих местах), а специальные объекты-ссылки. Рубрикация настраивается при помощи правил, которые размещаются в аннотации в каждой рубрики. Настройка рубрикатора состоит из трех этапов:

  1. Назаначение интерфейсов объектам так, что бы они могли выполнять роль рубрики и документа соответственно, создание адаптера к единому интерфейсу свойств рубрикации;
  2. Создание компонент рубрикатора, которые включают в себя хранилище документов, рубрикатор и алгоритм рубрикации;
  3. Настройка правил рубрикации.

На сегодняшний день рубрикатор является работоспособным прототипом будущего решения.

Интерфейсы объектов

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)
Интерпретатор правил рубрикации;

Для других реализаций алгоритма параметры настройки могут быть другими.

Настройка правил рубрикации

Во всех рубриках должны быть прописаны правила рубрикации. В настоящий момент, правила записываются в виде префиксных выражений, а алгоритм рубрикации обрабатывает их иерархически.

недописано

Вложено:

ng.app.rubricator README.txt 2008-01-07 01:29 Andrey Orlov 

...

Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml