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 の場合

Copy to Clipboard Toggle word wrap
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 の場合

Copy to Clipboard Toggle word wrap
<dataFormatTransformer fromType="java:com.example.Order" toType="csv:CSVOrder">
    <bindy id="csvdf" type="Csv" classType="com.example.Order"/>
</dataFormatTransformer>

10.6.2. エンドポイントトランスフォーマーオプション

名前説明

ref

エンドポイント ID への参照

uri

エンドポイント URI

Java DSL でエンドポイント URI を指定する例:

Copy to Clipboard Toggle word wrap
transformer()
    .fromType("xml")
    .toType("json")
    .withUri("dozer:myDozer?mappingFile=myMapping.xml...");

XML DSL でエンドポイント ref を指定する例:

Copy to Clipboard Toggle word wrap
<transformers>
<endpointTransformer ref="myDozerEndpoint" fromType="xml" toType="json"/>
</transformers>

10.6.3. カスタムトランスフォーマーオプション

注記

トランスフォーマーは org.apache.camel.spi.Transformer のサブクラスである必要があります。

名前説明

ref

カスタムトランスフォーマー Bean ID への参照

className

カスタムトランスフォーマークラスの完全修飾クラス名

カスタムトランスフォーマークラスを指定する例:

Java DSL の場合

Copy to Clipboard Toggle word wrap
transformer()
    .fromType("xml")
    .toType("json")
    .withJava(com.example.MyCustomTransformer.class);

XML DSL の場合

Copy to Clipboard Toggle word wrap
<transformers>
<customTransformer className="com.example.MyCustomTransformer" fromType="xml" toType="json"/>
</transformers>

10.6.4. トランスフォーマーの例

この例は 2 つの部分があり、最初の部分はメッセージを変換するエンドポイントトランスフォーマーを宣言します。2 番目の部分は、トランスフォーマーをルートに適用する方法を示します。

10.6.4.1. 最初の部分

xslt コンポーネントを使用して xml:ABCOrder から xml:XYZOrder に変換する、エンドポイントトランスフォーマーを宣言します。

Java DSL の場合

Copy to Clipboard Toggle word wrap
transformer()
    .fromType("xml:ABCOrder")
    .toType("xml:XYZOrder")
    .withUri("xslt:transform.xsl");

XML DSL の場合

Copy to Clipboard Toggle word wrap
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <transformers>
        <endpointTransformer uri="xslt:transform.xsl" fromType="xml:ABCOrder" toType="xml:XYZOrder"/>
    </transformers>
    ....
</camelContext>

10.6.4.2. 2 番目の部分

direct:abc エンドポイントが direct:xyz にメッセージを送信するときに、上記のトランスフォーマーは以下のルート定義に適用されます。

Java DSL の場合

Copy to Clipboard Toggle word wrap
from("direct:abc")
    .inputType("xml:ABCOrder")
    .to("direct:xyz");
from("direct:xyz")
    .inputType("xml:XYZOrder")
    .to("somewhere:else");

XML DSL の場合

Copy to Clipboard Toggle word wrap
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from uri="direct:abc"/>
        <inputType urn="xml:ABCOrder"/>
        <to uri="direct:xyz"/>
    </route>
    <route>
        <from uri="direct:xyz"/>
        <inputType urn="xml:XYZOrder"/>
        <to uri="somewhere:else"/>
    </route>
</camelContext>
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.