DataWeave 言語

DataWeave 2.1 は Mule 4.1 と互換性があります。 Mule 4.1 の標準サポートは 2020 年 11 月 2 日に終了しました。このバージョンの Mule は、拡張サポートが終了する 2022 年 11 月 2 日にその​​すべてのサポートが終了します。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

DataWeave は、Mule アプリケーションを通過したデータにアクセスし、変換するための MuleSoft 式言語です。DataWeave は、Mule アプリケーション内でスクリプトと式を実行する Mule Runtime Engine と緊密に統合します。

DataWeave スクリプトは、Mule イベントのデータに対して動作します。一般には、これを使用してメッセージペイロード内のデータにアクセスし、データを変換します。たとえば、アプリケーション内のコンポーネントで 1 つのシステムからデータを取得した後、DataWeave を使用して、そのデータ内の選択した項目を新しいデータ形式に変更して出力します。次に、アプリケーション内の別のコンポーネントを使用してそのデータを別のシステムに渡すことができます。

DataWeave 言語のいくつかの重要な機能を以下の簡単な例で示します。

  • ある形式から別の形式へのデータ変換。例では、​application/json​ 入力を ​application/xml​ 出力に変換しています。

  • 入力データ構造内の項目にアクセスするデータセレクタ。スクリプトは、メッセージペイロード入力から JSON オブジェクトのキー (​payload.title​ など) を選択し、その値を出力します。

  • 入力項目 ​upper(payload.author)​ の値に対するコア DataWeave 関数の使用。

入力ペイロード
{
  "title": "Java 8 in Action",
  "author": "Mario Fusco",
  "year": 2014
}
変換
%dw 2.0
output application/xml
---
{
  order: {
    'type': 'Book',
    'title': payload.title,
    'author': upper(payload.author),
    'year': payload.year
  }
}
出力ペイロード
<?xml version='1.0' encoding='UTF-8'?>
<order>
  <type>Book</type>
  <title>Java 8 in Action</title>
  <author>MARIO FUSCO</author>
  <year>2014</year>
</order>

さらに複雑なデータ操作と変換が可能です。

DataWeave では、XML および JSON に加えていくつかのファイル入力形式と出力形式がサポートされます。また、データを操作するための多くの関数が提供され、データ構造内の項目にアクセスするためのセレクタが含まれます。配列、キー-値ペア、Java オブジェクト、文字列、数値に加えて多くのデータ型を処理できます。型強制がサポートされるほか、スクリプト内での独自の関数、データ型、変数の作成と使用もサポートされます。

アプリケーションを Anypoint Studio または Design Center で作成するか、手書きの XML 設定ファイルとして作成する場合、メッセージプロセッサ (コンポーネント、コネクタ、モジュール) 内で DataWeave の式とスクリプトを記述します。

  • Transformer コンポーネントの目的は、簡単な形式変換または複雑なデータ抽出および変換プロセスにかかわらず、データ変換を実行するスクリプトを作成することです。

    「Transform Message コンポーネント」​を参照してください。

  • 多くの Mule メッセージプロセッサが DataWeave 式をサポートしているため、必要な Mule イベントの各部分でコア DataWeave 関数にアクセスし、使用できます。

    「DataWeave スクリプト」​で Set Payload のインライン DataWeave スクリプトの例を参照してください。また、​message​ 属性については​「Logger コンポーネント」​の例、Set Payload (​<ee:set-payload>​) および Set Variable コンポーネントについては​「For Each スコープ」​の例、​<file:content>​ については File Connector のドキュメントを参照してください。