BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

BPM クライアント アプリケーション プログラミング

 前 次 目次 索引 PDFで表示  

イベント キーのコンフィグレーション

この章では、イベント キーのコンフィグレーション方法について説明します。内容は以下のとおりです。

詳細については、『WebLogic Integration Studio ユーザーズ ガイド』の「ワークフロー リソースのコンフィグレーション」にある「イベント キーのコンフィグレーション」を参照してください。

 


イベント キーの概要

イベント キーを使用すると、イベント データに対してワークフロー式を評価することにより、イベント プロセッサでインバウンド イベント固有のキー値を計算できます。通常、ワークフロー式では、フィールド参照または関数呼び出しを使用して着信イベント データ内の名前付きフィールドから情報を抽出します。

イベントは コンテンツ タイプとイベント記述子という 2 つの属性によって特徴付けられており、データ型をサポートするプラグインのフィールドと特定のコンテンツ タイプおよびイベント記述子 プロパティから固有のキーを抽出するワークフロー式のコンテンツが含まれています。

イベント キー属性を次の表に示します。

表11-1 イベント キー属性

イベント キー属性

説明

Content Type

潜在的なデータ型を識別するイベント データの MIME (Multipurpose Internet Mail Extensions) タイプ。WebLogic Integration でサポートするデフォルトのコンテンツ タイプは、text/xml である(ML ドキュメント)。

バイナリ COBOL Copybook レコード、CSV (comma-separated values)、所有権を主張できるファイル フォーマット (Microsoft Word や Excel など)、シリアライズされた Java オブジェクト、HTML、SGML、など追加のコンテンツ タイプを扱うためにプラグインを作成することができる。

BPM プラグインのプログラミングの詳細については、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照。

Event Descriptor

(省略可能)任意のデータ フォーマットを定義するための追加スキーマ レベル情報

注意: コンテンツ タイプによっては、データ フォーマットを定義する追加情報は必要としない。

デフォルトのコンテンツ タイプ text/xml の場合、イベント記述子は XML ドキュメント タイプを反映し、着信ドキュメントで宣言されている場合には、DOCTYPE DTD (Document Type Definition : 文書型定義) 内の公開 ID または(公開 ID が定義されていない場合)システム ID と一致させる。DOCTYPE が宣言されていない場合は、イベント記述子はドキュメント ルート要素名を一致させる。

プラグインがサポートするコンテンツ タイプは、必要な場合において、十分な情報を与えるためにフィールド参照がイベント データから指定されたフィールドを抽出できるよう、イベント記述子を使用する。(未処理バイナリ レコード画像など)データが自己記述型ではない場合、イベント記述子は、フィールド参照が、たとえば、バイト オフセット、長さ、および参照されたフィールドのデータ型など関連するデータ ディクショナリ サービスを検索できるよう、十分な情報を提供する必要がある。


 

イベント プロセッサは、どの着信イベントの固有キーも計算できます。イベント ノードのように、イベントが特定のワークフロー インスタンスに送られる場合、計算されたキー値を対象であるワークフロー インスタンスの ID に一致させる必要があります。一致作業は、入力コンテンツ タイプ、イベント記述子、およびキー値を、待機中のインスタンスおよびイベント ノード ID と関連付けるために使用する、イベント監視表によって行われます。また、イベント監視表は、特定のコンテンツ タイプ、イベント記述子、およびキー値の組み合わせ(この場合インスタンス ID は null)の受信に対してインスタンス化され、トリガーされたワークフローを処理するためにも使用されます。

 


イベント キーの追加

イベント キーを追加するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public void addEventKey(
com.bea.wlpi.common.EventKeyInfo eventKeyInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

addEventKey() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。

表11-2 addEventKey() メソッドのパラメータ

パラメータ

説明

有効な値

eventKeyInfo

新しいイベント キー情報

EventKeyInfo オブジェクト。

EventKeyInfo オブジェクトを定義する方法については、EventKeyInfo オブジェクトを参照。


 

たとえば、以下のコードでは、指定した eventKeyInfo オブジェクトのコンテンツに基づきイベント キーが追加されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

admin.addEventKey(eventKeyInfo);

addEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


イベント キー情報の取得

イベント キーについての情報を取得するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public java.util.List getEventKeyInfo(
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

このメソッドは、com.bea.wlpi.common.EventKeyInfo オブジェクトのリストを戻します。各イベント キーの情報にアクセスするには、EventKeyInfo オブジェクトに記載の EventKeyInfo オブジェクト メソッドを使用します。

たとえば、以下のコードにより、イベント キー情報が取得されて、eventKeys リスト オブジェクトに保存されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

List eventKeys = admin.getEventKeyInfo();

getEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


イベント キーの更新

イベント キーを更新するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public void updateEventKey(
com.bea.wlpi.common.EventKeyInfo eventKeyInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

updateEventKey() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。

表11-3 updateEventKey() メソッドのパラメータ

パラメータ

説明

有効な値

eventKeyInfo

更新するイベント キー情報

EventKeyInfo オブジェクト。

EventKeyInfo オブジェクトを定義する方法については、EventKeyInfo オブジェクトを参照。


 

たとえば、以下のコードでは、指定した eventKeyInfo オブジェクトのコンテンツに基づきイベント キーが更新されます。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

admin.updateEventKey(eventKeyInfo);

updateEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


イベント キーを削除する

イベント キーを削除するには、次の com.bea.wlpi.server.admin.Admin メソッドを使用します。

public void deleteEventKey(
com.bea.wlpi.common.EventKeyInfo eventKeyInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException

deleteEventKey() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。

表11-4 deleteEventKey() メソッドのパラメータ

パラメータ

説明

有効な値

eventKeyInfo

削除するイベント キー

既存の EventKeyInfo オブジェクト。

EventKeyInfo オブジェクトを定義する方法については、EventKeyInfo オブジェクトを参照。


 

たとえば、次のコードは指定されたイベント キーを削除します。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

admin.deleteEventKey(eventKeyInfo);

deleteEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。

 


イベント キーのコンフィグレーション例

この節では、コマンドライン管理のコード例から抜粋して、イベント キーのコンフィグレーション方法を示します。

注意: コマンドライン管理サンプルの詳細については、コマンドライン管理サンプルを参照してください。

このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。

重要なコード行は、太字で強調されています。このコード例では、adminAdmin EJB への EJBObject 参照を表します。

/* ユーザとの通信のための入力ストリームを作成する */
stdIn = new BufferedReader( new InputStreamReader( System.in ) );

/* ツール タイトルを表示する */
System.out.print( "¥n--- Command Line Administration v1.1 ---" );

/* メイン メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n--- Main Menu ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Organizations" );
System.out.println( "2) Roles" );
System.out.println( "3) Users" );
System.out.println( "4) Security Realm" );
System.out.println( "5) Business Operations" );
System.out.println( "6) Event Keys" );
System.out.println( "7) Business Calendars" );
System.out.println( "8) EJB Catalog" );
System.out.println( "9) Server Properties" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
.
.
.
/**
* WLPI イベント キーと関連する、Admin インタフェースで選択可能な公開 API メソッドを示す目的で
* 必要な情報をすべて取得するために
* ユーザと交信するメソッド
* イベント キーは、着信 XML ドキュメントと関連したワークフロー定義またはインスタンスを
* 識別するために
* 使用するイベント キーを使用すると、
* 該当するものを取得するためにすべての XML ベース ワークフロー トリガーのシーケンス検索を行う必要がなくなる
*/
public static void mngEventKeys() {
EventKeyInfo eventKeyInfo;
List eventKeyList;
String eventKeyRoot;
String eventKeyExpr;
// boolean isGetDefinition;
// BusinessCalendarInfo calendarInfo;
// String answer;
// String calendarDefinition;
// String calendarId;
// String calendarName;
// String calendarTimezone; // XML Document

/* ユーザとの通信のための入力ストリームを作成する */
BufferedReader stdIn = new BufferedReader( new InputStreamReader(
      System.in ) );

try {
/* メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n¥n--- Event Keys ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Add an Event Key" );
System.out.println( "2) Delete an Event Key" );
System.out.println( "3) List all Event Keys" );
System.out.println( "4) Update an Event Key" );
System.out.println( "B) Back to previous menu" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );

/* ユーザの選択を取得する */
String line = stdIn.readLine();

/* ユーザが選択を行わないで〔Enter〕を押したか ? */
if( line.equals( "" ) )
continue;
/* ユーザが複数の文字を入力したか ? */
else if( line.length() > 1 ) {
System.out.println( "*** Invalid selection" );
continue;
}

/* 大文字および文字へのコンバート*/
char choice = line.toUpperCase().charAt( 0 );

/* ユーザの選択を処理する */
switch( choice ) {
.
.
.

イベント キーの追加

イベント キーの追加方法を示します。

         /* イベント キーを追加する */
case '1' :
/* 新しいイベント キーのイベント キー XML ドキュメント ルートを取得する */
if( ( eventKeyRoot = askQuestion( "¥nEnter the Event Key XML
Document Root" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 新しいイベント キーの式を取得する */
if( ( eventKeyExpr = askQuestion( "Enter the Event Key Expression" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

try {
/* EventKeyInfo オブジェクトを作成する ;
* 追加メソッドを呼び出すために必要 */
eventKeyInfo = new EventKeyInfo(
"text/xml", eventKeyRoot, eventKeyExpr, null, 0 );

/* WLPI 公開 API メソッド */
/* イベント キーを追加する */
admin.addEventKey( eventKeyInfo );

/* 正常終了(例外の発生なし) */
System.out.println( "- Added" );
}
catch( Exception e ) {
System.out.println( "*** Unable to add the Event Key" );
System.err.println( e );
}
break;
.
.
.

イベント キーの削除

イベント キーの削除方法を示します。

         /* イベント キーを削除する */
case '2' :
/* 削除するイベント キーのイベント キー XML ドキュメント ルートを取得する */
if( ( eventKeyRoot = askQuestion( "¥nEnter the root for
the Event Key to delete" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

try {
/* 削除メソッドを呼び出すには、
* 基本的に XML ドキュメント ルートと式を含んだ
* EventKeyInfo オブジェクトを作成する必要がある。式を削除する
* 必要はない */
eventKeyExpr = "";

/* EventKeyInfo オブジェクトを作成する ;
* 削除メソッドを呼び出すために必要 */
eventKeyInfo = new EventKeyInfo(
"text/xml", eventKeyRoot, eventKeyExpr, null, 0 );

/* WLPI 公開 API メソッド */
/* イベント キーを削除する */
admin.deleteEventKey( eventKeyInfo );

/* 正常終了(例外の発生なし) */
System.out.println( "- Deleted" );
}
catch( Exception e ) {
System.out.println( "*** Unable to delete the Event Key" );
System.err.println( e );
}
break;
.
.
.

イベント キーの取得

イベント キーの取得方法を示します。

         /* すべてのイベント キーをリストアップする */
case '3' :
try {
/* WLPI 公開 API メソッド */
/* すべてのイベント キーを検索する */
eventKeyList = admin.getEventKeyInfo();

/* 定義されたイベント キーはあるか ? */
if( eventKeyList.size() == 0 )
System.out.println( "¥nNo Event Keys defined" );
else
System.out.println( "¥nDefined Event Keys:" );

/* リストを処理して、イベント キーと属性を表示する */
for( int i = 0; i < eventKeyList.size(); i++ ) {
/* リストから要素を取り出す */
eventKeyInfo = ( EventKeyInfo )eventKeyList.get( i );

/* WLPI 公開 API メソッド */
/* XML ドキュメント ルートを取り出して表示する */
System.out.println( "- Content Type: " +
eventKeyInfo.getContentType() );
                  /* WLPI 公開 API メソッド */
/* XML ドキュメント ルートを取り出して表示する */
System.out.println( "- Event Descriptor: " +
eventKeyInfo.getEventDescriptor() );

/* WLPI 公開 API メソッド */
/* カレンダー名を取り出して表示する */
System.out.println( " Expression: " +
eventKeyInfo.getExpr() );
}
}
catch( Exception e ) {
System.out.println( "*** Unable to retrieve Event Keys" );
System.err.println( e );
}
break;
.
.
.

イベント キーの更新

イベント キーの更新方法を示します。

         /* イベント キーを更新する */
case '4' :
/* 更新するイベント キーのイベント キー XML ドキュメント ルートを取得する */
if( ( eventKeyRoot = askQuestion( "¥nEnter the root for the
Event Key to update" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

/* 新しいイベント キーの式を取得する */
if( ( eventKeyExpr = askQuestion( "Enter the new Event Key
Expression" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}

try {
/* EventKeyInfo オブジェクトを作成する ;
* 更新メソッドを呼び出すために必要 */
eventKeyInfo = new EventKeyInfo(
"text/xml", eventKeyRoot, eventKeyExpr, null, 0 );

/* WLPI 公開 API メソッド */
/* イベント キーを更新する */
admin.updateEventKey( eventKeyInfo );

/* 正常終了(例外の発生なし) */
System.out.println( "- Updated" );
}
catch( Exception e ) {
System.out.println( "*** Unable to update the Event Key" );
System.err.println( e );
}
break;
.
.
.

 

ページの先頭 前 次