Программное обеспечение автоматизированной системы управления документами предприятия

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    31,07 Кб
  • Опубликовано:
    2015-07-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программное обеспечение автоматизированной системы управления документами предприятия

Выпускная квалификационная работа бакалавра

Программное обеспечение автоматизированной системы управления документами предприятия

Введение

приложение программа автоматизированный

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

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

·              потеря документов;

·              накапливается множество документов, назначение и источник которых неясны;

·              документы и информация, содержащаяся в них, попадают в чужие руки;

·              тратится много рабочего времени на поиск нужного документа и формирование тематической подборки документов;

·              создается несколько копий одного и того же документа - на бумагу и копирование документов тратиться немало средств;

·              на подготовку и согласование документов тратится много времени.

Внедрение системы электронного документооборота позволяет решить все эти проблемы, а также:

·              обеспечит слаженную работу всех подразделений;

·              упростит работу с документами, повысит ее эффективность;

·              повысит производительность труда сотрудников за счет сокращения времени создания, обработки и поиска документов;

·              повысит оперативность доступа к информации;

·              позволит разграничить права доступа сотрудников к информации.

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

Особенностью системы является многоуровневая обработка документов, характерная для государственных организаций.

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

 


1. Исследовательская часть


1.1    Описание предметной области


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

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

Исторически системы управления документами являлись вертикальными приложениями, т.е. программами, использование которых ограничивается одной специальной областью. СУЭД или DMS (Document Management System) разрабатывались для использования небольшими группами специалистов, работающих в территориальной близости друг от друга с сильно структурированными документами.

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

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

Ниже перечислены категории технологий электронного управления документами (ЭУД) с примерами наиболее известных поставщиков и продуктов в каждом классе (по информации International Data Corporation (IDC)):

·        Системы ЭУД, ориентированные на бизнес-процессы (Business-process EDM): Documentum, FileNet (Panagon и Watermark), Hummingbird (PC DOCS)

·              Корпоративные системы ЭУД (Enterprise-centric EDM): Lotus (Domino. Doc), дополнения к Novell GroupWise, Opent Text (LiveLink), Keyfile Corp., Oracle (Context)

·              Системы управления контентом (Content management): Adobe, Excalibur

·              Системы управления информацией (порталы) (Information Management): Excalibur, Oracle Context, PC DOCS/Fulcrum, Verity, Lotus (Domino/Notes, K-station)

·              Системы управления образами (Imaging)

·              Системы управления потоками работ (Workflow management): Lotus (Domino/Notes и Domino Worflow), Jetform, FileNet, Action Technologies, Staffware

·        Система управления корпоративным контентом DIRECTUM - система одноименной отечественной компании DIRECTUM - позволяет строить инфраструктуру электронного взаимодействия, закрывающую различные задачи бизнеса на разных уровнях: от делопроизводителей до топ-менеджмента.

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

В составе DIRECTUM выделяются три основных слоя:

·        платформа, построенная на обязательных компонентах системы;

·              модули системы и технические решения;

·              бизнес-решения.

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

Корпоративные системы ЭУД - обеспечивают корпоративную инфраструктуру для создания, совместной работы над документами и их публикации, доступную, как правило, всем пользователям в организации. Основные возможности этих систем аналогичны системам, ориентированным на бизнес-процессы. Однако, их отличительной особенностью является способ использования и распространения. Аналогично таким средствам как текстовые редакторы и электронные таблицы, корпоративные системы ЭУД являются стандартным, «приложением по умолчанию» для создания и публикации документов в организации. Как правило, эти средства не ориентированы на использование только в какой-то определенной индустрии или для узко определенной задачи. Они предлагаются и внедряются как общекорпоративные технологии, доступные практически любой категории пользователей.

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

Системы управления информацией (порталы) - обеспечивают агрегирование, управление и доставку информации через сети Internet, Intranet и Extranet. Эти технологии обеспечивают фундамент создания информационных порталов. Системы управления информацией дают возможность организациям накапливать и использовать экспертизу в распределенной корпоративной среде на основе использования бизнес-правил, контекста и метаданных. Хотя большинство доступных сегодня технологий обеспечивают, в основном, статические публикации, обеспечение большей интерактивности и средств совместной работы - дело ближайшего будущего.

Системы управления образами преобразуют информацию с бумажных носителей в цифровой формат, как правило, это TIFF (Tagged Image File Format), после чего документ может быть использован в работе уже в электронной форме.

Системы управления потоками работ (workflow) обеспечивают систематическую маршрутизацию работ любого типа в рамках структурированных и неструктурированных бизнес-процессов. Они используются в целях ускорения бизнес-процессов, увеличения эффективности и степени контролируемости процессов в организации.

Из важнейших характеристик СУЭД специалисты обычно выделяют следующие:

·        программная платформа (система, обеспечивающая хранение и поиск документов, а также система обмена сообщениями. В настоящее время используется архитектура «клиент-сервер»);

·              поддержка распределенной обработки информации;

·              возможности масштабирования (набор поддерживаемых платформ; максимальное число пользователей; число уровней вложенности структур);

·              открытость архитектуры и возможность интеграции с другими приложениями;

·              типы документов, с которыми работает система (форматы документов; поддержка работы с составными документами и несколькими версиями документа; связи документов (один документ может быть ответом на другой или может быть порожден при исполнении предыдущего документа); совместное использование электронных и бумажных документов);

·              коллективная работа группы исполнителей над одним (или несколькими) документами;

·              возможность работы по «свободной» схеме (без жесткой фиксации маршрутов);

·              средства для определения маршрутных схем прохождения документов;

·        возможности контроля за прохождением документов; 

·        способ оповещения должностных лиц;

·              особенности настройки продукта для нужд конкретного заказчика (например, регистрационная карточка должна содержать все необходимые реквизиты); наличие локализованного (русифицированного) интерфейса;

·              средства регламентации доступа и криптозащиты;

·              средства оповещения о нарушениях в регламенте прохождения документов;

·              ориентация на традиционную российскую концепцию документооборота.

Системы управления электронными архивами характеризуются следующими функциями:

1)      Ввод - система должна обеспечивать ввод, обработку, хранение, регистрацию документов.

2)      Хранение - централизованное хранилище данных позволяет решить целый ряд проблем:

·        возможность оперативного получения целостной и непротиворечивой информации;

·        организация сбора, хранения и обработки информации;

·        высокая надежность и управляемость системы, быстрый и подконтрольный доступ пользователей к информации;

·        экономию средств за счет сосредоточения обслуживающего персонала в одном месте;

2.      Конструкторская часть


2.1    Выбор архитектуры приложения


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

Чтобы выполнить данные требования, будет применяться технология «клиент-сервер».

Серверная часть веб-приложения - это программа или скрипт на сервере, обрабатывающая запросы пользователя (точнее, запросы браузера). Чаще всего серверная часть веб-приложения программируется на PHP. При каждом переходе пользователя по ссылке браузер отправляет запрос к серверу. Сервер обрабатывает этот запрос, вызывая некоторый PHP-скрипт, который формирует веб-страницу, описанную языком HTML, и отсылает клиенту по сети. Браузер тут же отображает полученный результат в виде очередной веб-страницы.

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

База данных (БД, или система управления базами данных, СУБД) - программное обеспечение на сервере, занимающееся хранением данных и их выдачей в нужный момент. Серверная часть веб-приложения т.е., PHP скрипт, обращается к базе данных, извлекая данные, которые необходимы для формирования страницы, запрошенной пользователем.

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

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

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

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

Рисунок 1 - Общая схема построения систем с архитектурой «клиент / сервер»

Таблица 1 - Функции, выполняемые участниками взаимодействия в среде «клиент-сервер»

Клиент

Сервер

1. Управляет пользовательским интерфейсом 2. Принимает и проверяет синтаксис введённого пользователем запроса 3. Выполняет приложение 4. Генерирует запрос к базе данных и передаёт его серверу 5. Отображает полученные данные пользователю

1. Принимает и обрабатывает запросы к базе данных со стороны клиентов 2. Проверяет полномочия пользователей 3. Гарантирует соблюдение ограничений целостности 4. Выполняет запросы / обновления и возвращает результаты клиенту 5. Поддерживает системный каталог 6. Обеспечивает параллельный доступ к базе данных 7. Обеспечивает управление восстановлением



Преимущества данного типа архитектуры:

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

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

.        Стоимость аппаратного обеспечения снижается. Достаточно мощный компьютер с большим устройством хранения нужен только серверу - для хранения и управления базой данных.

.        Сокращаются коммуникационные расходы. Приложения выполняют часть операций на клиентских компьютерах и посылают через сеть только запросы к базе данных, что позволяет существенно сократить объём пересылаемых по сети данных.

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

2.2    Характеристика СУЭД


В процессе разработки было создано веб-приложение, представляющее собой систему управления электронными документами (СУЭД). В качестве средства разработки был выбран язык PHP, специально предназначенный для создания веб-приложений. Веб-приложение выполняет стандарт ISO 17025, который в целом базируется на концепции централизованного хранения документов, ограниченного доступа и отслеживании изменений, а также стандарт МЭБ для управления документами.

В проекте реализовано:

         Управление пользователями и отделами:

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

         Централизованное хранение документов:

Централизованное хранение документов делает поиск документов в СУЭД намного проще, так как поиск производится только в одной области.

         Ограниченный доступ:

Система позволяет ограничивать доступ к документам каждому пользователю или отделу.

         Отслеживание изменений:

Действия по изменению, добавлению и удалению файлов отслеживаются. СУЭД будет фиксировать изменения файлов, чтобы в случае необходимости просмотреть их.

2.3    Особенности СУЭД


Особенности данного проекта:

·              Возможность добавить файл любого типа в хранилище

·              Не требуется FTP-сервер. Файлы можно загрузить прямо из браузера.

·              Мета-данные для каждого файла

·              Возможность создавать и назначать отдел / категорию каждому файлу

·              История изменений

·              Физически документы хранятся на сервере

·              Файлы имеют срок хранения

·              Пользователи самостоятельно могут создавать поля документа, которые будут заполнятся данными, в соответствии с потребностями компании

·              Автоматизированный процесс истечения срока хранения файлов

·              Администратор/рецензент может одобрить или отклонить загрузку нового или измененного документа в хранилище

·              Возможен поиск файлов по названию, автору, отделу, категории, комментариям

·              Не требуется никаких внешних процессов индексирования

·              Возможность изменить URL

·              Пользователи могут ограничивать доступ к собственным файлам

·              Три типа пользователей: пользователь, рецензент и администратор

·              Управление максимальным размером файлов независимо от более высоких пределов сервера.

2.4    Требования к системе


Для работы СУЭД необходимы следующие компоненты:

         Сетевой сервер Apache 2.x (или любой другой веб-сервер, который поддерживает PHP) (http://www.apache.org/)

         Сервер MySQL 5.0+ (http://www.mysql.com/)

         PHP 5.4+ скомпилирован с поддержкой PDO MySQL (http://www.php.net/).

 


3. Технологические средства разработки и отладки

 

.1 Общие сведения


Веб-приложение - клиент-серверное приложение, в котором клиентом выступает браузер, а сервером - веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно в базе данных.

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

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

Язык имеет очень широкое распространение и предустановлен на большинстве хостингов. Изначально разрабатывался для создания домашних страниц «о себе». Но получив массовое распространение и завоевав популярность был значительно доработан.

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

Для интерпретации тегов в понятный для человека вид на компьютере пользователя должен быть установлен браузер. Полученный форматированный текст можно отобразить на экране монитора компьютера, телевизора или мобильного устройства.или каскадные таблицы стилей - используется для графического оформления сайта. Позволяют адаптировать сайт к экранам с различными характеристиками. Отделяет разработку структуры сайта от описания его внешнего вида.- язык программирования, код которого исполняется на стороне клиента, тем самым разгружая сервер. JavaScript подвергся влиянию многих языков, целью разработчиков было создание языка понятного не только программистам.- библиотека написанная на JavaScript, позволяющая упростит работу с HTML. В частности позволяет легко получать доступ к элементам модели DOM. В библиотеке реализована функция AJAX для подгрузки контента без перезагрузки основной страницы.

3.2 Сведения об IDE Eclipse PHP Development Tools


Для создания проекта использовалась интегрированная среда разработки приложений на языке программирования PHP - Eclipse PHP Development Tools, разработанная на основе Eclipse, распространяемая на условиях лицензии Eclipse Public License.

При разработке данного проекта использовалась последняя версия IDE - Eclipse Luna. Т.к. Eclipse написана на Java, для работы потребуется Java Runtime Environment - виртуальная машина для запуска java-приложений.

Возможности:

·        Сворачивание кода

·        Рефакторинг

·        Генерация кода (методы доступа к членам класса, мастер классов и интерфейсов)

·        Анализ и исправление кода

·        Поддержка PHP 4 и PHP 5 (включая замыкания и пространства имен)

·        Иерархическое представление классов и методов

·        Отладка PHP-скриптов (как локально, так и с помощью интеграции с Zend Server и XDebug)

·        Поддержка HTML, CSS, JavaScript

·        и другие.

3.3 Сведения о редакторе Notepad++


Также при написании исходного кода использовался Notepad++. Данный текстовый редактор осуществляет подсветку синтаксиса множества языков программирования. Редактор разрабатывался специально для программистов, встроенная система завершения слов, позволяет быстро набирать код программы. Поддержка регулярных выражений упрощает поиск информации и рефакторинг участков кода. Возможна работа одновременно с несколькими документами.

3.4 Сведения о LAMP сервере

 - акроним, обозначающий набор комплекс серверного программного обеспечения, широко используемого в Интернете. LAMP назван по первым буквам входящих в его состав компонентов:

·              Linux - операционная система Linux;

·              Apache - веб-сервер;

·              MariaDB / MySQL - СУБД;

·              PHP - язык программирования, используемый для создания веб-приложений (помимо PHP могут подразумеваться другие языки, такие как Perl и Python).

Акроним LAMP может использоваться для обозначения:

1.      Инфраструктуры веб-сервера

2.      Парадигмы программирования

.        Пакета программ

Хотя изначально эти программные продукты не разрабатывались специально для работы друг с другом, такая связка стала весьма популярной из-за своей гибкости, производительности и низкой стоимости (все её составляющие являются открытыми и могут быть бесплатно загружены из Интернета). Набор LAMP входит в состав большинства дистрибутивов Linux и предоставляется многими хостинговыми компаниями.

Иногда букву P в аббревиатуре расшифровывают как Perl и Python, другие возможные языки веб-разработки.

Существует множество вариантов термина, в частности:

·              LEMP - Nginx вместо Apache (Nginx читается Engine-X)

·              LNMP - другой вариант названия 'Nginx вместо Apache

·              BAMP - BSD вместо Linux

·              MAMP - Mac OS X вместо Linux.

·              SAMP - Solaris вместо Linux

·              WAMP - под Microsoft Windows вместо Linux

·              WASP - Windows, Apache, SQL Server и PHP

·              WIMP - Windows, IIS, MySQL и PHP

·              PAMP - Personal Apache MySQL PHP - набор серверов для платформы S60. Специфика платформы накладывает свой отпечаток на работу комплекса. Так, в частности, модули PHP получают и возвращают строки только в кодировке UTF-8.

·              FNMP - FreeBSD и Nginx вместо Linux и Apache.

·              XAMPP - кроссплатформенная сборка веб-сервера, X (любая из четырёх операционных систем), Apache, MySQL, PHP, Perl.

·              Zend Server - пакет от разработчиков PHP.

·              Instant Rails - с языком Ruby.

Поскольку программы, входящие в LAMP, в основном были разработаны для Linux, то установка и взаимная настройка их под Windows требует некоторого времени. Для решения этой проблемы было создано много пакетов программ, которые позволяют начать работать сразу после установки, такой набор называют WAMP. Примеры популярных пакетов: Open Server, Denwer, XAMPP.

3.5 Сведения о приложении PHPMyAdmin

- веб-приложение с открытым исходным кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. PHPMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.

На сегодняшний день PHPMyAdmin достаточно широко применяется. Это связано с тем, что разработчики интенсивно развивают свой продукт, учитывая все нововведения СУБД MySQL. Подавляющее большинство российских провайдеров используют это приложение в качестве панели управления для того, чтобы предоставить своим клиентам возможность администрирования выделенных им баз данных.

Приложение распространяется под лицензией GNU (General Public License) и поэтому многие другие разработчики интегрируют его в свои разработки, например XAMPP, Denwer, AppServ, Open Server.

Проект на данный момент времени локализован на более чем 62 языках.

3.6 Сведения об обработчике шаблонов Smarty

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

Например, нужно создать страницу, которая показывает газетную статью.

Название статьи, автор и сама статья - элементы, которые не содержат никакой информации о том, как они будут представлены. Их передают в Smarty из приложения.

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

Однажды программист захочет изменить способ хранения статьи, то есть внести изменения в логику приложения. Это изменение не вызовет изменений в шаблонах. Содержание будет все еще передаваться в шаблон таким же самым способом.

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

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

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

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

Если необходимо, чтобы в шаблоне вообще не должно быть логики, можно ограничиться использованием чистого текста и переменных.

Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости в медленной обработке файла шаблона для каждого запроса. Каждый шаблон может пользоваться всеми преимуществами таких компиляторов PHP и кэшируюших решений, как eAccelerator, ionCube, mmCache, Zend Accelerator и прочих.

Особенности Smarty:

·              Высокая скорость работы.

·              Он эффективен, так как обработчик PHP делает за него основную работу.

·              Никакой лишней обработки шаблонов, они компилируются только один раз.

·              Перекомпилируются только те шаблоны, которые изменились.

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

·              Настраиваемые {разделители} тэгов шаблона, то есть можно использовать {$foo}, {{$foo}}, <! - {$foo}-> и т.д.

·              Конструкции {if}. {elseif}. {else}. {/if} передаются обработчику PHP, так что синтаксис выражения {if…} может быть настолько простым или сложным, насколько вам угодно.

·              Допустимо неограниченное вложение секций, условий и т.д.

·              Существует возможность включения PHP-кода прямо в шаблон, однако обычно в этом нет необходимости (и это не рекомендуется), так как движок весьма гибок и расширяем.

·              Встроенный механизм кэширования.

·              Произвольные источники шаблонов.

·              Пользовательские функции кэширования.

·              Компонентная архитектура.

4. Проектирование и разработка программы

 

.1 Этапы проектирования


Проектирование программного обеспечения выполняется в несколько этапов, что соответствует основным этапам объектно-ориентированного анализа и проектирования программных систем:

         разработка спецификаций;

         проектирование и конструирование программы;

         доказательство правильности проекта (верификация);

         кодирование, т.е. описание программы на конкретном языке программирования;

         отладка и проверка правильности программы;

         доработка и улучшение;

         производство окончательного программного продукта.

Последовательный процесс объектно-ориентированного проектирования приведен на рисунке 2.

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


Рисунок 2 - Процесс объектно-ориентированного анализа и проектирования программы

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

         какими должны быть входные данные;

         какие данные являются корректными, а какие ошибочными;

         кто будет использовать разработанное программное обеспечение, и каким должен быть интерфейс;

         какие ошибки необходимо выявлять, и какие сообщения необходимо выдавать пользователю при наличии ошибок;

         какими должны быть выходные данные;

         какая документация на разрабатываемую программу должна быть подготовлена.

4.2 Описание логической структуры


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

При проведении первого этапа проектирования была построена UML диаграмма вариантов использования.

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

Для моделирования процесса выполнения операций в языке UML была построена диаграмма деятельности.

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

Для отражения последовательности передачи сообщений между объектами была построена диаграмма последовательностей действий.

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

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

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

Для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования была построена диаграмма классов (см. Приложение Д).

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

4.3 Проектирование базы данных


В ходе разработки СУЭД была создана база данных.

Для управления БД используется веб-приложение PHPMyAdmin, входящее в состав XAMPP.

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

На рисунке 3 отображен список созданных в БД таблиц.

Рисунок 3 - Список таблиц БД

В таблицу odm_access_log (рис. 4) заносятся id файла и документа, метка timestamp - это последовательность символов или закодированной информации, показывающей, когда произошло определённое событие, а в поле action перечисляются даты.

Рисунок 4 - Таблица odm_access_log

В таблице odm_admin (рис. 5) проверяется значение является ли пользователь администратором или нет.

Рисунок 5 - Таблица odm_admin

В таблицу odm_category (рис. 6) заносятся добавляемые пользователем категории.

Рисунок 6 - Таблица odm_categoty

В таблицу odm_data (рис. 7) заносится информация о документе.

Рисунок 7 - Таблица odm_data

В таблицу odm_ department (рис. 8) заносятся добавляемые пользователем отделы.

Рисунок 8 - Таблица odm_department

В таблице odm_ dept_perms (рис. 9) определяются права доступа для отдела.

Рисунок 9 - Таблица odm_dept_perms

В таблице odm_dept_perms (рис. 10) проверяется значение является ли пользователь рецензентом или нет.

Рисунок 10 - Таблица odm_reviewer

В таблице odm_dept_filetypes (рис. 11) содержатся типы файлов.

Рисунок 11 - Таблица odm_dept_filetypes

В таблицу odm_log (рис. 12) заносится информация об изменении документа.

Рисунок 12 - Таблица odm_log

В таблице odm_odmsys (рис. 13) содержится информация о версии БД.

Рисунок 13 - Таблица odm_odmsys

В таблице odm_rights (рис. 14) содержатся значения прав доступа.

Рисунок 14 - Таблица odm_rights

В таблице odm_settings (рис. 15) содержатся значения настроек СУЭД.

Рисунок 15 - Таблица odm_settings

В таблицу odm_udf (рис. 16) заносятся поля, создаваемые пользователем (например, заметки, комментарии и т.д.).

Рисунок 16 - Таблица odm_udf

В таблице odm_user (рис. 17) содержится информация о пользователях (логин и пароль и т.д.). В качестве ключа используется числовой идентификатор.

Рисунок 17 - Таблица odm_user

В таблице odm_user_perms (рис. 18) содержатся значения прав доступа пользователей.

Рисунок 18 - Таблица odm_user_perms

5. Установка и администрирование приложения

 

.1 Создание базы данных и пользователя для СУЭД


Перед созданием БД, должен быть запущен XAMPP (или аналогичный кроссплатформенный дистрибутив, например Open Server или Denwer). Это не требуется если у пользователя имеется зарегистрированное доменное имя и хостинг, поддерживающий PHP и MySQL.

Далее, чтобы создать базу данных, в адресной строке браузера нужно прописать: http://localhost/phpmyadmin. После этого в окне браузера откроется приложение PHPMyAdmin, где пользователь должен создать свою базу данных. Главное окно приложения представлено на рисунке 19

Рисунок 19 - Окно PHPMyAdmin

Для того чтобы создать базу данных, пользователь должен нажать ссылку «Создать БД» (рис. 20), которая находится в левой колонке приложения.



Рисунок 20 - Создание БД

Откроется окно, где пользователь должен дать имя БД, затем нажать кнопку «Создать» (рис. 21):

Рисунок 21 - Создание БД

Созданная БД появится в списке. Следующий шаг - добавление пользователя. Для этого, в панели приложения нужно кликнуть по кнопке «Привилегии» и создать пользователя (рис. 22). Ему нужно задать имя пользователя, пароль и тип хоста. В данном проекте используется локальный хост.

Рисунок 22 - Создание БД

Также нужно задать пользователю права доступа (рис. 5):

Рисунок 23 - Создание БД

После нажатия кнопки «Вперед» пользователь появится в списке (рис. 24):

Рисунок 24 - Создание БД

 

.2 Установка СУЭД


Перед установкой СУЭД также должен быть запущен XAMPP.

Чтобы начать автоматическую установку СУЭД нужно в папку с установленным XAMPP например C:\xampp\htdocs скопировать папку docmanager в папку htdocs, или использовать уже зарегистрированное доменное имя (хостинг).

Затем после запуска XAMPP в адресной строке браузера прописать: localhost/docmanager/. Откроется окно автоматической установки СУЭД.

Далее, нужно нажать кнопку «Создать файл конфигурации» (рис. 25).


Рисунок 25 - Установка СУЭД

Прочитав инструкцию нажать кнопку: «Начать!» (рис. 26).

Рисунок 26 - Установка СУЭД

Затем нужно ввести в поля информацию о базе данных и пароль администратора. Кроме того, можно изменить путь к папке. В примере используется C:/xampp/odm_data/document_repository. После заполнения всей информации нужно нажать кнопку «Отправить» (рис. 27).

Рисунок 27 - Установка СУЭД

Должно появится окно об успешном завершении установки (рис. 28):

Рисунок 28 - Установка СУЭД

Если программа установки не может создать config.php, появится следующее сообщение (рис. 29):


Рисунок 29 - Установка СУЭД

В этом случае можно создать config.php вручную. Для этого нужно открыть папку C:\xampp\htdocs\docmanager и создать текстовый файл, в который нужно скопировать следующий код:

Листинг 1. Конфигурационный файл БД

<? php

/*

config.php - конфигурационный файл БД

*/

// Eliminate multiple inclusion of config.php(! defined('config'))

{('config', 'true', false);

// config.php - useful variables/functions

// ** MySQL settings - You can get this info from your web host ** //

/** The name of the database for [DocManager */('DB_NAME', 'database_name_here');

/** MySQL database username */('DB_USER', 'username_here');

/** MySQL database password */('DB_PASS', 'password_here');

/** MySQL hostname */

/* MySQL server. Он также может включать номер порта e.g. «hostname:port» or a path to a

* local socket e.g.»:/path/to/socket» for the localhost. */

define ('DB_HOST', 'localhost');

/**

* Префикс(приставка) для добавления к каждому имени таблицы в базе данных

(напр. если префикс odm_(по умолчанию), таблица может быть

* названа «odm_users», «odm_data» и т.д.

* @DEFAULT 'odm_'

* @ARG String

*/

$GLOBALS['CONFIG'] ['db_prefix'] = 'odm_';

/*** DO NOT EDIT BELOW THIS LINE ***/

/** Absolute path to the DocManager directory. */(! defined('ABSPATH'))('ABSPATH', dirname (__FILE__). '/');

}

Затем нужно сохранить файл в расширении php. Для этого лучше использовать Notepad++. После создания файла, в окне браузера нажмите кнопку «Proceed to the installer».

После нажатия кнопки «Запуск установки» появится следующее окно (рис. 30):

Рисунок 30 - Установка СУЭД

Затем нужно нажать на ссылку «Новая установка». Появится окно подтверждения действий (рис. 31). Следует быть внимательным, потому что новая установка уничтожит все данные

Рисунок 31 - Установка СУЭД

После нажатия кнопки «ОК» появится окно, где отображается информация о состоянии установки, а также имя пользователя и пароль (рис. 32).

Рисунок 32 - Установка СУЭД

Для окончания установки нужно кликнуть по ссылке, «ЗДЕСЬ». Откроется окно с предложением ввести имя пользователя и пароль, которые были указаны при создании файла config.php.

Далее появится окно входа в систему (рис. 33), где нужно ввести полученные имя пользователя и пароль.

Рисунок 33 - Установка СУЭД

После входа в систему появится окно настройки сайта (рис. 34). Перед тем как применить выбранные настройки, необходимо удалить папку «install» (выведется соответствующее сообщение, выделенное красным шрифтом).

Рисунок 34 - Установка СУЭД

Если пользователь вошел в систему как администратор, то он может настраивать различные параметры, такие как название сайта, максимальный размер файлов, каталог хранения данных и т.д. После определения всех параметров, нужно нажать кнопку «Сохранить».

Для ручной установки требуется:

. Распаковать файлы в любое место на веб-сервере

. Создать базу данных MySQL и пользователя (с паролем)

. Создать каталог для файлов, которые будут храниться в доступном месте на веб-сервере, но не доступном при просмотре. Права доступа к этой папке должны позволить серверу записывать данные, например: $>mkdir /usr/local/docmanager/data

. Скопировать файл conig-sample.php в config.php

. Задать в config.php параметры базы данных

. Изменить database.sql файл. Задать значения, установленные в таблице odm_settings, специально для этих двух записей:(прописать путь хранения файлов)_url (прописать URL, например docmanager)

. Импортировать database.sql файл в базу данных

. В адресной строке браузера прописать: localhost/docmanager/ и войти в систему как администратор (без пароля).


6. Руководство пользователя

 

.1 Раздел «Админ»


Это раздел администрирования, где вы можете добавлять, удалять и обновлять пользователей, отдел, категорию и т.д. Чтобы перейти к нему нужно сверху кликнуть по вкладке «Админ» (рис. 35).

Кроме того, в данном разделе можно настроить права доступа пользователей и отделов к определенным файлам.

Рисунок 35 - Структура СУЭД

6.2 Создание отделов


Для удобства хранения и поиска документов, в системе можно создавать отделы, названия которых соответствуют отделам предприятия. Чтобы создать отдел, в разделе «Админ», нажмите кнопку «Добавить». В открывшемся окне нужно дать название отделу и нажать кнопку «Добавить отдел» (рис. 36). Можно в любое время просмотреть все существующие отделы, изменить имя отдела, добавить или удалить отдел.

Рисунок 36 - Создание отдела

6.3 Создание категорий документов

Категорией документа можно назначить письмо, отчет, анализ, презентация, видео, и т.д. Для создания категории, нужно нажать кнопку «Админ», затем кнопку «Добавить» в разделе «Категория». Далее дав категории документа название, нужно нажать кнопку «Добавить категорию» (рис. 37). Механизмы обновления, добавления, удаления и отображения идентичны разделу «Отдел».

Рисунок 37 - Создание категории документов

6.4 Добавление пользователей


Чтобы добавить пользователей непосредственно в приложении, нужно нажать кнопку «Добавить» в разделе «Пользователи» (для этого нужно быть администратором). Также необходимо назначить имя пользователя и пароль (рис. 38).

Рисунок 38 - Добавление пользователей

6.5 Раздел «Добавить документ»

Это раздел, в котором пользователи могут добавлять, удалять и обновлять документы.

Пример добавления документа в хранилище. Для перехода к разделу нужно сверху кликнуть по вкладке «Добавить документ». Затем требуется указать путь к документу. Назначить владельца, отдел и выбрать категорию, в которой будет находится документ и т.д. Далее, по мере необходимости назначить права доступа к документу. После этого, нажать кнопку «Отправить», чтобы загрузить документ в хранилище (рис. 39).

Рисунок 39 - Добавление документа




Рисунок 40 - Добавление документа

Теперь документ доступен для ознакомления. Администратор может просматривать и проверять документы.

Документ, загруженный в хранилище, ожидает проверки и подтверждения владельцем документа (в меню появится соответствующая ссылка).

Ссылка приведет пользователя на страницу, где владелец может нажать кнопку «Авторизовать», для подтверждения, или «Отклонить».

Чтобы авторизовать документы, необходимо войти как администратор. Для этого нужно кликнуть по вкладке «Админ» и нажать ссылку «Неавторизованные документы» (рис. 41).

Рисунок 41 - Авторизация документа

Откроется следующее окно (рис. 42):

Рисунок 42 - Авторизация документа

Затем надо выбрать документ, и нажать кнопку «Authorize», чтобы утвердить документ (рис. 43).

Рисунок 43 - Авторизация документа


Теперь авторизованные документы будут отображаться сна главной странице (рис. 44).

Рисунок 44 - Авторизация документа

6.6 Редактирование документа


Чтобы редактировать утвержденный документ, нажмите нужно кликнуть по его названию в списке, затем в открывшемся окне нажать кнопку «Изменить».

Документу могут быть назначены владелец (список извлекается из базы данных пользователя приложения), отдел и категория. Также можно назначить права доступа к этому документу. Есть возможность назначать права доступа для отделов и для пользователей. По желанию можно добавить комментарий и описание документа. По умолчанию, владелец документа имеет все права доступа. После заполнения всех полей нужно нажать кнопку «Сохранить» (рис. 45)


Рисунок 45 - Редактирование документа

6.7 Поиск документов


Нужные документы могут быть найдены с помощью раздела Поиск (рис. 46). Вы можете производить поиск, используя все поля конфигурации: должность, отдел, автора, дату создания.

Рисунок 46 - Поиск документа

На рисунке 47 показан результат поиска.

Рисунок 47 - Результат поиска

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

6.8 Просмотр изменений документов


Все изменения документов отслеживаются и записываются. Можно просмотреть их в разделе Админ -> Отчеты -> Журналы доступа (рис. 48), где отображается, как и когда изменялся документ.

Если пользователь нажал кнопку «Проверка» уже авторизованного документа, то он появляется в списке незарегистрированных документов (подсвечено красным) и пользователю будет предложено еще раз авторизовать документ (раздел «Проверка») приложения.

Рисунок 48 - Журнал доступа

Заключение

В ходе выполнения выпускной квалификационной работы бакалавра была разработана система управления электронными документами. Были получены навыки в разработке веб-приложений и в применении web-технологий при реализации системы клиент-сервер. При выполнении работы применялись такие средства web-разработки как базы данных MySQL, язык программирования PHP, HTML, CSS и т.д.

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

Список использованных источников


1. Управление документами и документооборотом. Системы управления электронными документами в современной организации. URL: http://www.directum.ru/514280.aspx (дата обращения: 15.05.2015).

. Системы электронного управления документами: обзор, классификация и оценка возврата от внедрения. URL: http://iteam.ru/publications/it/section_64/article_2712 (дата обращения: 16.05.2015).

. Концепция построения системы управления документами.

URL: http://citforum.ru/seminars/cis99/vest32.shtml

4. Веб-приложение.

URL: https://ru.wikipedia.org/ (дата обращения: 02.06.2015).

. Программирование с использованием PHP и MySQL в разработке Web-приложений: Часть 1. PHP - основы применения при построении Web-сайтов. URL: http://www.ibm.com/developerworks/ru/library/l-php_mysql_1/ (дата обращения: 20.05.2015).

6. Лаура Томсон, Люк Веллинг. Руководство разработчика Web-сайтов. Издательство: ДиаСофтЮП, 2003 г.

7. Руководство по Smarty. URL: http://www.smarty.net/docsv2/ru/ (дата обращения: 10.05.2015).

8. Котеров Д.В., Костарев А.Ф. PHP в подлиннике. Издательство: БХВ-Петербург, 2006 г.

. Джон Коггзолл. PHP 5. Полное руководство. Издательство: Диалектика, 2006 г.


Приложение

Приложение 1. Подключение к базе данных

<? php

/*init.php - для инициализации переменных

* Если файл config.php не найден, то выведется

* сообщение, в котором будет предложено создать

* файл config.php.

* Файл config.php будет искаться в корневомм каталоге DocManager

*/

// Подключение к базе данных

$dsn = «mysql:host=». DB_HOST.»; dbname=». DB_NAME.»; charset=utf8»;{

$pdo = new PDO ($dsn, DB_USER, DB_PASS);

} catch (PDOException $e) {«Error!:». $e->getMessage(). «<br/>»;();

}

$pdo->setAttribute (PDO:ATTR_ERRMODE, PDO:ERRMODE_EXCEPTION);

$GLOBALS['pdo'] = $pdo;

_start();

// Загрузка класса Settings_once ('Settings_class.php');

$settings = new Settings($pdo);

$settings->load();

// Общие функции_once ('functions.php');

// Загрузка списка разрешенных типов файлов_once ('FileTypes_class.php');

$filetypes = new FileTypes_class($pdo);

$filetypes->load();

// Установка директории прверки. (relative to $dataDir)

$CONFIG['revisionDir'] = $GLOBALS['CONFIG'] ['dataDir']. 'revisionDir/';

// Установка директории прверки. (relative to $dataDir)

$CONFIG['archiveDir'] = $GLOBALS['CONFIG'] ['dataDir']. 'archiveDir/';

$_GET = sanitizeme($_GET);

$_REQUEST = sanitizeme($_REQUEST);

$_POST = sanitizeme($_POST);

$_SERVER = sanitizeme($_SERVER);

$_FILES = sanitizeme($_FILES);

Приложение 2. Создание базы данных


# MySQL dump of DocManager

# Table structure for table 'odm_access_log'TABLE `odm_access_log` (

`file_id` int(11) NOT NULL,

`user_id` int(11) NOT NULL,

`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

`action` enum ('A', 'B', 'C', 'V', 'D', 'M', 'X', 'I', 'O', 'Y', 'R') NOT NULL

) ENGINE = MYISAM;

# Table structure for table 'odm_admin'TABLE odm_admin (int(11) unsigned default NULL,tinyint(4) default NULL

) ENGINE = MYISAM;

# Dumping data for table 'odm_admin'INTO odm_admin VALUES (1,1);

# Table structure for table 'odm_category'TABLE odm_category (int(11) unsigned NOT NULL auto_increment,varchar(255) NOT NULL default «,KEY (id)

) ENGINE = MYISAM;

# Dumping data for table 'odm_category'INTO odm_category VALUES (NULL, 'SOP');INTO odm_category VALUES (NULL, 'Training Manual');INTO odm_category VALUES (NULL, 'Letter');INTO odm_category VALUES (NULL, 'Presentation');

# Table structure for table 'odm_data'TABLE odm_data (int(11) unsigned NOT NULL auto_increment,int(11) unsigned NOT NULL default '0',int(11) unsigned default NULL,varchar(255) NOT NULL default «,datetime NOT NULL default '0000-00-00 00:00:00',varchar(255) default NULL,varchar(255) default «,smallint(6) default NULL,smallint(6) unsigned default NULL,_rights tinyint(4) default NULL,tinyint(4) default NULL,int(11) unsigned default NULL,_comments varchar(255) default NULL,KEY (id),data_idx (id, owner),id (id),id_2 (id),publishable (publishable),description (description)

) ENGINE = MYISAM;

# Dumping data for table 'odm_data'

# Table structure for table 'odm_department'TABLE odm_department (int(11) unsigned NOT NULL auto_increment,varchar(255) NOT NULL default «,KEY (id)

) ENGINE = MYISAM;

# Dumping data for table 'odm_department'INTO odm_department VALUES (NULL, 'Information Systems');

# Table structure for table 'odm_dept_perms'TABLE odm_dept_perms (int(11) unsigned default NULL,_id int(11) unsigned default NULL,tinyint(4) NOT NULL default '0',rights (rights),dept_id (dept_id),fid (fid)

) ENGINE = MYISAM;

# Dumping data for table 'odm_dept_perms'

# Table structure for table 'odm_dept_reviewer'TABLE odm_dept_reviewer (_id int(11) unsigned default NULL,_id int(11) unsigned default NULL

) ENGINE = MYISAM;

# Dumping data for table 'odm_dept_reviewer'INTO odm_dept_reviewer VALUES (1,1);

# Table structure for table 'odm_log'TABLE odm_log (int(11) unsigned NOT NULL default '0',_on datetime NOT NULL default '0000-00-00 00:00:00',_by varchar(25) default NULL,text,varchar(255) default NULL,id (id),modified_on (modified_on)

) ENGINE = MYISAM;

# Dumping data for table 'odm_log'

# Table structure for table 'odm_rights'TABLE odm_rights (tinyint(4) default NULL,varchar(255) default NULL

) ENGINE = MYISAM;

# Dumping data for table 'odm_rights'INTO odm_rights VALUES (0,'none');INTO odm_rights VALUES (1,'view');INTO odm_rights VALUES (-1,'forbidden');INTO odm_rights VALUES (2,'read');INTO odm_rights VALUES (3,'write');INTO odm_rights VALUES (4,'admin');

# Table structure for table 'odm_user'TABLE odm_user (int(11) unsigned NOT NULL auto_increment,varchar(25) NOT NULL default «,varchar(50) NOT NULL default «,int(11) unsigned default NULL,varchar(20) default NULL,varchar(50) default NULL,_name varchar(255) default NULL,_name varchar(255) default NULL,_reset_code char(32) default NULL,_add tinyint(1) NULL DEFAULT 1,_checkin tinyint(1) NULL DEFAULT 1,KEY (id)

) ENGINE = MYISAM;

# Dumping data for table 'odm_user'INTO odm_user VALUES (NULL, 'admin', md5 ('admin'), 1,'5555551212', 'admin@mailinator.com', 'User', 'Admin', '', 1, 1);

# Table structure for table 'odm_user_perms'TABLE odm_user_perms (int(11) unsigned default NULL,int(11) unsigned NOT NULL default '0',tinyint(4) NOT NULL default '0',user_perms_idx (fid, uid, rights),fid (fid),uid (uid),rights (rights)

) ENGINE = MYISAM;

# Dumping data for table 'odm_user_perms'

# New User Defined Fields Table

#

# field_type describes what type of UDF this is. At the momment

# the valid values are:

#

# 1 = Drop down style list

# 2 = Radio Buttons

#

# table_name names the database table where the allow values are listed

#

# display_name is the label shown to the user

TABLE odm_udf

(int(11) auto_increment unique,_name varchar(50),_name varchar(16),_type int

) ENGINE = MYISAM;TABLE IF NOT EXISTS odm_odmsys

(int(11) auto_increment unique,_name varchar(16),_value varchar(255)

) ENGINE = MYISAM;INTO odm_odmsys VALUES (NULL, 'version', '1.3.0');TABLE IF NOT EXISTS `odm_settings` (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(255) NOT NULL,

`value` VARCHAR(255) NOT NULL,

`description` VARCHAR(255) NOT NULL,

`validation` VARCHAR(255) NOT NULL,KEY (`id`),(`name`)

) ENGINE = MYISAM;INTO `odm_settings` VALUES (NULL, 'title', 'Хранилище документов', 'Это заголовок вкладки в окне браузера', 'maxsize=255');INTO `odm_settings` VALUES (NULL, 'authen', 'mysql', 'Проверка подлинности MySQL', «);INTO `odm_settings` VALUES (NULL, 'site_mail', 'root@localhost', 'Адрес электронной почты администратора этого сайта', 'email|maxsize=255|req');

INSERT INTO `odm_settings` VALUES (NULL, 'root_id', '1', 'Эта переменная устанавливает пользователю неограниченные права доступа. Он будет иметь доступ ко всем файлам и иметь права на все операции', 'num|req');

INSERT INTO `odm_settings` VALUES (NULL, 'dataDir', '/var/www/document_repository/', 'Расположение хранилища файлов. В идеале оно должно быть вне корневой папки веб-сервера. Убедитесь, что сервер имеет доступ на чтение / запись файлов в этой папке! (Examples: Linux - /var/www/document_repository/: Windows - c:/document_repository/', 'maxsize=255');INTO `odm_settings` VALUES (NULL, 'max_filesize', '5000000', 'Установите максимальный размер загружаемых файлов', 'num|maxsize=255');

INSERT INTO `odm_settings` VALUES (NULL, 'revision_expiration', '90', 'Эта переменная устанавливает период (количество дней), за который документ должен быть пересмотрен', 'num|maxsize=255');

INSERT INTO `odm_settings` VALUES (NULL, 'file_expired_action', '1', 'Условие истечения срока файла. (1) Удаление из списка файлов, пока не продлен срок; (2) Показать в списке файлов, но не проверять; (3) Оповестить проверяющего(email); (4) Ничего не делать', 'num');

INSERT INTO `odm_settings` VALUES (NULL, 'authorization', 'True', 'True/False. Если значение True, каждый документ должен быть рассмотрен администратором, прежде чем его увидят остальные пользователи. Если значение False, то все добавленные файлы заново проверяются и сразу будут в списке', 'bool');

INSERT INTO `odm_settings` VALUES (NULL, 'allow_signup', 'False', 'Разрешить регистрацию?', 'bool');INTO `odm_settings` VALUES (NULL, 'allow_password_reset', 'False', 'Разрешить пользователям сброс их забытого пароля?', 'bool');INTO `odm_settings` VALUES (NULL, 'theme', 'tweeter', 'Тема оформления', «);INTO `odm_settings` VALUES (NULL, 'language', 'russian', 'Язык интерфейса', 'alpha|req');INTO `odm_settings` VALUES (NULL, 'base_url', 'http://localhost/docmanager', 'URL сайта. Не обязательно использовать символы \ "/\" ', 'url');INTO `odm_settings` VALUES (NULL, 'max_query', '500', 'Установить максимальное количество строк списка файлов', 'num');

CREATE TABLE IF NOT EXISTS `odm_filetypes` (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`type` VARCHAR(255) NOT NULL,

`active` TINYINT(4) NOT NULL,KEY (`id`)

) ENGINE = MYISAM;INTO `odm_filetypes` VALUES (NULL, 'image/gif', 1);INTO `odm_filetypes` VALUES (NULL, 'text/html', 1);INTO `odm_filetypes` VALUES (NULL, 'text/plain', 1);INTO `odm_filetypes` VALUES (NULL, 'application/pdf', 1);INTO `odm_filetypes` VALUES (NULL, 'image/pdf', 1);INTO `odm_filetypes` VALUES (NULL, 'application/x-pdf', 1);INTO `odm_filetypes` VALUES (NULL, 'application/msword', 1);INTO `odm_filetypes` VALUES (NULL, 'image/jpeg', 1);INTO `odm_filetypes` VALUES (NULL, 'image/pjpeg', 1);INTO `odm_filetypes` VALUES (NULL, 'image/png', 1);INTO `odm_filetypes` VALUES (NULL, 'application/msexcel', 1);INTO `odm_filetypes` VALUES (NULL, 'application/msaccess', 1);INTO `odm_filetypes` VALUES (NULL, 'text/richtxt', 1);INTO `odm_filetypes` VALUES (NULL, 'application/mspowerpoint', 1);INTO `odm_filetypes` VALUES (NULL, 'application/octet-stream', 1);INTO `odm_filetypes` VALUES (NULL, 'application/x-zip-compressed', 1);INTO `odm_filetypes` VALUES (NULL, 'application/x-zip', 1);INTO `odm_filetypes` VALUES (NULL, 'application/zip', 1);INTO `odm_filetypes` VALUES (NULL, 'image/tiff', 1);INTO `odm_filetypes` VALUES (NUll, 'image/tif', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.ms-powerpoint', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.ms-excel', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.chart', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.chart-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.formula', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.formula-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.graphics', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.graphics-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.image', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.image-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.presentation', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.presentation-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.spreadsheet', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.spreadsheet-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.text', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.text-master', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.text-template', 1);INTO `odm_filetypes` VALUES (NULL, 'application/vnd.oasis.opendocument.text-web', 1);INTO `odm_filetypes` VALUES (NULL, 'text/csv', 1);INTO `odm_filetypes` VALUES (NULL, 'audio/mpeg', 0);INTO `odm_filetypes` VALUES (NULL, 'image/x-dwg', 1);INTO `odm_filetypes` VALUES (NULL, 'image/x-dfx', 1);INTO `odm_filetypes` VALUES (NULL, 'drawing/x-dwf', 1);INTO `odm_filetypes` VALUES (NULL, 'image/svg', 1);

Приложение 3. Информация о пользователях


<? php

//User_class.php - информация о пользователях

if (! defined('User_class'))

{('User_class', 'true', false);

User extends databaseData

{$root_id;$id;$username;$first_name;$last_name;$email;$phone;$department;$pw_reset_code;$can_add;$can_checkin;

* @param int $id

* @param PDO $connectionUser ($id, PDO $connection)

{

$this->root_id = $GLOBALS['CONFIG'] ['root_id'];

$this->field_name = 'username';

$this->field_id = 'id';

$this->tablename = $GLOBALS['CONFIG'] ['db_prefix']. $this->TABLE_USER;

$this->result_limit = 1; //there is only 1 user with a certain user_name or user_id

:setTableName ($this->TABLE_USER);:databaseData ($id, $connection);

$query = »,,,,,_name,_name,_reset_code,_add,_checkin

{$GLOBALS['CONFIG'] ['db_prefix']} user=:id»;

$stmt = $connection->prepare($query);

$stmt->execute (array(':id' => $this->id));

$result = $stmt->fetch();

list (

$this->id,

$this->username,

$this->department,

$this->phone,

$this->email,

$this->last_name,

$this->first_name,

$this->pw_reset_code,

$this->can_add,

$this->can_checkin

) = $result;

}

/**

* Return department name for current user

* @return string

*/getDeptName()

{

$query = ».name

{$GLOBALS['CONFIG'] ['db_prefix']} department d,

{$GLOBALS['CONFIG'] ['db_prefix']} user u.id =:id.department = d.id»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));

$result = $stmt->fetchColumn();

$result;

}

/*

* Return department ID for current user

* @return string

*/getDeptId()

{$this->department;

}

/*

* Return an array of publishable documents

* @return array

* @param object $publishable

*/getPublishedData($publishable)

{

$data_published = array();

$index = 0;

$query = ».id

{$GLOBALS['CONFIG'] ['db_prefix']} data d,

{$GLOBALS['CONFIG'] ['db_prefix']} user u.owner =:id.id = d.owner.publishable =:publishable»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':publishable' => $publishable,

':id' => $this->id

));

$result = $stmt->fetchAll();

($result as $row) {

$data_published[$index] = $row;

$index++;

}$data_published;

}

/**

* Check whether user from object has Admin rights

* @return Boolean

*/isAdmin()

{($this->isRoot())

{true;

}

$query = »

{$GLOBALS['CONFIG'] ['db_prefix']} admin=:id

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));

$result = $stmt->fetchColumn();

($stmt->rowCount()!=1)

{false;

}

$result;

}

/**

* Check whether user from object is root

* @return bool

*/isRoot()

{($this->root_id == $this->getId());

}

/**

* @return boolean

*/canAdd()

{($this->isAdmin()) {true;

}($this->can_add) {true;

}false;

}

/**

* @return boolean

*/canCheckIn()

{($this->isAdmin()) {true;

}($this->can_checkin) {true;

}false;

}

/**

* @return string

*/getPassword()

{

$query = »

$this->tablename=:id

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(':id' => $this->id));

$result = $stmt->fetchColumn();

($stmt->rowCount()!=1)

{('Location:'. $GLOBALS['CONFIG'] ['base_url']. 'error.php? ec=14');;

}

$result;

}

/**

* @param string $non_encrypted_password

* @return bool

*/changePassword ($non_encrypted_password)

{

$query = »

$this->tablename= md5 (:non_encrypted_password)=:id

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':non_encrypted_password'=> $non_encrypted_password,

':id' => $this->id

));true;

}

/**

* @param string $non_encrypted_password

* @return bool

*/validatePassword ($non_encrypted_password)

{

$query = »

$this->tablename=:id= md5 (:non_encrypted_password)

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':non_encrypted_password' => $non_encrypted_password,

':id' => $this->id

));($stmt->rowCount() == 1) {true;

} else {

// Check the old password() style user password

$query = »

$this->tablename=:id= password (:non_encrypted_password)

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':non_encrypted_password'=> $non_encrypted_password,

':id' => $this->id

));($stmt->rowCount() == 1) {true;

}

}false;

}

/**

* @param string $new_name

* @return bool

*/changeName ($new_name)

{

$query = »

$this->tablename=:new_name=:id

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':new_name' => $new_name,

':id' => $this->id

));true;

}

/**

* Determine if the current user is a reviewer or not

* @return boolean

*/isReviewer()

{

// If they are an admin, they can review($this->isAdmin()) {true;

}

// Lets see if this non-admin user has a department they can review for, if so, they are a reviewer

$query = »_id

{$GLOBALS['CONFIG'] ['db_prefix']} dept_reviewer_id =:id

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));($stmt->rowCount() > 0) {true;

} else {false;

}

}

/**

* Determine if the current user is a reviewer for a specific ID

* @param int $file_id

* @return boolean

*/isReviewerForFile ($file_id)

{

$query = «SELECT.id

{$GLOBALS['CONFIG'] ['db_prefix']} dept_reviewer as dr

.dept_id = d.department AND.user_id =:user_id AND.department = dr.dept_id AND.id =:file_id

«;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':user_id' => $this->id,

':file_id' => $file_id

));

$num_rows = $stmt->rowCount();($num_rows < 1)

{false;

}true;

}

/**

* this functions assume that you are an admin thus allowing you to review all departments

* @return array

*/getAllRevieweeIds()

{($this->isAdmin())

{

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']}$this->TABLE_DATA WHERE publishable = 0»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array());

$result = $stmt->fetchAll();

$file_data = array();

$index = 0;($result as $row) {

$file_data[$index] = $row[0];

$index++;

}

$file_data;

}

}

/**

* getRevieweeIds - Return an array of files that need reviewing under this person

* @return array

*/getRevieweeIds()

{($this->isReviewer())

{

// Which departments can this user review?

$query = «SELECT dept_id FROM {$GLOBALS['CONFIG'] ['db_prefix']}$this->TABLE_DEPT_REVIEWER WHERE user_id =:id»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));

$result = $stmt->fetchAll();

$num_depts = $stmt->rowCount();

$index = 0;

// Build the query

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']} data WHERE (»;($result as $row) {

$dept = $row ['dept_id'];($index!= $num_depts -1)

{

$query = $query. «department =:dept OR»;

}

(

$query = $query. «department =:dept)»;

}

$index++;

}

$query = $query. «AND publishable = 0»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(':dept' => $dept));

$result = $stmt->fetchAll();

$file_data = array();

$num_files = $stmt->rowCount();

($index = 0; $index< $num_files; $index++)

{

$fid = $result[$index] ['id'];

$file_data[$index] = $fid;

}$file_data;

}

}

/**

* @return array

*/getAllRejectedFileIds()

{

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']}$this->TABLE_DATA WHERE publishable = '-1'»;

$stmt = $this->connection->prepare($query);

$stmt->execute();

$result = $stmt->fetchAll();

$file_data = array();

$num_files = $stmt->rowCount();

($index = 0; $index< $num_files; $index++)

{($fid) = $result[$index];

$file_data[$index] = $fid;

}$file_data;

}

/**

* @return array

*/getRejectedFileIds()

{

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']} data WHERE publishable = '-1' and owner =:id»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));

$result = $stmt->fetchAll();

$file_data = array();

$num_files = $stmt->rowCount();

($index = 0; $index< $num_files; $index++)

{($fid) = $result[$index];

$file_data[$index] = $fid;

}$file_data;

}

/**

* @return array

*/getExpiredFileIds()

{

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']} data WHERE status = -1 AND owner =:id»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));

$result = $stmt->fetchAll();

$len = $stmt->rowCount();

$file_data = array();

($index = 0; $index< $len; $index++)

{($fid) = $result[$index];

$file_data[$index] = $fid;

}$file_data;

}

/**

* @return int

*/getNumExpiredFiles()

{

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']} data WHERE status =- 1 AND owner =:id»;

$stmt = $this->connection->prepare($query);

$stmt->execute (array(

':id' => $this->id

));$stmt->rowCount();

}

/**

* @return mixed

*/getEmailAddress()

{$this->email;

}

/**

* @return mixed

*/getPhoneNumber()

{$this->phone;

}

/**

* /Return full name array where array[0]=firstname and array[1]=lastname

* @return mixed

*/getFullName()

{

$full_name[0] = $this->first_name;

$full_name[1] = $this->last_name;

$full_name;

}

/**

* Return username of current user

* @return mixed

*/getUserName()

{$this->username;

}

/**

* Return list of checked out files to root

* @return array

*/getCheckedOutFiles()

{($this->isRoot())

{

$query = «SELECT id FROM {$GLOBALS['CONFIG'] ['db_prefix']} data WHERE status > 0»;

$stmt = $this->connection->prepare($query);

$stmt->execute();

$result = $stmt->fetchAll();

$len = $stmt->rowCount();

$file_data = array();($index = 0; $index < $len; $index++)

{($fid) = $result[$index];

$file_data[$index] = $fid;

}$file_data;

}

}

/**

* getAllUsers - Returns an array of all the active users

* @param $pdo

* @return array

*/static function getAllUsers($pdo)

{

$query = «SELECT id, last_name, first_name FROM {$GLOBALS['CONFIG'] ['db_prefix']} user ORDER BY last_name»;

$stmt = $pdo->prepare($query);

$stmt->execute();

$result = $stmt->fetchAll();($result as $row) {

$userListArray[] = $row;

}$userListArray;

}

}

}

Похожие работы на - Программное обеспечение автоматизированной системы управления документами предприятия

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!