(57)【特許請求の範囲】
【請求項１】
データ処理システムにおけるシステム管理イベントをレポートする方法であって、
グローバルネームスペースにおけるイベントソースオブジョクトインターフェースを提示するイベントソースオブジェクトを提供し、
それぞれがディストリビュータオブジェクトインターフェースを提示する複数のディストリビュータオブジェクトを提供し、
前記イベントソースオブジェクトを前記複数のディストリビュータオブジェクトの内の１つ又は複数のディストリビュータオブジェクトに登録し、
１つ又は複数のイベントシンクオブジェクトを前記複数のディストリビュータオブジェクトの内の１つ又は複数のディストリビュータオブジェクトに登録し、
前記イベントソースオブジェクトによるイベントの検出に応答して前記イベントソースオブジェクトにおけるイベントソースレポートを発生し、
前記イベントソースオブジェクトから、前記イベントソースオブジェクトを登録した前記ディストリビュータオブジェクトに前記イベントソースオブジェクトを送り、
前記イベントソースオブジェクトを登録した前記ディストリビュータオブジェクトで前記イベントソースレポートを受け取り、
前記イベントソースを登録した前記ディストリビュータオブジェクトから前記ディストリビュータオブジェクトで登録された前記イベントシンクオブジェクトに前記イベントソースレポートを送ることを備えたことを特徴とする方法。
【請求項２】
前記複数のディストリビュータオブジェクトを用いて、前記イベントソースオブジェクトと前記イベントシンクオブジェクトを１つのセットにグループ化することをさらに備えた請求項１に記載の方法。
【請求項３】
前記複数のディストリビュータオブジェクトの１つがネットワークドメイン上で、一組のアドミニストレータを表すのに使用されることを特徴とする請求項２に記載の方法。
【請求項４】
対応するイベントソースオブジェクトが発生することができる１つ又は複数のイベントを識別するイベントセットを含む前記イベントソースオブジェクトのそれぞれに対してオブジェクト定義を与え、
前記対応するイベントソースオブジェクトから分離した格納構造に前記オブジェクト定義のそれぞれを格納する段階をさらに備えたことを特徴とする請求項３に記載の方法。
【請求項５】
前記格納構造がプロパティセットを備えたことを特徴とする請求項１に記載の方法。
【請求項６】
データ処理システムにおけるシステム管理イベントをレポートする、コンピュータにより制御される装置であって、
グローバルネームスペースにおけるイベントソースオブジョクトインターフェースを提示するイベントソースオブジェクトを提供する手段と、
それぞれがディストリビュータオブジェクトインターフェースを提示する複数のディストリビュータオブジェクトを提供する手段と、
前記イベントソースオブジェクトを前記複数のディストリビュータオブジェクトの内の１つ又は複数のディストリビュータオブジェクトに登録する手段と、
１つ又は複数のイベントシンクオブジェクトを前記複数のディストリビュータオブジェクトの内の１つ又は複数のディストリビュータオブジェクトに登録する手段と、
前記イベントソースオブジェクトによるイベントの検出に応答して前記イベントソースオブジェクトにおけるイベントソースレポートを発生する手段と、
前記イベントソースオブジェクトから、前記イベントソースオブジェクトを登録した前記ディストリビュータオブジェクトに前記イベントソースオブジェクトを送る手段と、
前記イベントソースオブジェクトを登録した前記ディストリビュータオブジェクトで前記イベントソースレポートを受け取る手段と、
前記イベントソースを登録した前記ディストリビュータオブジェクトから前記ディストリビュータオブジェクトで登録された前記イベントシンクオブジェクトに前記イベントソースレポートを送る手段と
を備えることを特徴とするコンピュータにより制御される装置。
【請求項７】
対応するイベントソースオブジェクトが発生することができる１つ又は複数のイベントを識別するイベントセットを含む前記イベントソースオブジェクトのそれぞれに対してオブジェクト定義を与える手段と、
前記対応するイベントソースオブジェクトから分離した格納構造に前記オブジェクト定義のそれぞれを格納する手段を
さらに備えることを特徴とする請求項６記載のコンピュータにより制御される装置。
【請求項８】
コンピュータに実行させる方法であって、
イベントソースオブジェクトにおけるイベントの発生に応答してイベントレポートを発生することができる少なくとも一つのイベントソースオブジェクトを前記コンピュータのメモリ手段に与え、
前記メモリ手段に第１のディストリビュータオブジェクトと第２のディストリビュータオブジェクトを与え、該第１のディストリビュータオブジェクトは前記第２のディストリビュータオブジェクトにたいして前記イベントレポートを配布する役割をもち、
前記イベントソースオブジェクトがグローバルネームスペースを介して他の見ることができるオブジェクトを通知することができるイベントのリストを作成し、
前記グローバルネームスペースを介して前記イベントソースオブジェクトにアクセスし、前記第１のディストリビュータオブジェクトを前記イベントソースオブジェクトに登録して前記イベントソースオブジェクトから前記イベントレポートを受け取り、
前記グローバルネームスペースにおけるインターフェースを介して前記第２のディストリビュータオブジェクトを前記第１のディストリビュータオブジェクトに登録して前記イベントレポートを受け取り、
前記グローバルネームスペースにおけるインターフェースを介して前記イベントシンクを前記第２のディストリビュータオブジェクトに登録して前記イベントレポートを受け取り、
前記イベントソースオブジェクトにおいて前記イベントの通知を受け取り、
イベントソースオブジェクトにおいてイベントレポートを発生し、
前記第１のディストリビュータオブジェクトに前記イベントレポートを送り、
前記第２のディストリビュータオブジェクトから第１のディストリビュータオブジェクトへフィルタリング情報を提供し、前記フィルタリング情報は、前記第２のディストリビュータオブジェクトが受け取りを望むイベントレポートの形式を特定し、
前記フィルタリング情報が、前記第２のディストリビュータオブジェクトがイベントレポートの受け取りを望むことを指示した場合には、前記イベントレポートを前記第１のディストリビュータオブジェクトから第２のディストリビュータオブジェクトに送ることを
含むことを特徴とする方法。
【請求項９】
コンピュータにより制御される装置であって、
イベントソースオブジェクトにおけるイベントの発生に応答してイベントレポートを発生することができる少なくとも一つのイベントソースオブジェクトを前記コンピュータのメモリ手段に与える手段と、
前記メモリ手段に第１のディストリビュータオブジェクトと第２のディストリビュータオブジェクトを与え、該第１のディストリビュータオブジェクトは前記第２のディストリビュータオブジェクトにたいして前記イベントレポートを配布する役割をもつ手段と、
前記イベントソースオブジェクトがグローバルネームスペースを介して他の見ることができるオブジェクトを通知することができるイベントのリストを作成する手段と、
前記グローバルネームスペースを介して前記イベントソースオブジェクトにアクセスし、前記第１のディストリビュータオブジェクトを前記イベントソースオブジェクトに登録して前記イベントソースオブジェクトから前記イベントレポートを受け取る手段と、
前記グローバルネームスペースにおけるインターフェースを介して前記第２のディストリビュータオブジェクトを前記第１のディストリビュータオブジェクトに登録して前記イベントレポートを受け取る手段と、
前記グローバルネームスペースにおけるインターフェースを介して前記イベントシンクを前記第２のディストリビュータオブジェクトに登録して前記イベントレポートを受け取る手段と、
前記イベントソースオブジェクトにおいて前記イベントの通知を受け取る手段と、
前記イベントソースオブジェクトにおいてイベントレポートを発生する手段と、
前記第１のディストリビュータオブジェクトに前記イベントレポートを送る手段と、
前記第２のディストリビュータオブジェクトから第１のディストリビュータオブジェクトへフィルタリング情報を提供し、前記フィルタリング情報が、前記第２のディストリビュータオブジェクトが受け取りを望むイベントレポートの形式を特定する手段と、
前記フィルタリング情報が、前記第２のディストリビュータオブジェクトがイベントレポートの受け取りを望むことを指示した場合には、前記イベントレポートを前記第１のディストリビュータオブジェクトから第２のディストリビュータオブジェクトに送る手段と
を備えることを特徴とする装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は一般にデータ処理システムに係り、より詳細には、データ処理システムにおいてシステム管理イベント（事象）を報告するためのイベントシステムに係る。
【０００２】
【従来の技術】
多くの分散型オペレーティングシステムは、イベントの管理が困難である。特に、これらのオペレーティングシステムは、どこでイベントが発生したかを決定しそしてそのイベントに関する有用な情報を得ることが困難である。このようなシステムは、イベントを立ち上げそして送信する便利なアーキテクチャを備えていない。
【０００３】
【発明の構成】
本発明の特徴によれば、データ処理システムにおいてオブジェクトのグローバルなネームスペースを設けてメモリ手段に記憶する方法が実施される。イベントソースオブジェクトが設けられて、そのイベントソースオブジェクトにおけるイベントに応答してイベントレポートオブジェクトが発生される。イベントレポートオブジェクトを受け取るためのイベントシンクオブジェクトが設けられ、そしてイベントソースオブジェクトからのイベントレポートオブジェクトをイベントシンクオブジェクトへ分配するためのディストリビュータオブジェクトも設けられる。イベントソースオブジェクト、イベントシンクオブジェクト、ディストリビュータオブジェクト及びイベントレポートオブジェクトは、全て、グローバルなネームスペース内に見ることができる。イベントソースオブジェクトの１つにおいてイベントがトリガーされ、そしてイベントに応答してイベントレポートが発生される。イベントがトリガーされたイベントソースオブジェクトにおいてイベントレポートが発生される。イベントレポートオブジェクトはディストリビュータオブジェクトへ送られる。ディストリビュータオブジェクトは、イベントレポートオブジェクトをイベントシンクオブジェクトへ送り、イベントシンクオブジェクトにトリガーされたイベントを知らせる。ディストリビュータオブジェクトには、レポートオブジェクトをどこに送るべきかを決定するように検査されるフィルタが設けられる。
【０００４】
本発明の別の特徴によれば、複数のイベントソースオブジェクトが複数のイベントシンクオブジェクト及び１つのディストリビュータオブジェクトと共に設けられる。イベントシンクオブジェクトは、イベントソースオブジェクトにおけるイベントが知らされるようディストリビュータオブジェクトに登録される。イベントに応答してイベントソースオブジェクトにイベントレポートオブジェクトが発生される。イベントレポートオブジェクトはディストリビュータオブジェクトへ送られ、そしてディストリビュータオブジェクトは、どのイベントシンクオブジェクトがイベントレポートオブジェクトを受け取るべきかを決定する。この決定がなされると、イベントレポートオブジェクトはその決定されたイベントシンクオブジェクトへ送られる。
【０００５】
本発明の更に別の特徴によれば、記憶装置を有するデータ処理システムにおける方法が実施される。この方法において、イベントソースオブジェクトが記憶装置に記憶される。イベントソースオブジェクトは、イベントを立ち上げそしてその発生されたイベントを報告するイベントレポートを発生する。イベントシンクオブジェクトも記憶装置に記憶される。又、イベントソースホルダオブジェクトが記憶装置に記憶される。このイベントソースホルダオブジェクトは、イベントソースオブジェクトにイベントが発生した際にイベントレポートを受け取るように登録されたイベントソースオブジェクトによるレジストレーションのレジスタを維持する。イベントソースオブジェクトにおいてイベントがトリガーされそしてイベントソースホルダオブジェクトに登録されたイベントシンクオブジェクトへ送られる。
【０００６】
本発明の更に別の特徴によれば、イベントソースオブジェクトが記憶装置に記憶されるような方法が実施される。イベントソースオブジェクトは、１組のイベントを立ち上げることができる。イベントソースオブジェクトに関するタイプ情報が記憶装置に記憶される。このタイプ情報は、イベントソースオブジェクトが立ち上げる１組のイベントを指定する。
【０００７】
本発明の更に別の特徴によれば、少なくとも１つのイベントソースオブジェクトがメモリ手段に設けられ、イベントソースオブジェクトにおけるイベントに応答してイベントレポートが発生される。更に、第１のディストリビュータオブジェクト及び第２のディストリビュータオブジェクトがメモリ手段に設けられる。第１のディストリビュータオブジェクトは、イベントソースオブジェクトによってイベントレポートが発生されたときにこれを第２のディストリビュータオブジェクトに分配するように働く。イベントソースオブジェクトにおいてイベントがトリガーされ、そしてイベントソースオブジェクトにイベントレポートが発生される。このイベントレポートは、第１のディストリビュータオブジェクトへ送られる。第２のディストリビュータオブジェクトから第１のディストリビュータオブジェクトへフィルタ情報が与えられる。このフィルタ情報は、第２のディストリビュータオブジェクトが受け取ろうとするイベントレポートのタイプを指定する。第２のディストリビュータオブジェクトがイベントレポートを受け取ろうとすることをフィルタ情報が指示する場合には、イベントレポートが第１のディストリビュータオブジェクトから第２のディストリビュータオブジェクトへ送られる。
【０００８】
本発明の更に別の特徴によれば、イベントに応答してイベントレポートを発生するためのイベントソースオブジェクトが、イベントレポートを受け取るためのイベントシンクオブジェクトと共に設けられる。この方法において、イベントシンクオブジェクトは、イベントソースオブジェクトからイベントレポートを受け取るように登録される。レジストレーションの一部として、イベントシンクオブジェクトにより受け取られるイベントレポートにより呼び出されるべきインターフェイスにおけるファンクションのインスタンスが指定される。
【０００９】
【実施例】
本発明の好ましい実施例は、システム管理イベントを発生するためのイベントシステムアーキテクチャを提供する。このアーキテクチャは容易に使用できそして最小のオーバーヘッドしか必要としないように設計される。システム管理イベントは、ある状態の処理を指示する。
【００１０】
図１は、本発明の好ましい実施例を実施するためのデータ処理システム１０を示している。本発明を実施するのに他の形式のデータ処理システムも使用できることが当業者に明らかであろう。データ処理システム１０は、システムの活動を監督する中央処理ユニット（ＣＰＵ）１２を備えている。ＣＰＵ１２は、メモリ１４、キーボード１６、ビデオディスプレイ１８、プリンタ１９及びマウス２４と通信する。メモリ１４は、イベントシステム２２を含むオブジェクト指向のオペレーティングシステム２０を保持する。好ましい実施例のオペレーティングシステム２０は、オブジェクト指向のオペレーティングシステムであるが、本発明は、このようなオブジェクト指向の環境に限定されるものでないことが当業者に明らかであろう。キーボード１６及びマウス２４は、従来の入力装置であり、ビデオディスプレイ１８及びプリンタ１９は、従来の出力装置である。
【００１１】
イベントシステム２２は、システム１０における特定イベントの発生を報告するイベントレポートの発生及び送信を管理する役割を果たす。本明細書で使用する「イベント（事象）」とは、イベントを知らせようとする行き先プロセスに対して非同期に起きる状態である。状態が起きるプロセスは「イベントソース」であり、一方、イベントが報告されるプロセスが「イベントシンク」である。「イベントレポート」は、イベントを報告するもので、イベントソースからイベントシンクへ送信される（以下で詳細に述べる）。イベントソース及びイベントシンクは、システム１０の分布したネームスペースにおいて見ることのできるオブジェクトである。分布したネームスペースは、システム１０に記憶される「オブジェクトのネーム（名前）」（以下で詳細に述べる）の論理的な編成である。
【００１２】
本発明の好ましい実施例は、システム１０（図１）においてアプリケーションプログラムを走らせて、イベント又はイベントのソースに関する知識をもたずに外部イベントに関する情報を発生及び受信できるようにする。これは、イベントシンク２７（図２）を、イベントレポート２５を受け取るようにイベントソース２３に登録させる手段を形成する。イベントシンク２７は、次いで、イベントの発生に応答するためにイベントハンドラを呼び出す。好ましい実施例の設計は、システムの分布したネームスペースを利用(leverage)して、イベントシンクに登録させるための場所を与える。又、好ましい実施例は、イベントソースからイベントシンクへイベントレポートを送信する手段も提供する。
【００１３】
イベントレポート２５は、図２に示すように、単一のイベントソース２３から発生して単一のイベントシンク２７へ送信する必要はないことに注意されたい。多くの場合に、図３に示すように、単一のイベントソース２３から多数のイベントシンク２７、２７’又は２７”へ単一のイベントレポート２５が送信される。更に、図４に示すように、単一のイベントシンク２７が、異なるイベントソース２３及び２３’から各々異なるイベントレポート２５及び２５’を受け取ることもある。更に、単一のイベントソース２３が異なるイベントレポート２５及び２５’（図５）を発生し、これらが各々異なるイベントシンク２７及び２７’へ向けられることもある。一般に、イベントソースは、多数又は単一のイベントレポートを発生し、これらが１つ又は多数のイベントシンクへ向けられる。
【００１４】
本発明の好ましい実施例がいかに動作するかを理解するために、ここで使用される幾つかのプログラミングコンセプトを最初に理解することが必要であろう。本発明の好ましい実施例によって使用されるコンセプトの１つは、「オブジェクト」の考え方である。「オブジェクト」とは、２つのもの、即ちオブジェクトの内部状態を指定するデータと、データに対して作用するファンクションとの組み合わせであるエンティティである。
【００１５】
本発明の好ましい実施例は、オブジェクト指向のオペレーティングシステム２０（図１）に使用するように設計される。オペレーティングシステム２０は、その基礎であるオブジェクトモデルをサポートする。従って、システム内の多数のコンポーネントがオブジェクトとしてモデリングされる。例えば、イベントソース２３（図２）及びイベントシンク２７は、オブジェクトとしてモデリングされる。イベントレポートは、特性を有するオブジェクトである。他の当該オブジェクトは、以下で詳細に述べる。これら全てのオブジェクトは、分布されたネームスペースにおいて見ることができ、従って、それらの特性は容易にアクセスできる。
【００１６】
密接に関連したコンセプトは「インターフェイス」のコンセプトである。「インターフェイス」とは、ネームの付けられた単位へと編成される意味的に関連したファンクションのグループである（ネームは、インターフェイスの識別子である）。インターフェイスは、定義によれば、インスタンス生成を行わず（即ち、インターフェイスの定義は、インターフェイスにおいて識別されるファンクションを実行するためのコードを含まない）、むしろ、インターフェイスは、ファンクションに対して１組のシグネチャを指定する。「インスタンス生成」とは、オブジェクトにおいてオペレーションを呼び出すことができるようにオブジェクトを表すメモリ内構造体を形成するプロセスを指す。オブジェクトがインターフェイスを「サポート」するときには、オブジェクトは、インターフェイスによって指定されたファンクションに対するコードを与える。従って、インターフェイスをサポートするオブジェクトは、インターフェイスのファンクションを実施するためのコードを与えるという役割を果たす。与えられるコードは、インターフェイスによって指定されたファンクションのシグネチャに適合しなければならない（即ち、コードは、インターフェイスにおいて指定されたものと同じパラメータ及び機能を有していなければならない）。従って、インターフェイスは、オブジェクトが適合しなければならない標準と見なすことができる。
【００１７】
インターフェイスは、既存のアプリケーションに影響しないように新たなインターフェイスを開発できるようにすることにより拡張性をサポートする。又、インターフェイスは、オペレーティングシステム２０によって採用されたクライエント／サーバモデルにも適合する。特に、インターフェイスは、クライエントオブジェクトにサービスするのに使用される。サーバオブジェクトは、インターフェイスをサポートするように定められ、インターフェイスは、サーバオブジェクトのサービスを与えるファンクションを定義する。例えば、イベントソース２３（図２）は、サーバオブジェクトとみなすことができ、イベントシンク２７は、クライエントオブジェクトとみなすことができる。
【００１８】
インターフェイスインスタンスのランタイム表示は、そのインターフェイスに対して定められたファンクションへのアクセスを与えるデータ構造体である。インターフェイスインスタンスは、ポインタを用いてクライエントにより参照される。図６に示すように、インターフェイスポインタ２８は、インターフェイスのインスタンスをサポートするオブジェクトのオブジェクトデータ２９におけるエントリを指す。特に、インターフェイスポインタは、仮想テーブル（即ち、Ｃ＋＋プログラミングで一般に使用されるようなｖｔａｂｌｅ）に対するポインタを保持するオブジェクトデータ２９のエントリを指す。ｖｔａｂｌｅ３１は、オブジェクトによってサポートされるファンクション３３のインスタンスを指す一連のポインタを保持する。インターフェイスに含まれたファンクションのポインタは、ｖｔａｂｌｅ３１に与えられたものの中にある。
【００１９】
分布されたネームスペース２８における各オブジェクトは、定義によれば、ＩＵｎｋｎｏｗｎインターフェイスをサポートしなければならない（即ち、全てのオブジェクトは、ＩＵｎｋｎｏｗｎインターフェイスを継承するインターフェイスをサポートする）。ＩＵｎｋｎｏｗｎインターフェイスとは、オブジェクトが特定のインターフェイスをサポートするかどうかを問い合わせるためのファンクションＱｕｅｒｙＩｎｔｅｒｆａｃｅ（）を含むオペレーティングシステムによって与えられる標準化されたインターフェイスである。ＱｕｅｒｙＩｎｔｅｒｆａｃｅ（）ファンクションは、ファンクションのパラメータにおいて指定されたインターフェイスのインスタンスを指すポインタを返送する。一般に、インターフェイスのインスタンスの一部分であるファンクションが呼び出されたときは、ＱｕｅｒｙＩｎｔｅｒｆａｃｅ（）ファンクションを最初に呼び出さねばならない。
【００２０】
ＱｕｅｒｙＩｎｔｅｒｆａｃｅ（）ファンクションによって返送されるごときインターフェイスポインタは、オブジェクトとクライエントとの間の接続として働く。しかしながら、外部エンティティがオブジェクトが付与したインターフェイスポインタを発見することは困難であり、そして外部エンティティがオブジェクトが保持する他のオブジェクトに対するインターフェイスポインタを発見することも困難である。これらの問題を克服するために、オペレーティングシステム２０は、ソフトウェアの接続子を与える。ソフトウェア接続子は、オブジェクトを一緒に接続すると共に、イベントによってアクセスできるオブジェクトのインターフェイスを知らせるための標準化されたインターフェイスである。一般に、本発明の好ましい実施例におけるオブジェクト間の接続は、インターフェイスポインタをあるオブジェクトから別のオブジェクトへ直接通してオブジェクト間に意味のある接続を確立することにより実現される。両方のオブジェクトは、少なくとも１つの接続インターフェイスを共有しなければならない。ソフトウェア接続子は、本発明の好ましい実施例では、イベントソースとイベントシンクとの間に接続を確立するのに使用される。このプロセスは、「レジストレーション(registration)」として以下に説明する。
【００２１】
イベントシンクがイベントレポートを受け取るためにイベントソースにいかに登録するかを説明する前に、イベントを発生するオブジェクトに対してイベントをいかに定めるかを考慮するのが有用であろう。一般に、オブジェクトは、発生することのできるイベントのイベントセット（組）を指定する。イベントセットは、オブジェクトの定義の一部分であり、オブジェクトに対して与えられるタイプ情報において記述される。タイプ情報は、オブジェクトとは別の記憶構造体に記憶される。タイプ情報は、そのセットのオブジェクトにおいてどのイベントが与えられるかを指定する。ＤｉｓｋＥｖｅｎｔＳｅｔとして知られているイベントをサポートするオブジェクトを一例として考える。このイベントセットは、次のように識別される。
eventsetDiskEventSet
｛DiskSpaceLow(DiskSpaceEvent psEvent);
DiskFull(DiskSpaceEvent psEvent);
DiskError(DiskErrorEvent psEvent)｝
ＤｉｓｋＳｐａｃｅＥｖｅｎｔは、次のように定義される特性セット(プロパティセット)である。
【００２２】
0003782477.tif 000002
【００２３】
レジストレーションプロセスを詳細に説明する前に、このレジストレーションプロセスにおいてある役割を演じるオブジェクトを最初に紹介するのが有用であろう。図７は、レジストレーションにおいてある役割を演じるオブジェクトが使用される例示的な状態を示している。図７は、プリンタ４６がイベントレポート（ジャムを受ける）を発生しそしてこれをシンクポップアップオブジェクト４４へ送り、該オブジェクトがポップアップメッセージをビデオディスプレイ１８（図１）に発生し、これがユーザによって見られるような例を示している。上記のように、イベントソースオブジェクト４２は、イベントレポートを発生するオブジェクトである。イベントソースオブジェクト４２は、接続子をコンテナオブジェクトに記憶するファンクションを有する標準化されたインターフェイスであるＩＣｏｎｎｅｃｔｉｏｎＣｏｎｔａｉｎｅｒインターフェイスをサポートする。イベントソースホルダオブジェクト５０は、イベントソースオブジェクトに対して登録されたイベントシンクのリストを維持するオブジェクトである。イベントソースホルダオブジェクト５０は、イベントレポートを各登録されたイベントシンクオブジェクトへマルチキャスティングするという役割を果たす。図７の例では、イベントソースホルダオブジェクト５０は、プリンタ４６からイベントレポートを受け取るように登録された全てのイベントシンクのリストを含んでいる。イベントソースインターフェイスホルダオブジェクト５４は、接続オブジェクトであって（即ち、イベントシンクオブジェクトに対するインターフェイスポインタを保持する）、イベントシンクオブジェクトへの接続に関連した状態を保持するオブジェクトである。図７において、イベントソースインターフェイスホルダオブジェクト５０は、単一イベントシンクレジストレーションを保持する（即ち、イベントシンクオブジェクトのレジストレーションからの１つのエントリを保持する）。
【００２４】
図８は、イベントシンクオブジェクトのレジストレーションを得てイベントソースからイベントレポートを受信するために実行されるステップのフローチャートである。個別の接続ツールにおいてこれらのステップを実施するＣ＋＋コードは、次の通りである。
pconSink->QueryInterface(IID_ ISystemEventSink,&pesnkSink);
//Setup the source side of the registration
pSource->QueryInterface(IID_IConnectionContainer,&piccSource); piccSource->NewConnection(IID_IEventSet,&pconSource);
//Actually perform the connection.
pconSource->Connect(pesnkSink,IID_ISystemEventSink,                           CONNECTFLAGS_PERSIST)
【００２５】
最初に、イベントシンクオブジェクト（即ち、図７の「ｐＳｉｎｋ」）を指すポインタが得られる（図８のステップ５６）。次いで、イベントソースオブジェクトを指すポインタが得られる（図８のステップ６２）。より詳細には、上記コードセグメントの第２命令においてＱｕｅｒｙＩｎｔｅｒｆａｃｅ（）ファンクションが呼び出され、イベントソースオブジェクト４２（図７の「ｐＳｏｕｒｃｅ」によって指示された）がＩＣｏｎｎｅｃｔｉｏｎＣｏｎｔａｉｎｅｒインターフェイスをサポートしそしてそれにより得られるＩＣｏｎｎｅｃｔｉｏｎＣｏｎｔａｉｎｅｒインターフェイスのインスタンスに対するポインタを「ｐｉｃｃＳｏｕｒｃｅ」に記憶するかどうかを判断する。次いで、イベントソースオブジェクトへの接続（即ち、オブジェクトへの接続を容易にするインターフェイスのポインタ）が得られる（図８のステップ６４）。イベントソースオブジェクトのＩＣｏｎｎｅｃｔｉｏｎＣｏｎｔａｉｎｅｒインターフェイス内に与えられるＮｅｗＣｏｎｎｅｃｔｉｏｎ呼び出し方法を用いて、接続子が「ｐｃｏｎＳｏｕｒｃｅ」に記憶される。
【００２６】
次いで、接続ファンクションが呼び出されて、接続が形成される（図８のステップ６６）。上記のコードセグメントにおいては、イベントシンクオブジェクト４０によってサポートされるＩＳｙｓｔｅｍＥｖｅｎｔＳｉｎｋインターフェイス内の接続ファンクションが呼び出されて、イベントシンクオブジェクト４０をイベントソースオブジェクト４２へ接続する。
【００２７】
本発明の好ましい実施例のイベントレポートは、主として、変数のアレーとして表される。変数は、キャラクタデータ、整数データ及び小数点データを含む基本的なデータ形式を保持することのできるデータ構造体である。イベントを記述するコンテクスト情報を含む特性セットは、変数にロードされる。この変数のアレーは、イベントレポートタイプとして通される。各イベントレポートは、永続的に記憶されるイベントレポートオブジェクトであって分散されたネームスペース内に見ることのできるイベントレポートオブジェクトへとカプセル化することができる。変数アレー内に保持された特性の１つは、クラスＩＤである。このクラスＩＤは、イベントレポートオブジェクトを形成するのに使用される。
【００２８】
図９は、イベントソースオブジェクトからイベントシンクオブジェクトへイベントレポートを通すために実行されるステップの高レベルフローチャートである。最初に、イベントソースオブジェクトによってイベントレポートが形成される（ステップ７０）。イベントソースホルダは、記憶されたレジスタを用いてイベントレポートの出力をフィルタし、そしてレポートを、登録されたイベントシンクへ送信する（ステップ７２）。イベントシンクは、イベントレポートを受け取りそしてそのイベントレポートに応答するためにイベントハンドラを呼び出す（ステップ７４）。次いで、イベントハンドラが実行する（ステップ７８）。イベントハンドラは、イベントレポートに応答して活動を生じさせてもよいし、イベントレポートを単に無視してもよい。イベントレポートにいかに応答するかの種々様々なオプションがイベントハンドラに得られる。
【００２９】
又、システムは、「ディストリビュータオブジェクト」として知られている特殊なオブジェクトを含んでもよい。ディストリビュータオブジェクトは、イベントレポートをイベントシンクへルート指定するためにグローバルなネームスペースに存在するオブジェクトである。図１０は、イベントソース８０、８０’及び８０”からイベントレポートを受け取るディストリビュータオブジェクト８２を示している。このディストリビュータオブジェクト８２は、イベントソース及びイベントシンクの両方の機能を与える。又、ディストリビュータオブジェクト８２は、イベントソース８０、８０’及び８０”から受け取ったイベントレポートをイベントシンク８４、８４’及び８４”へルート指定する。ディストリビュータオブジェクト８２は、イベントソース及びシンクをセットとしてグループ分けするのに有用である。例えば、ディストリビュータは、全てのアドミニストレータを所与のドメインにおいて表すのに使用できる。
【００３０】
又、ディストリビュータオブジェクトは、イベントレポートを他のディストリビュータオブジェクトへ伝播するように構成することもできる。図１１は、ディストリビュータオブジェクト８８がイベントソース８６からイベントレポート９２を受け取りそしてそのイベントレポートを第２のディストリビュータオブジェクト９０へ伝播する状態の例を示している。この形式の伝播と、通常のレジストレーションで生じる伝播との間の相違は、第２のディストリビュータオブジェクト９０に記憶されたフィルタ情報９４が第１のディストリビュータオブジェクト８８に送られることである。このフィルタ情報は、ディストリビュータオブジェクト９０が得ようとしているのはどの形式のイベントレポートであるかを指定する。第１のディストリビュータオブジェクト８８は、到来するイベントレポート９２をフィルタして、第２のディストリビュータオブジェクト９０がイベントレポートを受け取ろうとしているかどうかを判断する。フィルタ情報９４は、第２のディストリビュータオブジェクトに記憶され、イベントレポートを第２のディストリビュータオブジェクトに伝播するように登録されたいかなるディストリビュータオブジェクトにも得られるようになっている。
【００３１】
オペレーティングシステム２０は、多数のディスパッチインターフェイスを備えている。この点において、ディスパッチインターフェイスは、米国ワシントン州レドモンドのマイクロソフト社により確立された「ソフトウェアオブジェクトリンキングアンドエンベッディング（ＯＬＥ）２．０プロトコルに定められたものである。ディスパッチインターフェイスは、インターフェイスが未知であるオブジェクトの方法、特性及びデータメンバーへアクセスできるようにする。各ディスパッチインターフェイスは、発呼者が特性値を検索及び送信できるようにするファンクションを有している。イベントディストリビュータオブジェクトは、いかなるディスパッチ可能なインターフェイスも呼び出すことができる。パラメータ情報は、イベントシンクオブジェクトに対するレジストレーション情報と共に記憶される。特性は、各レジストレーションがそれ自身の呼び出されるべきインターフェイスをもつことができるようにイベントソースにおいてソフトウェア接続子を経てイベントシンクへ送られる。例えば、この機能は、システムイベントが、イベントシンクのレジストレーションに関連した独特のインターフェイスへの呼び出しを介してワード処理文書のプリントをトリガーできるようにする。
【００３２】
レジストレーションは、ある時間にわたって維持できることを理解されたい。レジストレーションは、厳密な１回現象ではない。レジストレーションは、単一イベントの発生後に削除される必要はない。レジストレーションの維持は、ロギングのような機能を実行するのに有用である。ロギングは、イベントレポートをファイルに記録してログを作成することを伴う。ログは、後でこれを調べて、システムの一部分の活動の経歴記録を与えることができる。
【００３３】
本発明の好ましい実施例は、システム内の当該イベントに気付くようにするシステム管理ファンクションの能力を向上させる。これは、主として、イベントの発生をイベントに対する応答から分離することによって得られる。又、好ましい実施例は、イベントのタイプによって分離を容易にし、システムアドミニストレータが異なるタイプのイベントに気付き、そしてそれに応じて応答できるようにする。
【００３４】
イベントレポートは、グローバルなネームスペースにおけるオブジェクトであるから、ユーザ及びシステムの両コンポーネントがイベントレポートへアクセスできる。イベントレポートは、ユーザ及びシステムコンポーネントによって同様に使用される重要な状態情報を含む。ユーザは、プログラムにより発生できそしてイベントの通知を受け取るように登録できるのはどんなイベントかを発見する能力を有する。
【００３５】
以上、好ましい実施例について本発明を説明したが、当業者であれば、特許請求の範囲に規定した本発明から逸脱せずに種々の変更がなされ得ることが明らかであろう。例えば、本発明は、図１に示すような単一プロセッサシステムで実施する必要はなく、分散型システムでも実施することができる。
【図面の簡単な説明】
【図１】本発明の好ましい実施例を遂行するのに適したデータ処理システムのブロック図である。
【図２】単一のイベントソースから単一のイベントシンクへ単一のイベントレポートが送られる好ましい実施例の一例を示すブロック図である。
【図３】単一のイベントソースから多数のイベントシンクへ単一のイベントレポートが送られる好ましい実施例の一例を示すブロック図である。
【図４】多数のイベントソースが多数のイベントレポートを単一のイベントシンクへ送る好ましい実施例の一例を示すブロック図である。
【図５】単一のイベントソースが多数のイベントレポートを多数のイベントシンクへ送る好ましい実施例の一例を示すブロック図である。
【図６】本発明の好ましい実施例によるインターフェイスに使用されるランタイムデータ構造体を示す図である。
【図７】  本発明の好ましい実施例においてイベントレポートを受け取るためにイベントシンクオブジェクトをイベントソースオブジェクトに登録させる役割を演じるオブジェクトの図である。
【図８】  イベントレポートを受け取るためにイベントシンクオブジェクトをイベントソースオブジェクトに登録させるように好ましい実施例によって実行されるステップを示すフローチャートである。
【図９】イベントレポートを発生し処理するために好ましい実施例によって実行されるステップを示すフローチャートである。
【図１０】ディストリビュータオブジェクトを使用したときの本発明の好ましい実施例のブロック図である。
【図１１】本発明の好ましい実施例により第１ディストリビュータオブジェクトから第２ディストリビュータオブジェクトへイベントレポートを伝播するところを示したブロック図である。
【符号の説明】
１０  データ処理システム
１２  ＣＰＵ
１４  メモリ
１６  キーボード
１８  ビデオディスプレイ
１９  プリンタ
２０  オブジェクト指向のオペレーティングシステム
２２  イベントシステム
２３  イベントソース
２４  マウス
２５  イベントレポート
２７  イベントシンク
【図１】
0003782477.tif 000003
【図２】
0003782477.tif 000004
【図３】
0003782477.tif 000005
【図４】
0003782477.tif 000006
【図５】
0003782477.tif 000007
【図６】
0003782477.tif 000008
【図７】
0003782477.tif 000009
【図８】
0003782477.tif 000010
【図９】
0003782477.tif 000011
【図１０】
0003782477.tif 000012
【図１１】
0003782477.tif 000013