BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

BPM - Workshop サンプル ユーザーズ ガイド

 前 次 目次 索引 PDFで表示  

概要

WebLogic Integration BPM Workshop サンプルは、Web サービスと Web ワークフローの間で XML ドキュメント交換による相互呼び出しがどのように行われるかを示します。このサンプルには次の 2 つのシナリオが示されています。

また、このサンプルには次の 2 種類のメッセージ フォーマットが示されています。

注意: BPM - Workshop サンプルは Windows システムでのみ動作します。

この章の内容は以下のとおりです。

 


相互運用のシナリオ

図1-1 は、ワークフローから Web サービスを呼び出して XML メッセージを渡し、後で Web サービスからワークフローに XML メッセージを受け取る方法を示しています。

図1-1 Web サービスを呼び出して XML を渡し、後で Web サービスから XML を受け取るワークフロー


 

このワークフローでは、Web サービスを呼び出して XML ドキュメントを渡すために、SOAP-HTTP または HTTP-XML を使用して XML メッセージを渡します。XML メッセージを受け取った Web サービスは、ビジネス ロジックの処理を開始します。その処理途中または処理後に、Web サービスは XML ドキュメントを含むメッセージをワークフローに送信します。

このシナリオは非同期の Web サービスの特徴を表しています。ワークフローは Web サービスをインスタンス化した後、ワークフロー自身の処理を自由に実行し、後から Web サービスに応答を要求できます。Web サービスの各インスタンスは、サービスを呼び出したワークフロー インスタンスに XML の結果を返さなければなりません。

注意: 厳密に言うと、XML over HTTP のサンプルの Web サービス メソッドは、同期メソッドです。これは、HTTP による XML のみのバインドをサポートする JWS メソッドが空の戻り値をサポートしないという WebLogic Workshop の特徴によるものです。そのため、Workshop JWS 内で非同期 XML/HTTP 専用メソッドを使用することはできません。サンプルでは、JWS でダミーの整数を戻り値として返すことにより、この制限に対処しています。

シナリオの実装方法

図1-2 に示すように、仲介 Web サービスを使用することで、ターゲット Web サービスのプロトコルやメッセージ フォーマットからワークフローを切り離しています。

図1-2 Web サービスを呼び出して XML を渡し、後で Web サービスから XML を受け取るワークフロー


 

仲介 Web サービスは、ターゲット Web サービスから受け取った応答 XML が、元の XML メッセージを送信して呼び出した Web サービス インスタンスと同一のインスタンスから送信されたことを保証します。また、ターゲット Web サービスから、そのサービスに元の XML ドキュメントを渡した正しいワークフロー インスタンスへ、XML の結果を伝達することも保証します。

ワークフローには、未加工の XML を仲介 Web サービスに転送し、後で仲介 Web サービスから XML 応答を受け取るメカニズムが必要です。これらの XML 転送は両方とも、同じ仲介 Web サービス インスタンスとワークフロー インスタンスの間で実行される必要があります。仲介 Web サービスを使用すると、ワークフローは、SOAP/XML over HTTP インタフェースをサポートする必要から解放されます。ワークフローは JMS プロシージャおよびコンシューマとして機能し、Web サービスが SOAP/XML メッセージ フォーマット変換を処理します。

 


サンプルでのシナリオの実行方法

前述のとおり、このサンプルは、発注書情報を含む XML ドキュメントをワークフローで生成する方法を示しています。このサンプルでは、SendPO ワークフローは XML ドキュメントを使用して ProcessPO ワークフローをトリガします。ProcessPO ワークフローは最終的に、発注書情報の処理を完了した後、結果の XML ドキュメントを SendPO ワークフローに返します。

図1-3 は、SOAP over HTTP サンプルの相互運用性プロセスを示しています。表 1-1 は、プロセスの詳細です。

図1-4 は、XML over HTTP サンプルの相互運用性プロセスを示しています。表 1-2 は、プロセスの詳細です。

図1-3 ワークフローと Workshop の対話 − SOAP


 

注意: 各ステップについては、表 1-1 を参照してください。

図1-3 に示すように、ProcessPO ワークフローは SendPO ワークフローから呼び出されます。ProcessPO ワークフローを呼び出してその応答 XML を非同期に取得する手段として、Process PO Web サービスがデプロイされています。これにより、Process PO Web サービスが ProcessPO ワークフローを呼び出してその結果を受け取る際、SendPO ワークフローは実質的に Process PO Web サービスのクライアントとして動作することができます。これを可能にするには、SendPO ワークフローを実行する WebLogic Integration インスタンスから、HTTP 経由で Process PO Web サービスにアクセスできることが必要です。

Send PO Web サービスは、Process PO Web サービスの呼び出しと結果の受信に関する詳細を処理します。Send PO Web サービスは、結果の XML を受け取ると、それを SendPO ワークフローに伝達します。SendPO ワークフローと ProcessPO ワークフローは、HTTP 経由で非同期に XML ドキュメントを相互に送信する手段として、Web サービス Send PO および Process PO を使用します。

表1-1 SOAP over HTTP サンプルで実行されるシナリオのステップ

ステップ

説明

1

SendPO ワークフローが Web サービス専用の JMS キュー (jws.queue) に、発注書を含む XML ドキュメントを送信する。XML ドキュメントには SendPO ワークフローのインスタンス ID も含まれている。SendPO Web サービスは、応答を返すときに (ステップ 11)、そのインスタンス ID を WLPIInstanceIDs という JMS プロパティに割り当てる。これにより次のことが保証される。

2

Send PO Web サービスの purchase メソッドには、発注書 XML ドキュメントにマップされるパラメータがある。さらに、このメソッドは jws.queue に到着した XML メッセージを処理する。

注意: JMS コントロールの受信キューは、非請求メッセージを受信するためには使用できない。詳細については、WebLogic Workshop のオンライン ヘルプで「JMS コントロール : Web サービスから Java Message Service のキューとトピックを使用する」にある「JMS コントロールでサポートされないメッセージングのシナリオ」を参照。

3

Send PO Web サービスが発注書ドキュメントを Process PO Web サービスに送信する。Send PO Web サービスは、Process PO の jws ファイルを使用して作成されたサービス コントロールを使用する。Send PO Web サービスと Process PO Web サービスは、SOAP フォーマットの XML メッセージを HTTP 経由で交換する。 SOAP メッセージ交換により、Send PO Web サービスと Process PO Web サービスが異なるマシン上で動作でき、SendPO ワークフローと ProcessPO ワークフロー間のリモート通信が可能になる。Send PO Web サービスと Process PO Web サービス間の SOAP メッセージ交換は対話的に行われ、2 つの Web サービス間の要求と応答の相関を保証するために、SOAP メッセージ会話 ID が SOAP ヘッダに格納される。このサンプルは 1 台のマシンで実行することもできる。

4

Process PO Web サービスが JMS コントロールを使用して、発注書 XML ドキュメントを BPM イベント キューに入れる。このキューは ProcessPO ワークフローによってモニタされている。JMS メッセージの JMSCorrelatioID ヘッダ フィールドには、送信メッセージを送った Process PO Web サービス インスタンスに JMS 応答メッセージが返されることを保証するために、SOAP 会話 ID が格納されている。

5

ProcessPO ワークフローが BPM イベント キューから XML メッセージを取り出し、処理を開始する。

6

ProcessPO が WLI Worklist ユーザにタスクを割り当て、発注書の受け入れを要求する。

7

ユーザがタスクを実行し、発注書を受け入れる。

8

ProcessPO ワークフローが発注承認書 XML メッセージを BPM 応答キューに入れる。承認書メッセージのヘッダ フィールド JMSCorrelationID には、意図された Process PO Web サービス インスタンスだけがこのメッセージを受け取ることを保証するために、SOAP メッセージ会話 ID が格納されている。

9

Process PO Web サービスには JMS コントロールがあり、そのコントロールによって、BPM 応答キューから発注承認書 XML メッセージが取り出される。

10

Process PO Web サービスがコールバック メソッドを呼び出し、発注承認書メッセージを SendPO Web サービスに転送する。前述のとおり、いずれかの SOAP over HTTP を使用して Web サービス間の通信が行われる。

11

サービス コントロールのコールバックが JMS コントロールを使用して、発注承認書 XML メッセージを BPM イベント キューに入れる。

12

SendPO ワークフローが BPM イベント キューから発注承認書 XML メッセージを取り出す。Send PO ワークフローのワークフロー インスタンス ID がメッセージ ヘッダに格納されたアドレス指定メッセージの受信によって、Get PO Ack イベント ノードがトリガされる。これにより、発注書ドキュメントを送信したワークフロー インスタンスのイベント ノードが PO 承認メッセージの受信でトリガされることを保証している。

13

SendPO ワークフローが WebLogic Integration Worklist ユーザにタスクを割り当て、発注承認書の受け入れを要求する。

14

ユーザがタスクを実行し、発注承認書を受け入れる。

図1-4 ワークフローと Workshop の対話 − XML


 

注意: 各ステップについては、表 1-2 を参照してください。

図1-4 に示すように、ProcessPO ワークフローは SendPO ワークフローから呼び出されます。ProcessPO ワークフローを呼び出し、その応答 XML を非同期に取得するための手段として、Process PO Web サービスがデプロイされています。これにより、Process PO Web サービスが ProcessPO ワークフローを呼び出してその結果を受け取る際、SendPO ワークフローは実質的に Process PO Web サービスのクライアントとして動作することができます。これを可能にするには、SendPO ワークフローを実行する WebLogic Integration インスタンスから、HTTP 経由で Process PO Web サービスにアクセスできることが必要です。

Send PO Web サービスは、Process PO Web サービスの呼び出しと結果の受信に関する詳細を処理します。Send PO Web サービスは、結果の XML を受け取ると、それを SendPO ワークフローに伝達します。SendPO ワークフローと ProcessPO ワークフローは、HTTP 経由で非同期に XML ドキュメントを相互に送信する手段として、Web サービス Send PO および Process PO を使用します。

表1-2 XML over HTTP サンプルで実行されるシナリオのステップ

ステップ

説明

1

SendPO ワークフローが Web サービス専用の JMS キュー (jws.queue) に、発注書を含む XML ドキュメントを送信する。XML ドキュメントには SendPO ワークフローのインスタンス ID も含まれている。Send PO Web サービスが PO Ack 応答を返した時点で
(ステップ 11)、メッセージ ペイロードには、SendPO ワークフローのインスタンス ID が含まれている。SendPO ワークフロー インスタンスの Get PO Ack イベント ノードは、メッセージ ペイロードにそのインスタンス ID を含むイベント キーを検索する。

注意: この形式の要求と応答の相関は、SOAP のサンプルとは異なる。SOAP のサンプルでは、SendPO ワークフローの Get PO Ack イベント ノードは、アドレス指定メッセージの受信によってトリガされる。

2

Send PO Web サービスの sendXMLEvent メソッドには、発注書 XML ドキュメントにマップされるパラメータがある。さらに、このメソッドは jws.queue に到着した XML メッセージを処理する。

注意: JMS コントロールの受信キューは、非請求メッセージを受信するためには使用できない。詳細については、WebLogic Workshop のオンライン ヘルプで「JMS コントロール : Web サービスから Java Message Service のキューとトピックを使用する」にある「JMS コントロールでサポートされないメッセージングのシナリオ」を参照。

3

Send PO Web サービスが、Process PO Web サービスの onXMLEvent メソッドを呼び出すことによって、Process PO Web サービスに発注書 XML ドキュメントを送信する。Send PO Web サービスは、Process PO Web サービスの jws ファイル (WLW2BPM.jws) を使用して作成されたサービス コントロールを使用する。Send PO Web サービスと Process PO Web サービスは、未加工の XML メッセージを HTTP 経由で交換する。

注意: これは SOAP サンプルとは異なる。SOAP サンプルでは、2 つの Web サービスが SOAP メッセージを使用して相互に通信する。

4

Process PO Web サービスが JMS コントロールを使用して、発注書 XML ドキュメントを BPM イベント キューに入れる。このキューは ProcessPO ワークフローによってモニタされている。メッセージ ペイロードには SendPO ワークフローのインスタンス ID が格納されている。

5

ProcessPO ワークフローが BPM イベント キューから XML メッセージを取り出し、処理を開始する。

6

ProcessPO が WebLogic Integration Worklist ユーザに発注書の受け入れを要求するタスクを割り当てる。

7

ユーザがタスクを実行し、発注書を受け入れる。

8

ProcessPO ワークフローが発注承認書 XML メッセージを Workshop JMS キュー (jws.queue) に入れる。メッセージ ヘッダには、メッセージが JMS キューで受信されたときに呼び出される Process PO Web サービス メソッド (WLW2BPM.jws の sendPOAck) を識別する情報が格納されている。

9
10

Process PO Web サービスの sendPOAck メソッドが、Send PO Web サービスに対して定義されているサービス コントロール (BPM2WLWControl.ctrl) を通して、Send PO Web サービスの sendPOAck メソッドを呼び出す。前述のとおり、Process PO Web サービスと Send PO Web サービス間のメッセージ交換は、HTTP を使用して未加工の XML フォーマットで行われる。

11

Send PO Web サービスが JMS コントロールを使用して、発注承認書 XML メッセージを BPM イベント キューに入れる。承認書メッセージのメッセージ ペイロードには SendPO ワークフローのインスタンス ID が格納されている。

12

SendPO ワークフローが BPM イベント キューから発注承認書 XML メッセージを取り出す。Get PO Ack イベント ノードは、イベント キー値式を使用して、それ自身と同じワークフロー インスタンス ID を含むメッセージだけを受け入れる。

13

SendPO ワークフローが WebLogic Integration Worklist ユーザに発注承認書の受け入れを要求するタスクを割り当てる。

14

ユーザがタスクを実行し、発注承認書を受け入れる。

WebLogic Integration のインスタンスが 1 つである理由

サンプルは WebLogic Integration の 1 つのインスタンスで実行されます。実際には、2 つのインスタンスが HTTP 経由で相互に接続できることを条件に、SendPO ワークフローと Send PO Web サービスを 1 つのインスタンスにデプロイし、Process PO Web サービスと ProcessPO ワークフローを別のインスタンスにデプロイできます。

サンプルのステップを一度に 1 つずつ実行できるように、サンプル実行中は WebLogic Integration Swing Worklist クライアントを使用して、設定された間隔の 2 回に 1 回ユーザからの入力が取得されます。Worklist との対話が果たす機能は、ユーザが一度に 1 つのセクションの実行を見ることができるように、サンプルの実行をセクションに分割することだけです。

 

ページの先頭 前 次