6 注文の梱包と出荷

この章では、Oracle SOA Suiteで注文の梱包および出荷というビジネス課題に対処する方法について説明します。RESTサービス、BPELプロセス、HTTPアナライザ、BPELプロセス・コンポーネント・テンプレート、スタンドアロンBPELサブプロセス、コンポジット・センサー、Oracle User Messaging Serviceアダプタなどの主要なSOAコンポジット・アプリケーション・コンポーネントを使用して、この課題に対処する方法の概要を示します。

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

6.1 ビジネス課題

会社Xには、優先出荷プロバイダを特定の出荷方法に割り当てる要件があります。この方法は、顧客が発注したときに選択した出荷速度と出荷先(住所の州)に基づいて計算されます。注文が出荷されると、顧客に出荷プロバイダの確定通知が送信される必要があります。注文ステータスも、出荷済に更新される必要があります。

6.2 ビジネス・ソリューション

このビジネス課題に対処するために、会社Xは表6-1のコンポーネントを使用するビジネス・ソリューションを設計します。

表6-1 ビジネス・ソリューションを提供するコンポーネント

コンポーネント このコンポーネントがビジネス課題に対処する方法 コンポーネントの説明

RESTサービス

インバウンドRESTアダプタ・サービスは、出荷リソースを定義します。

RESTは、ネットワーク・アプリケーションの設計用のアーキテクチャです。RESTfulアプリケーションは、HTTPリクエストを使用してデータのポスト(作成と更新)、データの取得(たとえば問合せの作成)、データの更新およびデータの削除を実行します。

BPELプロセス

BPELプロセスは注文のステータスを出荷済に設定し、注文が出荷されたことを顧客に通知して、データベース内の注文ステータスを更新します。このプロセスは、RESTインタフェースに接続され、サービスとして公開されます。

BPELプロセスにより、プロセス・オーケストレーションおよび同期または非同期プロセスの保存ができます。一連のビジネス・アクティビティとサービスをエンドツーエンドのプロセス・フローに統合するビジネス・プロセスを設計します。

HTTPアナライザ

HTTPアナライザは、RESTサービスのWeb Application Description Language (WADL) URLをテストし、サービスが正しく機能していることを確認します。

HTTPアナライザを使用して、HTTPリクエスト/レスポンス・パッケージ・ペアのコンテンツを検査できます。リクエスト・パッケージの内容を編集して再送信し、戻されるレスポンス・パケットを確認できます。

BPELプロセス・コンポーネント・テンプレート

コンポーネント・テンプレートにはinvokeアクティビティと、注文番号と注文ステータスを取得し、それをデータベース・アダプタの入力変数に割り当てるassignアクティビティが含まれます。

Oracle SOA Suiteテンプレートの詳細は、表3-1を参照してください。

スタンドアロンBPELサブプロセス

スタンドアロンBPELプロセスは、データベース・アダプタ参照をコールして、注文ステータスを更新します。

スタンドアロンBPELサブプロセスは、再使用されるアクティビティが多数含まれるBPELプロセスのプラグメントです。スタンドアロン・サブプロセスにはインタフェースがなく、別のBPELプロセスからのみコールされます。

コンポジット・センサー

コンポジット・センサーは特定の出荷プロバイダのすべての注文を追跡します。

コンポジット・センサーの詳細は、表3-1を参照してください。

Oracle Enterprise Manager Fusion Middleware Control。

Oracle Enterprise Manager Fusion Middleware Controlは、インスタンス内のコンポジット・センサーをモニターし、テスト用に使用されるWADL URLへのアクセスを提供します。

Oracle Enterprise Manager Fusion Middleware ControlはWebブラウザ・ベースのグラフィカル・ユーザー・インタフェースで、デプロイ済コンポジットをモニターおよび管理するために使用します。

Oracle User Messaging Service (UMS)アダプタ

UMSアダプタは、注文が出荷されたことを示す電子メール通知を顧客に送信します。

UMSは、ユーザーとアプリケーション間の通信を可能にするOracle Fusion Middlewareコンポーネントです。UMSでは、電子メール、SMS、インスタント・メッセージ(IM)などの様々なメッセージング・チャネルがサポートされます。UMSは、サーバー、ドライバおよびアプリケーションで構成されます。

図6-1に、このビジネス・ソリューションの実装方法の概要を示します。

図6-1 梱包および出荷プロセスの概要

図6-1の説明が続きます
「図6-1 梱包および出荷プロセスの概要」の説明

この章の後続の項では、表6-1のコンポーネントを使用して、梱包および出荷のビジネス課題に対処する方法について、より詳細に説明します。

6.2.1 RESTサービスを使用した出荷リソースの定義

会社Xは、このビジネス課題に対処するため、PackAndShipServiceという名前のSOAコンポジット・アプリケーションを作成します。Webサービスを使用するかわりに、会社XはコンポジットのRESTサービスを使用して、出荷リソースを定義します。

RESTは、ネットワーク・アプリケーションの設計用のアーキテクチャです。RESTfulアプリケーションは、HTTPリクエストを使用してデータのポスト(作成と更新)、データの取得(たとえば問合せの作成)、データの更新およびデータの削除を実行します。

Oracle SOA Suiteでは次のRESTサポートを提供します。

  • SOAコンポジット・アプリケーションでのサポート:

    • 新規または既存のサービスでのRESTサポートの有効化。

    • 外部REST APIとの統合。

    • RESTful状態遷移セットの編成 (RPC/HATEOAS (Hypermedia as the Engine of Application State)アプローチ)。

    • XML、JavaScript Object Notation (JSON) (XMLへおよびXMLからの自動翻訳を含む)、URIサンプルおよびURLエンコードGET/POSTデータのサポート。

    • RESTサービス操作用のサンプルURIの生成。

    • WADLサービスのサポート。WADLは、デプロイ済のOracle SOA SuiteまたはOracle Service Busサービス、あるいはJersey RESTサービスなど、Oracle SOA SuiteまたはOracle Service Bus以外のサービスでも提供できます。

  • 開発の容易さ:

    • Oracle JDeveloperにより、RESTインタフェースとWSDL操作バインディングをモデル化するためのウィザードを提供。

    • デプロイメント時に使用する各メソッドを公開する読取り可能APIを提供。

    • Oracle JDeveloperからOracle RESTエンドポイント(Oracle Service Busなど)をブラウズおよび消費可能。

  • Oracle Web Service Manager (OWSM)ポリシーのRESTセキュリティのサポート。

会社Xは、「コンポーネント」ウィンドウからOracle JDeveloper「公開されたサービス」スイムレーンにRESTバインディング・アダプタをドラッグします。梱包サービスは、注文の梱包および出荷に必要なすべての情報を含む出荷リソースがあることを前提としています。また、このサービスは、更新された注文ステータスが設定された出荷リソースを返します。

会社Xは、次のRESTサービスの詳細を定義します。

設計の完了後、「RESTバインディングの作成」ダイアログは図6-4のようになります。

図6-4 「RESTバインディングの作成」ダイアログ - 設計の完了

図6-4の説明が続きます
「図6-4 「RESTバインディングの作成」ダイアログ - 設計の完了」の説明

これにより、「公開されたサービス」スイムレーンにRESTサービス・バインディング・コンポーネントが作成されます(図6-5を参照)。

図6-5 Oracle JDeveloperの公開されたサービス・スイムレーンのRESTサービス

図6-5の説明が続きます
「図6-5 Oracle JDeveloperの公開されたサービス・スイムレーンのRESTサービス」の説明

6.2.2 梱包BPELプロセスを使用したRESTサービスの公開

会社Xは、RESTサービスをBPELプロセスに接続することによって公開します(図6-6を参照)。

図6-6 BPELプロセスに接続されたRESTサービス

図6-6の説明が続きます
「図6-6 BPELプロセスに接続されたRESTサービス」の説明

このサービスは、「注文の履行」の注文履行サービスによって決定される、出荷プロバイダおよび出荷方法に基づいた梱包および出荷を開始します。BPELプロセスは、次のアクティビティで構成されます。

  • receiveアクティビティは、RESTサービスからのコールを受信します。

  • 空のアクティビティが梱包と出荷をシミュレートします。このアクティビティの処理後、注文ステータスが出荷済に更新されます。

  • assignアクティビティは、注文番号とステータスを2つの変数に割り当てます:

    • orderNumberは、入力変数から設定されます。

    • orderStatusは、出荷済に設定されます。

  • assignアクティビティは、入力変数の値(更新済ステータスを持つ)を出力変数に割り当てます。

  • replyアクティビティは、RESTサービスに情報を返します。

図6-7に、BPELプロセスの完全な設計を示します。

図6-7 RESTサービスとBPELプロセスとの統合

図6-7の説明が続きます
「図6-7 RESTサービスとBPELプロセスとの統合」の説明

6.2.3 HTTPアナライザを使用したRESTサービスのテスト

RESTサービスが正常に機能していることを確認するために、会社Xはまず、HTTPアナライザでテストするためのSOAコンポジット・アプリケーションをデプロイします。

デプロイメントを実行するには、「アプリケーション」ウィンドウの「PackAndShipService」を右クリックし、「デプロイ」を選択して、「デプロイ」ウィザードの各ページを順次移動します。デプロイメントは、Oracle JDeveloperの埋込みローカル・サーバーであるIntegratedWebLogicServerに対して実行されます。

HTTPアナライザを使用して、HTTPリクエスト/レスポンス・パッケージ・ペアのコンテンツを検査できます。リクエスト・パッケージの内容を編集して再送信し、戻されるレスポンス・パケットを確認できます。

サービスをテストするには、まず、Oracle Enterprise Manager Fusion Middleware ControlPackAndShipService SOAコンポジット・アプリケーションのホーム・ページから、WADLファイルURLをコピーします(図6-8を参照)。

Oracle SOA SuiteのRESTサービスは、WSDLファイルのかわりにWADLファイルを公開して、そのインタフェースを定義します。WADLでは、HTTPベースWebアプリケーション(一般的にはREST Webサービス)の判読可能なXML説明が用意されています。WADLにより、Webの既存HTTPアーキテクチャに基づいて、Webサービスの再利用が単純になります。

図6-8 Oracle Enterprise Manager Fusion Middleware ControlでのWADL URLの場所

図6-8の説明が続きます
「図6-8 Oracle Enterprise Manager Fusion Middleware ControlでのWADL URLの場所」の説明

会社Xは、「ツール」「HTTPアナライザ」を選択して、Oracle JDeveloperのHTTPアナライザを開きます。「URLを開く」をクリックして、プロンプトが表示されたら、Oracle Enterprise Manager Fusion Middleware ControlからコピーしたWADL URLを入力します。図6-9に詳細を示します。

図6-10の「サービス」ダイアログに、RESTサービスに関する詳細が表示されます。会社Xは、「テスト」をクリックします。

図6-10 「サービス」ダイアログ

図6-10の説明が続きます
「図6-10 「サービス」ダイアログ」の説明

会社Xは、図6-2で指定したサンプル・リクエストXMLペイロードを「リクエストHTTPヘッダー」セクションにコピーして貼り付け、「リクエストの送信」をクリックします(図6-11を参照)。

図6-11 HTTPアナライザへのリクエストXMLペイロードの入力

図6-11の説明が続きます
「図6-11 HTTPアナライザへのリクエストXMLペイロードの入力」の説明

6.2.4 データベース内の注文ステータスを更新するためのテンプレートおよびスタンドアロン・サブプロセスの使用

出荷メッセージの注文ステータスを更新するほかに、会社Xはデータベース内のステータスも更新します。これは共通のタスクであるため、複数のプロジェクトで必要に応じて再使用するために、updateOrderStatusSPという名前のコンポーネント・テンプレートを作成します。会社Xは、「XSLT変換を使用した支払ステータスの計算」および「SOAプロジェクト・テンプレートのコンテンツのカスタマイズ」で同様の共通タスクのテンプレートを使用しています。

図6-12に、コンポーネント・テンプレートのコンテンツを示します。

図6-12 BPELプロセス・コンポーネント・テンプレートのコンテンツ

図6-12の説明が続きます
「図6-12 BPELプロセス・コンポーネント・テンプレートのコンテンツ」の説明

会社Xは、「コンポーネント」ウィンドウの「コンポーネント・テンプレート」セクションからSOAコンポジット・アプリケーションにテンプレートをドラッグします。完全に拡張した後、コンポジットは図6-13のようになります。

図6-13 拡張されたテンプレートを含むSOAコンポジット・アプリケーション

図6-13の説明が続きます
「図6-13 拡張されたテンプレートを含むSOAコンポジット・アプリケーション」の説明

コンポーネント・テンプレートにはinvokeアクティビティと、注文番号と注文ステータスを取得し、それをデータベース・アダプタの入力変数に割り当てるassignアクティビティが含まれます。

packAndShipOrder BPELプロセスは、updateOrderStatusSPコンポーネント・テンプレートと接続する必要があります。このタスクに対処するために、会社Xは、スタンドアロンBPELプロセスを使用して、データベース・アダプタ参照をコールし、注文ステータスを更新します。サブプロセスは、複数のプロジェクトで機能の再使用を可能にするという点で、テンプレートと類似しています。スタンドアロンBPELサブプロセスは、再使用されるアクティビティが多数含まれるBPELプロセスのプラグメントです。スタンドアロン・サブプロセスにはインタフェースがないため、別のBPELプロセスからのみコールされます。スタンドアロン・プロセスは、他の複数のBPELプロセスへのパートナ・リンクを持つことができます。

会社Xは、packAndShipOrder BPELプロセスを開いて、スタンドアロンBPELプロセスを「コンポーネント」ウィンドウの「スタンドアロン」セクションからそのプロセスにドラッグします。

スタンドアロンBPELプロセスは、updateOrderStatusSPテンプレートをコールする、callアクティビティとして表示されます。その機能は次のとおりです。

  • 注文番号

  • 注文ステータス

図6-14に、callアクティビティのコンテンツを示します。callアクティビティにより、スタンドアロン・サブプロセスおよびインライン・サブプロセス内の参照サブプロセス・コードを実行できます。

図6-14 callアクティビティのコンテンツ

図6-14の説明が続きます
「図6-14 callアクティビティのコンテンツ」の説明

6.2.5 コンポジット・センサーを使用した出荷プロバイダの追跡

会社Xは、「コンポジット・センサーを使用した支払ステータスの追跡」で注文支払のステータスを追跡するために、また、「コンポジット・センサーを使用した注文番号の追跡」で注文番号を追跡するために、コンポジット・センサーを追加しました。

ここでは、コンポジット・センサーで出荷プロバイダを追跡するという追加要件があります。これにより、特定の出荷プロバイダで出荷されたすべての注文が検索可能になります。

会社Xは、RESTサービス上でコンポジット・センサーを定義します。図6-15の「コンポジット・センサー」ダイアログで示されているように、その定義には、出荷プロバイダを追跡するためのXPath式が含まれます。

図6-15 出荷受注を追跡するためのコンポジット・センサー

図6-15の説明が続きます
「図6-15 出荷受注を追跡するためのコンポジット・センサー」の説明

「コンポジット・センサー」ダイアログの「Enterprise Manager」チェック・ボックスも選択されます。これにより、Oracle Enterprise Manager Fusion Middleware Controlの特定のビジネス・フロー・インスタンスで、「フロー・インスタンス」ページまたは「フローのトレース」ページのコンポジット・センサーの名前と値を追跡できるようになります。図6-16に詳細を示します。

図6-16 「フローのトレース」ページのコンポジット・センサーの名前と値

図6-16の説明が続きます
「図6-16 「フローのトレース」ページのコンポジット・センサーの名前と値」の説明

6.2.6 注文の出荷を示す電子メール通知の送信

会社Xは、注文を出荷したことを電子メールで顧客に通知できる必要があります。このタスクに対処するために、会社XはUMSアダプタを構成して、顧客に電子メール通知を送信します。

UMSは、ユーザーとアプリケーション間の通信を可能にするOracle Fusion Middlewareコンポーネントです。UMSでは、電子メール、SMS、インスタント・メッセージ(IM)などの様々なメッセージング・チャネルがサポートされます。UMSは次のコンポーネントで構成されます。

  • UMSサーバー: アプリケーションとユーザー間のメッセージ・フローをオーケストレートします。

  • UMSドライバ: UMSをメッセージ・ゲートウェイに接続し、コンテンツをUMSでサポートされている様々なプロトコルに適応させます。

  • UMSクライアント・アプリケーション: メッセージの送受信のビジネス・ロジックを実装します。

UMSアダプタは、「コンポーネント」ウィンドウの「テクノロジ」セクションから「外部参照」スイムレーンにドラッグされます。会社XはUMSアダプタを構成して、次のタスクを実行します。

  • アウトバウンド通知の送信

  • 通知チャネルとしての電子メールの使用

  • 電子メールの件名への「Your Order Has Been Shipped」という文の追加

  • 「From」および「To」の電子メール・アドレスの構成

図6-17に詳細を示します。

図6-17 UMSアダプタ構成ウィザード

図6-17の説明が続きます
「図6-17 UMSアダプタ構成ウィザード」の説明

UMSの構成が完了すると、packAndShipOrder BPELプロセスがNotifyUser UMSアダプタ参照に接続されます。図6-18に詳細を示します。

図6-18 UMSアダプタに接続されたBPELプロセス

図6-18の説明が続きます
「図6-18 UMSアダプタに接続されたBPELプロセス」の説明

構成を完了するために、会社Xは、packAndShipOrder BPELプロセスに適切なアクティビティを追加します:

  • invokeアクティビティ: UMSアダプタを起動します(入力変数を使用)。

  • assignアクティビティ: invokeアクティビティの入力変数のペイロードを移入します。

図6-19に、SOAコンポジット・エディタでのこの完了したビジネス・ソリューションの表示の概要を示します。

図6-19 完了したSOAコンポジット・アプリケーション

図6-19の説明が続きます
「図6-19 完了したSOAコンポジット・アプリケーション」の説明

6.3 関連ドキュメント

表6-2では、この章で説明したコンポーネントと機能をより詳しく説明するドキュメントの参照先を示します。

表6-2 関連ドキュメント

参照内容 参照先

REST操作の統合

『Oracle SOA SuiteでのSOAアプリケーションの開発』SOAコンポジット・アプリケーションでのREST操作の統合に関する項

BPELプロセスの作成と設計

『Oracle SOA SuiteでのSOAアプリケーションの開発』Oracle BPEL Process Managerのスタート・ガイドに関する項

HTTPアナライザの使用

『Oracle JDeveloperによるアプリケーションの開発』HTTPアナライザを使用したHTTPの監視に関する項

Oracle SOA SuiteテンプレートとスタンドアロンBPELサブプロセスの作成

『Oracle SOA SuiteでのSOAアプリケーションの開発』Oracle SOA Suiteテンプレートおよび再利用可能なサブプロセスに関する項

コンポジット・センサーの作成

『Oracle SOA SuiteでのSOAアプリケーションの開発』コンポジット・センサーの定義に関する項

UMSアダプタの構成

『テクノロジ・アダプタの理解』Oracle JCA Adapter for UMSに関する項

統合WebLogic Serverの使用

『SOA SuiteおよびBusiness Process Management SuiteのQuick Start for Developersのインストール』Quick Startディストリビューションの導入に関する項