この章では、サプライヤ価格を受け取るために別の非同期サービスをコールするパラレル・フロー・ロジックの作成方法について説明します。
この章の内容は次のとおりです。
チュートリアルのこのフェーズでは、第3章「非同期サービスの呼出し」で設計したOrderBookingプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。チュートリアルのこのフェーズでは、非同期BPELプロセスをコールして、2つのサービスからクライアントの注文に対するサプライヤ価格を受け取るパラレル・フロー・ロジックを作成します。次の主要タスクを実行します。
2番目の非同期サービス(Select Manufacturing)と相互作用するパートナ・リンクを作成します。
2つのサービス(Rapid DistributorsおよびSelect Manufacturing)をコールするパラレル・フロー・ロジックを設計します。
Select Manufacturingサービスを呼び出すBPELプロセスを設計します。
BPELプロセスをデプロイします。
Oracle BPEL Controlから、注文フォームに記入してRapid DistributorsサービスとSelect Manufacturingサービスに並行して送信することで、デプロイ済のBPELプロセスを実行します。
Select Manufacturing URLにアクセスし、サプライヤ価格を手動で送信します(Rapid Distributorsの価格は自動処理されます)。
両サービスから価格の結果が戻るまで待機します。
Rapid DistributorsサービスおよびSelect Manufacturingサービスから返されたサプライヤ価格を確認します。
この項では次のタスクを実行します。
Select Manufacturingサービスは、「サービスの開始およびテスト」でRapid Distributorsサービスを開始したときに自動的に開始されました。Select Manufacturingサービスが現在実行されていない場合は、前述の項で開始の手順を確認してください。
Internet ExplorerまたはMozilla Firefoxを使用してSelect Manufacturingユーザー・アプリケーションにアクセスし、デプロイされていることを確認します。
http://localhost:8888/SelectManufacturingUI
jcooper
/welcome1
としてログインします。
Orders for Reviewウィンドウが表示されます。
「Logout」をクリックします。
概要: ここでは、Select Manufacturingサービスのパートナ・リンクを作成します。 |
Oracle JDeveloperに戻ります。
「コンポーネント・パレット」セクションから「Services」を選択します。
「コンポーネント・パレット」セクションから、Designerウィンドウの左側(「サービス」ヘッダーの下で「client」パートナ・リンクの上)にPartnerLinkアクティビティをドラッグ・アンド・ドロップします。
次の値を入力して、Select Manufacturingサービスのパートナ・リンクを作成します。
注意: 下側の「WSDLファイル」フィールドでは、「サービスの開始およびテスト」でデプロイしたSelect Manufacturingサービスを自動的に選択するために、懐中電灯(左から2番目の「サービス・エクスプローラ」という名前のアイコン)をクリックして、サービス・エクスプローラ・ウィンドウにアクセスします。 |
フィールド | 値 |
---|---|
名前 | SelectManufacturing |
WSDLファイル | 「サービス・エクスプローラ」の懐中電灯アイコンをクリックし、BPELサービス→my_ integration_server_connection→「プロセス」→「デフォルト」→「SelectManufacturing」の順に開いて選択することで次のURLにアクセスします。
http://localhost:8888/orabpel/default/SelectManufacturing/SelectManufacturing?wsdl 関連項目: サービス・エクスプローラ・ウィンドウでWSDLファイルを追加しようとして解析エラーが表示された場合は、「Oracle JDeveloperのWebブラウザ設定でのホスト名の設定」を参照してください。 |
パートナ・リンク・タイプ | SelectManufacturing |
パートナ・ロール | SelectManufacturingProvider |
マイ・ロール | SelectManufacturingRequester |
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
概要: ここでは、Flowアクティビティを作成します。このアクティビティにRapid DistributorsおよびSelect Manufacturingの両サプライヤに対するInvokeアクティビティとReceiveアクティビティを配置します。Flowアクティビティは、2つのサプライヤを並行して呼び出すために必要です。価格の見積りのために、注文の明細項目が2つのサプライヤに渡されます。 |
「コンポーネント・パレット」セクションから「Process Activities」を選択します。
「コンポーネント・パレット」セクションから「GetCreditRating」Scopeアクティビティの下にFlowアクティビティをドラッグ・アンド・ドロップします。
「+」記号をクリックして、Flowアクティビティを開きます。
菱形をダブルクリックしてFlowウィンドウを表示します。
「名前」フィールドにGetPriceQuoteと入力します。
「OK」をクリックします。
第3章「非同期サービスの呼出し」で作成した次のアクティビティを、「GetPriceQuote」Flowアクティビティの右パネルにドラッグ・アンド・ドロップします。一度に1つのアクティビティをドラッグし、次の順序で配置します。
assignRDIn
invokeRD
receiveRD
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「GetPriceQuote」Flowアクティビティの左パネルにInvokeアクティビティをドラッグ・アンド・ドロップします。
Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
名前 | invokeSM |
パートナ・リンク | SelectManufacturing |
「操作」フィールドには、値(initiate)が自動的に入力されます。
「入力変数」フィールドの右側にある最初のアイコンをクリックします。これは変数自動作成アイコンです。
表示される変数の作成ウィンドウで「OK」をクリックします。
「入力変数」フィールドに、invokeSM_initiate_InputVariableという名前の変数が自動的に作成されます。この変数には、自動的にSelectManufacturingRequestMessageメッセージ・タイプが割り当てられます。
「OK」をクリックします。
作成した「invokeSM」Invokeアクティビティの下にReceiveアクティビティをドラッグ・アンド・ドロップします。
Receiveアイコンをダブルクリックして、Receiveウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
名前 | receiveSM |
パートナ・リンク | SelectManufacturing |
「操作」フィールドには、値(onResult)が自動的に入力されます。
表示される変数の作成ウィンドウで「OK」をクリックします。
「変数」フィールドに、receiveSM_onResult_InputVariableという名前の変数が自動的に作成されます。この変数には、自動的にSelectManufacturingResponseMessageメッセージ・タイプが割り当てられます。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
概要: ここでは、価格見積りのために、Select Manufacturingサプライヤに顧客の注文明細項目を渡すAssignアクティビティを作成します。 |
「コンポーネント・パレット」セクションから「GetPriceQuote」Flowアクティビティの左パネルにある「invokeSM」Invokeアクティビティの上に、Assignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignSMInと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
送信元 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:OrderItems」の順に開いて選択します。
注意: このネームスペースの数値(ns1、ns2など)は変わる場合があります。自動的に表示されるネームスペース値を使用してください。 |
宛先 | |
|
変数 |
|
「変数」→「invokeSM_initiate_InputVariable」→「ペイロード」→「ns1:OrderItems」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
Designerのウィンドウには次のように表示されます。
-記号をクリックして「GetPriceQuote」Flowアクティビティを閉じます。チュートリアルのこのフェーズでは、recieveSM_onResult_InputVariableの受信データを別の変数に明示的にコピーする追加のAssignアクティビティは作成しません。
「ファイル」メイン・メニューから「保存」を選択します。
完了後、Designerのウィンドウには次のように表示されます。
「アプリケーション・ナビゲータ」セクションに移動します。
「OrderBooking」を右クリックします。
「デプロイ」→「my_integration_server_connection」→「defaultドメインにデプロイ」の順に選択します。
プロンプトが表示されたら、プロジェクトのバージョン番号を増分(たとえば、1.2と入力)し、「OK」をクリックします。
これでBPELプロセスがコンパイルされます。 ウィンドウ下部のボタンをクリックしてエラーの有無を確認します。エラーが発生していなければ、デプロイは成功しています。 デプロイに失敗した場合は、手順4を参照してください。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」の順に選択し、Oracle BPEL Controlにアクセスします(すでに開いている場合はページをリフレッシュします)。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
フィールド | 値 |
---|---|
ユーザー名 | oc4jadmin
|
パスワード | password
|
password
は、インストール時に「Oracle Application Server SOA Suiteのインストール」で入力した値です。
Oracle BPEL Controlの「ダッシュボード」タブが表示されます。
「デプロイ済のBPELプロセス」リストで、手順4で増分したOrderBookingバージョンをクリックします。
「HTMLフォーム」のすべてのフィールドに詳細を入力します。テキスト・エディタを使用して、OrderBookingPO_1.xml
ファイルの内容からこれらの詳細をコピーし、貼り付けることもできます。
「XMLソース」ラジオ・ボタンをクリックします。
表示されたフィールドに、OrderBookingPO_1.xml
の内容をコピーして貼り付けます。
「XMLメッセージの転送」をクリックします。
「BPELプロセス」タブに次のようなメッセージが表示されます。
テスト・インスタンスが開始されました
画面上部の「インスタンス」タブをクリックします。
OrderBooking、CreditRatingService、SelectManufacturingおよびRapidDistributorsインスタンスが作成されたことを確認します。これらはすべて「インスタンス」リストに表示されます。「最終更新日時」リストには、作成日時が表示されます。CreditRatingServiceおよびRapidDistributorsインスタンスは自動化されたサービスであるため、比較的早く完了します。 SelectManufacturingは実行後、ユーザー入力の完了まで待機します。
「インスタンス」リストで、手順4で増分したOrderBookingインスタンスをクリックします。
The state of this instance is Active
「監査」リンクをクリックして、インスタンスの実行プロセスを調べます。SelectManufacturingサービスが保留されています。RapidDistributorsサービスは完了しています。
「フロー」リンクをクリックします。パラレル・フロー・ロジックは、RapidDistributorsブランチでは完了し、SelectManufacturingブランチでは待機中です(次の図で強調表示されています)。
アクティビティのこの部分にアクセスし、価格設定のためユーザーにこの部分を公開し、タスク完了のためユーザー・データを使用してプロセスを実行するには、ブラウザからタスクを呼び出す必要があります。
サンプルJSPページとユーザー・プレゼンテーションが事前に作成され、SelectManufacturingUI
としてデプロイされています。JSPページには、ユーザー・アクションを待機中のタスクのリストが表示されます。
Internet ExplorerまたはMozilla Firefoxを使用して、事前作成済のJSP Select Manufacturingアプリケーションにアクセスします。
http://localhost:8888/SelectManufacturingUI
jcooper
/welcome1
としてログインします。
「Title」の下の注文をクリックします。
「Price」フィールドに価格を入力し、「Quote」をクリックします。これで、JSPのフォーム送信メッセージが送信され、タスクが完了します。処理後、タスクが完了したことを知らせるメッセージが表示されます。
「Logout」をクリックします。
Oracle BPEL Controlに戻ります。
OrderBookingインスタンスをクリックします。
次のようなメッセージが表示されます。
The state of this instance is Completed
「監査」および「フロー」リンクをクリックし、OrderBookingプロセス・インスタンスの実行を最後まで確認します(各サプライヤの価格見積りを確認します)。
ここでは、非同期BPELプロセスをコールして、2つのサービスからクライアントからの注文に対するサプライヤ価格を受け取るパラレル・フロー・ロジックを作成しました。次の主要タスクを実行しました。
2番目の非同期サービス(Select Manufacturing)と相互作用するパートナ・リンクを作成しました。
2つのサービス(Rapid DistributorsおよびSelect Manufacturing)をコールするパラレル・フロー・ロジックを設計しました。
Select Manufacturingサービスを呼び出すBPELプロセスを設計しました。
BPELプロセスをデプロイしました。
Oracle BPEL Controlから、注文フォームに記入してRapid DistributorsサービスとSelect Manufacturingサービスに並行して送信することで、デプロイ済のBPELプロセスを実行しました。
Select Manufacturing URLにアクセスし、サプライヤ価格を手動で送信しました(Rapid Distributorsの価格は自動処理されたため、手動送信は必要ありませんでした)。
両サービスから価格の結果が戻るまで待機しました。
Rapid DistributorsサービスおよびSelect Manufacturingサービスから返されたサプライヤ価格を確認しました。