Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule Runtime Engine では、さまざまなコンポーネントのデータアクセスを一元化する TypedValue
という型付けされたデータ構造を使用します。このデータ構造は実際のデータとそのデータ型の両方へのアクセスを提供します。データ型は 2 つの値 (MIME タイプとデータのエンコード) で構成されます。
Mule は TypedValue
データ構造を使用してすべての変数とペイロードを保存します。また、Anypoint Platform File Connector からの List
のような操作では、結果が TypedValue
インスタンスで返されるため、DataWeave は読み込むさまざまな種別のファイル (JSON、XML、CSV など) をリストできます。
DataWeave では常に TypedValue
インスタンスが出力されます。また、使用するライターが TypedValue
インスタンスのデータ型に基づいて判断されます。ただし、DataWeave スクリプトで output
ディレクティブを使用してデータ型を手動で指定できます。
Mule が実行しているスクリプトがメッセージ処理項目に割り当てられている場合、Mule から DataWeave にその項目のメタデータに基づいてどのデータ型を想定すべきかが伝えられます。たとえば、データ型が Plain Old Java Object (Pojo) の場合、DataWeave はインスタンス化するクラスだけでなく、Java ライターを使用して出力を生成する必要があることも把握できます。
DataWeave は TypedValue
インスタンスに含まれるデータ型を使用し、MIME タイプに基づいて使用すべきリーダー、MIME タイププロパティに基づいてそのリーダーの設定方法 (エンコード、リーダープロパティ) を決定します。
データ型を決定できない場合、DataWeave は次の手順に従います。
スクリプトが使用している入力種別を確認する。
すべての入力が互換か同じデータ型の場合、DataWeave はそのデータ型を使用します。たとえば、スクリプトに <set-payload value="#[payload.someValue]/>
が含まれている場合、DataWeave はそのペイロードのデータ型を調べ、ペイロードが JSON であれば JSON ライターを使用します。スクリプトに異なるデータ型から複数の入力がある場合、DataWeave はエラーをスローします。
たとえば、スクリプトに <set-payload value="#[payload.someValue ++ vars.myVar]/>
が含まれていて、その vars.myBar
が XML 型で payload
が JSON 型の場合、DataWeave はエラーをスローします。場合によっては、特に XML を操作するときには、Set Payload 操作の式は、無効な XML 構造が生成されたために失敗します。
入力が使用されない場合、DataWeave は Java ライターを使用する。
たとえば、DataWeave がスクリプト <set-payload value="#[\{a: true}]/>
を読み込むとき、Java ライターを使用して ("a", true) が含まれるエントリで java.util.Map
オブジェクトを出力します。
Logger メッセージプロセッサーの場合、DataWeave には出力作成時のエラーを回避するための特別な機能があります。まず、スクリプトが使用している入力種別の判別を試みてから、対応するライターを使用して出力を生成します。ライターがデータ構造を作成できないために DataWeave が失敗すると、次は有効なデータ構造を出力できる DataWeave ライターが使用されます。