Файл: Проектирование реализации операций бизнес-процесса «Анализ и изучение конкуренции» ( Аналитическая часть).pdf
Добавлен: 17.05.2023
Просмотров: 94
Скачиваний: 5
СОДЕРЖАНИЕ
1.1. Выбор комплекса задач автоматизации.
1.2. Характеристика существующих бизнес – процессов.
1.3. Характеристика документооборота, возникающего при решении задачи.
1.4. Обоснование проектных решений по информационному обеспечению.
1.5. Обоснование проектных решений по программному обеспечению.
2.1. Информационная модель и её описание.
2.3. Характеристика результатной информации.
2.4. Общие положения (дерево функций и сценарий диалога).
2.5. Характеристика базы данных.
2.6. Структурная схема пакета (дерево вызова программных модулей).
2.7 Описание программных модулей.
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Код типа |
id |
int |
4 |
AI |
Наименование |
caption |
varchar |
120 |
Таблица 9
Таблица features
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Код возможности |
id |
int |
4 |
AI |
Наименование |
caption |
varchar |
120 |
Таблица 10
Таблица competitors_features
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Код возможности |
featureid |
int |
4 |
|
Код конкурента |
competitorid |
int |
4 |
|
Комментарий |
caption |
varchar |
120 |
Таблица 11
Таблица actions
Наименование поля |
Идентификатор поля |
Тип поля |
Длина поля |
Прочее |
Код акции |
id |
int |
4 |
|
Название |
caption |
varchar |
120 |
|
Описание |
description |
TEXT |
65655 |
|
Дата запуска |
begindate |
datetime |
10 |
|
Дата окончания |
enddate |
datetime |
10 |
|
Тип акции |
typeid |
int |
4 |
|
Код конкурента |
competitorid |
int |
4 |
2.6. Структурная схема пакета (дерево вызова программных модулей).
Популярность языка php обусловила появление большого числа фреймворков, основанных на нем. Фреймворк – программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.
Для написания информационной системы автоматизации анализа и изучения конкуренции использовался фреймворк языка php Symfony 2. Данный фреймворк работает с подходом к программированию, называемый Model-view-controller (MVC, «модель-представление-контроллер», «модель-вид-контроллер»).
Основная идея данного подхода заключается в разделении данных, их представлений и обработку действий пользователей на три больших группы:
- Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Объекты данной группы не содержат информации, как эти знания можно визуализировать.
- Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами. Главная задача – представить информацию, хранимой в модели в виде, воспринимаемым пользователем.
- Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.
Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Тем самым достигается назначение такого разделения: оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.
Общая схема архитектуры информационной системы согласно данной парадигмы изображена на рисунке 16.
Рисунок 16 – Архитектура ИС (Model-view-controller)
Список разработанных программных модулей и их назначений представлен в таблице 12.
Таблица 12
Программные модули
Номер |
Название |
Описание |
1 |
routing.yml |
Файл с настройками маршрутов для маршрутизатора Symfony 2 |
2 |
DefaultContoller.php |
Класс контроллера, обрабатывающий маршрут главной страницы информационной системы |
3 |
DepartmentController.php |
Класс контроллера, содержащий методы для отображения данных и форм об отделах компании, обработки отправленных форм |
4 |
DocController.php |
Класс контроллера, содержащий методы для отображения данных и форм работы с документами, комментариями и файлами к ним, обработки отправленных форм |
5 |
StaffController |
Класс контроллера, содержащий методы для отображения данных и форм о должностях компании, обработки отправленных форм |
6 |
TypeDocController.php |
Класс контроллера, содержащий методы для отображения данных и форм о типах документов, обработки отправленных форм |
7 |
SecurityController.php |
Класс контроллера, содержащий методы и функции, необходимые для реализации функций авторизации, выхода из сайта, управления профилем пользователя |
8 |
UsersController.php |
Класс контроллера, содержащий методы для отображения данных и форм о пользователях, обработки отправленных форм |
9 |
User.php |
Класс модели, содержащий атрибуты и методы для работы с объектом пользователя |
10 |
Department.php |
Класс модели, содержащий атрибуты и методы для работы с объектом отдела |
11 |
Doc.php |
Класс модели, содержащий атрибуты и методы для работы с документом |
12 |
Comment.php |
Класс модели, содержащий атрибуты и методы для работы с объектом комментария к документу |
13 |
Status.php |
Класс модели, содержащий атрибуты и методы для работы с объектом статуса документа |
14 |
Role.php |
Класс модели, содержащий атрибуты и методы для работы с объектом роли пользователя |
15 |
TypeDoc.php |
Класс модели, содержащий атрибуты и методы для работы с типом документа |
16 |
Staff.php |
Класс модели, содержащий атрибуты и методы для работы с должностью |
17 |
DepartmentFormType.php |
Класс формы управления данными отдела |
18 |
LoginFormType.php |
Класс формы авторизации |
19 |
DocFormType.php |
Класс формы управления данными документа |
20 |
CommentFormType |
Класс формы отправки комментария |
21 |
DocFilterFormType.php |
Класс формы для реализации фильтра в списке документов |
22 |
StatusFormType.php |
Класс формы управления данными статусов документов |
23 |
StaffFormType.php |
Класс формы управления данными должности |
24 |
TypeDocFormType.php |
Класс формы для управления данными типа документа |
25 |
ProfileFormType.php |
Класс формы для реализации работы с профилем пользователя |
26 |
UserFormType.php |
Класс формы для реализации работы с данными пользователя |
27 |
UserFilterType.php |
Класс формы для реализации фильтра в списке пользователей |
2.7 Описание программных модулей.
Главная особенность объектно-ориентированного программирования (ООП) заключается в том, что при использовании этого метода происходит оперирование объектами. Под объектом в программировании понимается совокупность свойств, методов их обработки и событий, на которые данные объект может реагировать. Под свойствами объекта обычно понимают структуры данных, характерные для данного объекта, или другими словами – набор свойств характеризуют какой-либо объект. Метод – это способ влияния на свойства объекта, обычно используют два метода – установка какому-то свойству определенного значения, и считывание значения этого свойства. Объединение данных и свойственных им процедур обработки в одном объекте, называется инкапсуляцией и является одним из важнейших принципов ООП.
Еще одним фундаментальным понятием ООП является класс.
Классом называют шаблон, на основе которого создается конкретный программные объект. То есть в классе описаны все свойства и методы, определяющие поведение каждого объекта, созданного на основе этого класса. Также принято каждый объект, созданный на основе класса называть экземпляром этого класса.
Следующими важнейшими принципами ООП являются наследование и полиморфизм.
Наследование – такая организация классов, которая подразумевает создание новых классов на базе существующих и позволяет классу потомку иметь (наследовать) все свойства класса – родителя.
Полиморфизм – означает, что рожденные объекты обладают информацией о том, какие методы они должны использовать в зависимости от того, в каком месте цепочки (дерева классов) они находятся, иными словами это концепция, реализующая "множество методов в одном интерфейсе".
В структуре программных модулей разработанной ИС Можно четко проследить механизм наследования. Всего присутствует три родительских класса: InitializableController.php, AbstractEntity.php, AbstractFormType.php.
Первый является родителем для всех контроллеров ИС, он содержит объявления таких методов и свойств, которые в дальнейшем используются в каждом контроллере:
//проверка авторизации
/** @var AuthorizationChecker */
protected $authChecker;
//массив форм
/** @var array */
protected $forms;
//менеджер для доступа к модели
/** @var EntityManager */
protected $manager;
//массив объектов модели
/** @var array|EntityRepository[] */
protected $repositories;
//получение http-запроса
/** @var Request */
protected $request;
//доступ к сессии пользователя
/** @var Session */
protected $session;
//доступ к объекту текущего пользователя
/** @var User */
protected $user;
//доступ к текущему представлению
/** @var array */
protected $view;
//массив для отображения текущего раздела в панели навигации
/** @var array */
protected $navigation;
Второй родительский класс является родителем для всех сущностей. В нем выделено три основных свойства (атрибута сущности):
//Дата создания
/**
* @var \DateTime
* @ORM\Column(name = "createdat", type = "datetime")
*/
protected $createdAt;
//Идентификатор
/**
* @var int
* @ORM\Column(name = "id", type = "integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
//дата изменения
/**
* @var \DateTime
* @ORM\Column(name = "modifiedat", type = "datetime")
*/
protected $modifiedAt;
А также конструктор создания нового объекта класса:
public function __construct()
{
$this->createdAt = new \DateTime();
$this->modifiedAt = new \DateTime();
}
И триггер обновления объекта, который меняет свойство «Дата последнего обновления записи»:
/**
* @ORM\PreUpdate
* @ORM\PrePersist
*/
public function preUpdate()
{
$this->modifiedAt = new \DateTime();
}
Последний родительский класс – это класс для форм ИС. В нем также задаются основные константы, конструктор:
const METHOD_GET = 'GET';
const METHOD_POST = 'POST';
protected $method;
protected $name;
public function __construct($name, $method = self::METHOD_POST)
{
$this->name = $name;
$this->method = $method;
}
public function getName()
{
return $this->name;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array('method' => $this->method));
}
Следует заметить, что все описанные выше родительские классы наследуются от фундаментальных классов фреймворка Symfony, которые содержат базовые свойства и методы, разделяющие эти классы на три группы MVC.
Каждый контролер обрабатывает запросы, отправляемые по соответствующему маршруту. Описание того, какой контроллер должен обрабатывать тот или иной маршрут оформляется в виде отдельного файла: routing.yml.
Пример записи (главная страница ИС):
index:
path: /
defaults: { _controller: "AppBundle:DefaultController:Index" }
Такая запись означает следующее:
- первая строка – название маршрута (index);
- вторая строка – путь, или URL-адрес маршрута (/);
- третья строка – имя класса контроллера, который должен обрабатывать маршрут, а также метод этого контроллера, ответственный именно за этот маршрут;
Обработка маршрута выполняется в контроллере DefaultController.php. При переходе по маршруту (отправке запроса на url /) начинает свою работу метод IndexAction. Данный метод проверяет наличие у пользователя открытой сессии авторизации, и если такой нет, то перенаправляет пользователя на форму авторизации (маршрут /login, Контроллер SecurityController.php).
Для обработки шаблонов и формирования на их основе html-страниц, отображаемых пользователю, используется распространенный шаблонизатор twig. Twig – компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Синтаксис, поддерживаемый шаблонизатором позволяет использовать в шаблонах ветвления, циклы, а удобная структура кода позволяет значительно сократить итоговый объем программного кода. Также стоит отметить, что шаблонизатор генерирует на основе своих шаблонов чистый php-код, который обрабатывается значительно быстрее.
При переадресации на маршрут открытия формы авторизации (/login), срабатывает метод loginAction контроллера SecurityController.php. Он создает экземпляр формы LoginFormType.php и обрабатывает её отправку.
После успешного прохождения авторизации, пользователю отображается страница со списком за явок пользователя. Данную страницу формирует метод indexAction контроллера DefaultController.php на основании шаблона General:index.html.twig.
Исходный код программных модулей приведен в приложении.
2.8. Контрольный пример реализации проекта и его описание.
При открытии страницы сайта открывается форма авторизации (Рисунок 17).
Рисунок 17. Форма авторизации
После успешного прохождения авторизации откроется список конкурентов. Над списком конкурентов находятся кнопки для управления списком (поиска и фильтрации), открытия формы добавления нового конкурента, выгрузки текущего списка конкурентов в файл Excel и формирования отчета по текущему списку конкурентов (Рисунок 18).
Рисунок 18. Список конкурентов
Добавление нового конкурента осуществляется с помощью формы, вызываемой нажатием на соответствующую кнопку. Форма добавления конкурента изображена на рисунке 19.
Рисунок 19. Форма добавления конкурента
Работа с данными конкурента осуществляется с помощью другой формы, которая открывается при нажатии на кнопку редактирования в списке конкурентов. Форма работы с конкурентом состоит из трех вкладок: общие данные, список акций, список возможностей конкурента (Рисунок 20).
Рисунок 20. Форма работы с конкурентом