今回はTransform Messageにスポットを当てて、DataWeaveの使い方を押さえておきましょう。
DataWeaveの書き方
DataWeaveはTransform MessageやSet PayloadなどのValueに式を記載します。基本的な書き方としては、まず1行目にDataWeaveのバージョンを記載します。今回はMule4に対応しているDataWeave2.0を使用するため、「%dw 2.0」を記載します。
2行目以降については、出力形式を指定するために「output {MIMEタイプ}」を記載します。payloadの値をJSON形式で出力する場合は以下のような書き方になります。「—」以降が実際に出力される内容になります。
%dw 2.0
output application/json
---
payload
「—」以前で変数を定義することも可能で、データを加工したり退避させて使うことも可能です。以下のように、「—」の前にfruitsという変数を定義して記載すると、
%dw 2.0
output application/json
var fruits = {fruit : "banana",quantity : 3}
---
fruits
fruitsの内容がJSON形式で出力されます。
{
"fruit": "banana",
"quantity": 3
}
DataWeaveの使い方例
変換として使う
まずは基本的な使い方として、形式変換があります。フロー内ではJSON形式が見やすい形にはなりますが、ファイルから取り込んだ場合やJavaと絡める場合など、必ずしもJSON形式で処理されるとは限りません。
例えば、以下フローのSetFruitsを変数名fruitsとして以下JSON形式のデータを記載します。
%dw 2.0
output application/json
---
{
fruits :{
fruit : "banana",
quantity : 3
}
}
Transform Messageを以下のようにMIMEタイプを指定することでXML形式に変換することができます。
%dw 2.0
output application/xml
---
vars.fruits
このようにXML形式でレスポンスが返ります。
<?xml version='1.0' encoding='UTF-8'?>
<fruits>
<fruit>banana</fruit>
<quantity>3</quantity>
</fruits>
「output application/xml」を違うMIMEタイプに変えれば、その型に変換されます。「output application/java」にすると、Javaで扱うHashMapとして変換されます。
データ加工
DataWeaveには四則演算や論理演算などを使用することができます。「++」演算子を使用することで文字列を結合することができます。以下のように記載した場合、
%dw 2.0
output application/json
---
{
title : "吾輩は" ++ "猫である",
price : 800 * 2
}
文字列が結合された状態、数値は計算された状態で出力されます。
{
"title": "吾輩は猫である",
"price": 1600
}
より複雑な変換を伴う処理は、関数を使用したりJavaでクラスを作成してメソッドを呼び出すことも可能です。別パートにてこちらも動作検証していきたいと思います。
ここまではDataWeaveの基本中の基本として使い方を紹介しました。次回はより複雑かつ実用的な使い方を掘り下げてみたいと思います。
コメント