3

特定のルートでメッセージの本文に単純な変換を行うための最良の解決策は何だろうと思っていました。本文はCSVになる予定で、いくつかの条件が満たされた場合、いくつかのフィールドを変更したいと考えています。独自のプロセッサの作成を開始する前に、使用できる組み込み機能があるかどうかを知りたいです。

Camel でサポートされているスクリプト言語を調べてみましたが、良い例を見つけることができませんでした。これは、Groovy またはその他のスクリプト言語を使用した式で実行できると思いますが、いくつかのガイダンスが必要です。

誰か助けてくれませんか?

ありがとう!

4

1 に答える 1

2

実際には2つの別々のものがあります。構造化された方法で CSV データにアクセス (非整列化/整列化) し、実際のロジックを実行してデータを変換します。

CSVデータ形式 (またはflatpack ) を使用して、CSV データを List of List に取得し、プレーンな Java Bean (または必要に応じて groovy) で簡単に操作できます。次に、結果を取得して、同じコンポーネントで再度 CSV に変換できます。

大規模な CSV 構造と非常に複雑な変換がある場合、文字列のリストのリストではなく、オブジェクトのリストに CSV ファイルをマップしたい場合があります。入力データと出力データのクラスを定義し、Bindyコンポーネントを使用してそれらのクラスを CSV 行にバインドできます。その後、途中で Java オブジェクトのフィールドのマッピングを処理するだけで済みます。これはかなり簡単です。あるJavaオブジェクトを別のJavaオブジェクトにマッピングするためのフレームワークを掘り下げたい場合は、非常に優れたDozerを見ることができます(ただし、ほとんどの場合やり過ぎです)。

あなたが述べているように、実際のマッピングにはgroovyなどを使用できます。このトピックに関する例はあまり知られていませんが、かなり単純明快です。

<transform>
  <groovy> response.f1 = request.f2  </groovy>
</transform>

オブジェクトのリクエストとレスポンスが利用できる場所。

それを行うさらに別の方法は、より大きなフレームワークSmooksを使用することです。多くの異なるデータ形式間の解析とマッピングを処理します。Camel の一部ではありませんが、Smooks には Camel サポートが組み込まれており、オープン ソースです。いくつかの小さなマッピングを行うだけではやり過ぎかもしれませんが、複雑なマッピング シナリオを何度も処理する場合は、その価値があるかもしれません。

于 2013-08-20T05:23:37.280 に答える