この章では、非同期サービスの呼出し方法について説明します。
この章の内容は次のとおりです。
チュートリアルのこのフェーズでは、第2章「同期サービスの呼出し」で作成したOrderBookingプロセスに処理を追加します。このフェーズを実行する前に、前のフェーズが正常に完了したことを確認してください。このフェーズでは、単純な非同期BPELプロセスを作成します。次の主要タスクを実行します。
非同期のRapid Distributorsサービスをデプロイします。
Rapid Distributorsサービスと相互作用するパートナ・リンクを作成します。
Rapid Distributorsサービスを呼び出すBPELプロセスを設計します。
BPELプロセスをデプロイします。
Oracle BPEL Controlから、注文フォームに記入してRapid Distributorsサービスに送信することで、デプロイ済のBPELプロセスを実行します。
Rapid Distributorsサービスからクライアントに返されたサプライヤ価格を調べます。
この項では次のタスクを実行します。
このチュートリアルで設計するBPELプロセスは、Rapid DistributorsおよびSelect Manufacturingサービスと通信します。まずこれらのサービスを開始し、実行されていることをテストする必要があります。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→Developer Promptを選択して、SOA_Oracle_Home
\bpel\samples
ディレクトリでオペレーティング・システムのコマンド・プロンプトを開きます。
tutorials\127.OrderBookingTutorial\PriceQuote
サブディレクトリに移動します。
cd tutorials\127.OrderBookingTutorial\PriceQuote
次のコマンドを入力します。
ant
これで、チュートリアルのこのフェーズを使用するために必要なRapid Distributorsサービスがデプロイされ、開始されます。成功すると、最後に次のようなメッセージが表示されます。
BUILD SUCCESSFUL
Select Manufacturingサービスおよびユーザー・アプリケーションも作成されます。これらのサービスは、第4章「パラレル・フローの追加」で使用します。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」を選択して、Oracle BPEL Controlにアクセスし、必要なすべてのサービスが実行されていることを確認します。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
フィールド | 値 |
---|---|
ユーザー名 | oc4jadmin
|
パスワード | password
|
password
は、インストール時に入力した値です。
「ダッシュボード」タブに、「RapidDistributors」および「SelectManufacturing」が表示されている場合、このフェーズのサービスは実行されています。
概要: ここでは、Rapid Distributorsサービスのパートナ・リンクを作成します。 |
Oracle JDeveloperに戻ります。
「コンポーネント・パレット」セクションから「Services」を選択します。
「コンポーネント・パレット」セクションからDesignerウィンドウの右側にPartnerLinkアクティビティをドラッグ・アンド・ドロップします。
次の値を入力して、Rapid Distributorsサービスのパートナ・リンクを作成します。
注意: 下側の「WSDLファイル」フィールドでは、「サービスの開始およびテスト」でデプロイしたRapid Distributorsサービスを自動的に選択するために、懐中電灯(左から2番目の「サービス・エクスプローラ」という名前のアイコン)をクリックして、サービス・エクスプローラ・ウィンドウにアクセスします。 |
フィールド | 値 |
---|---|
名前 | RapidDistributors |
WSDLファイル | 「サービス・エクスプローラ」の懐中電灯アイコンをクリックし、BPELサービス→my_ integration_server_connection→「プロセス」→「デフォルト」→「RapidDistributors」の順に開いて選択することで次のURLにアクセスします。
http://localhost:8888/orabpel/default/RapidDistributors/RapidDistributors?wsdl 関連項目: サービス・エクスプローラ・ウィンドウでWSDLファイルを追加しようとして解析エラーが表示された場合は、「Oracle JDeveloperのWebブラウザ設定でのホスト名の設定」を参照してください。 |
パートナ・リンク・タイプ | RapidDistributors |
パートナ・ロール | RapidDistributorsProvider |
マイ・ロール | RapidDistributorsRequester |
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「Process Activities」を選択します。
「コンポーネント・パレット」セクションから「GetCreditRating」Scopeアクティビティの下にInvokeアクティビティをドラッグ・アンド・ドロップします。
Invokeアイコンをダブルクリックして、Invokeウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
名前 | invokeRD |
パートナ・リンク | RapidDistributors |
「操作」フィールドには、値(initiate)が自動的に入力されます。
表示される変数の作成ウィンドウで「OK」をクリックします。
「入力変数」フィールドに、invokeRD_initiate_InputVariableという名前の変数が自動的に作成されます。この変数には、自動的にRapidDistributorsRequestMessageメッセージ・タイプが割り当てられます。
「OK」をクリックします。
作成した「invokeRD」Invokeアクティビティの下にReceiveアクティビティをドラッグ・アンド・ドロップします。
Receiveアイコンをダブルクリックして、Receiveウィンドウを表示します。
次の詳細を入力します。
フィールド | 値 |
---|---|
名前 | receiveRD |
パートナ・リンク | RapidDistributors |
「操作」フィールドには、値(onResult)が自動的に入力されます。
表示される変数の作成ウィンドウで「OK」をクリックします。
「変数」フィールドに、receiveRD_onResult_InputVariableという名前の変数が自動的に作成されます。この変数には、自動的にRapidDistributorsResponseMessageメッセージ・タイプが割り当てられます。
「OK」をクリックします。
「ファイル」メイン・メニューから「保存」を選択します。
「コンポーネント・パレット」セクションから「invokeRD」Invokeアクティビティの上にAssignアクティビティをドラッグ・アンド・ドロップします。
assignアイコンをダブルクリックして、割当てウィンドウを表示します。
「一般」タブをクリックします。
「名前」フィールドにassignRDInと入力します。
「適用」をクリックします。
「コピー操作」タブをクリックします。
「作成」をクリックし「コピー操作」を選択して、コピー操作の作成ウィンドウを表示します。
フィールド | 値 |
---|---|
送信元 | |
|
変数 |
|
「変数」→「inputVariable」→「ペイロード」→「ns1:PurchaseOrder」→「ns1:OrderItems」の順に開いて選択します。
注意: このネームスペースの数値(ns1、ns2など)は変わる場合があります。自動的に表示されるネームスペース値を使用してください。 |
宛先 | |
|
変数 |
|
「変数」→「invokeRD_initiate_InputVariable」→「ペイロード」→「ns1:OrderItems」の順に開いて選択します。 |
「OK」をクリックして、コピー操作の作成ウィンドウおよび割当てウィンドウを閉じます。
「ファイル」メイン・メニューから「保存」を選択します。チュートリアルのこのフェーズでは、invokeRD_initiate_InputVariableの受信データを別の変数に明示的にコピーする追加のAssignアクティビティは作成しません。
完了後、Designerのウィンドウには次のように表示されます。
注意: このチュートリアルでは、Oracle JDeveloperでBPELプロセスをデプロイする方法を説明しています。 名前とバージョンが同じプロセスをデプロイする際、現在デプロイされているBPELプロセスを上書きするか、新しいバージョン番号にデプロイするかを求めるプロンプトが表示されます。 (このチュートリアルの説明にあるとおり)常に新しいバージョン番号にデプロイするのが最もよい方法です。 同じバージョンのプロセスを再デプロイすると、インスタンスが失効としてとマークされるといった結果になることがあります。このチュートリアルで、コマンドラインから
|
「アプリケーション・ナビゲータ」セクションに移動します。
「OrderBooking」を右クリックします。
「デプロイ」→「my_integration_server_connection」→「defaultドメインにデプロイ」の順に選択します。
デプロイメント・プロパティ・ウィンドウが表示されます。
プロジェクトのバージョン番号を増分(たとえば、1.1と入力)し、「OK」をクリックします。 Oracle BPEL Controlにアクセスすると、OrderBookingプロセスの新しいバージョンが「Order Bookingプロセスの検証、コンパイルおよびデプロイ」で作成したフェーズ1のOrderBookingプロセスのバージョンとともに表示されます。
これでBPELプロセスがコンパイルされます。 ウィンドウ下部のボタンをクリックしてエラーの有無を確認します。エラーが発生していなければ、デプロイは成功しています。 デプロイに失敗した場合は、手順4を参照してください。
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」の順に選択し、Oracle BPEL Controlにアクセスします(すでに開いている場合はページをリフレッシュします)。
Oracle BPEL Controlにログインするために次の情報を入力して「ログイン」をクリックします。
フィールド | 値 |
---|---|
ユーザー名 | oc4jadmin |
パスワード | password
|
Oracle BPEL Controlの「ダッシュボード」タブが表示されます。OrderBookingプロセスの2つのバージョン、1.0と1.1が表示されます。 新しいバージョン1.1がデフォルトのバージョンとなるため、右にアスタリスクが表示されます。
「デプロイ済のBPELプロセス」リストで、手順4で増分したOrderBookingのバージョン(この例では(v. 1.1))をクリックします。
「HTMLフォーム」のすべてのフィールドに詳細を入力します。 テキスト・エディタを使用して、手順16でOrderBooking
ディレクトリにコピーしたOrderBookingPO_1.xml
ファイルの内容からこれらの詳細をコピーして貼り付ける方法もあります。
「XMLソース」ラジオ・ボタンをクリックします。
表示されたフィールドに、OrderBookingPO_1.xml
の内容をコピーして貼り付けます。
「XMLメッセージの転送」をクリックします。
「BPELプロセス」タブに次のようなメッセージが表示されます。
テスト・インスタンスが開始されました
OrderBooking、CreditRatingServiceおよびRapidDistributorsインスタンスが作成されたことを確認します。これらはすべて「インスタンス」リストに表示されます。「最終更新日時」リストには、作成日時が表示されます。
インスタンスをクリックします。
OrderBookingインスタンスの「監査」リンクの下にあるreceiveRDの右側の「MORE」をクリックします。
「XML文書の表示」をクリックして、返されたサプライヤ価格(変数receiveRD_onResult_InputVariableに返されます)を確認します。
異なる段階での他のプロセスの状態および変数値を確認します。
注意: このチュートリアルでは、RapidDistributorsは常に5000という見積り額を出します。 |
ここでは、サービスから注文に対するサプライヤ価格を受け取る単純な非同期BPELプロセスを作成しました。次の主要タスクを実行しました。
非同期のRapid Distributorsサービスをデプロイしました。
Rapid Distributorsサービスと相互作用するパートナ・リンクを作成しました。
Rapid Distributorsサービスを呼び出すBPELプロセスを設計しました。
BPELプロセスをデプロイしました。
Oracle BPEL Controlから、注文フォームに記入してRapid Distributorsサービスに送信することで、デプロイ済のBPELプロセスを実行しました。Rapid Distributorsサービスは非同期サービスなので、外部サービス・リクエストおよびレスポンス間の時間間隔の延長が可能です。
Rapid Distributorsサービスからクライアントに返されたサプライヤ価格を調べました。