BatchFTP OTD ノードを使用すると、FTP 処理を制御するコラボレーションの特定のアダプタ設定パラメータを設定できます。いったん設定パラメータを設定したら、このコラボレーションを使用する各該当アダプタコンポーネントで同じパラメータを定義する必要がありません。
BatchFTP OTD の Payload ノードは、バイト配列 (byte[] ) として定義済みです。この定義により、アダプタはバイナリデータと文字データの両方を処理できます。
たとえば、「data」ノードが String (java.lang.String) として定義されている別の OTD (別のアダプタの OTD や、ユーザーが定義した OTD など) を使用できます。その String を BatchFTP OTD の Payload ノードにマップすると、コラボレーションエディタは、自動的に型変換を行い、次の例に示したようなコードを作成します。
この機能は注意して使用してください。これは、多くの状況で機能しますが、デフォルトのエンコーディングが変換でエラーを引き起こすことがあります。
たとえば、文字列からバイトへの配列変換 (またはその逆) で生成される Java コードは次のようになります。
getoutput().setPayload(STCTypeConverter.toByteArray (getinput().getBlob())); |
または
getinput().setBlob(STCTypeConverter.toString (getoutput().getPayload())); |
ブロブデータをバイト配列として定義した場合、型変換は不要です。変換が必要な場合、コラボレーションエディタは、前の例に示しているように、Java 仮想マシン (JVM) のデフォルトエンコーディングを使用してコードへの変換を実行します。
前に説明したように、デフォルトエンコーディングおよび変換は、多くの状況で機能します。ただし、たとえば .zip ファイルのようなバイナリデータで、エンコーディングが変換でエラーを引き起こすことがあります。データ文字セットと JVM のデフォルトエンコーディングに応じて、適切なエンコーディングを選択してください。ほとんどの場合、エンコーディング文字列「ISO-8859-1」を使用するのが最善の選択です。
このエンコーディングを使用するには、エンコーディング文字列を追加することによってコードを手作業で変更します。前の例では、「ISO-8859-1」を使用するコードは次のようになります。
getoutput().setPayload(STCTypeConverter.toByteArray (getinput().getBlob(), "ISO-8859-1")); |
または
getinput().setBlob(STCTypeConverter.toString (getoutput().getPayload(), "ISO-8859-1")); |
この文字列を使用すると、この型変換の問題が解決されます。詳細は、該当する JVM エンコーディングのリファレンスマニュアルを参照してください。
フィールド要素に加えて、BatchFTP OTD の Client ノードには、アダプタのクライアントインタフェース機能を拡張するメソッドが含まれます。これらのメソッドは、OTD の適切な使用に不可欠であるため、ここで詳しく説明します。次のメソッドがあります。
get(): リモート FTP サーバーからファイルを取得し、その内容をデータペイロードとして格納します。このメソッドは、Target Directory Name および Target File Name パラメータに基づいて一致する最初のファイルを取得し、その内容をデータペイロード (バイト配列) として格納します。次にすべての転送後コマンドを実行します。
このメソッドを呼び出したあとに、メソッド getPayload() を介してペイロードの内容を取得できます。
取得対象のファイルがない場合、入れ子にされた例外として java.io.FTPFileException を含む例外を受け取ります。
put(): ペイロードのデータを FTP サーバーに配置します。つまり、Payload ノードからリモート FTP サーバーに追加アクション、つまり出力アクションを実行し、次にすべての転送後コマンドを実行します。
送信対象のファイルがない場合、入れ子にされた例外として java.io.FTPFileException を含む例外を受け取ります。
アダプタのデータストリーミング機能を使用している場合、get() と put() メソッドは異なる処理をします。この処理の詳細は、「Batch Adapter によるコンポーネント間のデータストリーミング」セクションを参照してください。
reset(): Client ノードを前に実行した初期設定の直後の状態に戻します。
reset() メソッドは、Batch FTP OTD と BatchLocalFile OTD の両方で使用できます。reset メソッドは、同一の executeBusinessRules() の実行中に別の転送用に OTD を再使用しなければならない場合に呼び出してください (たとえば、動的構成機能を使用しているとき)。reset() メソッドは、OTD 全体をリセットせずに、Client ノードの内容をリセットします。まず reset() を呼び出さずに別の転送を試みると、システムは例外をスローし、アダプタのエラーログファイルにエントリを作成します。
restoreConfigValues(): 設定パラメータのデフォルトを関連アダプタ設定に復元できます。
connect()、disconnect()、および isConnected(): FTP サーバーに関する接続関連の処理を実行します。
シーケンス番号付け機能を使用すると、FTP のターゲットディレクトリ名またはファイル名がシーケンス番号を含むように設定できます。OTD のアダプタ設定パラメータを使用して、開始シーケンス番号および最大シーケンス番号を設定できます。
このパラメータは、名前パターン %# に使用します。
また、この機能は BatchLocalFile OTD でも使用できます。これらの設定パラメータの詳細は、「シーケンス番号付け」 (BatchFTP 接続マップ) を参照してください。
また、BatchFTP OTD では、ファイル転送処理の直前または直後に実行するコマンドを入力できます。詳細は、「ファイル転送前/転送後コマンド」のセクションを参照してください。