トランスフォーマーは、受信したデータをUMOコンポーネントが扱えるオブジェクト型に変換したり、送信するオブジェクトをトランスポート(例:JmsMessage)が扱うオブジェクト型に変換します。UMOコンポーネントが受け取れるオブジェクト型であるようにするために、トランスフォーマーを受信するエンドポイントに設定することができます。送信エンドポイントに設定されたトランスフォーマーは、イベントを発行する前にエンドポイントが正しいオブジェクト型を受けることを保証します。再利用をより簡単にできるようにするために、複数のトランスフォーマーを連鎖することもできます。エンドポイントが1つ以上のトランスフォーマーを使うように設定するには、設定ファイルでトランスフォーマーを空白で区切って記述([設定ガイド]を参照)するか、プログラムからsetNextTransformer()メソッドを使ってトランスフォーマーを連鎖します。
受信トランスフォーマーは以下のような場合があります:
送信トランスフォーマーは以下のような場合もあります:
全てのESB Muleトランスフォーマーは org.mule.transformer.UMOTransformer を実装する必要があります。抽象トランスフォーマーでこのトランスフォーマーが提供するオブジェクト型を制御するメソッドを定義し、返却値を検証します。開発者はただ1つのメソッド transform() を実装するだけです。
標準トランスフォーマー
ESB Muleで標準で提供しているトランスフォーマーです。各トランスポートには、独自のトランスポート・タイプがある場合があります。それらの詳細に付いてはトランスポート・ガイドを参照にしてください。
XML
これらのトランスフォーマーは _org.mule.transformers.xml_パッケージにあります。
[XmlToObject <-> ObjectToXml]
XStreamを使ってXML文とJavaオブジェクトの変換する。
[XSLT]
XSLを使ってXMLペイロードを変換する。
[DomToXml <-> XmlToDom]
DOMオブジェクトとXML文の変換する。
[JXPath]
XPath表記をつかって、検索してオブジェクト・グラフを抽出。
Scripting
スクリプトによるオブジェクトの変換。例:JavaScript又はGroovyスクリプト。
CSV
これらのトランスフォーマーは org.mule.transformers.csv パッケージにあり、以下のプロパティがあります:
| プロパティ |
説明 |
適用 |
| fieldNames |
列ヘッダのList |
CSVToMapList only |
| separator |
区切り文字。デフォルトではコンマ「,」。 |
All |
| quoteCharacter |
quoteに使う文字。デフォルトは未定義。 |
All |
| firstLineLabels |
CSVデータの最初の行を列名として扱うか。 |
CSVToMapList only |
[CSVToMapList]
CSVをMapsListに変換する。各行はMapに対応付けられる。Mapのキーは列の位置、提供された列名、CSVデータの最初の行から取得した列名のいずれかになる。
[MapListToCSV]
MapsのListをCSV形式のStringに変換する。各行はMapとなる。
[MapToCSV]
Mapを1行のCSV形式のStringに変換する。
暗号化
これらのトランスフォーマーは org.mule.transformers.encryption パッケージにあります。
[暗号 <-> 解読]
指定されたUMOEncrpytionStrategyの実装を使ってデータを暗号、解読する。
圧縮
これらのトランスフォーマーは org.mule.transformers.compression パッケージにあり、特別な設定は不要です。
GZipCompressTransformer <-> GZipUncompressTransformer
データ圧縮と解凍用のトランスフォーマー。
エンコーディング
これらのトランスフォーマーは org.mule.transformers.codec パッケージにあり、特別な設定は不要です。
SGMLEntityEncoder <-> SGMLEntityDecoder
SGMLエンティティ・エンコーディングとの変換。
Base64Encoder <-> Base64Decoder
UUEncoder <-> UUDecoder
UCEncoder <-> UCDecoder
オブジェクト
これらのトランスフォーマーは org.mule.transformers.simple パッケージにあり、特別な設定は不要です。
ByteArrayToSerializable <-> SerializableToByteArray
オブジェクトのシリアライズとでシリアライズ。
StringToByteArray <-> ByteArrayToString
Stringとバイト配列の変換。
推奨手順
どのようにESB Muleで変換してらよいのか考えていられるかもしれません。簡単なESB Muleで変換を行う場合の推奨手順はここにあります:[変換の推奨手順]トランスフォーマはUMOComponentが処理できるオブジェクト型を受け取れるようにするために、データを受信するエンドポイントに設定することができます。送信エンドポイントに設定されたトランスフォーマは、エンドポイントがデータを送信する前にデーがを正しい形式に変換します。複数のトランスフォーマを連鎖させて、トランスフォーマが変換する処理の粒度を細かくして、トランスフォーマの再利用を高めることができます。エンドポイントに1つよりも多いトランスフォーマを設定するには、トランスフォーマを半角の空白で区切りるか(詳細に付いては[設定ガイド]を参照にしてください )、プログラムからsetNextTransformer()メソッドを使ってトランスフォーマを追加します。
受信トランスフォーマの例:
以下は送信トランスフォーマの例です:
ESB Muleの全てのトランスフォーマは抽象クラス org.mule.transformer.UMOTransformer を実装します。この抽象はトランスフォーマが使うオブジェクト・タイプを制御するメソッドを定義し、結果を検証します。開発者はメソッド transform() の一つを実装するだけです。
標準トランスフォーマー
以下はESB Muleに用意されている標準トランスフォーマの一覧です。トランスポート毎に独自のトランスフォーマもあります。それらに付いてはトランスポート・ガイドを参照にしてください。
XML
以下のトランスフォーマは org.mule.transformers.xml パッケージにあります。
[XmlToObject <-> ObjectToXml]
XStreamを使ってXMLとJavaオブジェクトとの変換を行います。
[XSLT]
XSLを利用してXMLペイロードを変更を行います。
[DomToXml <-> XmlToDom]
DOMオブジェクトとXMLとの変換を行います。
[JXPath]
XPath式を使ってオブジェクト・グラスを検索・抽出します。
Scripting
スクリプトを使ってオブジェクトの変換を行います。(例:JavaScript,Groovyスクリプト。
CSV
以下のトランスフォーマは org.mule.transformers.csv パッケージのcsvモジュールにあります。以下のプロパティを持ちます:
| プロパティ |
説明 |
適用 |
| fieldNames |
列ヘッダのList |
CSVToMapListのみ |
| separator |
フィールド区切り文字-デフォルトはコンマ「,」 |
全て |
| quoteCharacter |
引用符として使う文字-デフォルトは設定なし |
全て |
| firstLineLabels |
CSVデータの1行目を列名として扱うかを指定する論理型値 |
CSVToMapListのみ |
[CSVToMapList]
CSVをMapsのListに変換する。各行はMapとなる。Mapのキーは例の位置(最初の0)又はCSVデータから取得した列名
[MapListToCSV]
MapsのListをCSV形式の文字列(String)に変換します。各行はMapとなります。
[MapToCSV]
Mapを1行のCSV形式の文字列(String)に変換します。
暗号化
以下のトランスフォーマは org.mule.transformers.encryption パッケージにあります。
[暗号(encryption) <-> 解読(decryption)]
データを暗号・解読するUMOEncrpytionStrategyを実装したトランスフォーマ。
圧縮
以下のトランスフォーマは org.mule.transformers.compression パッケージにあります。特別な設定は不要です。
GZipCompressTransformer <-> GZipUncompressTransformer
A pair of transformers that can compress and uncompress data.
エンコーディング
以下のトランスフォーマは org.mule.transformers.codec パッケージにあります。特別な設定は不要です。
SGMLEntityEncoder <-> SGMLEntityDecoder
SGMLエンティティ・エンコーディングとの変換を行います。
Base64Encoder <-> Base64Decoder
UUEncoder <-> UUDecoder
UCEncoder <-> UCDecoder
オブジェクト
以下のトランスフォーマは org.mule.transformers.simple パッケージにあります。特別な設定は不要です。
ByteArrayToSerializable <-> SerializableToByteArray
オブジェクトのシリアライズとデシリアライズ
StringToByteArray <-> ByteArrayToString
Stringとバイト配列との変換
トランスフォメーションのベスト・プラクティス
ESB Muleでどのように変換を行ったらよいのか考えているかもしれません。ESB Muleの使って変換のベスト・プラクティスに付いては[ここ]を参照にしてください。