18
Разработка информационной системы управления документацией (Wiki-системы) программный проект по курсу «Базы данных» Скворцов А.Н. гр. 4081/4 Рытенков А.С. гр. 4081/3 ФТК 2008

Разработка информационной системы управления документацией (Wiki-системы)

Embed Size (px)

DESCRIPTION

Разработка информационной системы управления документацией (Wiki-системы). программный проект по курсу «Базы данных». Скворцов А.Н. гр. 4081 /4 Рытенков А.С. гр. 4081 /3. ФТК 2008. Формулировка задачи. Структурирование документов с помощью Wiki- системы. Формулировка задачи. - PowerPoint PPT Presentation

Citation preview

Page 1: Разработка информационной системы управления документацией   (Wiki-системы)

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

(Wiki-системы)

программный проектпо курсу

«Базы данных»

Скворцов А.Н. гр. 4081/4

Рытенков А.С. гр. 4081/3

ФТК 2008

Page 2: Разработка информационной системы управления документацией   (Wiki-системы)

Формулировка задачи

Структурирование документов с помощью 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

УДОБНО

Page 3: Разработка информационной системы управления документацией   (Wiki-системы)

Формулировка задачи• Хранение набора документов• Предоставление документов

пользователям• Структурирование информации• Логическое связывание документов• Редактирование, сохранение истории,

статистика• Управление доступом к информации• Доступ к документам через Web

интерфейсЭти функции характерны для любой wiki-системы. Ярким примером может служить всем известная Wikipedia.

Page 4: Разработка информационной системы управления документацией   (Wiki-системы)

Выбор инструментов• Язык Java и фреймворк JSF для web-разработки

– IDE и фреймворк распространяются свободно – JSF – широкораспространен– - скорость разработки приложений на Java гораздо меньше, чем

на python – - фреймворк JSF после первого взгляда показался сложным и

иногда интуитивно не понятным (наверное оч. субъективно) – - документация к JSF могла бы быть и получше

• Язык python и фреймворк django – Новая перспективная технология– Интерпретатор python и фреймворк распространяются свободно – решение на языке python скорее всего будет проигрывать по

производительности аналогичному решению на java – фреймворк находится на стадии разработки, версия 1.0 еще не

выпущена, хотя есть стабильная версия 0.96 – наличие хорошей online-документации– Высокая скорость разработки приложений на python/django

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

Page 5: Разработка информационной системы управления документацией   (Wiki-системы)

Особенности 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

Page 6: Разработка информационной системы управления документацией   (Wiki-системы)

Особенности Django

Django - это свободный программный каркас для создания веб-приложений, названый в честь джазового гитариста Джанго Рейнхардта.

• Слой ORM– Абстракция от конкретной СУБД– Автоматическая трансляция объектов в набор

таблиц– Частичная абстракция от схемы БД

• Подключаемая архитектура приложений. Высокий коэффициент повторного использования кода.

• Полноценный API доступа к БД с поддержкой транзакций. • Расширяемая система шаблонов и тегов• Диспетчер URL на регулярных выражениях • Встроенный административный интерфейс

Page 7: Разработка информационной системы управления документацией   (Wiki-системы)

Реализация основных функций

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

• Хранение

• Отображение документов

• Версионность

• Список версий

• Оптимистичная блокировка при редактировании

• Отчет об истории изменений страницы

Page 8: Разработка информационной системы управления документацией   (Wiki-системы)

Система структурирования документов

Тег - ключевое слово для категоризации чего-либо. Иными словами, это метка, которой помечается один или несколько документов

• Тегирование документов• Получение списка страниц

помеченных тегом• Иерархическая система категорий (на

основе тегов)• Облако тегов

Page 9: Разработка информационной системы управления документацией   (Wiki-системы)

Приложения к страницам

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

• Привязка файлов к wiki-страницам

• Хранение файлов в базе• Кодировка base64• Форма загрузки файлов

Page 10: Разработка информационной системы управления документацией   (Wiki-системы)

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

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

• Разделение прав доступа к объектам системы• Индивидуальное и групповое предоставление

прав• Иерархическая система управления правами

(возможность организации вложенных групп)• Использование стандартных методов управления

django.contrib.auth• Реализация интерфейса управления

иерархической системой прав• Реализация системы свободной регистрации

Page 11: Разработка информационной системы управления документацией   (Wiki-системы)

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

Упрощенная схема сущностей и связей обеспечивающих работу системы прав

Page 12: Разработка информационной системы управления документацией   (Wiki-системы)

Решенные задачи

Функция просмотра изменений реализована на основе стандартной библиотеки difflib

• Просмотр/Редактирование страниц • Просмотр списка страниц • Вики-разметка (mediawiki и markdown) • Загрузка файлов и картинок • Оптимистичная блокировка страниц на редактирование • Меню • Теги для страниц • Просмотр облака тегов • Категории для страниц на основе тегов • Комментарии • Просмотр изменений (diff)/редактирование конфликтов• Список ревизий и возможность просмотра конкретной ревизии

Page 13: Разработка информационной системы управления документацией   (Wiki-системы)

Решенные задачи

При использовании xml-rpc, работа с базой MySQL идет напрямую, не используя механизм ORM слоя фреймворка

• Привязка файлов к wiki-страницам, хранение файлов в базе

• Доступ к основной функциональности через механизм xml-rpc

• Преобразовать страницу просмотра ревизий в подробный html-отчет об истории изменений страницы, написать xml-rpc метод для получения xml версии этого отчета

• Авторизация, разграничение прав

• регистрация пользователей

• вход/выход

• администрирование (назначение прав и групп)

• Модификация системы авторизации, реализация иерархических групп

Page 14: Разработка информационной системы управления документацией   (Wiki-системы)

Заключение• Разработано ядро полноценной wiki-системы

допускающее добавление функций• В качестве основных инструментов использовался

язык Python и фреймворк Django.• Реализована подсистема тегирования и

категорирования для структурирования информации• Реализована подсистема управления правами

доступа• Реализован механизм доступа к данным через xml-

rpc• Реализован прототип простой подсистемы аудита• Наличие возможности простого перехода на другую

СУБД из числа поддерживаемых Django

За простотой изложенного стоит большая практическая работа, многие особенности который были опущены с тем чтобы не утомлять слушателей

Page 15: Разработка информационной системы управления документацией   (Wiki-системы)

Просмотр страницы

Page 16: Разработка информационной системы управления документацией   (Wiki-системы)

Список ревизий

Page 17: Разработка информационной системы управления документацией   (Wiki-системы)

Загрузка файла

Page 18: Разработка информационной системы управления документацией   (Wiki-системы)

Редактирование группы