イベント通知

多くの (すべてではない) コネクターは、コラボレーションと パブリッシュ・アンド・サブスクライブ対話を行い、イベント通知を使用してそれらの コラボレーションのイベントを起動します。InterChange Server Collaborations にトリガー・イベントを提供するアプリケーション のコネクターは、これらのイベントについて認識し、関連するデータをサブスクライブして いるコラボレーションに送信する必要があります。以下の図は、イベント通知に関連したコネクターの対話を示しています。



図 29. コネクター内のイベント通知

コネクター・エージェントがイベントを検出および取得する方法は、コネクターごとに異なります。しかし、コネクター・エージェントがイベントをコネクター・コントローラーに送信する 方法、およびコネクター・コントローラーがイベントをコラボレーションに送信する方法は、すべてのコネクターで共通です。

次のサブセクションでは、次の項目を中心に、大半のコネクターの操作に関する一般的概念について 説明します。

この記述は、特定のコネクターの特定の実装について説明するわけではありません。

アプリケーションのイベント通知メカニズムのセットアップ

コネクターにとって、アプリケーション・イベントとは、ビジネス・オブジェクト定義に 関連するアプリケーション・エンティティーのデータに影響を及ぼすすべての操作を指します。

アプリケーション・イベントには、他のタイプもあります。例えばマウスのクリックは、アプリケーションのウィンドウ・システムまたはフォーム・インターフェースに対するイベントです。ただしコネクターは、作成、更新、削除など、アプリケーションのデータ・ストアの内容に影響を及ぼすデータ・レベルのイベントにのみ反応します。

アプリケーションの中には、使いやすいイベント管理および構成可能なイベント・テキストを提供して、明示的にトラップしたりイベントを報告するものもあります。また、離散的で報告可能なイベントの概念を持たず、何かが起きたときにデータベースを黙って更新してしまうアプリケーションもあります。

ほとんどのコネクターでは、実装者がいくつかのアプリケーション構成を実行して、イベント通知機構をコネクターの使用のために設定する必要があります。イベント通知機構は、アプリケーションで実行される操作の番号付きリストです。リストには、アプリケーション・イベント・キュー、E メール受信箱、データベース表などの物理形式が含まれます。

コネクターが使用するイベント通知機構はどのようなものでしょうか。以降のセクションでは、いくつかの一般的なアプローチについて説明します。

アプリケーションにイベント・サポートがある場合

アプリケーションがイベントに基づく場合は、クライアント・アプリケーションが使用するためのイベント通知インターフェース (コネクターなど) を持っていると考えられます。

また、実装者は、アプリケーションにイベント報告テキストを構成できます。このようなアプリケーションにとって、コネクターのイベント通知機構の設定は通常のアプリケーション設定タスクです。

例えば、あるアプリケーションで、特定タイプのイベントが発生したときに実行するスクリプトを インストールでき、スクリプトは通知をイベント受信箱に入れられるとします。

このアプリケーションのコネクターをインストールするには、コネクターのユーザー・アカウントを作成し、追跡するイベントを扱うスクリプトを書き込むか取得します。次にスクリプトをインストールし、各スクリプトを起動するイベント・タイプを指定して、受信箱を作成します。完了すると、コネクター・エージェントは定期的に受信箱の内容を検索し、新規イベントをチェックします。

以下の図は、イベント受信箱を含むアプリケーション構成を示しています。



図 30. イベント通知でのイベント受信箱の使用例

特定の操作が発生したときに、E メール・メッセージを作成したりイベント・キューに書き込むことができる内部ワークフロー・ システムを持つアプリケーションもあります。図 31 に、ビジネス・オブジェクトとイベントが定義されているビジネス・オブジェクト・リポジトリー を持つアプリケーションを示します。この図で、Customer はアプリケーション・ビジネス・オブジェクトを示し、Create、Delete、および Update はビジネス・オブジェクトに関連するイベントのタイプを示します。

Customer.Update などのビジネス・オブジェクト・イベントが発生すると、ワークフロー・ システムに送信されます。ワークフロー・システムは、エントリーをアプリケーション・ データベースのイベント表に配置します。

図 31. 例: イベント通知でのアプリケーション・ワークフローの使用


アプリケーションにイベント・サポートがない場合

コネクターがアプリケーション・イベントと対話する方法で適切なのは、アプリケーションの API を介する方法です。API は、アプリケーションのデータ・モデルとロジックを強化するフレームワークを提供します。ただし、アプリケーション API の中には、イベント通知のネイティブ・サポートを提供しないものもあります。

このようなアプリケーションからコネクターがイベント通知を受け取る 1 つの方法は、アプリケーション・データベースとの対話です。例えば実装者は、行への更新を検出するトリガーを Employee 表に設定できます。更新が発生すると、トリガーは更新情報を特殊な表に挿入します。このイベント表内の新規の行は、イベント通知を表します。コネクターは SQL 照会を使用して、この表から新規イベントを検索できます。

図 32 に、この方法を示します。

図 32. 例: イベント通知でのデータベースの使用


図 32 にあるアプリケーション・データベース には、Employee 表のレコード作成から生じるトリガーがあります。アプリケーションが新規レコードを挿入するたびに、トリガーはイベント表に行を作成します。行には、新規従業員レコード (姓および従業員 ID)、システム時刻、およびイベント・タイプ Create というキー値が含まれます。

イベントの検出

コネクター・エージェントは、イベント通知機構で新規イベントをポーリングすることによって、アプリケーション・イベントを認識します。

ポーリング方式は完全にアプリケーション固有で、コネクターが使用するイベント通知機構に基づいています。

ポーリングは 構成可能です。System Manager を使用してコネクターを構成したときは、次のことを行うことができます。

コラボレーションがアプリケーション・イベントを要求しない場合、コネクター・エージェントはアプリケーションにポーリングする必要はありません。特定のアプリケーションがコラボレーションに参加していてもイベントのソースではない場合、ポーリング頻度 を「no」に設定することによって、コネクター・エージェントのポーリングを停止できます。

イベントの処理

イベントを検出すると、コネクター・エージェントは次のことを実行します。

アプリケーション・イベントをビジネス・オブジェクト定義と関連付ける方法

コネクター・エージェントがイベントを検索するときには、そのイベントにコラボレーションがサブスクライブしているかどうかを判別する必要があります。ただし、コラボレーションがビジネス・オブジェクト・タイプ.動詞 の 形式でイベントをサブスクライブするので、コネクターはまずイベントを表すビジネス・オブジェクト 定義と動詞を決定する必要があります。

表 6 に 示されているように、コネクター・エージェントはイベント・テキストを 使用して、イベントをビジネス・オブジェクト定義と動詞に関連付けます。


表 6. イベント・テキストとビジネス・オブジェクト形式
アプリケーション・イベント内のデータ型 使用法
アプリケーション・エンティティー・タイプ Customer、Part、Item 関連付けられたビジネス・オブジェクト定義の決定
発生した動作 Create、Update、Delete ビジネス・オブジェクトのアクティブな動詞の決定

例えば、コネクターは次のイベント・テキストを Employee.Create ビジネス・オブジェクトに関連付けることができます。

1997.10.19.12:50.22 employee created lname="como" id="101961"
 

このイベント・テキストには、次の内容が含まれます。

この例は単純ですが、他のタイプのイベント・テキストは、コネクター・エージェントによる処理をさらに要求する可能性があります。

サブスクリプションのチェック

コネクター・エージェントがイベントをビジネス・オブジェクト定義と動詞に関連付けると、内部のサブスクリプション・リストをチェックして、そのイベントにコラボレーションがサブスクライブしているかどうかを検索します。コネクター・コントローラーは、サブスクリプションが変更するたびにコネクター・エージェントを更新するので、サブスクリプション・リストは常に最新のものです。

イベントが現在のサブスクリプションと一致しない場合、コネクター・エージェントは警告メッセージをログに記録し、イベントを破棄します。

ビジネス・オブジェクトの作成

イベントにサブスクリプションがある場合、コネクター・エージェントはビジネス・オブジェクトを作成し、キー値を使用してアプリケーション・データを検索して、ビジネス・オブジェクトに加えます。"ビジネス・オブジェクトの 構成とデコンストラクション"では、ビジネス・オブジェクトを作成する プロセスについて説明します。

コネクター・コントローラーへのビジネス・オブジェクトの送信

コネクター・エージェントは、使用中のトランスポート (メッセージングまたは CORBA) によってビジネス・オブジェクトをコネクター・コントローラーに送信します。

コネクター・エージェントが認識しているのは、ビジネス・オブジェクトにサブスクリプションがあるということのみで、どのコラボレーション (単数または複数) がサブスクライバーなのかは認識していません。コネクター・コントローラーは、コラボレーションへのデリバリーを行います。

イベントのアーカイブ

アプリケーション・ イベント・アーカイブは、トラブルシューティングやレコードの保存に有効です。イベント・アーカイブには、各イベントについての次のような状況情報が含まれます。

アプリケーションがイベント・アーカイブ機能を提供する場合、一般的にコネクターはそれを使用します。イベント・アーカイブ機能をサポートしないアプリケーションのコネクターは、独自のイベント・アーカイブ機能を持つ場合があります。例えば、コネクターのイベント通知機構が 図 32 のようなデータベース機構である場合、データベースのトリガーは削除されたイベントをアーカイブ表にコピーできます。

Copyright IBM Corp. 1997, 2004