データベース操作を伴う処理では、処理結果により、トランザクションの完了操作を行う必要があります。また、エラー終了した場合には、業務処理の再実行が必要な場合があります。アプリケーション連携実行基盤では、これらの操作を自動的に行う機能を提供します。
■トランザクション制御
アプリケーション連携実行基盤でコネクションの管理を行います。管理するコネクションは、業務処理実行アプリケーションから通知される処理結果情報により、コミットやロールバックといったトランザクションの完了を自動的に行います。アプリケーション連携実行基盤が管理するコネクションを用いて、データベースの操作を行うことで、トランザクションの完了操作を意識することなく業務ロジックの作成に専念することが可能となります。
また、アプリケーション連携実行基盤のトランザクション制御を使用せずに、サーバアプリケーションで独自にトランザクション制御を行うこともできます。
■リトライ制御
業務処理実行アプリケーションが異常終了した場合に、処理を再度実行する機能です。次の2種類のリトライ機能があります。
非同期ワークユニットで定義するリトライ
非同期ワークユニットのトランザクションリトライカウントです。受信したメッセージ、およびデータベースのトランザクションをロールバックした上で、処理を再度実行します。
フロー定義で定義するリトライ
フロー定義の異常処理定義で定義するリトライです。データベースのトランザクションのロールバックを行わずに、異常終了したサーバアプリケーションを前処理より再呼び出しします。
フロー定義によるリトライは、業務処理実行アプリケーションより通知されたエラーコードがフロー定義の異常処理定義でリトライ条件と一致していた場合に実施されます。
リトライ制御における上記2種類のリトライの関係は次の通りであり、最大「上記1のリトライ回数×上記2のリトライ回数」分、処理の再呼び出しが行われます。
なお、COBOLアプリケーションを実行する非同期アプリケーション連携実行基盤では、上記1のリトライ回数は、リトライ回数ではなく実行回数の意味となります。つまり、リトライ回数に1を設定した場合、リトライは行いません。
また、業務処理実行アプリケーションの前処理、業務処理、または後処理が強制リトライで終了した場合(処理結果情報に3が設定された場合)は、上記2.の定義を無視し、上記1.の定義に従ってリトライが行われます。
例として、Javaアプリケーションを実行する非同期アプリケーション連携実行基盤において、非同期ワークユニット定義でリトライ回数を3と指定し、フロー定義ツールの異常処理定義のリトライ回数を5と指定した場合、以下のように最大で5×(1+3)=20回のリトライが実施されることになります。
フロー定義のリトライを5回実施
非同期ワークユニット定義のリトライを1回実施(通算1回目)
フロー定義のリトライを5回実施
非同期ワークユニット定義のリトライを1回実施(通算2回目)
フロー定義のリトライを5回実施
非同期ワークユニット定義のリトライを1回実施(通算3回目)
フロー定義ツールのリトライを5回実施