Блоги

Интересное в интеграции. Часть 2. AtlasMap.

AtlasMap - ещё один интеграционный проект или фреймворк, как вам будет угодно. Фреймворк предназначен для удобного преобразования данных. Проект достаточно активно развивается и среди разработчиков есть представители Red Hat. Одним из основных вариантов использования является запуск в рамках описанного в предыдущем посте Syndesis. Но есть и другие возможности использования. Например, разработан компонент Apache Camel - camel-atlasmap. Для разработки преобразований есть UI, который можно запустить отдельно.

Для запуска редактора нужно скачать или собрать jar файл - как это сделать подробно описано тут. UI запускается, используя порт 8585 и выглядит следующим образом:

Данный фреймворк можно использовать для преобразования Java, XML, JSON объектов. UI достаточно прост - есть 2 панели слева и справа. В левую можно загрузить описание входящих схем (xsd, json - http://json-schema.org/, Java Bean), в правую - итоговых. После загрузки схем появляется список полей и можно настроить маппинг сопоставляя поля из левой и правой панели при помощи курсора. Сложные сопоставления делаются при помощи условий и трансформаций - https://docs.atlasmap.io/#mapping-fields-in-atlasmap. Можно задать логику обработки коллекций. 

UI достаточно удобный и понятный. Как было сказано, AtlasMap интегрирован в Syndesis - там его использование происходит очень органично. Например, вы определили входную точку интеграционного маршрута в виде периодического чтения из таблицы в базе данных. После этого вы добавляете в маршрут AtlasMap - при этом Syndesis уже подставил в левую панель данные о таблице из базы данных и вам остаётся определить схему на выходе и составить правила преобразований. Также, есть возможность проверить преобразования - при помощи механизма превью.

Если вы используете standalone версию UI, то после настройки преобразований вы можете экспортировать файл с преобразованиями, который имеет расширение adm. Этот файл можно использовать, например в маршруте Apache Camel, следующим образом:

<to uri="atlas:atlasmap-product.adm" />

Удачных вам интеграций!

17.12.2020