ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

5.2.5 異常処理定義

異常処理定義画面では、アクティビティでメッセージ受信後に異常が発生した際の処理に関する定義を行います。

5.2.5.1 異常処理定義画面の概要

フロー定義エディタの[異常処理定義]タブをクリックすると、異常処理定義画面が表示されます。

以下に、画面イメージと各部品の説明を示します。

  1. [エラーメッセージ退避キュー(Destination)]

    エラーメッセージ退避用のキューとして使用するDestination名を定義します。

  2. [リトライ回数]

    非同期アプリケーション連携実行基盤でエラーを検知した場合に行う、リトライの最大回数を指定します。

  3. [リトライ間隔]

    リトライの間隔をミリ秒で指定します。異常の事象が発生後、指定された時間が経過した後、リトライを開始します。

  4. [総アクティビティ通過数]

    総アクティビティ通過数は、メッセージのルーティングが無限にループすることを防止するために指定します。総アクティビティ通過数は、メッセージ単位で管理され、1つのアクティビティを通過するごとにカウントされます。たとえば10と指定した場合、メッセージがアクティビティを通過する回数が11回めとなった時点で、エラーとなります。メッセージがループして同じアクティビティを通過した場合も、1つカウントされます。

    [総アクティビティ通過数]の値は、ルーティング定義で作成したアクティビティの個数を基準に設定してください。ルーティング内の一部がループしている場合は、ループ上のアクティビティの個数と想定するループ回数、およびループ外のアクティビティの個数の合計から、適切な値を算出してください。ループ処理を行うフローの運用形態については、“3.1.4 終了”の“ループ処理をする運用形態”を参照してください。

    [総アクティビティ通過数]を無制限にする場合は、0を指定してください。

  5. [総アクティビティ通過数超過後にエラーメッセージ退避キューへ退避]

    総アクティビティ通過数を超過してメッセージがアクティビティに送信された場合は、エラーとなります。その際、[総アクティビティ通過数超過後にエラーメッセージ退避キューへ退避]がチェックされている場合は、メッセージがエラーメッセージ退避キューへ送信されます。チェックされていない場合は、メッセージはシリアライズファイルとして退避されます。チェックされているにもかかわらずエラーメッセージ退避キューが存在しない場合も、メッセージはシリアライズファイルとして退避されます。シリアライズファイルについては、“2.4.4 メッセージ退避機能”を参照してください。

  6. [フローのタイムアウト時の後処理]

    業務処理開始アプリケーションでメッセージを発行する際、指定したタイムアウト時間内にメッセージがフローの終点のアクティビティまで到達しない場合、ルーティング処理は自動的に停止します。ここでは、タイムアウトになった場合の後処理を指定します。

    後処理は、以下の項目から選択します。

    選択項目

    説明

    シリアライズファイル

    タイムアウトになったメッセージを、すべてシリアライズファイルに退避します。

    エラーメッセージ退避キュー

    タイムアウトになったメッセージを、エラーメッセージ退避キューへ退避します。

    補償ルートの発行

    補償ルート範囲内のアクティビティでタイムアウトになった場合、補償ルートが発行されます。

  7. [アプリケーション異常発生時の後処理]

    業務処理実行アプリケーションの実行時に、指定した異常が発生した場合の、後処理を定義します。COBOLのアプリケーションでは、異常発生時に実行する後処理の条件として、エラーコードを指定します。Javaのアプリケーションでは、アプリケーション例外を指定します。異常の条件と実行する後処理は、[COBOL]タブ、または[Java]タブの中で定義します。

    • [未定義のアプリケーション異常発生時]

      業務処理実行アプリケーションの実行時に、[アプリケーション異常発生時の後処理]に定義されていない異常(COBOLではエラーコード、Javaではアプリケーション例外)が発生した場合の、後処理を選択します。

    • [COBOL]

      後処理を実行させるための異常を表すエラーコードの値を指定します。

      エラーコードの入力には、単一の値を指定する方法と、値の範囲を指定する方法とがあります。
      単一の値を指定した場合は、[エラーコード]列にその値が表示され、[エラーコード上限]列には“範囲指定なし”が表示されます。
      値の範囲を指定した場合は、[エラーコード]列に下限値が、[エラーコード上限]列には上限値が表示されます。

      1. [追加]

        [アプリケーション異常発生時の後処理]の[COBOL]一覧に、エラーコードと実行させる後処理を追加します。クリックすると、[エラーコードの設定]画面が表示されます。後処理は256個まで定義できます。

      2. [更新]

        [アプリケーション異常発生時の後処理]の[COBOL]一覧で選択中の行を、編集します。クリックすると、[エラーコードの設定]画面が表示されます。行を選択していない場合、ボタンは無効になります。

      3. [削除]

        [アプリケーション異常発生時の後処理]の[COBOL]一覧で選択中の行を、削除します。行を選択していない場合、ボタンは無効になります。

      4. [上へ]、[下へ]

        エラーコードの順序を変更します。
        COBOLの業務処理実行アプリケーションの実行時に発生した異常(エラーコード)は、[アプリケーション異常発生時の後処理]の[COBOL]一覧の上から順に検索され、定義したエラーコードと条件が合致した場合に、対応する後処理が実行されます。

      [追加]、[更新]ボタンをクリック、または選択中の行をダブルクリックすると、エラーコード、および実行する後処理を編集するための[エラーコードの設定]画面が表示されます。

      [エラーコードの設定]画面では、以下の項目を設定します。

      • エラーコードの範囲指定

      • エラーコード

      • エラーコード上限

      • 後処理

      1. [エラーコードの範囲指定]

        エラーコードの指定方法を切り替えます。
        [エラーコードの範囲指定]のチェックを外すと、[エラーコード上限]のテキストボックスが無効になり、単一の値を指定する状態になります。
        [エラーコードの範囲指定]をチェックすると、[エラーコード上限]のテキストボックスが有効になり、値を範囲指定する状態になります。

      2. [エラーコード]

        COBOLの業務処理実行アプリケーションの異常発生時において、後処理を実行させるための条件を表すコードです。業務処理実行アプリケーション実行時の各出口インタフェースで、エラーが発生した際に設定されるエラー情報の中のエラーコードを指定します。エラー情報は、登録集APFW_EXCEPTIONに設定されます。
        出口インタフェースの詳細については、“Interstage Business Application Server リファレンス”の“サーバアプリケーション出口インタフェース”を参照してください。
        登録集APFW_EXCEPTIONの詳細については、“Interstage Business Application Server リファレンス”の“例外情報”を参照してください。

      3. [エラーコード上限]

        エラーコードを範囲指定する場合の上限値を指定します。

      4. [後処理]

        [後処理]は、以下の項目から選択します。

        選択項目

        説明

        リトライ

        異常が発生したアプリケーション処理を、リトライ回数分だけ繰り返し実行します。

        エラーメッセージ退避キュー

        異常となったメッセージを、エラーメッセージ退避キューへ退避します。

        リトライ+エラーメッセージ退避キュー

        リトライ回数分リトライしても異常が改善されない場合に、異常が発生したメッセージをエラーメッセージ退避キューへ退避します。

    • [Java]
      後処理を実行させるための異常(アプリケーション例外名)を指定します。

      1. [追加]

        [アプリケーション異常発生時の後処理]の[Java]一覧に、アプリケーション例外と実行させる後処理を追加します。クリックすると、[アプリケーション例外の設定]画面が表示されます。後処理は256個まで定義できます。

      2. [更新]

        [アプリケーション異常発生時の後処理]の[Java]一覧で選択中の行を、編集します。クリックすると、[アプリケーション例外の設定]画面が表示されます。行を選択していない場合、ボタンは無効になります。

      3. [削除]

        [アプリケーション異常発生時の後処理]の[Java]一覧で選択中の行を、削除します。行を選択していない場合、ボタンは無効になります。

      4. [上へ]、[下へ]

        アプリケーション例外の順序を変更します。
        Javaの業務処理実行アプリケーションの実行時に発生した異常(アプリケーション例外)は、[アプリケーション異常発生時の後処理]の[Java]一覧の上から順に検索され、定義したアプリケーション例外名と合致した場合に、対応する後処理が実行されます。

      [追加]、[更新]ボタンをクリック、または選択中の行をダブルクリックすると、アプリケーション例外、および実行する後処理を編集するための[アプリケーション例外の設定]画面が表示されます。

      [アプリケーション例外の設定]画面では、以下の項目を設定します。

      • アプリケーション例外

      • 後処理

      1. [アプリケーション例外]

        Javaの業務処理実行アプリケーションの異常発生時において、後処理を実行させるための条件(アプリケーション例外名)を指定します。パッケージ名を含まない例外名を指定した場合は、発生した例外名と一致しないため、後処理を実行することができません。必ずパッケージ名を含めて指定してください。

      2. [後処理]

        [後処理]は、以下の項目から選択します。

        選択項目

        説明

        リトライ

        異常が発生したアプリケーション処理を、リトライ回数分だけ繰り返し実行します。

        エラーメッセージ退避キュー

        異常となったメッセージを、エラーメッセージ退避キューへ退避します。

        リトライ+エラーメッセージ退避キュー

        リトライ回数分リトライしても異常が改善されない場合に、異常が発生したメッセージをエラーメッセージ退避キューへ退避します。

参照

上記の各定義項目に関する規約については、“付録E 定義規約”を参照してください。

注意

  • 次の条件をすべて満たす場合、[エラーメッセージ退避キュー(Destination)]の入力は不要となり、テキストボックスが無効な状態になります。

    • [総アクティビティ通過数超過後にエラーメッセージ退避キューへ退避]がチェックされていない。

    • [フローのタイムアウト時の後処理]で“エラーメッセージ退避キュー”を含む項目が選択されていない。

    • [アプリケーション異常発生時の後処理]の一覧内に“エラーメッセージ退避キュー”を含む項目が選択された[後処理]が1つも存在しない。

  • [アプリケーション異常発生時の後処理]の一覧内に“リトライ”を含む項目が選択された[後処理]が1つも存在しない場合、[リトライ設定]の[リトライ回数]と[リトライ間隔]は入力不要となり、テキストボックスが無効な状態になります。

  • COBOLでは、アクティビティ定義の補償ルートを実行する異常を示すエラーコードと、異常処理定義のアプリケーション異常を示すエラーコードの範囲が重複する場合、運用時は補償ルートを実行する異常の方が優先して処理されます。
    たとえば、異常処理定義のアプリケーション異常に指定したエラーコードが「3」から「7」で、アクティビティ定義の補償ルートを実行する異常で定義したエラーコードが「1」から「5」の場合、重複する「3」から「5」の範囲では後者の定義が優先して処理されます。
    Javaでは、アクティビティ定義の補償ルートを実行する異常を示すアプリケーション例外と、異常処理定義のアプリケーション異常を示すアプリケーション例外が重複する場合、運用時は補償ルートを実行する異常の方が優先して処理されます。
    優先された補償ルートの処理が正常に処理された場合は、異常処理定義のアプリケーション異常で指定した後処理は実行されません。

  • [アプリケーション異常発生時の後処理]では、[未定義のアプリケーション異常発生時]の後処理は必須の定義項目です。一方、[COBOL]および[Java]の後処理は必須の定義項目ではないため、1つも登録されていなくても定義エラーにはなりません。
    また、ルーティング定義でCOBOLまたはJavaのどちらか一方の言語でアプリケーション連携を行うように定義した状態で、かつ異常処理定義でもう一方の言語(JavaまたはCOBOL)のアプリケーション異常を定義した場合、その後処理が実行されることはありません。連携するアプリケーションの言語種別と、後処理を実行するためのアプリケーション異常の種別は、一致するように定義してください。

  • [未定義のアプリケーション異常発生時]で指定された後処理が失敗した場合、メッセージはシリアライズファイルへ退避されます。

  • 異常の状態によっては、異常となったメッセージをエラーメッセージ退避キューへ送信できない場合もあります。エラーメッセージ退避キューへ送信できない異常の場合は、メッセージをシリアライズファイルへ退避します。