
- •Государственное образовательное учреждение высшего профессионального образования
- •230201 Информационные системы и технологии
- •Оглавление
- •Введение
- •1. Постановка задачи
- •2. Анализ задачи
- •2.1 Анализ требований заказчика
- •2.2 Анализ архитектуры приложения
- •2.3 Анализ предметной области
- •2.3.1 Сервисная шина предприятия
- •2.3.2 Основы архитектуры soa
- •2.3.3 Составляющие базовой архитектуры soa
- •2.3.4 Роль esb в архитектуре soa
- •2.3.5 Роль веб-сервисов в soa
- •2.4 Анализ существующих аналогов esb технологий
- •2.4.5 Проведение тестов
- •2.5 Анализ используемых средств
- •2.5.7 Фреймворк Spring
- •3. Реализация
- •3.1 Описание архитектуры приложения
- •3.2 Структура базы данных
- •3.3 Реализация классов
- •3.3.1 Диаграмма пакетов
- •3.3.2 Слой dao
- •3.3.3 Контроллер
- •3.3.4 Бизнес логика
- •3.4 Развертывание приложения
- •Заключение
- •Список литературы
3.2 Структура базы данных
Рис. 8 Структура базы данных (PARKING_SETTINGS)
PARKING_SETTINGS. Содержит информацию о настройках приложения для парковки:
Отображаемое на странице максимально возможное количество результатов поиска;
Отображаемое на странице количество недавно просмотренных парковочных стоянок;
Максимально возможное количество парковок, добавляемых в качестве избранных;
Радиус, по которому будет производиться поиск парковочных стоянок относительно текущего положения автомобиля;
URL-адреса внешних сервисов, к которым будет обращаться приложение для получения информации о парковочных стоянках.
Рис. 9 Структура базы данных (PARKING_FAVORITES, PARKING_RECENTLY_VIEWED)
PARKING_FAVORITES. Содержит информацию о парковках, которые пользователь добавил в избранное:
Название парковки;
Тип парковки;
Код страны;
Индекс;
Город;
Улица;
Координаты: длину и широту.
PARKING_RECENTLY_VIEWED. Содержит информацию о недавно просмотренных парковочных стоянках. Таблица имеет такую же структуру, как и таблица PARKING_FAVORITES.
3.3 Реализация классов
3.3.1 Диаграмма пакетов
Рис. 10 Диаграмма пакетов
В приложении есть 5 основных пакетов, каждый из пакетов представляет из себя набор интерфейсов и классов, реализующих функциональность определенного слоя:
Пакет model: содержит классы-сущности для хранения в базе данных;
Пакет api: содержит интерфейсы, реализующиеся в бизнес-логике;
Пакет bl: содержит класс с бизнес логикой: основной класс ParkingService и вспомогательные классы для получения данных от внешних сервисов: adac и navi;
Пакет dao: классы для доступа к данным.
Пакет ctrl: содержит класс-контроллер, обрабатывающий все запросы, приходящие от клиента.
3.3.2 Слой dao
Рис. 11 Слой DAO
Описание основных методов
addFavorites(int, Parking, int):List<Parking> - добавляет парковочную стоянку (объект Parking) в базу данных в таблицу PARKING_FAVORITES. Возвращает список избранных паркингов.
addRecentlyViewed(int, Parking, int):List<Parking> - добавляет парковочную стоянку (объект Parking) в базу данных в таблицу PARKING_RECENTLY_VIEWED. Возвращает список недавно просмотренных паркингов.
getFavoriteParkings(int) :List<Parking> - получает список паркингов из таблицы PARKING_FAVORITES для конкретного пользователя.
getRecentlyViewedParkings(int) :List<Parking> - получает список паркингов из таблицы PARKING_RECENTLY_VIEWED для конкретного пользователя.
getServiceOptions():ServiceOptions - получает специфические опции, присущие данному сервису для конкретного пользователя.
3.3.3 Контроллер
Рис. 12 Контроллер
Класс-контроллер, обрабатывающий все запросы, приходящие от клиента.
Описание основных методов
addToFavorites(HttpServletRequest, HttpServletResponse, String): void – вызывает метод сервиса ParkingService, который добавляет конкретную парковку к списку избранных для конкретного пользователя. Сохранение в таблицу PARKING_FAVORITES.
getGeoLocationsForAddress(HttpServletRequest, HttpServletResponse, String): void – вызывает метод сервиса ParkingService, который получает список местонахождений по конкретному адресу.
getLocationHistory(HttpServletRequest, HttpServletResponse, String): void – вызывает метод сервиса ParkingService, который получает информацию о запросах по нахождению парковок от конкретного пользователя.
getParkingById(HttpServletRequest, HttpServletResponse, String): void – вызывает метод сервиса ParkingService, который получает парковку (объект Parking) по Id.
nearGeoLocation(HttpServletRequest, HttpServletResponse, Double, Double, Double, String, boolean, boolean, Integer): void – вызывает метод сервиса ParkingService, который получает информацию о местонахождениях парковок расположенных по определенным параметрам (долгота, широта, заданный радиус и т.д.).
removeAllFavorites(HttpServletRequest, HttpServletResponse): void – вызывает метод сервиса ParkingService, который удаляет все избранные парковки конкретного пользователя.
removeAllRecentlyViewed(HttpServletRequest, HttpServletResponse): void – вызывает метод сервиса ParkingService, который удаляет все недавно просмотренные парковки конкретного пользователя.
removeFromFavorites(HttpServletRequest, HttpServletResponse, int): void - вызывает метод сервиса ParkingService, который удаляет избранную парковку по Id.
removeFromRecentlyViewed(HttpServletRequest, HttpServletResponse, int): void - вызывает метод сервиса ParkingService, который удаляет недавно просмотренную парковку по Id.
resetLocationHistory(HttpServletRequest, HttpServletResponse): void - вызывает метод сервиса ParkingService, который стирает историю запросов по месту.
setFavorites(HttpServletRequest, HttpServletResponse, String): void - вызывает метод сервиса ParkingService, который добавляет текущую парковку в список избранных.