コネクターは、要求およびイベントの 2 つのモードで動作します。要求モードの場合、要求された操作を表すビジネス・オブジェクトをコネクターに送信して、統合ブローカーが Exchange Server に要求を発行したときにプロセスが開始されます。コネクターは、アクティブな動詞に基づいてそのオブジェクトを処理し、その後 Exchange Server に該当する要求を送信します。要求の性質によっては、コネクターは情報を処理して Exchange Server から統合ブローカーに戻すこともあります。
イベント・モードの場合、プロセスは Exchange Server で開始されます。コネクターはサーバー上のイベント・ストアをポーリングして、サブスクライブされた Exchange イベントのレコードを探します。このようなイベントが検出されるたびに、コネクターは該当するビジネス・オブジェクトを作成し、WebDAV 呼び出しでユーザーのフォルダーから検索されたデータを取り込みます。その後、コネクターはビジネス・オブジェクトを統合ブローカーにパブリッシュします。
この処理については、以下のセクションで詳しく説明します。
統合ブローカーからの要求は、Retrieve、Create、Update、または Delete の 4 つの操作のいずれかの形式となります。Retrieve は、Exchange データベースから情報を検索することをコネクターに要求します。Create、Update、または Delete は、初期要求に含まれる情報に基づいて、それ自体に対して該当するアクションを実行することをデータベースに指示するようにコネクターに要求します。
統合ブローカーが、コネクターに Exchange から情報を検索することを要求する場合、基本キー値と呼ばれる値を設定します。この値を使用して、コネクターは Exchange データベースから該当する情報を取り出すことができます。要求される情報は多くの場合複雑なので、情報は通常、階層で保管されています。コネクターは基本キー値を使用して、データベースの項目階層を再帰的に下降します。
コネクターが情報をブローカーに戻すために作成するビジネス・オブジェクトもまた階層で、階層ビジネス・オブジェクトと呼ばれます。階層ビジネス・オブジェクトは、1 つのトップレベルのビジネス・オブジェクトと 1 つ以上の子ビジネス・オブジェクトから構成されます。コネクターは、データベース内の項目の構造に正確に一致するビジネス・オブジェクトを構成しようとします。つまり、統合ブローカーに戻される個別のビジネス・オブジェクトのすべての単純属性が、Exchange データベース内の対応するフィールドの値と一致し、戻される階層ビジネス・オブジェクトに含まれる子ビジネス・オブジェクトの数がデータベース内の子の数および順序と一致します。
統合ブローカーが、ブローカーがコネクターに渡すビジネス・オブジェクトに基づいて、データベース内に新しい Exchange Server 項目を作成するようにコネクターに要求すると、コネクターは以下のステップを実行します。
統合ブローカーが、データベース内の Exchange Server 項目を更新するようにコネクターに要求すると、コネクターは以下のステップを実行します。
統合ブローカーが、データベースから階層ビジネス・オブジェクトを削除するようにコネクターに要求すると、コネクターはトップレベルの項目を物理的に削除します。
イベントとは、任意の Exchange Server 項目の作成、変更、または削除です。 Exchange インフォメーション・ストアは、イベントが発生したことを Event Listener に通知します。イベントはイベント・ストアに配置されて、イベント ID が指定されます。コネクターはその pollForEvents () メソッドを呼び出し、イベントで表される情報は、イベント通知で検出された ItemURI を使用して検索されて処理されます。
コネクターは、イベント・ストアで Create イベントを検出すると、イベントで指定する型のビジネス・オブジェクトと構造が一致するビジネス・オブジェクトを新規に作成し、ItemURI フィールドにイベントで検出された値を設定します。さらにコネクターは、データベースから関連する項目を検索し、それを使用して新規ビジネス・オブジェクトを設定します。ビジネス・オブジェクトの動詞は Create に設定され、コネクターはこれを統合ブローカーにパブリッシュします。
コネクターは、イベント・ストアで Update イベントを検出すると、イベントで指定する型のビジネス・オブジェクトと構造が一致するビジネス・オブジェクトを新規に作成し、ItemURI フィールドにイベントで検出された値を設定します。さらにコネクターは、データベースから関連する項目を検索し、それを使用して新規ビジネス・オブジェクトを設定します。ビジネス・オブジェクトの動詞は Update に設定され、コネクターはこれを統合ブローカーにパブリッシュします。
コネクターは、イベント・ストアで Delete イベントを検出すると、イベントで指定する型のビジネス・オブジェクトと構造が一致するビジネス・オブジェクトを新規に作成し、ItemURI フィールドにイベントで検出された値を設定します。ビジネス・オブジェクトの動詞は Delete に設定され、コネクターはこれを統合ブローカーにパブリッシュします。
コネクターは、Exchange Server によって起動される物理削除操作のみをサポートしています。
Exchange Server オブジェクトが作成、更新、または削除されるたびに、コネクターの Event Listener はイベント通知またはイベントをイベント・ストアに保管します。コネクターが pollForEvents() メソッドを呼び出すと、イベント・ストア内の通知が検出されて、その後処理されます。
PollQuantity コネクター・プロパティーは、コネクターがイベント・ストアから検索するイベントの数を指定します。 コネクターが検索するイベントごとに、以下のタスクが実行されます。
表 1 に、イベントが使用する状況値を示します。
イベント状況 | 状況の数値 | 説明 |
---|---|---|
READY_FOR_POLL | 0 | イベントは次のポーリング呼び出しで選出されるための準備が整っています。 |
IN_PROGRESS | 1 | コネクターがイベントを選出し、処理しています。 |
UNSUBSCRIBED | 2 | このイベントにサブスクリプションはありません。 |
SUCCESS | 3 | コネクターはイベントを正常に処理しました。 |
ERROR_PROCESSING_EVENT | -1 | イベントの処理中にコネクターでエラーが発生しました。 |
ERROR_POSTING_EVENT | -2 | 統合ブローカーへのビジネス・オブジェクトのパブリッシング中にコネクターでエラーが発生しました。 |
ERROR_OBJECT_NOT_FOUND | -3 | イベント作成先のビジネス・オブジェクトが見つかりません。 |
イベント通知を使用するには、2 つの Exchange Server ユーザー・フォルダー (イベントの保管用と、イベントのアーカイブ用) を作成する必要があります。この 2 つのフォルダーの作成および構成に関する説明については、コネクターのインストールを参照してください。
ArchiveProcessed コネクター・プロパティーを使用して、イベント状況の更新後にイベントがアーカイブされているかどうかを判別します。表 2 に、ArchiveProcessed の設定を示します。
ArchiveProcessed 値 | イベント状況 | コネクターの振る舞い |
---|---|---|
true | イベントは正常に処理されました | コネクターによって、状況が SUCCESS のイベントがアーカイブされます。イベントはアーカイブされると、イベント・ストアから削除されます。 |
イベントの処理に失敗しました | コネクターによって、状況が ERROR_POSTING_EVENT または ERROR_OBJECT_NOT_FOUND のイベントがアーカイブされます。イベントはアーカイブされると、イベント・ストアから削除されます。 | |
ビジネス・オブジェクトに対するサブスクリプションがないため、イベントが処理されません | コネクターによって、状況が UNSUBSCRIBED のイベントがアーカイブされます。イベントはアーカイブされると、イベント・ストアから削除されます。 | |
false | イベントは正常に処理されました | イベント・ストアにイベントが残ります。 |
イベントの処理に失敗しました | イベント・ストアに状況 ERROR_POSTING_EVENT、 ERROR_OBJECT_NOT_FOUND、または ERROR_PROCESSING_EVENT のイベントが残ります。 | |
ビジネス・オブジェクトに対するサブスクリプションがないため、イベントが処理されません | イベント・ストアに状況 UNSUBSCRIBED のイベントが残ります。 |
コネクターを使用して、システム障害後にイベントをリカバリーします。始動時に、コネクターは recoverInProgressEvents() メソッドを呼び出し、前回コネクター・セッションを終了したときに状況が IN_PROGRESS であったイベントを検索します。
InDoubtEvents コネクター・プロパティーを使用して、イベント・リカバリーのタイプ (ある場合) を決定します。このプロパティーの設定について詳しくは、アプリケーション固有の構成プロパティーを参照してください。
コネクターは、コネクター・フレームワークの重複イベント除去 (DEE) 機能および setDEEID() メソッドを利用して、保証付きイベント・デリバリー (GED) をサポートしています。 そのため、イベントを統合ブローカーにデリバリーした後、イベント・ストア内のイベントの状況を更新する前にコネクターが終了した場合でも、イベントは統合ブローカーへ 1 度のみ送信されます。
GED を利用するためには、表 3 に示すように、3 つのコネクター構成プロパティーを設定する必要があります。
プロパティー名 | 説明 | GED に必要な値 |
---|---|---|
DuplicateEventElimination | 標準構成プロパティー。True に設定すると、イベント ID がモニター・キューに格納され、重複イベントのデリバリーを防ぎます。 | True |
MonitorQueue | 標準構成プロパティー。コネクターが処理済みイベント ID を格納する JMS キューを指定します。 | 適切なキューに設定する必要があります (例えば、MONITORQUEUE) |
InDoubtEvents | コネクター固有の構成プロパティー。コネクター終了時に状況が IN_PROGRESS であったイベントを処理する方法を指定します。 | Reprocess |
コネクター構成プロパティーの設定の詳細については、付録A. コネクターの標準構成プロパティーを参照してください。
Exchange Server Extensible Storage Engine (ESE) によって、トランザクションのサポートが提供されています。ESE は、トランザクション・ロギング・システムであり、システム障害の後もデータ保全性を保証します。イベント・ストアおよびアーカイブ・ストアが Exchange Server メールボックスに配置されているため、ESE はイベント処理トランザクションを打ち切るかまたはロールバックする機能をサポートしています。
Event Listener がイベントを処理できない場合 (使用不可になっているため、またはシステム・エラーのため)、イベント・サービスはイベントを保持し、Event Listener が復元したときにそのイベントを Event Listener にデリバリーします。