|
WebLogic Integration のビジネス プロセスは、本質的にはトランザクションです。1 つのプロセスのすべての手順は、JTA トランザクションのコンテキストの中で実行されます。トランザクションは、1 つまたは複数のオペレーションが最小作業単位として実行されることを保証します。トランザクション内のいずれかのオペレーションが失敗すると、アプリケーションを直前の状態に戻すために、トランザクション内のすべてのオペレーションがロールバックされます。プロセスがステートフルまたはステートレスであるようなビジネス プロセス ロジックを設計したかどうかに応じて (「ステートレス/ステートフル ビジネス プロセスの構築」を参照)、そのビジネス プロセスのコンテキストに 1 つまたは複数のトランザクション存在することがあります。
ビジネス プロセスを作成するときには、プロセス中のブロック要素の配置場所に基づいて暗黙的なトランザクション境界が形成されます。ビジネス プロセス内のトランザクション境界は、ビジネス プロセスにプロセス ノードを追加すると変わります。また、連続するノードを選択して、アプリケーションで暗黙的に作成されたトランザクションとは別のトランザクションで宣言すれば、明示的なトランザクション境界を作成できます。リソースの性質やアクセスを提供するコントロールによっては、ビジネス プロセスによってアクセスされるリソースもトランザクションの一部にすることができます。
暗黙的なトランザクションは、ビジネス プロセス ロジックによって動作が自動的に決定 (または暗示) され、プロセス図には表示されないため、暗黙的です。「暗黙的なトランザクション境界の例」のセクションでは、図の中の暗黙のトランザクション境界がイラストで追加されています。BEA Workshop for WebLogic Platform のグラフィック設計環境では、暗黙のトランザクション境界は表示されません。一方、明示的なトランザクションは、ユーザによって定義され、BEA Workshop for WebLogic Platform のビジネス プロセス図で表示されるため、明示的です。
この後の節では、WebLogic Integration およびビジネス プロセスのコンテキスト内のトランザクションの詳細について取り扱います。
ブロック要素の配置場所に基づいて暗黙的なトランザクション境界が形成され、ビジネス プロセスにプロセス ノードを追加するとこれらの境界が変更されることを思い出してください。また、ビジネス プロセスはデフォルトではステートレスであり、トランザクション境界を変更するブロック要素により、プロセスをステートフルに変更することができます (「ステートレス/ステートフル ビジネス プロセスの構築」を参照)。ビジネス プロセスを構築する時にトランザクション境界に適用される規則の詳細については:
注意 : | デフォルトでは、Parallel グループ ノードの開始と終了は、新しいトランザクションの境界をマークします。ただし、パラレル ブロックに出入りするときに、アクティブなトランザクションの継続を指定できます。この機能を使用するには、デザイン ビューにおいて、ビジネス プロセスのパラレル ノードを選択し、プロパティ エディタで、continue transaction プロパティを true に変更します。 |
以下の例は、「暗黙的なトランザクション境界の規則」にリストされた規則を示しています。この節の各図では、トランザクション境界が追加されており、WebLogic Integration ビジネス プロセス内で暗黙的な場所を示しています。
ビジネス プロセスは、この時点で 2 つのトランザクションを含んでいるため、開始ノード アイコンが変わり、ビジネスがステートレス からステートフル に変更されたことを示します。ステートレス/ステートフル ビジネス プロセスの詳細については、「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。
これは、暗黙的な境界の例であり、ビジネス プロセスに明示的なトランザクション境界を追加することで、トランザクションを作成することもできます。この方法の詳細については、「明示的なトランザクション境界」を参照してください。
明示的なトランザクション境界を定義すると、BEA Workshop for WebLogic Platform のビジネス プロセス図にそれらが表示されるようになります。連続したノードを選択し、そのトランザクション名をそのトランザクション内で宣言することで、ビジネス プロセス内で、明示的なトランザクション境界を作成できます。明示的なトランザクション境界には、以下の規則が適用されます。
ビジネス プロセスの構築時にこれらの規則に違反すると、アプリケーションではトランザクション境界を表示しますが、対象となるノードは でマークされます。このアイコンの上にカーソルを置くと、WebLogic Workshop により、違反に関するメッセージが表示されます。
要求/応答パラダイムを使用した JMS トランスポートを使用して JWS を呼び出すには、呼び出し側がトランザクション外に配置されている必要があります。JPD が呼び出す場合、ユーザは、JWS にメッセージを送信サービス コントロールを呼び出す前に、現在の JPD トランザクションを明示的にサスペンドし、呼び出し後にトランザクションを再開する必要があります。トランザクションのサスペンドと再開の影響は、以下のとおりです。
Transaction savedTxn =
TransactionHelper.getTransactionHelper().getTransactionManager().forceSuspend();
//サービス コントロールの呼び出し
TransactionHelper.getTransactionHelper().getTransactionManager().forceResume(savedTxn);
図 24-6 で示すように、選択したノードの周りに明示的なトランザクション境界が描画されます。
[トランザクション] を右クリックし、ドロップダウン メニューから [名前の変更] を選択して、トランザクション ブロックの名前を変更できます。
明示的なトランザクションを作成すると、[プロパティー] ビューのトランザクション用のプロパティを設定することができます。
ビジネス プロセスの例外処理の詳細については、「例外の処理」を参照してください。トランザクション ブロック内での例外の処理方法については、「トランザクション ブロックにおける例外の処理」を参照してください。