Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
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 のドキュメントを参照してください。