2018年12月21日金曜日

atlasmap.io に注目!

Red Hat サポートエンジニアの古市です。
赤帽エンジニアAdvent Calendar 2018の21日目の記事を担当します。本日のお題は atlasmap です。

今年の11月8日に開催された Red Hat Tech Nightで、Red Hat Fuse Online という iPaaS製品やそのアップストリームに位置するコミュニティー syndesis をご紹介しました。
記憶にない方やイマイチ理解できなかった方は、赤帽エンジニアでも度々投稿されている、佐藤匡剛さんの記事をご覧ください。iPaaSについてご理解いただけるはずです。(インストール手順などは、syndesis.ioで公開されている最新情報をご確認ください)

オープンソースの iPaaS: Syndesis を使ってみる (2017/8/30)

Fuse Online は "GUI で簡単にシステム間連携のソリューションを作れる"ような製品ですから、システム間で異るデータ形式(Java, JSON, XML)やデータ構造が要求されるケースも当然想定されており、Web UI(Data Mapperと呼びます)を使いデータの内容を適切にマッピングする事もできます。
このマッピング機能ですが、厳密には atlasmap プロジェクトの成果物を syndesis プロジェクトが活用しています。

atlasmap プロジェクトの webサイトはこちらです。
https://www.atlasmap.io/

個人的に注目している点ですが、Fuse Onlinesyndesis を使わずとも、スタンドアローンで Data Mapper を使ったデータマッピングが可能です。定義されたデータマッピングは、Javaプログラムでもちろん使用することができます。
Apache Camel用に camel-atlasmap が提供されており、Camel routeを使う事で更に簡単に定義したデータマッピングを使用できます。

それでは早速、DataMapper を使ってみましょう。
1: DataMapper のビルドと実行
こちらの READMEファイルに記載された手順を実行することで、Data Mapperをスタンドアローンで起動することができます。
https://github.com/atlasmap/atlasmap/blob/master/README.md
一応、昨日 実施した作業内容をのこしておきます。

$ git clone https://github.com/atlasmap/atlasmap
$ cd atlasmap
$ ./mvnw clean install -DskipTests
$ cd standalone
$ ../mvnw -Pitests spring-boot:run

最終的には、このようなログをご確認いただけます。

2018-12-20 14:18:01.864  INFO 16432 --- [           main] io.atlasmap.standalone.Application       : Started Application in 4.124 seconds (JVM running for 4.474)
2018-12-20 14:18:01.864  INFO 16432 --- [           main] io.atlasmap.standalone.Application       : ### AtlasMap Data Mapper UI started at port: 8585 ###

ご利用されているブラウザーで、localhost:8585 にアクセスしてください。DataMapper が表示されるはずです。



無事に起動を確認された方は、なんとなく UI をいじってみてください。5分ぐらい触っていただくと、なんとなくわかります。
左側の "Source" で、変換前のデータ構造/形式をインポートして表示します。
右側の "Target" で、変換後のデータ構造/形式をインポートして表示します。

現時点では、Java、XML、JSON形式のデータ構造に対応しています。
インポート方法ですが、"Source" や "Target" と書かれた右隣にある矢印ボタンにマウスカーソルをあわせると、"import instance or schema file" とポップアップがでるので、なんとなくわかります。
説明文から気が付くかと思いますが、xml schema ではなく、 xmlファイルを読み込ませても データ構造を解析してくれます。Javaですと jarアーカイブで複数クラスを読み取らせることもできます。
隣にある プラスアイコンも、ポップアップから機能を理解できます。例えば jarアーカイブを取り込んだ場合、パッケージとクラス名を記入すると、マッピング用に該当クラスの解析結果が出力されます。



"Source" と "Target" にそれぞれデータ構造をインポートした後は、それぞれのデータ カラムをクリックすることで、マッピング作業を実施できます。
右側のパネルをみると、Actionパネルで 分割や結合の指定もできるのが読み取れます。

Fuse Online 7.2から提供された機能ですが、画面右上の 設定用ギアアイコン をクリックし、"Show Mapping Preview"にチェックを入れると、ダミーデータを使ったシミュレートも可能です。




マッピング作業が終了したら、画面右上にある 出力矢印のアイコンをクリックし、定義済みファイルをエクスポートします。



年内を目処に、次回は実行方法についてまた記事を書きたいと思います。
赤帽ブログを通して告知しますので引き続きよろしくお願いします。