10.2Логическое проектирование системы
Прежде всего необходимо разработать и представить логическую систему работы системы исходя из поставленной задачи и требований. Так же в схеме укажем взаимодействие компонентов. Ее можно предоставить в следующем виде, как показано на рисунке 3.1.
Рисунок 3.1 – Логическая схема работы системы Для упорядоченного хранения и доступа к данным нам необходимо будет использование базы данных.
Рассмотрим процессы в нашей логической структуре более подробно.
10.2.1Инициализация пользователя
Нам потребуется отдельная таблица для функции инициализации пользователей, в которой мы будем хранить данные о пользователях. Назовем ее таблица «USERS». Данная таблица будет иметь поля имени, названия учетной записи (логин) и поле для хранения пароля.
Процесс идентификации в работе используется не для защиты данных, а лишь для возможности работы несколькими пользователями в системе одновременно. Потому никаких мер для шифрования мы в нашем проекте не предусматриваем. Данные в базе данных хранятся в открытом виде и вносятся (доступны) только администратором.
10.2.2Управление проектами
Для работы с проектами нам потребуется создать таблицу «PROJECT», таблица должна будет хранить в себе информацию о проектах:
уникальный номер проекта;
название проекта;
описание проекта;
дата начала проекта;
планируемая дата завершения проекта;
реальная дата завершения проекта
статус проекта;
менеджер проекта;
С проектами должен работать только менеджер проекта, для разграничения уровня доступа мы добавим соответствующее поле в таблицу «USERS», отвечающее за уровень доступа пользователя (его роль). При валидации фамилия валидирующего будет зафиксирована в отведенном для этого поле. Наличие записи в этом поле будет означать, что задача валидирована.
10.2.3Управление задачами
Выполнение проекта состоит из выполнения его задач, которые должны будут выполнять специалисты. Для обработки и хранения информации о задачах потребуется таблица, которую назовем «TASK», нам нужна будет следующая информация:
ключ таблицы: номер проекта;
уникальный номер задачи;
название задачи;
описание задачи;
дата и время начала работы над задачей;
время приостановки работы над задачей;
время завершения работы над задачей;
время, затраченное на задачу;
специалист, на которого была назначена задача
валидация задачи; При старте и приостановке задачи время фиксируется и прибавляется к суммарному затраченному времени, для отображения уже затраченного времени создано специальное поле – время, затраченное на задачу, выводится в списке задач.
10.2.4Параллельная работа над задачами
В условии присутствовала функция одновременной работы над задачами. Чтобы данный процесс не вызывал коллизии данных было найдено достаточное простое решение – дублировать заявку (все ее поля) с новым уникальным номером, при этом записывать ее на другого специалиста.
10.2.5Журнал действий
В каждом проекте хранится информация обо всех действиях в рамках проекта, для записи этих данных, а также для отображения правильных статусов задач и проектов нам потребуется отдельная таблица, назовем ее «LOG», в ней будут хранится следующие данные:
номер проекта;
номер задачи;
кем сделано действие
тип действия
дата и время действия
код действия
10.3Физическое проектирование системы
После того, как была выстроена логическая структура, продуманы процессы и определены необходимые данные, процесс их хранения, можно перейти к физическому проектированию описанной выше системы.
Начнем с проектирования базы данных – создание таблиц и определения полей.
10.3.1Определение таблиц базы данных
Для работы нашего программного обеспечения нам необходимо создать базу данных, состоящую из таблиц, каждая из которых будет иметь уникальный идентификатор.
Ниже приведены таблицы и идентификаторы:
11)Таблица ПОЛЬЗОВАТЕЛИ (USERS): идентификатор пользователя.
12)Таблица ПРОЕКТЫ (PROJECT): идентификатор проекта.
13)Таблица ЗАДАЧИ (TASK): идентификатор задачи.
14)Таблица ДЕЙСТВИЯ (LOG): идентификатор действия. Для описания объектов сущности ПОЛЬЗОВАТЕЛИ используется таблица USERS, структурная схема которой представлена в таблице 3.1.
Таблица 3.1 - Структурная схема таблицы USERS
Описание полей:
LOGIN – Идентификатор пользователя для входа в систему («логин»).
FIO – Реальное имя пользователя (ФИО).
E-MAIL – электронный адрес пользователя для получения автоматических уведомлений системы.
PASSWORD – пароль для идентификатора пользователя.
ROL – тип пользователя (1 – менеджер проекта, 0 – специалист). Для описания объектов сущности ПРОЕКТЫ используется таблица PROJECT, структурная схема которой представлена в таблице 3.2. Таблица 3.2 - Структурная схема таблицы PROJECT
Описание полей:
ID_PR - Уникальный номер проекта;
NAME - Название проекта;
DESCRIPTION - Описание проекта;
DATE_START - Дата начала проекта;
DATE_PLAN - Планируемая дата завершения проекта;
DATE_END - Реальная дата завершения проекта
STATUS - Статус проекта;
VALID – Валидировавший проект менеджер проекта; Для описания объектов сущности ЗАДАЧИ используется таблица TASK, структурная схема которой представлена в таблице 3.3.
Таблица 3.3 - Структурная схема таблицы TASK
Описание полей:
ID_PR - номер проекта;
ID_TASK - номер задачи;
TASK_NAME - Название задачи;
TASK_DESCRIPTION - Описание задачи;
DATE_START_TASK - Дата и время начала работы над задачей;
DATE_PAUSE_RUN - Время приостановки работы над задачей;
DATE_END_TASK - Время завершения работы над задачей;
TIME_FOR_TASK - Время затраченное на задачу;
TASK_WORKER - Специалист, на которого была назначена задача
TASK_VALID – Валидировавший задачу;
DATE_PAUSE_END - Время окончания паузы работы над задачей;
INFO – Дополнительное поле; Для описания объектов сущности ДЕЙСТВИЯ используется таблица LOG, структурная схема которой представлена в таблице 3.4. Таблица 3.4 – Структурная схема таблицы LOG
Описание полей:
ID_PR - Номер проекта;
ID_TASK - Номер задачи;
LOGIN - Кем сделано действие;
ACTION - Тип действия;
DATETIME - Дата и время действия;
STATUS - Код действия.
14.1.1Интерфейс
Для того, чтобы пользователю было легко и удобно работать с приложением, т.е. управлять всеми действиями, которые мы описали выше – был разработан и сконструирован графический интерфейс при помощи библиотеки Java Script Ext JS для построения кроссплатформенных веб-приложений с активным графическим интерфейсом.
Перед созданием интерфейса запускается загрузка из базы данных параметров по проектам и пользователям (отдельно по менеджерам проектов и исполнителей), т.к. в нашей системе предусмотрен разный функционал для этих ролей, но определить класс пользователя будет необходимо сразу.
Для этого мы заполняем массив данных при помощи sql запросов, описанных в соответствующих модулях (для проектов модуль project.php).
Рис. 3.2 - Фрагмент кода main.js - загрузки данных по проектам. С помощью java инициализируем и описываем (прорисовываем) интерфейс:
Рис. 3.3 - Фрагмент кода main.js - инициализации интерфейса. Для отображения вкладок создадим элемент «tabPanel», он же будет отвечать за отображение активной вкладки, что описывается в функции «tabchange» - активная вкладка отображается, неактивные вкладки при этом скрываются – становятся не видимимы.
Нажатия – т.е. выбор пользователя и обновление отлавливаются в функции «render»:
Рис. 3.4 - Фрагмент кода main.js – переключение вкладок.
14.1.2Инициализация пользователя
Как было сказано выше, при запуске для определения интерфейса нам необходимо определить класс пользователя. Для этого создадим окно авторизации settingsDialog, в нем помимо проверки валидности логина и пароля настраивается доступность к созданию нового проекта в зависимости от роли клиента и подгружаются индивидуальные задания во вкладке “список задач”.
Рис. 3.5 - Фрагмент кода main.js - инициализация пользователя
14.1.3Реализация основных функций управления
Вкладка «Список проектов» описывается в элементе «projectContent», здесь осуществляется управление заданиями, создание/изменение/удаление проектов для роли «Менеджер проекта» активна функция «Send_project» (номер действия, номер проекта) для внесения данных по проектам.
Рис. 3.6 - Фрагмент кода main.js – реализация управления проектами Функция «Send_project» запускает сценарий, равный номеру действия, например, обновление внесенных данных о проекте:
Рис. 3.7 - Фрагмент кода main.js – обновления данных по проектам Здесь для записи данных в базу данных используется уже другой модуль – «SQL_project_controller.php», который соедржит в себе SQL команды для обновления данных.
Аналогичным образом работает вкладка по управлению задачами. Окно деталей проекта элемент «task_window» отображает подробную информацию о выбранном проекте и его список задач.
Так же исходя из роли клиента предоставляет функциональность управления заданиями для роли «Менеджер проекта» и выполнение задания для роли «исполнитель»:
Рис. 3.8 - Фрагмент кода main.js – отображение списка задач проекта Вкладка «отчеты» строится элементами «chartContent», данные тем же методом загружаются из базы данных SQL запросами, описанными, в данном случае, в модуле chart.php и исходя из выбранных данных – выбранные пользователем данные в панели параметров определяются функцией «items»:
Рис. 3.9 - Фрагмент кода main.js – построение графиков Функция экспорт данных в EXCEL «mainToolbar» доступна из любой вкладки и сохраняет данные в EXCEL файл текущей вкладки:
Рис. 3.10 - Фрагмент кода main.js – функция экспорта данных
14.1.4Описание вспомогательных модулей программного продукта
Основной программный модуль, который содержит процедуры и функции, описывающие функционал программы, интерфейс программного продукта, а также все функции обработки основных логических объектов программы – жизненного цикла проекта и задачи – main.js
Его полный листинг с комментированием представлен в разделе «Приложения».
Вспомогательные модули, для работы с базой данных (содержащие sql запросы):
Модуль получения данных для получения графиков отчета - chart.php
Модуль получения данных для экспорта в формат Excel - exportToExcel.php
Модуль получения данных из таблицы данных действий пользователей - log.php
Модуль получения данных для получения отчетов - otchet.php
Модуль получения данных из таблицы пользователей- users.php
Модуль получения данных из таблицы проектов - project.php
Модуль получения данных из таблицы задач - task.php
Модуль получения данных времени работы над проектом - task_run.php
Управление проектом, запись данных по управлению проектом - SQL_project_controller.php
Управление задачей, запись данных по управлению задачей - SQL_task_controller.php
Модуль получения данных пользователя и определение роли пользователя – модули settings.php, valids.php, workers.php.
|