Topics
Service-Oriented Architecture
Oracle SOA Suiteにおける WebサービスとJCAアダプタのエンドポイントの動的な設定Simone Geib著 WLIユーザーのためのOracle SOA Suite基礎講座シリーズの今回の記事では、Oracle SOA Suiteを使用して動的にアダプタ・エンドポイントを設定する方法と、Oracle WebLogic Integrationコントロールにおけるプロセスの類似点について説明します。 2010年3月公開
はじめにほとんどのビジネス・プロセスにおいて、外部システムとの統合が何らかの形で使用されています。 これらの外部システムにはファイル・システムやWebサービス、メッセージ・キュー、データベース、またはバックエンド・アプリケーションがあります。 多くの場合、これらのシステムのエンドポイント(キュー名、URL、ファイル・ディレクトリなど)は開発、テスト、および本番環境でそれぞれ異なります。 また、アプリケーションのライフ・サイクル中にエンドポイントが変わる場合もあります。 このような状況において、開発者はビジネス・プロセス内で問題のエンドポイント・プロパティを変更してから、コンパイル、デプロイ、テ ストなどを再度繰り返します。 しかしこれでは明らかに時間がかかり、エラーも発生しやすくなります。 より良い方策として、変更される可能性のあるエンドポイントを動的に維持する方法があります。 理想的な方法は、管理者が管理コンソールを使用してエンドポイントのプロパティ値を設定することです。 この後で、実行時にビジネス・プロセスが値の読取りや設定を実行します。 この記事では、Oracle WebLogic Integration(Oracle WLI)とOracle SOA Suiteを使用した動的なエンドポイントの処理方法について説明します。 Oracle WLIにおける動的エンドポイントOracle WLIでは、ほとんどのコントロールに 動的プロパティを指定できます。動的プロパ ティは実行時にXML変数として渡され、 設計時にコントロールに対して定義されたプロパティを上書きします。 動的プロパティを設定するには、コントロールの動的プロパティのスキーマに適合し、コントロールの setProperties()メ ソッドで使用されるXML変数を作成する必要があります。 現在のプロパティ設定は、 getProperties()メ ソッドを使用して取得できます。 電子メールのコントロールを例に取ってみましょう。 このコントロールの setProperties()メ ソッドは、 EmailControlPropertiesDocumentパラメータを受け取ります。 EmailControlPropertiesDocumentの タイプはXML Beansクラスであり、 DynamicProperties.xsdに定義されたスキーマ要素のう ち相当する要素から生成されています。 DynamicProperties.xsdは、WLIアプリケーションの Schemasプロジェクトのシステム・フォルダに格納されています。 電子メール・コントロールの動的プロパティの設定に使用されるXML変数の例を次に示します。
<EmailControlProperties>
コントロール・プロパティは、多くの場合、XMLメタデータ・キャッシュ・コントロールを介して取得されます ( XML メタデータ・キャッシュ・コントロールを参照)。 このコントロールは、管理者がWLI管理コンソールで作成したWLIキャッシュから、実行時にXMLドキュメントを取得します。 XMLドキュメントのコンテンツは、デプロイ済みアプリケーションに影響を与えることなく、いつでも変更できます。 SOA Suiteにおける動的エンドポイントデプロイ済みのSOA複合アプリケーションに含まれるWebサービス・バインディング・コンポーネント、またはJCAアダプタ・バイン ディング・コンポーネントに対して、メッセージ・ヘッダー・プロパティを設定することができます。 Oracle JCAアダプタは基盤となるバックエンド処理に固有のプロパティをヘッダー要素として公開しており、ビジネス・プロセス内でこれらの要素を操作できます。 ( Oracle JCAアダプタのヘッダー・プロパティの使用を参照) Oracle JCAアダプタのプロパティは、Oracle Enterprise Manager Fusion Middleware Control Console(EM)からも追加、削除、または回復することができます。 次に挙げるプロパティは、プロパティの追加、削除、更新時のアダプタ動作に基づいて分類されています。 InteractionSpecプロパティとActivationSpecプロパティこのグループのプロパティに対しては、アダプタのエンドポイントを再利用する必要があります。 このグループに含まれるプロパティの値はEMコンソールから変更できます。 ただし、プロパティに依存した制約を検証するには、Oracle JDeveloperを使用してこれらのプロパティ構成を変更(追加または削除)する必要があります。 ( InteractionSpec またはActivationSpecプロパティを参照) エンドポイント・プロパティこのグループのプロパティが変更された場合、エンドポイントを再起動しなくてもアダプタに通知が送られます。 このグループに属するプロパティは、追加または削除が可能です。 エンドポイント・プロパティは、アダプタで公開する補助的なチューニング・プロパティを表します。 補助的なチューニング・プロパティには各種の時間間隔、しきい値、その他の値が含まれます。 これらのエンドポイント・プロパティの公開には、interactionspecプ ロパティまたはactivationspecプロパティは使用されません。 ( エ ンドポイント・プロパティを参照)アダプタのエンドポイント・プロパティの設定invoke、 receive、 replyな どの多数のBPELアクティビティや、pickアクティビティの onMessageブランチでは、 Propertiesタ ブが提供されています。 JCAアダプタのヘッダー・プロパティは、このタブを使用して設定できます。 この機能を使用するには、プロパティ値を文字列変数に割り当てる必要があります。 ユースケース例で後述するとおり、後からこの変数がPropertiesタブで使用されます。 (BPELアクティビティのPropertiesタブの説明については、 BPEL アクティビティの概要を参照) SOA Suiteの ド メイン値マッピングは、Oracle WLIのXMLメタデータ・キャッシュと概念が似ています。 ドメイン値マッピングは、実行時に情報を取得するために使用できます。 ドメイン値マッピングの使用については、近日公開されるこのシリーズの記事で説明する予定です。 Enterprise ManagerのOracle JCAアダプタおよびWebサービスを介して、Webサービス・バインディング・コンポーネントまたはJCAアダプタのメッセージ・ヘッダー・プロパティ を構成するには、サービス・バインディング・コンポーネントまたは参照バインディング・コンポーネントを使用します。 バインディング・コンポーネントは、SOAプラットフォームを外部世界と接続するサービスおよびネットワーク・プロトコルです。 メッセージ・ヘッダー・プロパティは、Webサービス・バインディング・コンポーネントに対しても、JCAアダプタ・バインディング・コンポーネントに対 しても設定できます。 ( バ インディング・コンポーネントの理解を参照)エンドポイント・プロパティについて詳しくは、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』のサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネントの構成の章を参照してください。 ヘッダー・プロパティをサポートしているアダプタは、次のとおりです。
Oracle JCAアダプタのプロパティについて詳しくは、 Oracle JCAアダプタのプロパティを参照してください。 JCAアダプタまたはWebサービスのプロパティを設定するには、Enterprise ManagerでアダプタまたはWebサービスのPropertiesタブを選択します。 ( サー ビス・バインディング・コンポーネントおよび参照バインディング・コンポーネントの構成を参照してください。) 次のセクションでは、このプロセスについて詳しく説明します。 Oracle Enterprise Managerを使用したアダプタのエンドポイント・プロパティの設定Oracle SOA Suiteの各種管理(構成、監視、管理)タスクは、 Enterprise Managerコンソールから実行できます。 これらの管理タスクの1つに、JCAアダプタのエンドポイント・プロパティの設定があります。 アダプタのプロパティは通常、 Oracle JDeveloperを使用して設計時に定義します。 しかし、あらかじめ定義されたプロパティの編集または追加、もしくは新規プロパティの作成または削除を後から実行することもできます。 アダプタに事前定義されたプロパティの編集インバウンド・アダプタの事前定義済みプロパティを編集するには、以下のいずれかの方法を使用してSOA複合アプリケーションへ移動し ます。 SOAインフラストラク チャ・メニューを使用する場合:
事前定義済みプロパティの編集
事前定義されたアダプタ・プロパティの追加事前定義されたアダプタ・プロパティを追加するには、以下の手順を実行します。
新規アダプタ・プロパティの作成インバウンド・アダプタに対して新しいプロパティを作成するには、以下の手順を実行します。
アダプタ・プロパティの削除インバウンド・アダプタのプロパティを削除するには、以下の手順を実行します。
アダプタのプロパティ値の回復各自が変更したプロパティのみ、元に戻すことができます。 回復操作を実行できるのは既存のプロパティ値に対してのみであり、事前定義プロパティ・リストから追加したものや各自が作成したものに対しては実行できま せん。 インバウンド・アダプタのプロパティ値を回復するには、以下の手順を実行します。
詳しくは、 イ ンバウンド・アダプタのエンドポイント・プロパティの構成および ア ウトバウンド・アダプタのエンドポイント・プロパティの構成を参照してください。 ユースケース例: ファイル書込み前のファイル名およびディレクトリの変更この例では、ファイル・コントロール(Oracle WLIの場合)とファイル・アダプタ(SOA Suiteの場合)に対して、エンドポイント(ファイル名およびディレクトリ)を動的に変更する方法について説明します。 簡潔かつ要点を得た説明にするため、ここではファイルへのメッセージ書込み以外は何も実行しないプロセスを作成します。 実際のユースケースは、通常はるかに複雑になります。 Oracle WLIを使用したユースケースの実装Oracle WLIを使用して動的ファイル・コントロールを実装する方法について、読者が理解しているという前提に立っているため、WLIユースケースについてここで は詳しく説明しません。 ここで焦点となるのは、SOA Suiteを使用したユースケースの実装です。 ローカル・ディレクトリに対してファイルを書き込むには、ファイル・コントロールを使用します。 その他多くのコントロールと同様にファイル・コントロールでも、エンドポイントを動的に設定できる動的プロパティが提供されています。
<?xml version = '1.0' encoding = 'UTF-8'?>
この例でWLIプロセスを起動するクライアント・リクエスト・ノードは、顧客のXMLドキュメントを入力として受け取ります。 次に、XMLメタデータ・キャッシュ・コントロールを使用して、ファイル・ディレクトリとファイル名の値を読み取ります。 変換コントロールを使用して、ファイル・コントロールのプロパティを作成します。 最後に、ファイル・コントロールのsetProperties()メソッドを使用してプロパティを設定します。 ファイル・コントロールの書込みメソッドを使用して、顧客メッセージをファイルに書き込みます。 このプロセスの一部のステップはまとめることができますが、例を簡単にするため、1つずつのステップとして表示しています。 図1に、JPDを示します。 図1: JPD
SOA Suiteを使用したユースケースの実装ここでは、同じユースケースをSOA Suiteで実装する例について説明します。 このユースケースでは、顧客のXMLメッセージを含んだWebサービス・コールによってビジネス・プロセスが開始されます。 ビジネス・プロセスはファイル・アダプタを使用して、顧客情報をファイルに書き込みます。 次のセクションでは、プロセスのデプロイおよびテスト方法について説明します。次に、プロセス内のアダプタ・ヘッダー・プロパティまた はEnterprise Managerコンソールを使用して、アダプタのエンドポイント・プロパティを変更する方法を説明します。 SOAアプリケーションおよびプロジェクトの作成はじめに、以下の手順を実行します。
BPELプロセスの作成
ファイル・アダプタの追加
BPELプロセスとファイル・アダプタの接続次に、BPELプロセスとファイル・アダプタを接続して、インタフェース定義を完了します。 コンポーネントを接続すると、次のように表示されます。 コンポジットでコンポーネントを接続すると、BPELプロセス内に自動的にパートナー・リンク参照が作成されます。 BPELプロセスの設計
BPELプロセスは次のようになります。 WriteCustomerDataサービスとのやり取りで使用する変数を作成しましたが、この変 数の値はまだ生成していません。 はじめに、入力変数の値から生成しましょう。 BPELでは、Assignアクティビティを使用して変数にデータを割り当てます。 ここでは、 WriteCustomerDataサー ビスに顧客情報を割り当てます。
Assignダイアログは次のように表示されます。
すべての警告が消えています。 プロセスは下図のように表示されます。 これで、 WriteCustomerDataへの入力変数の値が生成されました。
SOAコンポジットのデプロイBPELプロセスをテストする前に、Oracle JDeveloperを使用してコンポジットをデプロイする必要があります。 デプロイを開始する前に、SOAサーバーが実行中であることを確認してください。 Oracle JDeveloperおよびスクリプト・ツールを使用したSOA複合アプリケーションのデプロイと、開発、テスト、本番環境間でのSOA複合アプリケー ションの移動を可能にする構成プランの作成については、 SOA コンポジット・アプリケーションのデプロイを参照してください。 また、Oracle Enterprise Manager Fusion Middleware Control Console(EM)を使用してSOA複合アプリケーションをデプロイ、再デプロイ、アンデプロイする方法についても、 SOA コンポジット・アプリケーションのデプロイを参照してください。 JDeveloper内でコンポジットをデプロイすると、ログは次の例のようになります。
[07:32:39 PM] ---- Deployment started. ----
BPELプロセスのテストデプロイに成功したら、Oracle Enterprise Manager Fusion Middleware Control Console(Oracle EM)からコンポジット・サービスを開始します。
すべて予定どおりに実行されると、C:\tempに新規ファイルcustomer_1.xmlが作成されます。 InvokeアクティビティのPropertiesタブを使用した、実行時のファイル・アダプタ・エンドポインドの変更この例では、アダプタ・エンドポイントを実行時に変更する方法について説明します。 XMLメタデータ・キャッシュ・コントロールから情報を取得し、コントロールのプロパティとしてデータを設定するWLIユースケースと非常によく似ていま す。 上述のとおり、通常アダプタ・プロパティ値の取得にはドメイン値マッピングが使用されます。 サンプルのBPELプロセスでは、説明を簡単にするため、これらのプロパティの値としてハードコードした値を使用します。ドメイン値ペアの使用については 別に説明します。 .プロパティ変数の作成
変数への値の割当てこの手順は、実際のユースケースではドメイン値マッピングが使用されます。 この例では、ハードコードした値を使用します。
上記手順を繰り返して、変数filenameに新しい出力ファイル名を割り当てます。 Assignアクティビティは次のように表示されます。
ファイル・アダプタ・プロパティの設定
BPELプロセスは次のように表示されます。 コンポジットを再デプロイし、BPELプロセスを再度テストします。 新しく選択したディレクトリに新しい名前のファイルが作成されています。 Enterprise Managerを使用したファイル・アダプタ・エンドポイントの変更BPELプロセスで動的にプロパティを設定するかわりに、Enterprise ManagerからJCAアダプタおよびWebサービスのプロパティを変更することもできます。
コンポジットを再デプロイし、BPELプロセスを再度テストします。 新しく選択したディレクトリに新しい名前のファイルが作成されています。 重要なポイントと推奨事項Oracle SOA Suiteでは、JCAアダプタとWebサービスのエンドポイントを動的に設定する方法として、 BPELプロセスでヘッダー・プロパティを設定する方法(Oracle WLIの設定方法と同様)と、Enterprise Managerコンソールからヘッダー・プロパティを変更する方法の2種類の方法を提供しています。
|