ナビゲーションをスキップ

Application Integration Design Console の使い方

  前 次 vertical dots separating previous/next from contents/index/pdf 目次  

ビジネス プロセスでのアプリケーション ビューの使用

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

 


始める前に

企業に必要なすべてのアプリケーション ビューのサービスとイベントを作成したら、そのアプリケーション ビューを使用して、ビジネス プロセスを実行できます。その最も簡単な方法は、WebLogic Workshop で、アプリケーション ビューのサービスとイベントを使用するビジネス プロセスを設計する方法です。

WebLogic Workshop には、Web サービスだけでなくビジネス プロセスの設計にも使用できるグラフィカル ユーザ インタフェース (Graphical User Interface : GUI) が用意されています。これらのビジネス プロセスには、Application Integration Design Console で定義したアプリケーション ビューのサービスとイベントを含めることができます。

ビジネス プロセスは、アプリケーション ビュー コントロールを介してアプリケーション ビューと統合されます。アプリケーション ビュー コントロールを使用することで、ビジネス プロセスのエンジニアはアプリケーション ビューの階層を参照したり、サービスをビジネス プロセスのアクションとして呼び出したり、イベントが発生したときに新しいビジネス プロセスを起動することができます。詳細については、次の URL にある WebLogic Workshop ヘルプの「アプリケーション ビュー コントロール」を参照してください。

http://edocs.beasys.co.jp/e-docs/workshop/docs81/doc/ja_JP/integration/controls/controlsAppView.html

ビジネス プロセスでアプリケーション ビューのサービスを呼び出したり、イベントを受け取るには、次の要件が満たされている必要があります。

 


コントロールを使用したアプリケーション ビューとビジネス プロセスの統合

アプリケーション ビュー コントロールを使用すると、WebLogic Integration、WebLogic Workshop、および WebLogic Portal のユーザは、簡単な Java API や XML ドキュメントを使用して、エンタープライズ アプリケーション内の関数を呼び出すことができます。したがって、特定のエンタープライズ システムを使い慣れていないユーザでも、Java プログラマが理解できる方法で、エンタープライズ システムの機能を使用できます。

アプリケーション ビュー コントロールには、ビジネス プロセスの開発者が同期または非同期でアプリケーション ビューのサービスを呼び出すための手段も用意されています。同期サービスは、1 つのパラメータと非 void 戻り値を使った簡単なメソッドとして表し、非同期サービスは、1 つの要求パラメータを使ったメソッド、または 1 つの応答パラメータを使ったコールバック メソッドとして表します。

アプリケーション ビューのイベントは、メッセージ ブローカを介して配信されます。アプリケーション ビューのイベントを受け取るには、メッセージ ブローカ サブスクリプション コントロールまたは静的なサブスクリプション (ビジネス プロセスから受け取る場合のみ) を使用します。イベントを処理する方法については、「イベントの受信」を参照してください。

ビジネス プロセスでアプリケーション ビューを使用するには、次の手順を実行します。

  1. WebLogic Workshop でアプリケーションを定義します。詳細については、WebLogic Workshop ヘルプを参照してください。
  2. WebLogic Integration のアプリケーション統合機能を使用する WebLogic Workshop アプリケーションには、Schemas と明示的に命名されたプロジェクトが存在している必要があります。Schemas プロジェクトは、wlai.channel ファイルとアプリケーション ビューのスキーマ (XML Bean クラスとしてパブリッシュされたもの) の格納に使用されます。アプリケーションに Schemas プロジェクトが存在しない場合は、アプリケーション ビューをパブリッシュする前にこのプロジェクトを作成する必要があります。

  3. ドロップダウン アプリケーション リストを使用して、Application Integration Design Console で WebLogic Workshop のアプリケーションを選択します。詳細については、「手順 2 : アプリケーションの選択」を参照してください。
  4. アプリケーション ビューを定義して、サービスとイベントを追加します。詳細については、「手順 4 : アプリケーション ビューの定義」および「手順 6B : アプリケーション ビューにイベントを追加する」を参照してください。
  5. アプリケーション ビューをテストします。詳細については、「手順 8A : アプリケーション ビューのサービスのテスト」および「手順 8B : アプリケーション ビューのイベントのテスト」を参照してください。
  6. [アプリケーション ビューの概要] ページの [パブリッシュ] ボタンを使用して、アプリケーション ビューをパブリッシュします。これにより、WebLogic Workshop アプリケーションのルートにアプリケーション ビューの EJB が生成されます。詳細については、「手順 9 : アプリケーション ビューのパブリッシュ」を参照してください。
  7. パブリッシュしたアプリケーション ビューの EJB が、WebLogic Workshop アプリケーション ツリーの [モジュール] リストに追加されます。これにより、まずアプリケーション ビューの EJB がデプロイされ、次にアプリケーション ビューがデプロイされます。

    注意 : アプリケーション ビューをパブリッシュすると、WebLogic Workshop アプリケーションにスキーマがパブリッシュされます。アプリケーション ビューをパブリッシュして WebLogic Workshop を開くと、スキーマ プロジェクトが再構築される場合があります。スキーマ プロジェクトの再構築が完了する前にビジネス プロセスを編集すると (開始ノードを定義するなど)、次のようなエラー メッセージが表示される場合があります。

    変数の型が解決できませんでした。原因として、完全修飾された型名が入力されていないことが考えられます。ソースに移動してエラーを訂正してください。

    ビジネス プロセスを編集する前に、スキーマ プロジェクトの再構築が完了していることを確認してください。

  8. [データ パレット] の [追加Integration ControlsApplicationView] オプションを使用して、ビジネス プロセスにアプリケーション ビュー コントロールを追加します。詳細については、次の URL にある WebLogic Workshop ヘルプの「アプリケーション ビュー コントロール」を参照してください。
  9. http://edocs.beasys.co.jp/e-docs/workshop/docs81/doc/ja_JP/integration/controls/controlsAppView.html

  10. ビジネス プロセスをテストします。詳細については、WebLogic Workshop ヘルプを参照してください。

アプリケーション ビュー コントロールを作成するときは、次の要素を指定または選択します。

 


サンプルのアプリケーション ビュー コントロールのファイル

アプリケーション ビュー コントロールのインスタンスは、JCX ファイルとして格納されます。各アプリケーション ビュー コントロールのインスタンスは、基本となるアプリケーション ビュー コントロール インタフェース (com.bea.wlai.control.ApplicationViewControl) を拡張する Java インタフェースです。

アプリケーション ビュー コントロールのインタフェース

次のコードは、基本となるアプリケーション ビュー コントロールのインタフェースを示しています。

コード リスト 3-1 アプリケーション コントロールの基本インタフェース

package com.bea.wlai.control;

import com.bea.control.XMLControl;
import com.bea.control.Extensible;
import com.bea.xml.XmlObject;

/**
* アプリケーション ビュー コントロールの基本インタフェース
*/
public interface ApplicationViewControl
extends XMLControl
{
  // -------------------------
  // 非同期メソッド
  // -------------------------

  /**
  * このコントロールのインスタンスは現在非同期要求を処理しているか?
  */
  public boolean isAsyncRequestActive();

  /**
  * このコントロールのインスタンスによって処理されているアクティブな非同期要求の
  * ID を返す。アクティブな非同期要求がない場合は null を返す。
  */
  public String getActiveAsyncRequestID();

  // -------------------------
  // ローカル トランザクション メソッド
  // -------------------------

  /**
  * このコントロールのローカル トランザクションを開始する。これにより、基本となる
  * ApplicationView のインスタンスに対するローカル トランザクションが開始される。
  * この呼び出しと、commitLocalTransaction() または rollbackLocalTransaction()
  * の呼び出しの間にこのコントロールによって実行された処理は、すべて
  * 1 つの単位としてコミットまたはロールバックされる。このコントロールの
  * ApplicationView で使用されている基本のアダプタがローカル トランザクションを
  * サポートしていない場合は、例外が送出される。
  */
  public void beginLocalTransaction()
    throws Exception;

  /**
  * このコントロールのアクティブなローカル トランザクションをコミットする。
  * beginLocalTransaction() の最後の呼び出し以降に実行された処理は、すべて
  * EIS の永続状態にコミットされる。このコントロールの
  * ApplicationView で使用されている基本のアダプタがローカル トランザクションを
  * サポートしていない場合は、例外が送出される。
  */
  public void commitLocalTransaction()
    throws Exception;

  /**
  * このコントロールのアクティブなローカル トランザクションをロールバックする。
  * beginLocalTransaction() の最後の呼び出し以降に実行された処理は、すべて破棄される。
  * このコントロールの ApplicationView で使用されている基本のアダプタが
  * ローカル トランザクションをサポートしていない場合は、例外が送出される。
  */
  public void rollbackLocalTransaction()
    throws Exception;

  /**
  * すべての ApplicationView コントロールのインスタンスに配信できる汎用的な
  * イベントを定義するインタフェースをコールバックする。ここで定義される
  * イベントは、クライアントには表示されない。クライアントには、
  * コントロール インタフェース (JCX ファイル) に定義されたイベントのみが表示される。
  */
  public interface Callback
{
    /**
    * 非同期応答を処理するためのプライベート/内部コールバック ハンドラ。
    * ApplicationViewControl のクライアントは、このタイプの
    * ハンドラを実装してはならない。
    * @exclude
    */
    public void internalCallbackMethod(Object asrObj)
      throws Exception;
    }
}

アプリケーション ビュー コントロール (JCX) とビジネス プロセス (JPD) のサンプル

サンプルのアプリケーション ビュー コントロールとビジネス プロセスを使用するには、WebLogic Workshop で、次の場所にあるサンプル アプリケーションを開きます。

SAMPLES_HOME/integration/sampleApp/sampleApp.work

サンプルの実行手順については、WebLogic Workshop で、次の HTML ファイルを参照してください。

SAMPLES_HOME/integration/sampleApp/docs/index.html

 


イベントの受信

関連付けられたアプリケーション ビューから受け取るイベントは、アプリケーション ビュー コントロールのインスタンスの JCX ファイルでは表現されません。ビジネス プロセスでは、アプリケーション ビューからのイベントの受信に、メッセージ ブローカのサブスクライブ コントロールのインスタンスが使用されます。イベントが定義されているアプリケーション ビューが WebLogic Workshop にパブリッシュされると、wlai.channel ファイルが自動的に生成されます。このチャネル ファイルによって、ビジネス プロセスでサブスクリプションできるチャネルが定義されます。

メッセージ ブローカ サブスクリプション コントロールの詳細については、次の URL にある WebLogic Workshop ヘルプの「メッセージ ブローカ サブスクリプション コントロール」を参照してください。

http://edocs.beasys.co.jp/e-docs/workshop/docs81/doc/ja_JP/integration/controls/controlsBrokerSubscribe.html

次のサンプルは、2 つのイベントのサブスクリプションで構成される wlai.channel 内のコードです。

コード リスト 3-2 サンプルの wlai.channel ファイル

<?xml version="1.0" encoding="UTF-8"?>
<mb:channels channelPrefix="/wlai"
      xmlns:mb="http://www.bea.com/wli/broker/channelfile">
  <mb:channel messageType="none"
      name="InsertBasedEvents">
    <mb:channel messageType="xml"
      name="CustomerInsertEvent"
      qualifiedMessageType="et:CUSTOMER_TABLE.insert"
      xmlns:et="wlai/CustomerInsertEvent_CUSTOMER_TABLE_insert"/>
  </mb:channel>
  <mb:channel messageType="none"
    name="FunctionDemo">
    <mb:channel messageType="none"
      name="CustomerMgmt">
      <mb:channel messageType="xml"
        name="CustomerUpdated"
        qualifiedMessageType="et:CUSTOMER_TABLE.update"
        xmlns:et="wlai/FunctionDemo/CustomerMgmt_CustomerUpdated_event"/>
    </mb:channel>
  </mb:channel>
</mb:channels>

ビジネス プロセスでアプリケーション ビューからイベントを受け取るには、次の手順に従って、メッセージ ブローカ サブスクリプション コントロールのインスタンスを作成します。

  1. WebLogic Workshop を起動します。
  2. アプリケーション ビューのイベントを受け取るビジネス プロセスを開きます。
  3. [データ パレット] の [コントロール] タブで、[追加Integration ControlsMB Subscription] をクリックして、コントロール ウィザードを起動します。
  4. コントロールの変数名を入力します。
  5. ラジオ ボタンを選択して新しい MB サブスクリプション コントロールを作成し、コントロールの名前を入力します。
  6. [チャネル名] ドロップダウン リストから、受け取るイベントを示すチャネルを選択します。wlai というチャネル プレフィックスを持つイベント、つまり、生成された wlai.channel ファイルにチャネルが定義されているイベントを検索します。
  7. チャネルを選択すると、関連付けられたメッセージ タイプとメタデータ タイプ (指定している場合) が表示されます。

  8. メッセージをフィルタ処理する場合は、[このサブスクリプションをフィルタ処理する] チェックボックスをオンにします。
  9. [作成] をクリックします。
  10. 手順 5 で指定した名前を使ってコントロールが作成されます。

コントロールが作成されたら、プロパティ エディタを使用して、クラスまたはメソッド レベルでフィルタを定義できます。

注意 : ビジネス プロセスは、イベントを受け取ったらすぐに起動できます。この機能は、メッセージ ブローカ チャネルへのサブスクライブの選択や、[チャネル名] ドロップダウン リストからのイベントの選択を行うプロセスの開始ノードから使用できます。

 


ビジネス プロセスにおけるアプリケーション ビューのローカル トランザクションの処理

LocalTransaction インタフェースは、CCI (Common Client Interface) 接続クラスを介して、アダプタのクライアントにエクスポーズされます。現在、アプリケーション ビューのインタフェースには CCI LocalTransaction インタフェースは使用されていません。ローカル トランザクションを管理するには、まず、Connection オブジェクトから LocalTransaction を取得する必要があります。

ローカル トランザクションの管理規約

ローカル トランザクションの管理規約は、アダプタに javax.resource.spi.LocalTransaction インタフェース (システムの基底のリソース マネージャで実行されるローカル トランザクションをサポートする) が実装されると作成されます。この規約により、アプリケーション サーバでは、トランザクションを管理するためのインフラストラクチャと実行時環境を構築できるようになります。各アプリケーション コンポーネントは、このトランザクション インフラストラクチャに基づいて、コンポーネントレベルのトランザクション モデルをサポートします。

トランザクションの境界設定のサポートについては、次の URL を参照してください。

http://java.sun.com/blueprints/guidelines/designing_enterprise_applications/transaction_management/platform/index.html

トランザクション境界設定がユーザによって定義されていないローカル トランザクションに対するコネクタのサポート

ここでは、WebLogic Workshop でアプリケーション ビューのローカル トランザクションをサポートする例を示します。この例は、コネクタがローカル トランザクションのみをサポートしているという点で、EJB トランザクションの TX_REQUIRES_NEW と似ています。

この例の場合、コネクタはローカル トランザクションのみをサポートします。また、ローカル トランザクションの開始と終了が BPM の設計者によって明示的に定義されていません。WebLogic Integration では、LocalTransaction オブジェクトを XA ラッパーで囲むことにより、このコネクタをグローバル トランザクションに参加させることができます。XA ラッパーは、LocalTransaction インタフェースに委託できない XAResource インタフェースのメソッドはいずれも処理しません。WebLogic Integration でトランザクション チェーンに含めることができる 非 XA リソースは 1 つだけです。したがって、ユーザはアプリケーション ビューの LocalTransaction を 1 つだけビジネス プロセスに使用できます。

XA トランザクションに対するコネクタのサポート

この例の場合、アプリケーション ビューのサービスはローカル トランザクションから呼び出されません。各サービスの呼び出しは、グローバル XA トランザクションに自動的に追加されます。これは、リソース アダプタで XA がサポートされているためです。

 

ナビゲーション バーのスキップ  ページの先頭 前 次