En

JazzTeam Software Development Company

Agile Java Development

Mule-приложение по сбору и обработке информации о звонках и передаче данных с сервиса Webbing

Mule SoftВведение: если вы часто путешествуете (по работе или в личных целях) по разным странам и уголкам нашей планеты, то наверняка сталкивались с такой проблемой, как необходимость постоянного контроля за тем, в сети какого мобильного оператора вы находитесь в данный момент. И вам нужно либо вручную выбрать подходящего оператора роуминга, либо приобретать дополнительные SIM-карты для каждой страны. Любой из этих вариантов доставляет дискомфорт.

Для того, чтобы избежать неудобства использования нескольких SIM-карт, были специально разработаны устройства Webbing – особые SIM-карты, которые просто устанавливаются в телефон и не требуют дополнительных настроек. Такая SIM-карта может использоваться как единая корпоративная SIM-карта сотрудника. Эти SIM-карты работают в мобильных сетях большинства мировых операторов и позволяют пользователям не задумываться о смене SIM-карт при перемещении между странами, а просто совершать звонки и пользоваться мобильным интернетом.

Карты Webbing особенно актуальны для международных компаний, сотрудники которых регулярно перемещаются между офисами. Один из наших заказчиков предоставляет сервисы по цифровому учету расходов в сфере телекоммуникаций. В том числе такие услуги предоставляются одному из крупных международных агентств с более чем сотней офисов по всему миру. Сотрудники агентства активно используют SIM-карты Webbing. Учет расходов по картам Webbing необходимо было добавить в набор существующих сервисов заказчика.

Краткое описание проекта: эту задачу предстояло решить нашей команде. Одним из требований заказчика была разработка решения на Mule, т.к. в его инфраструктуре уже имеются Mule-приложения. Извлекать информацию о звонках из raw-данных от центров мобильных операторов (а их множество) проблематично, поэтому данные необходимо получать из веб-сервисов Webbing. Нами было предложено решение, суть которого заключается в том, чтобы извлеченную детализацию из сервисов Webbing преобразовывать в необходимый формат и сохранять в базу данных, чтобы клиент в дальнейшем мог работать с этими данными. Схема интеграции решения с существующей инфраструктурой заказчика приведена на рисунке 1.

Схема работы приложения с Webbing и клиентской базой данных

Рисунок. Схема работы приложения с Webbing и БД заказчика.

Разработанное решение представляет собой Mule приложение, которое работает следующим образом:

Ezwim Webbing основной поток

Рисунок. Ezwim Webbing основной поток.

1. Запрос к Webbing каждые nn секунд (через Quartz)

Вызов Webbing и сохранение результатов

Рисунок. Вызов Webbing и сохранение результатов

2. XML ответ от Webbing сервисов десериализуется во внутреннее представление Mule.

3. Фильтруем данные: отсекаем уже обработанные, дополнительно фильтруем по заданному префиксу.

Сохранение данных ответа

Рисунок. Сохранение данных ответа.

Сохранить сообщение лог журнала

Рисунок. Сохранение сообщение в лог журнал.

4. Преобразуем в xml.

Записать в Oracle

Рисунок. Преобразование в xml.

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

После этого службы заказчика, например, бухгалтерия, могут обращаться к данным о расходах в удобном для них виде. Таким образом, теперь сотрудникам нет необходимости обрабатывать большие объемы данных вручную и вносить их в бухгалтерское ПО.

Приложение взаимодействует с веб-сервисами Webbing посредством SOAP-запросов, что дает возможность реализации любой клиентской части в дальнейшем.

Кроме того, в целях сокращения времени на развертывание и тестирование, и большей концентрации разработчиков непосредственно на разработке программного продукта, заказчик поставил дополнительную задачу: для использования в этом и будущих проектах внедрить процесс Continuous Integration, Continuous Delivery (CI/CD), который бы позволял максимально автоматизировать сборку, тестирование и развертывание. Что нами и было реализовано.

Для этого мы развернули и настроили Jenkins, с помощью которого выполняются следующие задачи:

Таким образом, с помощью развертывания Jenkins мы сократили время разработчиков, которое они тратили на сборку, тестирование и развертку новых версий вручную.

Технологии:

Stack: Mule ESB, Java, Apache Maven, XML, XSLT.
Infrastructure: Jenkins, Git, Anypoint Studio.
Test Automation Libraries: MUnit.
DB: Oracle.
Protocols: HTTPS, JDBC, SOAP.

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

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

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

Многие из наших наработок по реализации Mule-решений на этом проекте вошли вошли в документ “Best Practices in Mule ESB”. В дальнейшем этот документ послужил основой для создания статьи Лучшие практики использования Mule ESB.