3.4.1 ビジネスプロセスの状態の互換性の指定をONにした場合のトランザクション
ビジネスプロセスの状態の互換性(HCSCサーバセットアップ定義のbp-status-compatible)にONを指定した場合のトランザクションについて説明します。
なお,ビジネスプロセスの状態の互換性にONを指定した場合は,サービスプラットフォームのバージョン08-00以前と同じ動作となります。
また,サービス呼出アクティビティの状態の互換性にON,またはOFFのどちらを指定しても同じ動作となります。
- 〈この項の構成〉
(1) 同期のサービス呼出アクティビティが2つ並んだ場合
- 正常に処理が進行した場合
-
それぞれのサービス呼出アクティビティでのメッセージ送信処理直前でトランザクションをコミットし,新たにトランザクションを開始します。
同期のサービス呼出で正常に処理が進行した場合のトランザクションの範囲を次の図に示します。
図3‒16 正常に処理が進行した場合のトランザクションの範囲(同期のサービス呼出) - 例外が発生した場合
-
サービス呼出2の処理が例外でエラーとなった場合は,トランザクションがコミットした時点(受付:完了状態,サービス呼出1:完了状態,サービス呼出2:実行中状態)までロールバックします。
同期のサービス呼出で例外が発生した場合のトランザクションの範囲を次の図に示します。
図3‒17 例外が発生した場合のトランザクションの範囲(同期のサービス呼出)
(2) 非同期と同期のサービス呼出アクティビティが2つ並んだ場合
- 正常に処理が進行した場合
-
非同期のサービス呼出アクティビティでのメッセージ送信処理ではトランザクションはコミットしないで,同期のサービス呼出アクティビティでのメッセージ送信処理直前でトランザクションをコミットし,新たにトランザクションを開始します。
非同期と同期のサービス呼出で正常に処理が進行した場合のトランザクションの範囲を次の図に示します。
図3‒18 正常に処理が進行した場合のトランザクションの範囲(非同期と同期のサービス呼出) - 例外が発生した場合(非同期と同期のサービス呼出)
-
サービス呼出1が非同期,サービス呼出2が同期の構成で,サービス呼出2の処理が例外でエラーとなった場合は,トランザクションがコミットした時点(受付:完了状態,サービス呼出1:完了状態,サービス呼出2:実行中状態)までロールバックします。
非同期と同期のサービス呼出で例外が発生した場合のトランザクションの範囲を次の図に示します。
図3‒19 例外が発生した場合のトランザクションの範囲(非同期と同期のサービス呼出) - 例外が発生した場合(同期と非同期のサービス呼出)
-
サービス呼出1が同期,サービス呼出2が非同期の構成で,サービス呼出2の処理が例外でエラーとなった場合は,トランザクションがコミットした時点(受付:完了状態,サービス呼出1:実行中状態)までロールバックします。
同期と非同期のサービス呼出で例外が発生した場合のトランザクションの範囲を次の図に示します。
図3‒20 例外が発生した場合のトランザクションの範囲(同期と非同期のサービス呼出)
(3) 非同期のサービス呼出アクティビティが2つ並んだ場合
- 正常に処理が進行した場合
-
非同期のサービス呼出アクティビティでのメッセージ送信処理ではトランザクションはコミットしません。そのため,ビジネスプロセスが応答するときにトランザクションがコミットします。
非同期のサービス呼出で正常に処理が進行した場合のトランザクションの範囲を次の図に示します。
図3‒21 正常に処理が進行した場合のトランザクションの範囲(非同期のサービス呼出) - 例外が発生した場合
-
サービス呼出2の処理が例外でエラーとなった場合は,トランザクションがコミットした時点(受付:未実行状態,サービス呼出1:未実行状態,サービス呼出2:未実行状態)までロールバックします。
非同期のサービス呼出で例外が発生した場合のトランザクションの範囲を次の図に示します。
図3‒22 例外が発生した場合のトランザクションの範囲(非同期のサービス呼出)
(4) 同期のサービス呼出アクティビティのあとにデータ変換アクティビティがある場合
- 正常に処理が進行した場合
-
それぞれのサービス呼出アクティビティでのメッセージ送信処理直前でトランザクションをコミットしますが,データ変換アクティビティではトランザクションがコミットしません。これは,「表3-7 トランザクションの開始とコミットのタイミング」で示した以外のアクティビティも同様です。
データ変換などのアクティビティがある場合で正常に処理が進行したときのトランザクションの範囲を次の図に示します。
図3‒23 正常に処理が進行した場合のトランザクションの範囲(データ変換などのアクティビティがある場合) - 例外が発生した場合(同期サービス呼出のあとにデータ変換などのアクティビティがある場合)
-
サービス呼出1が同期の構成で,サービス呼出1のあとにデータ変換処理でエラーとなった場合は,トランザクションがコミットした時点(受付:完了状態,サービス呼出1:実行中状態)までロールバックします。
同期サービス呼出のあとにデータ変換などのアクティビティがある場合で例外が発生したときのトランザクションの範囲を次の図に示します。
図3‒24 例外が発生した場合のトランザクションの範囲(同期サービス呼出のあとにデータ変換などのアクティビティがある場合) - 例外が発生した場合(非同期サービス呼出のあとにデータ変換などのアクティビティがある場合)
-
サービス呼出1が非同期の構成で,サービス呼出1のあとにデータ変換処理でエラーとなった場合は,トランザクションがコミットした時点(受付:未実行状態,サービス呼出1:未実行状態)までロールバックします。
非同期サービス呼出のあとにデータ変換などのアクティビティがある場合で例外が発生したときのトランザクションの範囲を次の図に示します。
図3‒25 例外が発生した場合のトランザクションの範囲(非同期サービス呼出のあとにデータ変換などのアクティビティがある場合)