BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > BPM トピック > BPM クライアント アプリケーション プログラミング > イベント キーのコンフィグレーション |
BPM クライアント アプリケーション プログラミング
|
イベント キーのコンフィグレーション
この章では、イベント キーのコンフィグレーション方法について説明します。内容は以下のとおりです。
詳細については、『WebLogic Integration Studio ユーザーズ ガイド』の「ワークフロー リソースのコンフィグレーション」にある「イベント キーのコンフィグレーション」を参照してください。
イベント キーの概要
イベント キーを使用すると、イベント データに対してワークフロー式を評価することにより、イベント プロセッサでインバウンド イベント固有のキー値を計算できます。通常、ワークフロー式では、フィールド参照または関数呼び出しを使用して着信イベント データ内の名前付きフィールドから情報を抽出します。
イベントは コンテンツ タイプとイベント記述子という 2 つの属性によって特徴付けられており、データ型をサポートするプラグインのフィールドと特定のコンテンツ タイプおよびイベント記述子 プロパティから固有のキーを抽出するワークフロー式のコンテンツが含まれています。
イベント キー属性を次の表に示します。
イベント プロセッサは、どの着信イベントの固有キーも計算できます。イベント ノードのように、イベントが特定のワークフロー インスタンスに送られる場合、計算されたキー値を対象であるワークフロー インスタンスの 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() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
たとえば、以下のコードでは、指定した eventKeyInfo オブジェクトのコンテンツに基づきイベント キーが追加されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 addEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
admin.addEventKey(eventKeyInfo);
イベント キー情報の取得
イベント キーについての情報を取得するには、次の 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 リスト オブジェクトに保存されます。このコード例では、admin は Admin 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() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
たとえば、以下のコードでは、指定した eventKeyInfo オブジェクトのコンテンツに基づきイベント キーが更新されます。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 updateEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
admin.updateEventKey(eventKeyInfo);
イベント キーを削除する
イベント キーを削除するには、次の 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() メソッドのパラメータを次の表に示します。パラメータには値の指定が必要です。
たとえば、次のコードは指定されたイベント キーを削除します。このコード例では、admin は Admin EJB への EJBObject 参照を表します。 deleteEventKey() メソッドの詳細については、Javadoc の com.bea.wlpi.server.admin.Admin を参照してください。
admin.deleteEventKey(eventKeyInfo);
イベント キーのコンフィグレーション例
この節では、コマンドライン管理のコード例から抜粋して、イベント キーのコンフィグレーション方法を示します。
注意: コマンドライン管理サンプルの詳細については、コマンドライン管理サンプルを参照してください。
このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。
重要なコード行は、太字で強調されています。このコード例では、admin は Admin 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;
.
.
.
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |