Upload
clinton-sullivan
View
58
Download
4
Embed Size (px)
DESCRIPTION
Разработка информационной системы управления документацией (Wiki-системы). программный проект по курсу «Базы данных». Скворцов А.Н. гр. 4081 /4 Рытенков А.С. гр. 4081 /3. ФТК 2008. Формулировка задачи. Структурирование документов с помощью Wiki- системы. Формулировка задачи. - PowerPoint PPT Presentation
Citation preview
Разработка информационной системы управления документацией
(Wiki-системы)
программный проектпо курсу
«Базы данных»
Скворцов А.Н. гр. 4081/4
Рытенков А.С. гр. 4081/3
ФТК 2008
Формулировка задачи
Структурирование документов с помощью Wiki-системы
Документ 1
Документ 2
2.2.
1.3.1.2.
2.5.
Документ 3
2.3. 3.2.
2.4.
НЕУДОБНОНЕРАЦИОНАЛЬНО
Документ 1
Ревизия 1
Ревизия 2
Ревизия 3
Документ 2
Ревизия 1
Ревизия 2
Ревизия 3
Ревизия 4
Ревизия 5
Документ 3
Ревизия 1
Ревизия 2
Категория 1 Категория 2
Тег 1 Тег 2
УДОБНО
Формулировка задачи• Хранение набора документов• Предоставление документов
пользователям• Структурирование информации• Логическое связывание документов• Редактирование, сохранение истории,
статистика• Управление доступом к информации• Доступ к документам через 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
WikiPageTitle WikiPageContent
view_page create_page edit_page
view_page.html create_page.html edit_page.html
Model
View
Template
DBwiki_wikipagetitle wiki_wikipagecontent
Особенности Django
Django - это свободный программный каркас для создания веб-приложений, названый в честь джазового гитариста Джанго Рейнхардта.
• Слой ORM– Абстракция от конкретной СУБД– Автоматическая трансляция объектов в набор
таблиц– Частичная абстракция от схемы БД
• Подключаемая архитектура приложений. Высокий коэффициент повторного использования кода.
• Полноценный API доступа к БД с поддержкой транзакций. • Расширяемая система шаблонов и тегов• Диспетчер URL на регулярных выражениях • Встроенный административный интерфейс
Реализация основных функций
Основные функции простой wiki-системы можно реализовать всего на двух таблицах. Если постараться, то можно объединить их и в одну
• Хранение
• Отображение документов
• Версионность
• Список версий
• Оптимистичная блокировка при редактировании
• Отчет об истории изменений страницы
Система структурирования документов
Тег - ключевое слово для категоризации чего-либо. Иными словами, это метка, которой помечается один или несколько документов
• Тегирование документов• Получение списка страниц
помеченных тегом• Иерархическая система категорий (на
основе тегов)• Облако тегов
Приложения к страницам
Приложения к документам могут быть разделены на два класса: бинарные файлы и картинки. Картинки используются для оформления страниц, бинарные файлы доступны только для скачивания.
• Привязка файлов к wiki-страницам
• Хранение файлов в базе• Кодировка base64• Форма загрузки файлов
Подсистема управления доступом
Основными правами являются право просмотра, создания и редактирования объекта, например документа.Количество прав в системе не может быть изменено динамически
• Разделение прав доступа к объектам системы• Индивидуальное и групповое предоставление
прав• Иерархическая система управления правами
(возможность организации вложенных групп)• Использование стандартных методов управления
django.contrib.auth• Реализация интерфейса управления
иерархической системой прав• Реализация системы свободной регистрации
Подсистема управления доступом
Упрощенная схема сущностей и связей обеспечивающих работу системы прав
Решенные задачи
Функция просмотра изменений реализована на основе стандартной библиотеки difflib
• Просмотр/Редактирование страниц • Просмотр списка страниц • Вики-разметка (mediawiki и markdown) • Загрузка файлов и картинок • Оптимистичная блокировка страниц на редактирование • Меню • Теги для страниц • Просмотр облака тегов • Категории для страниц на основе тегов • Комментарии • Просмотр изменений (diff)/редактирование конфликтов• Список ревизий и возможность просмотра конкретной ревизии
Решенные задачи
При использовании xml-rpc, работа с базой MySQL идет напрямую, не используя механизм ORM слоя фреймворка
• Привязка файлов к wiki-страницам, хранение файлов в базе
• Доступ к основной функциональности через механизм xml-rpc
• Преобразовать страницу просмотра ревизий в подробный html-отчет об истории изменений страницы, написать xml-rpc метод для получения xml версии этого отчета
• Авторизация, разграничение прав
• регистрация пользователей
• вход/выход
• администрирование (назначение прав и групп)
• Модификация системы авторизации, реализация иерархических групп
Заключение• Разработано ядро полноценной wiki-системы
допускающее добавление функций• В качестве основных инструментов использовался
язык Python и фреймворк Django.• Реализована подсистема тегирования и
категорирования для структурирования информации• Реализована подсистема управления правами
доступа• Реализован механизм доступа к данным через xml-
rpc• Реализован прототип простой подсистемы аудита• Наличие возможности простого перехода на другую
СУБД из числа поддерживаемых Django
За простотой изложенного стоит большая практическая работа, многие особенности который были опущены с тем чтобы не утомлять слушателей
Просмотр страницы
Список ревизий
Загрузка файла
Редактирование группы