190 likes | 390 Views
Разработка информационной системы управления документацией (Wiki-системы). программный проект по курсу «Базы данных». Скворцов А.Н. гр. 4081 /4 Рытенков А.С. гр. 4081 /3. ФТК 2008. Формулировка задачи. Структурирование документов с помощью Wiki- системы. Формулировка задачи.
E N D
Разработка информационной системы управления документацией (Wiki-системы) программный проект по курсу «Базы данных» Скворцов А.Н. гр. 4081/4 Рытенков А.С.гр. 4081/3 ФТК 2008
Формулировка задачи Структурирование документов с помощью Wiki-системы
Формулировка задачи • Хранение набора документов • Предоставление документов пользователям • Структурирование информации • Логическое связывание документов • Редактирование, сохранение истории, статистика • Управление доступом к информации • Доступ к документам через Web интерфейс Эти функции характерны для любой wiki-системы. Ярким примером может служить всем известная Wikipedia.
Выбор инструментов • Язык Java и фреймворк JSF для web-разработки • IDE и фреймворк распространяются свободно • JSF – широкораспространен • - скорость разработки приложений на Java гораздо меньше, чем на python • - фреймворк JSF после первого взгляда показался сложным и иногда интуитивно не понятным (наверное оч. субъективно) • - документация к JSF могла бы быть и получше • Язык python и фреймворк django • Новая перспективная технология • Интерпретатор python и фреймворк распространяются свободно • решение на языке python скорее всего будет проигрывать по производительности аналогичному решению на java • фреймворк находится на стадии разработки, версия 1.0 еще не выпущена, хотя есть стабильная версия 0.96 • наличие хорошей online-документации • Высокая скорость разработки приложений на python/django Python — мультипарадигменный язык программирования высокого уровня со строгой, динамической типизацией и автоматическим управлением памятью.
ОсобенностиDjango Структура web-приложения реализуемого с помощью фреймворка Django
Особенности Django • Слой ORM • Абстракция от конкретной СУБД • Автоматическая трансляция объектов в набор таблиц • Частичная абстракция от схемы БД • Подключаемая архитектура приложений. Высокий коэффициент повторного использования кода. • Полноценный API доступа к БД с поддержкой транзакций. • Расширяемая система шаблонов и тегов • Диспетчер URL на регулярных выражениях • Встроенный административный интерфейс Django - это свободный программный каркас для создания веб-приложений, названый в честь джазового гитариста Джанго Рейнхардта.
Реализация основных функций • Хранение • Отображение документов • Версионность • Список версий • Оптимистичная блокировка при редактировании • Отчет об истории изменений страницы Основные функции простой wiki-системы можно реализовать всего на двух таблицах. Если постараться, то можно объединить их и в одну
Система структурирования документов • Тегирование документов • Получение списка страниц помеченных тегом • Иерархическая система категорий (на основе тегов) • Облако тегов Тег - ключевое слово для категоризации чего-либо. Иными словами, это метка, которой помечается один или несколько документов
Приложения к страницам • Привязка файлов к wiki-страницам • Хранение файлов в базе • Кодировка base64 • Форма загрузки файлов Приложения к документам могут быть разделены на два класса: бинарные файлы и картинки. Картинки используются для оформления страниц, бинарные файлы доступны только для скачивания.
Подсистема управления доступом • Разделение прав доступа к объектам системы • Индивидуальное и групповое предоставление прав • Иерархическая система управления правами (возможность организации вложенных групп) • Использование стандартных методов управления django.contrib.auth • Реализация интерфейса управления иерархической системой прав • Реализация системы свободной регистрации Основными правами являются право просмотра, создания и редактирования объекта, например документа. Количество прав в системе не может быть изменено динамически
Подсистема управления доступом Упрощенная схема сущностей и связей обеспечивающих работу системы прав
Решенные задачи • Просмотр/Редактирование страниц • Просмотр списка страниц • Вики-разметка (mediawiki и markdown) • Загрузка файлов и картинок • Оптимистичная блокировка страниц на редактирование • Меню • Теги для страниц • Просмотр облака тегов • Категории для страниц на основе тегов • Комментарии • Просмотр изменений (diff)/редактирование конфликтов • Список ревизий и возможность просмотра конкретной ревизии Функция просмотра изменений реализована на основе стандартной библиотеки difflib
Решенные задачи • Привязка файлов к wiki-страницам, хранение файлов в базе • Доступ к основной функциональности через механизм xml-rpc • Преобразовать страницу просмотра ревизий в подробный html-отчет об истории изменений страницы, написать xml-rpc метод для получения xml версии этого отчета • Авторизация, разграничение прав • регистрация пользователей • вход/выход • администрирование (назначение прав и групп) • Модификация системы авторизации, реализация иерархических групп При использовании xml-rpc,работа с базой MySQL идет напрямую, не используя механизм ORM слоя фреймворка
Разработано ядро полноценной wiki-системы допускающее добавление функций В качестве основных инструментов использовался язык Python и фреймворк Django. Реализована подсистема тегирования и категорирования для структурирования информации Реализована подсистема управления правами доступа Реализован механизм доступа к данным через xml-rpc Реализован прототип простой подсистемы аудита Наличие возможности простого перехода на другую СУБД из числа поддерживаемых Django Заключение За простотой изложенного стоит большая практическая работа, многие особенности который были опущены с тем чтобы не утомлять слушателей