3.4.7 応答アクティビティのトランザクション
この項では,応答アクティビティのトランザクション制御について説明します。
応答アクティビティのあとに定義されたアクティビティを非同期に実行する方法については,「3.8 応答アクティビティのあとに定義されたアクティビティの非同期実行」を参照してください。
- 〈この項の構成〉
(1) 応答アクティビティのあとにアクティビティが定義されていない場合のトランザクション制御
応答アクティビティのあとにアクティビティが定義されていない場合,応答アクティビティの実行時に応答アクティビティの状態を完了状態(Completed)に遷移し,メッセージを応答する直前にトランザクションをコミットします。
|
(2) 応答アクティビティのあとにアクティビティが定義されている場合のトランザクション制御
(a) 応答後のアクティビティ実行にReliable Messagingを使用する場合
応答アクティビティのあとにアクティビティが定義されていて,応答後のアクティビティ実行にReliable Messagingを使用する場合の,トランザクション制御を次に示します。
-
応答アクティビティのあとにアクティビティが定義されていて,応答後のアクティビティ実行にReliable Messagingを使用する場合,応答アクティビティ実行時に応答アクティビティの状態を完了状態(Completed)に遷移します。
-
応答のあとに定義されたアクティビティの非同期実行の要求処理をReliable Messagingに対して実行し,メッセージを応答する直前にトランザクションをコミットします。
-
Reliable Messagingから,応答アクティビティのあとに定義されたアクティビティの非同期実行を実行します。
-
応答アクティビティのあとに定義されたアクティビティを実行する前に,トランザクションが開始されます。
図3‒45 応答アクティビティのあとにアクティビティが定義されていて,応答後のアクティビティ実行にReliable Messagingを使用する場合のトランザクション制御
-
応答アクティビティのあとに定義されたアクティビティで例外が発生した場合
応答後のアクティビティ実行にReliable Messagingを使用し,応答アクティビティのあとに定義されたアクティビティで例外が発生した場合のトランザクション制御を次に示します。
-
応答アクティビティは完了状態(Completed)までロールバックします。
-
ロールバックによって,Reliable Messagingから応答アクティビティのあとに定義されたアクティビティが再度実行されます。
図3‒46 応答後のアクティビティ実行にReliable Messagingを使用し,応答アクティビティのあとに定義されたアクティビティで例外が発生した場合のトランザクション制御
Reliable Messagingから再送されるかどうかは,配送回数の最大値(RMMaxDeliveryNum)の設定値に依存します。詳細については,マニュアル「Reliable Messaging」を参照してください。
-
(b) 応答後のアクティビティ実行に非同期EJBを使用する場合
応答アクティビティのあとにアクティビティが定義されていて,応答後のアクティビティ実行に非同期EJBを使用する場合の,トランザクション制御を次に示します。
-
応答アクティビティの実行時に,応答アクティビティの状態を完了状態(Completed)に遷移します。
-
応答のあとに定義されたアクティビティの非同期実行の要求処理を非同期EJBに対して実行し,応答アクティビティの状態を完了状態(待ち受け)(Completedwait)に遷移します。
-
メッセージを応答する直前に,トランザクションをコミットします。
-
応答のあとに定義されたアクティビティの非同期実行を非同期EJBから実行し,応答アクティビティの状態を完了状態(Completed)に遷移します。
-
応答のあとに定義されたアクティビティを実行する前に,トランザクションが開始されます。
図3‒47 応答アクティビティのあとにアクティビティが定義されていて,応答後のアクティビティ実行に非同期EJBを使用する場合のトランザクション制御
-
応答アクティビティのあとに定義されたアクティビティで例外が発生した場合
応答後のアクティビティ実行に非同期EJBを使用し,応答アクティビティのあとに定義されたアクティビティで例外が発生した場合,応答アクティビティは完了状態(待ち受け)(Completedwait)までロールバックします。
応答アクティビティのあとに定義されたアクティビティは,再度実行されません。
図3‒48 応答後のアクティビティ実行に非同期EJBを使用し,応答アクティビティのあとに定義されたアクティビティで例外が発生した場合のトランザクション制御 -
非同期EJB実行時に例外が発生した場合のトランザクション制御
応答後のアクティビティ実行に非同期EJBを使用し,非同期EJB実行時に例外が発生した場合,応答アクティビティのあとに定義されたアクティビティは実行されません。
応答アクティビティは完了状態(待ち受け)(Completedwait)となります。
図3‒49 応答後のアクティビティ実行に非同期EJBを使用し,非同期EJB実行時に例外が発生した場合のトランザクション制御
(3) 応答アクティビティのトランザクションおよびステータスの遷移
応答アクティビティのトランザクションおよびステータスの遷移を次の表に示します。
応答アクティビティの動作 |
応答後のアクティビティ実行にReliable Messagingを使用する場合 |
応答後のアクティビティ実行に非同期EJBを使用する場合 |
|
---|---|---|---|
開始 |
遷移するステータス |
完了 |
完了 |
トランザクション制御 |
×※ |
×※ |
|
Reliable Messagingへの非同期実行の要求 |
遷移するステータス |
− |
(実行不可) |
トランザクション制御 |
× |
||
Reliable Messagingからの非同期実行の応答 |
遷移するステータス |
− |
|
トランザクション制御 |
× |
||
非同期EJBへの非同期実行の要求 |
遷移するステータス |
(実行不可) |
完了(待ち受け) |
トランザクション制御 |
×※ |
||
非同期EJBからの非同期実行の応答 |
遷移するステータス |
完了 |
|
トランザクション制御 |
×※ |
||
省略 |
遷移するステータス |
省略 |
省略 |
トランザクション制御 |
× |
× |
|
未省略 |
遷移するステータス |
未省略 |
未省略 |
トランザクション制御 |
× |
× |
- (凡例)
-
×:トランザクションをコミットしません。
−:遷移しません。
- 注※
-
この時点ではコミットされませんが,それ以降のトランザクション制御のタイミングでコミットされます。