トランザクションなしの実行に関するガイドライン
トランザクションなしでビジネス・プロセスを実行するには、「BPELプロセスの作成」ダイアログでBPELプロセスを作成するときに、「トランザクション」リストから「notSupported」を選択します。
設定すると、次の動作が発生します。
-
XA分散トランザクションの利点がすべて無効になります。
ビジネス・プロセスが非トランザクション・モードで実行されるよう構成されている場合、インスタンス実行はXAトランザクションにおいてラップされず、その結果、インスタンスが重複する可能性がありますが、メッセージの損失はありません。トランザクションのオーバーヘッドがないため、非トランザクション・モードではパフォーマンスが向上します。重複インスタンスを許容可能な場所で、非トランザクション・オプションを使用できます。
-
トランザクションに参加することを期待されているパートナ(つまり、パートナは
TransactionAttribute
がMANDATORY
に設定されている)をビジネス・プロセスで起動できません。 -
ビジネス・プロセスからの起動はfire-and-forgetです。(つまり、起動が終了すると、パートナに配信されます。起動元のトランザクションが後でロール・バックされる場合でも、起動メッセージはロール・バックされません)。
bpel.config.transaction
がnotSupported
に設定されていても、デハイドレーション・ポイントは、内部BPELプロセス・エンジンの状態をバック・エンドに保存するためにトランザクションを開始します。これは、デハイドレーションの概念が引き続きビジネス・プロセスに適用されることを意味します。この機能では、assign、invokeやその他のアクティビティがトランザクションなしで実行されることのみが保証されます。
このプロパティは、コールを開始する場合にBPELインスタンスのトランザクション動作を構成します。表13-5に、bpel.config.
transaction
のプロパティ設定に基づいたBPELインスタンスの動作を説明します。
表13-5 トランザクションのプロパティ設定に基づくBPELプロセス・インスタンス動作
トランザクション・タイプ | トランザクション設定が「requiresNew」 | トランザクション設定が「required」 | トランザクション設定が「notSupported」 |
---|---|---|---|
リクエスト/レスポンス(開始) |
新しいトランザクションが実行用に作成されます。既存のトランザクションがある場合はそのトランザクションが一時停止されます。 |
プロセスがコール元トランザクション(存在する場合)に参加するか、新規トランザクション(トランザクションがない場合)を作成します。 |
ビジネス・トランザクションのアクティビティはトランザクションなしで実行されます。トランザクションは、内部サービス・エンジンおよびインスタンスの状態や監査の詳細を保存するためにのみ使用されます。 |
一方向(開始、 |
新規トランザクションが実行のために作成され、既存のトランザクションがある場合はそのトランザクションが一時停止されます。 |
起動メッセージは、同じトランザクションの同一スレッドを使用して処理されます。 |
ビジネス・トランザクションのアクティビティはトランザクションなしで実行されます。トランザクションは、内部サービス・エンジンおよびインスタンスの状態や監査の詳細を保存するためにのみ使用されます。 |
一方向非同期 |
適用不可。 |
適用不可。 |
ビジネス・トランザクションのアクティビティはトランザクションなしで実行されます。トランザクションは、内部サービス・エンジンおよびインスタンスの状態や監査の詳細を保存するためにのみ使用されます。 |