この章では、OrderBookingESBプロジェクトの作成方法について説明します。 項目は次のとおりです。
OrderBookingESBプロジェクトは、SOA Order Bookingアプリケーションの起点です。 OrderBookingESBプロジェクトは、顧客が「Place Order」ボタンをクリックすると、SOADemo-Clientアプリケーションによって起動されます。
このOrderBookingESBプロジェクトは、SOA Order Bookingアプリケーションのメイン・フローを定義するBPELプロジェクトであるSOAOrderBookingプロジェクトを起動します。
OrderBookingESBプロジェクトはESBプロジェクトです。 OrderBookingESBプロジェクトは、JDeveloperで次のように表示されます。
OrderBookingESBプロジェクトは、次のサービスで構成されています。
OrderBookingServiceルーティング・サービス
OrderBookingProcess外部サービス
「SOADEMO」アプリケーションを右クリックし、「新規プロジェクト」を選択します。
新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Projects」を選択します。 「項目」セクションで、「ESBプロジェクト」を選択します。
「OK」をクリックします。
「ESBプロジェクトの作成」ダイアログで、「プロジェクト名」フィールドに「OrderBookingESB」と入力します。 他のフィールドについては、デフォルトをそのまま使用します。
「OK」をクリックします。
JDeveloperには、OrderBookingESB.esbファイル用の空白ページが表示されます。 アプリケーション・ナビゲータでは、このファイルは、「OrderBookingESB」→「リソース」の下に表示されます。
FulfillmentESBプロジェクトにFulfillmentシステムを作成した(第4.3項「Fulfillmentという名前のシステムの作成」を参照)のと同様に、OrderBookingESBプロジェクトについても、OrderBookingという名前のシステムを作成します。 その後、OrderBookingESBプロジェクトのすべてのアクティビティがこのシステムに属すように設定できます。
システムを作成しない場合、JDeveloperでは、これらのアクティビティはDefaultSystemというシステムに配置されます。
OrderBookingという名前のシステムを作成する手順は、次のとおりです。
空白のOrderBookingESB.esbページで、ページの上部にある「システム/グループの作成」アイコンをクリックします。
図9-4 OrderBookingESB.esbページの上部にある「システム/グループの作成」アイコン
「ESBシステムまたはサービス・グループの作成」ダイアログで、次の操作を実行します。
システム: このオプションを選択します。
名前: 「OrderBooking」と入力します。
説明: 空白のままにするか、簡単な説明を入力します。
図9-5 OrderBookingシステムに関する「ESBシステムまたはサービス・グループの作成」ダイアログ

「OK」をクリックします。 アプリケーション・ナビゲータで、「OrderBooking.esbsys」ファイルが、「OrderBookingESB」→「リソース」の下に表示されていることを確認します。
次のファイルを、soademo_101310_prod.zipファイルからOrderBookingESBディレクトリにコピーします。
OrderBookingRequest.xsd
OrderBookingPO.xsd
soademo_101310_prod.zipファイルでは、これらのxsdファイルはOrderBookingESBディレクトリにあります。
「表示」→「コンポーネント・パレット」の順に選択して、コンポーネント・パレットを表示します。 コンポーネント・パレットのドロップダウンから、「ESBサービス」を選択します。
コンポーネント・パレットから「ルーティング・サービス」アイコンをドラッグして、OrderBookingESB.esbページの任意の場所にドロップします。
「ルーティング・サービスの作成」ダイアログで、次の操作を実行します。
名前: 「OrderBookingService」と入力します。
システム/グループ: 「OrderBooking」に設定します。
スキーマからWSDLを生成: このオプションを選択します。
スキーマの場所: 「参照」をクリックして、「タイプの選択」ダイアログを表示します。 このダイアログで、「プロジェクトのスキーマ・ファイル」→「OrderBookingRequest.xsd」→「SOAOrderBookingProcessRequest」の順に選択します。
「タイプの選択」ダイアログで、「OK」をクリックします。 「スキーマの場所」が「OrderBookingRequest.xsd」に設定されていることを確認します。
スキーマ要素: 「SOAOrderBookingProcessRequest」に設定されていることを確認します。
操作名: 「initiate」と入力します。
ネームスペース: 「http://www.globalcompany.com/ns/OrderBooking」と入力します。
図9-7 OrderBookingServiceに関する「ルーティング・サービスの作成」ダイアログ

「ルーティング・サービスの作成」ダイアログで、「OK」をクリックします。
OrderBookingESB.esbページは、次のように表示されます。
図9-8 OrderBookingServiceルーティング・サービスが表示されたOrderBookingESB.esbページ

JDeveloperによって、OrderBookingESBディレクトリに、WSDLファイルのOrderBooking_OrderBookingService.wsdlも作成されます。
このサービスは、SOAOrderBookingプロセスを起動するサービスです。
コンポーネント・パレットのドロップダウンから、「ESBサービス」を選択します。
コンポーネント・パレットから「SOAPサービス」アイコンをドラッグして、「OrderBookingService」ルーティング・サービスの右側にドロップします。
「SOAP呼出しサービスを作成します。」ダイアログで、次の操作を実行します。
名前: 「OrderBookingProcess」と入力します。
システム/グループ: 「OrderBooking」に設定します。
WSDLファイル: 「サービス・エクスプローラ」(懐中電灯)アイコンをクリックし、「サービス・エクスプローラ」ダイアログで、「サービス・エクスプローラ」→「BPELサービス」→「soaIntegrationServer」→「プロセス」→「デフォルト」→「SOAOrderBooking」の順に選択します。
soaIntegrationServerは、使用している統合サーバー接続の名前を表します。
「サービス・エクスプローラ」で、「OK」をクリックします。
ポート・タイプ: 「SOAOrderBooking」を選択します。
「SOAP呼出しサービスを作成します。」ダイアログが次のように表示されていることを確認します。
図9-10 OrderBookingProcessに関する「SOAP呼出しサービスを作成します。」ダイアログ

「SOAP呼出しサービスを作成します。」ダイアログで、「OK」をクリックします。
OrderBookingESB.esbページに、次の2つのアクティビティが表示されていることを確認します。
図9-11 OrderBookingServiceルーティング・サービスとOrderBookingProcess外部サービスが表示されたOrderBookingESB.esbページ

リクエストがOrderBookingServiceからOrderBookingProcessに移動できるように、ルーティング・ルールを設定します。
上部のアイコン・セクションにある「OrderBookingService」をダブルクリックします。 OrderBooking_OrderBookingService.esbsvcファイルのページが表示されます。
「ルーティング・ルール」セクションで、「+」をクリックしてセクションを開きます。
「ルーティング・ルール」セクションで、緑色の「+」アイコンをクリックします。 「+」アイコンを表示するには、右にスクロールする必要がある場合があります。
「ターゲット・サービス操作の参照」ダイアログで、「ESB」→「プロジェクトのサービス」→「OrderBooking」→「OrderBookingProcess」→「initiate」の順に選択します。
「ターゲット・サービス操作の参照」ダイアログで、「OK」をクリックします。 「ルーティング・ルール」セクションに戻り、このセクションの最後の列に「OrderBookingProcess::initiate」が表示されていることを確認します。
図9-14 OrderBookingServiceからOrderBookingProcessへのリンクが表示されたルーティング・ルール

「ルーティング・ルール」セクションで、フィルタ・アイコンをクリックします。
「式ビルダー」の「WSDLメッセージ」セクションで、「SOAOrderBookingProcessRequest_request」→「SOAOrderBookingProcessRequest」→「tns:SOAOrderBookingProcessRequest」の順に選択します。
「式に挿入」をクリックします。 「式」ボックスに、次の式が表示されていることを確認します。
/tns:SOAOrderBookingProcessRequest
「式ビルダー」で、「OK」をクリックします。
これで、ルーティング・ルールには、注文情報をOrderBookingProcessアクティビティに単に渡すフィルタが含まれます。 最初の列にフィルタ情報が含まれた「ルーティング・ルール」セクションが次のように表示されます。
「ファイル」→「保存」の順に選択して、OrderBooking_OrderBookingService.esbsvcを保存します。
「OrderBookingESB.esb」タブをクリックします。
OrderBookingESB.esbページに、2つのアクティビティを接続する線が表示されていることを確認します。
アプリケーション・ナビゲータでOrderBookingESBのファイルを参照し、すべてのファイルが保存されていることを確認します。 イタリック体で表示されているファイルがある場合は、そのファイルを選択して保存します。
アプリケーション・ナビゲータで、「OrderBookingESB」プロジェクトを右クリックし、「ESBに登録」→「SoademoIntegServer」の順に選択します。SoademoIntegServerは、統合サーバーへの接続名です。
OrderBookingESBプロジェクトで作成したサービスは、ESB Consoleに表示できます。 Oracle ESB Consoleを表示するには、ブラウザで次に示すOracle ESB ConsoleのURLを入力します。
http://host:port/esb/esb/EsbConsole.html
hostは、Oracle Application Serverを実行しているマシンの名前を、portは、Oracle HTTP ServerまたはOC4JがリスニングしているHTTPポートを指定します。
oc4jadminユーザーでログインします。
サービスは、第9.3項「OrderBookingという名前のシステムの作成」で作成したシステムの名前である「OrderBooking」の下にグループ化されます。
図9-18 OrderBookingシステム内のサービスが表示されたOracle ESB Console
