Exchange 2000徹底解剖
開発環境としてのExchange 2000 Server

Event Sinkの仕組み
●イベントの登録
 Event Sinkによるイベントを登録するには,イベントを発生させたいフォルダに対して「イベントオブジェクト」という隠しオブジェクトを登録し,http://schemas.microsoft.com/exchange/events/ネームスペースで表現されるプロパティとしてイベントの各種設定をすることで実施される。使われるプロパティは,Table 7の通りである。

Table 7 http://schemas.microsoft.com/exchange/events/ネームスペースのプロパティ

プロパティ解説
Criteriaイベントを発生させるときの条件。SQL書式のWHERE句以降を設定する。たとえば,“WHERE "DAV:getcontentlength" > 10000”のように指定すれば,10Kバイトを越えたアイテムに対してだけ同イベントが発生するようになる
Enableイベントを有効にするかどうかのフラグ。trueまたはfalsefalseを設定すると,イベントの発生を一時的に抑制できる
EventMethod発生させたいイベントの名前。Table 8の組み合わせ(文字列配列)として指定する。ただしTable 8に示すように,イベントは「ストアイベント」「システムイベント」「タイマーイベント」の3つに分類される。イベントを複数指定するときには,同じ種類のイベントしか指定できない(たとえば,ストアイベントに属するOnSaveとタイマーイベントに属するOnTimerを同時に設定することはできない)
MatchScope非同期イベントならびに同期イベントに対するイベントを定義するとき,サブフォルダに対するアイテム操作を有効にするかどうかを指定する。“ANY”(Web Storage Systemのすべてのフォルダ),“DEEP”(サブディレクトリを含む),“EXACT”(対象フォルダだけ),“SHALLOW”(“EXACT”と同じ)のいずれかを指定する
Priority同期イベントであるとき,優先順位を指定する。0(高い)〜65535(標準)〜2147483647(低い)までの整数。非同期イベントでは優先順位を設定できない
ScriptUrlスクリプトによってイベントを処理するとき,そのスクリプトのURLを指定する
Sinkclassイベントが発生したときに呼び出すCOMコンポーネントのクラスID(CLSID)またはプログラムID(ProgID)を指定する
TimerExpirtTime特定の日時になったらタイマーイベントを発生させないという有効期限を設定する。特に指定しないときには無期限
TimerIntervalタイマーイベントを発生させる間隔を分単位で指定する
TimerStartTimeタイマーイベントを発生させる日時を指定する

Table 8 EventMethodプロパティの値

解説

ストアイベント

OnSave保存されたとき
OnDelete削除されたとき
OnSyncSave保存されようとしているとき
OnSyncDelete削除されようとしているとき

システムイベント

OnMDBStartupストアが起動したとき
OnMDBShutdownストアが終了しようとしているとき

タイマーイベント

OnTimer一定時間が経由したとき

 イベントオブジェクトの扱いは,メールやファイルなどのアイテムと同じである。すなわち,登録するためには,WebDAVやADOコンポーネント,CDOコンポーネントなどを使えばよい。とはいえ,わざわざ登録用のプログラムを作るのはやや面倒なので,Exchange 2000 SDKには,RegEvent.vbsというスクリプトが用意されている。RegEvent.vbsはWindows Scripting Hostで動作するVBScriptのプログラムであり,イベントオブジェクトを登録する機能を備える(その使い方は,すぐあとで説明する)。

 RegEvent.vbsは,ADOコンポーネントを使ってイベントオブジェクトを登録する。実際にRegEvent.vbsのソースを参照すれば,どのようにイベントオブジェクトを登録すればよいのかがわかるだろう。

Prev 23/27 Next



L>