第50章 flatpack


Flatpack コンポーネント

Flatpack コンポーネントは、FlatPack ライブラリー を使用して固定幅と区切られたファイル解析をサポートします。注記: このコンポーネントは、flatpack ファイルからオブジェクトモデルへの消費のみをサポートします。オブジェクトモデルから flatpack 形式に書き込みを行うことは(yet)できません。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-flatpack</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

Copy to Clipboard Toggle word wrap

URI 形式

flatpack:[delim|fixed]:flatPackConfig.pzmap.xml[?options]
Copy to Clipboard Toggle word wrap
または、設定ファイルのない区切りファイルハンドラーには、以下を使用します。
flatpack:someName[?options]
Copy to Clipboard Toggle word wrap
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

URI オプション

Expand
名前 デフォルト値 説明
delimiter , 区切りファイルのデフォルトの文字区切り文字。
textQualifier " 区切りファイルのテキスト修飾子。
ignoreFirstRecord true 最初の行が区切られたファイル(列ヘッダー用)で無視されるかどうか。
splitRows true Apache Camel 1.5 では、コンポーネントは各行を 1 つずつ、またはコンテンツ全体を一度に処理できます。
allowShortLines false *Camel 2.9.3:* 行を予想よりも短くし、追加の文字を無視します。
ignoreExtraColumns false *Camel 2.9.3:* 行を予想よりも長くし、追加文字を無視します。

  • flatpack:fixed:foo.pzmap.xml は、foo.pzmap.xml ファイル設定を使用して固定幅エンドポイントを作成します。
  • flatpack:delim:bar.pzmap.xml ファイル設定を使用して、bar.pzmap.xml ファイル設定を使用して区切られたエンドポイントを作成します。
  • flatpack:foo は、ファイル設定なしで foo という区切りエンドポイントを作成します。

メッセージヘッダー

Apache Camel は以下のヘッダーを IN メッセージに保存します。
Expand
ヘッダー 説明
camelFlatpackCounter 現在の行インデックス。splitRows=false の場合、カウンターは行の合計数です。

メッセージボディー

コンポーネントは、java.util.Map または java.util.List のコンバーターを持つ org.apache.camel.component.flatpack.DataSetList オブジェクトとして IN メッセージのデータを提供します。一度に 1 行を処理する場合は、通常 マップ が必要です(splitRows=true)。コンテンツ全体に List を使用します(splitRows=false)。リストの各要素は Map です。各 Map には、列名とそれに対応する値のキーが含まれます。
たとえば、以下の例から firstname を取得するには、次のコマンドを実行します。
  Map row = exchange.getIn().getBody(Map.class);
  String firstName = row.get("FIRSTNAME");
Copy to Clipboard Toggle word wrap
ただし、これを常に List として取得することもできます( splitRows=trueも同様です)。同じ例:
  List data = exchange.getIn().getBody(List.class);
  Map row = (Map)data.get(0);
  String firstName = row.get("FIRSTNAME");
Copy to Clipboard Toggle word wrap

ヘッダーおよびトレイルレコード

Flatpack のヘッダーおよびトレイル概念がサポートされます。ただし、固定されたレコード ID を使用する 必要があり ます。
  • ヘッダー レコードのヘッダー(小文字でなければなりません)
  • trailer レコードのトレイル(小文字でなければなりません)
以下の例は、ヘッダーとトレイルがあるこのファクトを示しています。必要でない場合は、それらのいずれかまたは両方を省略することができます。
    <RECORD id="header" startPosition="1" endPosition="3" indicator="HBT">
        <COLUMN name="INDICATOR" length="3"/>
        <COLUMN name="DATE" length="8"/>
    </RECORD>

    <COLUMN name="FIRSTNAME" length="35" />
    <COLUMN name="LASTNAME" length="35" />
    <COLUMN name="ADDRESS" length="100" />
    <COLUMN name="CITY" length="100" />
    <COLUMN name="STATE" length="2" />
    <COLUMN name="ZIP" length="5" />

    <RECORD id="trailer" startPosition="1" endPosition="3" indicator="FBT">
        <COLUMN name="INDICATOR" length="3"/>
        <COLUMN name="STATUS" length="7"/>
    </RECORD>
Copy to Clipboard Toggle word wrap

エンドポイントの使用

一般的なユースケースでは、別のルートでさらなる処理のためにファイルをこのエンドポイントに送信します。以下に例を示します。
  <camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
    <route>
      <from uri="file://someDirectory"/>
      <to uri="flatpack:foo"/>
    </route>

    <route>
      <from uri="flatpack:foo"/>
      ...
    </route>
  </camelContext>
Copy to Clipboard Toggle word wrap
Bean 統合を容易にするために、作成された各メッセージのペイロードを マップ に変換することもできます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat