Дипломный проект “АВТОМАТИЗИРОВАННАЯ СИСТЕМА УЧЕТА И РАСПРЕДЕЛЕНИЯ ЭЛЕКТРОННОЙ КОРРЕСПОНДЕНЦИИ”
1 РЕАЛИЗАЦИЯ СИСТЕМЫ
3.1 СТРУКТУРА СИСТЕМЫ
Программный комплекс предназначен для автоматизации процесса управления корреспонденцией службы технической поддержки.
Полная структура системы, разработанная в пределах проекта, представлена на рисунке 3.1.
Рисунок 3.1 – Структура системы разбора корреспонденции.
На одном из серверов предприятия устанавливается серверная часть системы.
Серверная часть включает в себя:
• Службу, периодически обрабатывающую письма, приходящие на почтовый ящик;
• Ящик службы поддержки;
• Сервер баз данных для хранения данных системы;
• Сервер web-консоли менеджера
• Почтовый сервер (опционально).
3.2 ИНФОРМАЦИОННО-ЛОГИЧЕСКАЯ МОДЕЛЬ
Перед построением информационно-логической модели проведем ее обзор и рассмотрим некоторые аспекты реляционного подхода.
Объектом называется предмет, который может быть четко идентифицирован.
При этом объекты подразделяются на правильные объекты и слабые объекты.
Слабым объектом называется объект, который находится в зависимости от некоторого другого объекта, т.е. он не может существовать, если не существует этот другой объект.
Правильным объектом называется объект, который не является слабым.
Каждый объект имеет, по крайней мере, один тип, однако у определенного объекта может быть несколько подтипов.
Объекты (и отношения) обладают некоторыми свойствами (атрибутами). Все объекты одного типа обладают некоторыми общими свойствами. Значения свойств каждого типа извлекаются из соответствующего множества значений, которое в реляционных терминах называется доменом (столбцом). Ниже перечислены некоторые виды свойств.
• Простое или составное свойство;
• Ключевое свойство, уникальное в некотором контексте;
• Однозначное или многозначное свойство;
• Отсутствующее свойство (null-значения);
• Базовое или производное свойство.
Отношение – это ассоциация объектов. Объекты, включенные в отношение, называются участниками этого отношения, а количество участников отношения называется степенью этого отношения.
Отношения в информационно-логической модели могут иметь несколько типов:
• Один-к-одному (1:1) – в таком отношении каждому экземпляру информационного объекта А соответствует не более одного экземпляра информационного объекта В;
• Один-ко-многим (1:М или М:1) – каждому экземпляру информационного объекта А соответствует 0, 1 или более экземпляров объекта В, при этом каждый экземпляр объекта В связан не более чем с одним экземпляром объекта А;
• Многие-ко-многим (М:М) – каждому экземпляру объекта А соответствует 0, 1 или более экземпляров объекта В, и наоборот.
Информационно-логическая модель предметной области является обобщенным неформальным описанием создаваемой базы данных. Это неформальное описание служит основой при создании формальной реляционной модели.
Нормализация отношения – это разбиение отношения на два или более, обладающих лучшими свойствами при включении, изменении и удалении данных.
Нормализация позволяет устранить дублирование и обеспечить непротиворечивость хранимых данных. Е. Кодд определил три нормальные формы (1НФ, 2НФ, 3НФ) и представил процедуру нормализации, с помощью которой отношение заданной формы может быть преобразовано во множество отношений в другой, более желательной, нормальной форме [4].
Отношение находится в первой нормальной форме тогда и только тогда, когда все используемые домены (столбцы) содержат только атомарные значения.
Теория нормализации основывается на наличии той или иной зависимости между атрибутами отношения.
Определены два вида таких зависимостей: функциональные и многозначные.
Функциональная зависимость. Атрибут В отношения функционально зависит от атрибута А того же отношения в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений атрибута А обязательно существует только одно из различных значений атрибута В.
Полная функциональная зависимость. Атрибут В находится в полной функциональной зависимости от составного атрибута А, если он функционально зависит от А и не зависит функционально от любого подмножества атрибута А.
Многозначная зависимость. Атрибут А многозначно определяет атрибут В того же отношения, если для каждого значения атрибута А существует хорошо определенное множество соответствующих значений В.
Отношение находится во второй нормальной форме (2НФ), если оно удовлетворяет определению 1НФ и все его атрибуты, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Отношение находится в третьей нормальной форме (3НФ), если оно удовлетворяет определению 2НФ и ни одно из его неключевых атрибутов не зависит функционально от любого другого неключевого атрибута.
Опишем информационные объекты для проектируемой системы.
Для реализации базы данных системы были выделены следующие объекты:
1 Цепочка писем/заявка (chain):
1.1 Идентификатор (id), ключевой атрибут;
1.2 Тема (subject);
1.3 E-mail клиента (client);
1.4 Идентификатор ответственного сотрудника поддержки (supporter);
1.5 Время создания цепочки (time);
1.6 Флаг окончания работ по заявке (isFinished).
2 Письмо (mail):
2.1 Идентификатор (id), ключевой атрибут;
2.2 Идентификатор цепочки (chain_id);
2.3 Тема (subject);
2.4 Тело MIME-сообщения (body);
2.5 Текст сообщения (text);
2.6 Флаг «ответ из поддержки» (isReply);
2.7 Флаг «пересылка произведена» (isSent).
3 Сотрудник поддержки (personal):
3.1 Идентификатор (id), ключевой атрибут;
3.2 Имя (name);
3.3 Адрес e-mail (email).
Данные объекты используются при работе всей системы во всех процессах.
Структура отношений в системе показана на рисунке А.1 (Приложение А) системы.
3.3 ОСНОВНЫЕ ПРОГРАММНЫЕ МОДУЛИ
Программный комплекс состоит из двух основных программных модулей: службы обработки сообщений и Web – интерфейса управления. Модули написаны на языках FreePascal и PHP соответственно.
Модуль службы обработки почты
Основой службы является модуль обработки почты. Так как в России наиболее распространена платформа Windows, то для тестирования модуль обработки почты был выполнен в виде скомпилированного под платформу Windows файла server.exe. Модуль может инсталлироваться под платформу Windows как служба.
При загрузке операционной системы или ручном запуске модуля разбора почты происходит конфигурации из конфигурационного файла (файл config.ini). Файл можно не создавать – если файл не существует, он будет создан и заполнен значениями-примерами. Данные, получаемые из данного файла, используются для настройки параметров соединений. Пример конфигурационного файла показан на Листинге Г.1 (Приложение Г).
При запуске потока выполняется процедура Execute. В теле данной процедуры находится основной цикл программы.
Основной цикл включает в себя две операции – сбор и отправку почты, выполняющиеся по очереди с заданным периодом. Период ожидания разбивается на отрезки времени по 2 минуты. При запуске модуля происходит подключение и загрузка почты (если таковая имеется). Еще через 2 минуты инициализируется процедура отправки почты (если таковая имеется).
В итоге получается, что весь цикл приема и отправки почты повторяется 4 минуты. Данный интервал был выбран специально, для снижения нагрузки на сервер.
Сбор почты выполняется в теле специальной процедуры CheckMails. Использование компонента TPOP3Send из пакета Synapse позволяет работать по протоколу POP3 в синхронном режиме, т. е. выполнение каждой команды подразумевает возврат из процедуры протокола в основной поток только после завершения операции. Это означает что процесс общения с сервером по POP3 реализуется довольно простой последовательностью команд.
Последовательность действий, заложенная в процедуру CheckMails, выглядит следующим образом:
1 Открытие MySQL соединения;
2 Подключение к серверу POP3;
3 Подготовка объекта запроса к БД.
4 Последовательное получение писем и занесение их в базу данных:
4.1 Получение письма.
4.2 Разбор заголовка и текста письма.
4.3 Внесение данных в БД.
5 Уничтожение письма на сервере POP3 (при успешном завершении всех предыдущих операций).
6 Закрытие соединений.
Разбор заголовка письма является наиболее важной частью процесса обработки письма – заголовок содержит метку, определяющую его направление, принадлежность к определенной заявке.
Метка имеет следующий вид: idXXXXXXXXX#, где id – начало идентификатора, XXXXXXXXX – 9-тизначный номер заявки с ведущими нулями, # – флаг, наличие которого говорит о направлении письма от ответственного исполнителя к клиенту.
Приведем примеры заголовков входящих писем:
• «Сломался принтер» – обычное письмо, являющееся начальной заявкой. Создает новую цепь сообщений, перенаправляется на адрес исполнителя после назначения;
• «Re; id000000007# Сломался принтер» – ответ исполнителя на полученную заявку номер 7. Добавляется в цепь сообщений заявки №7, перенаправляется на адрес клиента;
• «Re; id000000007 Re: Сломался принтер» – дополнительная информация от клиента по заявке номер 7. Добавляется в цепь сообщений заявки №7, перенаправляется на адрес исполнителя.
Рассылка почты – вторая процедура службы разбора почты. В процессе работы этой процедуры производится рассылка писем из БД по соответствующим направлениям.
Последовательность действий, заложенная в процедуру рассылки почты выглядит следующим образом:
1 Открытие MySQL соединения.
2 Подключение к серверу SMTP.
3 Подготовка объекта запроса к БД.
4 Запрос списка подготовленных к отправке писем из БД.
5 Последовательная подготовка писем:
5.1 Извлечение письма из результата запроса.
5.2 Сборка текста письма и заголовка.
6 Закрытие указателя запроса.
7 Последовательная отправка писем:
7.1 Отправка письма по SMTP.
7.2 Внесение изменений в БД о факте отправки письма.
8 Закрытие соединений.
Для полноты описания приведем также примеры заголовков исходящих писем:
• «id000000007# Сломался принтер» – письмо с информацией по заявке №7 для исполнителя. Отправляется на адрес исполнителя.
• «id000000007 Re: Сломался принтер» – ответ исполнителя на полученную заявку номер 7 для клиента. Отправляется на адрес клиента.
При закрытии заявки специалист технической поддержки добавляет в тему письма выбранной цепочки заявок специальное зарезервированное слово FINISHED. При обнаружении такого слова модуль обработки электронной почты закрывает данную цепочку заявок. Для этого в базе данных данная цепочка помечается специальным битом «закрыта» в базе данных.
Эти процедуры сбора почты, разбора заголовка и рассылки почты составляют весь функционал приложения службы разбора почты.
Управление данными осуществляется через WEB-интерфейс.
Модуль WEB-интерфейса
WEB-интерфейс создан для управления заявками и персоналом.
Для проведения тестирования дипломного проекта использовался сервер Apache и интерфейс, написанный на PHP. Сделано это было из-за простоты и удобства настройки сервера.
Разработанный интерфейс позволяет:
• Производить авторизацию менеджера заявок;
• Просматривать заявки;
• Заносить в базу данных новых исполнителей заявок;
• Назначать заявки;
• Загружать на компьютер менеджера заявки в формате .eml для просмотра;
• Просматривать списки заявок назначенных ответственным лицам;
• Помечать при просмотре просроченные, открытые, и закрытые заявки разным цветом;
• При просмотре заявок, не выполненных более 24 часов со времени назначения отдельно помечать их как просроченные.
Изображения, показывающие основные возможности WEB – интерфейса представлены на рисунках Б.1, Б2, Б.3, Б4 (Приложение Б).
3.4 НАСТРОЙКА ПРИЛОЖЕНИЯ
Настройка службы разбора сообщений производится посредством редактирования конфигурационных файлов.
Настройка серверной части программы.
Конфигурационный файл имеет имя config.ini и должен располагаться в папке приложения.
Файл состоит из 3-х секций:
- [POP3] – параметры доступа к POP3 серверу;
- [SMTP] – параметры доступа к SMTP серверу;
- [MySQL] – параметры доступа к MySQL серверу.
Все секции имеют параметры host, port, username и password – адрес сервера, порт сервера, имя пользователя и пароль соответственно. В секции SMTP имеется дополнительный параметр email, указывающий адрес электронной почты для команды MAIL FROM протокола SMTP. В секции MySQLтакже имеется одни дополнительный параметр – dbase, указывающий имя базы данных с данными системы.
Настройка WEB-интерфейса
Скрипт WEB-интерфейса настраивается путем изменения параметров в тексте скрипта index.php.
Используются следующие настройки:
- $m_logins – ассоциированный массив, содержащий пары логин/пароль для авторизации менеджеров системы;
- $dbname – имя базы данных с данными системы;
- $dblogin – логин для доступа с MySQL серверу;
- $dbpassword – пароль для доступа с MySQL серверу.
Пример конфигурационных файлов показан на Листинге Г.1 и Г.2 (Приложение Г). Какие либо дополнительные настройки PHP для работы скрипта не требуются.