Возможности системы

Развитая модель данных

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

Объект всегда относится к определенному типу, например, «Статья», «Сообщение в форуме», «Позиция прайс-листа» и т.д. На базе типа объекта может быть создано несколько подтипов. Так, на базе типа «Устройство мобильной связи» могут быть созданы подтипы «Мобильный телефон» и «Коммуникатор». Возможность создавать подтипы важна при работе со сложными структурами данных.

На один объект может ссылаться несколько других объектов: один товар может присутствовать в нескольких категориях каталога, а одна новость — в нескольких лентах новостей. Так в системе реализовано повторное использование данных.

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

Богатый набор предустановленных типов полей включает в себя такие типы как: «Файл», «Изображение», «Справочник» и др.

В системе предусмотрено три степени важности поля: поле может быть «необязательным», «важным» и «обязательным».

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

Набор значений отдельного справочника может использоваться для полей в нескольких типах объектов. Например, поле, ассоциированное со справочником «Производитель», присутствует и в типе «Товар» и в типе «Заявка на поставку товара». Полезной является возможность организовывать связи между справочниками, при которых несколько значений одного справочника соответствует одному значению другого. В качестве примера связанных справочников можно привести справочник городов и справочник улиц.

Практичная система контроля прав доступа

Система контроля прав доступа основана на подходе, который используется в операционных системах семейства UNIX. Для каждого объекта определяется три набора прав: права для владельца объекта, права для группы объекта и права для остальных пользователей. Каждый набор прав, определяет права на три операции: чтение, запись и управление вложениями.

Автоматизация операций импорта структурированных данных

Данные импортируются в систему в формате XML. Система может быть настроена так, чтобы импорт запускался автоматически с установленной периодичностью, кроме того, файл импорта может быть выгружен вручную через интерфейс администратора Cairo. Также предусмотрена возможность импорта данных из CSV-файла.

Веб-интерфейс для управления структурированными данными

Управление структурированными данными производится через веб-интерфейс администратора Cairo. Здесь происходит создание, удаление и редактирование объектов, управление связями между объектами, управление порядком в упорядоченных перечнях объектов, а также регулировка прав на объекты.

Веб-интерфейс для управления структурой данных

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

Программный интерфейс для работы с данными Cairo

Для вывода структурированных данных на страницах сайта существует специализированный программный интерфейс: Cairo API.

Операции по работе с данными делятся на операции выборки и операции изменения данных. К базовым операциям выборки относится получение отдельного объекта и получение списка объектов.

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

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

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

Набор вспомогательных библиотек и классов для разработки веб-ресурсов

Класс Cairo предназначенный для работы с шаблонами страниц предоставляет следующие возможности:

  • экранирование данных при выводе;
  • автоматическое определение значения заголовков Last-Modified на основе времени модификации использованных при выводе страницы объектов;
  • кэширование веб-страниц на стороне клиента;
  • кэширование веб-страниц на стороне сервера;
  • сжатие потока данных, передаваемых сервером (gzip);
  • подключение подшаблонов.

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

Отдельный веб-ресурс может иметь несколько языковых версий. При этом должна быть обеспечена не только поддержка нескольких языков содержимого, но и интернационализация интерфейса: названий операций, сообщений, форматов дат, чисел и т.п. В Cairo для интернационализации используется библиотека gettext, которая позволяет достаточно просто организовать вывод сообщений на разных языках, реализовать поддержку национальных форматов времени, дат, вещественных и целых чисел и многое другое.

Cairo упрощает работу с формами. Специальный класс позволяет генерировать формы вместе с проверками как на стороне клиента (средствами JavaScript), так и на стороне сервера (средствами PHP).

Механизм обработки ошибок и предоставление отладочной информации

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

При использовании класса генерации страницы разработчик получает доступ к таким данным как время генерации страницы, полный перечень запросов к БД и время выполнения каждого из запросов.

Журналирование работы системы

Добавление, удаление и редактирование объектов отражается в журнале работы с данными.

В журнале авторизаций фиксируются все попытки доступа (как удачные, так и неудачные) к веб-интерфейсу администратора Cairo.

Журнал критического времени генерации страниц позволяет разработчику находить и устранять узкие места в работе веб-ресурса.