コネクターの動作方法

コネクターは、要求およびイベントの 2 つのモードで動作します。要求モードの場合、要求された操作を表すビジネス・オブジェクトをコネクターに送信して、統合ブローカーが Exchange Server に要求を発行したときにプロセスが開始されます。コネクターは、アクティブな動詞に基づいてそのオブジェクトを処理し、その後 Exchange Server に該当する要求を送信します。要求の性質によっては、コネクターは情報を処理して Exchange Server から統合ブローカーに戻すこともあります。

イベント・モードの場合、プロセスは Exchange Server で開始されます。コネクターはサーバー上のイベント・ストアをポーリングして、サブスクライブされた Exchange イベントのレコードを探します。このようなイベントが検出されるたびに、コネクターは該当するビジネス・オブジェクトを作成し、WebDAV 呼び出しでユーザーのフォルダーから検索されたデータを取り込みます。その後、コネクターはビジネス・オブジェクトを統合ブローカーにパブリッシュします。

この処理については、以下のセクションで詳しく説明します。

要求

統合ブローカーからの要求は、Retrieve、Create、Update、または Delete の 4 つの操作のいずれかの形式となります。Retrieve は、Exchange データベースから情報を検索することをコネクターに要求します。Create、Update、または Delete は、初期要求に含まれる情報に基づいて、それ自体に対して該当するアクションを実行することをデータベースに指示するようにコネクターに要求します。

Retrieve

統合ブローカーが、コネクターに Exchange から情報を検索することを要求する場合、基本キー値と呼ばれる値を設定します。この値を使用して、コネクターは Exchange データベースから該当する情報を取り出すことができます。要求される情報は多くの場合複雑なので、情報は通常、階層で保管されています。コネクターは基本キー値を使用して、データベースの項目階層を再帰的に下降します。

コネクターが情報をブローカーに戻すために作成するビジネス・オブジェクトもまた階層で、階層ビジネス・オブジェクトと呼ばれます。階層ビジネス・オブジェクトは、1 つのトップレベルのビジネス・オブジェクトと 1 つ以上の子ビジネス・オブジェクトから構成されます。コネクターは、データベース内の項目の構造に正確に一致するビジネス・オブジェクトを構成しようとします。つまり、統合ブローカーに戻される個別のビジネス・オブジェクトのすべての単純属性が、Exchange データベース内の対応するフィールドの値と一致し、戻される階層ビジネス・オブジェクトに含まれる子ビジネス・オブジェクトの数がデータベース内の子の数および順序と一致します。

注:
階層ビジネス・オブジェクト という用語は、格納されているすべての子ビジネス・オブジェクトを含めた、ビジネス・オブジェクト全体を表します。 個別ビジネス・オブジェクト という用語は、そのビジネス・オブジェクトが格納している (あるいは格納されている) 子ビジネス・オブジェクトから独立した、単一のビジネス・オブジェクトを表します。トップレベルのビジネス・オブジェクト という用語は階層のトップレベルにある個別ビジネス・オブジェクトを表します。このオブジェクトは、親ビジネス・オブジェクトを持ちません。

Create

統合ブローカーが、ブローカーがコネクターに渡すビジネス・オブジェクトに基づいて、データベース内に新しい Exchange Server 項目を作成するようにコネクターに要求すると、コネクターは以下のステップを実行します。

  1. 所有権を持って含まれている、それぞれの単一カーディナリティーの子ビジネス・オブジェクトを再帰的に処理します。
  2. 所有権を持たずに含まれている、それぞれの単一カーディナリティーの子ビジネス・オブジェクトを処理します。
  3. トップレベルのビジネス・オブジェクトを処理します。
  4. 親/子関係を子エンティティーに格納する単一カーディナリティーの子ビジネス・オブジェクトをそれぞれ処理します。
  5. それぞれの複数カーディナリティーの子ビジネス・オブジェクトを処理します。

Update

統合ブローカーが、データベース内の Exchange Server 項目を更新するようにコネクターに要求すると、コネクターは以下のステップを実行します。

  1. ソース・ビジネス・オブジェクトの基本キー値を使用して、対応するエンティティーをデータベースから検索します。
  2. ソース・ビジネス・オブジェクトの情報を使用して、トップレベルの項目の単一カーディナリティーの子をすべて、再帰的に更新します。
  3. ソース・ビジネス・オブジェクト内の対応する属性に値 CxIgnore が含まれている単純属性を除いて、検索した項目のすべての単純属性を更新します。
  4. ソース・ビジネス・オブジェクトの情報を使用して、検索した項目のすべての配列を処理します。

Delete

統合ブローカーが、データベースから階層ビジネス・オブジェクトを削除するようにコネクターに要求すると、コネクターはトップレベルの項目を物理的に削除します。

イベント

イベントとは、任意の Exchange Server 項目の作成、変更、または削除です。 Exchange インフォメーション・ストアは、イベントが発生したことを Event Listener に通知します。イベントはイベント・ストアに配置されて、イベント ID が指定されます。コネクターはその pollForEvents () メソッドを呼び出し、イベントで表される情報は、イベント通知で検出された ItemURI を使用して検索されて処理されます。

Create

コネクターは、イベント・ストアで Create イベントを検出すると、イベントで指定する型のビジネス・オブジェクトと構造が一致するビジネス・オブジェクトを新規に作成し、ItemURI フィールドにイベントで検出された値を設定します。さらにコネクターは、データベースから関連する項目を検索し、それを使用して新規ビジネス・オブジェクトを設定します。ビジネス・オブジェクトの動詞は Create に設定され、コネクターはこれを統合ブローカーにパブリッシュします。

Update

コネクターは、イベント・ストアで Update イベントを検出すると、イベントで指定する型のビジネス・オブジェクトと構造が一致するビジネス・オブジェクトを新規に作成し、ItemURI フィールドにイベントで検出された値を設定します。さらにコネクターは、データベースから関連する項目を検索し、それを使用して新規ビジネス・オブジェクトを設定します。ビジネス・オブジェクトの動詞は Update に設定され、コネクターはこれを統合ブローカーにパブリッシュします。

Delete

コネクターは、イベント・ストアで Delete イベントを検出すると、イベントで指定する型のビジネス・オブジェクトと構造が一致するビジネス・オブジェクトを新規に作成し、ItemURI フィールドにイベントで検出された値を設定します。ビジネス・オブジェクトの動詞は Delete に設定され、コネクターはこれを統合ブローカーにパブリッシュします。

コネクターは、Exchange Server によって起動される物理削除操作のみをサポートしています。

イベント処理

Exchange Server オブジェクトが作成、更新、または削除されるたびに、コネクターの Event Listener はイベント通知またはイベントをイベント・ストアに保管します。コネクターが pollForEvents() メソッドを呼び出すと、イベント・ストア内の通知が検出されて、その後処理されます。

PollQuantity コネクター・プロパティーは、コネクターがイベント・ストアから検索するイベントの数を指定します。 コネクターが検索するイベントごとに、以下のタスクが実行されます。

表 1 に、イベントが使用する状況値を示します。

表 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 の設定を示します。

表 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 つのコネクター構成プロパティーを設定する必要があります。

表 3. GED を使用可能にするコネクター・プロパティーの設定
プロパティー名 説明 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 にデリバリーします。

Copyright IBM Corp. 2004, 2005