129.7. 使用方法


Smooks コンポーネントを使用すると、Camel 内から変換やフラグメント駆動ルーティングなどの Smooks のすべての機能を活用できます。以下のように、既存の Smooks 設定を取得して Camel ルートから参照できます。

Java

from("file:inputDir?noop=true")
    .to("smooks:smooks-config.xml")
    .to("jms:queue:order");

YAML

- from:
    uri: file:inputDir?noop=true
    steps:
      - to: smooks:smooks-config.xml
      - to: jms:queue:order

Smooks コンポーネントは、必須の設定ファイル (上記の例では smooks-config.xml) を使用して設定されます。上記のルートを見ると、コンポーネントがどのような種類の出力を生成しているかはわかりません。デフォルトでは、メッセージ本体の出力はストリームですが、次に示すように Smooks 設定で {https://www.smooks.org/xsd/smooks/smooks-core-1.6.xsd}exports を設定して出力のタイプを変更できます。

smooks-config.xml

<smooks-resource-list xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
        xmlns:edi="https://www.smooks.org/xsd/smooks/edi-2.0.xsd"
        xmlns:core="https://www.smooks.org/xsd/smooks/smooks-core-1.6.xsd">

    <core:exports>
        <core:result type="org.smooks.io.sink.StringSink"/>
    </core:exports>

    <edi:parser schemaUri="/edi-mapping-model.dfdl.xsd" segmentTerminator="%NL;" dataElementSeparator="*"
                compositeDataElementSeparator="^"/>

</smooks-resource-list>

この例の {https://www.smooks.org/xsd/smooks/smooks-core-1.6.xsd}exports 要素は、実行結果を文字列として Camel にエクスポートするように Smooks を設定します。結果を文字列としてエクスポートすると、結果全体がメモリー内に保持されるため、大きなペイロードで予期しないパフォーマンスの問題が発生する可能性があることに注意してください。

129.7.1. Bean ルーティング

Smooks は、Smooks 設定の {https://www.smooks.org/xsd/smooks/camel-1.5.xsd}route 要素を使用して、フラグメントを Camel エンドポイントにルーティングできます。たとえば、Smooks 設定で次のように宣言することでエンドポイントにルーティングできます。

smooks-config.xml

<smooks-resource-list xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
                      xmlns:jb="https://www.smooks.org/xsd/smooks/javabean-1.6.xsd"
                      xmlns:camel="https://www.smooks.org/xsd/smooks/camel-1.5.xsd">

  <!-- Create some bean instances from the input source... -->
  <jb:bean beanId="orderItem"  ...>
    <!-- etc... See Smooks Java Binding docs -->
  </jb:bean>

  <!-- Route bean to camel endpoints... -->
  <camel:route beanId="orderItem">
    <camel:to endpoint="direct:slow" if="orderItem.priority = 'Normal'"/>
    <camel:to endpoint="direct:express" if="orderItem.priority = 'High'"/>
  </camel:route>

</smooks-resource-list>

上記のファイルは、orderItem インスタンスの priority フィールドが NormalHigh のどちらであるかに応じて、bean context 内の Java Bean orderItem をエンドポイント direct:slowdirect:express にルーティングするように Smooks を設定します。routeOnElement XML 属性により、条件ではなくイベントセレクターに基づいてルーティングできるようになります。

smooks-config.xml

<smooks-resource-list xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
                      xmlns:jb="https://www.smooks.org/xsd/smooks/javabean-1.6.xsd"
                      xmlns:camel="https://www.smooks.org/xsd/smooks/camel-1.5.xsd">

  <!-- Create some bean instances from the input source... -->
  <jb:bean beanId="orderItem"  ...>
    <!-- etc... See Smooks Java Binding docs -->
  </jb:bean>

  <!-- Route bean to camel endpoints... -->
  <camel:route beanId="orderItem" routeOnElement="order">
    <camel:to endpoint="direct:all"/>
  </camel:route>

</smooks-resource-list>

注記

複雑なオブジェクトを Camel にルーティングする代わりに、pipeline を使用すると、テンプレート (FreeMarker など) で Bean を参照し、評価されたテンプレートを文字列 (XML、CSV など) として Camel にルーティングできます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る