この章では、SelectManufacturerプロジェクトの作成方法について説明します。 項目は次のとおりです。
SelectManufacturerプロジェクトは、Select Manufacturerというサプライヤを表します。 顧客が注文を発行すると、その注文はSelect ManufacturerとRapid Distributorsの2社のサプライヤに送信され、両方のサプライヤから見積りが取得されます。 低い見積り金額を提示したサプライヤが、その顧客の注文を履行します。
SelectManufacturerプロジェクトは、非同期のBPELプロセスです。 これは、このプロジェクトに、BPELプロセス・フローを開始するreceiveアクティビティと、フローの最終点で結果(見積り)を使用して非同期でクライアントをコールバックするinvokeアクティビティが含まれていることを意味します。
アプリケーション・ナビゲータで、「SOADEMO」アプリケーションを右クリックし、「新規プロジェクト」を選択して新規ギャラリを表示します。
新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Projects」を選択します。 「項目」の下にある「BPELプロセス・プロジェクト」を選択します。
「OK」をクリックします。 BPELプロジェクト作成ウィザードが表示されます。
BPELプロジェクト作成ウィザードのプロジェクトの設定ページで、次の操作を実行します。
名前: 「SelectManufacturer」と入力します。
ネームスペース: 「http://www.globalcompany.com/ns/selectservice」と入力します。
デフォルトのプロジェクト設定を使用: このオプションを選択します。
テンプレート: 「空のBPELプロセス」を選択します。
「終了」をクリックします。
SelectManufacturer¥bpel¥SelectManufacturer.wsdl
ファイルを、soademo_101310_prod.zip
ファイルからSOADEMO
¥SelectManufacturer¥bpel
ディレクトリにコピーします。
「表示」→「コンポーネント・パレット」の順に選択して、コンポーネント・パレットを表示します。 コンポーネント・パレットは、BPELのアクティビティとサービスを、作成するSelectManufacturerのBPELフローにドラッグ・アンド・ドロップするために必要です。
コンポーネント・パレットのドロップダウンから「Services」を選択します。
コンポーネント・パレットから「Partner Link」アイコンをドラッグして、「サービス」スイムレーンにドロップします。 このアイコンは、左側または右側のいずれにもドロップできます。
パートナ・リンクのダイアログで、次の操作を実行します。
名前: 「SelectService」と入力します。
WSDL: 「サービス・エクスプローラ」アイコン(左から2番目)をクリックして、「サービス・エクスプローラ」ダイアログを表示します。 「サービス・エクスプローラ」ダイアログで「プロジェクトのWSDLファイル」を開き、「SelectManufacturer.wsdl」を選択します。
「サービス・エクスプローラ」ダイアログで、「OK」をクリックします。
パートナ・リンク・タイプ: 「SelectService_PL」を選択します(自動的に表示されます)。
パートナ・ロール: 「SelectServiceRequester」を選択します。
マイ・ロール: 「SelectServiceProvider」を選択します。
「パートナ・リンクの作成」ダイアログで、「OK」をクリックします。
この時点で、SelectManufacturer.bpelページが次のように表示されていることを確認します。
このステップでは、SelectManufacturerプロジェクトに対してinputVariable
とoutputVariable
という2つの変数を作成します。 プロジェクト・レベルで定義した変数には、プロジェクト内のすべてのアクティビティがアクセスできます。
「SelectManufacturer」スコープをダブルクリックして、「Process」ダイアログを表示します。 横に表示されている「SelectManufacturer」テキストをダブルクリックすることもできます。
「Process」ダイアログで、「変数」タブをクリックします。
図7-6 SelectManufacturerに関する「Process」ダイアログ、「変数」タブ
inputVariableという変数を作成します。
「作成」をクリックして、「変数の作成」ダイアログを表示します。
「変数の作成」ダイアログで次の値を設定します。
名前: 「inputVariable」と入力します。
タイプ: 「メッセージ・タイプ」を選択して懐中電灯アイコンをクリックします。 「タイプの選択」ダイアログが表示されます。
「タイプの選択」で、「タイプ・エクスプローラ」→「メッセージ・タイプ」→「パートナ・リンク」→「SelectService」→「SelectManufacture.wsdl」→「メッセージ・タイプ」→「RequestQuote_processRequestQuote」の順に開きます。
「タイプの選択」で「OK」をクリックします。 「変数の作成」ダイアログは次のように表示されます。
「変数の作成」ダイアログで、「OK」をクリックします。 「Process」ダイアログに戻ります。 このダイアログに「inputVariable」が表示されていることを確認します。
outputVariableという2番目の変数を作成します。
「作成」をクリックして、「変数の作成」ダイアログを表示します。
「変数の作成」ダイアログで次の値を設定します。
名前: 「outputVariable」と入力します。
タイプ: 「メッセージ・タイプ」を選択して懐中電灯アイコンをクリックします。 「タイプの選択」ダイアログが表示されます。
「タイプの選択」で、「タイプ・エクスプローラ」→「メッセージ・タイプ」→「パートナ・リンク」→「SelectService」→「SelectManufacture.wsdl」→「メッセージ・タイプ」→「RequestQuote_processRequestQuoteResponse」の順に開きます。
「タイプの選択」で、「OK」をクリックします。 「変数の作成」ダイアログは次のように表示されます。
「変数の作成」ダイアログで、「OK」をクリックします。
「Process」ダイアログに、次の2つの変数が表示されていることを確認します。
図7-11 inputVariableとoutputVariableが表示された「Process」ダイアログ
「Process」ダイアログで、「OK」をクリックします。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
このBPELプロセスの起点として、receiveアクティビティを作成します。 receiveアクティビティは、クライアントからリクエストを受信します(この場合、クライアントは別のBPELプロセスであるSOAOrderBookingプロジェクトです)。このリクエストにはパラメータが含まれています。
コンポーネント・パレットのドロップダウンから「Process Activities」を選択します。
コンポーネント・パレットから「Receive」アクティビティ・アイコンをドラッグして、ページ上の「アクティビティをここにドロップ」ボックス内にドロップします。
矢印を、新規に作成したreceiveアクティビティからドラッグして、SelectServiceパートナ・リンクにドロップします。 ドラッグすると、receiveアクティビティとパートナ・リンクを接続する線が表示されます。 マウスを放すと、「Receive」ダイアログが表示されます。
「Receive」ダイアログで、次の操作を実行します。
名前: 「Receive_1」と入力します。
パートナ・リンク: 「SelectService」に設定されていることを確認します。 この値は自動的に表示されます。
操作: 「processRequestQuote」に設定されていることを確認します。 この値は自動的に表示されます。
変数: 「変数の参照」アイコン(右側にあるアイコン)をクリックして、「変数の選択」ダイアログを表示します。 「inputVariable」を選択します。
「変数の選択」で、「OK」をクリックします。
インスタンスの作成: このオプションを選択します。
「Receive」ダイアログは次のように表示されます。
「Receive」ダイアログで、「OK」をクリックします。
SelectManufacturer.bpelページには、SelectServiceパートナ・リンクからreceiveアクティビティへのリンクが表示されます。
図7-14 SelectServiceパートナ・リンクからreceiveアクティビティへのリンクが表示されたSelectManufacturer.bpel
「ファイル」→「保存」の順に選択して、作業内容を保存します。
このassignアクティビティでは、Select Manufacturerが見積りを依頼された場合に戻す値を設定します。 このSOA Order Bookingアプリケーションでは処理を簡素化するために、SelectManufacturerのBPELプロセスは、次の2つの値を戻します。
サプライヤの名前(SelectDistributors)。
注文に対する見積り。 Select Manufacturerでは、注文の品目数に単純に120を乗算した値を戻すことで見積りを算出します。
これらの値は、outputVariable
変数に設定され、クライアントに戻されます。
コンポーネント・パレットのドロップダウンから「Process Activities」を選択します。
コンポーネント・パレットから「Assign」アクティビティ・アイコンをドラッグして、「Receive_1」アクティビティの下にドロップします。
新規のAssignインスタンスをダブルクリックして、「Assign」ダイアログを表示します。
「Assign」ダイアログで、「コピー操作」タブをクリックします。
「コピー操作」タブで、1番目のコピー操作を作成します。 このコピー操作では、戻す見積りの値を設定します。
「作成」ドロップダウンから「コピー操作」を選択します。 「コピー操作の作成」ダイアログが表示されます。
「コピー操作の作成」ダイアログで、次の操作を実行します。
「From」側では、「タイプ」ドロップダウンから「式」を選択します。 「式」ボックスに次のコードを入力します。
120 * bpws:getVariableData('inputVariable','parameters', '/client:processRequestQuoteElement/client:param0/client:quantity')
この計算式では、注文の品目数に120を乗算して、見積り価格を算出しています。
「To」側では、「タイプ」ドロップダウンから「Variable」を選択します。 「変数」→「プロセス」→「変数」→「outputVariable」→「parameters」→「client:processRequestQuoteResponseElement」→「client:return」→「client:supplierPrice」の順に選択します。 接頭辞(client)がマシンによって異なる場合があることに注意してください。
「コピー操作の作成」ダイアログが次のように表示されていることを確認します。
「コピー操作の作成」ダイアログで、「OK」をクリックします。
2番目のコピー操作を作成します。 このコピー操作では、戻す名前を設定します。
「作成」ドロップダウンから「コピー操作」を選択します。 「コピー操作の作成」ダイアログが表示されます。
「コピー操作の作成」ダイアログで、次の操作を実行します。
「From」側では、「タイプ」ドロップダウンから「式」を選択します。 「式」ボックスに次のコードを入力します。
string('SelectDistributors')
「To」側では、「タイプ」ドロップダウンから「Variable」を選択します。 「変数」→「プロセス」→「変数」→「outputVariable」→「parameters」→「client:processRequestQuoteResponseElement」→「client:return」→「client:supplierName」の順に選択します。
「コピー操作の作成」ダイアログが次のように表示されていることを確認します。
「コピー操作の作成」ダイアログで、「OK」をクリックします。
「Assign」ダイアログが次のように表示されていることを確認します。
「Assign」ダイアログで、「OK」をクリックします。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
SelectManufacturer.bpelページが次のように表示されていることを確認します。
図7-18 assignアクティビティが表示されたSelectManufacturer.bpelページ
invokeアクティビティでは、outputVariable
の値をクライアントに戻します。
コンポーネント・パレットのドロップダウンから「Process Activities」を選択します。
コンポーネント・パレットから「Invoke」アクティビティ・アイコンをドラッグして、「Assign_1」アクティビティの下にドロップします。
矢印を、新規に作成したinvokeアクティビティからドラッグして、SelectServiceパートナ・リンクにドロップします。 「Invoke」ダイアログが表示されます。
「Invoke」ダイアログで、次の操作を実行します。
名前: 「Invoke_1」と入力します。
パートナ・リンク: 「SelectService」に設定されていることを確認します。
操作: 「processRequestQuoteResponse」を選択します。 この値は自動的に設定されます。
入力変数: 「変数の参照」アイコン(右側にあるアイコン)をクリックして、「変数の選択」ダイアログを表示します。 「変数の選択」で、「変数」→「プロセス」→「変数」→「outputVariable」の順に選択します。
「変数の選択」で、「OK」をクリックします。
「Invoke」ダイアログが次のように表示されていることを確認します。
「Invoke」ダイアログで、「OK」をクリックします。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
SelectManufacturer.bpelページは次のように表示されます。
図7-21 invokeアクティビティが表示されたSelectManufacturer.bpelページ
アプリケーション・ナビゲータで、「SelectManufacturer」→「リソース」の下にある「build.properties」をダブルクリックします。 このファイルには、BPELプロジェクトをデプロイするときに、build.xml
で使用する値が定義されています。
build.properties
ファイルにある次の行を(#
文字を削除して)非コメント化します。
platform=ias_10g domain=default rev=1.0 admin.user=oc4jadmin admin.password=welcome99 http.hostname=myAppServerMachine.mydomain.com http.port=8888 j2ee.hostname=myAppServerMachine.mydomain.com rmi.port=23793 opmn.requestport=6005 oc4jinstancename=home
必要に応じて編集します。 太字イタリック体の値は一般的な値であり、変更が必要です。
rmi.port
の値を確認するには、次のコマンドを実行します。
ORACLE_HOME¥opmn¥bin¥opmnctl status -l
ORACLE_HOMEには、Oracle Application ServerのOracleホームを指定します。
opmn.requestport
の値を確認するには、手順6を参照してください。
「ファイル」→「保存」の順に選択して、変更内容をbuild.properties
に保存します。
(「SelectManufacturer」→「リソース」の下にある)「build.xml」を右クリックし、「Antを実行」を選択します。
「Antを実行」ダイアログで、「プロパティ」タブをクリックします。
「プロパティ・ファイル」セクションで、「追加」をクリックします。 「Antプロパティ・ファイルの追加」ダイアログで、SelectManufacturer
ディレクトリの「build.properties」
ファイルを選択して、「開く」をクリックします。
「Antを実行」ダイアログが次のように表示されていることを確認します。
図7-22 「プロパティ」タブに、ロードされたbuild.propertiesファイルが表示された「Antを実行」ダイアログ
「OK」をクリックします。 JDeveloperによってAntが実行され、プロジェクトがコンパイルおよびデプロイされます。 エラーが発生した場合は、次の項第7.8.1項「Antを使用したDeveloper Promptからのデプロイ」を参照してください。
エラーが発生した場合は、build.properties
ファイルに入力した値が正しいことを確認します。
値は正しいが、エラーが発生する場合は、Developer Promptからant
を実行してプロジェクトをデプロイできます。
Oracle Application Serverを実行しているマシンで、「スタート」→「プログラム」→「Oracle - instanceName」→「Oracle BPEL Process Manager」→「Developer Prompt」の順に選択します。 Oracle BPEL Process Manager用に構成されたシェル・ウィンドウが表示されます。
SelectManufacturerプロジェクトをデプロイするには、Developer Promptのシェル・ウィンドウからant
を実行する必要があることに注意してください。 プロジェクトをデプロイするために、通常のオペレーティング・システム・シェルからant
を実行することは、サポートされていません。
「Developer Prompt」ウィンドウで、ディレクトリをSOADEMO
¥SelectManufacturer
ディレクトリに変更します。SOADEMO
は、SOA Order Bookingアプリケーションを作成したディレクトリを表します。
> cd SOADEMO
> cd SelectManufacturer
JDeveloperとOracle Application Serverを異なるマシンで実行している場合は、JDeveloperマシンからOracle Application ServerマシンにSelectManufacturer
ディレクトリをコピーできます。 このディレクトリは、Oracle Application Serverマシンの任意の場所に配置できます。 Developer Promptでは、このディレクトリに簡単に移動できます。
ant
を実行します。
> ant
デプロイした後のSelectManufacturerは、Oracle BPEL Controlに表示されます。 Oracle BPEL Controlは、ブラウザに次のURLを入力して表示します。
http://
hostname
:
port
/BPELConsole
oc4jadmin
ユーザーでログインします。
Oracle BPEL Controlの「ダッシュボード」タブに、SelectManufacturerが表示されます。
図7-23 SelectManufacturerが表示されたOracle BPEL Control