ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA Suiteアプリケーションの作成および実行のためのチュートリアル
11g リリース1(11.1.1)
B56240-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4 OrderBookingCompositeコンポジットの作成

この章では、WebLogic Fusion Order DemoアプリケーションのOrderBookingCompositeコンポジットの作成方法について説明します。 この章では、第3章「SOAアプリケーションの作成」のタスクをすべて実行していることを前提としています。

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

4.1 OrderBookingCompositeコンポジットの概要

OrderBookingCompositeコンポジットのフローについては、第1章「SOAサンプル・アプリケーションの概要」で説明しています。 図4-1に、SOAコンポジット・エディタのOrderBookingCompositeコンポジットを示します。

図4-1 OrderBookingComposite

図4-1の説明は次にあります。
「図4-1 OrderBookingComposite」の説明

SOAコンポジット・エディタの左側のスイムレーンには、外部サービスにメッセージを送信する参照が含まれています。 表4-1に、OrderBookingCompositeコンポジット内のサービス・コンポーネントで参照されるサービスについて説明します。

表4-1 OrderBookingCompositeコンポジットで公開されたサービス

公開されたサービス 説明

orderprocessor_client_ep

このサービスはOrderProcessor BPELプロセスへの入力を提供し、ストアフロント・モジュールからの電子注文を処理するためのOrderBookingCompositeコンポジットへのエントリ・ポイントを提供します。

UpdateOrderStatus_ep

このサービスはUpdateOrderStatusメディエータに入力を提供します。


SOAコンポジット・エディタのデザイナ(中央セクション)には、サービス・コンポーネントが含まれています。 表4-2に、OrderBookingCompositeコンポジットで使用されるサービス・コンポーネントについて説明します。

表4-2 OrderBookingCompositeコンポジットのサービス・コンポーネント

サービス・コンポーネント タイプ 説明

ApprovalHumanTask

ヒューマン・タスク

このコンポーネントを使用すると、マネージャは注文を承認または却下できます。

EvaluatePreferredSupplierRule

ビジネス・ルール

このコンポーネントは、最低見積に基づいて出荷サプライヤを選択します。

FulfillOrder

メディエータ

このコンポーネントは、USPSShipmentファイル・アダプタおよびFulfillmentBatch JMSアダプタに注文情報をルーティングします。

InternalWarehouseService

BPEL

このコンポーネントは配送日を提供します(PartnerSupplierMediatorメディエータからの価格と競争するため)。このプロセスは、BPELからの非同期プロセスの起動を実証するために使用されます。

OrderPendingEvent

メディエータ

このコンポーネントは、注文IDを含むStoreFrontServiceのOracle Application Development Framework(ADF)Business ComponentsからイベントNewOrderSubmittedをサブスクライブします。OrderPendingEventはイベントを消費、変換し、OrderProcessor BPELプロセスに注文IDを渡します。

OrderProcessor

BPEL

このコンポーネントは、注文ID情報を受信し、注文を処理し、企業内の必要なサービスをすべて編成して注文を完了します。

OrderUpdateEventMediator

メディエータ

このコンポーネントは、UpdateOrderStatusメディエータからイベントOrderUpdateEventをサブスクライブします。 OrderUpdateEventMediatorは、イベントを変換し、注文IDをOrderProcessor BPELプロセスからStoreFrontServiceに渡します。これにより、メディエータによって変換される注文ステータスおよび注文情報が送信されます。

PartnerSupplierMediator

メディエータ

このコンポーネントはPartnerSupplierServiceを開始し、このサービスは外部パートナの倉庫からの特定の注文に対してPartnerSupplierCompositeExternalPartnerSupplier BPELプロセスからの配送日と注文合計を提供します(InternalWarehouseService BPELプロセスから取得された価格と競争するため)。

RequiresApprovalRule

ビジネス・ルール

このビジネス・ルールでは、手動承認が必要であるかどうかが判定されます。

UpdateOrderStatus

メディエータ

このコンポーネントは、ビジネス・イベントOrderUpdateEventをパブリッシュします。 メディエータは、注文IDおよびステータスを変換し、OrderProcessor BPELプロセスに渡します。 OrderUpdateEventMediatorは、ビジネス・イベントを消費します。


SOAコンポジット・エディタの右側のスイムレーンには、外部サービスにメッセージを送信する参照が含まれています。 表4-3に、OrderBookingCompositeコンポジットで参照されるサービスを説明します。

表4-3 OrderBookingCompositeコンポジットの参照

サービス・コンポーネント タイプ 説明

CreditCardAuthorization

Webサービス

この同期サービスは、クレジット・カード・タイプ、口座番号および購入金額をOrderProcessor BPELプロセスに提供します。

StoreFrontService

Webサービス

この同期サービスは、OrderProcessor BPELプロセスに顧客ID情報を提供します。

FulfillmentBatch

JMSアダプタ

このアダプタは、夜間のバッチ処理用にすべての履行注文を保管するためのJMSキューを提供します。JMSアダプタは、指定のJMSキューに注文情報を書き込むために使用されます。

PartnerSupplierService

Webサービス

この非同期サービスは、PartnerSupplierCompositeコンポジットからの注文に対して最低見積を提供します。

NotificationService

Webサービス

この同期サービスは、顧客に注文を通知するためのOracle Messaging Serviceを提供します。

USPSShipment

ファイル・アダプタ

このアダプタは、USPSを使用して注文を出荷します。


4.2 OrderBookingCompositeを作成するためのアプローチ

複雑なコンポジットを作成する場合、次の構築アプローチを使用できます。

このチュートリアルでは、ボトムアップ・アプローチを使用するため、コンポジットの構築を個別のセグメントで学習できます。

4.3 OrderBookingCompositeプロジェクトの作成

この手順では、OrderBookingCompositeプロジェクトとOrderProcessor BPELプロセスを作成します。 次のタスクが含まれています。

4.3.1 タスク1: OrderBookingCompositeプロジェクトの作成

WebLogic Fusion Order DemoアプリケーションのOrderBookingCompositeプロジェクトを作成する手順は、次のとおりです。

  1. アプリケーション・ナビゲータ「WebLogicFusionOrderDemo」アプリケーション名を右クリックし、「新規プロジェクト」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「すべてのテクノロジ」タブまたは「現在のプロジェクト・テクノロジ」タブで、「カテゴリ」ツリーから「SOA層」を選択します。

  3. 「項目」リストで、「SOAプロジェクト」を選択します。

  4. 「OK」をクリックします。

    「SOAプロジェクトの作成」ダイアログが表示されます。

  5. 次の値を入力します。

    要素
    プロジェクト名 OrderBookingComposite
    ディレクトリ デフォルトのディレクトリ位置のMY_FOD_HOME\CompositeServices\OrderBookingCompositeをそのまま使用します。 このディレクトリは、Oracle JDeveloperによって作成され、OrderBookingCompositeプロジェクトのすべての内容が格納されます。
    プロジェクト・テクノロジ SOA

  6. 「次へ」をクリックします。

  7. SOA設定の設定ページで、「コンポジット・テンプレート」セクションから「BPELを使用するコンポジット」を選択します。

  8. 「終了」をクリックします。

    「BPELプロセスの作成」ダイアログが表示されます。

4.3.2 タスク2: OrderProcessor BPELプロセスの作成

ここでは、OrderProcessor BPELプロセスの作成を続行します。

  1. 「BPELプロセスの作成」ダイアログで、次の値を入力します。

    要素
    名前 OrderProcessor
    ネームスペース http://www.globalcompany.example.com/ns/OrderBookingService。
    テンプレート 非同期BPELプロセス。
    SOAPサービスとして公開 このチェック・ボックスを選択すると、インバウンドSOAPサービス・バインディング・コンポーネントに接続されたBPELプロセスが作成されます。

  2. 「入力」フィールドで、DEMO_DOWNLOAD_HOMEディレクトリにある完全なスキーマをインポートします。

    1. 「入力」フィールドで、「入力要素の参照」アイコンをクリックします。

      「タイプ・チューザ」ダイアログが表示されます。

    2. 「スキーマ・ファイルのインポート」アイコンをクリックします。

      「スキーマ・ファイルのインポート」ダイアログが表示されます。

    3. 「URL」フィールドの右側にある「リソースの参照」アイコンをクリックします。

      SOAリソース・ブラウザが表示されます。

    4. 「ファイルシステム」を選択し、「場所」セクションでDEMO_DOWNLOAD_HOME/CompositeServices/OrderBookingComposite/xsd内のInternalWarehouse.xsdを検索し、「OK」をクリックします。

    5. 「スキーマのインポート」ダイアログで、「URL」フィールドにInternalWarehouse.xsdが表示されて「プロジェクトにコピー」オプションが選択されていることを確認し、「OK」をクリックします。

      「ファイルのローカライズ」ダイアログが表示され、InternalWarehouse.xsdスキーマ・ファイルをインポートするように要求されます。

    6. 「インポートされたファイルの元のディレクトリ構造を保持」オプションの選択を解除し、「OK」をクリックしてファイルをインポートします。

      「タイプ・チューザ」ダイアログが表示されます。

    7. 「プロジェクトのスキーマ・ファイル」「InternalWarehouse.xsd」の順に開き、「WarehouseRequest」を選択して「OK」をクリックします。

  3. 「BPELプロセスの作成」ダイアログで、出力用の要素をInternalWarehouse.xsdファイルからインポートします。

    1. 「出力」フィールドで、「出力要素の参照」アイコンをクリックします。

      「タイプ・チューザ」ダイアログが表示されます。

    2. 「プロジェクトのスキーマ・ファイル」「InternalWarehouse.xsd」の順に開き、「WarehouseResponse」を選択して「OK」をクリックします。

  4. 「BPELプロセスの作成」ダイアログで、「OK」をクリックします。

    OrderProcessor BPELプロセスがデザイナに表示されます。 アプリケーション・ナビゲータにOrderBookingCompositeプロジェクトが表示されることにも注目してください。

    orderprocessbp.gifの説明は次にあります。
    図版orderprocessbp.gifの説明

    第5章「OrderProcessor BPELプロセスの前半の作成」では、注文を発行するためのサービスおよびビルディング・ブロックを作成します。

  5. 「composite.xml」タブをクリックして、OrderBookingCompositeを表示します。 左側のスイムレーンに表示されるSOAPサービス・バインディング・コンポーネントorderprocessor_client_epは、SOAコンポジット・アプリケーションへのエントリ・ポイントを通じて外部とのつながりを提供します。

    orderbooking.gifの説明は次にあります。
    図版orderbooking.gifの説明

  6. 「WebLogicFusionOrderDemo.jws」タブをクリックして、WebLogicFusionOrderDemoアプリケーションの内容を表示します。

  7. 「表示」リストから「OrderBookingComposite」を選択し、OrderBookingCompositeアプリケーションの内容を表示します。

    appover2.gifの説明は次にあります。
    図版appover2.gifの説明

  8. 「ファイル」メイン・メニューから「すべて保存」を選択して、作業内容を保存します。

4.3.3 タスク3: ADF Business Componentsサービス・ランタイム・ライブラリの追加

ADF Business Componentsサービス・ランタイム・ライブラリを追加する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、「OrderBookingComposite」を右クリックして「プロジェクト・プロパティ」を選択します。

  2. 「ライブラリとクラスパス」を選択し、ライブラリとクラスパス・ページで「ライブラリの追加」をクリックします。

  3. 「ライブラリの追加」ダイアログで、「BC4Jサービス・ランタイム」を選択して「OK」をクリックします。

  4. ライブラリとクラスパス・ページで「OK」をクリックします。

4.4 OrderProcessorプロセスの概要

OrderProcessorプロセスは、WebLogic Fusion Order Demoアプリケーション内のメイン・フローを表します。このプロセスは、注文情報を適切な時期に適切なサービスに送信します。 たとえば、CreditAuthorizationServiceサービスに連絡して顧客のクレジット・カードを確認し、そのクレジット・カードが受入れ可能である場合は、内部および外部の倉庫に連絡して注文の価格見積を取得します。

OrderProcessorプロジェクトは大規模なプロジェクトです。 この章では、最初にプロジェクトの主なブロックの概要を示した後で、各ブロックの作成方法の詳細について説明します。

表4-4に、OrderProcessorプロセスの主なブロックをリストします。

表4-4 OrderProcessorプロセスの主なブロック

ブロック タイプ 説明

receiveInput

receiveアクティビティ

このアクティビティは着信リクエストの注文IDを受信します。

Scope_RetrieveOrder

スコープ

このスコープでは、注文情報がデータベースから取得されます。 Oracle Application Development Framework(ADF)Business Componentsデータ・サービス・プロバイダ内の注文データを指し示すbind entityアクティビティが使用されます。

Scope_RetrieveCustomerForOrder

スコープ

このスコープは、顧客情報を取得するStoreFrontServiceサービスをコールします。

Scope_AuthorizeCreditCard

スコープ

このスコープでは、CreditCardAuthorizationServiceサービスを使用して、顧客の与信が受入れ可能であることが検証されます。

Scope_CheckApprovalLimit

スコープ

このスコープでは、次の処理が実行されます。

  • 注文金額を評価するRequiresApprovalビジネス・ルールが開始され、マネージャが注文を承認する必要があるかどうかが判定されます

  • 承認が必要な注文の場合は、マネージャが注文を承認または却下するためのApprovalHumanTaskヒューマン・タスクを開始するスイッチが使用されます。

    注文が承認された場合は、OrderProcessorプロセスによって残りのアクティビティが続行されます。注文が却下された場合は、プロセスによってフォルトがスローされ、アクティビティは続行されません。

  • 承認が必要ない注文の場合、スイッチは開始されません。

  • RequiresApprovalRuleビジネス・ルールで使用される価格およびクレジット・カード・ステータスに対する変数が設定されます。

Scope_RetrieveQuotes

スコープ

このスコープは、外部パートナの倉庫と内部の倉庫の2つのサプライヤに注文情報を送信し、倉庫はその注文に対する見積を戻します。

Scope_SelectPreferredSupplier

スコープ

このスコープは、最低見積の出荷サプライヤを選択するためのSelectPreferredSupplierビジネス・ルールを開始します。

Scope_FulfillOrder

スコープ

このスコープは、FulfillOrderメディエータ・コンポーネントをコールします。このコンポーネントは、注文の出荷方法を決定します。

Scope_UpdateStatusToComplete

スコープ

このスコープは、最終ステータスのcompleteを注文に割り当てます。

Scope_NotifyCustomerofCompletion

スコープ

このスコープは、Oracle User Messaging Serviceを使用して、注文を発行した顧客に電子メールを送信します。

callbackClient

invokeアクティビティ

このinvokeアクティビティは、処理が終了したことをクライアントに通知します。


図4-2に、最小化された状態のブロックが表示されたOracle JDeveloperのBPELデザイナのOrderProcessorプロセスを示します。 第5章および第6章の演習では、各ブロックを開いてその内容を示し、ブロックの作成方法について説明します。

図4-2 OrderProcessorのブロックの最小化されたビュー

図4-2の説明は次にあります。
「図4-2 OrderProcessorのブロックの最小化されたビュー」の説明