En

JazzTeam Software Development Company

Agile Java Development

Система учета и контроля расходов телекоммуникационных услуг

Краткое описание проекта

Система учета и контроля расходов телекоммуникационных услуг позволяет выполнять контроль над телекоммуникационными расходами компании.

Система представляет собой группу приложений:

Веб-приложение для клиентов предоставляет единую точку входа получения информации о всех счетах клиента (mobile, fixed, RAS, data) и выступает как служба ведения отчетности организации на всех уровнях - корпоративном, региональном и в масштабах страны, местном и на пользовательском уровне. Данное приложение позволяет клиенту управлять информацией об организации, разграничивать права внутри компании между сотрудниками, организовать структуру иерархии компании, контролировать расходы на за определенный период и т.д.

Веб-приложение для администраторов управляет различными аспектами системы: управление пользователями, контроль за состоянием системы, просмотр событий системы, просмотр и удаление счетов клиентов, управление шаблонами писем, добавление локализации, добавлением справочных данных в систему и т. д.

Серверный компонент для обработки событий представляет собой многопоточное java приложение, которое отвечает за обработку различных событий, которые были инициированы другими приложениями.

Основными событиями данного приложения являются:

Эти приложения при помощи аналитики и разноплановых детализированных отчетов дают полное представление о затратах, что помогает проведению анализа и принятию решений об оптимизации расходов компании на телекоммуникации.

Еще одним важным элементом сервиса отчетов является предоставление возможности давать доступ своим сотрудникам к сервису, что значительно увеличивает их осведомленность о своих затратах на услуги связи и дает возможность сотрудникам брать на себя ответственность за телекоммуникационные расходы, разделяя звонки на бизнес коммуникации и звонки для личного пользования.

Техническое описание проекта

Система представляет собой многомодульное Maven приложение. С помощью Maven организована автоматическая сборка проектов с настройкой профилирования.

Веб-приложения реализованы на основе MVC-паттерна, который разделяет модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно).Серверная часть приложений реализована на языке Java c использованием широко известных фреймворков Struts2 и Spring.

Клиентская часть реализована с применением технологий HTML, CSS, JavaScript, JQuery, AJAX, Struts2 tags, JSTL tags.

Для обработки нестандартных кейсов были созданы собственные jsp-теги (к примеру, многоуровневое меню с автоматической подгрузкой данных в зависимости от выбранной пользователей категории).

Для поддержки ролей пользователей и их управления используется Spring Security.

Система позволяет предоставлять различным пользователям разные уровни доступа для обеспечения наибольшей безопасности.

Связь между двумя веб-приложениями организована через технологию единого входа (Single Sign-On), что позволяет администратору переходить в другое приложение без повторной аутентификации.

Реализована защита приложений от различных уязвимостей и хакерских атак (к примеру: CSRF, XSS) с поддержкой кроссбраузерности с использованием CSP2.0 для более новых версий браузеров, а также реализовано собственное решение с использованием MutationObserverAPI для старых версий браузеров. В качестве сервера веб-приложений использовался Tomcat.

Серверный компонент для обработки событий представляет собой многопоточное консольное приложение. Данное приложение позволяет обрабатывать и загружать файлы нескольких форматов (CSV, PDF, XML), также принимает справочные данные из XLS и JSON - файлов. Связь с другими приложениями системы организована посредством сложной событийной модели. Количество потоков для обработки событий определяется пользователем. Управление потоками организовано с помощью стандартного пакета java.util.concurrent.

Система использует базу данных Oracle. В базе данных присутствуют 2 вида таблиц:

Для выполнения сложных операций с данными в БД используются хранимые процедуры на языке PL/SQL, что повышает производительность, расширяет возможности программирования и поддерживает функции безопасности данных.

Взаимодействие с базой данных осуществляется с помощью Hibernate и JPA. В некоторых случаях для достижения лучшей производительности используется JDBC Connection.

Технологии

Stack: Java, Maven, JPA (Hibernate), JDBC Connection, Servlet API,  TagLib, JSTL, Jaxb, SuperCSV, JAX-WS, Apache commons, Apache POI.
Infrastructure: Jenkins, SVN.
Frameworks: Struts2, Spring, Spring security.
Test Automation libraries: Mockito, JUnit.
DB: Oracle, PL/SQL.
Other libraries: Ehcache, Achartengine.

Скриншоты

Что делали на проекте, наши обязанности

Силами нашей команды выполнялись следующие работы:

Особенности проекта

Результат проекта

Достижения компании на проекте