Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

レコードの効率的なバッチ処理

RecordMap 機能は、一度に 1 つのレコードをインポートしますが、大量のレコードをインポートまたはエクスポートする場合は、RecordMap バッチを使用することで大幅に効率を高めることができます。RecordMap バッチ機能は同種のレコードを取り扱い、バッチのすべてのレコードを一度に処理します。バッチにはオプションで、先行するヘッダ・レコードと後続のトレーラ・レコードを含めることができます。

RecordMap バッチを作成するには、%PersistentOpens in a new tab および EnsLib.RecordMap.BatchOpens in a new tab から継承されるクラスを実装します。Batch クラスには、特定のバッチに関連付けられたヘッダおよびトレーラの解析と書き出しを処理するメソッドが含まれています。ヘッダを解析および書き出すためのコードを用意する必要があります。シンプルなヘッダとトレーラの場合は、EnsLib.RecordMap.SimpleBatchOpens in a new tab クラスを使用できます。このクラスは Batch クラスを継承し、シンプルなヘッダとトレーラを処理するためのコードを提供します。より複雑なヘッダおよびトレーラ・データを処理する必要がある場合は、これらの 2 つのバッチ実装のいずれかを拡張します。

バッチ処理では、X12 のような、プロダクションの他のメッセージ形式に使用されるアプローチに従って処理が行われます。これは特に、RecordMap バッチ・オブジェクトを処理する組み込みのビジネス・オペレーションに関連します。このようなビジネス・オペレーションは、 EnsLib.RecordMap.BaseOpens in a new tab を拡張する RecordMap オブジェクトまたはバッチ・オブジェクト、あるいは BatchRolloverRequest タイプの要求のどちらかを受け入れます。特定のバッチのレコードを受け取ると、バッチが開かれ、バッチ・ヘッダが一時ファイルに書き込まれます。その後、オペレーションが受け取ったそのバッチ内のあらゆるオブジェクトが書き込まれます。同期的な要求の場合は、クラス名、ID、およびそのバッチに対してこれまでに書き込まれたレコード数が EnsLib.RecordMap.BatchResponseOpens in a new tab で返されます。バッチ・オブジェクト (これはデフォルトのバッチである場合があります) の受信によって、一時ファイルへのバッチ・トレーラの書き込みが開始され、その後そのビジネス・オペレーションのアダプタによってこのファイルが必要な宛先に送信されます。バッチ・オブジェクト自体を受け取った場合は、そのバッチ全体が一時ファイルに書き出され、その後このファイルが必要な場所に転送されます。

バッチ・オペレーションでは、デフォルト・バッチ・オプションもサポートしています。この場合、バッチにまだ属していないレコードがデフォルト・バッチに追加されます。このバッチの出力は、バッチ・オブジェクトをオペレーションに送るか、オペレーションに BatchRolloverRequest を送ることによって開始できます。デフォルト・バッチに対してスケジュール・ベースまたはカウント・ベースのロールオーバを使用するように、ビジネス・オペレーションを構成することもできます。これらのオプションはいずれもビジネス・オペレーションで構成します。それぞれのオプションは同時に使用できます。

サービスに関するオプションは、主に、ビジュアル・トレースでバッチ内のメッセージを表示する方法に影響します。

RecordMap バッチ・オペレーションは、最終的な出力ファイルの生成プロセスで一時ファイルを作成します。これらの一時ファイルの場所は、RecordMap バッチ・オペレーションの IntermediateFilePath 設定を指定することで制御できます。ネームスペースのデータベースがミラーリングされている場合は、RecordMap バッチ・オペレーション時に正常にフェイルオーバーできるように、すべてのミラー・メンバが一時ファイルにアクセスできることが重要です。ミラーリングの詳細は、"高可用性ガイド" を参照してください。

Important:

RecordMap バッチ・メッセージでは一対多のリレーションシップが使用されているので、すべてのレコードを検索対象として目的の変換を容易に実現できます。ただし、このプロセスでは多くのメモリが消費されるので、<STORE> エラーが発生することがあります。プロセスで使用するメモリの増強、入力ファイルの分割、一対多のリレーションシップではなく SQL を使用するようにカスタマイズした変換の実装などが必要になることがあります。

FeedbackOpens in a new tab