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

Event Sinkを使ったプログラムの例
●Event Sinkへの登録
 プログラムの実装が終わったら,それをコンパイルしてDLLファイルを作る。どのようにコンパイルしてもかまわないが,ここではプロジェクト名をEvtsampleList 14で実装したクラスモジュール名をsavingであるものとして話を進める。この設定でコンパイルすると,Evtsample.dllファイルができるはずである。

 次に,生成されたEvtsample.dllファイルをCOM+アプリケーションとしてWindows 2000 Serverに登録する。COM+アプリケーションに登録するには,次のようにする。

  1. COM+アプリケーションの作成
     [管理ツール]の[コンポーネントサービス]を選択してコンポーネントサービス管理ツールを開き,COM+アプリケーションを作成する。
     COM+アプリケーションを作成するには,[COM+アプリケーション]の部分で右クリックし,表示されたメニューから[新規作成]−[アプリケーション]を選択すればよい。
     すると,アプリケーションを作成するためのウィザードが表示されるので,必要事項を入力する(Fig.2-26)。パッケージ名は何でもよい。ただし,途中で表示される[アクティブ化の種類]の項目では,[サーバーアプリケーション]を設定しなければならない。

  2. DLLファイルを登録する
     作成したCOM+アプリケーションのなかに,List 14をコンパイルして生成したDLLファイルをドラッグ&ドロップして登録する。

 Event SinkのCOMコンポーネントはCOM+アプリケーションとして登録する必要があるものの,Event Sink自身はCOM+が提供するトランザクションなどCOM+特有の機能を使っているわけではない。そのため,登録さえしてしまえば,一般的なCOM+アプリケーションの設定に必要となるトランザクションの設定やユーザー(ロール)の設定などは不要である(もちろん,開発者がトランザクション処理に対応したCOMコンポーネントとして構築した場合には設定が必要である)。


One Point! Event SinkのCOMコンポーネントをCOM+アプリケーションとして登録する理由は,サロゲートプロセスとして動作させる必要があるからである。Event Sinkでは,COM+イベントやCOM+が提供するトランザクション機能などを利用しているわけではない。COM+は,Event Sinkにおいて,単なるサロゲートのラッパーとしてのみ機能する。

Fig.2-26 COM+アプリケーションの作成(図版をクリックすると拡大可能)
fig_26

 COM+に登録したならば,次にRegEvent.vbsを使ってExchange 2000 ServerのEvent Sinkのコンポーネントとして動作するように登録する。RegEvent.vbsを使ってCOM+コンポーネントを登録するときの書式は,次の通りである。

cscript RegEvent.vbs Add 
  イベント名
  プログラムID
  適用するURL/イベントオブジェクト名

 イベント名とは,OnSyncSaveOnSyncDeleteといったイベントの名前であり,Table 8のいずれかを指定する。

 プログラムIDとは,コンパイルしたときに指定したCOMコンポーネントの名前である。Visual Basicの場合には,“プロジェクト名.クラスモジュール名”がプログラムIDとなる。

 適用するURLには,そのイベントを処理させたいフォルダのURLを指定する。

 イベントオブジェクト名は,任意の名前である。先に説明したようにEvent Sinkはイベントオブジェクトの登録によって設定される。ここで指定するのはそのイベントオブジェクト自身の名前である。ここで指定した名前のイベントオブジェクトは,指定したURLに実際にアイテムとして登録されることになるが,デフォルトでは隠しアイテムとなっており,ユーザーから参照されることはない。

 たとえば,List 14に示したプログラムをfile://./backofficestorage/example.co.jp/Public Folders/myData/で示されるURLにevtobj01という名前で登録するには,次のようにする。

cscript RegEvent.vbs Add 
  OnSyncSave Evtsample.saving 
  "file://./backofficestorage/
  example.co.jp/Public Folders/
  myData/evtobj01"

 以上で作成したCOM+コンポーネントが作用するようになる。

 Event Sinkの設定を解除したいときには,RegEvent.vbsに対してDeleteを指定し,次のようにする。

cscript RegEvent.vbs Delete
  削除したい
  イベントオブジェクト名のURL

 ちなみに,RegEvent.vbsに対してEnumを指定すると,その時点で設定されているイベントオブジェクトの一覧を参照できる。

cscript RegEvent.vbs Enum 
  参照したいフォルダのURL

 RegEvent.vbsには,ここに紹介した以外にも多数のコマンドが用意されている。詳細は,RegEvent.vbsのヘルプまたはExchange 2000 Platform SDK(http://msdn.microsoft.com/exchange/)のドキュメントを参照してほしい。

Event Sinkの利用例

 ここでList 14に示したプログラムは,あまり実用性がないかもしれないが,Event Sinkはさまざまな場面で実用的に使うことができる。たとえば,メールボックスに対してEvent Sinkを設定し,メールが届いたときに自動応答するような処理,WORD文章が保存されたときにテキストだけを抜き出して別のフォルダに保存するような処理,Excelワークシートが保存されたときにHTMLファイルを自動生成するような処理などが考えられる。また,一定時間ごとに発生するOnTimerイベントを処理すれば,一定時間ごとにバックアップをとったり,一定期間アクセスされていないファイルを削除したりすることも可能である。

Prev 25/27 Next