Inbound イベント処理は、非同期動作です。アダプターは、FTP サーバーのポーリング、FTP サーバーからのイベントのプル、ビジネス・オブジェクトへの情報の変換、および構成済みエンドポイントへのビジネス・オブジェクトの送信を行います。
アダプターは、FTPPollFrequency プロパティーに基づいて定期的に、FTP サーバーのイベント・ディレクトリーのファイルをポーリングします。ファイルがイベント・ディレクトリーに到達すると、アダプターは、ファイル全体を読み取って、このファイルをアダプター・サーバー上のローカル・イベント・ディレクトリーにダウンロードします。ファイルがダウンロードされた後、アダプターは、FTPArchiveDirectory プロパティーで指定される FTP サーバーのアーカイブ・ディレクトリーにファイルを保存するか、ユーザー構成に基づいてファイルを削除します。イベント・ディレクトリー、アーカイブ・ディレクトリー、ポーリング間隔、ポーリング数量 (1 回のポーリング周期でポーリングするファイルの数) は、すべて構成可能なパラメーターです。
ビジネス・オブジェクトが正常にエンドポイントに通知された後、イベントはローカル・ファイル・システム上のアーカイブ・ディレクトリー内にアーカイブされるか、または構成に基づいて削除されます。
アダプターは、イベントをアーカイブするか削除する必要があります。そうしないと、イベントは再びポーリングされます。
アダプターは、関数セレクター (コンポーネントに対して呼び出す操作を選択する
) およびデータ・バインディングを介してビジネス・オブジェクトをエンドポイントに送信します。
Inbound イベント処理は、次のステップで構成されます。
- FTP サーバーが、ファイルの形式でイベントを生成します。
- FTP アダプターが、イベント・ディレクトリーからファイルをポーリングします。
- ファイルがアダプター・サーバーに完全にダウンロードされます。
- SplittingFunctionClassName プロパティーおよび SplitCriteria プロパティーに基づいて、ファイルが分割されます。
- 区切り文字に基づいて分割を行う必要がある場合は、この機能を実行するクラスおよび分割基準が提供されます。
- ファイル・サイズに基づいて分割を行う必要がある場合は、この機能を実行するクラス名が提供されます。
分割ロジックを含むカスタム・クラスを実装することができます。アダプターは、このクラス用の Java™ インターフェースを提供します。インターフェースの詳細を以下に示します。
public interface SplittingFunctionalityInterface extends Iterator{
public int getTotalBOs(String filename) throws SplittingException;
public void setBODetails(String filename, int currentPosition, int totalBOs,
boolean includeEndBODelimiter) throws SplittingException;
public void setSplitCriteria(String splitCriteria);
public void setEncoding(String encoding);
public void setLogUtils(LogUtils logUtils);
public boolean isSplitBySize()
}
- public int getTotalBOs(String filename) throws SplittingException
このメソッドは、filename で指定されるイベント・ファイル内に存在するビジネス・オブジェクトの総数を返します。
- public void setSplitCriteria(String splitCriteria)
このメソッドは、splitCriteria を取ります。これは、イベント・ファイル内に存在するビジネス・オブジェクトの数に基づいています。各ビジネス・オブジェクトは、next() 呼び出しで返されます。
- public void setLogUtils(LogUtils logUtils)
このメソッドを使用して LogUtils オブジェクトを設定します。これは、ユーザーがトレースおよびログ・メッセージをファイルに書き込むために使用するクラスです。
- public void setEncoding(String encoding)
このメソッドを使用して、イベント・ファイル内容のエンコードを設定します。ファイル内容の読み取り時に、このエンコードが使用されます。このエンコードは、SplitCriteria にも使用されます。
- public void setBODetails(String filename, int currentPosition,
int totalBOs, boolean includeEndBODelimiter) throws SplittingException
このメソッドを使用して、現在のビジネス・オブジェクト番号を設定し、next() 呼び出しが行われるたびに currentPosition に設定されているビジネス・オブジェクト番号が返されるようにします。このメソッドは includeEndBODelimiter パラメーターも取ります。このパラメーターを true に設定すると、ビジネス・オブジェクトの内容の末尾に SplitCriteria が組み込まれます。このメソッドは、常に next() 呼び出しの前に呼び出す必要があります。 これは、next() メソッドが、このメソッドで設定したビジネス・オブジェクトのビジネス・オブジェクトの内容を返すようにするためです。
- イテレーターには、hasNext()、next、および remove() という 3 つのメソッドがあり、これらも実装する必要があります。next() メソッドは、setBODetails() で設定されたビジネス・オブジェクト位置のビジネス・オブジェクト内容を返します。
ビジネス・オブジェクトの位置が設定されていない場合は失敗します。hasNext() メソッドは、setBODetails() で設定されたビジネス・オブジェクトの位置が存在するかどうかを示します。hasNext() 呼び出しの前に、setBODetails() メソッドを呼び出す必要があります。remove() メソッドは、EventPersistence テーブルから削除されるビジネス・オブジェクト項目ごとに呼び出されます。
このメソッドでイベント・ファイルを削除しないでください。使用されているリソースのみをクリーンアップしてください。
- public boolean isSplitBySize()
このメソッドは、イベント・ファイルの構文解析を、サイズまたは区切り文字のいずれに基づいて行うかを示します。
- アダプターは、関数セレクターを介してビジネス・オブジェクトをエンドポイントに送信します。関数セレクターでは、構成済みデータ・バインディングが呼び出され、テキスト・レコードをビジネス・オブジェクトに変換します。ビジネス・オブジェクトはエンドポイントに送信されます。