DataWeave バージョン 1 から 2 への移行

DataWeave ヘッダーのコンテンツ

DataWeave ではヘッダーのほとんどのディレクティブが変更されました。​%dw​ ディレクティブは例外です。ほとんどの場合 ​%​ が削除され、一部はキーワードが短縮されています。

DataWeave 1.0 DataWeave 2.0 コメント

%dw 1.0

%dw 2.0

%input

input

Mule アプリケーションフローでは、DataWeave 2.0 は先行するコンポーネントで指定された MIME タイプ (​outputMimeType​) とパラメーターに基づいて、入力 MIME タイプとそのリーダープロパティを認識します。入力 MIME タイプは、ヘッダーの ​input​ ディレクティブを使用して定義されなくなりました。 ただし、​input​ ディレクティブは、​ストリーミングされたデータのスクリプトの検証​などの特定のケースで引き続き使用されます。

%output

output

%var

var

%function

fun

%namespace

ns

フローコントロール

DataWeave 2 ではフローコントロールが若干変更されました。

When Otherwise

when otherwise​ ステートメントは ​if else​ に置き換わります。次に例を示します。

Mule 3 の例: DataWeave 1
{
    orderStatus: "complete" when flowVars.purchaseOrderStatus == "C" otherwise "incomplete"
}
Mule 4 の例: DataWeave 2
{
    orderStatus: if(vars.purchaseOrderStatus == "C") "complete" else "incomplete"
}

パターンマッチャー

DataWeave 2 ではパターン一致が変更されました。キーワード ​case​ と (​default​ ではなく) ​else​ が追加されます。また、​case​ キーワードで明示的に区切られるので、ケースをカンマ (​,​) で区切らなくなりました。

Mule 3 の例: DataWeave 1
'world' match {
    :string -> true,
    default -> false
  }
Mule 4 の例: DataWeave 2
'world' match {
    case is String -> true
    else -> false
  }

型のパターンマッチャーの場合は、​is​ キーワードを設定する必要があります。

型の参照

型の参照から ​:​ が削除され、すべてがキャメルケースになりました。したがって、​:string​ は ​String​ になりました。

オブジェクトの強制型変換

DataWeave 1.0 では、オブジェクトからキー - 値ペアを選択するには、以下を実行する必要がありました。

Mule 3 の例: DataWeave 1
%var payload = {a: 1, b:2}
---
payload.a as :object

上記の DataWeave 1.0 の式は、​{a:1}​ を返します。これは強制型変換なので、自動強制型変換メカニズムにも含まれており、望ましくない、または予期しない結果が生じます。

DataWeave 2.0 では強制型変換が削除され、キー - 値ペアの括弧を選択する新しいセレクター (​&​) が導入されています。

Mule 3 の例: DataWeave 2
var payload = {a: 1, b:2}
---
payload.&a

この式も ​{a:1}​ を返します。

条件付きキー - 値の括弧

DataWeave 1.0 では、条件付きキー - 値ペアは ​when​ キーワードで宣言されます。

Mule 3 の例: DataWeave 1
{
    (a: 1) when payload.product == "Mule"
}

DataWeave 2.0 では、​if​ キーワードを使用します。

Mule 4 の例: DataWeave 2
{
    (a: 1) if payload.product == "Mule"
}