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

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

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

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

[name:недописано]
