10.6. トランスフォーマー

トランスフォーマーは、ルート定義で宣言された Input TypeOutput Type に従って、メッセージの宣言的な変換を実行します。デフォルトの Camel メッセージは DataTypeAware を実装します。これは DataType で表されるメッセージタイプを保持します。

10.6.1. トランスフォーマーの仕組み

ルート定義は Input TypeOutput Type を宣言します。Input TypeOutput Type がランタイムのメッセージタイプと異なる場合、Camel 内部プロセッサーはトランスフォーマーを検索します。トランスフォーマーは現在のメッセージタイプを予想されるメッセージタイプに変換します。メッセージが正常に変換されたり、メッセージが想定されるタイプである場合は、メッセージデータタイプが更新されます。

10.6.1.1. データタイプフォーマット

データタイプのフォーマットは scheme:name です。scheme は、javaxml または json といったデータモデルのタイプで、name はデータタイプ名です。

注記

scheme のみを指定すると、そのスキームですべてのデータタイプと一致します。

10.6.1.2. サポート対象のトランスフォーマー

トランスフォーマー説明

データフォーマットトランスフォーマー

データフォーマットを使用した変換

エンドポイントトランスフォーマー

エンドポイントを使用した変換

カスタムトランスフォーマー

カスタムトランスフォーマークラスを使用した変換。

10.6.1.3. 共通オプション

すべてのトランスフォーマーには、トランスフォーマーでサポートされるデータタイプを指定するための以下の共通のオプションがあります。

重要

scheme または fromType および toType の両方を指定する必要があります。

名前説明

scheme

xml または json などのデータモデルのタイプ。たとえば、xml が指定されている場合は、トランスフォーマーがすべての java -> xml および xml -> java 変換に適用されます。

fromType

変換元の Data type

toType

変換する Data type

10.6.1.4. DataFormat トランスフォーマーオプション

名前説明

type

データフォーマットの種類

ref

データフォーマット ID への参照

bindy DataFormat タイプを指定する例は次のとおりです。

Java DSL の場合

BindyDataFormat bindy = new BindyDataFormat();
bindy.setType(BindyType.Csv);
bindy.setClassType(com.example.Order.class);
transformer()
    .fromType(com.example.Order.class)
    .toType("csv:CSVOrder")
    .withDataFormat(bindy);

XML DSL の場合

<dataFormatTransformer fromType="java:com.example.Order" toType="csv:CSVOrder">
    <bindy id="csvdf" type="Csv" classType="com.example.Order"/>
</dataFormatTransformer>