Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Saitistika 4.0.Руководство разработчика.2005

.pdf
Скачиваний:
11
Добавлен:
23.08.2013
Размер:
3.22 Mб
Скачать

Подсистема поиска

Предназначен для поиска на сайте материалов, новостей, тем форумов, товаров и файлов, соответвтующих параметрам запроса.

Логика работы

Поиск реализован в одной хранимой процедуре (Sait_Search_List), которая производит отбор результатов согласно всем параметрам и фильтрам, в том числе и поиск файлов.

Особенности реализации фронтофиса

1.Логика «OR», «AND», «AND NOT»

2.Поиск в найденом

3.Сортировка результатов: по релевантности, по дате, по разделам, по типу контента

4.Релевантность

5.Построение ссылок в результатах поиска

6.Подсветка найденных слов. Найденные слова автоматически выделяются в тексте материала, если для вывода используется класс CMaterial. Для этого свойству CMaterial.Query нужно присвоить значение строки поиска. Внешний вид подсветки настраивается изменением класса marked в файле CSS.

Релевантность

Релевантность объекта зависит от его типа и набора атрибутов, в которых содержатся слова поисковой фразы. Для того, чтобы материалы с поисковым словом в названии в результатах поиска показывались выше, чем сообщения форума со словом внутри (по статистике это так), для разных типов атрибутов разных типов объектов определены разные веса релевантности.

Таблица весов релевантности

Тип объекта

Тип объекта

Название

Описание

Ключевые слова

Основное

 

 

 

 

 

содержание

Материал

1

100

33

88

55

Новость

2

60

23

-

35

Сообщение форума

3

40

-

-

25

Товар магазина

5

20

7

18

15

Файл

6

80

28

68

45

Таблица весов релевантности является жестко заданной и может быть изменена лишь в хранимой процедуре

Sait_Search_List.

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

Например, если производится поиск по фразе «программное обеспечение» (без кавычек), то у материала со словом «программное» в названии и описании и словом «обеспечение» в описании и ключевых словах будет релевантность 100+33+88=221 (есть 3 атрибута, в которых нашлись слова, повторяемость не учитывается)

Фильтры

Для попадания в результаты поиска сущности должны быть доступны текущему пользователю по правам (если есть), а также удовлетворять критериям:

1.Общие для разных типов сущностей

1.1.Пометка «Не включать в индексирование поиском» не должна быть включена

1.2.У пользователя должны быть права на объект

2.Новость

2.1.Должна находиться в «зеленой» стадии

2.2.Должна быть опубликована хотя бы в одну из лент

3.Материал

3.1.Должен находиться в зеленой стадии

3.2.Должен быть опубликован хотя бы в один раздел

3.3.Должна быть хотя бы одна страница материала с непустым содержанием с пометкой «Активна»

3.4.Не должен быть устаревшим (период Expired)

4.Форум

4.1.Нет дополнительных фильтров

5.Товар

5.1.Должен иметь хотя бы одну разновидность

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

101 из 101

 

 

5.2.Должен быть включен хотя бы в один каталог магазина

6.Файл

6.1.Должен физически существовать

6.2.Должен находиться не в зеленой стадии

6.3.Должен не попадать в период Expired

Поиск файлов

Поиск файлов реализуется с помощью интеграции с Microsoft Indexing Service через Microsoft OLEDB Provider For Microsoft Indexing Service. Для поиска файлов используется связанный сервер (Linked Server), настроенный на каталог Indexing Service. Каталог Indexing Service, в свою очередь, настроен на индексацию требуемых директорий сайта. Кроме того, для физического файла может существовать запись в базе данных (в таблице Files). В этом случае при поиске учитываются права на файлы, статус материала и период Expired. Настройки индексирования и путей к каталогам сайта (локальных, виртуальных, сетевых), необходимые для работы поиска файлов, находятся в таблице FilesPaths и могут быть изменены на странице настроек поиска файлов в бэкофисе.

База данных

Хранимые процедуры

Sait_Search_List Search_GetFilterQuery

Классы

UML-диаграмма

Рисунок 21. UML-диаграмма классов модуля «Поиск»

Список классов

CSearchForm CSearchDecoration

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

102 из 102

 

 

Подсистема конфигурирования

Подсистема конфигурирования предназначена для настройки системы. Позволяет настраивать:

1.Общие установки системы

2.Типы данных

3.Атрибуты объектов

4.Статусы

Логика работы и особенности реализации

Общие установки системы

Общие установки системы это глобальные настройки, влияющие на всю систему в целом. Конфигурационные настройки хранятся в таблице SystemSettings, считываются и используются некоторыми ASP-скриптами в процессе их работы.

Атрибуты объектов

1.Тип атрибута определяет способ хранения, отображения, область значений атрибута и механизмы работы с ним.

2.Система автоматически выполняет проверку корректности значений, присваиваемых атрибутам при работе с объектами. Например, при сохранении значения атрибута, имеющего тип «EMail», выполняется проверка корректности формата.

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

4.Для определения всех атрибутов предназначена таблица Fields. В этой таблице хранятся отображаемые названия атрибутов и признак активности.

Типы данных

1.Список всех типов и подтипов хранится в одной таблице, в таблице ObjectTypes. Различие между типом и подтипом заключается в том, что для подтипа поле TypeID содержит идентификатор типа, к которому относится выбранный подтип. А для типа это поле содержит значение null. Поля этой таблицы содержат названия объектных таблиц

2.При создании нового типа автоматически создаются следующие объектные таблицы:

2.1.Таблица объектов. Название совпадает с системным именем типа данных

2.2.Таблица, содержащая значения конструируемых атрибутов оперативная. Название - <Тип данных>Storage

2.3.Таблица, содержащая значения конструируемых атрибутов архивная. Название - <Тип данных>StorageArchive

2.4.Таблица, содержащая <Тип данных>Rights

3.Для связи типа данных с конструируемыми атрибутами предназначена таблица ObjectTypesFields

4.При отображении атрибутов объекта система выполняет следующие действия:

4.1.Определяется тип объекта, содержащийся в таблице объектов

4.2.По таблице ObjectTypesFields определяется набор атрибутов, которыми обладают объекты данного типа и свойства атрибута в составе объектов данного типа:

4.2.1.Значение по умолчанию

4.2.2.Обязательность

4.2.3.Порядок отображения на странице.

4.3.По таблице Fields определяются названия атрибутов. Названия отображаются.

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

4.5.Из таблиц <Тип данных>Storage или <Тип данных>StorageArchive считываются и отображаются значения

атрибутов

4.6.Отображаются только атрибуты, отмеченные как активные

5.Пользователь имеет возможность изменять тип объектов с одного подтипа на другой внутри этого же типа. При этом выполняются следующие действия с атрибутами объекта.

5.1.Если данный атрибут присутствует и у «старого» и у «нового» подтипа, его значение сохраняется.

5.2.Если данный атрибут присутствует у «старого» подтипа, но отсутствует у «нового», этот атрибут у всех существующих объектов отображаться не будет, но его содержимое останется в БД. Новые объекты, создаваемые после смены подтипа, будут создаваться без этого атрибута.

5.3.Если данный атрибут присутствует у «нового» подтипа, но отсутствует у «старого», этот атрибут добавляется во все существующие объекты и ему присваевается значение по умолчанию, определенное в «новом» подтипе.

6.При удалении подтипа указывается новый подтип, в который переходят все объекты удаляемого подтипа. Логика перехода аналогична описанной выше.

7.Системные атрибуты используются для функционирования самой системы. На страницах бэкофиса они отображаются красным цветом. Эти атрибуты в полном объеме можно использовать для создания новых объектов, но нельзя изменять их свойства.

8.При сохранении свойств подтипа выполняется проверка следующих условий корректности подтипа:

8.1.Подтип должен быть связан хотя бы с одним правильным сценарием

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

103 из 103

 

 

8.2.Подтип должен иметь хотя бы один включенный активный расширенный или конструируемый атрибут

8.3.Если проверяемый подтип связан с типом «Задачи», то он должен поддерживать все статусы всех связанных

сценариев

8.4.Если проверяемый подтип связан с типом «Проекты», то роли участников проекта должны покрывать список ролей для сценариев, связанных с данным подтипом

Статусы

1.Список статусов хранится в таблице Status.

2.В системе существуют системные статусы.

База данных

Общие установки системы

systemsettings – хранение общих установок системы

Поле

Описание

ServerNames

Название сервера

Administrator

Идентификатор администратора сервера

ThemeGenerPath

Путь для генерации тем

ThemeGenerPreviewPath

Путь для предварительной генерации тем

ServerURL

URL домена бэкофиса

SmtpServer

Доменное имя SMTP-сервера

LogBOEvents

Признак, предписывающий журналировать события бэкофиса

LogFOEvents

Признак, предписывающий журналировать события фронтофиса

ArchiveFolderID

Идентификатор раздела, предназначенного для хранения удаленных в архив материалов

SmtpServerLocal

Признак использования локального SMTP-сервера

PublishImmediately

Признак, определяющий отображение чекбокса «Опубликовать на сайте сразу после

 

размещения содержания» на странице добавления материала в бэкофисе

EnableSaveInterval

Признак, предписывающий сохранять версии материалов каждые 10 мин.

FileSearchServer

Имя связанного сервера, используемое для полнотекстового поиска по файлам

FolderMaxMat

Значение по умолчанию параметра "Максимальное количество материалов в списке" для

 

создаваемых разделов

FolderMaxDays

Значение по умолчанию параметра "За какой срок в днях (максимум) показывать материалы

 

в списке" для создаваемых разделов

Типы данных, атрибуты, статусы Диаграмма таблиц

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

104 из 104

 

 

 

 

Рисунок 22. Диаграмма таблиц для типов данных, атрибутов и статусов

 

 

Описания таблиц

 

 

 

 

ObjectTypes – список типов и подтипов данных

 

 

Поле

 

Описание

 

 

ID

 

Уникальный идентификатор

 

 

Name

 

Название типа или подтипа

 

 

 

 

 

 

TableName

 

Название таблицы, хранящей определения объектов данного типа. Это поле имеет

 

 

 

одннаковое значение для записей, относящихся к типу и ко всем его подтипам.

 

Active

 

Признак, определяющий активность типа или подтипа

 

 

System

 

Признак, определяющий что тип или подтип является системным.

 

 

Flags

 

Не используется в текущей реализации

 

 

RightsTableName

 

Название таблицы, хранящей права доступа к объектам данного типа. Это поле имеет

 

 

 

одннаковое значение для записей, относящихся к типу и ко всем его подтипам.

 

TypeID

 

Для подтипа содержит идентификатор типа. Для типа содержит значение null

 

CanLinkWorkflow

 

Признак, определяющий возможность связи объектов данного подтипа со сценариями.

 

Valid

 

Признак, указывающий, что данный подтип является правильным.

 

 

InvalidReasons

 

Битовое поле, содержащее критерии, по которым подтип признан неправильным

 

Fields – определение расширенных и конструируемых атрибутов

 

 

Поле

 

Описание

 

 

ID

 

Уникальный идентификатор

 

 

FieldType

 

Идентификатор типа атрибута

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

105 из 105

Name

Название атрибута, отображаемое на страницах

Description

Описание атрибута

FieldName

Название поля таблицы

System

Признак, определяющий что атрибут является системным.

Active

Признак, определяющий что атрибут является активным

Hide

Признак, определяющий, что данный атрибут не должен отображаться в общем списке

 

атрибутов

...

 

ObjectTypesFields – Связь подтипов данных и атрибутов. Определение подтипов.

Поле

Описание

ID

Уникальный идентификатор

ObjectTypeID

Идентификатор подтипа

FieldID

Идентификатор атрибута

TableName

Название таблицы, хранящей определения объектов

Order

Порядок отображения атрибутов на страницах

DefaultValue

Значение по умолчанию

Required

Признак, определяющий обязательность атрибута

Status – список статусов объектов

Поле

Описание

ID

Уникальный идентификатор

Name

Название статуса

Description

Описание статуса

System

Признак системного статуса

Position

Позиция при отображении

ObjectTypesStatus – Связь подтипов данных со статусами

Поле

Описание

ObjectTypeID

Идентификатор подтипа

StatusID

Идентификотор статуса

ObjectTypesWorkflows – связь подтипов данных со сценариями

Поле

Описание

ObjectTypeID

Идентификатор подтипа

WorkflowID

Идентификатор сценария

FieldTypes – список возможных типов атрибутов

Поле

Описание

ID

Уникальный идентификатор

Name

Название

MinValue

Минимальное возможное значение атрибута

MaxValue

Максимальное возможное значение атрибута

Length

Длина

Precision

Точность

Order

Позиция при отображении

FieldVariants – возможные варианты выбора значений атрибутов. Используется для атрибутов, для которых значения

выбираются из списка предопределенных значений

Поле

Описание

ID

Уникальный идентификатор

FieldID

Идентификатор атрибута

Title

Отображаемый текст

Selected

Признак, определяющий, что данный вариант выбран по умолчанию

Position

Позиция при отображении

Описание таблицы Workflows приведено в разделе, описывающем Подсистему Workflow

Хранимые процедуры

Простые. Описание не требуется.

Классы

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

106 из 106

 

 

Список классов

CDataType

Функции

settings-functions.asp datatypes-functions.asp

XSL-шаблоны

Имя файла

Описание

datatypes-field.xsl

Изменение свойств атрибута

datatypes-field-add.xsl

Добавление атрибута

datatypes-fields.xsl

Отображение списка атрибутов

settings-datatypes.xsl

Отображение списка типов и подтипов

settings-datatypes-subtype.xsl

Отображения страницы свойств типа

settings-datatypes-type.xsl

Отображение страницы свайств подтипа

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

107 из 107

 

 

Подсистема Workflow

Подсистема workflow предназначена для настройки сценариев прохождения объектов системы между исполнителями

Логика работы

Особенности реализации

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

2.В узлах могут быть назначены роли. Пользователи, назначенные на роли, связанные с узлом, видят приходящие в узел задачи и могут передать их в другой узел.

3.Узлы связаны между собой связями. Для данной связи обязательно существует узел, исходящий и входящий узел.

4.Узел может быть связан с любым количеством соседних узлов.

5.Каждая связь сопоставлена с некоторым статусом и некоторой ролью. Присваивая задаче определенный статус при передаче, пользователь «отправляет» его по связи в следующий узел. Пользователь может «воспользоваться» связью только в том случае, если он назначен на роль, сопоставленную с этой связью. Причем несколько связей могут быть сопоставлены с одинаковым статусом. В этом случае при передаче задача попадет сразу в несколько узлов.

6.Процедура передачи задачи в текущем узле состоит в завершении текущей задачи, создании новой задачи и размещении

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

7.При выходе из узла тип задачи может автоматически меняться. Тип задачи по умолчанию определен для связи.

8.Задания выполняются в рамках работы над проектом, соответственно, каждая задача связана с проектом. Проект имеет фиксированный список участников. Этот список нужен для назначения конкретных исполнителей задач по данному проекту в данном узле. Исполнители в узле это пользователи из числа участников проекта, назначенные на ролисвязанные с данным узлом.

9.Сценарий, узел и связь можно сделать неактивными.

10.Можно использовать только правильно настроенные сценарии и связи. Критерии правильности: 10.1. Для сценариев:

10.1.1.Ровно один из активных узлов должен быть начальным

10.1.2.Хотя бы один активный узел должен быть конечным

10.1.3.Должен существовать хотя бы один маршрут по активным связям из любого узла в один из конечных

10.1.4.Во всех активных узлах должны быть назначены роли

10.2.Для связей:

10.2.1.На все активные связи должны быть назначены роли

База данных

Диаграмма таблиц

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

108 из 108

 

 

 

 

Рисунок 23. Диаграма таблиц базы данных подсистемы «WorkFlow»

 

 

Описания таблиц

 

 

 

 

Workflows – предназначена для хранения описаний сценариев

 

 

Поле

 

Описание

 

 

ID

 

Уникальный идентификатор

 

 

Name

 

Название сценария

 

 

Description

 

Описание сценария

 

 

Created

 

Дата создания

 

 

System

 

Признак системного сценария. Если значение этого поля равно 1, то такой сценарий

 

 

 

отображается красным цветом и его нельзя удалить через бэкофис.

 

 

Active

 

Признак активного (разрешенного для использования) сценария. Если значение этого поля

 

 

 

равно 1, то такой сценарий разрешен для использования

 

 

Valid

 

Признак правильного сценария. Если значение этого поля равно 1, то такой сценарий

 

 

 

является правильным.

 

 

ParentEndNodeID

 

Не используется

 

 

InvalidReasons

 

Конкретизация признаков, по которым определяется что этот сценарий не является

 

 

 

правильным.

 

 

WorkflowNodes – предназначена для хранения информации об узлах, связанных с определенными сценариями.

 

Поле

 

Описание

 

 

ID

 

Уникальный идентификатор

 

 

Name

 

Название узла

 

 

Description

 

Описание узла

 

 

Type

 

Признак, определяющий, что этот узел является начальным/конечным

 

 

 

 

Type and 1=1 – промежуточный узел значение по умолчанию

 

 

 

 

Type and 2=2 – начальный узел.

 

 

 

 

Type and 4=4 – конечный узел.

 

 

WorkflowID

 

Идентификатор сценария, к которому относится данный узел.

 

 

System

 

Признак системного узла значение System равно 1

 

 

Active

 

Признак активного (разрешенного для использования) узла. Если значение этого поля равно

 

 

 

1, то такой узел разрешен для использования

 

 

KeepTask

 

Не используется

 

 

Position

 

Позиция узла при его отображении на странице

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

109 из 109

WorkflowLinks – предназначена для хранения информации о связях между узлами, принадлежащими определенному

сценарию

Поле

Описание

ID

Уникальный идентификатор

WorkflowID

Идентификатор сценария, к которому относится данная связь

StartNodeID

Идентификатор начального узла для данной связи

StatusID

Идентификатор статуса, сопоставленного с данной связью

EndNodeID

Идентификатор конечного узла для данной связи

Position

Позиция связи при ее отображении на странице

Active

Признак активной (разрешенной для использования) связи. Если значение этого поля равно

 

1, то такая связь разрешена для использования

Type

Тип связи. В настоящее время значение поля равно 0

Name

Название связи

Description

Описание связи

ChildWorkflowID

Не используется

ChildStartNodeID

Не используется

DefTaskTypeID

Подтип задачи, создаваемой на выходе из узла. Поле содержит идентификатор подтипа. На

 

выходе из узла создается задача этого подтипа. Если значение поля равно 0, создается задача

 

того же подтипа, что и задача, пришедшая в узел.

Valid

Признак правильной связи. Если значение этого поля равно 1, то такая связь является

 

правильной

WorkflowNodesFields – предназначена для хранения идентификаторов полей, которые подвергаются обработке в узлах

Поле

Описание

FieldID

Идентификатор атрибута

NodeID

Идентификатор узла

WorkflowID

Идентификатор сценария

Inherit

Признак, предписывающий наследовать значение атрибута при передаче.

Default

Значение по умолчанию для атрибута

Script

Признак, указывающий,

Required

Признак обязательности атрибута. Если значение Required равно 1, атрибут является

 

обязательным.

WorkflowNodesRoles – предназначена для хранения назначений ролей для узлов

Поле

Описание

NodeID

Идентификатор узла

RoleID

Идентификатор роли

WorkflowLinksRoles – предназначена для хранения назначения ролей для связей

Поле

Описание

RoleID

Идентификатор роли

LinkID

Идентификатор связи

Классы

UML-диаграмма

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

110 из 110