logiweb
logiweb task
В задании требуется написать приложение, моделирующее работу информационной системы некоторой компании, осуществляющей перевозку грузов. Ниже более подробно описаны предметная область и технические требования.
DB schema:
##Предметная область Существуют следующие виды сущностей:
- Фура
- Рег. номер (2 лат.буквы + 5 цифр)
- Размер смены водителей
- Вместимость (тонн)
- Состояние (исправен, неисправен)
- Водитель
- Имя
- Фамилия
- Личный номер
- Отработано часов в этом месяце
- Статус (отдых, в смене, за рулем)
- Текущая фура
- Заказ
- Уникальный номер
- Выполнен (да/нет)
- Список грузов
- Фура назначенная выполнять заказ
- Список водителей, которые выполняют заказ
- Груз
- Номер груза
- Наименование
- Масса (в кг)
- Статус (подготовлен, отгружен, доставлен)
##Приложение должно обеспечивать следующую функциональность:
- Для сотрудников компании (через UI-интерфейс):
- просмотр списка, добавление, редактирование и удаление фур, водителей;
- просмотр списка и добавление новых заказов
- просмотр состояния заказов и грузов;
- вывод списка фур, которые подходят для доставки заказа, если:
- фура находится в исправном состоянии;
- фура подходит по вместимости;
- фура не выполняет в данный момент никаких заказов;
- подбор и назначение водителей на основании размера смены и используемой фуры:
- лимит времени за месяц (176 часов) для каждого из водителей в смене
- водителем не выполняет сейчас другие заказы;
- Для водителей (через ws/rs-интерфейс), фиксируется фактическое время работы:
- водитель заступил на смену:
- личный номер водителя;
- статус (основной водитель, отдых);
- водитель изменил статус:
- личный номер водителя;
- статус (основной водитель, отдых);
- водитель окончил смену;
- личный номер водителя;
- статус заказа изменился:
- номер груза;
- статус (отгружен, доставлен).
- водитель заступил на смену:
Технические требования
В итоге требуется получить многопользовательское приложение с клиентом для сотрудников компании, удаленным сервером (соединение по сети) и открытыми (на сервере) WS/RS интерфейсами для сторонних систем водителя. Все данные хранятся на стороне сервера. Каждый клиент может загружать некоторые данные, после каждой операции изменения данные должны быть синхронизованы с сервером. Клиент должен иметь графический интерфейс (консольный интерфейс допускается, но не рекомендуется). Для WS/RS интерфейсов дополнительный клиент не требуется. Должно быть возможно вызвать сервисы стандартными средствами типа SoapUI или RestConsole. Приложение должно обрабатывать аппаратные и программные ошибки.
Используемые технологии:
1 часть:
- IDE - Any (Eclipse, IDEA)
- Tomcat 8.0.x
- Servlet/JSP
- DB – MySQL 5.6
- Maven 3.*
- JPA 2.0
2 часть (включая предыдущие):
-
AS – Glassfish 4.0/WildFly 8.x
-
JAX-WS/RS
-
EJB 3.x
-
JSF 2.x или
-
Spring Framework
##Критерии успешного выполнения:
- Функциональность работает (обязательно наличие UI и сервисов)
- Maven-based проект, разбитый на модули (билд одной командой, деплой одной командой)
- Описаны интерфейсы предметной области
- Подключена БД MySQL
- Созданы сущности предметной области; маппинг на таблицы в БД
- Работа с сущностями через DAO
- Приложение развернуто на AS Glassfish/Wildfly* (актуально для 2й части)
- Реализована обработка исключений
- Подключено логгирование
- Наличие technical solution description
- Наличие unit-тестов на бизнес логику
Подключение любого фреймворка/библиотеки принимаются в зачет только при условии выполнения пунктов, описанных выше.
При наличии дополнительного времени будут плюсом моковые клиенты для вызова сервисов со стороны водителя.