Integration コントロールを使用する

     前  次    目次     
ここから内容

サービス ブローカ コントロール

サービス ブローカ コントロール プロパティ

注意 : サービス ブローカ コントロールは、WebLogic Integration の使用許諾を受けた場合にのみ、BEA Workshop for WebLogic Platform で使用できます。

サービス ブローカ コントロールを使用すると、ビジネス プロセスでは、他のビジネス プロセス、Web サービス、または WSDL ファイルで定義されているビジネス プロセスへ要求を送信したり、コールバックを受信したりできます。

サービス ブローカ コントロールでは、コントロールの属性を動的に設定できます。したがって、アプリケーションを再デプロイせずにコントロール属性を再コンフィグレーションできます。

コントロール インスタンスをビジネス プロセスに追加する方法については、「ビジネス プロセスでコントロールを使用する」を参照してください。

 


この節に含まれるトピック

概要 : サービス ブローカ コントロール

サービス ブローカ コントロールの目的について説明します。

新しいサービス ブローカ コントロールを作成する

コントロール ウィザードを使用して、またはビジネス プロセスや Web サービスからコントロールを自動的に生成して、新しいサービス ブローカ コントロールを作成する方法について説明します。

サービス ブローカのプロパティを設定する

サービス ブローカ コントロールのプロパティの設定方法について説明します。

サービス ブローカ コントロールの設計時の考慮事項

サービス ブローカ コントロールを設計するときに考慮する必要のある問題について説明します。

サービス ブローカ コントロールの実行時の考慮事項

実行時にサービス ブローカ コントロールの処理に影響を与える問題について説明します。

サービス ブローカ コントロールを管理する

サービス ブローカ コントロールの管理に関する問題を示します。

動的バインディングを使用する

コントロール属性を動的に設定する方法について説明します。

サービス ブローカ コントロールのアノテーションに関する注意

サービス ブローカ コントロールの動的なセレクタを編集およびテストする方法について説明します。

サービス ブローカ コントロールのアノテーションに関する注意

サービス ブローカ コントロールで使用する際に特定のルールに従う必要のあるアノテーションについて説明します。

概要 : サービス ブローカ コントロール

サービス ブローカ コントロールを使用すると、ビジネス プロセスでは、別のビジネス プロセス、Web サービス、またはリモートの Web サービスやビジネス プロセスとの間で、要求を送信したりコールバックを受信したりできます。サービス ブローカ コントロールは Web サービス コントロールの拡張機能です。

リモートの Web サービスまたはビジネス プロセスは、Web サービスを使用してアクセスされ、WSDL (Web Services Description Language) ファイルに記述されます。WSDL ファイルには、Web サービスが実装するメソッドとコールバックを、メソッド名、パラメータ、および戻り値の型を含めて記述します。[パッケージ・エクスプローラー] ペインの Process.java ファイルを右クリックし、[WSDL ファイルの生成] を選択することによって、任意のビジネス プロセスについて WSDL ファイルを生成することができます。

サービス ブローカ コントロールを使用する最初の手順は、コントロール ファイルを作成することです。コントロール ファイルは BEA Workshop for WebLogic Platform を使用して対象のサービス (Web サービス、ビジネス プロセス、または WSDL ファイル) から自動的に生成できます。また、BEA Workshop for WebLogic Platform の [データ パレット] の [コントロール] セクションの [追加] 機能を使用して作成することもできます。コントロール のメソッドとコールバックは、対象のサービスのオペレーションとコールバックに対応しています。この コントロール ファイル のインスタンスは対象のサービスを呼び出すために親サービスで使用されます。また、対象のサービスからコールバックを取得するためにも使用されます。サービス ブローカ コントロール ファイルでは、対象のサービスがステートフルな場合は、開始メソッドに対してのみセレクタのアノテーションを設定できます。一方、対象のサービスがステートレスな場合は、どのメソッドに対してもセレクタのアノテーションを設定できます。

注意 : 親プロセスと対象プロセスの両方を、同じプロトコルを使用するようにコンフィグレーションする必要があります。プロトコルの照合と有効化は自動的には処理されません。

サービス ブローカ コントロールの作成方法については、「新しいサービス ブローカ コントロールを作成する」を参照してください。サービス ブローカ コントロールのメソッドの詳細については、ServiceBrokerControl インタフェースを参照してください。

新しいサービス ブローカ コントロールを作成する

ここでは、新しいサービス ブローカ コントロールを作成する方法について説明します。サービス ブローカ コントロールについては、「概要 : サービス ブローカ コントロール」を参照してください。

サービス ブローカ コントロールは、以下の節で説明する 2 とおりの方法で作成できます。

コントロール ウィザードを使用して新しいサービス ブローカ コントロールを作成する

新しいサービス ブローカ コントロールを作成して Web サービスまたはビジネス プロセスに追加するには、[Insert Control: サービス ブローカ] ダイアログを使用します。

注意 : ビジネス プロセス (Process.java) を参照するサービス ブローカ コントロールを作成する場合、そのビジネス プロセスは現在の BEA Workshop for WebLogic Platform アプリケーション内になければなりません。
注意 : デザイン ビューが表示されていない場合は、[デザイン ビュー] タブをクリックします。

新しいサービス ブローカ コントロールを作成するには

  1. [パッケージ・エクスプローラー] ペインで、サービス コントロールを追加するビジネス プロセスをダブルクリックします。ビジネス プロセスがデザイン ビューに表示されます。
  2. データ パレットService Broker Control Properties をクリックし、ドロップダウン リストから Integration コントロールを選択して、アプリケーションの統合に使用するコントロールのリストを表示します。
注意 : [データ パレット] ビューが BEA Workshop for WebLogic Platform に表示されない場合は、メニュー バーArrow symbol[ウィンドウArrow symbolビューの表示Arrow symbolデータ パレット] をクリックします。
  1. サービス ブローカ を選択します。
  2. [Insert Control: サービス ブローカ] ダイアログが表示されます。

  3. [Insert control: ServiceBroker] ダイアログ ボックスで、以下の情報を入力します。
    • [フィールド名] に、ビジネス プロセスから新しいサービス ブローカ コントロール インスタンスにアクセスするときに使用する変数の名前を入力します。有効な Java 識別子を入力する必要があります。
    • [挿入位置] で、フィールド名をプロセス ファイルに挿入するポイントをドロップダウン リストから選択します。
    • これをコントロール ファクトリにするかどうかを決定し、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェック ボックスをチェックするか、チェックをはずします。コントロール ファクトリの詳細については、「コントロール ファクトリ : コントロールをまとめて管理する」を参照してください。
    • [次へ] をクリックします。
    • [コントロールの作成] ウィザードが表示されます。

  4. [コントロールの作成] ウィザードで、以下の情報を入力します。
    • [名前] フィールドに新しいコントロール拡張ファイルの名前を入力します。
    • 現在のプロジェクトのプロパティに設定されているようにコメントを追加するかどうかを決定し、[コメントの生成] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [Insert control: サービス ブローカ] ダイアログ ボックスが表示されます。

  5. [Insert control: サービス ブローカ] ダイアログ ボックスで、以下の情報を入力します。
    • [プロセスまたは WSDL] フィールドで、ビジネス プロセス ファイルの名前をクリックしてアクセスするビジネス プロセスを選択します。[参照] をクリックしてリストから選択し、[OK] をクリックします。
    • [開始メソッド] メニューから開始メソッドを選択します。指定したビジネス プロセスに含まれている開始メソッドだけが表示されます。
    • 動的なセレクタを指定するには、[クエリ] フィールドにクエリを入力するか、[クエリ ビルダ] ボタンをクリックして動的なセレクタ クエリ ビルダを表示します。
    • 動的なセレクタ クエリ ビルダを起動した場合は、以下の手順を実行して、クエリを構築してテストします。

      • [LookupControl] または [TPM] ラジオ ボタンを選択して、クエリのルックアップ関数のタイプを選択します。TPM リポジトリ内のプロパティにルックアップ値をバインドするには、[TPM] を選択します。ドメイン全体の DynamicProperties.xml ファイルで指定した動的プロパティにルックアップ値をバインドするには、[LookupControl] を選択します。ドメインがアクティブでない場合にだけ、DynamicProperties.xml ファイルを編集してルックアップ値を動的プロパティにバインドしてください。ドメインがアクティブな場合は、WebLogic Integration Administration Console を使用してルックアップ値をバインドすることをお勧めします。
      • WebLogic Integration Administration Console を使用してルックアップ値を動的プロパティにバインドする方法の詳細については、『WebLogic Integration Administration Console の使用』の「プロセス コンフィグレーション」(下記 URL) にある「動的コントロール セレクタの追加または変更」を参照してください。

        http://edocs.beasys.co.jp/e-docs/wli/docs92/adminhelp/processconfig.html

      • [開始メソッドのスキーマ] 領域で、コントロールの開始メソッドに関連付ける要素を選択します。XML 要素だけが表示されます。非 XML 要素はサポートされません。生成されたクエリが [XQuery] 領域に表示されます。
      • [作成] をクリックします。
  6. [終了] をクリックします。
  7. サービス ブローカ コントロールが作成され、[パッケージ・エクスプローラー] ペインに表示されます。コントロールのインスタンスも作成され、データ パレットに追加されます。

ビジネス プロセスからサービス ブローカ コントロールを作成する

既存のビジネス プロセスからサービス ブローカ コントロールを作成できます。

  1. [パッケージ・エクスプローラー] ペインのビジネス プロセスを右クリックし、[生成Arrow symbolサービス ブローカ コントロール] を選択します。
  2. [動的なセレクタの生成 (省略可能)] ダイアログが表示されます (図 13-1 を参照)。

    図 13-1 動的なセレクタの生成


    動的なセレクタの生成

  3. [開始メソッド] メニューから開始メソッドを選択します。指定したビジネス プロセスに含まれている開始メソッドだけが表示されます。
  4. 動的なセレクタを指定するには、[クエリ] フィールドにクエリを入力するか、[クエリ ビルダ] ボタンをクリックして動的なセレクタ クエリ ビルダを表示します (図 13-2 を参照)。
  5. 図 13-2 動的セレクタ


    動的セレクタ

    動的なセレクタ クエリ ビルダを起動した場合は、以下の手順を実行して、クエリを構築してテストします。

    1. [LookupControl] または [TPM] ラジオ ボタンを選択して、クエリのルックアップ関数のタイプを選択します。TPM リポジトリ内のプロパティにルックアップ値をバインドするには、[TPM] を選択します。ドメイン全体の DynamicProperties.xml ファイルで指定した動的プロパティにルックアップ値をバインドするには、[LookupControl] を選択します。ドメインがアクティブでない場合にだけ、LookupControl を使用してルックアップ値を動的プロパティにバインドしてください。ドメインがアクティブな場合は、WebLogic Integration Administration Console を使用してルックアップ値をバインドすることをお勧めします。
    2. WebLogic Integration Administration Console を使用してルックアップ値を動的プロパティにバインドする方法の詳細については、『WebLogic Integration Administration Console の使用』の「プロセス コンフィグレーション」(下記 URL) にある「動的コントロール セレクタの追加または変更」を参照してください。

      http://edocs.beasys.co.jp/e-docs/wli/docs92/adminhelp/processconfig.html

    3. [開始メソッドのスキーマ] 領域で、コントロールの開始メソッドに関連付ける要素を選択します。生成されたクエリが [XQuery] 領域に表示されます。
    4. [OK] をクリックします。
  6. 選択した ビジネス プロセス ファイルの下にインデントされて、新しい コントロール ファイルが作成されます。サービス ブローカ コントロール ファイルの名前には、サービス コントロールと区別しやすいように、SBControl というプレフィックスが付けられます。たとえば、関連付けられた ビジネス プロセス ファイルが MyProcess.java である場合、生成されるサービス ブローカ コントロール ファイルの名前は MyProcessSBControl.java になります。
注意 : 代わりに、サービス ブローカ コントロール ファイルを手動で作成することもできます。たとえば、既存のサービス ブローカ コントロール ファイルをコピーしてから変更することができます。

XQuery についての注意

XQuery 式および XQuery Builder を使用する場合には、以下の事項に注意することが重要です。

サービス ブローカのプロパティを設定する

サービス ブローカ コントロールには、コントロールの一部のプロパティを動的にバインドする機能もあります。プロパティの動的バインディングは以下の方法で行うことができます。

現在のプロパティ設定を取得するには、getProperties() メソッドを使用します。このメソッドは、username/passwordkeyAlias/keyPassword、および keyStoreLocation/keyStorePassword のようなセキュリティ関連の設定を返さないことに注意してください。

優先順位の最も高いメソッドから開始するプロパティ設定の階層は以下のとおりです。

  1. com.bea.wli.common.control.Selector アノテーションと DynamicProperties.xml ファイルを使用して動的にバインドされるプロパティ
  2. setProperties() メソッドまたはサービス コントロールから継承される他のセッター メソッド (setConversationIDsetEndPointsetOutputHeaderssetPassword、および setUsername) を使用して設定されるプロパティ
  3. 静的なアノテーションを使用して設定されるプロパティ

ServiceBrokerControlProperties タイプは、DynamicProperties.xsd で定義された対応するスキーマ要素から生成される XML Beans クラスです。DynamicProperties.xsd ファイルは、新しいプロセス アプリケーションのシステム フォルダ内、またはスキーマ プロジェクトのシステム フォルダ内にあります。

注意 : ServiceBrokerControlProperties ドキュメントの password フィールドと関連する setPassword() メソッドでは、実際のパスワードではなく、パスワードのエイリアスを指定してください。

setProperties() メソッドは、この XML Bean クラスを使用してコントロール インスタンスのプロパティを設定します。サービス ブローカ コントロール メソッド上のセレクタは、ServiceBrokerControlProperties 要素に準拠する XML ドキュメントを返します。以下のサンプルでは、コントロールのエンドポイント プロパティをプログラム的に設定する方法を示しています。コントロールの作成時に生成されたコードに太字のコード行を追加し、動的バインディングと静的アノテーションを使用して設定されるプロパティをオーバーライドします。

import com.bea.wli.control.dynamicProperties.
ServiceBrokerControlPropertiesDocument;
import com.bea.wli.control.dynamicProperties.
ServiceBrokerControlPropertiesDocument.ServiceBrokerControlProperties;
    ServiceBrokerControlPropertiesDocument props= null;
ServiceBrokerControlProperties sprops = null;
    public void sBC8InvokeSetProperties() throws Exception
    {
        props = ServiceBrokerControlPropertiesDocument.Factory.newInstance();
sprops = props.addNewServiceBrokerControlProperties();
        sprops.setEndpoint("http://localhost:7001/BVTAppWeb/ServiceBrokerControl
/SBC8DynPropHierarchyChild_2.jpd");

上記のコードにある ServiceBrokerControlPropertiesDocument インスタンスは、データ トランスフォーメーション メソッドまたは XML Bean API から作成します。データ トランスフォーメーションの詳細については、データ トランスフォーメーション ガイドを、XML Bean の詳細については「XML Beans で XML を処理する」の「XML Beans 入門」を参照してください。

以下のコードは、ServiceBrokerControlPropertiesDocument インスタンスのサンプルです。

this.sbcp = ServiceBrokerControlPropertiesDocument.Factory.newInstance();
this.sbcp.addNewServiceBrokerControlProperties();
this.sbcp.getServiceBrokerControlProperties().setEndpoint("http://localhost:7001/");

一部のコントロール プロパティは、動的に指定したり、コントロール ファイルのアノテーションで静的に指定したりできます。たとえば、サービス ブローカ コントロールでは、コントロール ファイルの先頭にある @com.bea.wli.common.control.Location アノテーションで対象のサービスの http-url を指定したり、DynamicProperties.xml の endpoint 要素を使用して動的に指定したりできます。いずれの場合でも、プロパティに対して動的にバインドされた値が、静的アノテーションよりも優先されます。

ドメインがアクティブな場合は、WebLogic Integration Administration Console を使用して動的にバインドすることをお勧めします。WebLogic Integration trationsole を使用してルックアップ値を動的プロパティにバインドする方法の詳細については、『WebLogic Integration Administration Console の使用』の「プロセス コンフィグレーション」(下記 URL) にある「動的コントロール セレクタの追加または変更」を参照してください。

http://edocs.beasys.co.jp/e-docs/wli/docs92/adminhelp/processconfig.html

動的なプロパティは、コントロールの setProperties またはセッター メソッドの 1 つ (ServiceBrokerControl.setEndPoint() など) を呼び出して指定することもできます。この方法で指定したプロパティは、セレクタまたはアノテーションによってバインドされたプロパティよりも優先されます。

セレクタを使用して適用されたプロパティは、以下の条件のいずれかに一致するまで、バインドされたままになります。

ServiceControl.reset() は、動的に設定されたすべてのプロパティ (およびすべての対話状態) をリセットするために、サービス ブローカ コントロールによって上書きされます。プログラム的に指定されたプロパティは、reset() が呼び出されるまでバインドされたままになります。

ControlContext インタフェースを使用して、実行時にコントロールのプロパティにアクセスしたり、コントロール イベントを処理したりすることができます。コントロールを使用する開発者によって設定されたプロパティ値は、JWS、JSP、または Process.Java ファイルでコントロールの宣言のアノテーションとして、または コントロール ファイルでインタフェース宣言、コールバック宣言、またはメソッド宣言のアノテーションとして格納されます。

関連トピック

概要 : サービス ブローカ コントロール

動的バインディングを使用する

サービス ブローカ コントロールの設計時の考慮事項

この節では、ビジネス プロセスのサービス ブローカ コントロールを設計するときに考慮する必要のある問題について説明します。この節では、次のトピックについて説明します。

ステートレスおよびステートフルのビジネス プロセスでサービス ブローカ コントロールを使用する

ビジネス プロセスに含まれているトランザクションの数によって、プロセスがステートレスかステートフルかが決まります。詳細については、「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。この節では、ステートレスおよびステートフルのビジネス プロセスのサービス ブローカ コントロールを設計するときに考慮する必要のある問題について説明します。

サービス ブローカ コントロールを設計するときには、以下のルールに従います。

同期および非同期のビジネス プロセスでサービス ブローカ コントロールを使用する

ビジネス プロセスには、同期要求メソッドと非同期要求メソッドの両方を設定できます。詳細については、「同期/非同期のビジネス プロセスの構築」を参照してください。この節では、同期および非同期のビジネス プロセスのサービス ブローカ コントロールを設計するときに考慮する必要のある問題について説明します。

サービス ブローカ コントロールを設計するときには、以下の事項を考慮します。

親プロセスからサービス ブローカ コントロールを使用する

通常、サービス ブローカ コントロールは親ビジネス プロセスからサブプロセスを呼び出す際に使用します。サブプロセスが同じドメインにある場合は、親プロセスからサービス ブローカ コントロールを呼び出すと、コントロールが通常どおり呼び出されます。

親プロセスとサブプロセスが別々のドメインにあるか、同じドメインでも別々のアプリケーションにあって、サービス ブローカ コントロールを使用して親プロセスにサブプロセスとやり取りさせる場合は、サービス ブローカ コントロールをサブプロセスのドメインまたはアプリケーションに作成し、そのコントロールを親プロセスのドメインまたはアプリケーションに手動でコピーしてから、既存の コントロール ファイルとして参照する必要があります。

さらに、親プロセスとサブプロセスが別々のアプリケーションにある場合には、location 属性の JMS と HTTP のいずれかまたは両方の場所を手動で変更する必要があります。

サービス ブローカ コントロールの場所

サービス ブローカ コントロールを作成すると [パッケージ・エクスプローラー] ペインに表示され、コントロールのインスタンスが [データ パレット] に追加されます。[プロパティー] ペインにサービス ブローカ コントロールの場所が表示されます。

注意 : [プロパティー] ペインが BEA Workshop for WebLogic Platform に表示されない場合は、メニュー バーArrow symbol[ウィンドウArrow symbolビューの表示Arrow symbolプロパティー] を選択します。

サービス ブローカ コントロールの場所を表示するには

  1. [パッケージ・エクスプローラー] ペインのサービス ブローカ コントロール ファイルをダブルクリックします。
  2. サービス ブローカ コントロールがデザイン ビューに表示され、[プロパティー] ペインにはサービス ブローカ コントロールのプロパティが表示されます (サービス ブローカ コントロール プロパティ を参照)。

    図 13-3 サービス ブローカ コントロール プロパティ


    サービス ブローカ コントロール プロパティ

    [プロパティー] ペインの [location] セクションに、サービス ブローカ コントロールの場所が表示されます。[location] には、HTTP 属性と JMS 属性のいずれかまたは両方を指定できます。HTTP の場所には実際の HTTP アドレス、JMS の場所には JMS の url を指定します。

サービス ブローカ コントロールの実行時の考慮事項

この節では、ビジネス プロセスでサービス ブローカ コントロールを呼び出すときに考慮する必要のある実行時の問題について説明します。

この節では、次のトピックについて説明します。

ステートレスおよびステートフルのビジネス プロセスにおけるサービス ブローカ コントロールの実行時のルール

ビジネス プロセスに含まれているトランザクションの数によって、プロセスがステートレスかステートフルかが決まります。詳細については、「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。この節では、ステートレスおよびステートフルのビジネス プロセスでサービス ブローカ コントロールを使用する際に考慮する必要のある実行時の問題について説明します。

以下のルールは、ステートレスおよびステートフルのビジネス プロセスにおける、サービス ブローカ コントロールの実行時の処理を規定するものです。

同期および非同期のビジネス プロセスにおけるサービス ブローカ コントロールの実行時のルール

ビジネス プロセスには、同期要求メソッドと非同期要求メソッドの両方を設定できます。詳細については、「同期/非同期のビジネス プロセスの構築」を参照してください。この節では、同期および非同期のビジネス プロセスでサービス ブローカ コントロールを使用する際に考慮する必要のある実行時の問題について説明します。

以下のルールは、同期および非同期のビジネス プロセスにおける、サービス ブローカ コントロールの実行時の処理を規定するものです。

セキュリティ

サービス ブローカ コントロールは、JMS と WSDL に関連する標準のセキュリティ チェックにすべて準拠しています。SSI はサポートされません。セキュリティの詳細については、「WebLogic Workshop のセキュリティの概要」を参照してください。

サービス ブローカ コントロールにセキュリティの設定をコンフィグレーションする場合には、プロセス上に設定するのではなく WebLogic Integration Administration Console を使用して設定をコンフィグレーションすることをお勧めします。詳細については、http://edocs.beasys.co.jp/e-docs/wli/docs92/adminhelp/processconfig.html にある『WebLogic Integration Administration Consoleの使用』の「プロセス コンフィグレーション」の「セキュリティ ポリシーの更新」を参照してください。

サービス ブローカ コントロールを管理する

通常、サービス ブローカ コントロールは、親プロセスとサブプロセスが同じアプリケーションにある場合、または親プロセスとサブプロセスが別々のアプリケーションにある場合に使用されます。

いずれの場合でも、サービス ブローカ コントロールがトランザクションのサブプロセス側で変更された場合は、親プロセス側でコントロールを再生成して、コントロールが正常に動作するようにする必要があります。サブプロセスと親プロセスが別々のアプリケーションにある場合、サービス ブローカ コントロールが何らかの方法 (要求/応答の削除など) で変更されると、下位互換性が失われる可能性があります。この状況が発生した場合は、サブプロセス側でサービス ブローカ コントロールを結合して、コントロールを親ビジネス プロセスに伝播し直す必要があります。

注意 : サービス コントロールと同様に、サービス ブローカ コントロールは SOAP エラーが発生した場合に ServiceControlException クラスを送出できます。この SOAP エラーにアクセスするには、JPD の JpdContext.ExceptionInfo インタフェースを使用して、その原因が ServiceControlException かどうかを確認します。ServiceControlException クラスの詳細については、com.bea.control パッケージにある ServiceControlException クラスの説明を参照してください。JpdContext.ExceptionInfo インタフェースの詳細については、「com.bea.jpd Package」にある JpdContext.ExceptionInfo インタフェースの説明を参照してください。

動的バインディングを使用する

多くの場合、コントロール属性はアノテーションを使用して静的に定義されます。一部のコントロールは、特定の属性を動的に変更する Java API を備えています。サービス ブローカ コントロールやプロセス コントロールなどの動的コントロールは、コントロール属性を動的に設定する機能を備えています。属性は、ルックアップ ルールとルックアップ値の組み合わせを使用して、実行時に決定されます。このプロセスを「動的バインディング」と呼びます。動的バインディングをサポートするコントロールを「動的コントロール」と呼びます。ビジネス プロセスの開発者は WebLogic Workshop を使用してルックアップ ルールを指定し、管理者は WebLogic Integration Administration Console を使用してルックアップ値を指定します。この機能によって、コントロール属性をアプリケーションから完全に分離し、再デプロイすることなしに、実行中のアプリケーション用に再コンフィグレーションすることができます。

 


サービス ブローカ コントロールによる動的バインディングの使われ方

以下のシナリオでは、サービス ブローカ コントロールによる動的バインディングの使われ方を示します。POService.jpd は、特定の商品に関する見積もりを取得するために、外部サービスを呼び出す必要があります。複数のベンダがこのサービスを提供しています。管理者は、POService.jpd を変更したり再デプロイしたりせずに、外部サービスの複数の実装にアクセスできなければなりません。

動的バインディングで使用されるコンポーネント

このトピックでは、サービス ブローカ コントロールを使用して、見積もりサービスへの動的バインディングを提供する機能について説明します。

@jc:selector タグ

メソッドレベルのアノテーション @jc:selector を使用すると、コントロールの特定のプロパティを動的に定義できます。次の例に示すように、セレクタには xquery という属性が 1 つあります。この属性は XQuery 式です。

    /** 
* @jc:conversation phase="start"
* @jc:selector xquery ::
* lookupControlProperties($request/vendorID) ::
*/
public void requestQuote(PurchaseRequest request);

セレクタの XQuery 式の値は、コントロール プロパティの値を含む XML ドキュメントとスキーマです。TPM リポジトリにアクセスしている場合、XQuery 式は以下のように表示されます。

    /** 
* @com.bea.wli.common.Conversion(value = com.bea.wli.common.Conversation.Phase.START)
* @com.bea.wli.common.control.Selector( xquery= "lookupControlProperties($request/vendorID)")
* public void requestQuote(PurchaseRequest request);

コントロールのメソッドを呼び出すと、システムはセレクタ アノテーションを検索します。セレクタ アノテーションがある場合、XQuery 式が評価されて、Java の呼び出しの引数が XQuery 式の引数にバインドされます。XQuery 式の結果は、コントロールの動的プロパティを定義する String 値です。

組み込み XQuery 関数

セレクタ式を記述するために、2 つのタイプの XQuery 関数 lookupControlProperties および lookupTPMProperties が提供されています。lookupControlProperties 関数は、ドメイン全体の DynamicProperties.xml ファイルで指定された動的プロパティの値をルックアップします。lookupTPMProperties 関数は、TPM (トレーディング パートナ管理) リポジトリ内のプロパティの値をルックアップします。

TPM リポジトリについては、『Trading Partner Integration の紹介』 (http://edocs.beasys.co.jp/e-docs/wli/docs92/tpintro/index.html) を参照してください。TPM リポジトリへの情報の追加または TPM リポジトリ内の情報の更新については、『WebLogic Integration Administration Console』の使用の「トレーディング パートナ管理」 (http://edocs.beasys.co.jp/e-docs/wli/docs92/adminhelp/tpm.html) を参照してください。TPM コントロールは、WebLogic Workshop ビジネス プロセスと Web サービスに、トレーディング パートナへのクエリ (読み取り専用) アクセス、および TPM リポジトリに格納されたサービス情報を提供します。TPM コントロールについては、「TPM コントロール」を参照してください。

セレクタ式で lookupControlProperties 関数を使用する場合、DynamicProperties.xml ファイルへのルックアップ キーとして、コントロールの完全修飾クラス名とセレクタの評価結果が使用されます。一致が見つかると、対象のサービスを呼び出す前に動的プロパティが適用されます。

DynamicProperties.xml ファイル

DynamicProperties.xml は WebLogic Integration Administration Console から管理される XML ファイルです。メッセージ ペイロード (ルックアップ キー) の値と対応するコントロール プロパティの値のマッピングが含まれています。ドメイン内のすべての WebLogic Integration アプリケーションで共有されるドメイン全体のファイルです。このファイルを使用すると、アプリケーションを再デプロイせずに動的プロパティを管理できます。このファイルは、ドメインのルートのサブディレクトリ (wliconfig) に格納されています。動的なセレクタの管理については、http://edocs.bea.com/wli/docs81/manage/processconfig.html にある 『WebLogic Integration Administration Console の使用』の「プロセス コンフィグレーション」を参照してください。

DynamicProperties.xml には、動的なコントロールの各 コントロール ファイルに対して <control> 要素のシーケンスが 1 つずつ含まれています。各 <control> 要素には name 属性があり、その値は コントロール ファイルの完全修飾 Java クラス名です。<control> 要素には、<key> 要素のシーケンスがネストされています。この要素では、呼び出し側のセレクタ内の lookupControlProperties に渡されたパラメータの値と一致する文字列値を動的なプロパティにマップします。以下に例を示します。

<DynamicProperties
xmlns="http://www.bea.com/wli/control/dynamicProperties">
  <control name context-path="/sbcAppWeb"
controlType="ServiceBrokerControl">
<key value="QuoteCom">
<ServiceBrokerControlProperties>
<endpoint>http://www.quotecom.com/quotes/QuoteService</endpoint>
</ServiceBrokerControlProperties>
</key>
    <key value="WebQuote">
<ServiceBrokerControlProperties>
<endpoint>http://www.webquote.com/quoteEngine/getQuote</endpoint>
</ServiceBrokerControlProperties>
</key>
</control context-path>
  <control name context-path="quote.InternalQuote"
controlType="ProcessControl">
<key value="OurQuote">
<ProcessControlProperties>
<targetURI>http://acme/myApp/PublicProcess.jpd</targetURI>
</ProcessControlProperties>
</key>
</control context-path>
</DynamicProperties>

WebLogic Integration Administration Console を使用すると、管理者は DynamicProperties.xml ファイルのエントリを表示したり編集したりできます。

見積もり処理の例

この節では、動的なコントロールとセレクタが、見積もり処理のシナリオの実装にどのように役立つかを示します。次の図は、動的バインディングに参加するコンポーネントを示しています。

サービス ブローカ コントロール プロパティ

対象のサービスへ必要な動的バインディングを行うために、POService.jpd で定義されたビジネス プロセスは、サービス ブローカ コントロール (POService.jpd) を使用して見積もりサービスを呼び出します。対象は動的に指定されるため、@jc:location タグは使用されません。サービス ブローカ コントロールは以下の コントロール ファイルで定義されます。

import com.bea.control.ServiceBrokerControl;
import com.bea.control.ControlExtension;
import org.applications.PurchaseRequest;
import org.applications.PurchaseReply;
public interface QuoteProcessor
extends ServiceBrokerControl, ControlExtension
{
public interface Callback
{
public void infoReady (PurchaseReply reply);
}
    /** 
* @com.bea.wli.common.Conversion(value = com.bea.wli.common.Conversation.Phase.START)"
* @com.bea.wli.common.control.Selector( xquery= "lookupControlProperties($request/vendorID)")
public void requestQuote(PurchaseRequest request
}

実行時に、コントロール コンテナは、コントロールで表されるプロキシを適切な実装にバインドする必要があります。これは、サービス ブローカ コントロール インタフェースの開始メソッドにタグで指定されたセレクタ XQuery 式 (@jc:selector) によって駆動されます。

注意 : ステートレス コンポーネントを表すコントロールの場合は、メソッドごとにセレクタを指定できます。セレクタが指定されていないメソッドについては、アノテーションで定義されたデフォルトの場所が使用されます。セレクタの適用後に対象の場所が解決されない場合は、実行時例外が生成されます。

セレクタはコントロールの動的プロパティを含む XML フラグメントを返します。以下に例を示します。

<ServiceBrokerControlProperties>
<endpoint>
       http://www.quotecom.com/quotes/QuoteService/endpointURI>
</endpoint>
<username>fred</username>
<password>@$%&*</password>
</ServiceBrokerControlProperties>

この例では、セレクタは lookupControlProperties() という標準の XQuery 関数を使用しています。この関数は、渡されたキーに基づいて、DynamicProperties.xml ファイルからコントロール プロパティをルックアップします。この例では、キーはペイロードから抽出されたベンダ ID です。lookupControlProperties() によって返された結果が <ServiceBrokerControlProperties> 要素です。

lookupControlProperties() によって使用されるキーと属性のマッピング情報は、DynamicProperties.xml ファイルに格納されています。動的プロパティ ファイルのスキーマは、動的コントロールで有効なすべての属性を扱うことができます。セレクタは、コントロールの作成時に定義することも、コントロール ソース コードを直接編集して定義することもできます。

管理者は WebLogic Integration Administration Console を使用して、セレクタの値と実装の間のマッピングを定義できます。WebLogic Integration Administration Console を使用すると、管理者は以下のプロパティを指定できます。

サービス ブローカ コントロールのアノテーションに関する注意

この節では、以下のアノテーションに関するサービス ブローカ コントロールの特別な動作について説明します。

@com.bea.wli.common.ParameterXml

@com.bea.wli.common.ParameterXml アノテーションは、指定されたメソッドまたはコールバックについて、コンポーネントの実装コードとメッセージ転送ワイヤの間にキューが必要であることを指定します。詳細については、Java コントロール アノテーションの @com.bea.wli.common.ParameterXml アノテーションを参照してください。

@common:message-buffer アノテーションは、コンポーネントの実装コードと指定のメソッドまたはコールバックのメッセージ転送通信との間にキューがあることを指定します。@common:message-buffer アノテーションは、[プロパティー] ペインの [message-buffer] セクションに表示されます。

@jc:conversation

@jc:conversation アノテーションは、コントロールのメソッドまたはコールバックが会話で担うロールを指定します。詳細については、Java コントロール アノテーションの @jc:conversation アノテーションを参照してください。

サービス ブローカ コントロールを生成するときは、@jc:conversation アノテーションの phase 属性を編集しないでください。@jc:conversation アノテーションは、[プロパティー] ペインの [conversation] セクションに表示されます。

@jc:parameter xml

@jc:parameter-xml アノテーションは、XML メッセージと Web サービス処理のパラメータに指定されたデータ間でデータをマーシャリングするための特性を指定します。詳細については、Java コントロール アノテーション の @jc:parameter-xml アノテーションを参照してください。

サービス ブローカ コントロールを設計するときはこのアノテーションを使用しないことをお勧めします。

@com.bea.wli.common.Protocol

@com.bea.wli.common.Protocol アノテーションは、Web サービス コントロールによって表される Web サービス、またはその Web サービスの処理で受け付けることができるプロトコルおよびメッセージ フォーマットを指定します。詳細については、Java コントロール アノテーションの @com.bea.wli.common.Protocol@com.bea.wli.common.Protocol アノテーションを参照してください。

サービス ブローカ コントロールを使用してプロパティを呼び出す場合、@jc:protocolhttp-xml 属性は使用しないでください。この属性をサービス ブローカ コントロールで使用することはできません。この属性は、[プロパティー] ペインの [protocol] セクションに表示されます。


  ページの先頭       前  次