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 ライターが使用されます。