DataWeave セレクタ

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

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

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

DataWeave 2 セレクタはオブジェクトと配列の構造をトラバースし、一致する値を返します。

セレクタは常にコンテキスト内で動作し、コンテキストには、変数への参照、オブジェクトリテラル、配列リテラル、または DataWeave 関数の呼び出しとすることができます。

以下で説明するセレクタの例については、​「データの抽出」​を参照してください。

セレクタ種別 構文 戻り値のデータ型

単一値

.keyName

一致するキーに属する値の任意の型

複数値

.*keyName

すべての一致するキーの値の配列

下位

..keyName

すべての一致する下位キーの値の配列

キー-値ペア

.&keyName

一致するキーを持つオブジェクト

Index (インデックス)

[<index>]

選択された配列インデックスの位置にある任意の型の値

範囲

[<index> to <index>]

選択されたインデックスからの値を含む配列

XML 属性

@​、​.@keyName

選択された属性の文字列値

名前空間

keyName.#

選択されたキーの名前空間の文字列値

キーの存在

keyName?​、​keyName.@type?

ブール (オブジェクトまたは XML 属性の選択されたキーが存在する場合は ​true​、存在しない場合は ​false​)

アサートの存在

keyName!

文字列: キーが存在しない場合の例外メッセージ

検索条件

keyName[?(boolean_expression)]

DataWeave 式が ​true​ を返す​場合​、キー-値ペアを含む配列またはオブジェクト。それ以外の場合、​null​ を返します。

メタデータ

.^someMetadata

Mule ペイロード、変数、属性の指定したメタデータの値を返します。セレクタは、クラス (​.^class​)、エンコード (​.^encoding​)、MIME タイプ (​.^mimeType​)、メディア種別 (​.^mediaType​)、未加工 (​.^raw​)、およびカスタムメタデータ (​.^myCustomMetadata​) の値を返すことができます。詳細は、​「データの抽出」​を参照してください。

変数に保存されたコンテンツでのセレクタの使用

すべてのセレクタが、​定義済みの Mule Runtime 変数​ (​payload​、​attributes​ など) および ​DataWeave 変数​で機能します。たとえば、​var myVar = { "id" : "1234", "name" : "somebody" }​ として定義された DataWeave 変数があるとします。DataWeave 式 ​myVar.name​ は ​"name"​ の値を返し、その値は ​"somebody"​ です。

Mule Runtime 変数を使用することで、​Mule イベント​データを選択できます。

抽出された値は、サポートされる DataWeave 値の型のいずれかのリテラル値 (たとえば、変数とは対照的) として処理されます。

抽出するデータ 構文

ペイロード

payload​ (例: payload.name​)

payload​ が ​{"name" : "somebody"}​ の場合、​payload.name​ は ​"somebody"​ を返します。

Mule ペイロードについての詳細は、​「メッセージペイロード」​を参照してください。

属性

attributes.<myAttributeName>

例については、​「属性」​を参照してください。

変数

<myVariableName>

名前の競合を回避するには、​variables​ を先頭に追加することができます。

variables.<myVariableName>

Muke 変数についての詳細は、​「Mule アプリケーションの変数」​を参照してください。

エラーオブジェクト

error

フローでのエラーに関する情報については、​#[error.cause]​ を使用できます。

フロー

flow

Logger でのフロー名: #[flow.name]

flow.name​ は一部のコアコンポーネント (Set Payload、Transform Message など) では機能しません。

フローについての詳細は、​「フローおよびサブフロー」​を参照してください。