ヘッダーをスキップ

Oracle Payablesインプリメンテーション・ガイド
リリース12
E05606-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

銀行Javaクラスの導入

銀行伝送に対する銀行Javaクラスの導入

自動銀行伝送機能を使用するには、その前に、次の表に示す銀行伝送プログラムでファイルを正常に伝送できるようにJavaクラスを導入する必要があります。

伝送プログラム アプリケーション 短縮名
支払ファイル伝送プログラム Payables APXTRSND
支払ファイル確認取得プログラム Payables APXTRRCV
銀行取引明細書の取得プログラム Cash Management CEXP2PSM
日中銀行取引明細書の取得プログラム Cash Management CEP2PINT
支払例外の取得プログラム Cash Management CEXP2PER

これらのプログラムには、特定の銀行とのデータの伝送に必要なロジックを提供するJavaクラスが必要です。Javaクラスは、銀行伝送設定ごとに1つ導入する必要があります。

このドキュメントでは、導入に必要なJavaクラスを銀行クラスと呼びます。

注意: Oracle PayablesおよびOracle Cash Managementには、事前定義の銀行Javaクラスがいくつか用意されています。使用している銀行用のJavaクラスが事前定義されているかどうかを確認するには、OracleサポートのWebサイトであるMetaLinkを参照してください。特定のニーズに一致する銀行クラスが提供されていない場合でも、導入時に参考として役立つ事前定義の銀行伝送設定が見つかる場合があります。

このドキュメントでは、伝送プログラムの機能および伝送プログラムに必要な銀行クラスが提供するロジックについて説明します。また、銀行クラスが使用できる事前定義のハッシュテーブル・パラメータのリストを提供し、銀行クラスの導入方法に関するガイドラインを示します。

ドキュメントの前提事項

このドキュメントは、読者にJavaコードの記述に関する実践的な知識があることを前提としています。

このドキュメントは、読者が次のドキュメントをすでに参照していることも前提としています。

伝送プログラム、伝送コード設定および銀行クラスの関係

伝送プラグラムでファイルを正常に伝送するには、次の内容が必要です。

伝送プログラムが発行されると、そのプログラムには特定の伝送コードがパラメータとして割り当てられます。伝送プログラムにカスタム・ロジックが必要な場合は、特定の伝送コードの「プログラム」フィールドで指定した銀行クラスがインスタンス化されます。次に、伝送プログラムでは必要なメソッドをコールします。このメソッドにより、必要なタスクが実行され、メソッドが正常に完了したかどうかを示すパラメータがプログラムに戻されます。

銀行クラスのテンプレート

次のJavaクラスのテンプレートが用意されています。このテンプレートをコピーして、銀行に対する伝送ロジックを定義する際の開始点として使用できます。

 $AP_TOP/java/transmission/BankClassTemplate.txt

このテンプレートには、銀行クラスの導入方法に関する追加情報が含まれています。

銀行クラスに含める必要があるコンポーネント

導入する各銀行クラスには、次のコンポーネントを含める必要があります。

銀行クラスと銀行伝送プログラム間の通信

銀行クラスが、アプリケーション・データベース表のデータを直接読み取ったり、更新することはありません。銀行クラスは、事前定義のハッシュテーブル・パラメータを使用して、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つのメソッドでは支払ファイルが銀行に伝送されます。

ユーザーが、自動銀行伝送用に設定された支払文書を使用する支払バッチまたはクイック支払をフォーマットすると、システムでは次の処理が次の順序で実行されます。

public void ModifyPaymentファイル(ハッシュテーブル):

支払ファイルを銀行に送信する支払ファイル伝送プログラムにより、このメソッドがコールされ、Payablesで作成した支払ファイルが変更されます。変更には、テキスト、フォーマットまたは暗号化の追加が含まれる場合があります。銀行で支払ファイルの変更が必要ない場合は、テンプレートからこのメソッドをコピーして編集しないでください。

このメソッドでは、次の処理を次の順序で実行する必要があります。

メソッドが正常終了した場合は、支払ファイル伝送プログラムによって、レコード・ステータスがMODIFIEDに更新されます。失敗した場合は、MODIFY ERRORに更新されます。

ModifyPaymentFileStatusパラメータ

支払ファイル伝送プログラムでは、このメソッドがModifyPaymentFileStatusパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。

このメソッドをテンプレート内で編集しない場合、メソッドではこのパラメータに単にTRUEの値を戻します。これにより、支払ファイル伝送プログラムは支払ファイルを変更せずに続行できます。

public void SendPaymentファイル(ハッシュテーブル):

このメソッドには、支払ファイル伝送プログラムが、支払ファイルを銀行に送信するための伝送ロジックすべてが含まれています。

支払ファイル伝送プログラムでは、支払ファイル・レコードをMODIFIEDに更新した後、このpublic void SendPaymentファイル(ハッシュテーブル)メソッドをコールします。

このメソッドでは、次の処理を次の順序で実行する必要があります。

このメソッドが正常終了した場合、支払ファイル伝送プログラムにより、AP_BANK_TRANSMISSION表の支払ファイル・レコードのステータスがSENTに更新されます。次に、支払ファイル伝送プログラムによって、変更済の支払ファイルがAP_BANK_TRANSMISSIONSのCLOB列にアップロードされます。

このメソッドが失敗した場合は、支払ファイル伝送プログラムにより、レコード・ステータスがTRANSMISSION ERRORに更新されます。

ワークフローは、支払文書の伝送コードに指定したワークフロー・ロールに対して、伝送が正常終了したかどうか伝えるEメール通知を自動的に送信します。

このメソッドが失敗した場合、ユーザーは、支払バッチやクイック支払を取り消して最初から開始する必要があります。これは、この機能に再送信する機能が含まれていないためです。

SendPaymentFileResultパラメータ

支払ファイル伝送プログラムでは、このメソッドがSendPaymentFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが支払ファイルを銀行に正常に送信した場合はTRUE、失敗した場合はFALSEになります。

public void ReceiveConfirmation(ハッシュテーブル):

このメソッドには、支払ファイル確認取得プログラムが、支払の入金確認ファイルを銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。

ユーザーは、「要求の発行」ウィンドウで支払ファイル確認取得プログラムを起動するときに、銀行の伝送コードをプログラム・パラメータとして指定します。支払ファイル確認取得プログラムにより、このメソッドがコールされます。

このメソッドでは、次の処理を次の順序で実行する必要があります。

次に、支払ファイル確認取得プログラムでは、伝送コードの確認受取人Eメール・フィールドで指定したワークフロー・ロールにEメールを送信します。このEメールは、支払確認の取得が正常終了したかどうかをユーザーに通知します。正常終了した場合、Eメールには確認ファイルのリストも含まれます。

ReceiveFileResultパラメータ

支払確認の受信プログラムでは、このメソッドがReceiveFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。

DownloadedFilesVectorパラメータ

支払確認の受信プログラムでは、このメソッドが銀行から取得したファイル名をこのベクター・パラメータに格納するように設定されています。

このメソッドのサンプル・コード構造

次に、このメソッドで使用できるコード構造のサンプルを示します。ただし、このコードは独自のコーディング規格を使用してコーディングできます。

 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のコーディングの例」を参照してください。

public void ReceiveStatement(ハッシュテーブル):

このメソッドには、(日中)銀行取引明細書の取得プログラムが、(日中)銀行取引明細書を銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。ユーザーは、「要求の発行」ウィンドウで(日中)銀行取引明細書の取得プログラムを起動するときに、銀行の伝送コードをプログラム・パラメータとして指定します。

(日中)銀行取引明細書の取得プログラムにより、このメソッドがコールされます。このメソッドでは、次の処理を次の順序で実行する必要があります。

次に、(日中)銀行取引明細書の取得プログラムでは、伝送コードの取引明細書のEメール・アドレスに指定したワークフロー・ロールが示すユーザーにEメールを送信します。このEメールは、(日中)銀行取引明細書の取得が正常終了したかどうかをそのユーザーに通知します。正常終了した場合、Eメールには(日中)銀行取引明細書のファイル名も含まれます。

ReceiveFileResultパラメータ

(日中)銀行取引明細書の取得プログラムでは、このメソッドがReceiveFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。

DownloadedFilesVectorパラメータ

(日中)銀行取引明細書の取得プログラムでは、このメソッドが銀行から取得したファイル名をこのベクター・パラメータに格納するように設定されています。

このメソッドのサンプル・コード構造

次に、このメソッドで使用できるコード構造のサンプルを示します。ただし、このコードは独自のコーディング規格を使用してコーディングできます。

 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のコーディングの例」を参照してください。

public void ReceiveException(ハッシュテーブル):

このメソッドには、支払例外の取得プログラムが、支払例外レポートを銀行から取得してローカル・ディレクトリに格納するための伝送ロジックすべてが含まれています。

ユーザーは、「要求の発行」ウィンドウで支払例外の取得プログラムを起動するときに、銀行の伝送コードをプログラム・パラメータとして指定します。支払例外の取得プログラムが、このメソッドをコールします。

このメソッドでは、次の処理を次の順序で実行する必要があります。

次に、支払例外の取得プログラムでは、伝送コードの例外のEメール・アドレスに指定したワークフロー・ロールが示すユーザーにEメールを送信します。このEメールは、支払例外レポートの取得が正常終了したかどうかをそのユーザーに通知します。正常終了した場合、Eメールには支払例外レポートのリストも含まれます。

ReceiveFileResultパラメータ

支払例外の取得プログラムでは、このメソッドがReceiveFileResultパラメータに対するブール値を戻すように設定されています。この値は、メソッドが正常終了した場合はTRUE、失敗した場合はFALSEになります。

DownloadedFilesVectorパラメータ

この支払例外の取得プログラムでは、このメソッドが銀行から取得したファイル名をこのベクター・パラメータに格納するように設定されています。

このメソッドのサンプル・コード構造

次に、このメソッドで使用できるコード構造のサンプルを示します。ただし、このコードは独自のコーディング規格を使用してコーディングできます。

 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のコーディングの例」を参照してください。

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 );
 

銀行クラスの設定

前提条件

銀行クラスを導入する手順は、次のとおりです。

  1. 銀行クラスのテンプレートの$AP_TOP/patch/115/readme/BankClassTemplate.txtをコピーします。

  2. 銀行クラスに一意の名称を指定します。

    ヒント: 銀行名を銀行クラスの名称として使用します。同じ銀行に複数の伝送を設定しているときに、1つの銀行に複数の銀行クラスを定義する場合は、その銀行に関連した名称を各クラスに指定し、識別するための接尾辞をファイル名に追加します。

  3. 使用するプログラムによってコールされるJavaメソッドを導入します。例外処理を含めてください。

  4. コードをコンパイルします。

  5. 生成した.classファイルが、オペレーティング・システムの$CLASSPATH変数で指定したディレクトリにあることを確認します。

  6. 「銀行伝送詳細」ウィンドウの各フィールドを完了します。

    「銀行伝送詳細」ウィンドウの「プログラム」フィールドで、銀行クラスの名称を入力します。このフィールドでは大/小文字が区別されます。

  7. コードをテストします。