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

     前  次    目次     
ここから内容

プロセス コントロール

Process.java ファイル

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

プロセス コントロールは、他のビジネス プロセスへの要求の送信、他のビジネス プロセスからのコールバックの受信に使用する。通常、プロセス コントロールは、親プロセスからサブプロセス (子プロセス) を呼び出す際に使用します。

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

 


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

概要 : プロセス コントロール

プロセス コントロールについて説明します。

新しいプロセス コントロールを作成する

新しいプロセス コントロールを作成およびコンフィグレーションする方法について説明します。

プロセス コントロールのメソッド

プロセス コントロールのメソッドを紹介し、プロセス コントロールのプロパティの設定方法について説明します。

プロセス コントロールの設計時の考慮事項

プロセス コントロールの設計時に考慮する必要がある、いくつかの問題について説明します。

プロセス コントロールの実行時の考慮事項

実行時にプロセス コントロールの処理に影響を与える、いくつかの問題について説明します。

プロセス コントロールを管理する

プロセス コントロールの管理に関するいくつかの問題について説明します。

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

プロセス コントロールをカスタマイズする方法について説明します。

プロセス コントロールのアノテーションに関する注意

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

概要 : プロセス コントロール

プロセス コントロールを使用すると、Web サービス、ビジネス プロセス、またはページ フローからビジネス プロセスに要求を送信したり、ビジネス プロセスからのコールバックを受信したりできます。プロセス コントロールの呼び出しは Java Remote Method Invocation (RMI) の呼び出しです。

対象となるビジネス プロセスは、呼び出し側と同じ WebLogic Server ドメイン上にホスティングされる必要があります。通常、プロセス コントロールは、親ビジネス プロセスからサブプロセス (子プロセス) を呼び出す際に使用します。

プロセス コントロールを使用する際には、まず Java ファイルを作成します。コントロールの Java ファイルは、BEA Workshop for WebLogic Platform を使用して対象のビジネス プロセスから自動的に生成することも、コントロール ウィザードを使用して作成することもできます。コントロールの Java ファイルのメソッドとコールバックは、対象のビジネス プロセスのオペレーションとコールバックに対応しています。親プロセスが対象のプロセスを呼び出すときに、この Java ファイルのインスタンスが使用されます。プロセス コントロールの Java ファイルでは、開始メソッドに対してのみ、または任意のメソッドに対して (対象のサービスがステートレスな場合)、セレクタ アノテーションを設定できます。

プロセス コントロールの作成方法については、「新しいプロセス コントロールを作成する」を参照してください。

新しいプロセス コントロールを作成する

ここでは、新しいプロセス コントロールを作成する方法について説明します。

プロセス コントロールは、以下の 2 とおりの方法で作成できます。

コントロール ウィザードを使用して新しいプロセス コントロールを作成する

プロセスの挿入ダイアログ ボックスを使用して、新しいプロセス コントロールを作成し、ビジネス プロセスに追加することができます。デザイン ビューが表示されていない場合は、[デザイン ビュー] タブをクリックします。

新しいプロセス コントロールを作成するには

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

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

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

  8. [Insert control: プロセス] ダイアログ ボックスで、以下の情報を入力します。
    • [プロセス] フィールドで、ビジネス プロセス ファイルの名前をクリックしてアクセスするビジネス プロセスを選択します。[参照] をクリックしてリストから選択し、[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] 領域に表示されます。
      • [作成] をクリックします。
  9. [終了] をクリックします。
  10. プロセス コントロールが作成され、[パッケージ・エクスプローラー] ペインに表示されます。コントロールのインスタンスも作成され、データ パレットに追加されます。

    詳細については、『チュートリアル : 初めてのビジネス プロセス構築』の「手順 6 : プロセス コントロールを使用してビジネス プロセスを呼び出す」を参照してください。

プロセス ファイルからプロセス コントロールを生成する

既存の Process.java ファイルから新しいプロセス コントロールを作成できます。

注意 : BEA Workshop for WebLogic Platform に [パッケージ・エクスプローラー] ペインが表示されていない場合は、メニュー バーArrow symbol[ウィンドウArrow symbolビューの表示Arrow symbolその他Arrow symbolJavaArrow symbolパッケージ・エクスプローラー] をクリックします。

プロセス ファイルからプロセス コントロールを生成するには

  1. プロセス コントロールを作成するビジネス プロセスが含まれているアプリケーションを開きます。
  2. [パッケージ・エクスプローラー] ペインに、そのプロセスの Process.java ファイルが表示されます (図 11-1 を参照)。
  3. 図 11-1 Process.java ファイル


    Process.java ファイル

  4. プロセス ファイルを右クリックします。
  5. メニューが開き、オプションのリストが表示されます。

  6. [生成Arrow symbolプロセス コントロール] を選択します。
  7. [別名保管] ダイアログ ボックスが表示されます。

  8. 必要な情報を入力し、[OK] をクリックします。
  9. プロセス コントロールが作成され、[パッケージ・エクスプローラー] ペインで JPD ファイルの下に表示されます。Process.java の名前に PControl を付加した名前が生成されます。たとえば、RequestQuote.jpd からプロセス control.java ファイルを生成した場合、生成された Java ファイルの名前は RequestQuotePControl.java になります。

  10. Process.java ファイル

    [パッケージ・エクスプローラー] ペインでプロセス コントロールの Java ファイルをダブルクリックして、コントロールをデザイン ビューに表示します。

プロセス コントロール ファイルを手動で作成することもできます。たとえば、既存のプロセス コントロール ファイルをコピーしてから変更することができます。

XQuery についての注意

XQuery 式および XQuery Builder を使用する場合は、以下の事項に注意してください。

プロセス コントロールのメソッド

プロセス コントロールで使用できるメソッドについては、「Interface ProcessControl」を参照してください。

サンプル : プロセス コントロールの宣言

コントロール ウィザードを使用して新しいプロセス コントロールを作成し、コントロールからビジネス プロセスにメソッドをドラッグすると、その宣言が process.java ファイルに表示されます。以下のコードは宣言の例です。

@org.apache.beehive.controls.api.bean.Control
	private proc2Control proc2Control1;

プロセス コントロールのプロパティを設定する

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

ユーザ名とパスワード以外の現在のプロパティ設定を取得するには、getProperties() メソッドを使用します。

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

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

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

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

import com.bea.wli.control.dynamicProperties.
ProcessControlPropertiesDocument;
import com.bea.wli.control.dynamicProperties.
ProcessControlPropertiesDocument.ProcessControlProperties;
    ProcessControlPropertiesDocument props= null;
ProcessControlProperties sprops = null;
    public void sBC8InvokeSetProperties() throws Exception
    {
        props = ProcessControlPropertiesDocument.Factory.newInstance();
sprops = props.addNewProcessControlProperties();
        sprops.setUsername("smith");

上記のコード内の ProcessControlPropertiesDocument インスタンスは、データ トランスフォーメーション メソッドまたは XMLBean API から作成します。データ トランスフォーメーションの詳細については、データ トランスフォーメーション ガイドを参照してください。

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

this.pcp = ProcessControlPropertiesDocument.Factory.newInstance();
this.pcp.addNewProcessControlProperties();
this.pcp.getProcessControlProperties().setUsername("uname");
this.pcp.getProcessControlProperties().setPassword("pword");
this.pcp.getProcessControlProperties().setTargetURI("http://localhost:7001/";);

一部のコントロール プロパティは、動的に指定したり、コントロール ファイルのアノテーションで静的に指定したりできます。たとえば、プロセス コントロールでは、Java コントロール ファイルの先頭にある @com.bea.wli.common.control.Location(uri = <URL>) アノテーションで対象のプロセスを指定することも、DynamicProperties.xml 内の TargetURI 要素を使用して動的に指定することもできます。いずれの場合でも、プロパティに対して動的にバインドされた値が、静的アノテーションよりも優先されます。

ドメインがアクティブな場合は、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

動的プロパティは、コントロールの setProperties を呼び出すか、セッター メソッドの 1 つ (ProcessControl.setUsername() など) を呼び出して指定することもできます。

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

ProcessControl.reset() では、コンフィグレーションされているすべてのセレクタ値がリセットされます。

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

関連トピック

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

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

Interface ProcessControl

プロセス コントロールの設計時の考慮事項

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

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

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

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

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

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

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

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

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

サブプロセス コントロールが別のアプリケーションにある場合に、通常どおり呼び出せるようにするには、サブプロセス コントロールを親プロセス コントロールにコピーし、親プロセス コントロールの場所と同じになるようにサブプロセス コントロールの場所を変更する必要があります。

プロセス コントロールの場所

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

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

プロセス コントロールの場所を表示するには

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

    プロセス コントロールの場所が、[プロパティー] ペインの [location] セクションの [uri] フィールドに表示されます。この場所は実在する http アドレスのように見えますが、そうではありません。uri が実際に示しているのは、JNDI (Java Naming and Directory Interface) ツリー内のオブジェクトの場所です。

プロセス コントロールの実行時の考慮事項

ここでは、ビジネス プロセスでプロセス コントロールを呼び出すときに考慮する必要がある、実行時のいくつかの問題について説明します。親ビジネス プロセスからプロセス コントロールを呼び出すときには、サブプロセスに対して Java Remote Method Invocation (RMI) が行われます。情報の転送には、シリアライゼーションではなく RMI のルールが適用されます。

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

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

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

ステートレスおよびステートフルのビジネス プロセスにおけるプロセス コントロールの実行時の処理には、以下のルールが適用されます。

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

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

同期および非同期のビジネス プロセスにおけるプロセス コントロールの実行時の処理には、以下のルールが適用されます。

セキュリティ :

プロセス コントロールは、Java Remote Method Invocation (RMI) に関連する標準のセキュリティ チェックにすべて準拠しています。SSI はサポートされません。セキュリティの詳細については、「WebLogic Workshop のセキュリティの概要」を参照してください。

プロセス コントロールを管理する

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

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

JAX-RPC ハンドラ

JPD は JWS のすべての動作を暗黙的に継承しています。このため、JPD に JAX-RPC ハンドラを追加して、要求および応答に送られるメッセージを、要求の前後で「インターセプト」することができます。詳細については、「Web サービスの SOAP ハンドラを指定する」の「JAX-RPC と SOAP ハンドラ」を参照してください。

ただし、これらのハンドラは、プロセス コントロールの実行を介して受信する JPD 要求に対しては実行されません。つまり、プロセス コントロールの呼び出しとの間で送受信される要求に対しては、ハンドラは実行されません。

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

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

動的バインディングの詳細については、「サービス ブローカ コントロールによる動的バインディングの使われ方」を参照してください。

関連トピック

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

プロセス コントロールのアノテーションに関する注意

ここでは、以下のプロセス コントロールのアノテーションを使用する際に従うべきルールについて説明します。

@com.bea.control.annotations.MessageBuffer

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

@com.bea.wli.common.Conversation

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


  ページの先頭       前  次