この章の内容は次のとおりです。
会社Xには、優先出荷プロバイダを特定の出荷方法に割り当てる要件があります。この方法は、顧客が発注したときに選択した出荷速度と出荷先(住所の州)に基づいて計算されます。注文が出荷されると、顧客に出荷プロバイダの確定通知が送信される必要があります。注文ステータスも、出荷済に更新される必要があります。
このビジネス課題に対処するために、会社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、インスタント・メッセージ、ボイスなどの様々なメッセージング・チャネルがサポートされます。UMSは、サーバー、ドライバおよびアプリケーションで構成されます。 |
図6-1に、このビジネス・ソリューションの実装方法の概要を示します。
この章の後続の項では、表6-1のコンポーネントを使用して、梱包および出荷のビジネス課題に対処する方法について、より詳細に説明します。
会社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インバウンド・インタフェースの作成。
shippingRESTリソースの作成。
次のものが設定されたpackandShip操作バインディングの作成。
POST HTTP動詞。
サンプル・リクエストXMLペイロード(図6-2を参照)。
「SOAプロジェクト・テンプレートからのSOAコンポジット・アプリケーションの作成」で作成したProcessOrderプロジェクトから選択されたリクエスト・スキーマ・ファイル。このスキーマ・ファイルには、Shipping要素が含まれます(図6-3を参照)。
ProcessOrderプロジェクトから選択されたレスポンス・スキーマ・ファイル。このスキーマ・ファイルは、リクエスト用に選択されるものと同じで、図6-3に示すShipping要素も含まれています。
設計の完了後、「RESTバインディングの作成」ダイアログは図6-4のようになります。
これにより、「公開されたサービス」スイムレーンにRESTサービス・バインディング・コンポーネントが作成されます(図6-5を参照)。
図6-5 Oracle JDeveloperの公開されたサービス・スイムレーンのRESTサービス
会社Xは、RESTサービスをBPELプロセスに接続することによって公開します(図6-6を参照)。
このサービスは、「注文の履行」の注文履行サービスによって決定される、出荷プロバイダおよび出荷方法に基づいた梱包および出荷を開始します。BPELプロセスは、次のアクティビティで構成されます。
receiveアクティビティは、RESTサービスからのコールを受信します。
空のアクティビティが梱包と出荷をシミュレートします。このアクティビティの処理後、注文ステータスが出荷済に更新されます。
assignアクティビティは、注文番号とステータスを2つの変数に割り当てます:
orderNumberは、入力変数から設定されます。
orderStatusは、出荷済に設定されます。
assignアクティビティは、入力変数の値(更新済ステータスを持つ)を出力変数に割り当てます。
replyアクティビティは、RESTサービスに情報を返します。
図6-7に、BPELプロセスの完全な設計を示します。
RESTサービスが正常に機能していることを確認するために、会社Xはまず、HTTPアナライザでテストするためのSOAコンポジット・アプリケーションをデプロイします。
デプロイメントを実行するには、「アプリケーション」ウィンドウの「PackAndShipService」を右クリックし、「デプロイ」を選択して、「デプロイ」ウィザードの各ページを順次移動します。デプロイメントは、Oracle JDeveloperの埋込みローカル・サーバーであるIntegratedWebLogicServerに対して実行されます。
HTTPアナライザを使用して、HTTPリクエスト/レスポンス・パッケージ・ペアのコンテンツを検査できます。リクエスト・パッケージの内容を編集して再送信し、戻されるレスポンス・パケットを確認できます。
サービスをテストするには、まず、Oracle Enterprise Manager Fusion Middleware ControlのPackAndShipService 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の場所
会社Xは、「ツール」→「HTTPアナライザ」を選択して、Oracle JDeveloperのHTTPアナライザを開きます。「URLを開く」をクリックして、プロンプトが表示されたら、Oracle Enterprise Manager Fusion Middleware ControlからコピーしたWADL URLを入力します。図6-9に詳細を示します。
図6-10の「サービス」ダイアログに、RESTサービスに関する詳細が表示されます。会社Xは、「テスト」をクリックします。
会社Xは、図6-2で指定したサンプル・リクエストXMLペイロードを「リクエストHTTPヘッダー」セクションにコピーして貼り付け、「リクエストの送信」をクリックします(図6-11を参照)。
出荷メッセージの注文ステータスを更新するほかに、会社Xはデータベース内のステータスも更新します。これは共通のタスクであるため、複数のプロジェクトで必要に応じて再使用するために、updateOrderStatusSPという名前のコンポーネント・テンプレートを作成します。会社Xは、「XSLT変換を使用した支払ステータスの計算」および「SOAプロジェクト・テンプレートのコンテンツのカスタマイズ」で同様の共通タスクのテンプレートを使用しています。
図6-12に、コンポーネント・テンプレートのコンテンツを示します。
会社Xは、「コンポーネント」ウィンドウの「コンポーネント・テンプレート」セクションからSOAコンポジット・アプリケーションにテンプレートをドラッグします。完全に拡張した後、コンポジットは図6-13のようになります。
コンポーネント・テンプレートにはinvokeアクティビティと、注文番号と注文ステータスを取得し、それをデータベース・アダプタの入力変数に割り当てるassignアクティビティが含まれます。
packAndShipOrder BPELプロセスは、updateOrderStatusSPコンポーネント・テンプレートと接続する必要があります。このタスクに対処するために、会社Xは、スタンドアロンBPELプロセスを使用して、データベース・アダプタ参照をコールし、注文ステータスを更新します。サブプロセスは、複数のプロジェクトで機能の再使用を可能にするという点で、テンプレートと類似しています。スタンドアロンBPELサブプロセスは、再使用されるアクティビティが多数含まれるBPELプロセスのプラグメントです。スタンドアロン・サブプロセスにはインタフェースがないため、別のBPELプロセスからのみコールされます。スタンドアロン・プロセスは、他の複数のBPELプロセスへのパートナ・リンクを持つことができます。
会社Xは、packAndShipOrder BPELプロセスを開いて、スタンドアロンBPELプロセスを「コンポーネント」ウィンドウの「スタンドアロン」セクションからそのプロセスにドラッグします。
スタンドアロンBPELプロセスは、updateOrderStatusSPテンプレートをコールする、callアクティビティとして表示されます。その機能は次のとおりです。
注文番号
注文ステータス
図6-14に、callアクティビティのコンテンツを示します。callアクティビティにより、スタンドアロン・サブプロセスおよびインライン・サブプロセス内の参照サブプロセス・コードを実行できます。
会社Xは、「コンポジット・センサーを使用した支払ステータスの追跡」で注文支払のステータスを追跡するために、また、「コンポジット・センサーを使用した注文番号の追跡」で注文番号を追跡するために、コンポジット・センサーを追加しました。
ここでは、コンポジット・センサーで出荷プロバイダを追跡するという追加要件があります。これにより、特定の出荷プロバイダで出荷されたすべての注文が検索可能になります。
会社Xは、RESTサービス上でコンポジット・センサーを定義します。図6-15の「コンポジット・センサー」ダイアログで示されているように、その定義には、出荷プロバイダを追跡するためのXPath式が含まれます。
「コンポジット・センサー」ダイアログの「Enterprise Manager」チェック・ボックスも選択されます。これにより、Oracle Enterprise Manager Fusion Middleware Controlの特定のビジネス・フロー・インスタンスで、「フロー・インスタンス」ページまたは「フローのトレース」ページのコンポジット・センサーの名前と値を追跡できるようになります。図6-16に詳細を示します。
会社Xは、注文を出荷したことを電子メールで顧客に通知できる必要があります。このタスクに対処するために、会社XはUMSアダプタを構成して、顧客に電子メール通知を送信します。
UMSは、ユーザーとアプリケーション間の通信を可能にするOracle Fusion Middlewareコンポーネントです。UMSでは、電子メール、SMS、インスタント・メッセージ、ボイスなどの様々なメッセージング・チャネルがサポートされます。UMSは次のコンポーネントで構成されます。
UMSサーバー: アプリケーションとユーザー間のメッセージ・フローをオーケストレートします。
UMSドライバ: UMSをメッセージ・ゲートウェイに接続し、コンテンツをUMSでサポートされている様々なプロトコルに適応させます。
UMSクライアント・アプリケーション: メッセージの送受信のビジネス・ロジックを実装します。
UMSアダプタは、「コンポーネント」ウィンドウの「テクノロジ」セクションから「外部参照」スイムレーンにドラッグされます。会社XはUMSアダプタを構成して、次のタスクを実行します。
アウトバウンド通知の送信
通知チャネルとしての電子メールの使用
電子メールの件名への「Your
Order
Has
Been
Shipped
」という文の追加
「From」および「To」の電子メール・アドレスの構成
図6-17に詳細を示します。
UMSの構成が完了すると、packAndShipOrder BPELプロセスがNotifyUser UMSアダプタ参照に接続されます。図6-18に詳細を示します。
構成を完了するために、会社Xは、packAndShipOrder BPELプロセスに適切なアクティビティを追加します:
invokeアクティビティ: UMSアダプタを起動します(入力変数を使用)。
assignアクティビティ: invokeアクティビティの入力変数のペイロードを移入します。
図6-19に、SOAコンポジット・エディタでのこの完了したビジネス・ソリューションの表示の概要を示します。
表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に関する項 Oracle User Messaging Serviceによるアプリケーションの開発 |
統合WebLogic Serverの使用 |
『SOA SuiteおよびBusiness Process Management SuiteのQuick Start for Developersのインストール』のQuick Startの配布の概要に関する項 |