(57)【特許請求の範囲】
【請求項１】
オブジェクトベースコンピュータシステムであって、
システム・データベースと、
前記システム・データベースと通信可能な少なくとも１つのサーバーコンピュータと、
前記システム・データベースと通信することによって前記サーバーと通信可能であり、前記システム・データベースに対するアクセスを可能にするアプリケーション・プログラミング・インターフェースを提供するクラス構造を使用して前記システム・データベースにアクセスする少なくとも１つのクライアントコンピュータとを備え、
前記クラス構造は、
コア・アプリケーション・プログラミング・インターフェースを定義すべく設けられた第１セットのクラスであって、前記システム・データベースにアクセスするためのメソッドを含む少なくとも１つのパブリック・インターフェースを含む第１セットのクラスと、
前記少なくとも１つのクライアントに関連したクライアント・アプリケーション・プログラミング・インターフェースを定義すべく設けられ、かつ前記第１セットのクラスを含む第２セットのクラスと、
前記少なくとも１つのサーバーに関連したサーバー・アプリケーション・プログラミング・インターフェースを定義すべく設けられ、かつ前記第２セットのクラスを含む第３セットのクラスとを含み、
前記クライアント・アプリケーション・プログラミング・インターフェースは、前記システム・データベースに対するエントリの公開、前記データベースからのエントリの検索、前記システム・データベース上におけるエントリの変更のために前記クライアントによって用いられるよう機能し、
前記サーバー・アプリケーション・プログラミング・インターフェースは、前記システム・データベースに対するエントリの公開、前記システム・データベースからのエントリの検索、前記システム・データベース上におけるエントリの変更、前記システム・データベース上におけるエントリの管理のために前記サーバーによって用いられるよう機能する、オブジェクトベースコンピュータシステム。
【請求項２】
前記少なくとも１つのパブリック・インターフェースはEntryインターフェースを含む請求項１に記載のオブジェクトベースコンピュータシステム。
【請求項３】
前記第１セットのクラスは少なくとも１つの抽象クラスと、少なくとも１つの具象クラスとを含む請求項１に記載のオブジェクトベースコンピュータシステム。
【請求項４】
前記少なくとも１つの抽象クラスはパブリック・アプリケーション・プログラミング・インターフェースを提供するBaseEntryクラスを含み、前記少なくとも１つの具象クラスはシステム・データベースに関連する情報を初期化するためのメソッドおよびシステム・データベースに関連する情報を返すためのメソッドを含むSystemDatabaseクラス、システム・データベースに対する検索を実行するためのメソッドを含むQueryクラス及びエントリ・プロパティ名に基づいてシステム・データベースに対する検索を実行するためのメソッドを含むPropertyQueryクラスを含む請求項３に記載のオブジェクトベースコンピュータシステム。
【請求項５】
前記第２セットのクラスは具象クラスであるエントリに関連するプロパティの操作を可能にするメソッドの実行に関するメソッドを含むSystemEntryクラスを含む請求項４に記載のオブジェクトベースコンピュータシステム。
【請求項６】
前記第３セットのクラスは具象クラスである、他のエントリを参照するために使用されるエイリアスをエントリに対応付けるメソッドを含むSystemAliasEntryクラス及び永続エントリに関連するプロパティの操作に関連したメソッドを含むPersistentSystemEntryクラスを含む請求項５に記載のオブジェクトベースコンピュータシステム。
【請求項７】
前記コア・アプリケーション・プログラミング・インターフェースはパブリック・アプリケーション・プログラミング・インターフェースである請求項１及び３のいずれか一項に記載のオブジェクトベースコンピュータシステム。
【請求項８】
オブジェクトベースコンピュータシステムであって、
システムデータベースと、
前記システムデータベースと通信可能なクライアントコンピュータと、
前記システムデータベースと通信可能なサーバーコンピュータとを備え、
前記クライアントコンピュータおよび前記サーバーコンピュータは、前記システム・データベースに対するアクセスを可能にするコア・アプリケーション・プログラミング・インターフェースを提供するクラス構造を使用して前記システム・データベースにアクセスし、
前記クラス構造は、
前記システム・データベースと通信する前記クライアントに関連し、かつクラス及びインターフェースの双方の階層構造を含むクライアント・アプリケーション・プログラミング・インターフェースであって、前記コア・アプリケーション・プログラミング・インターフェースによって提供されるパブリック・メソッド及びパブリック・インターフェースを含むパブリック・アプリケーション・プログラミング・インターフェースを含むクライアント・アプリケーション・プログラミング・インターフェースと、
前記システム・データベース及び前記システム・データベースと通信することによって前記クライアントとそれぞれ通信する前記サーバーに関連し、かつ前記クライアント・アプリケーション・プログラミング・インターフェースを含むサーバー・アプリケーション・プログラミング・インターフェースとを含み、
前記クライアント・アプリケーション・プログラミング・インターフェースは、前記システム・データベースに対するエントリの公開、前記システム・データベースからのエントリの検索、前記システム・データベース上におけるエントリの変更のために前記クライアントによって用いられるよう機能し、
前記サーバー・アプリケーション・プログラミング・インターフェースは、前記システム・データベースに対するエントリの公開、前記システム・データベースからのエントリの検索、前記システム・データベース上におけるエントリの変更の、前記システム・データベース上におけるエントリの管理ために前記サーバーによって用いられるよう機能する、オブジェクトベースコンピュータシステム。
【請求項９】
前記サーバー・アプリケーション・プログラミング・インターフェースは、前記クライアント・アプリケーション・プログラミング・インターフェースに関連した前記クラス及びインターフェースの階層構造に含まれていない少なくとも１つのクラスであって、前記サーバーが前記システム・データベースにアクセスするために用いられる少なくとも１つのクラスを含む請求項８に記載のオブジェクトベースコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
一般的に、本発明はコンピュータ・システム内のアプリケーション・プログラミング・インターフェースを提供する方法及び装置に関する。より詳細には、本発明はコンピュータ・システム内の異なる複数のアプリケーション・プログラミング・インターフェースによる使用に適したコア・アプリケーション・プログラミング・インターフェースに関する。
【０００２】
【従来の技術】
ネットワーク接続されたコンピューティング・システムの利用はパーソナル・コンピュータの利用の普及にともなって増大している。複数のコンピュータ・システムをネットワーク接続すること、即ち、互いにリンクすることにより、複数のユーザ、即ち、コンピュータ・システムはソフトウェア・アプリケーションなどのリソースを共有できる。一般的に、ネットワークを通じたリソースの共有により、ネットワーク接続された各ユーザは自分自身にとってローカルなリソースを更に効率的に使用し、かつ割り当てることができる。
【０００３】
ネットワーク接続されたコンピューティング・システム内の複数のリソースを１つにまとめる努力の過程で、ネットワーク・コンピュータが開発された。一般的に、ネットワーク・コンピュータはネットワーク内のクライアントとして使用される。一般的に、ネットワーク・コンピュータは、ほとんどが遠隔のデータベース及びリソース（これらの多くはネットワーク上のサーバーである）を使用したアクセス及びオペレーションを行うために設けられたシステムである。概して、ネットワーク・コンピュータなどのプラットフォームは書き込み可能記憶装置（例：ディスク・ドライブ）へのローカル・アクセスを有していない。この場合、ネットワーク・コンピュータを使用するユーザは、任意の数のユーザが共有するリモート・データベース上における情報へのアクセス及び情報の格納が可能である。この結果、例えば、ネットワーク・コンピュータは書き込み可能な大容量ローカル記憶装置の能力を持つ必要がない。
【０００４】
多くの場合、アプリケーション、即ち、エントリのパブリッシュ及びリトリーブを共有データベース上で可能にすることに関連したインターフェース（例：アプリケーション・プログラミング・インターフェース（ＡＰＩ））は、比較的多くのメソッドを含む。例えば、共有データベースに対するエントリのパブリッシュと、共有データベース上でのエントリのサーチと、共有データベースからのエントリのリトリーブとをクライアントが実施することを可能にするために、メソッド群は一般的に必要である。同様に、共有データベースに対するエントリのパブリッシュと、共有データベース上でのエントリのサーチと、共有データベースからのエントリのリトリーブとをサーバーが実施することを可能にするために、メソッド群は一般的に必要である。
【０００５】
エントリのパブリッシュ、エントリのサーチ及びエントリのリトリーブに使用する複数のメソッドを提供するために必要なリソースは大きい。特に、クライアントＡＰＩに関連する機能性及びサーバーＡＰＩに関連する機能性のシステム・データベース上での維持は、システム・データベース上における相当な量のリソースを必要とし得る。一般的に、クライアントＡＰＩに関連する複数のメソッドのうちの幾つかと、サーバーＡＰＩに関連する複数のメソッドのうちの幾つかとは同じである。即ち、これら幾つかのメソッドがクライアントに対してインプリメントされたのか、それともサーバーに対してインプリメントされたのかということとは無関係に、これら幾つかのメソッドは同一である。この結果、互いに関連する複数のメソッドの使用法及び機能の一貫性を維持することが困難であるため、サーバーＡＰＩ及びクライアントＡＰＩに対する機能性を実質的に別々に維持することは非能率的である。
【０００６】
一般的に、メソッドは特定のクラスまたはインターフェースに関連している。複数のクラス及びインターフェースは階層構造、即ち、クラス階層構造内に配置されている。特に、クライアントＡＰＩに関連するクラス及びインターフェースは１つの階層構造の一部を構成しており、サーバーＡＰＩに関連するクラス及びインターフェースは別の階層構造の一部を構成している。従って、幾つかのケースでは、同じクラス・タイプが２つのクラス階層構造に関連することがある。メソッドにおける冗長と同様に、クラス・タイプにおける冗長は、クラスの使用法の一貫性及び機能の一貫性の維持という点で望ましくない。
【０００７】
従って、システム・データベース上の複数のクラス階層構造及び複数のＡＰＩを効率的に構成する方法及び装置が望まれる。特に、システム・データベースと併用するコアＡＰＩ及びクラス階層構造をシステム・データベース上でのリソースの効率的使用を実現するように構築する方法及び装置が望まれる。
【０００８】
【発明の概要】
一般的に、本発明はコア・アプリケーション・プログラミング・インターフェースをオブジェクトベースのシステム内で定義可能にするクラス階層構造の定義に関する。本発明の１つの態様に基づき、システム・データベースへのアクセスを可能にするアプリケーション・プログラミング・インターフェースを提供するために、オブジェクトベースのシステム内のクラス構造は設けられている。クラス構造はコア・アプリケーション・プログラミング・インターフェースを定義する第１セットのクラスと、クライアント・アプリケーション・プログラミング・インターフェースを定義する第２セットのクラスと、サーバー・アプリケーション・プログラミング・インターフェースを定義する第３セットのクラスとを含む。第２セットのクラスは第１セットのクラスを含み、第３セットのクラスは第２セットのクラスを含む。１つの実施形態では、第１セットのクラスはインターフェースを含む。この実施形態では、インターフェースはEntryインターフェースを含み得る。
【０００９】
別の実施形態では、第１セットのクラスは少なくとも１つの抽象クラスと、少なくとも１つの具象クラスとを含む。第１セットのクラスが抽象クラス及び具象クラスを含む際、抽象クラスはBaseEntryクラスを含み、具象クラスはSystemDatabaseクラス、SystemTreeクラス、Queryクラス及びPropertyQueryクラスを含む。この実施形態において、第２セットのクラスは具象クラスであるSystemEntryクラスを含み得る。
【００１０】
本発明の前記の効果及び他の効果は以下の詳細な説明を読み、かつ添付図面を研究することによって明らかになる。
【００１１】
本発明は添付図面に基づく以下の詳細な説明から最もよく理解できる。
【００１２】
【発明の実施の形態】
共有システム・データベースへアクセスし得る複数のネットワーク・コンピュータを含むネットワーク接続されたコンピューティング・システムでは、幾つかのメソッドは１つを越す数のアプリケーション・プログラミング・インターフェース（ＡＰＩ）に共通している。例えば、クライアントＡＰＩに関連する複数のメソッドのうちの幾つかと、サーバーＡＰＩに関連する複数のメソッドのうちの幾つかとは実質的に同一である。しかし、一般的に、これらの“共有”メソッドの機能性は、システム・データベースに対して別々に維持されている。即ち、１つのメソッドに関連する機能性はシステム・データベース上において繰り返し維持される。１つのメソッドをデータベース上で複数回維持することは、このメソッドの使用法及び機能の一貫性を可能にするうえで非効率的といえる。
【００１３】
システム・データベースに関連する１つを越す数のＡＰＩに共通するメソッドのコア・セット、即ち、コア・グループを識別し、関連するコア・クラス階層構造を構築することにより、このクラス階層構造が提供する機能性を一貫して維持できる。特に、サーバーＡＰＩ及びクライアントＡＰＩに使用する多くのメソッドが事実上同一であるため、サーバーＡＰＩ及びクライアントＡＰＩの両方に共通するメソッドの“コアＡＰＩ”の開発は、メソッドの使用法及び機能性の一貫性の維持を可能にするとともに、システム・データベース・リソースの効率的使用を可能にする。
【００１４】
一般的に、複数のネットワーク・コンピュータをサポートするために設けられたコンピューティング・ネットワークは、システム・データベースを中心コンポーネントとして使用する。１つの実施形態では、システムはジャバ（商標名）システム・データベース（Java system database、以下、略してＪＳＤと称する）であり得る。一般的に、ＪＳＤは、ジャバ（商標名）ベースのプラットフォーム上におけるコンフィギュレーション情報の格納及びリトリーブをオペレーティング・システム、システム・サービス、アプリケーション及びツールが実施することを可能にする。例えば、ＪＳＤに関連するマシン内に存在する物理デバイスと、インストールされたシステム・ソフトウェア・サービスと、固有のユーザ・アプリケーション・プロフィール及びグループ・アプリケーション・プロフィールとを記述すべくコンフィギュレーション情報は設けられている。コンフィギュレーションを目的として使用される実質的に全ての情報の格納及びアクセスのための中央リポジトリとして、ＪＳＤは効果的に機能する。従って、ＪＳＤを使用することによって、アプリケーション及びサービスは様々なコンフィギュレーションを実現し得る。
【００１５】
図１は本発明の１つの実施形態に基づくシステム・データベースに関連した関係を示す図である。一般的に、システム・データベース１０４（例：ＪＳＤ）はサービスをクライアント、より詳細にはユーザ１０８へ提供する。換言するならば、クライアント−サーバー環境内において、システム・データベース１０４はクライアントサイドのコンフィギュレーション及び通信のハブとして効果的に機能する。システム・データベース１０４は、本発明に基づく関連したコアＡＰＩを有する複数のコンピューティング・システムからなるネットワーク内の中央データベースとして機能し、かつエントリの階層構造を一般的に有する。この階層構造の各エントリはパス名によって識別される情報の原子ユニットである。システム・データベース１０４内のエントリは１つ以上の関連するプロパティを有し、このプロパティはエントリの記述を提供すべく設けられている。一般的に、システム・データベース１０４上のエントリはツリー内に格納可能である。
【００１６】
システム・データベース１０４は情報記憶、情報検索及び情報パブリッシングを含むサービス（但し、これらに限定されない）をユーザ１０８へ提供する。具体的には、ユーザ１０８に関連したコンフィギュレーションに関する情報の格納、リトリーブ及びパブリッシングをユーザ１０８自身が実施することを、システム・データベース１０４は一般的に可能にする。
【００１７】
多くの場合、システム・データベース１０４と実際に通信するデバイス、より詳細には、デバイス・ドライバを記述した情報をコンフィギュレーション、即ち、コンフィギュレーション情報は含む。一般的に、これらのデバイスはマシン及びユーザ１０８に関連している。システム・データベース１０４を通じて利用できるシステム・サービス（例：オペレーティング・システム（ＯＳ）システム・サービス１１２）に関する記述を、コンフィギュレーション情報はさらに含み得る。幾つかの実施形態では、選択したグループの属性及びユーザの属性と、システム・データベース１０４を通じてユーザ１０８が利用できるソフトウェア・アプリケーション１１６に関連した実質的に全ての必要なアプリケーション固有情報とを、コンフィギュレーション情報はさらに記述している。カリフォルニア州パロアルト市に所在するサンマイクロシステムズ・インコーポレイテッドが開発したジャバ（商標名）プログラミング言語で書かれたアプレットなどのアプレットをアプリケーション１１６が含み得ることを理解する必要がある。
【００１８】
ユーザ１０８、システム・サービス１１２及びアプリケーション１１６と通信する以外に、システム・データベース１０４はＯＳカーネル１２０にも関連している。本実施形態では、システム・データベース１０４はＪＳＤであるため、このシステム・データベース１０４はジャバＯＳ、ジャバ・ディベロップメント・キット（ＪＤＫ）及びジャバ・ビーンズ（JavaBeans、商標名）などを含むジャバ固有のソフトウェアにも関連している。ＪＤＫはサンマイクロシステムズ・インコーポレイテッドから販売されているソフトウェアの開発及び実行の環境であり、アプリケーション及びアプレットをジャバ・プログラミング言語で記述するために使用可能である。ジャバ・ビーンズ（商標名）はジャバ・プログラミング言語で作られた再利用可能なプラットフォーム独立型ポータブル・コンポーネント・モデルである。
【００１９】
図２では、システム・データベースに関するエントリをインプリメントするために使用するインターフェース及びクラス階層構造を本発明の実施形態に基づいて詳述する。エントリ・クラス階層構造２０２はインターフェース２０８、抽象クラス２１０及び具象クラス２１４を含む。１つの実施形態では、エントリ・クラス階層構造２０２はパブリックＡＰＩを定義している。インターフェース２０８（例：ジャバ環境内のインターフェース）は、幾つかのクラスがそれぞれインプリメントし得るメソッド群である。一般的に、インターフェース２０８内のメソッド群をインプリメント可能なクラスは、クラス階層構造内の任意の場所（例：BaseEntryクラスなどの抽象クラス２１０内）に配置可能である。抽象クラス２１０は１つ以上の抽象メソッドを含むクラスである。一般的に、抽象メソッドは関連するインプリメンテーションを持たないメソッドである。このため、抽象メソッドはインスタンス化できない。多くの場合、抽象クラス２１０は以下のように定義される。即ち、他のクラスは抽象クラス２１０を拡張可能であり、さらには抽象クラス２１０内で定義された抽象メソッドをインプリメントすることによって、これらを事実上“具象化”する。具象クラス２１４はインスタンス化が可能であり、かつシステム・データベース内へ挿入できるクラスである。更に、一般的に、具象クラス２１４は抽象クラス２１０を拡張し得るように設けられている。
【００２０】
本実施形態では、抽象クラス２１０はBaseEntryクラスである。BaseEntryクラス２１０はパブリックＡＰＩインプリメンテーションを提供する。この結果、BaseEntryクラス２１０は様々なタスクの集中管理を可能にする。例えば、BaseEntryクラス２１０はトランザクションの生成、トランザクションの使用及びセキュリティなどのタスクの効果的な集中管理を可能にする。Entryインターフェース２０８ａ及びTransactionFactoryインターフェース２０８ｂによって定義され、かつユーザによるアクセスが可能なエントリ・パブリックＡＰＩを、BaseEntryクラス２１０は効果的にインプリメントする。エントリ・パブリックＡＰＩをインプリメントする以外に、BaseEntryクラス２１０が別のＡＰＩを定義し得ることを理解する必要がある。
【００２１】
一般的に、BaseEntryクラス２１０に関連するメソッドは様々であるが、BaseEntryクラス２１０はシステム・データベース内のエントリに対するロックを獲得するメソッドと、このロックを返すメソッドとを必要に応じて含み得る。更に、BaseEntryクラス２１０はオペレーションをコミットするメソッド及びオペレーションをアボートするメソッドを含み得る。これらのメソッドはBaseEntryクラス２１０によって効果的に定義されるが、これらのメソッドはシステム・データベースに関連した他のコンポーネントによって呼び出されるか、またはアプリケーションによって直接呼び出される点を理解する必要がある。
【００２２】
BaseEntryクラス２１０に関連したinsertメソッドのパブリックＡＰＩインプリメンテーションは、BaseEntryクラス２１０から派生した“子”の挿入を実質的に可能にすることを意図している。この結果、クライアント、即ち、ユーザなどによって関連するシステム・データベース内でパブリッシュされたエントリは一般的に既知のヘリテージ、即ち、インターフェースのエントリである。システム・データベース内の実質的に全てのエントリ（クライアントがパブリッシュしたエントリを含む）の起源を知ることにより、システム・データベースの安定性及びセキュリティが強化される。
【００２３】
システム・データベースに対する各エントリはエントリ属性を有する。エントリ属性は様々である。しかし、エントリの名前と、エントリの状態と、エントリの親と、エントリの子と、エントリに関連したロックと、エントリに関連したマネージャと、エントリに関連した世代番号とにそれぞれ関する複数の属性を、BaseEntryクラス２１０は一般的にサポートしている。本実施形態では、エントリの名前は実質的に固有名である。即ち、エントリの名前は、そのエントリが属する親の全ての子の間に唯一存在する名前である。
【００２４】
エントリの状態とは、エントリがその存続期間中に移行できる状態を一般的に指す。エントリは３つの状態、即ち、ドラフト状態（drafted state）、パブリッシュ状態（published state）及びデリート状態（deleted state）へ移行し得る。エントリがデータベースの範囲の外側であって、かつ関連するオブジェクト・ヒープの内側に位置する際、ドラフト状態は存在する。換言するならば、エントリが形成され、このエントリがデータベース内に挿入されていないとき、ドラフト状態は存在する。パブリッシュ状態とは、エントリをデータベース内のパブリッシュされた親の下へ挿入した後におけるこのエントリの状態を指す。エントリをデータベース内で形成した後、このエントリの名前またはプロパティを探索基準として使用するアプリケーションまたはシステム・サービスによって、このエントリの位置を突き止め得る。デリート状態とは、エントリをシステム・データベースから取り除いた際におけるこのエントリの状態を指す。
【００２５】
エントリの親である属性は実際には親エントリへのリファレンスである。その一方、エントリの子である属性は、エントリの複数の子のうちの少なくとも１つに対するリファレンスである。システム・データベースのスーパー・ルート（スーパールートはそれ自体の親である）を除く実質的に全てのエントリが単一の親エントリを有する。エントリがパブリッシュ状態にある際、そのエントリの親はナルでないが、エントリがドラフト状態にある際、そのエントリの親はナルであることを理解する必要がある。エントリの親がナルの際、そのエントリがドラフトされた複数のエントリの階層構造のサブツリー・ルートであることを意味する。
エントリに関連するロックは一般的には読み書きロックである。読み書きロックは、干渉を受けることなくエントリの検査または修正を実施することを可能にする。ロックは共有ロックまたは排他ロックであり得る。即ち、ロックを共有アクセスまたは排他アクセスに対して獲得可能である。エントリに関連するマネージャは、このエントリのセキュリティ・チェックを実施するか、またはこのエントリの振る舞いに影響を及ぼす。このため、このマネージャは対応するエントリの“ポリシーをセット”するために設けられている。
【００２６】
エントリ世代番号は、エントリが変更されたか否かを表示するために使用される。１つの実施形態では、エントリ世代番号は関連するエントリへ何らかの変更が加えられるたびに単調増加する番号（例：６４ビット番号）である。当業者が理解するように、エントリの修正、即ち、変更はデータベース内におけるエントリの挿入、切り離しまたは除去であり得る。修正は任意の属性の追加、変更または削除を含み得る。
【００２７】
SystemEntryクラス２１４ａは、BaseEntryクラス２１０の例えばサブクラスに関連する具象クラスである。エントリに関連するプロパティの操作を可能にするメソッドのインプリメンテーションに関連するメソッドを、SystemEntryクラス２１４ａは含む。
【００２８】
SystemEntryクラス２１４ａはSystemAliasEntryクラス２１４ｂ及びPersistentSystemEntryクラス２１４ｃに関連している。一般的に、SystemAliasEntryクラス２１４ｂに関連するエントリは他のエントリを参照するために使用される。即ち、SystemAliasEntryクラス２１４ｂに関連するエントリはエイリアスが付けられたエントリである。複数のエイリアスが単一のエントリを表し得ることを理解する必要がある。PersistentSystemEntryクラス２１４ｃは永続エントリに関連するプロパティの操作に関連したメソッドを含む。更に、PersistentSystemEntryクラス２１４ｃはサーバーとの通信に関連するメソッドを含み得る。
【００２９】
前記のように、Entryインターフェース２０８ａ及びTransactionFactoryインターフェース２０８ｂが定義するシステム・データベース内のエントリに作用するエントリ・パブリックＡＰＩを、BaseEntryクラス２１０は効果的にインプリメントする。TransactionFactoryインターフェース２０８ｂはトランザクション・オブジェクトを形成するために使用するサービスを定義する。Entryインターフェース２０８ａはTransactionFactoryインターフェース２０８ｂを拡張すべく設けられている。換言するならば、Entryインターフェース２０８ａに関連するメソッドは、TransactionFactoryインターフェース２０８ｂのメソッドを実質的に増加させる。従って、TransactionFactoryインターフェース２０８ｂに関連するメソッドは特定のエントリへ適用されることが多い。
【００３０】
一般的に、BaseEntryクラス２１０によってインプリメントされるTransactionFactoryインターフェース２０８ｂ内で定義されているメソッドは非常に様々である。これらのメソッドは共有トランザクションを形成するメソッド及び排他トランザクションを形成するメソッドを含む（但し、これらに限定されない）。更に、メソッドはエントリ上で獲得されたロックのモードを決定するメソッドを含み得る。例えば、このメソッドはロックが共有及び排他のいずれであるかを決定し得る。
【００３１】
BaseEntryクラス２１０がインプリメントするEntryインターフェース２０８ａに関連する事実上全てのメソッドをシステム・データベース内の各エントリがサポートするように、Entryインターフェース２０８ａは設けられている。Entryインターフェース２０８ａに関連するgetName()メソッドはエントリの名前を返すために設けられている。isDrafted()メソッドはエントリがドラフトされたか否かを表示するために設けられている。isPublished()メソッドはエントリがパブリッシュされたか否かを表示するために設けられている。更に、isDeleted()メソッドはエントリがデリートされたか否かを表示するために設けられている。Entryインターフェース２０８ａは、エントリに関連する永続性、現在の世代、親、子及びプロパティ（更に一般的）に関する情報を返すメソッドにも関連している。
【００３２】
isPersistent()メソッドは特定のエントリが、永続（例：不揮発性）エントリ及び一時（例：揮発性）エントリのいずれであるかを示すインディケータを返す。現在の世代に関する情報を返すEntryインターフェース２０８ａに関連するメソッドは、エントリの現在の世代番号を返すgetGenerationNumberメソッドを含む。エントリの親に関するメソッドは特定のエントリの親を返すために使用するgetParentメソッドを含む。
【００３３】
Entryインターフェース２０８ａと、エントリの子に関する戻り情報とに関連するメソッドは、任意のエントリの子へのリファレンスを獲得するために使用するenumeration（列挙）を返すgetChildEntriesメソッドを含む。enumerationは情報のリストを提供するために使用し得るクラスである。エントリの子に関する情報を返す他のメソッドは、任意のエントリの子の数量を返すgetChildCountメソッドと、特定のエントリを別の特定のエントリの子として挿入するために設けられたinsertメソッドと、特定の子エントリを別の特定のエントリから切り離するために設けられたdisconnectメソッドと、特定の子エントリを取り除くために設けられたremoveメソッドとを含む。
【００３４】
一般的に、プロパティに関連するメソッドは、特定のエントリに対して定義されたプロパティの数量を数えるgetPropertyCountメソッドと、現在定義されているプロパティの名前の実質的に全てを効果的に獲得するgetPropertyNamesメソッドと、エントリのプロパティ値を獲得するgetPropertyValueメソッドと、特定のプロパティの値を加算、即ち、変更するaddPropertyメソッドと、特定のプロパティをエントリから取り除くremovePropertyメソッドとを含む。getPropertyNamesメソッドなどのメソッドはenumerationを通じて名前を獲得し得ることを理解する必要がある。
【００３５】
システム・データベースを含むシステムでは、一般的に、クライアント及びサーバーはＡＰＩを通じてシステム・データベースと通信する。図３は本発明の実施形態に基づくクライアント、サーバー及びシステム・データベースの間の相互作用を示す図である。クライアント３０４がエントリをシステム・データベース３０８上でパブリッシュすることを望む際、このエントリをネットワーク・コンピュータ（ＮＣ）３１６を使用してパブリッシュするために、クライアント３０４はクライアントＡＰＩ３１２と連係する。アプリケーションはシステム・データベース３０８上でパブリッシュされる。一般的に、システム・データベース３０８は任意の適切なデータベースであり得る。しかし、本実施形態では、システム・データベース３０８はＪＳＤである。アプリケーション、より一般的には、システム・データベース３０８上のエントリを、リトリーブまたは修正するためにも、クライアント３０４はクライアントＡＰＩ３１２を使用する。同様に、サーバー３２０が前記のエントリをシステム・データベース３０８上の管理情報としてパブリッシュする際、この管理情報をパブリッシュするために、サーバー３２０はサーバーＡＰＩ３２４を使用する。システム・データベース３０８上のエントリをリトリーブまたは修正するためにも、サーバー３２０はサーバーＡＰＩ３２４と連係する。
【００３６】
１つの実施形態では、システム・データベース３０８を単一の共有エントリとして示す。しかし、クライアント３０４に関連するシステム・データベース３０８のリプレゼンテーションと、サーバー３２０に関連するシステム・データベース３０８のリプレゼンテーションとを提供するように、システム・データベース３０８を構成し得る。即ち、クライアント３０４及びサーバー３２０はシステム・データベース・リプレゼンテーションをそれぞれ含み得る。クライアント３０４及びサーバー３２０がそれぞれ独立したシステム・データベース・リプレゼンテーション（例：独立したＪＳＤ）を含むシステム全体では、クライアント３０４上のリプレゼンテーションはサーバー３２０上のリプレゼンテーションと同じであり得る。
【００３７】
一般的に、クライアント３０４及びサーバー３２０がシステム・データベース３０８を通じて互いに通信する際、この通信はクライアント／サーバー・プロトコル３２８を使用して実施される。従って、クライアント３０４がエントリをサーバー３２０へ提供する際、このエントリをシステム・データベース３０８へ効果的に渡すために、クライアント３０４はクライアントＡＰＩ３１２を使用する。次いで、クライアント／サーバー・プロトコル３２８を使用することにより、このエントリをサーバーＡＰＩ３２４へ渡し、サーバーＡＰＩ３２４はこのエントリをサーバー３２０へ転送する。
【００３８】
前記のように、クライアントＡＰＩ３１２に関連する多くのインターフェース及びクラスは、サーバーＡＰＩ３２４に関連するインターフェース及びクラスと実質的に同じである。図４は本発明の１つの実施形態に基づくクライアントＡＰＩ３１２及びサーバーＡＰＩ３２４の間の関係を示す図である。図４に示すように、クライアントＡＰＩ３１２は実際にはサーバーＡＰＩ３２４のサブセットである。換言するならば、サーバーＡＰＩ３２４はクライアントＡＰＩ３１２に含まれる実質的に全てのインターフェース及びクラスを含む。従って、サーバーＡＰＩ３２４はクライアントＡＰＩ３１２のインターフェース及びクラスに関連する実質的に全てのメソッドを含む。
【００３９】
コアＡＰＩ３５０はクライアントＡＰＩ３１２及びサーバーＡＰＩ３２４のそれぞれにおいて定義される。即ち、クライアントＡＰＩ３１２及びサーバーＡＰＩ３２４はコアＡＰＩ３５０のスーパーセットである。コアＡＰＩ３５０内に含まれるインターフェース及びクラスを図５に基づいて以下に詳述する。１つの実施形態では、コアＡＰＩ３５０はパブリックからアクセスできるインターフェース及びクラスを含むように定義できる。即ち、コアＡＰＩ３５０はパブリックが利用できるメソッド及びオペレーションを含むパブリックＡＰＩであり得る。
【００４０】
本発明の１つの実施形態に基づき、コアＡＰＩに関連するクラス間の関係を図５に基づいて詳述する。一般的に、コアＡＰＩ４０２はインターフェース４０８、抽象クラス４１０及び具象クラス４１４を含む。インターフェース４０８、抽象クラス４１０及び具象クラス４１４は図２に基づいて既に説明済みである。コアＡＰＩ４０２内のインターフェース４０８はEntryインターフェース４０８ａ、TransactionFactoryインターフェース４０８ｂ及びTreeインターフェース４０８ｃを含む。コアＡＰＩ４０２内の抽象クラス４１０は、BaseEntryクラス４１０ａ及びTransactionクラス４１０ｂを含む。その一方、コアＡＰＩ４０２内の具象クラス４１４はSystemDatabaseクラス４１４ｄ、SystemTreeクラス４１４ｅ、Queryクラス４１４ｆ及びPropertyQueryクラス４１４ｇを含む。
【００４１】
クライアントＡＰＩ４０３はコアＡＰＩ４０２に関連する実質的に全てのメソッドと、図２に基づいて詳述したSystemEntryクラス４１４ａに関連する全てのメソッドとを含む。しかし、幾つかの実施形態では、クライアントＡＰＩ４０３はコアＡＰＩ４０２と同じであり得ることを理解しておく必要がある。即ち、クライアントＡＰＩ４０３はコアＡＰＩ４０２内で定義されているメソッドのみを含み得る。本実施形態では、サーバーＡＰＩ４０４はSystemAliasEntryクラス４１４ｂ及びPersistentSystemEntryクラス４１４ｃのメソッド以外に、クライアントＡＰＩ４０３のメソッドを含む。SystemAliasEntryクラス４１４ｂ及びPersistentSystemEntryクラス４１４ｃは図２に基づいて説明済みである。
【００４２】
Entryインターフェース４０８ａ及びTransactionFactoryインターフェース４０８ｂはパブリックＡＰＩを実質的に定義している。具体的には、BaseEntryクラス４１０ａ、SystemEntryクラス４１４ａ、SystemAliasEntryクラス４１４ｂ及びPersistentSystemEntryクラス４１４ｃは事実上外部でパブリッシュされ、これによって、パブリックからは可視の状態にある一方で、Entryインターフェース４０８ａ及びTransactionFactoryインターフェース４０８ｂはパブリックＡＰＩを定義している。Treeインターフェース４０８ｃはシステム・データベース内のツリーの操作を可能にするインターフェースを定義する。Treeインターフェース４０８ｃに含まれるメソッドは様々であり得るが、多くの場合、これらのメソッドは特定のツリーのルート・エントリを返すgetRootEntry()メソッドと、特定のツリーの現在のエントリを返すgetCurrentEntry()メソッドと、特定のツリーの現在のエントリをセットするsetCurrentEntryメソッドとを含む。
【００４３】
Treeインターフェース４０８ｃに関連するメソッドは様々なPrintingメソッドの他に、“Find”メソッド及び“Create”メソッドをさらに含む。一般的に、Findメソッドは特定のパス名に基づいてエントリを見つけるために設けられたfindEntryメソッドと、最深層部に位置する特定のパス名の既存エントリを見つけるために設けられたfindDeepestEntryメソッドとを含む（但し、これらのメソッドに限定されない）。Createメソッドは、特定のパス名を備えた新たなエイリアスを形成するために設けられたnewAliasメソッドと、新たなエントリ（例：新たなシステム・エントリ）を特定のパス名または提供された新たな名前を使用して形成するために設けられたnewEntryメソッドとを含み得る。
前記のように、抽象クラスであるBaseEntryクラス４１０ａはパブリックＡＰＩをインプリメントする。コアＡＰＩ４０２は抽象クラスであるTransactionクラス４１０ｂをさらに含む。システム・データベース上で実施されるトランザクションに関連するメソッド及びコンストラクタを、Transactionクラス４１０ｂは一般的に含む。１つの実施形態では、Transactionクラス４１０ｂはisValid()メソッド、getOwnerID()メソッド、commit()メソッド及びabort()メソッドを含む。トランザクションが有効であるか否かを表示するために、isValid()メソッドは設けられている。当業者が理解するように、有効なトランザクションは、過去にコミットまたはアボートされていないトランザクションである。特定のトランザクションを生成したスレッドに関連する識別子を返すために、getOwnerID()メソッドは設けられている。commit()メソッドはトランザクションを効果的にコミットする。これによって、システム・データベースに対する実質的に全ての関連する変更が可視となり、関連するイベントが生成され、維持されていたロックが解放される。トランザクションをアボートし、これによって、このトランザクションが行った全ての変更を“ロールバック”し、かつ維持されていた全てのロックを解放するために、abort()メソッドは設けられている。
【００４４】
コアＡＰＩ４０２は様々な具象クラスを含む。システム・データベースに関連する情報を初期化するために使用するメソッドと、このシステム・データベースに関連する情報を返すために使用するメソッドとを、SystemDatabaseクラス４１４ｄは含む。例えば、SystemDatabaseクラス４１４ｄは、システム・データベースを初期化するために設けられたSystemDatabase()クラスと、システム・データベースに関連するスーパー・ルートのエントリ・リファレンスを返すために設けられたgetSuperRootEntry()クラスと、システム・データベースを定義するツリーを返すために設けられたgetSystemDatabase()クラスとを含み得る。Treeインターフェース４０８ｃによって定義されたメソッドをインプリメントするために、SystemTreeクラス４１４ｅは設けられている。即ち、特定のツリーのルート・エントリを返すgetRootEntry()メソッドと、特定のツリーの現在のエントリを返すgetCurrentEntry()メソッドと、特定のツリーの現在のエントリをセットするsetCurrentEntryメソッドとを含む（但し、これらのメソッドに限定されない）メソッドを、SystemTreeクラス４１４はインプリメントする。
【００４５】
１つの実施形態では、Queryクラス４１４ｆはシステム・データベースに対するサーチを実施するために使用するメソッドを含む。例えば、特定のスコープにマッチする全てのエントリを決定するために、ルートをクエリする、即ち、問い合わるメソッドをQueryクラス４１４ｆは一般的に含む。Queryクラス４１４ｆは、サーチのスコープを変更するために設けられたsetSearchScope()メソッドと、サーチのスコープを獲得するために設けられたgetSearchScope()メソッドと、サーチに使用するエントリ名を提供するために設けられたgetSearchName()メソッドと、最後のマッチを問い合わせるクエリをリセットするpreviousMatch()メソッドと、現在のマッチを返すために設けられたgetCurrentMatch()メソッドと、他の多数のメソッドとをさらに含み得る。これらの他のメソッドは複数のマッチの結果（例：直前のマッチの結果または次のマッチの結果）を返すことに関連したメソッドを含み得る（但し、これらのメソッドに限定されない）。
【００４６】
PropertyQueryクラス４１４ｇはQueryクラス４１４ｆのエクステンションである。換言するならば、PropertyQueryクラス４１４ｆ内のメソッドはQueryクラス４１４ｆのメソッドを効果的にオーバーライドし得る。一般的に、PropertyQueryクラス４１４ｇに含まれるメソッドは、サーチ機能をエントリ・プロパティ名に基づいて提供するために設けられている。具体的には、これらのメソッドは、任意のプロパティ名を有する全てのエントリを特定のスコープ内でサーチすることを意図したメソッドを含み得る。
【００４７】
図６は本発明の実現に適した一般的な汎用コンピュータ・システムを示す。コンピュータ・システム５３０はメモリ・デバイスへ接続された少なくとも１つのプロセッサ５３２を有し、このプロセッサ５３２は中央処理装置（ＣＰＵ）とも称される。プロセッサ５３２はネットワーク・コンピュータの一部であり得る（例：プロセッサ５３２はネットワーク・コンピュータと通信する）。一般的に、メモリ・デバイスはリード・オンリ・メモリ（ＲＯＭ）などの一次記憶装置５３４と、ランダム・アクセス・メモリ（ＲＡＭ）などの一次記憶装置５３６とを含み得る。
【００４８】
当該技術分野で知られているように、ＲＯＭ５３４はデータ及び命令をＣＰＵ５３２へ単方向に転送すべく機能する。その一方、ＲＡＭ５３６はデータ及び命令をＣＰＵ５３２に対して両方向に送受信すべく一般的に使用される。これら２つの一次記憶装置５３４，５３６は任意の適切なコンピュータ読み取り可能媒体をそれぞれ含み得る。一般的には大容量メモリ装置である二次記憶媒体５３８は両方向でＣＰＵ５３２へ接続可能である。一般的に、二次記憶媒体５３８は別のデータ記憶能力を提供すべく構成されている。更に、二次記憶媒体５３８はコンピュータ・コード、コンピュータ・プログラム・コード・デバイス及びデータ等を含むプログラムを格納するために使用するコンピュータ読み取り可能媒体であり得る。１つの実施形態では、二次記憶媒体５３８は複数のコンピュータ・システムが共有するシステム・データベースであり得る。一般的に、二次記憶媒体５３８は一次記憶装置５３４，５３６より遅いハード・ディスクまたはテープ等の記憶媒体である。二次記憶媒体５３８は磁気テープ・リーダー及びペーパー・テープ・リーダー（但し、これらに限定されない）を含む周知のデバイスの形態をなし得る。当業者が理解するように、適切なケースでは、二次記憶装媒体５３８内に保持されている情報は、ＲＡＭ５３６の一部（例：バーチャル・メモリ）として標準的な形式で組み込み得る。ＣＤ−ＲＯＭ等の特定の一次記憶装置５３４はデータを単方向にＣＰＵ５３２へ送信可能である。
【００４９】
ＣＰＵ５３２は１つ以上の入出力装置（Ｉ／Ｏ）５４０へ接続されている。入出力装置５４０は、ビデオ・モニタ、トラック・ボール、マウス、キーボード、マイクロホン、タッチ・ディスプレイ、トランスデューサ・カード・リーダー、磁気テープ・リーダー、ペーパー・テープ・リーダー、タブレット、スタイラス、音声認識装置、手書き文字認識装置及び他の周知の入力装置（例：他のコンピュータ）を含み得る（但し、これらに限定されない）。符号５１２で示すネットワーク接続を使用することにより、ＣＰＵ５３２をコンピュータまたはテレコミュニケーション・ネットワーク（例：インターネット・ネットワークまたはイントラネット・ネットワーク）へ接続可能である。このネットワーク接続５１２により、ＣＰＵ５３２は情報をネットワークから受信し得る。更に、ＣＰＵ５３２は情報をネットワークへ出力可能である。多くの場合、この情報はＣＰＵ５３２を用いて実行する命令の順番列を表す。更に、この情報は例えば搬送波に組み込まれたコンピュータ・データ信号としてネットワークに対して送受信可能である。前記の複数のデバイス及び資材は、コンピュータ・ハードウェア及びソフトウェアの技術分野の当業者には公知である。
【００５０】
以上、本発明の僅かな実施形態のみを詳述したが、本発明の精神または範囲から逸脱することなく、本発明を他の多数の特定の形態で実施し得ることを理解する必要がある。例えば、クライアントＡＰＩはサーバーＡＰＩの“サブセット”である必要はない。幾つかの実施形態では、クライアントＡＰＩに関連する全てのクラス及びインターフェースを含むサーバーＡＰＩの代わりにコアＡＰＩを定義するために、クライアントＡＰＩ及びサーバーＡＰＩを互いにオーバーラップさせ得る。別の実施形態では、クライアントＡＰＩ及びコアＡＰＩは同一であり得る。即ち、クライアントＡＰＩ内の全てのインターフェース及びクラスをコアＡＰＩ内に含め得る。
【００５１】
前記のように、コアＡＰＩはパブリックＡＰＩであり得る。例えば、図５において、１つの実施形態では、パブリックＡＰＩはBaseEntryクラス４１０ａを除くコアＡＰＩ４０２内の全てのインターフェース及びクラスを含み得る。別の実施形態では、クライアントＡＰＩはコアＡＰＩ内のクラス及びインターフェースのみを含み得る。即ち、クライアントＡＰＩはコアＡＰＩと同じであり得る。これによって、事実上、クライアントＡＰＩはパブリックＡＰＩとなる。これに代えて、コアＡＰＩは保護ＡＰＩ（protected API）を含み得る。保護ＡＰＩに関連するメソッドは外部からは不可視であるため、保護ＡＰＩはプライベートＡＰＩとみなし得る。
【００５２】
コアＡＰＩのスーパーセットがクライアントＡＰＩであって、クライアントＡＰＩのスーパーセットがサーバーＡＰＩであるものとして、コアＡＰＩ、クライアントＡＰＩ及びサーバーＡＰＩの間の関係を詳述したが、これらの関係は本発明の精神または範囲から逸脱することなく変更し得る。例えば、サーバーＡＰＩはクライアントＡＰＩのスーパーセットである必要はない。即ち、サーバーＡＰＩ及びクライアントＡＰＩはコアＡＰＩをそれぞれ含むことが可能である一方、サーバーＡＰＩはクライアントＡＰＩ全体を含む必要はない。これに代えて、コアＡＰＩに含まれないクライアントＡＰＩの僅かな数のクラスまたはインターフェースのみを、サーバーＡＰＩは含んでもよい。これに代えて、コアＡＰＩに含まれていないクライアントＡＰＩのクラスまたはインターフェースを、サーバーＡＰＩは全く含まないことが可能である。
【００５３】
一般的に、コアＡＰＩに関連するクラス階層構造は様々である。例えば、クラス階層構造は複数の実施形態においてそれぞれ異なり得る。そして、これらの実施形態では、ＡＰＩに関連する更に多い数または更に少ない数のクラスが存在する。同様に、特定のシステムの要件に基づいて、複数のＡＰＩに関連するクラス及びメソッドは本発明の趣旨及び範囲から逸脱することなくそれぞれ異なり得る。
エントリ・インターフェース・メソッド及びツリー・インターフェース・メソッドなどのメソッドに対する引数は、特定のエントリ名を含むものとして詳述した。しかし、図２及び図４に基づいて詳述した様々なメソッドに使用する引数がいろいろあることを理解する必要がある。幾つかのメソッドは引数として特定のトランザクションを使用する一方、他のメソッドは無名トランザクションを引数として効果的に使用し得る。更に、幾つかのメソッドは引数を全く使用しないことがあり得る。従って、本明細書に開示した複数の実施形態は例示目的であって、限定目的ではない。更に、本発明は本明細書に開示する詳細部分に限定されることなく、請求の範囲内で変更し得る。
【図面の簡単な説明】
【図１】本発明の実施形態に基づくシステム・データベースにおける関係を示す図である。
【図２】本発明の実施形態に基づくシステム・データベース内の複数のエントリをインプリメントするために使用し得るインターフェース及びクラスの階層構造を示す図である。
【図３】本発明の実施形態に基づくクライアント、サーバー、システム・データベースの間の相互作用を示す図である。
【図４】本発明の実施形態に基づくサーバー・アプリケーション・プログラミング・インターフェース、クライアント・アプリケーション・プログラミング・インターフェース及びコア・アプリケーション・プログラミング・インターフェースの間の関係を示す図である。
【図５】本発明の実施形態に基づくコア・アプリケーション・プログラミング・インターフェースに関連する複数のクラス間の関係を示す図である。
【図６】本発明の実現に適したコンピュータ・システムを示す図である。
【図１】
0004511650.tif 000002
【図２】
0004511650.tif 000003
【図３】
0004511650.tif 000004
【図４】
0004511650.tif 000005
【図５】
0004511650.tif 000006
【図６】
0004511650.tif 000007