Возможности системы
Развитая модель данных
Связи между объектами в системе строго регламентированы. Это означает, что объекты определенного типа могут быть связаны друг с другом только в том случае, если это предусмотрено структурой данных. Например, структурой может быть определено, что лента новостей содержит только ссылки на объекты типа «Новость», категории каталога — ссылки на товары, а товары в свою очередь содержат ссылки на сопутствующие товары и отзывы посетителей.
Объект всегда относится к определенному типу, например, «Статья», «Сообщение в форуме», «Позиция прайс-листа» и т.д. На базе типа объекта может быть создано несколько подтипов. Так, на базе типа «Устройство мобильной связи» могут быть созданы подтипы «Мобильный телефон» и «Коммуникатор». Возможность создавать подтипы важна при работе со сложными структурами данных.
На один объект может ссылаться несколько других объектов: один товар может присутствовать в нескольких категориях каталога, а одна новость — в нескольких лентах новостей. Так в системе реализовано повторное использование данных.
Механизм жестких и символических ссылок позволяет определять поведение системы при удалении объектов. Так при удалении жесткой ссылки на объект, все символические ссылки на него будут удалены автоматически.
Богатый набор предустановленных типов полей включает в себя такие типы как: «Файл», «Изображение», «Справочник» и др.
В системе предусмотрено три степени важности поля: поле может быть «необязательным», «важным» и «обязательным».
Система позволяет устанавливать ограничения на значения полей объекта. Наличие таких ограничений может быть необходимо для корректной визуализации информации об объекте на страницах веб-ресурса.
Набор значений отдельного справочника может использоваться для полей в нескольких типах объектов. Например, поле, ассоциированное со справочником «Производитель», присутствует и в типе «Товар» и в типе «Заявка на поставку товара». Полезной является возможность организовывать связи между справочниками, при которых несколько значений одного справочника соответствует одному значению другого. В качестве примера связанных справочников можно привести справочник городов и справочник улиц.
Практичная система контроля прав доступа
Система контроля прав доступа основана на подходе, который используется в операционных системах семейства UNIX. Для каждого объекта определяется три набора прав: права для владельца объекта, права для группы объекта и права для остальных пользователей. Каждый набор прав, определяет права на три операции: чтение, запись и управление вложениями.
Автоматизация операций импорта структурированных данных
Данные импортируются в систему в формате XML. Система может быть настроена так, чтобы импорт запускался автоматически с установленной периодичностью, кроме того, файл импорта может быть выгружен вручную через интерфейс администратора Cairo. Также предусмотрена возможность импорта данных из CSV-файла.
Веб-интерфейс для управления структурированными данными
Управление структурированными данными производится через веб-интерфейс администратора Cairo. Здесь происходит создание, удаление и редактирование объектов, управление связями между объектами, управление порядком в упорядоченных перечнях объектов, а также регулировка прав на объекты.
Веб-интерфейс для управления структурой данных
Управление структурой данных, как и управление данными, производится через веб-интерфейс администратора Cairo. В соответствующем разделе вводится информация о наборах полей объектов и свойствах этих полей, а также данные о возможных связях между объектами. В этом же разделе производится управление корневыми объектами.
Программный интерфейс для работы с данными Cairo
Для вывода структурированных данных на страницах сайта существует специализированный программный интерфейс: Cairo API.
Операции по работе с данными делятся на операции выборки и операции изменения данных. К базовым операциям выборки относится получение отдельного объекта и получение списка объектов.
Расширенные операции выборки данных это: получение списка объектов, относящихся к определенному родительскому объекту, выборка с другими дополнительными условиями, касающимися значений полей объектов, а также групповые операции и сортировка данных.
Поиск объектов производится по значениям их полей. Поиск по текстовым значениям осуществляется с учетом морфологии. При поиске учитываются права доступа к объектам.
К операциям изменения данных относится создание нового и изменение существующего объекта, а также удаление ссылки на объект.
Набор вспомогательных библиотек и классов для разработки веб-ресурсов
Класс Cairo предназначенный для работы с шаблонами страниц предоставляет следующие возможности:
- экранирование данных при выводе;
- автоматическое определение значения заголовков Last-Modified на основе времени модификации использованных при выводе страницы объектов;
- кэширование веб-страниц на стороне клиента;
- кэширование веб-страниц на стороне сервера;
- сжатие потока данных, передаваемых сервером (gzip);
- подключение подшаблонов.
Кэширование результатов запросов и выполнения функций может быть организовано с использованием класса, отвечающего за кэширование данных на стороне сервера.
Отдельный веб-ресурс может иметь несколько языковых версий. При этом должна быть обеспечена не только поддержка нескольких языков содержимого, но и интернационализация интерфейса: названий операций, сообщений, форматов дат, чисел и т.п. В Cairo для интернационализации используется библиотека gettext, которая позволяет достаточно просто организовать вывод сообщений на разных языках, реализовать поддержку национальных форматов времени, дат, вещественных и целых чисел и многое другое.
Cairo упрощает работу с формами. Специальный класс позволяет генерировать формы вместе с проверками как на стороне клиента (средствами JavaScript), так и на стороне сервера (средствами PHP).
Механизм обработки ошибок и предоставление отладочной информации
Механизм обработки ошибок, используемый в Cairo, позволяет не только определить строки, в которых произошла ошибка, но и проследить весь путь сообщения об ошибке. Все ошибки помещаются в системный стек и впоследствии могут быть извлечены и записаны в файл журнала, а также выведены на экран, или отправлены администратору по почте.
При использовании класса генерации страницы разработчик получает доступ к таким данным как время генерации страницы, полный перечень запросов к БД и время выполнения каждого из запросов.
Журналирование работы системы
Добавление, удаление и редактирование объектов отражается в журнале работы с данными.
В журнале авторизаций фиксируются все попытки доступа (как удачные, так и неудачные) к веб-интерфейсу администратора Cairo.
Журнал критического времени генерации страниц позволяет разработчику находить и устранять узкие места в работе веб-ресурса.