![]() ![]() ![]() ![]() |
ビジネス プロセスには、ビジネス・プロセスを呼び出すために選択するメソッドによって、同期または非同期があります。ただし、どちらのメソッドも同期および非同期のアクティビティを含むことができます。
同期ビジネス プロセスには非同期操作を含めることができますが、プロセス フローの開始イベントの後に追加する必要があります。つまり、実行時には、プロセスは同期開始イベントの完了後に実行されます。同期操作の内部にステートフル ロジックを置くことはできません。ステートフルおよびステートレス ビジネス プロセスの詳細については、「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。
注意 : | 戻り値のあるクライアント要求ノード内で同期プロセスで非同期操作が必要となる場合は、「同期クライアントと非同期ビジネス プロセス」を参照してください。 |
サブプロセスは、プロセス コントロールまたはサービス ブローカ コントロールを介してビジネス プロセスから呼び出されるプロセスです。同期または非同期で呼び出すことができます。
プロセス コントロールにより、ビジネス プロセス (および 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 のグラフィカルな設計環境の [プロパティー] ビューを使用して実行できます。
非同期操作では、トランザクションはサブプロセスに伝播されません。つまり、サブプロセスは、自身のトランザクション内で実行されます。サブプロセスに送信されたメッセージは、サブプロセスのプロセス キューでバッファリングされます。呼び出し側プロセスは、メッセージが適切にキューに配信されると、メッセージの配信が成功したと見なします。結果的に、サブプロセスの失敗は呼び出し側に送信されません。たとえば、未処理の例外によりサブプロセスが失敗しますが、呼び出し側プロセスには通知されません。
注意 : | ビジネス プロセス (Java ファイル) が生成したセッション bean には、300 秒のデフォルトのタイムアウト値があります。この値が十分ではなく、長時間にわたる処理のタイムアウトが発生する場合、この値を変更できます。この値の詳細については、WebLogic Server のドキュメントを参照してください。 |
注意 : | 非同期の失敗は呼び出し側のビジネス プロセスに対して自動的に通知されないため、プロセスとサブプロセスの通知に関する次の設計パターンを検討する必要があります。 |
同期クライアントにおいて、リソースとの非同期での対話を含むビジネス プロセスと対話を可能にします。たとえば、Java コントロールを使用する JSP や Portal ページなどの同期 BEA Workshop for WebLogic Platform クライアントは、必要に応じて、ビジネス プロセスを呼び出してからブロックすることができます。クライアントのブロック中に、JMS メッセージのキューへの追加、JMS 受信の待機などの非同期アクティビティをビジネス プロセスで実行し、クライアントへの応答を返した後にクライアントのブロックを解除することができます。図 23-2 はこのシナリオを表しています。
次の図 (および、Control Receive ノードの ) のように、Client Request with Return ノードの非同期操作を必要とする同期プロセスを作成することはできませんが、このタスクを完了する Client Request および Client Response ノードの非同期プロセスは作成できます。このビジネス プロセスは、Web サービス インタフェースを使用するクライアントからは同期のように見えます。また、このシナリオは、WebLogic Server
clientgen
ユーティリティまたはサービス ブローカ コントロールを使用する BEA Workshop for WebLogic Platform エンティティで作成された Java クライアントで有効です。図 23-3 を参照してください。
同期クライアントが、リソースと非同期で対話するビジネス プロセスと対話できるようにするには、同期/非同期コールバック名という属性プロパティを指定した Client Request ノードを含むビジネス プロセスを作成します。この Client Request ノードのプロパティには、関連付けられた Client Response ノードで使用するコールバック メソッドの名前が保持されます。Client Request ノードと Client Response ノードは、クライアントがブロックしているときに発生するアクティビティ (非同期クライアントを含む) を表します。このプロパティの設定後、同期/非同期 WSDL を生成する必要があります。同期 WSDL の生成プロセスでは、サービスの SOAP アドレスと、修正した SOAP アドレスが入れ替わります。修正したアドレスにより、同期サーブレットがクライアント要求および後続の戻りアクションを処理します。生成されたサービス エントリは以下のようになります。
<service name="syncAsync">
<port name="syncAsyncSoap" binding="s0:syncAsyncSoap">
<soap:address location="http://localhost:7001/SyncAsyncWeb/processes/syncAsync.jpd"/>
</port>
<service name="syncAsync">
<port name="syncAsyncSoap" binding="s0:syncAsyncSoap">
<soap:address location="http://localhost:7001/sync2AsyncIM/SyncAsyncWeb/processes/syncAsync.sync2JPD"/>
</port>
同期/非同期 WSDL の生成方法については、「同期/非同期 WSDL ファイルを作成するには」を参照してください。
注意 : | 非同期ビジネス プロセスを呼び出し、情報が返されるまでプロセスを待機 (ブロック) する同期クライアントの例を表示します。 |
注意 : | ビジネス プロセスを設計する前に、「制限事項」の節を必ずお読みください。 |
注意 : | [ノード パレット] が BEA Workshop for WebLogic Platform に表示されない場合、BEA Workshop for WebLogic Platform メニューから、[ウィンドウ![]() ![]() |
ビジネス プロセスは図 23-4 に示す左側のビジネス プロセスのようになります。
誤った名前を入力すると、Client Request ノードの隣に が表示されます。
注意 : | [プロパティー] ビューが表示されない場合、メニュー バーから [ウィンドウ![]() ![]() |
WSDL ファイルは、Web サービスのプロデューサとコンシューマ間におけるインタフェース情報の通信に使用されます。WSDL 記述により、クライアントは Web サービスの実装に関する詳しい知識が無くても、Web サービスの機能を利用できるようになります。
注意 : | WSDL ファイルを生成するには、まず Client Request ノードで同期/非同期コールバック名属性プロパティを設定する必要があります。 |
BEA Workshop for WebLogic Platform では、WSDL ファイルが生成され、Process.java ファイルの直下にある [パッケージ・エクスプローラー] ペインに表示します。Java ファイルの名前が HelloWorld.java
の場合、WSDL ファイルの名前は HelloWorldSyncContract.wsdl
となります。
同期と非同期の Client Request および Client Response のペアを同じビジネス プロセスで混合することはできません。同期と非同期のペアを混合すると、ビジネス プロセスに対して同期/非同期 WSDL を生成するときにエラーが発生します。
同期ペアの中に Client Request ノードを置くことはできません。
添付ファイルは 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
デプロイメント記述子で呼び出すことができます。
SyncAsyncTransportServlet は WebLogic Integration System EJB にパッケージ化されています。このサーブレットのデプロイメント記述子 (web.xml
) は jpd-ejbs.ear
ファイルに含まれています。このファイルは、WebLogic Platform をインストールしたディレクトリが BEA_HOME
の場合は、BEA_HOME
\weblogic92\integration\lib
ディレクトリにあります。web.xml
は jpd-ejbs.ear
ファイルの transport/http/WEB-INF
ディレクトリにあります。SyncAsyncTransportServlet から呼び出されるビジネス プロセス URL に基本認証セキュリティ設定を追加するには、サーブレットの web.xml
を修正する必要があります。
![]() ![]() ![]() |