Oracle Payablesインプリメンテーション・ガイド リリース12 E05606-01 | ![]() 目次 | ![]() 前へ | ![]() 次へ |
自動銀行伝送機能を使用するには、その前に、次の表に示す銀行伝送プログラムでファイルを正常に伝送できるようにJavaクラスを導入する必要があります。
これらのプログラムには、特定の銀行とのデータの伝送に必要なロジックを提供するJavaクラスが必要です。Javaクラスは、銀行伝送設定ごとに1つ導入する必要があります。
このドキュメントでは、導入に必要なJavaクラスを銀行クラスと呼びます。
注意: Oracle PayablesおよびOracle Cash Managementには、事前定義の銀行Javaクラスがいくつか用意されています。使用している銀行用のJavaクラスが事前定義されているかどうかを確認するには、OracleサポートのWebサイトであるMetaLinkを参照してください。特定のニーズに一致する銀行クラスが提供されていない場合でも、導入時に参考として役立つ事前定義の銀行伝送設定が見つかる場合があります。
このドキュメントでは、伝送プログラムの機能および伝送プログラムに必要な銀行クラスが提供するロジックについて説明します。また、銀行クラスが使用できる事前定義のハッシュテーブル・パラメータのリストを提供し、銀行クラスの導入方法に関するガイドラインを示します。
このドキュメントは、読者にJavaコードの記述に関する実践的な知識があることを前提としています。
このドキュメントは、読者が次のドキュメントをすでに参照していることも前提としています。
『Oracle Cash Managementユーザーズ・ガイド』の銀行伝送詳細の定義に関する項
『Oracle Cash Managementユーザーズ・ガイド』の自動銀行伝送機能に関する項
『Oracle Cash Managementユーザーズ・ガイド』の銀行取引明細書および支払例外の取得に関する項
伝送プラグラムでファイルを正常に伝送するには、次の内容が必要です。
伝送コード設定: これは銀行が提供する伝送の詳細で、「銀行伝送詳細」ウィンドウで入力します。伝送プログラムおよび銀行クラスは、この詳細を使用して特定の銀行と通信します。詳細には、銀行のホスト・アドレス、パスワード、伝送プロトコルおよびファイル命名規則などの情報が含まれています。「銀行伝送詳細」ウィンドウの「プログラム」フィールドには、特定の銀行設定に対して導入した銀行クラスも指定します。伝送コードの詳細は、『Oracle Cash Managementユーザーズ・ガイド』の「銀行伝送詳細」ウィンドウ・リファレンスに関する項を参照してください。
銀行クラス: 導入するこのクラスには、5つのメソッドが含まれています。各メソッドには、伝送プログラムの特定のタスクを実行するコードが含まれています。たとえば、1つのメソッドには、支払ファイルを銀行に伝送するためのすべての詳細ロジックが含まれています。銀行クラスは、この伝送コード情報を使用してタスクを完了します。たとえば、Javaメソッドでは、銀行のシステムにアクセスするときに、この伝送コードに指定されているユーザー名とパスワードを使用します。
伝送プログラムが発行されると、そのプログラムには特定の伝送コードがパラメータとして割り当てられます。伝送プログラムにカスタム・ロジックが必要な場合は、特定の伝送コードの「プログラム」フィールドで指定した銀行クラスがインスタンス化されます。次に、伝送プログラムでは必要なメソッドをコールします。このメソッドにより、必要なタスクが実行され、メソッドが正常に完了したかどうかを示すパラメータがプログラムに戻されます。
次のJavaクラスのテンプレートが用意されています。このテンプレートをコピーして、銀行に対する伝送ロジックを定義する際の開始点として使用できます。
$AP_TOP/java/transmission/BankClassTemplate.txt
このテンプレートには、銀行クラスの導入方法に関する追加情報が含まれています。
導入する各銀行クラスには、次のコンポーネントを含める必要があります。
package文: 次のpackage文を使用します。編集はしないでください。
package oracle.apps.ap.transmission;
import文: 次のimport文を使用します。編集はしないでください。
import java.io.;
import java.sql.;
import java.util.Hashtable;
import java.util.StringTokenizer;
import java.util.Vector;
import oracle.apps.fnd.common.VersionInfo;
クラス名の定義: 銀行Javaクラス名。この名称は「銀行伝送詳細」ウィンドウの「プログラム」フィールドに入力します。銀行の名称を使用することをお薦めします。同じ銀行に対して複数のクラスを定義する場合は、一意の接尾辞が付いた銀行名を使用することをお薦めします。次の構文を使用して、「<classname>」を、使用するクラスの名称に置き換えます。
public class <classname> extends Bank
コンストラクタ: 空のコンストラクタを定義します。
メソッド: 使用する伝送プログラムで使用されるメソッドを導入する必要があります。各メソッドでは、特定の銀行にとって必要なタスクを実行する必要があります。
public void ModifyPaymentファイル(ハッシュテーブル): このメソッドには、支払ファイル伝送プログラムが、Payablesで作成した支払ファイルを銀行の仕様に従って変更するためのロジックが含まれています。支払ファイルの変更には、テキスト、フォーマットおよび暗号化の追加が含まれる場合があります。支払ファイルを変更する必要がない場合、このメソッドをテンプレート内で未編集の状態にしておきます。
public void SendPaymentファイル(ハッシュテーブル): このメソッドには、支払ファイル伝送プログラムが、支払ファイルを銀行の通信プロトコルに従ってローカル・ディレクトリから銀行に送信するための伝送ロジックすべてが含まれています。
public void ReceiveConfirmation(ハッシュテーブル): このメソッドには、支払ファイル確認取得プログラムが、支払の入金確認ファイルを銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。
public void ReceiveStatement(ハッシュテーブル): このメソッドには、(日中)銀行取引明細書の取得プログラムが(日中)銀行取引明細書を銀行から取得してローカル・ディレクトリに格納するために使用するすべての伝送ロジックが含まれている必要があります。
public void ReceiveException(ハッシュテーブル): このメソッドには、支払例外の取得プログラムが、支払例外レポートを銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。
銀行クラスが、アプリケーション・データベース表のデータを直接読み取ったり、更新することはありません。銀行クラスは、事前定義のハッシュテーブル・パラメータを使用して、Oracleアプリケーションから必要なすべての情報にアクセスします。次の表に、メソッドで使用できる読取り専用および書込み可能ハッシュテーブル・パラメータを示します。
メソッドでは、読取り専用パラメータを使用して、Oracleアプリケーションから必要なすべての情報を取得する必要があります。
たとえば、銀行に送信する支払ファイルが格納されているディレクトリにアクセスするには、次の構文でPaymentLocalDirectoryパラメータを使用できます。
mPaymentFileDir = table.get ( "PaymentLocalDirectory" ) .toString () ;
次の表に、メソッドに使用できる読取り専用パラメータを示します。メソッドは、これらのパラメータ値を上書きできません。これらの値の多くは、伝送コードで定義されています。AP_TRANSMISSIONS_SETUP表の列名は、「銀行伝送詳細」ウィンドウの各フィールドに対応しています。各フィールドの詳細は、『Oracle Cash Managementユーザーズ・ガイド』の「銀行伝送詳細」ウィンドウ・リファレンスに関する項を参照してください。
ハッシュテーブルの読取り専用パラメータ名 | 注釈 |
---|---|
TransmissionId | AP_TRANSMISSIONS_SETUP.TRANSMISSION_ID |
TransmissionCode | AP_TRANSMISSIONS_SETUP.TRANSMISSION_CODE |
BankBranchId | AP_TRANSMISSIONS_SETUP.BANK_BRANCH_ID |
TransmissionProgram | AP_TRANSMISSIONS_SETUP.TRANSMISSION_PROGRAM |
UserName | AP_TRANSMISSIONS_SETUP.USERNAME |
Password | AP_TRANSMISSIONS_SETUP.PASSWORD |
Protocol | AP_TRANSMISSIONS_SETUP.PROTOCOL |
ProtocolAddress | AP_TRANSMISSIONS_SETUP.PROTOCOL_ADDRESS |
ExternalIdentifier | AP_TRANSMISSIONS_SETUP.EXTERNAL_IDENTIFIER |
TransmissionEmail | AP_TRANSMISSIONS_SETUP.TRANSMISSION_EMAIL |
ConfirmationEmail | AP_TRANSMISSIONS_SETUP.CONFIRMATION_EMAIL |
PaymentLocalDirectory | AP_TRANSMISSIONS_SETUP.LOCAL_PAY_DIRECTORY |
ConfirmationLocalDirectory | AP_TRANSMISSIONS_SETUP.LOCAL_CONF_DIRECTORY |
BankPayDirectory | AP_TRANSMISSIONS_SETUP.BANK_PAY_DIRECTORY |
ConfirmationBankDirectory | AP_TRANSMISSIONS_SETUP.BANK_CONF_DIRECTORY |
PayFileExt | AP_TRANSMISSIONS_SETUP.PAY_FILE_EXT |
PayFilePrefix | AP_TRANSMISSIONS_SETUP.PAY_FILE_PREFIX |
PayFileSuffix | AP_TRANSMISSIONS_SETUP.BANK_FILE_SUFFIX |
ConfirmationFileExt | AP_TRANSMISSIONS_SETUP.CONF_FILE_EXT |
ConfirmationFilePrefix | AP_TRANSMISSIONS_SETUP.CONF_FILE_PREFIX |
ConfirmationFileSuffix | AP_TRANSMISSIONS_SETUP.CONF_FILE_SUFFIX |
StatementEmail | AP_TRANSMISSIONS_SETUP.STATEMENT_EMAIL |
ExceptionEmail | AP_TRANSMISSIONS_SETUP.EXCEPTION_EMAIL |
IntraEmail | AP_TRANSMISSIONS_SETUP.INTRA_STATEMENT_EMAIL |
StatementLocalDirectory | AP_TRANSMISSIONS_SETUP.LOCAL_STMT_DIRECTORY |
ExceptionLocalDirectory | AP_TRANSMISSIONS_SETUP.LOCAL_EXCEPTION_DIRECTORY |
IntraLocalDirectory | AP_TRANSMISSIONS_SETUP.LOCAL_INTRA_DIRECTORY |
StatementBankDirectory | AP_TRANSMISSIONS_SETUP.BANK_STMT_DIRECTORY |
ExceptionBankDirectory | AP_TRANSMISSIONS_SETUP.BANK_EXCEPTION_DIRECTORY |
IntraBankDirectory | AP_TRANSMISSIONS_SETUP.BANK_INTRA_DIRECTORY |
StatementFilePrefix | AP_TRANSMISSIONS_SETUP.STMT_FILE_PREFIX |
ExceptionFilePrefix | AP_TRANSMISSIONS_SETUP.EXCEPTION_FILE_PREFIX |
IntraFilePrefix | AP_TRANSMISSIONS_SETUP.INTRA_FILE_PREFIX |
StatementFileSuffix | AP_TRANSMISSIONS_SETUP.STMT_FILE_SUFFIX |
ExceptionFileSuffix | AP_TRANSMISSIONS_SETUP.EXCEPTION_FILE_SUFFIX |
IntraFileSuffix | AP_TRANSMISSIONS_SETUP.INTRA_FILE_SUFFIX |
StatementFileExt | AP_TRANSMISSIONS_SETUP.STMT_FILE_EXT |
ExceptionFileExt | AP_TRANSMISSIONS_SETUP.EXCEPTION_FILE_EXT |
IntraFileExt | AP_TRANSMISSIONS_SETUP.INTRA_FILE_EXT |
CONNECTION | データベース接続情報を格納します。 |
FileName | 処理中の支払ファイル名を格納します。支払ファイル伝送プログラムでのみ使用されます。 |
RequestId | コンカレント・プログラムの要求IDを格納します。 |
銀行クラスは、各メソッドのステータスを、そのメソッドをコールした伝送プログラムに戻すために、ハッシュテーブルの事前定義された書込み可能パラメータを使用する必要があります。たとえば、支払ファイルを変更するメソッドが正常に完了したことを支払ファイルの送信伝送プログラムに伝えるには、次の構文を使用できます。
table.put ( "ModifyPaymentFileStatus",Boolean.TRUE) ;
次の表に、各メソッドの書込み対象となるパラメータを示します。
ハッシュテーブルの書込み可能パラメータ名 | このパラメータに書込みを行うメソッド | 注釈 |
---|---|---|
ModifyPaymentFileStatus | public void ModifyPaymentファイル(ハッシュテーブル) | メソッドが正常終了したかどうかに応じてTRUEまたはFALSEのブール値。 |
SendPaymentFileResult | public void SendPaymentファイル(ハッシュテーブル) | メソッドが正常終了したかどうかに応じてTRUEまたはFALSEのブール値。 |
ReceiveFileResult | public void ReceiveConfirmation(ハッシュテーブル) | メソッドが正常終了したかどうかに応じてTRUEまたはFALSEのブール値。 |
DownloadedFilesVector | public void ReceiveConfirmation(ハッシュテーブル) | このベクターには、プログラムで取得したすべての確認ファイル名が保持されます。 |
ReceiveFileResult | public void ReceiveStatement(ハッシュテーブル) | メソッドが正常終了したかどうかに応じてTRUEまたはFALSEのブール値。 |
ReceiveFileResult | public void ReceiveException(ハッシュテーブル) | メソッドが正常終了したかどうかに応じてTRUEまたはFALSEのブール値。 |
DownloadedFilesVector | public void ReceiveStatement(ハッシュテーブル) | このベクターには、プログラムで取得したすべての取引明細書ファイル名が保持されます。 |
DownloadedFilesVector | public void ReceiveException(ハッシュテーブル) | このベクターには、プログラムで取得したすべての例外ファイル名が保持されます。 |
各銀行クラス・メソッドでは、メソッドの実行時に発生する可能性のあるすべての例外を処理する必要があります。次に、メソッドで発生する可能性がある例外の例を示します。
メソッドは銀行のディレクトリに接続しようとしましたが、銀行はそのパスワードを受け入れません。
メソッドが、銀行の特定のディレクトリに接続できません。
メソッドが失敗した場合、そのメソッドのステータス・パラメータにFALSEの値を書き込む必要があります。これらのステータス・パラメータのリストは、前述した「必須、書込み可能パラメータ」の項にあります。
メソッドをコールした伝送プログラムのログ・ファイルに、エラー・メッセージを記録する場合は、Utilities.WriteLogFile関数を使用できます。この記録は、独自のデバッグ用に、または伝送プログラムを発行するユーザーへのガイドラインとして使用できます。
次に、支払ファイルを銀行に送信するメソッドで使用できる構文の例を示します。
if(communicationProtocol.send())
table.put("SendPaymentFileResult", Boolean.TRUE);
else
{
Utilities.WriteLogFile( "Unable to send payment file." );
table.put("SendPaymentFileResult", Boolean.FALSE);
この項では、導入する必要があるJavaメソッドと、伝送プログラムがそのJavaメソッドをコールする場合について説明します。これらのメソッドでは、説明されているタスクを正確に実行する必要があります。
各メソッドは、ハッシュテーブルのすべてのパラメータ値にアクセスできます。「銀行クラスと銀行伝送プログラム間の通信」を参照してください。メソッドは、読取り専用パラメータの値を上書きできません。
このプログラムにより2つの銀行クラス・メソッドがコールされ、1つのメソッドでは必要に応じて支払ファイルが変更、もう1つのメソッドでは支払ファイルが銀行に伝送されます。
ユーザーが、自動銀行伝送用に設定された支払文書を使用する支払バッチまたはクイック支払をフォーマットすると、システムでは次の処理が次の順序で実行されます。
支払フォーマット・プログラムによって、AP_BANK_TRANSMISSIONS表にステータスがNEWのレコードが作成されます。このレコードには、支払ファイル情報と伝送コードの銀行詳細が含まれています。
ワークフロー・ビジネス・イベント・システムに、支払フォーマットのイベントが呼び出されます。これによって、支払ファイル伝送プログラムが起動します。
この支払ファイル伝送プログラムにより支払ファイルがローカル・ディレクトリにコピーされ、public void ModifyPaymentファイル(ハッシュテーブル)メソッドがコールされます。
支払ファイルを銀行に送信する支払ファイル伝送プログラムにより、このメソッドがコールされ、Payablesで作成した支払ファイルが変更されます。変更には、テキスト、フォーマットまたは暗号化の追加が含まれる場合があります。銀行で支払ファイルの変更が必要ない場合は、テンプレートからこのメソッドをコピーして編集しないでください。
このメソッドでは、次の処理を次の順序で実行する必要があります。
銀行で変更が必要な場合は、銀行の仕様に基づいて、ローカル・ディレクトリにある支払ファイルを変更します。
ModifyPaymentFileStatusパラメータの値を戻して、変更が正常終了したかどうかを示します。
メソッドが正常終了した場合は、支払ファイル伝送プログラムによって、レコード・ステータスがMODIFIEDに更新されます。失敗した場合は、MODIFY ERRORに更新されます。
支払ファイル伝送プログラムでは、このメソッドがModifyPaymentFileStatusパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。
このメソッドをテンプレート内で編集しない場合、メソッドではこのパラメータに単にTRUEの値を戻します。これにより、支払ファイル伝送プログラムは支払ファイルを変更せずに続行できます。
このメソッドには、支払ファイル伝送プログラムが、支払ファイルを銀行に送信するための伝送ロジックすべてが含まれています。
支払ファイル伝送プログラムでは、支払ファイル・レコードをMODIFIEDに更新した後、このpublic void SendPaymentファイル(ハッシュテーブル)メソッドをコールします。
このメソッドでは、次の処理を次の順序で実行する必要があります。
変更済の支払ファイルをローカル・ディレクトリから銀行に送信します。
SendPaymentFileResultパラメータの値を戻して、伝送が正常終了したかどうかを示します。
このメソッドが正常終了した場合、支払ファイル伝送プログラムにより、AP_BANK_TRANSMISSION表の支払ファイル・レコードのステータスがSENTに更新されます。次に、支払ファイル伝送プログラムによって、変更済の支払ファイルがAP_BANK_TRANSMISSIONSのCLOB列にアップロードされます。
このメソッドが失敗した場合は、支払ファイル伝送プログラムにより、レコード・ステータスがTRANSMISSION ERRORに更新されます。
ワークフローは、支払文書の伝送コードに指定したワークフロー・ロールに対して、伝送が正常終了したかどうか伝えるEメール通知を自動的に送信します。
このメソッドが失敗した場合、ユーザーは、支払バッチやクイック支払を取り消して最初から開始する必要があります。これは、この機能に再送信する機能が含まれていないためです。
支払ファイル伝送プログラムでは、このメソッドがSendPaymentFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが支払ファイルを銀行に正常に送信した場合はTRUE、失敗した場合はFALSEになります。
このメソッドには、支払ファイル確認取得プログラムが、支払の入金確認ファイルを銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。
ユーザーは、「要求の発行」ウィンドウで支払ファイル確認取得プログラムを起動するときに、銀行の伝送コードをプログラム・パラメータとして指定します。支払ファイル確認取得プログラムにより、このメソッドがコールされます。
このメソッドでは、次の処理を次の順序で実行する必要があります。
銀行のリモート・ディレクトリにあるすべての確認を1回のみ取得します。このメソッドでは、いったんコピーされたファイルは再度コピーされないことを保証する必要があります。
すべての確認ファイルを、ConfirmationLocalDirectoryパラメータで指定したローカル・ディレクトリに格納します。
取得したすべての確認ファイル名をDownloadFilesVectorに格納します。
ReceiveFileResultパラメータの値を戻して、確認ファイルの取得が正常終了したかどうかを示します。
次に、支払ファイル確認取得プログラムでは、伝送コードの確認受取人Eメール・フィールドで指定したワークフロー・ロールにEメールを送信します。このEメールは、支払確認の取得が正常終了したかどうかをユーザーに通知します。正常終了した場合、Eメールには確認ファイルのリストも含まれます。
支払確認の受信プログラムでは、このメソッドがReceiveFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。
支払確認の受信プログラムでは、このメソッドが銀行から取得したファイル名をこのベクター・パラメータに格納するように設定されています。
次に、このメソッドで使用できるコード構造のサンプルを示します。ただし、このコードは独自のコーディング規格を使用してコーディングできます。
Vector fileNamesVector = new Vector();
while (xxxxxx)
{
<<<<<<<<Receive logic>>>>>>>>>>
//add downloaded file to the vector
fileNamesVector.addelement(fileName);
}
tables.put("DownloadedFilesVector", fileNamesVector);
table.put("ReceiveFileResult", Boolean.TRUE);
前述のコード・サンプルの例では、「while」ロジックが、ダウンロードしたファイル名を必須ベクター「fileNamesVector」に格納するために使用されています。ダウンロードしたファイル名をDownloadedFilesVectorに格納するには、独自のロジックを使用できます。例については、「fileNamesVectorのコーディングの例」を参照してください。
このメソッドには、(日中)銀行取引明細書の取得プログラムが、(日中)銀行取引明細書を銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。ユーザーは、「要求の発行」ウィンドウで(日中)銀行取引明細書の取得プログラムを起動するときに、銀行の伝送コードをプログラム・パラメータとして指定します。
(日中)銀行取引明細書の取得プログラムにより、このメソッドがコールされます。このメソッドでは、次の処理を次の順序で実行する必要があります。
銀行のリモート・ディレクトリにあるすべての(日中)銀行取引明細書を1回のみ取得します。このメソッドでは、いったんコピーされたファイルは再度コピーされないことを保証する必要があります。
すべての(日中)銀行取引明細書を、StatementLocalDirectory/IntraLocalDirectoryパラメータで指定したローカル・ディレクトリに格納します。
取得したすべての(日中)銀行取引明細書名を、DownloadedFilesVectorに格納します。
ReceiveFileResultパラメータの値を戻して、(日中)銀行取引明細書の取得が正常終了したかどうかを示します。
次に、(日中)銀行取引明細書の取得プログラムでは、伝送コードの取引明細書のEメール・アドレスに指定したワークフロー・ロールが示すユーザーにEメールを送信します。このEメールは、(日中)銀行取引明細書の取得が正常終了したかどうかをそのユーザーに通知します。正常終了した場合、Eメールには(日中)銀行取引明細書のファイル名も含まれます。
(日中)銀行取引明細書の取得プログラムでは、このメソッドがReceiveFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。
(日中)銀行取引明細書の取得プログラムでは、このメソッドが銀行から取得したファイル名をこのベクター・パラメータに格納するように設定されています。
次に、このメソッドで使用できるコード構造のサンプルを示します。ただし、このコードは独自のコーディング規格を使用してコーディングできます。
Vector fileNamesVector = new Vector();
while (xxxxxx)
{
<<<<<<<<Receive logic>>>>>>>>>>
//add downloaded file to the vector
fileNamesVector.addelement(fileName);
}
tables.put("DownloadedFilesVector", fileNamesVector);
table.put("ReceiveFileResult", Boolean.TRUE);
前述のコード・サンプルの例では、「while」ロジックが、ダウンロードしたファイル名を必須ベクター「fileNamesVector」に格納するために使用されています。ダウンロードしたファイル名をDownloadedFilesVectorに格納するには、独自のロジックを設定できます。例については、「fileNamesVectorのコーディングの例」を参照してください。
このメソッドには、支払例外の取得プログラムが、支払例外レポートを銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。
ユーザーは、「要求の発行」ウィンドウで支払例外の取得プログラムを起動するときに、銀行の伝送コードをプログラム・パラメータとして指定します。支払例外の取得プログラムが、このメソッドをコールします。
このメソッドでは、次の処理を次の順序で実行する必要があります。
銀行のリモート・ディレクトリにあるすべての支払例外レポートを1回のみ取得します。このメソッドでは、いったんコピーされたファイルは再度コピーされないことを保証する必要があります。
すべての銀行取引明細書を、ExceptionLocalDirectoryパラメータで指定したローカル・ディレクトリに格納します。
取得したすべての支払例外レポート名をDownloadedFilesVectorに格納します。
ReceiveFileResultパラメータの値を戻して、支払例外レポートの取得が正常終了したかどうかを示します。
次に、支払例外の取得プログラムでは、伝送コードの例外のEメール・アドレスに指定したワークフロー・ロールが示すユーザーにEメールを送信します。このEメールは、支払例外レポートの取得が正常終了したかどうかをそのユーザーに通知します。正常終了した場合、Eメールには支払例外レポートのリストも含まれます。
支払例外の取得プログラムでは、このメソッドがReceiveFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。
この支払例外の取得プログラムでは、このメソッドが銀行から取得したファイル名をこのベクター・パラメータに格納するように設定されています。
次に、このメソッドで使用できるコード構造のサンプルを示します。ただし、このコードは独自のコーディング規格を使用してコーディングできます。
Vector fileNamesVector = new Vector();
while (xxxxxx)
{
<<<<<<<<Receive logic>>>>>>>>>>
//add downloaded file to the vector
fileNamesVector.addelement(fileName);
}
tables.put("DownloadedFilesVector", fileNamesVector);
table.put("ReceiveFileResult", Boolean.TRUE);
前述のコード・サンプルの例では、「while」ロジックが、ダウンロードしたファイル名を必須ベクター「fileNamesVector」に格納するために使用されています。ダウンロードしたファイル名をDownloadedFilesVectorに格納するには、独自のロジックを使用できます。例については、「fileNamesVectorのコーディングの例」を参照してください。
DownloadedFilesVectorはベクターの中のベクターです。内部ベクターの最初の要素は文字列のファイル名です。2番目のレベルのベクターは、今後、isFileMeaningfulなどのファイルに関する追加属性を2番目の要素で関連付けるために導入されています。次に、ABCDBank.javaファイルによるコードの導入方法のサンプルを示します。
StringTokenizer st =
new StringTokenizer( (String)table.get( "ResultStatement" ) );
.
while(st.hasMoreTokens())
{
String fileName = st.nextToken();
Utilities.WriteLogFile( "token = " + fileName );
.
if( fileName.startsWith( beginsWith )
&&
fileName.endsWith( endsWith ) )
{
table.put( type + "FileName", fileName );
Utilities.WriteLogFile( "receveing fileName = " + fileName );
............
//************* RELEVANT CODE BEGIN ****************
.
//a vector of file name and other attributes if required
Vector fileName = new Vector();
fileName.addElement( downloadedFileName );//java.lang.String,
attribute required
fileName.addElement( isFileMeaningful );//java.lang.Boolean,
attribute not required
fileName.addElement( <other attributes> );
.
//add fileName Vector to Vector that gets inserted in hashtable
fileNamesVector.addElement( fileName );
.
//************* RELEVANT CODE END ****************
............
}//while
.
//add fileName Vector to the hastable key as a Vector
table.put( "DownloadedFilesVector", fileNamesVector );
「銀行伝送詳細」ウィンドウの各フィールドを完了するために、必要なすべての情報を銀行から取得します。
このドキュメントを確認して、Javaメソッドの記述に必要なすべての情報を取得します。
ローカルの支払ファイルと確認ファイルで使用するローカル・ディレクトリ(「銀行伝送詳細」ウィンドウで指定)を、init.oraファイルのutl_file_dirパラメータに定義します。
銀行クラスのテンプレートの$AP_TOP/patch/115/readme/BankClassTemplate.txtをコピーします。
銀行クラスに一意の名称を指定します。
ヒント: 銀行名を銀行クラスの名称として使用します。同じ銀行に複数の伝送を設定しているときに、1つの銀行に複数の銀行クラスを定義する場合は、その銀行に関連した名称を各クラスに指定し、識別するための接尾辞をファイル名に追加します。
使用するプログラムによってコールされるJavaメソッドを導入します。例外処理を含めてください。
コードをコンパイルします。
生成した.classファイルが、オペレーティング・システムの$CLASSPATH変数で指定したディレクトリにあることを確認します。
「銀行伝送詳細」ウィンドウの各フィールドを完了します。
「銀行伝送詳細」ウィンドウの「プログラム」フィールドで、銀行クラスの名称を入力します。このフィールドでは大/小文字が区別されます。
コードをテストします。