3.4.3 ビジネスプロセスの状態の互換性の指定をOFF,サービス呼出アクティビティの状態の互換性の指定をOFFにした場合のトランザクション
ビジネスプロセスの状態の互換性(HCSCサーバセットアップ定義のbp-status-compatible)にOFF,サービス呼出アクティビティの状態の互換性(HCSCサーバセットアップ定義のbp-invoke-status-compatible)にOFFを指定した場合のトランザクションについて説明します。
ビジネスプロセスの状態の互換性にOFF,サービス呼出アクティビティの状態の互換性にOFFを指定した場合の動作を次に示します。
-
サービス呼出アクティビティの処理が開始したタイミングでは,アクティビティの状態に実行中状態(Executing)を設定し,トランザクションを終了します。
-
サービス呼出アクティビティの処理が完了したタイミングでは,アクティビティの状態に完了状態(Completed)を設定し,トランザクションを終了しません。
-
ビジネスプロセスのサービス呼出アクティビティ実行中に例外が発生した場合は,プロセスインスタンスおよびサービス呼出アクティビティの状態にエラー発生(Error)を設定し,トランザクションを終了します。
なお,通信モデルが同期,非同期のどちらでも同じ動作となります。
(1) サービス呼出アクティビティが2つ並んだ場合
- 正常に処理が進行した場合
-
それぞれのサービス呼出アクティビティでのメッセージ送信処理直前でトランザクションをコミットし,新たにトランザクションを開始します。
サービス呼出で正常に処理が進行した場合のトランザクションの範囲を次の図に示します。
図3‒34 正常に処理が進行した場合のトランザクションの範囲 - 例外が発生した場合
-
サービス呼出2の処理が例外でエラーとなった場合は,トランザクションがコミットした時点(受付:完了状態,サービス呼出1:完了状態,サービス呼出2:実行中状態)にロールバックしたあと,プロセスインスタンスおよびサービス呼出アクティビティの状態にエラー発生(Error)を設定して,トランザクションをコミットします。
サービス呼出で例外が発生した場合のトランザクションの範囲を次の図に示します。
図3‒35 例外が発生した場合のトランザクションの範囲
(2) サービス呼出アクティビティのあとにデータ変換アクティビティがある場合
- 正常に処理が進行した場合
-
それぞれのサービス呼出アクティビティでのメッセージ送信処理直前でトランザクションをコミットし,新たにトランザクションを開始します。
ただし,データ変換アクティビティではトランザクションがコミットしません。これは,「表3-7 トランザクションの開始とコミットのタイミング」で示した以外のアクティビティも同様です。
データ変換などのアクティビティがある場合で正常に処理が進行したときのトランザクションの範囲を次の図に示します。
図3‒36 正常に処理が進行した場合のトランザクションの範囲(サービス呼出のあとにデータ変換などのアクティビティがある場合) - 例外が発生した場合(サービス呼出のあとにデータ変換などのアクティビティがある場合)
-
サービス呼出1のあとにデータ変換処理でエラーとなった場合は,トランザクションがコミットした時点(受付:完了状態,サービス呼出1:実行中状態)までロールバックします。
サービス呼出のあとにデータ変換などのアクティビティがある場合で例外が発生したときのトランザクションの範囲を次の図に示します。
図3‒37 例外が発生した場合のトランザクションの範囲(サービス呼出のあとにデータ変換などのアクティビティがある場合)