ビジネス プロセス構築ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

同期/非同期のビジネス プロセスの構築

ビジネス プロセスには、ビジネス・プロセスを呼び出すために選択するメソッドによって、同期または非同期があります。ただし、どちらのメソッドも同期および非同期のアクティビティを含むことができます。

 


サブプロセスの操作

サブプロセスは、プロセス コントロールまたはサービス ブローカ コントロールを介してビジネス プロセスから呼び出されるプロセスです。同期または非同期で呼び出すことができます。

同期サブプロセス

プロセス コントロールにより、ビジネス プロセス (および BEA Workshop for WebLogic Platform Web サービスまたはページフロー) から別のビジネス プロセスに要求を送信 (およびコールバックを受信) できるようになります。プロセス コントロールの呼び出しは Java Remote Method Invocation (RMI) の呼び出しです。対象となるビジネス プロセスは、呼び出し側と同じ WebLogic Server ドメイン上にホスティングされる必要があります。トランザクション コンテキストは、プロセス コントロール呼び出しを介して親プロセスからサブプロセスに伝播されます。

サービス ブローカ コントロールにより、ビジネス プロセス (または Web サービス) は、複数プロトコルの 1 つ (最も一般的に使用されるプロトコルは SOAP over HTTP) を使用して、別のサービスからコールバックの呼び出しおよび受信が可能です。(プロトコルについての詳細を取得するため。対象となるサービスは、WSDL インタフェースをエクスポーズする必要があります。使用される転送が HTTP または JMS のため、トランザクション コンテキストでは、サービス ブローカ コントロールの呼び出し経由では伝播されません。

プロセス コントロールを介して呼び出された同期サブプロセスは、その呼び出し側 (親) プロセスと同じトランザクションで実行します。同期サブプロセスは、非同期サブプロセスと異なる動作をします (特に未処理の例外に関して)。

サブプロセス中の未処理の例外は、共有トランザクションに「ロールバックのみ」としてマークされます。これより、サブプロセスと呼び出し側 (親) の両方がロールバックします。この動作は、デフォルトで設定されています。これは、プロセスのうちの 1 つがロールバックされ、他のプロセスとの一貫性または補完性が失われる事態を避けるためです。

デフォルトの動作は、サブプロセスの on sync failure プロパティを rethrow に設定することでオーバーライドできます。これは、BEA Workshop for WebLogic Platform のグラフィカルな設計環境の [プロパティー] ビューを使用して実行できます。

On Sync Failure プロパティをコンフィグレーションするには
  1. デザイン ビューで、on sync failure プロパティを設定するサブプロセスの開始ノードを選択します。
  2. 注意 : [プロパティー] ビューが表示されない場合、メニュー バーから [ウィンドウArrow symbolビューの表示Arrow symbolプロパティー] を選択します。
  3. [プロパティー] ビューで、[on sync failure] ドロップダウン メニューから [rethrow] を選択します。
  4. これにより、サブプロセスが、障害発生時に例外を送出するように設定されます。

    注意 : on sync failure プロパティを設定してもロールバックが強制されるわけではありません。サブプロセスが例外を送出するのみです。

非同期サブプロセス

非同期操作では、トランザクションはサブプロセスに伝播されません。つまり、サブプロセスは、自身のトランザクション内で実行されます。サブプロセスに送信されたメッセージは、サブプロセスのプロセス キューでバッファリングされます。呼び出し側プロセスは、メッセージが適切にキューに配信されると、メッセージの配信が成功したと見なします。結果的に、サブプロセスの失敗は呼び出し側に送信されません。たとえば、未処理の例外によりサブプロセスが失敗しますが、呼び出し側プロセスには通知されません。

注意 : ビジネス プロセス (Java ファイル) が生成したセッション bean には、300 秒のデフォルトのタイムアウト値があります。この値が十分ではなく、長時間にわたる処理のタイムアウトが発生する場合、この値を変更できます。この値の詳細については、WebLogic Server のドキュメントを参照してください。
注意 : 非同期の失敗は呼び出し側のビジネス プロセスに対して自動的に通知されないため、プロセスとサブプロセスの通知に関する次の設計パターンを検討する必要があります。

 


同期クライアントと非同期ビジネス プロセス

同期クライアントにおいて、リソースとの非同期での対話を含むビジネス プロセスと対話を可能にします。たとえば、Java コントロールを使用する JSP や Portal ページなどの同期 BEA Workshop for WebLogic Platform クライアントは、必要に応じて、ビジネス プロセスを呼び出してからブロックすることができます。クライアントのブロック中に、JMS メッセージのキューへの追加、JMS 受信の待機などの非同期アクティビティをビジネス プロセスで実行し、クライアントへの応答を返した後にクライアントのブロックを解除することができます。図 23-2 はこのシナリオを表しています。

図 23-2 同期クライアントと非同期ビジネス プロセス

同期クライアントと非同期ビジネス プロセス

次の図 (および、Control Receive ノードの 同期クライアントと非同期ビジネス プロセス) のように、Client Request with Return ノードの非同期操作を必要とする同期プロセスを作成することはできませんが、このタスクを完了する Client Request および Client Response ノードの非同期プロセスは作成できます。このビジネス プロセスは、Web サービス インタフェースを使用するクライアントからは同期のように見えます。また、このシナリオは、WebLogic Server clientgen ユーティリティまたはサービス ブローカ コントロールを使用する BEA Workshop for WebLogic Platform エンティティで作成された Java クライアントで有効です。図 23-3 を参照してください。

図 23-3 非同期操作

非同期操作

同期クライアントが、リソースと非同期で対話するビジネス プロセスと対話できるようにするには、同期/非同期コールバック名という属性プロパティを指定した Client Request ノードを含むビジネス プロセスを作成します。この Client Request ノードのプロパティには、関連付けられた Client Response ノードで使用するコールバック メソッドの名前が保持されます。Client Request ノードと Client Response ノードは、クライアントがブロックしているときに発生するアクティビティ (非同期クライアントを含む) を表します。このプロパティの設定後、同期/非同期 WSDL を生成する必要があります。同期 WSDL の生成プロセスでは、サービスの SOAP アドレスと、修正した SOAP アドレスが入れ替わります。修正したアドレスにより、同期サーブレットがクライアント要求および後続の戻りアクションを処理します。生成されたサービス エントリは以下のようになります。

標準 WSDL

<service name="syncAsync">
   <port name="syncAsyncSoap" binding="s0:syncAsyncSoap">
   <soap:address location="http://localhost:7001/SyncAsyncWeb/processes/syncAsync.jpd"/>
   </port>

同期 WSDL

<service name="syncAsync">
   <port name="syncAsyncSoap" binding="s0:syncAsyncSoap">
   <soap:address location="http://localhost:7001/sync2AsyncIM/SyncAsyncWeb/processes/syncAsync.sync2JPD"/>
   </port>

同期/非同期 WSDL の生成方法については、「同期/非同期 WSDL ファイルを作成するには」を参照してください。

注意 : 非同期ビジネス プロセスを呼び出し、情報が返されるまでプロセスを待機 (ブロック) する同期クライアントの例を表示します。
非同期プロセスが必要な同期クライアントを作成するには
注意 : ビジネス プロセスを設計する前に、「制限事項」の節を必ずお読みください。
  1. デザイン ビューで、Client Request を伴うビジネス プロセスを開始イベントとして作成します。
  2. [ノード パレット] から、次のノードを Client Request ノードと Finish ノードの間にドラッグ アンド ドロップします。
  3. 注意 : [ノード パレット] が BEA Workshop for WebLogic Platform に表示されない場合、BEA Workshop for WebLogic Platform メニューから、[ウィンドウArrow symbolビューの表示Arrow symbolノード パレット] を選択します。
    1. 非同期操作 Control Send
    2. 非同期操作 Control Receive
    3. 非同期操作 Client Response
    4. ビジネス プロセスは図 23-4 に示す左側のビジネス プロセスのようになります。

      図 23-4 同期クライアントと非同期プロセス


      同期クライアントと非同期プロセス

  4. 各ノードを設計に従ってコンフィグレーションします。
  5. デザイン ビューで、[Client Request] ノードをクリックします。
  6. [プロパティー] ビューで、[同期/非同期コールバック名] フィールドをクリックし、コールバック メソッドの名前を入力します。この名前は関連する Client Response ノードの [メソッド名] プロパティにあります。
  7. 誤った名前を入力すると、Client Request ノードの隣に 同期クライアントと非同期プロセス が表示されます。

    注意 : [プロパティー] ビューが表示されない場合、メニュー バーから [ウィンドウArrow symbolビューの表示Arrow symbolプロパティー] を選択します。
  8. 同期/非同期 WSDL ファイルを作成するには」に示すように、同期/非同期 WSDL ファイルを生成します。
  9. これらのプロセスのセキュリティの詳細については、「同期/非同期セキュリティ」を参照してください。
同期/非同期 WSDL ファイルを作成するには

WSDL ファイルは、Web サービスのプロデューサとコンシューマ間におけるインタフェース情報の通信に使用されます。WSDL 記述により、クライアントは Web サービスの実装に関する詳しい知識が無くても、Web サービスの機能を利用できるようになります。

注意 : WSDL ファイルを生成するには、まず Client Request ノードで同期/非同期コールバック名属性プロパティを設定する必要があります。
  1. [パッケージ・エクスプローラー] ペインで、WSDL ファイルを生成するビジネス プロセス (Process.java ファイル) を右クリックします。
  2. ドロップダウン メニューから、[生成Arrow symbol同期/非同期 WSDL] を選択します。
  3. BEA Workshop for WebLogic Platform では、WSDL ファイルが生成され、Process.java ファイルの直下にある [パッケージ・エクスプローラー] ペインに表示します。Java ファイルの名前が HelloWorld.java の場合、WSDL ファイルの名前は HelloWorldSyncContract.wsdl となります。

制限事項

同期および非同期のペアを混合することはできない

同期と非同期の Client Request および Client Response のペアを同じビジネス プロセスで混合することはできません。同期と非同期のペアを混合すると、ビジネス プロセスに対して同期/非同期 WSDL を生成するときにエラーが発生します。

図 23-5 同期と非同期のペア

同期と非同期のペア

同期ペア内に Client Request を置くことはできない

同期ペアの中に Client Request ノードを置くことはできません。

図 23-6 同期ペア

同期ペア

同期クライアントでは、Client Request ノード内の SOAP 添付付きの非同期プロセスを呼び出すことはできない

添付ファイルは HTTP SOAP 1.1 および HTTP SOAP 1.2 バインディングでのみサポートされています。非同期プロセスを同期プロセスから呼び出すには、JMS SOAP をバインディングとして設定する必要があります。従って、要件が競合するためこのシナリオはサポートされていません。

同期/非同期セキュリティ

SyncAsyncTransportServlet は Web 層の転送オブジェクトです。これにより、HTTP プロトコルでは、非同期内部および外部クライアントから同期的に呼び出された WebLogic Integration コンポーネントの呼び出しをサポートできるようになります。

HTTP を介した非同期クライアントからビジネス プロセスへの同期呼び出しは、SyncAsyncTransportServlet 転送で受信されます。基本認証セキュリティを特定のビジネス プロセス URL に設定し、SyncAsyncTransportServlet の J2EE Web アプリケーション web.xml および weblogic.xml デプロイメント記述子で呼び出すことができます。

SyncAsyncServlet を介してアクセスされるリソースの基本認証をコンフィグレーションするには

SyncAsyncTransportServlet は WebLogic Integration System EJB にパッケージ化されています。このサーブレットのデプロイメント記述子 (web.xml) は jpd-ejbs.ear ファイルに含まれています。このファイルは、WebLogic Platform をインストールしたディレクトリが BEA_HOME の場合は、BEA_HOME\weblogic92\integration\lib ディレクトリにあります。web.xmljpd-ejbs.ear ファイルの transport/http/WEB-INF ディレクトリにあります。SyncAsyncTransportServlet から呼び出されるビジネス プロセス URL に基本認証セキュリティ設定を追加するには、サーブレットの web.xml を修正する必要があります。

関連トピック

トランザクション境界

ビジネス プロセスの開始

ステートレス/ステートフル ビジネス プロセスの構築

例外の処理


  ページの先頭       前  次