本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

イベント・セレクターとイベント・グループをテストするためのCEIアプリケーションを構築する

Naveen Sachdeva, Advisory Software Engineer, IBM
Naveen SachdevaはIBM Application Integration MiddlewareグループのAdvisory Software Engineerです。大規模システムの統合や、分散コンピューティング・システムの設計、開発に10年以上の経験があります。現在は、WebSphere Studioファミリー製品を使っての技術的使用可能性と概念検証の面から、IBMビジネス・パートナーをサポートしています。

概要: イベント・セレクターとイベント・グループをテストするための、CEI(Common Event Infrastructure)ベースのアプリケーションを構築する方法を学びましょう。著者は、EventTesterというアプリケーションを提示します。このアプリケーションでイベント・アクセス・インターフェースを使い、指定されたイベント・セレクターとイベント・グループに基づいて、履歴イベントをクエリーします。またこの記事では、「Business Relevant(ビジネス関連)」とマーク付けされたBPEL(Business Process Execution Language)ベースのプロセスに対して、イベント・セレクターを構築する方法についても解説します。

日付:  2005年 3月 31日
レベル: 中級 この記事の原文:  英語
アクティビティー: 793 ビュー
お気軽にご意見・ご感想をお寄せください: 


初めに

CEIは、履歴イベントをクエリーするために使われるEvent Accessインターフェースを提供します。イベントをクエリーするためには、イベント・グループと、オプションとしてイベント・セレクターを指定する必要があります(詳しくは、囲み記事、イベント・セレクターとイベント・グループを見てください)。CEIには、CBEViewerというアプリケーションが含まれており、これを使うことによって、指定されたイベント・グループに基づくイベント・クエリーを行うことができます。しかし、イベント・グループを作る前に、対応するイベント・セレクターをテストする必要があります。さらに、コード中でイベント・セレクターとイベント・グループを組み合わせて使う前に、その組み合わせをテストしたいこともあるかも知れません。この記事では、イベント・セレクターやイベント・グループ、そして、イベント・セレクターと組み合わせたイベント・グループをテストするための、EventTesterというアプリケーションを提示します。また、このアプリケーションをCBEViewerアプリケーションと組み合わせ、イベント・セレクターを作る方法についても解説します。


Event Accessインターフェース

CEIはXPath構文のサブセットをサポートしており、これを使ってイベントをクエリーします。イベントのクエリーは、EventAccessセッションbean実装である、Event Accessインターフェースを使って行います。EventAccess beanのインスタンスは、対応するホーム・インターフェースを使って作ることができます。これをリスト1 に示します。


リスト1. EventAccess beanのインスタンスを作る

// use home interface to create remote event access bean
InitialContext context = new InitialContext();
Object eventAccessHomeObj = 
context.lookup("ejb/com/ibm/events/access/EventAccess");
EventAccessHome eventAccessHome = (EventAccessHome)
  PortableRemoteObject.narrow(eventAccessHomeObj,
                              EventAccessHome.class);
eventAccess = (EventAccess) eventAccessHome.create();

イベント・セレクターとイベント・グループ

イベント・セレクターは、一連のイベントを、こうしたイベントのプロパティー・データ(属性やサブ要素)に基づいて定義する正規表現です。例えばイベント・セレクターは、特定なホストからの重大度30(警告)以上の全イベントを指定します。CBE仕様はXMLに基づいているため、イベント・セレクターはXPath構文のサブセットを使って書かれます(XPath構文の制限の詳細については、参考文献にある、Information center for WebSphere Business Integration Server Foundation -- Writing event selectorsを参照してください)。

Event Accessインターフェースは、次のようなイベント・クエリー方法をサポートしています。

  • グローバル・インスタンス識別子による方法 -- プライマリー・キーとして使用する globalInstandId イベント・プロパティーを使って、イベントを取得します。

CommonBaseEvent event = eventAccess.queryEventByGlobalInstanceId(eventId);

  • イベント・グループによる方法 -- 指定されたイベント・グループに属する、また(オプションとして)イベント・セレクターを使って規定される基準に合致するイベントを検索します。ascendingOrder パラメーターは、イベントの作成時間に従って、イベントを昇順または降順に並べるために使います。maxEvent パラメーターは、イベント・クエリーから返されるべきイベントの数の最大値を規定するために使います。

CommonBaseEvent[] events = eventAccess.queryEventsByEventGroup(eventGroup, eventSelector,

  • 関連タイプ(Association type)による方法 -- 与えられたイベントに対して、associationType で関連付けられるイベントを検索します。イベントは、関連した、あるいは関連付けられた他のイベントを持つこともできます。関連付けタイプ属性は、containsclearedcausedBymultiPartcorrelated などのような、関係の形式を定義します。

CommonBaseEvent[] events = eventAccess.queryEventsByAssocation(associationType, eventId);


EventTesterアプリケーション

EventTesterアプリケーションは、Event Accessインターフェース・ベースのアプリケーションであり、これを使ってイベント・セレクターやイベント・グループをテストすることができます。完全なコードは、ダウンロード・セクションにあります(この記事の先頭または最後にある、codeアイコンをクリックしてダウンロードしてください)。図1は、このアプリケーションのGUI(graphic user interface)を示しています。このアプリケーションは、イベント・グループとイベント・セレクターを与えると、それに対応したイベントを返します。またイベント・セレクターは別途、イベント・グループに対するデフォルト値、All eventsを使ってテストすることもできます。同様に、イベント・グループも別途、イベント・セレクターに対するデフォルト値、CommonBaseEvent[@globalInstanceId]を使ってテストすることもできます。イベントは表形式で示され、各行がイベントを表します。


図1. Event Testerアプリケーション

このアプリケーションは、JSP(Java Server Page)とサーブレットを含んでいます。リスト2リスト3 (コード・リストはサイドファイルにあります)は、それぞれ、このアプリケーションのJSPコードとサーブレット・コードを示しています。JSPは、アプリケーションのフロントエンドを提供します。Display Eventsボタンをクリックすると、DisplayEventsサーブレットが呼び出されます。このサーブレットは、Event Accessインターフェースを使ってイベントをクエリーし、その結果をJSPに転送します。そうするとJSPはイベントをフォーマットして、ユーザーに提示します。JSPは、フォーマットするイベントはCBE version 1.0.1であると想定しています(CBEの詳細に関しては、参考文献にある、Standardize messages with the Common Base Event modelを見てください)。


EventTesterアプリケーションを使う

EventTesterアプリケーションは、単独で使うことも、CBEViewerアプリケーションと併せて使うこともできます。CBEViewerの方がユーザー・インターフェースやフィルタリング機構は優れているので、私はEventTesterアプリケーションをCBEViewerアプリケーションと併せて使うようにお勧めします。まずCBEViewerを使って全イベントをクエリーし(All Events イベント・グループを使います)、対象としているイベントの構造やパターンを理解します。次にそれに対応するXPathクエリーを作り、EventTesterアプリケーションを使ってテストします。

例えば、「BusinessRelevant;」とマーク付けされたMileStoneManagerというプロセスがあるとしましょう。このプロセスは、開始する時も停止する時も、必ずイベントを出力します。その開始イベントと、それに対応する停止イベントの全てをクエリーしようというわけです。イベントの構造を理解するために、CBEViewerアプリケーションを使います。図2 は、CBEViewerに表示された、そうしたイベントを示し、図3図4は、その詳細です。開始イベントの詳細から、イベントに対する extensionName が「WPC:ProcessInstanceEvent」であることが分かります。これには「processTemplateName」という extendedDataElement があり、このイベントがMileStoneManagerによって出力されたことを示しています。また、この状況に対する categoryName は「StartSituation」であることから、このイベントがプロセスの開始で出力されたことが分かります。同様に、停止イベントの詳細から、このイベントに対する extensionName も同じく「WPC:ProcessInstanceEvent」であることが分かります。このイベントがMileStoneManagerによって出力されたものであることを示すフィールドはありませんが、このイベントの contextDataElement は、開始イベントに対する contextDataElement と同じであり、状況に対する categoryName は「StopSituation」です。


図2. CBEViewerアプリケーション

下記は、MileStoneManager開始イベントの詳細です。


表1. MileStoneManager開始イベントの詳細
名前
version-1.0.1
globalInstanceIdCEC05DB5C52F6E90339824ECD0334F11D9
extensionNameWPC:ProcessInstanceEvent
localInstanceId 
creationTime2004-11-10T19:34:53.213Z
severity10
msg 
priority-
sequenceNumber1
repeatCount0
elapsedTime0
ContextDataElement: ECSCurrentID / contextValue _PI:10030100.23fb340d.ac3cd9f6.136200b8
ContextDataElement: ECSParentID / contextValue _PI:10030100.23fb33fe.ac3cd9f6.136200a6
ExtendedDataElement: UsernameUNAUTHENTICATED
ExtendedDataElement: processTemplateNameMileStoneManager
ExtendedDataElement: processTemplateId_PT:90010100.22fcafbd.ac3cd9f6.cfc80161
ExtendedDataElement: processInstanceId_PI:10030100.23fb340d.ac3cd9f6.136200b8
ExtendedDataElement: processInstanceExecutionState 2 - STATE_RUNNING
ExtendedDataElement: processTemplateValidFrom Wed 2003-01-01 00:00:00.000
reporterComponentId  
sourceComponentId / component WBI-SF#Platform 5.1 [BASE 5.1.1 a0426.01] [JDK 1.4.1 ${build.level}] [PME 5.1.1 o0429.02]
sourceComponentId / subComponentWPC
sourceComponentId / componentIdTypeProductName
sourceComponentId / instanceIdlocalhost\localhost\server1
sourceComponentId / application  
sourceComponentId / executionEnvironmentWindows 2000[x86]#5.0
sourceComponentId / locationnaveen.transarc.ibm.com
sourceComponentId / locationTypeHostname
sourceComponentId / processId1520
sourceComponentId / threadIdServlet.Engine.Transports : 0
sourceComponentId / componentType http://www.ibm.com/namespaces/autonomic/Workflow_Engine
msgDataElement  
situation / categoryNameStartSituation
situation / situationType / reasoningScopeEXTERNAL
situation / StartSituation / successDisposition SUCCESSFUL
situation / StartSituation / situationQualifier START_COMPLETED

次の表は、MileStoneManager停止イベントの詳細です。


表2. MileStoneManager停止イベントの詳細
名前
version1.0.1
globalInstanceIdCEC05DB5C52F6E9033D38E4690334F11D9
extensionNameWPC:ProcessInstanceEvent
localInstanceId  
creationTime2004-11-10T19:36:32.889Z
severity10
msg  
priority-
sequenceNumber1
repeatCount0
elapsedTime0
ContextDataElement: ECSCurrentID / contextValue _PI:10030100.23fb340d.ac3cd9f6.136200b8
ContextDataElement: ECSParentID / contextValue _PI:10030100.23fb340d.ac3cd9f6.136200b8
ExtendedDataElement: WPCEventCode21004
ExtendedDataElement: processInstanceExecutionState 3 - STATE_FINISHED
reporterComponentId  
sourceComponentId / component WBI-SF#Platform 5.1 [BASE 5.1.1 a0426.01] [JDK 1.4.1 ${build.level}] [PME 5.1.1 o0429.02]
sourceComponentId / subComponentWPC
sourceComponentId / componentIdTypeProductName
sourceComponentId / componentIdTypelocalhost\localhost\server1
sourceComponentId / application  
sourceComponentId / executionEnvironmentWindows 2000[x86]#5.0
sourceComponentId / locationnaveen.transarc.ibm.com
sourceComponentId / locationTypeHostname
sourceComponentId / processId1520
sourceComponentId / threadIdServlet.Engine.Transports : 0
sourceComponentId / componentType http://www.ibm.com/namespaces/autonomic/Workflow_Engine
msgDataElement  
situation / categoryNameStopSituation
situation / situationType / reasoningScopeEXTERNAL
situation / StopSituation / successDisposition SUCCESSFUL
situation / StopSituation / situationQualifier STOP_COMPLETED

開始イベントの詳細から、次のようなイベント・セレクターを作り、MileStoneManager開始イベントの全てをクエリーすることができます。

CommonBaseEvent[extensionName='WPC:ProcessInstanceEvent'] 
and extendedDataElement[name='processTemplateName' 
and type='string' and values='MileStoneManager'] 
and situation[categoryName='StartSituation']

このイベント・セレクターは、EventTesterアプリケーションを使ってテストすることができます。これを図3に示します。このページは、上記のイベント・セレクターに基づくイベントの詳細を表示しています。これでイベント・セレクターが動作することが分かったので、今度は対応するイベント・グループ、MileStoneManagerStartEventGroupを作ります(イベント・グループの作り方の詳細については、参考文献にある、「On demand business process life cycle, Part 8: Business process monitoring -- Create key performance indicators」を見てください)。これも、EventTesterアプリケーションを使ってテストすることができます。


図3. 開始イベント・セレクターをテストする

与えられた開始イベントに対する停止イベントをクエリーするには、次のようなイベント・セレクターを使います。

CommonBaseEvent[extensionName='WPC:ProcessInstanceEvent' 
and situation[categoryName='StopSituation'] 
and contextDataElements[name='ECSCurrentID' 
and type='ECSID' and values='<start event values>']]

ここで、<start event values>(例えばPI:10030100.23fb340d.ac3cd9f6.136200b8)は実行時に指定します。

イベント・グループは、静的なイベント・セレクターに対してしか作ることができないため、このイベント・セレクターに対応するイベント・グループは作ることができません。しかし、このイベント・セレクターは下記に示すように、2つのイベント・セレクターに分割することができます。

  1. CommonBaseEvent[extensionName='WPC:ProcessInstanceEvent' and situation[categoryName='StopSituation']]
  2. CommonBaseEvent[contextDataElements[name='ECSCurrentID' and type='ECSID' and values='<start event values>']]

今度は、最初のイベント・セレクターに対応するProcessStopEventGroupを作り、これを2番目のイベント・セレクターと一緒に使うことで、適当な停止イベントをクエリーします(イベント・グループの作り方の詳細については、参考文献にある「On demand business process life cycle, Part 8: Business process monitoring -- Create key performance indicators」を見てください)。対応のコードを書く前にこのシナリオをテストするためにも、EventTesterアプリケーションを使うことができます。これを図4に示します。


図4. 停止イベント・セレクターをテストする


まとめ

この記事では、イベント・グループとイベント・セレクターをテストするための、CEI(Common Event Infrastructure)ベースのアプリケーションを構築する方法を学びました。また、このアプリケーションでイベント・アクセス・インターフェースを使い、指定されたイベント・セレクターとイベント・グループに基づいて履歴イベントをクエリーする方法、そして、「Business Relevant」とマーク付けされたプロセスに対して、イベント・セレクターを構築する方法についても学びました。



ダウンロード

内容ファイル名サイズダウンロード形式
イベント・テスターWARファイルws-ceicode.zip9KBHTTP

ダウンロード形式について


参考文献

著者について

Naveen SachdevaはIBM Application Integration MiddlewareグループのAdvisory Software Engineerです。大規模システムの統合や、分散コンピューティング・システムの設計、開発に10年以上の経験があります。現在は、WebSphere Studioファミリー製品を使っての技術的使用可能性と概念検証の面から、IBMビジネス・パートナーをサポートしています。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=SOA and web services
ArticleID=241856
ArticleTitle=イベント・セレクターとイベント・グループをテストするためのCEIアプリケーションを構築する
publish-date=03312005

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。