この章では、Oracle JDeveloperを使用してSOAコンポジット・アプリケーションを作成する方法について説明します。ここでは、コンポジット作成の基本的な手順の他に、コンポジット・アプリケーションの設計時に認識する必要がある主要な問題についても説明します。
項目は次のとおりです。
新しいアプリケーションを作成する最初のステップでは、アプリケーションに名前を割り当て、ソース・ファイルを保存するディレクトリを指定します。JDeveloperで用意されているアプリケーション・テンプレートを使用してアプリケーションを作成すると、作成するアプリケーションのタイプに必要な多数の構成ファイルとともに、ワークスペースの編成がプロジェクトに自動的に適用されます。
最初にSOAプロジェクト用のアプリケーションを作成します。
注意: SOAコンポジット・アプリケーションとプロジェクトを作成してデプロイするには、Oracle SOA Suite拡張機能をインストールする必要があります。この拡張機能をOracle JDeveloper用にインストールする手順は、『Oracle Fusion Middleware Oracle JDeveloperインストレーション・ガイド』を参照してください。 |
アプリケーションを作成する手順は、次のとおりです。
Oracle JDeveloper Studio Editionバージョン11.1.1.3.0を起動します。
Oracle JDeveloperを初めて実行する場合は、Java JDKの場所を指定します。
表2-1で説明するように、新しいSOAコンポジット・アプリケーションを作成します。
表2-1 SOAコンポジット・アプリケーションの作成
Oracle Jdeveloperの状態 | 操作 |
---|---|
アプリケーションがない 例: Oracle JDeveloperを初めて開いた場合 |
左上の「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。 |
既存のアプリケーションがある |
「ファイル」メイン・メニューまたは「アプリケーション」メニューから次の操作を実行します。
|
SOAアプリケーションの作成ウィザードが起動します。
「アプリケーションの名前付け」ページで、必要に応じて、Webプロジェクトの名前と場所を変更できます。最初のアプリケーションを作成する場合は、「アプリケーション・テンプレート」から「SOAアプリケーション」を選択します。パッケージ接頭辞のデフォルト値をそのまま使用し、「次へ」をクリックします。
「プロジェクトの名前付け」ページで、必要に応じて、SOAプロジェクトの名前と場所を変更できます。デフォルトでは、Oracle JDeveloperでモデル・プロジェクトに対してSOAプロジェクト・テクノロジ、生成されたcomposite.xml
、および必要なライブラリが追加されます。「次へ」をクリックします。
注意: コンポジットおよびコンポーネントの名前は、500文字を超えることはできません。 |
同じインフラストラクチャにデプロイするプロジェクトの名前は、SOAコンポジット・アプリケーション全体で一意である必要があります。コンポジットの一意性は、そのコンポジットのプロジェクト名によって確定されます。たとえば、表2-2に説明するような操作は実行しないてください。1番目のデプロイ済プロジェクト(コンポジット)は、デプロイメント時に2番目のデプロイ済プロジェクト(コンポジット)によって上書きされます。
SOAアプリケーションの作成ウィザードのプロジェクトのSOA設定ページが表示されます。
SOA設定の構成ページで、「空のコンポジット」をクリックし、「終了」をクリックします。
「ファイル」メイン・メニューから「すべて保存」を選択します。
SOAアプリケーションを作成すると、Oracle JDeveloperではアプリケーションに関連するすべてのソース・ファイルを含むプロジェクトが作成されます。Oracle JDeveloperでは、SOAプロジェクトに必要な次のライブラリが自動的に追加されます。
SOAデザインタイム
SOAランタイム
BPELランタイム
メディエータ・ランタイム
MDSランタイム
プロジェクトが作成された後に、そのプロジェクト名を変更できます。さらに、JDeveloperを使用して、アプリケーションに必要な追加のプロジェクトを作成できます。
図2-1は、Fusion Order DemoのWebLogicFusionOrderDemo
アプリケーションに含まれるプロジェクトOrderBookingComposite
が表示されたSOAコンポジット・エディタを示しています。
表2-3で、SOAコンポジット・エディタについて説明します。
図2-3 SOAコンポジット・エディタ
composite.xml
ファイルは、デザイナではタブとして、「アプリケーション・ナビゲータ」ではファイルとして表示されます。このファイルは、新しいSOAプロジェクトの作成時に自動的に作成されます。このファイルには、サービス、サービス・コンポーネントおよび参照のコンポジット構成全体が記述されています。1つのSOAプロジェクトに対して1つのcomposite.xml
ファイルがあります。
composite.xml
ファイルを使用するには、ほとんどの場合、図2-1に示すようにデザイナ、「構造」ウィンドウおよび「プロパティ・インスペクタ」を使用します。デザイナを使用すると、WYSIWYG環境に多くのファイルを表示できます。さらに、概要エディタにファイルを表示して宣言的に変更したり、ファイルのソース・コードを表示することもできます。「構造」ウィンドウには、現在選択されているファイルの構造が表示されます。このウィンドウでオブジェクトを選択し、選択したオブジェクトのプロパティを「プロパティ・インスペクタ」で編集できます。SOAコンポジット・アプリケーションにアーチファクトを追加した場合は、そのアーチファクトを「アプリケーション概要」に表示できます。
図2-2は、WebLogicFusionOrderDemo
アプリケーションを空のコンポジットを使用して最初に作成した後の「アプリケーション概要」を示しています。
アプリケーションを作成した後は、多くの場合、そのアプリケーションのビジネス・ロジックまたは処理ルールを実装するサービス・コンポーネントを追加します。SOAコンポジット・エディタの「コンポーネント・パレット」を使用して、サービス・コンポーネントをコンポジットにドラッグ・アンド・ドロップできます。
サービス・コンポーネントを追加する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「サービス・コンポーネント」リストからコンポーネントをデザイナにドラッグします。
図2-4に、デザイナに追加されるBPELプロセスを示します。
選択されているサービス・コンポーネント固有のダイアログが表示されます。表2-4は、使用可能なエディタを示しています。
表2-4 サービス・コンポーネント・エディタの起動
ドラッグするサービス・コンポーネント | 起動する対象 |
---|---|
BPELプロセス |
「BPELプロセスの作成」ダイアログが起動し、一連のビジネス・アクティビティとサービスをエンドツーエンドのプロセス・フローに統合するBPELプロセスを作成できます。 |
ビジネス・ルール |
「ビジネス・ルールの作成」ダイアログが起動し、ルールに基づいてビジネス上の意思決定を作成できます。 |
ヒューマン・タスク |
「ヒューマン・タスクの作成」ダイアログが起動し、エンドツーエンドのビジネス・プロセス・フローの一部として、ユーザーまたはグループが実行するタスクを説明するワークフローを作成できます。 |
メディエータ |
「メディエータの作成」ダイアログが起動し、メッセージおよびイベントのルーティング、フィルタリングおよびトランスフォーメーションを実行するサービスを定義できます。 |
Springコンテキスト |
Springの作成ダイアログが起動し、JavaインタフェースをSOAコンポジット・アプリケーションに統合するためのSpringコンテキスト・ファイルを作成できます。 |
サービス・コンポーネントの設定値を構成します。サービス・コンポーネントのダイアログに関するヘルプは、「ヘルプ」をクリックするか、[F1]を押してください。「終了」をクリックします。
図2-4は、Fusion Order DemoのWebLogicFusionOrderDemo
アプリケーション用にOrderProcessor
BPELプロセスを作成するためのデータが入力された「BPELプロセス」ダイアログを示しています。このプロセスは非同期として選択されています。「SOAPサービスとして公開」オプションを選択したため、Oracle JDeveloperではこのサービス・コンポーネントが作成されてインバウンドWebサービスに自動的に接続されます。
「OK」をクリックします。
サービス・コンポーネントがデザイナに表示されます。図2-5に、composite.xml
ファイルに追加されたOrderProcessor
BPELプロセスを示します。左側のスイムレーンにあるorderprocessor_client_ep
というSOAPサービス・バインディング・コンポーネントは、外部に対してSOAコンポジット・アプリケーションへのエントリ・ポイントを提供します。「BPELプロセスの作成」ダイアログで「SOAPサービスとして公開」オプションを選択しなかった場合、orderprocessor_client_ep
サービスは表示されません。後でサービスを追加する方法は、第2.3.1項「サービス・バインディング・コンポーネントの追加方法」で説明します。
サービス・コンポーネントの内容は、現時点でも後からでも詳細に定義できます。このトップダウンの例では、この時点で内容が定義されます。
「ファイル」メイン・メニューから「すべて保存」を選択します。
サービス・コンポーネントの追加については次の詳細に注意してください。
サービス・コンポーネントは、SOAコンポジット・エディタまたは他のコンポーネントのデザイナから作成します。たとえば、ヒューマン・タスク・コンポーネントは、SOAコンポジット・エディタまたはOracle BPELデザイナから作成できます。
「リソース・パレット」は、SOAコンポジット・エディタで定義されているか、デプロイされているサービス・コンポーネントを参照するのに使用します。
サービス・コンポーネントの削除については次の詳細に注意してください。
サービス・コンポーネントを削除するには、該当するサービス・コンポーネントを右クリックして、コンテキスト・メニューから「削除」を選択します。
サービス・コンポーネントが削除されると、それを示す参照はすべて無効になり、すべてのワイヤは削除されます。サービス・コンポーネントも「アプリケーション・ナビゲータ」から削除されます。
別のサービス・コンポーネント内から作成されたサービス・コンポーネントを削除できます。たとえば、Oracle JDeveloperのBPELプロセス・サービス・コンポーネント内で作成されたヒューマン・タスクは、SOAコンポジット・エディタから削除できます。さらに、タスクへのパートナ・リンクも削除できます。パートナ・リンクを削除すると、その.componentType
ファイルから参照インタフェースが削除され、タスクへのワイヤが削除されます。
サービス・コンポーネントを編集して、サービス・コンポーネントに関する特定の詳細を定義します。
サービス・コンポーネントを編集する手順は、次のとおりです。
表2-5に示すように、デザイナで該当するサービス・コンポーネントをダブルクリックして適切なエディタまたはデザイナを表示します。
表2-5 SOAサービス・コンポーネントのウィザードとダイアログの起動
ダブルクリックするサービス・コンポーネント | 表示対象 |
---|---|
BPELプロセス |
詳細設計のためのOracle BPELデザイナ |
ビジネス・ルール |
詳細設計のためのビジネス・ルール・デザイナ |
ヒューマン・タスク |
詳細設計のためのヒューマン・タスク・エディタ |
メディエータ |
詳細設計のためのOracle Mediatorエディタ |
Springコンテキスト |
詳細設計のためのSpringエディタ |
任意のサービス・コンポーネントからSOAコンポジット・エディタに戻るには、ツールバーの「コンポジット・エディタに移動」をクリックします。または、「アプリケーション・ナビゲータ」のcomposite.xmlをダブルクリックするか、デザイナの上のcomposite.xmlをシングルクリックします。
サービス・コンポーネント・エディタに関するヘルプは、「ヘルプ」をクリックするか、[F1]を押してください。「終了」をクリックします。
サービス・コンポーネントの設定値を変更します。サービス・コンポーネント・エディタまたはデザイナに関するヘルプは、「ヘルプ」をクリックするか、[F1]を押してください。「終了」をクリックします。
「アプリケーション・ナビゲータ」でcomposite.xmlをダブルクリックするか、デザイナの上でcomposite.xmlをシングルクリックします。
この操作により、SOAコンポジット・エディタに戻ります。
「ファイル」メイン・メニューから「すべて保存」を選択します。
SOAコンポジット・アプリケーションへのエントリ・ポイントとして機能するサービス・バインディング・コンポーネントを外部から追加します。
注意: |
SOAコンポジット・エディタの「コンポーネント・パレット」を使用して、サービス・バインディング・コンポーネントをコンポジットにドラッグ・アンド・ドロップできます。
サービス・バインディング・コンポーネントを追加する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「サービス・アダプタ」リストからサービスを左側のスイムレーンにドラッグして、サービス・インタフェースを定義します。
図2-6に、デザイナに追加されるWebサービスを示します。
選択されているサービス固有のダイアログが表示されます。表2-6は、使用可能なエディタを示しています。
ドラッグするサービス | 起動する対象 |
---|---|
Webサービス |
「Webサービスの作成」ダイアログが起動し、Web呼出しサービスを作成できます。 |
アダプタ |
アダプタ構成ウィザードが起動し、サービスを、データベース表、データベース・キュー、ファイル・システム、FTPサーバー、Java Message Services(JMS)、IBM WebSphere MQ、BAMサーバー、ソケットまたはOracle E-Business Suiteアプリケーションと統合できます。 |
ADF-BCサービス |
「ADF-BCサービスの作成」ダイアログが起動し、サービス・データ・オブジェクト(SDO)呼出しサービスを作成できます。 |
B2B |
B2Bウィザードが起動し、ドキュメント定義を選択できます。 |
EJBサービス |
「EJBサービスの作成」が起動し、SDOパラメータまたはJavaインタフェースをEnterprise JavaBeansで使用するためのEnterprise JavaBeansサービスを作成できます。 |
HTTPバインディング |
HTTPバインディングの作成ウィザードが起動し、HTTPバインディングを作成できます。このウィザードを使用すると、HTTPのPOSTおよびGET操作からSOAコンポジット・アプリケーションを起動できます。 |
直接バインディング |
「直接バインディング・サービスの作成」ダイアログが起動し、インバウンド方向で、SOAコンポジット・アプリケーションを起動し、Remote Method Invocation(RMI)を介してメッセージを交換できます。 |
サービスの設定値を構成します。サービス・エディタに関するヘルプは、「ヘルプ」をクリックするか、[F1]を押してください。「終了」をクリックします。
図2-7は、OrderProcessor
BPELプロセス用のorderprocessor_client_ep
サービスを作成するためにデータが入力された「Webサービス」ダイアログを示しています。
「OK」をクリックします。
サービス・バインディング・コンポーネントが左側のスイムレーンに表示されます。図2-8に、composite.xml
ファイルに追加されたorderprocessor_client_ep
サービス・バインディング・コンポーネントを示します。
「ファイル」メイン・メニューから「すべて保存」を選択します。
WebサービスのWSDLを追加する手順は、次のとおりです。
「コンポーネント・パレット」で「SOA」を選択します。
「サービス・アダプタ」リストからWebサービスを左側のスイムレーンにドラッグします。
図2-7に示す「Webサービスの作成」ダイアログが表示されます。
表2-7に記載されている詳細を入力します。
表2-7 「Webサービスの作成」ダイアログのフィールドと値
フィールド | 値 |
---|---|
名前 |
サービスの名前を入力します。 |
タイプ |
Webサービスに対してタイプ(メッセージの方向)を選択します。Webサービスを左側のスイムレーンにドラッグしているため、「サービス」タイプが正しい選択であり、デフォルトでこのタイプが表示されます。
この例では、SOAコンポジット・アプリケーションへのエントリ・ポイントの作成方法を説明しているため、「サービス」が選択されています。 |
サービスに対するWSDLファイルを選択します。選択には3種類の方法があります。
「WSDL URL」フィールドの右側で、最初のアイコンをクリックし、ローカル・ファイル・システムから既存のWSDLファイルを選択します(この例では、「OrderProcessor.wsdl」が選択されています)。ダイアログの最上部にあるリストで「ファイルシステム」が自動的に選択されることに注意してください。図2-9に詳細を示します。
図2-10に示すように、「WSDL URL」フィールドの右側で最初のアイコンをクリックし、ダイアログの最上部にあるリストから「リソース・パレット」を選択します。選択すると、他のアプリケーションの既存のWSDLファイルを使用できるようになります。
「WSDL URL」フィールドの右側で、2番目のアイコンをクリックして、スキーマからWSDLファイルを自動的に作成します。図2-11に、「WSDLの作成」ダイアログを示します。
「OK」をクリックして「Webサービスの作成」ダイアログに戻ります。
表2-8に示す追加詳細をメモします。
「OK」をクリックします。
「ファイル」メイン・メニューから「すべて保存」を選択します。
インタフェースのWSDLファイルで使用するすべてのスキーマを表示でき、必要な場合は、「インタフェースの更新」ダイアログで、選択されたメッセージ・パートに対する新しいメッセージ・スキーマを選択できます。
このダイアログにアクセスする手順は、次のとおりです。
特定のバインディング・コンポーネントまたはサービス・コンポーネントに表示される小さい矢印ハンドルをクリックします。
「インタフェースの更新」ダイアログには、WSDLファイルで現在使用されているすべてのスキーマが表示されます。
新しいメッセージ・スキーマを選択する方法については、「ヘルプ」をクリックするか、[F1]を押してください。
最初にサービスを作成し、後でその内容を編集することもできます。コンポーネントのアイコンをダブルクリックすると、適切なエディタまたはウィザードが表示されます。表2-9に概要を示します。
サービスの追加については次の詳細に注意してください。
サービス・コンポーネントに新しいサービスが追加されると、そのサービス・コンポーネントには、メタデータを適切に変更できるように通知されます。たとえば、新しいサービスがBPELサービス・コンポーネントに追加されると、そのBPELサービス・コンポーネントには、receiveまたはon-messageアクティビティに接続可能なパートナ・リンクを作成するように通知されます。
サービスの削除については次の詳細に注意してください。
サービス・コンポーネントにより提供されているサービスが削除されると、そのサービス・コンポーネントに対するすべての参照が無効となり、ワイヤが削除されます。
参照バインディング・コンポーネントを追加します。このコンポーネントは、外部にある外部サービスにメッセージを送信するためのSOAコンポジット・アプリケーションを有効にします。
SOAコンポジット・エディタの「コンポーネント・パレット」を使用して、参照バインディング・コンポーネントをコンポジットにドラッグ・アンド・ドロップできます。
参照バインディング・コンポーネントを追加する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「サービス・アダプタ」リストからサービスを右側のスイムレーンにドラッグします。
図2-13に、デザイナに追加されるWebサービスを示します。
選択されている参照固有のダイアログまたはウィザードが表示されます。表2-10は、使用可能なエディタを示しています。
表2-10 参照エディタ
ドラッグするサービス | 起動する対象 |
---|---|
Webサービス |
「Webサービスの作成」ダイアログが起動し、Web呼出しサービスを作成できます。 |
アダプタ |
アダプタ構成ウィザードが起動し、サービスを、データベース表、データベース・キュー、ファイル・システム、FTPサーバー、Java Message Services(JMS)、IBM WebSphere MQ、BAMサーバー、ソケットまたはOracle E-Business Suiteアプリケーションと統合できます。 |
ADF-BCサービス |
「ADF-BCサービスの作成」ダイアログが起動し、サービス・データ・オブジェクト(SDO)呼出しサービスを作成できます。 |
B2B |
B2Bウィザードが起動し、ドキュメント定義を選択できます。 |
EJBサービス |
「EJBサービスの作成」ダイアログが起動し、SDOパラメータをEnterprise JavaBeansで使用するためのEnterprise JavaBeansサービスを作成できます。 |
HTTPバインディング |
HTTPバインディングの作成ウィザードが起動し、HTTPバインディングを作成できます。このウィザードを使用すると、HTTPのPOSTおよびGET操作からSOAコンポジット・アプリケーションを起動したり、HTTPのPOSTおよびGET操作からHTTPエンドポイントを起動できます。 |
直接バインディング |
「直接バインディング・サービスの作成」ダイアログが起動し、Oracle Service Bus(OSB)フローまたは別のSOAコンポジット・アプリケーションを起動できます。 |
参照バインディング・コンポーネントの設定値を構成します。参照エディタに関するヘルプは、「ヘルプ」をクリックするか、[F1]を押してください。「終了」をクリックします。
図2-14は、StoreFrontService
と呼ばれる参照を作成するためにデータが入力された「Webサービス」ダイアログを示しています。
「OK」をクリックします。
参照バインディング・コンポーネントが右側のスイムレーンに表示されます。図2-8に、composite.xml
ファイルに追加されたStoreFrontService
参照を示します。
「ファイル」メイン・メニューから「すべて保存」を選択します。
参照の追加については次の詳細に注意してください。
SOAコンポジット・エディタに新しい参照を追加する唯一の方法は、必要なターゲット・サービス・コンポーネントにサービス・コンポーネントを接続することです。新しい参照が追加されると、メタデータを適切に変更できるように、サービス・コンポーネントに通知されます。たとえば、参照がBPELサービス・コンポーネントに追加されると、BPELサービス・コンポーネントにパートナ・リンクを追加するように通知されます。このパートナ・リンクはinvokeアクティビティで使用可能です。
参照の削除については次の詳細に注意してください。
サービス・コンポーネントに対する参照が削除されると、関連付けられているワイヤも削除され、メタデータを更新できるようにサービス・コンポーネントに通知されます。たとえば、参照がBPELサービス・コンポーネントから削除されると、そのBPELメタデータにあるパートナ・リンクを削除するようにサービス・コンポーネントに通知されます。
ワイヤに接続されている参照を削除すると、その参照とワイヤも消去されます。
WSDLファイルは、WSDLを含む新規コンポーネント(例: サービス・バインディング・コンポーネント、Oracle Mediator、BPELプロセスなどのサービス・コンポーネント、または参照バインディング・コンポーネント)を作成するたびに、SOAコンポジット・アプリケーションに追加されます。コンポーネントを削除すると、そのコンポーネントで使用されるWSDLインポートは、別のコンポーネントで使用されていない場合のみ削除されます。WSDLインポートを使用する最後のコンポーネントが削除されると、WSDLインポートは常に削除されます。
サービス・バインディング・コンポーネントまたは参照バインディング・コンポーネントが新しいWSDLを使用するように更新されると、インタフェースが削除されて新しいインタフェースが追加されたかのように処理されます。したがって、古いWSDLインポートは、別のコンポーネントで使用されていない場合のみ削除されます。
サービス・バインディング・コンポーネントまたは参照バインディング・コンポーネントが新しい場所から同じWSDL(porttype
qname
)を使用するように更新されると、WSDLインポートおよび他のすべてのWSDL参照(例: 外部参照WSDLをインポートするBPELプロセスWSDL)は新しい場所を参照するように自動的に更新されます。
composite.xml
ファイルのインポートのソース・ビューで単にWSDLの場所を変更するだけでは不十分です。メタデータ内にはユーザー・インタフェースで必要なWSDL参照があります(コンポジットおよびcomponentTypeのサービスと参照のui:wsdlLocation
属性を参照)。また、実行時に必要なWSDL参照もあります(例: BPELプロセスWSDLなど別のWSDLをインポートするWSDL)。
WSDLの場所は常に、WSDLの場所が指定されたSOAコンポジット・エディタのダイアログ(例: Webサービス、BPELパートナ・リンクなど)で変更してください。URLのホスト・アドレスを変更すると、SOAコンポジット・エディタはすべてのWSDL参照を自動的に更新します。
リビジョン番号を含まないWSDL URLは、デフォルトのコンポジット・アプリケーションによって処理されます。このため、コール元のコンポジットを変更せずに、コール先サービスのデフォルト・リビジョンを常にコールできます。
Oracle JDeveloperの「リソース・パレット」で使用するデフォルトのWSDLを選択します。
「Webサービスの作成」ダイアログで、「WSDL URL」フィールドの右側にあるアイコンをクリックして「SOAリソース・ブラウザ」ダイアログを起動します。
上部にあるリストから「リソース・パレット」を選択します。
アプリケーション・サーバー接続またはWSIL接続の下にあるノードを展開し、すべてのデプロイ済コンポジットとリビジョンを表示します。デフォルトのバージョンには、タイトルに「デフォルト」という語が表示されます。たとえば、OrderBookingComposite [デフォルト]と表示されます。
適切なデフォルトのエンドポイントを選択し、「OK」をクリックします。
Webサービスとサービス・コンポーネントをワイヤ(接続)します。次の点に注意してください。
Webサービスはインバウンド・サービスであるため、参照ハンドルは右側に表示されます。アウトバウンド参照であるWebサービスは、右側に参照ハンドルがありません。
定義済のインタフェースは未定義のインタフェースにどちらの方向から(参照からサービスへ、またはサービスから参照へ)でもドラッグできます。未定義のインタフェースは定義済のインタフェースを継承します。このルールにはいくつかの例外があります。
コンポーネントには、新しいインタフェースを却下する権限があります。たとえば、メディエータには1つのインバウンド・サービスしか保持できません。このため、コンポーネントは2番目のサービスが作成されないように却下します。
ビジネス・ルールは参照をサポートしないため、アウトバウンド・サービス(外部参照)をビジネス・ルールにドラッグすることはできません。ワイヤをドラッグすると、ユーザー・インタフェースでは、有効なターゲットであるインタフェースがハイライト表示されます。
異なるインタフェースを持つサービスとコンポジットは接続できません。たとえば、同期WSDLファイルで構成されているWebサービスは非同期BPELプロセスに接続できません。図2-16に詳細を示します。
サービスと参照は一致する必要があります。つまり、インタフェースとコールバックは同じになる必要があります。インタフェースが異なる2つのサービスがある場合は、2つのサービス間にメディエータを配置し、インタフェース間のトランスフォーメーションを実行できます。
SOAコンポジット・エディタで、サービス・バインディング・コンポーネントをサービス・コンポーネントに接続できます。
サービスとサービス・コンポーネントを接続する手順は、次のとおりです。
SOAコンポジット・エディタで、サービス・コンポーネントを参照バインディング・コンポーネントに接続できます。
サービス・コンポーネントと参照を接続する手順は、次のとおりです。
「アプリケーション・ナビゲータ」でcomposite.xmlをダブルクリックするか、デザイナの上でcomposite.xmlをシングルクリックします。
図2-19に示すように、サービス・コンポーネントからワイヤを参照にドラッグします。
サービス・コンポーネントがBPELプロセスの場合は、そのBPELプロセスをダブルクリックすると、図2-20に示すように、右側のスイムレーンにパートナ・リンクとして参照が表示されることに注意してください。
「ファイル」メイン・メニューから「すべて保存」を選択します。
「アプリケーション・ナビゲータ」で、composite.xmlファイルを選択します。
「ソース」タブをクリックして、作成した内容を確認します。
orderprocessor_client_ep
サービス・バインディング・コンポーネントは、例2-1に示すように、コンポジットへのエントリ・ポイントを提供します。
<service name="orderprocessor_client_ep" ui:wsdlLocation="oramds:/apps/FusionOrderDemoShared /services/orderbooking/OrderBookingProcessor.wsdl"> <interface.wsdl interface= "http://www.globalcompany.example.com/ns /OrderBookingService#wsdl.interface(OrderProcessor)" <binding.adf serviceName="OrderProcessorService" registryName=""/> <callback> <binding.ws port="http://www.globalcompany.example.com/ns /OrderBookingService#wsdl.endpoint(orderprocessor_clientep/OrderProcessorCallback_ pt)"/> </callback> </service>
例2-2に、OrderProcessor
BPELプロセス・サービス・コンポーネントを示します。
例2-2 サービス・コンポーネント
<component name="OrderProcessor"> <implementation.bpel src="OrderProcessor.bpel"/> </component>
例2-3に、StoreFrontService
という名前の参照バインディング・コンポーネントを示します。この参照は、外部にある外部サービスへのアクセスを提供します。
例2-3 参照
<reference name="StoreFrontService" ui:wsdlLocation="oramds:/apps/FusionOrderDemoShared /services/oracle/fodemo/storefront/store/service/common/serviceinterface/StoreFron tService.wsdl"> <interface.wsdl interface="www.globalcompany.example.com#wsdl.interface(StoreFrontService)"/> <binding.ws port="www.globalcompany.example.com#wsdl.endpoint(StoreFrontService/StoreFrontServ iceSoapHttpPort)" location="oramds:/apps/FusionOrderDemoShared/services/oracle/fodemo/storefront/sto re/service/common/serviceinterface/StoreFrontService.wsdl"/> </reference>
例2-4では、サービス・コンポーネント間の通信(ワイヤリング)が次のように記述されています。
ソースのorderprocessor_client_ep
サービス・バインディング・コンポーネントは、ターゲットのOrderProcessor
BPELプロセス・サービス・コンポーネントに接続されています。ワイヤリングにより、この特定のBPELプロセスとWebサービス・メッセージ通信ができます。
ソースのOrderProcessor
BPELプロセスは、ターゲットのStoreFrontService
参照バインディング・コンポーネントに接続されています。これは、外部にある外部サービスへの参照です。
ワイヤの追加については次の詳細に注意してください。
サービス・コンポーネントの参照がターゲット・サービス・コンポーネントのサービスと一致する場合、サービス・コンポーネントは別のサービス・コンポーネントに接続できます。一致するという意味は、同じインタフェースとコールバック・インタフェースであることに注意してください。
2つのメディエータ・サービス・コンポーネント間に次のワイヤリングを追加すると、無限ループが発生します。
ビジネス・イベントを作成した場合
メディエータ・サービス・コンポーネントを作成し、イベントをサブスクライブした場合
2番目のメディエータ・サービス・コンポーネントを作成し、同じイベントを公開した場合
最初のメディエータを2番目のメディエータ・サービス・コンポーネントに接続した場合
2つのメディエータ間のワイヤを削除すると、すべてのメッセージについて、2番目のメディエータはイベントを公開でき、最初のメディエータはそのイベントをサブスクライブできます。
ワイヤの削除については次の詳細に注意してください。
ワイヤが削除されると、コンポーネントのアウトバウンド参照は自動的に削除され、クリーン・アップ(パートナ・リンクの削除、ルーティング・ルールの消去など)が可能であることがコンポーネントに通知されます。ただし、コンポーネントのインタフェースは削除されません。Oracle SOA Suiteのすべてのサービスは、WSDLインタフェースで定義されます。コンポーネントのインタフェースが定義されると、SOAコンポジット・エディタでサービス・インタフェースが自動的に削除されることはありません。
サービスのWSDLインタフェースを変更する必要がある場合は、次のような回避策があります。
ほとんどの場合、変更が必要なのはインバウンド・サービス定義ではなくスキーマです。SOAコンポジット・エディタで、WSDLを使用するインタフェース・アイコンをクリックします。たとえば、Webサービス・インタフェース・アイコンやOracle Mediatorサービス・アイコンをクリックします。この結果、「インタフェースの更新」ダイアログが起動し、このダイアログでWSDLメッセージのスキーマを変更できます。
Oracle Mediatorサービス・コンポーネントを使用している場合は、Oracle Mediatorエディタの「WSDLからの操作のリフレッシュ」アイコンを使用して、(新しい操作を追加した後に)Oracle Mediator WSDLをリフレッシュまたは置換できます。ただし、現在の操作を削除しようとすると警告が表示されます。このアイコンを使用してWSDLを新規インバウンド・サービスWSDLに変更すると、インタフェースが変更されるため、通常は接続が切断されます。その後に、Oracle Mediatorを新規サービスに接続します。
多くの場合、新規サービスでは完全に新しいOracle Mediatorが必要です。古いOracle Mediatorを削除し、新しいOracle Mediatorを作成して新規サービスに接続します。
BPELプロセス・サービス・コンポーネントを使用している場合は、「パートナ・リンクの編集」ダイアログで新規のWSDLを選択します。
「インタフェースの更新」ダイアログの詳細は、第2.3.3項「スキーマの表示方法」を参照してください。
SOAコンポジット・アプリケーションを作成する際に、サービス・バインディング・コンポーネント、サービス・コンポーネントおよび参照バインディング・コンポーネントにポリシーを添付してWebサービスを保護できます。ポリシーの実装方法の詳細は、第40章「ポリシーを使用したセキュリティの有効化」を参照してください。
SOAコンポジット・アプリケーションのデプロイには、Oracle WebLogic Serverへの接続の作成、およびOracle WebLogic Server管理対象サーバーへのSOAコンポジット・アプリケーションのアーカイブのデプロイも含まれます。SOAコンポジット・アプリケーションのデプロイ方法の詳細は、第41章「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
SOAコンポジット・アプリケーションから、デプロイ済の他のSOAコンポジット・アプリケーションを起動できます。他のアプリケーションはデプロイ済である必要があります。
他のコンポジットを起動する手順は、次のとおりです。
次のいずれかの方法を使用して、Webサービスまたはパートナ・リンクを作成します。
SOAコンポジット・エディタで、「コンポーネント・パレット」から「外部参照」スイムレーンに「Webサービス」をドラッグします。
Oracle BPELデザイナで、「コンポーネント・パレット」から右側のスイムレーンに「パートナ・リンク」をドラッグします。
作成したサービスのタイプに基づいて「SOAリソース・ブラウザ」ダイアログにアクセスします。
「Webサービスの作成」ダイアログの場合は、「既存のWSDLを検索します。」アイコンをクリックします。
「パートナ・リンクの編集」ダイアログの場合は、「SOAリソース・ブラウザ」アイコンをクリックします。
上部のリストから「リソース・パレット」を選択します。
ツリーを展開して、SOAコンポジット・アプリケーションがデプロイされたOracle WebLogic管理サーバーへのアプリケーション・サーバー接続を表示します。
アプリケーション・サーバー接続を展開します。
「SOA」フォルダを展開します。図2-21に詳細を示します。
コンポジット・サービスを選択します。
「OK」をクリックします。
SOAコンポジット・アプリケーションを作成してデプロイした後は、Oracle JDeveloperとOracle Enterprise Manager Fusion Middleware Controlを組み合せて使用して、そのSOAコンポジット・アプリケーションを管理およびテストします。
Oracle JDeveloperの「アプリケーション・サーバー・ナビゲータ」から、デプロイ済のSOAコンポジット・アプリケーションを管理できます。管理タスクは、SOAコンポジット・アプリケーションの各リビジョンのアンデプロイ、アクティブ化、リタイア、開始および停止で構成されます。
注意: ここで説明する手順は、SOAインフラストラクチャがデプロイされたOracle WebLogic管理サーバーへのアプリケーション・サーバー接続が作成済であることを前提にしています。Oracle WebLogic管理サーバーへの接続を作成すると、管理対象およびクラスタ化されたOracle WebLogic Serverを同じドメインで参照できます。「ファイル」メイン・メニューから、「新規」→「接続」→「アプリケーション・サーバー接続」の順に選択して、接続を作成します。 |
「表示」メイン・メニューから、「アプリケーション・サーバー・ナビゲータ」を選択します。
接続名を展開します(この例では「MyAppServerConnection」)。
図2-22に示すように、「SOA」フォルダが表示されます。「SOA」フォルダには、デプロイ済のSOAコンポジット・アプリケーションのリビジョンとサービスがすべて表示されます。これにより、すべてのOracle WebLogic管理サーバー、管理対象のOracle WebLogic Serverおよびクラスタ化されたOracle WebLogic Serverにデプロイされたすべてのアプリケーションを同じドメインで参照できます。図2-22に詳細を示します。
「SOA」フォルダを展開します。
コンポジット・アプリケーションがデプロイされたパーティションを展開します。
図2-23に示すように、デプロイ済のSOAコンポジット・アプリケーションとサービスが表示されます。
デプロイ済のSOAコンポジット・アプリケーションを右クリックします。
実行するオプションを選択します。選択項目として表示されるオプションは、アプリケーションの現在の状態に基づいています。表2-11に詳細を示します。
表2-11 SOAコンポジット・アプリケーションのオプション
デプロイメント・プロファイルを含むビルトインのSOAコンポジット・アプリケーション・アーカイブをデプロイする場合は、「SOA」フォルダを右クリックし、「SOAアーカイブのデプロイ」を選択します。アーカイブは、単一アプリケーションのJARファイル、または複数のアプリケーションを含むSOAバンドルZIPファイルで構成されます。
次を選択するように求めるプロンプトが表示されます。
SOAコンポジット・アプリケーションのアーカイブをデプロイするターゲットSOAサーバー。
デプロイするアーカイブ。
アプリケーションに添付する構成プラン。通常、プロジェクトをある環境から別の環境に(たとえば、テスト環境から本番環境に)移動する場合は、JDBC接続文字列や様々なサーバーのホスト名など、環境固有の値をいくつか変更する必要があります。これらの値は、構成プランと呼ばれる単一のテキスト(XML)ファイルを使用して変更できます。構成プランは、Oracle JDeveloperまたはコマンドラインから作成します。プロセスのデプロイメント時に、構成プランを使用してSOAプロジェクトを検索し、プロジェクトを次に進むターゲット環境に適応させるために置換する必要がある値を検索します。これはオプションです。
同じリビジョンIDを持つ既存のコンポジットを上書きするかどうか。これにより、アプリケーションのリビジョンを再デプロイできます。
詳細は、次のドキュメントを参照してください。
デプロイメント・プロファイルおよび構成プランの作成方法、および既存のSOAアーカイブのデプロイ方法の詳細は第41章「SOAコンポジット・アプリケーションのデプロイ」
デプロイされたSOAコンポジット・アプリケーションをOracle Enterprise Manager Fusion Middleware Controlコンソールから管理する方法の詳細は『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』
SOAコンポジット・アプリケーションをデプロイした後は、Fusion Middleware Controlの「Webサービスのテスト」ページからテスト・インスタンスを開始して、XMLペイロード・データを検証できます。テスト・インスタンスの開始方法の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
テスト・インスタンスの作成に加えて、本番環境へのデプロイメントの前に、SOAコンポジット・アプリケーションとWebサービス・パートナ間の相互作用をシミュレートできます。これにより、本番環境へのデプロイメント準備が完了するまでに、プロセスとWebサービス・パートナの相互作用が期待どおりであるかを確認できます。ユニット・テストの作成方法の詳細は、第42章「SOAコンポジット・アプリケーションのテストの自動化」を参照してください。