Application Integration Design Console の使い方
![]() |
![]() |
![]() |
![]() |
企業に必要なすべてのアプリケーション ビューのサービスとイベントを作成したら、そのアプリケーション ビューを使用して、ビジネス プロセスを実行できます。その最も簡単な方法は、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 つの応答パラメータを使ったコールバック メソッドとして表します。
アプリケーション ビューのイベントは、メッセージ ブローカを介して配信されます。アプリケーション ビューのイベントを受け取るには、メッセージ ブローカ サブスクリプション コントロールまたは静的なサブスクリプション (ビジネス プロセスから受け取る場合のみ) を使用します。イベントを処理する方法については、「イベントの受信」を参照してください。
ビジネス プロセスでアプリケーション ビューを使用するには、次の手順を実行します。
WebLogic Integration のアプリケーション統合機能を使用する WebLogic Workshop アプリケーションには、Schemas と明示的に命名されたプロジェクトが存在している必要があります。Schemas プロジェクトは、wlai.channel
ファイルとアプリケーション ビューのスキーマ (XML Bean クラスとしてパブリッシュされたもの) の格納に使用されます。アプリケーションに Schemas プロジェクトが存在しない場合は、アプリケーション ビューをパブリッシュする前にこのプロジェクトを作成する必要があります。
パブリッシュしたアプリケーション ビューの EJB が、WebLogic Workshop アプリケーション ツリーの [モジュール] リストに追加されます。これにより、まずアプリケーション ビューの EJB がデプロイされ、次にアプリケーション ビューがデプロイされます。
注意 : アプリケーション ビューをパブリッシュすると、WebLogic Workshop アプリケーションにスキーマがパブリッシュされます。アプリケーション ビューをパブリッシュして 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;
}
}
サンプルのアプリケーション ビュー コントロールとビジネス プロセスを使用するには、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>
ビジネス プロセスでアプリケーション ビューからイベントを受け取るには、次の手順に従って、メッセージ ブローカ サブスクリプション コントロールのインスタンスを作成します。
wlai
というチャネル プレフィックスを持つイベント、つまり、生成された wlai.channel
ファイルにチャネルが定義されているイベントを検索します。手順 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 がサポートされているためです。
![]() ![]() |
![]() |
![]() |