(57)【要約】複数のアプリケーションを処理し、かつ一方のコンピュータから他方のコンピュータへのシームレスな情報の交換を可能にする動的アプリケーションブラウザが提供される。動的アプリケーションブラウザは、複数のオブジェクトを記憶するデータベースを含む第１コンピュータ上で実行される。また、ブラウザは、第２コンピュータおよびデータベースマネージャからオブジェクトをアップロードおよびびダウンロードする更新モジュールを含む。データベースマネージャは、少なくとも１つのデータベースに記憶されるオブジェクトの記憶および少なくとも１つのデータベースに記憶されるオブジェクトに対するアクセスを管理し、かつ更新モジュールおよび少なくとも１つのデータベースと接続する。少なくとも１つのデータベースは、複数のオブジェクトのうち少なくとも１つを記憶する少なくとも１つのテーブルを含む。【特許請求の範囲】
【請求項１】
第１コンピュータ上で実行されるアプリケーションブラウザであって、
複数のオブジェクトを記憶する少なくとも１つのデータベースと、
第２コンピュータからオブジェクトをアップロードおよびダウンロードする更新モジュールと、
少なくとも１つのデータベース内に記憶されるオブジェクトの記憶および少なくとも１つのデータベース内に記憶されるオブジェクトに対するアクセスを制御し、かつ更新モジュールおよび少なくとも１つのデータベースと接続するデータベースマネージャとを備え、
少なくとも１つのデータベースが、複数のオブジェクトの少なくとも１つを記憶する少なくとも１つのテーブルを備える、アプリケーションブラウザ。
【発明の詳細な説明】
【０００１】
本出願は、１９９９年１２月７日に提出された、Ａｄａｍ  Ｊ．  ＲａｂｕｎｇおよびＭｉｃｈａｅｌ  Ｈ．  Ｓｃｈｒａｇによる「動的アプリケーションブラウザおよびそれとともに使用するデータベース（Ｄｙｎａｍｉｃ  Ａｐｐｌｉｃａｔｉｏｎ  Ｂｒｏｗｓｅｒ  ａｎｄ  Ｄａｔａｂａｓｅ  ｆｏｒ  Ｕｓｅ  Ｔｈｅｒｅｗｉｔｈ）」と題される米国特許出願第（未詳）号に関し、その内容は全体の参照により、これによって組み込まれる。
【０００２】
背景
本発明は、概してネットワークコンピュータシステムに関し、より特定的には、ネットワーク上での一方のコンピュータから他方のコンピュータへのアプリケーションの自動更新に関する。
オペレーティングシステムおよびインターネットブラウザは、ユーザが、複数のアプリケーションおよび／またはファイルを実行し、かつ／または読み取ることができるようにするために一般的に使用される。
【０００３】
例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムは、ユーザが、アプリケーションを表すアイコンを選択できるようにする。アイコンが選択されると、アプリケーションは実行され、ユーザはアプリケーションと接続することができる。Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒなどのインターネットブラウザに関して、ユーザは、ユーザが表示または実行のどちらかを行うことができるユーザデータを提供するインターネット上の固有の機械に変換されるインターネットアドレスを入力する。オペレーティングシステムおよびインターネットブラウザが直面する１つの問題とは、オペレーティングシステムおよびブラウザの個々のモジュールを更新する際の難しさである。例えば、オペレーティングシステム上でプログラムを更新するには、プログラム（すなわち大量のデータ）が削除され、そして新規プログラム（すなわちデータ）が代わりにインストールされてもよい。代わりに、旧プログラムは新規プログラムによって完全に上書きされてもよい。
【０００４】
このプロセスは、既存のアプリケーションおよびファイルを新規アプリケーションおよびファイルで、手動で置換しなければならないことにより、ユーザがアプリケーションおよびファイルの更新に積極的に関与することを必要とする可能性がある。加えて、この工程は、特にマイナーな変更だけがアプリケーションに加えられなければならない場合に時間がかかることがある。
【０００５】
オペレーティングシステム、インターネットブラウザ、およびその他のユーザアプリケーションなどのコンピュータアプリケーションは、典型的にグラフィックユーザインタフェースを使用する。これらのグラフィックユーザインタフェースは、マウスなどのポインティングデバイスによるユーザ制御だけではなく、ウィンドウ内での情報の提示によっても特徴付けられる。これらのグラフィックユーザインタフェースのこのような環境内での動作は、「選択してから動作する（ｓｅｌｅｃｔ−ｔｈｅｎ−ｏｐｅｒａｔｅ）」として説明することができる。つまり、まずユーザがインタフェースからオブジェクトを選択してから、そのオブジェクトに対する所望の動作を示す。
【０００６】
オブジェクト指向原則に従って構築されるグラフィックユーザインタフェースは、モデル、ビューおよび制御装置という３つの構成要素を含むとして見なすことができる。モデル・ビュー制御装置（ＭＶＣ）概念は、アディソン・ウェズレイ、１９９５年、Ｗｏｌｆｇａｎｇ  Ｐｒｅｅによって書かれたオブジェクト指向型ソフトウェア開発のための設計パターン（Ｄｅｓｉｇｎ  Ｐａｔｔｅｒｎｓ  ｆｏｒ  Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ）、およびウェストサセックス、チチェスター（Ｃｈｉｃｈｅｓｔｅｒ，  Ｗｅｓｔ  Ｓｕｓｓｅｘ）、ジョンウィリー・アンド・サンズ（Ｊｏｈｎ  Ｗｉｌｅｙ  ＆  Ｓｏｎｓ）、１９９６年、Ｆｒａｎｋ  Ｂｕｓｃｈｍａｎｎらによって書かれたパターンのシステム（Ａ  Ｓｙｓｔｅｍ  ｏｆ  Ｐａｔｔｅｒｎｓ）に説明されるようなスモールトーククラスライブラリに源を発するもので、内容が参照してここに全体として組み込まれている。モデルは、アプリケーションに特殊なデータを記憶する。
【０００７】
例えば、テキスト処理アプリケーションは、モデルの中にテキスト文字を記憶し、描画アプリケーションはモデル内のさまざまなグラフィック形状の記述を記憶する。ビューは、ディスプレイ、例えば画面上にモデルを提示する。それぞれのビューがモデル内に記憶される情報にアクセスするが、任意の数のビューが、さまざまな方法でモデルを提示する可能性がある。制御装置は、マウス対話およびキーボードのキーストロークなどの入力イベントを処理する。制御装置は、モデルとビューの両方に変更を加えるために、モデルだけではなくビューにもアクセスすることができる。
【０００８】
ＭＶＣアプローチを使用してコンピュータ上で実行するいくつかのアプリケーションは、ティーチングユーティリティとして使用される。さらに、それ以外のアプリケーションは、ユーザがインターネットなどのネットワーク上でコマースに参加できるように使用される。これらのアプリケーションは、情報が一方のコンピュータから他方のコンピュータへ送信されるのを必要とすることがある。例えば、教育トレーニングプログラムにおいて、ユーザは、サーバに対して教育資料でのその進行を知らせるだけではなく、サーバから教育資料をダウンロードする必要がある場合もある。電子コマースに関しては、ユーザが、自分のキーボード上でのキーストロークを介して販売を実行し、商品またはサービスの注文が処理できるようにリモートソースにメッセージを送信させることを希望してもよい。
【０００９】
したがって、アプリケーションの過去のバージョン全体を上書きする、または削除する必要なく、ユーザがアプリケーションを更新できるようにするだけではなく、ユーザが実行のために複数のアプリケーションを選択できるようにもするアプリケーションに対するニーズがある。加えて、常時接続に対するニーズなしに、ユーザがネットワーク上で通信できるようにするアプリケーションに対するニーズがある。
【００１０】
発明の概要
本発明の例示的な実施形態においては、複数のアプリケーションを処理し、一方のコンピュータから他方のコンピュータへの情報のシームレスな交換に対処する方法およびシステムを説明する。複数のオブジェクトを記憶する少なくとも１つのデータベースと、第２コンピュータからオブジェクトをアップロードおよびダウンロードする更新モジュールと、少なくとも１つのデータベースに記憶されるオブジェクトの記憶および少なくとも１つのデータベースに記憶されるオブジェクトに対するアクセスを管理し、更新モジュールおよび少なくとも１つのデータベースと接続するデータベースマネージャとを含む、第１コンピュータ上で実行されるアプリケーションブラウザを提供し、少なくとも１つのデータベースが、複数のオブジェクトの少なくとも１つを記憶する少なくとも１つのテーブルを含む。
【００１１】
本発明のこれらおよびそれ以外の特徴、態様および優位点は、図面を参照して本説明を読むことによって理解されるだろう。
【００１２】
詳細説明
本発明は、コンピュータ読み取り可能媒体または使用可能な媒体上で記憶され、コンピュータ読み取り可能媒体または使用可能な媒体から発するプログラムまたはプログラムセグメントを実行している汎用デジタルコンピュータで具現化されてよく、このような媒体は、磁気記憶媒体（例えば、ＲＯＭ、フロッピー（登録商標）ディスク、ハードディスク等）、光読み取り可能媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ等）、および搬送波（例えば、インターネットまたはイントラネット上での伝送）を含むが、それらに限定されない。本発明を実施するために使用される機能プログラム、コード、コードセグメントは、熟練したコンピュータプログラムによって、ここに記載されている発明の説明から引き出すことができる。
【００１３】
本発明の一実施形態を、サンマイクロシステムズ社（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．）によって開発されたＪａｖａ（登録商標）プログラミング言語を参照しながら以下に説明する。Ｊａｖａ（登録商標）は、例えば、ウェイツグループ出版（商標）（Ｗａｉｔｅ  Ｇｒｏｕｐ  ＰｒｅｓｓＴＭ）によって１９９６年に出版されたＰａｕｌ  Ｔｙｍａ、Ｇａｂｒｉｅｌ  Ｔｏｒｏｋ、およびＴｒｏｙ  ＤｏｗｎｉｎｇによるＪａｖａ（登録商標）プリンタプラス（Ｊａｖａ（登録商標）ＴＭ  Ｐｒｉｎｔｅｒ  Ｐｌｕｓ）に記載されており、その内容が参照してここにその全体として組み込まれている。Ｊａｖａ（登録商標）の実施および記載は、例示的な実施形態として提供され、発明の範囲の制限として意図されていない。その他のプログラミング技法およびプログラミング技法を使用して本発明の特徴を実現することは、当業者の知るところである。
【００１４】
本発明は、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）  ９５／９８などのオペレーティングシステムを備えた（ＩＢＭ（登録商標）と互換性のあるコンピュータ、ワークステーション等の）多岐に渡るコンピュータシステムで実施可能である。本発明を利用可能である種類の典型的なコンピュータシステムを、図１Ａおよび図１Ｂの概略図形式で示す。
【００１５】
図１Ａおよび図１Ｂにおけるコンピュータシステムの構造およびコンピュータ自体の構造は、本発明の一部を形成するものではない。コンピュータシステムの構造の修正は、当業者の知るところであることが理解される。参照を容易にするため、ブラウザが実行中のクライアントコンピュータ１０１は、ローカルコンピュータおよびネットワークコンピュータ１００といい、あるいはデータが送受されるそれ以外のクライアントコンピュータ１０１はリモートコンピュータという。その後、発明の特徴がコンピュータの構造と協同するやり方を理解するためにこれを簡略に説明する。
【００１６】
図１Ａを参照すると、本発明は少なくとも１台のネットワークコンピュータ１００および少なくとも１台のクライアントコンピュータ１０１を含むコンピュータシステム上で実行するように設計されている。クライアントコンピュータ１０１は、互いに、またはネットワークコンピュータ１００と通信することができる。ネットワークコンピュータ１００は、さらに大型のコンピュータネットワークまたはデータサービスの一部であってよいか、あるいは単一ネットワークサーバであってよい。
【００１７】
図１Ｂを参照すると、コンピュータ１０３は、例えば、キーボード、マウス、タッチパッド等の少なくとも１台の入力装置１０７、例えばＲＡＭおよび／またはＲＯＭなどの少なくとも１台のメモリ装置１１１、およびハードドライブ、フロッピー（登録商標）ディスクドライブ、書き込み可能ＣＤ／ＤＶＤ、ＥＥＰＲＯＭ等の少なくとも１台の記憶装置１１３に接続される、少なくとも１台の中央処理装置（ＣＰＵ）１０５を含む。
【００１８】
コンピュータ１０３に接続されているのは、例えばモニタまたはＬＣＤディスプレイなどの少なくとも１台の表示装置１１５、プリンタ１２３、モデム１２５、および／またはネットワークインタフェース１２７である。モデム１２５またはネットワークインタフェース１２７は、ワイヤ接続または無線接続を介してコンピュータネットワークまたはデータサービスに接続されてもよい。さらに、モデム１２５および／またはネットワークインタフェース１２７を介したコンピュータネットワークまたはデータサービスへの接続は、双方向通信を提供する。
【００１９】
本発明の例示的な実施形態では、データは、モデム１２５またはネットワークインタフェース１２７を介してコンピュータ１０３によって受信され、入力装置１０７を介してコンピュータ１０３に直接的に入力するか、あるいは記憶装置１１３から再表示することができる。さらに、本発明の出力は、少なくとも１台の表示装置１１５で表示され、記憶装置１１３内に記憶されるか、あるいはモデム１２５またはネットワークインタフェース１２７を介して他方のコンピュータに送信されてもよい。
【００２０】
例えば、本発明の一実施形態においては、図１Ａおよび図１Ｂに示すシステムは、少なくとも２台のコンピュータで実施される。２台のコンピュータは、クライアント・サーバ関係またはピアトゥピア関係性を有することできる。さらに、クライアント・サーバ関係に関して、サーバコンピュータは複数のクライアントに接続することができ、それにより各クライアントが、本発明による動的アプリケーションブラウザを介して、サーバから更新を受信し、サーバにデータを伝送することができる。
【００２１】
例えば、クライアントの動的アプリケーションブラウザが教育アプリケーションモジュールを実行中である場合、動的アプリケーションブラウザは、授業計画または試験などの教育資料をサーバから受信することができる。その結果として、試験の点数、使用時間等の統計データは、評価のためにクライアントからサーバに送信することができる。また、プロファイルデータまたはそれ以外のユーザ情報は、識別のためにクライアントからサーバに送信できる。さらに、本発明の例示的な方法およびシステムを使用して、クライアントは、追加授業計画または追加アプリケーションモジュールの購入を許可するサーバにデータを送信することができる。加えて、サーバは、アプリケーションモジュール全体を置換する必要なく、個々のＪａｖａ（登録商標）オブジェクトおよびクラスファイルを更新することによって、クライアント上で実行中のアプリケーションモジュールに変更を加えることができる。さらに、サーバは、個々のアプリケーションモジュールを修正する技法と同じ技法を使用して、クライアントの動的アプリケーションブラウザに変更（または更新）を加えることができる。
【００２２】
図１Ｃは、本発明による動的アプリケーションブラウザの例示的な実施形態を示す。本発明による動的アプリケーションブラウザは、コンピュータ１００および１０１で実行するように適応される。簡略するために、本発明を備えるソフトウェアは、クライアントコンピュータ１０１で実現される場合のみを説明する。ただし、クライアントコンピュータ１０１と比較されるネットワークコンピュータ１００上で実現されるソフトウェア間のあらゆる相違点を説明する。
【００２３】
本発明は、起動モジュール１０２、アプリケーションモジュール１０４、グローバル設定値モジュール１０６、オブジェクトデータベースマネージャ１０８、および入力モジュール１０を含む。更新モジュール１１０は、データベースゲートウェイ１１２および更新マネージャ１１４を含む。オブジェクトデータベースマネージャ１０８は、ハンドラマネージャ１０９を含む。ハンドラマネージャ１０９は、ローカルコンピュータ内の別のコンピュータから受信されるデータをインストールするために使用される。これを、図１３〜図１５に関して説明する。各データベース１１６、１１７、１１８は、異なるアプリケーションモジュール（例えば、アプリケーションモジュール１０４）に対応する。代わりに、複数のアプリケーションモジュールは、同じデータベースを共用できるか、あるいはそれぞれ排他的にまたは包含的にのどちらかで複数のデータベースを使用することができる。
【００２４】
起動モジュール１０２は、コンピュータ１０１の初期化を制御する。本発明は、本発明を備える動的アプリケーションブラウザによって実行される１つまたは複数のアプリケーションモジュールを含むことができる。アプリケーションモジュール１０４は、オブジェクトデータベース内のオブジェクトを検索、記憶するためにオブジェクトデータベースマネージャのリソースを必要してもよい、あらゆる種類のアプリケーションであり得る。更新モジュール１１０は、コンピュータ１０１上の少なくとも１つのデータベースに記憶されるオブジェクトの更新を実行する。オブジェクトデータベースマネージャ１０８は、データベースを管理する。オブジェクトデータベースマネージャ１０８は、複数のデータベース１１６、１１７、１１８の機能性を制御する。各データベースは、１つの索引１２０、１２１を含むテーブル１１９を記憶する。データベース１１６、１１７、１１８は、テーブル１１９の要素としてオブジェクト１２２（またはデータ）を記憶する。それから、テーブル１１９内の要素は、テーブル１１９内の要素に容易にアクセスできるようにする１つまたは複数の索引１２０、１２１を作成するために使用される。本発明の一実施形態に従って、１つの型（例えば、ある特定のクラスのオブジェクト）だけが単一テーブルに記憶できる。オブジェクトの「型」は、例えば、オブジェクトに含まれる構造およびフィールドとして定義される。
【００２５】
図１Ｈ〜図１Ｌは、データベース１１６、１１７、１１８のファイル構造の例示的な実施形態を示す。各データベース１１６、１１７、１１８は、データベースにおけるすべてのテーブルのリストを含むデータベースファイル（図示せず）を含む。また、各データベース１１６、１１７、１１８は、すべての記号ファイル名を物理ファイル名（例えば、物理ファイル名が付いたデータベースに一覧表示されるテーブル名）に写像するファイル用語集ファイル（図１Ｈ）を含む。本発明の代替実施形態においては、グローバルファイル用語集ファイルは、データベース１１６、１１７、１１８のすべてについてすべての記号ファイル名を写像するために使用される。
【００２６】
各テーブル１１９は、それと関連付けられているテーブルファイル（図１Ｉ）、データファイル（図１Ｊ）、ファイルマップ（図１Ｋ）、少なくとも１つの索引ファイル（図１Ｌ）、およびランダムアクセスファイル（ＲＡＦ）（図示せず）を有し、すべてがハードドライブなどの記録可能媒体上に記憶されている。テーブルファイルは、テーブル内で許されている型またはクラス、ディスクキャッシュ方針、テーブルと関連付けられている索引の数とファイル名、ファイルマップの記号名、およびランダムアクセスファイルのファイル名などの情報を含む。
【００２７】
索引ファイルは、索引の索引値と関連付けられるオブジェクトＩＤのリストを含む。テーブルの索引ごとに作成される１つの索引ファイルがある。索引ファイルは、索引に記憶される値の型（例えば、文字列、整数、または任意のそれ以外の許容できるＪａｖａ（登録商標）型）、索引付けオブジェクトから索引値を抽出するためにオブジェクトによって呼び出されるメソッド（またはプロシジャ）の名前、およびオブジェクトと索引値の間に１対１の関係性（例えば、社会保障番号は、二人の人が社会保障番号を共有しないので、人物オブジェクトと１対１の関係性を有さなければならない）があるかどうかを示すフラグも含む。
【００２８】
ファイルマップは、ランダムアクセスファイル内のファイルサイズおよびファイルオフセット（ファイルポインタ値）と関連付けられているオブジェクトＩＤのリストを含む。データベース内のオブジェクトは、ランダムアクセスファイル内に直列化された形式で記憶され、ファイルオフセットは、直列化されたオブジェクトの物理的なロケーションを示す。ファイルマップは、ランダムアクセスファイルの総サイズ、ランダムアクセスファイルの終了ポインタ値、およびランダムアクセスファイル内に記憶されるオブジェクトの総数も含む。
【００２９】
データファイルは、ランダムアクセスファイルの記号名およびファイルマップの記号名を含む。
【００３０】
オブジェクト１２２の例を、図１Ｄに示す。型「人物」の例示的なオブジェクトは、固有の識別フィールド（ＩＤ）、名前フィールド（ＦＩＲＳＴ  ＮＡＭＥ）、名字フィールド（ＬＡＳＴ  ＮＡＭＥ）、および年齢フィールド（ＡＧＥ）を含む。「人物」オブジェクトのテーブルの例は、図１Ｅに示す。また、オブジェクト型は、それがバイトのアレイとして表すことができるのであれば、およびそれがオブジェクトに割り当てられる固有のオブジェクトＩＤを有することができるのであれば、Ｊａｖａ（登録商標）内で使用可能なあらゆる型であってもよい。図１Ｅに示す例示的なテーブルは、「人物」型の少なくとも１つのオブジェクト１２２を含む。索引１２０の例を図１Ｆに示す。索引１２０は、例えば、その名字フィールド単位でテーブル１１９内のオブジェクトのそれぞれを並べ替える。もちろん、索引はオブジェクト１２２内で知見されるあらゆるパラメータに関して並べ替えられてもよいことが理解される。索引１２０は、名字値欄およびオブジェクト識別（ＩＤ）欄を含む。図１Ｆは、「ＦＩＲＳＴ  ＮＡＭＥ」単位で記憶される別の例示的な索引１２１を示す。この場合、１と２両方のオブジェクトＩＤが指定されるオブジェクトは、共に同じ値を有する名前フィールドを含むため、索引１２１は、名前「マーク」に対応する同じ行の両方のオブジェクトＩＤを一覧表示する。
【００３１】
図１Ｃを参照すると、コンピュータ１００、１０１の初期化を制御する起動モジュール１０２をここで説明する。起動モジュール１０２は、グローバル設定値モジュール１０６に接続される。グローバル設定値モジュール１０６は、システムを動作する多様なパラメータを初期化する。例えば、多様なデータベース１１６、１１７、１１８の場所は、グローバル設定値モジュール１０６に記憶することができる。また、起動モジュール１０２は、多様なデータベース１１６、１１７、１１８内のこのようなアイテムを参照、検索および記憶するためにオブジェクトデータマネージャ１０８と接続する。また、起動モジュール１０２は、更新マネージャ１１４を介して更新モジュール１１０と接続する。更新モジュール１１０は、システムがリモートコンピュータ、すなわちネットワークコンピュータ１００またはクライアントコンピュータ１０からオブジェクトをアップロードおよびダウンロードするのを補助する。更新モジュール１１０を、別のコンピュータから転送される情報でデータベース１１６、１１７、１１８を更新するために、初期化プロセス中に、起動モジュール１０２によって呼び出してもよい。代わりに、更新モジュール１１０を、ローカル（実行中）コンピュータ上のデータベース１１６、１１７、１１８をアプリケーションによって作成される情報で更新するために、アプリケーションモジュール１０４によって呼び出してもよい。
【００３２】
更新モジュール１１０は、データベースゲートウェイ１１２を介してオブジェクトデータベースマネージャ１０８と通信する。データベースゲートウェイ１１２は、更新モジュール１１０が、リモートコンピュータから受信される新規オブジェクトを、データベース内に記憶される適切なテーブルに転送することができるように、データベースマネージャと更新モジュール１１０の間のインタフェースとして作用する。特に、データベースゲートウェイ１１２は、更新モジュール１１０との間の命令を、更新モジュール１１０だけではなく、データベースマネージャ１０８によっても理解されるコマンドに変換することができる。このようにして、別のデータベースが本発明とともに使用される場合（例えば、ＳＱＬサーバなどのＪａｖａ（登録商標）データベース結合性（ＪＤＢＣ）準拠のデータベース）、データベースゲートウェイ１１２を、新規データベースと接続できるデータベースゲートウェイに変更する、またはプログラミングすることだけが必要である。本発明の代替実施形態では、データベースゲートウェイ１１２は、それに接続されているデータベースの型を自動的に検出し、更新モジュール１１０との間の命令を更新モジュール１１０だけではなくデータベースマネージャ１０８によっても理解されるコマンドに変換する。
【００３３】
起動モジュール１０２がコンピュータの初期化プロセスを完了すると、制御は、その特定のアプリケーションを実行するために、グローバル設定値モジュール１０６、オブジェクトデータベースマネージャ１０８および／または更新モジュール１１０のいずれかと通信できるアプリケーションモジュール１０４に移される。アプリケーションモジュール１０４の例としては、ゲーム、教育トレーニングプログラム、電子コマースプログラム、金融アプリケーション、およびオブジェクトデータベース内でオブジェクトを検索、記憶するために、オブジェクトデータベースマネージャのリソースを必要とする可能性のあるそれ以外のあらゆるアプリケーションが挙げられる。また、アプリケーションは、例えば、製品要求、製品情報、試験の点数、アプリケーション更新、使用量統計、カスタマ情報および／または追加アプリケーションモジュールまたはその一部などの情報を、リモートロケーションとの間で送受するために、更新マネージャ１１４を介して更新モジュール１１０を活用することができる。
【００３４】
図２は、起動モジュール１０２によって実行される例示的なプロセスを示す。ステップ２２６では、グローバル変数が初期化される。グローバル変数とは、動的アプリケーションブラウザ内の１つまたは複数のモジュールによって参照される設定値、値、またはリソースである。これらのグローバル値は、（例えば、セットアッププロシジャ内で）動的アプリケーションブラウザの使用を通して使用されるので、それらの場所が所定されることが必要であり、その結果、ブラウザの多様なモジュールは、場所に関する情報、例えばリモートコンピュータのインターネットアドレスだけではなく、多様なデータベースの位置も突き止めることができる。ステップ２２８では、ステップ２２６のグローバル変数を初期化した後に、所望のアプリケーションモジュールに関連付けられる特定のデータベース１１６が配置され、特定のデータベース１１６の場所は、グローバル設定値モジュール１０６に記憶される。
【００３５】
現在実施されている実施形態では、実行のために使用できるアプリケーションモジュールはただ１つである。複数のアプリケーションで本発明を実施してから、ユーザに自分が実行を所望のアプリケーションを選択するようにプロンプトを出すことは、当業者の知るところである。本発明の代替実施形態においては、使用可能なデータベースのすべてが配置され、各データベースの場所はグローバル設定値モジュール１０６内に記憶される。ステップ２３０では、更新モジュール１１０は、リモートロケーション、例えば、ネットワークまたはインターネット接続を介して接続されるネットワークコンピュータ１００またはそれ以外のクライアントコンピュータ１０１の間でオブジェクトを送受する。それから、更新モジュール１１０によって受信される新しいオブジェクトが、ステップ２３２でアプリケーションモジュールに対応する適切なデータベースにインストールされる。ステップ２３４では、デフォルトアプリケーションモジュールまたは選択されたアプリケーションモジュール１０４が、アプリケーションモジュール１０４のためにモデル、ビュー、および制御装置を初期化するなどの、標準セットアッププロトコルを開始することによってロードされる。
【００３６】
図３は、図２の更新ステップ２３０の例示的なフローチャートを示す。ステップ３３６では、データベースゲートウェイ１１２が、オブジェクトデータベースマネージャ１０８と接続するためにアクセスされる。データベースゲートウェイ１１２の場所は、ステップ３３８で、グローバル設定値モジュール１０６内にグローバル変数として記憶される。ステップ３４０では、起動モジュール１０２が、更新サポートがイネーブルされることを検証する。更新サポートがイネーブルされない（例えば、ネットワーク接続が存在しない）場合、更新プロセスはステップ３４７で読み飛ばされる。
【００３７】
しかしながら、更新サポートがイネーブルされる場合、ログインプロンプトが作成され、ステップ３４２でローカル端末のユーザに表示される。ステップ３４４では、ユーザは、例えば、その後のステップ３４６でファイルに記憶されるユーザ名およびパスワードを入力する。ステータスパネルが、ユーザに更新プロシジャのステータスを知らせるために、かつユーザが、システムが更新モジュールによって引き起こされる可能性のある遅延のために適切に動作するのを停止したと考えるのを防ぐためにも、ステップ３４８でユーザに表示される。ステップ３５０では、ユーザ情報は、クライアントコンピュータからネットワークコンピュータに送信される。ネットワークコンピュータ１００は、ユーザを認証し、認証が無事終了したかどうかを示すメッセージを送り返す。加えて、認証が無事に終了した場合には、２台のコンピュータ間で、特に、（図１３〜図１６に関して後述する）あらゆるトランスポートセルリストを含むテーブル内で交換されるように指定された新規オブジェクトが交換される。認証が無事に終了しなかった場合には、エラーメッセージが発生し、ユーザ（図示せず）に表示される。ユーザは、再びプロンプトを出されるか、あるいはプログラムが停止する可能性がある。オブジェクトの交換を介したコンピュータの認証および更新の完了時に、ステータスウィンドウがステップ３５２で削除される。ステップ３５４では、ステータスモジュールが、更新プロセスが無事に完了したかどうかを検証する。イエスである場合には、更新プロセスはステップ３５８で終了し、それ以外の場合には、ステップ３５６でエラーメッセージが作成され、ユーザに表示される。
【００３８】
図４は、図２のインストールステップ２３２を実行するための例示的な方法を示す。ステップ４６０では、起動モジュール１０２が、更新マネージャ１１４を介して、更新モジュール１１０を用いて、新規オブジェクトが、ステップ３５０からのトランスポートセルリストの交換を介してリモートコンピュータのいずれかから受信されたかどうかを確かめるためにチェックする。新規オブジェクトが存在しない場合には、インストールプロシジャは、ステップ４６２で読み飛ばされる。ただし、新規オブジェクトが存在する場合には、ステップ４６４で、ステータスウインドウがユーザに表示され、データベース内の新規オブジェクトのインストレーションがステップ４６６で開始される。例示的なインストレーションプロシジャは、下記の図１５Ａ〜図１５Ｃに関して説明する。ステップ４６６で新規オブジェクトのインストレーションが完了した後、インストレーションは、ステップ４６８でディスクに変更を付すことによって永久にされる。ステップ４７０では、ステータスウィンドウが削除され、ステップ４７２では、起動モジュール１０２が、インストールプロシジャが無事に完了したかどうかを検証する。インストールプロシジャ２３２が無事に完了した場合、インストールプロシジャ２３２はステップ４７４で終了する。それ以外の場合、インストールプロシジャ２３２が無事に完了しなかった場合には、ステップ４７６でエラーが起動モジュール１０２に報告される。
【００３９】
図５は、図２の自動ロードアクションモジュール２３４の例示的な実施形態を示す。ステップ５７８では、データベースからのテーブルが、自動ロードアクションモジュール２３４によって実行されなければならないアクションのリストを含むデータベースから検索される。アクションは、例えば、動的アプリケーションブラウザに、アプリケーションモジュールの起動、新規データベースの作成、または既存データベースの構造の修正などの特定のタスクを実行するように命令するプロシジャとして定義される。テーブル中、各アクションは、優先順位値を含む。ステップ５８０では、アクションは、最初に最高の優先順位が指定されるアクションを、最後に最低の優先順位が指定されるアクションを等実行するように優先順位順で並べ替えられる。ステップ５８２では、自動ロードアクション２３４が、ステップ５７８で検索されるテーブル内のアクションの総数を表すカウンタを参照することによって、実行するためのアクションがあるかどうかを確かめるために検証する。カウンタが実行されたアクションの総数に等しい場合には、自動ロードアクションモジュール２３４はステップ５８４で完了される。カウンタが実行されたアクションの総数未満である場合には、次のアクションは、それがステップ５８６で条件付アクションであるかどうかを判断するために評価される。条件付きアクションとは、一定のイベントの発生に基づいてのみ実行されるべきアクションである。例えば、アクションは、それが過去に実行されなかった場合に、実行される必要性のみがある。すなわち、例えば、アクションが新規データベースを初期化することである場合があり、データベースがすでに存在している場合には不必要である。
【００４０】
さらに、アクションは、一日の時刻または曜日、あるいは評価でき、ブール値を返すことができるそれ以外の条件に基づいて条件付きである場合がある。現行のアクションが条件的でない場合、アクションはステップ５８８にて実施される。それ以外の場合、条件はステップ５９０で評価される。条件が真であると評価された場合には、アクションはステップ５８８で実行され、それ以外の場合、ステップ５９３で、カウンタが増分され、プロセスはステップ５８２に戻る。
【００４１】
アクションがステップ５８８で実行された後、起動モジュール１０２が、アクションがアプリケーションモジュール１０４を表すオブジェクトを作成したかどうかを判断する。作成されたアクションがアプリケーションモジュール１０４であると判断されると、アプリケーションモジュールはステップ５９６で実行され、起動モジュール１０２が、ステップ５９８でアプリケーションモジュール１０４の完了を待機する。アプリケーション完了時、カウンタはステップ５９３で増分され、プロシジャがステップ５８２に戻る。ステップ５９４でアクションによって作成されるオブジェクトがアプリケーションではない場合、起動モジュール１０２は、アクションを追加アクションと平行して実行できるかどうかを判断する。すなわち、起動モジュール１０２は、このアクションの完了まで追加アクションの実行を遅延することが必要であるかどうかを判断する。アクションがその他のアクションと平行して実行できる場合には、プロシジャは、ただちにステップ５８２に戻る。それ以外の場合、プロシジャは、ステップ５８２に戻る前に、ステップ５１０２でアクションの完了を待機する。
【００４２】
図６〜図１２は、図１のデータベースマネージャ１０８の例示的な動作を示す。本発明の例示的な実施形態では、オブジェクトデータベース１１６、１１７、１１８は、Ｊａｖａ（登録商標）ブジェクトを記憶するために使用される。データベースマネージャ１０８は、必要に応じてその中に記憶されるオブジェクトを追加、削除または変更することによってデータベース１１６、１１７、１１８を管理する。本発明によるブラウザおよび関連アプリケーションの効率的な動作を各日にするために、本発明で使用されるデータベースは、従来のリレーショナルデータベースより複雑ではないように設計される。
【００４３】
すなわち、アプリケーションからリレーショナル行の中にデータを押し込む代わりに、オブジェクトは作成された通りに記憶され、テーブルの中に格納される。この効率が、複数のアプリケーションモジュール１０４とのその移植性だけではなく、データベースの高速かつ容易な動作にも対処する。また、より複雑ではなく、より高速の本発明のデータベースは、従来のデータベースより少ないリソースを使用し、それによりアプリケーションモジュールにさらに多くの使用可能なリソースを提供する。典型的なパーソナルコンピュータは、Ｊａｖａ（登録商標）アプリケーションを実行するために使用可能な限られたリソースを有するので、本発明のデータベースの効率は、パーソナルコンピュータの低リソース環境での精密なデータアクセスに対処する。データベース上で動作するデータベースマネージャの例示的な機能は、データベースの中にオブジェクトを挿入する能力、データベース内のオブジェクトを変更する（または置換する）能力、データベースからオブジェクトを検索する能力、およびデータベースからオブジェクトを削除する能力を含む。データベースのフォーマット、特にテーブル、オブジェクトおよびオブジェクトＩＤのそれらのテーブル内での使用が、ブラウザ、つまり実行するアプリケーションまたはブラウザ、およびデータベースの使用および速度を容易にする。さらに、データベースのフォーマットが、ブラウザを動的にすることができる。
【００４４】
すなわち、例えば、データベース内のオブジェクトは容易に追加、修正および削除できるので、アプリケーション（またはアプリケーション用のコンテンツ）は、シームレスに追加、削除または修正できる。さらに、ブラウザ自体は、単にオブジェクトを追加、修正またはデータベース内のテーブルから削除するだけで修正することができる。さらに、データベースのフォーマットは、プログラマが（オブジェクトを多数の異なるように入力された行に分割するなど、従来のデータベースと互換性のある形式にオブジェクトを変換する必要なく）オブジェクトを自分専用Ｊａｖａ（登録商標）形式のデータベース中に格納できるようにすることによって効率的かつ容易なソフトウェア開発に対処する。
【００４５】
本発明の一実施形態に従って、データベースに加えられる変更は最初に一時的にメモリ内で加えられてから、ディスクで加えられる。これが、エラー発生時にデータベースの状態を復元する能力を提供する。データベース１１６、１１７、１１８に対する変更を永久にするために使用されるプロシジャはコミットと呼ばれる。データベース１１６、１１７、１１８に加えられた変更を、それらを永久にする前に、逆転するために使用されるプロシジャがロールバックと呼ばれる。
【００４６】
データベースマネージャのさらなる機能とは、条件に基づきデータベース内でオブジェクトを修正、削除または検索する能力である。例えば、ユーザまたはアプリケーションが、所定の日付より旧いデータベースにおけるすべてのオブジェクトの削除を希望する場合がある。加えて、特定値を有する特定のフィールドを含むすべてのオブジェクトを修正または検索することが望ましい場合がある。条件関数による削除、修正および検索は、アプリケーションまたはユーザが、オブジェクトまたはオブジェクトのセットを修正または削除する決定が下された時点で、オブジェクトのアイデンティティを容易に入手できないときに有効である。これら特徴の実施の例示的な実施形態は、以下にさらに完全に説明する。
【００４７】
図６Ａは、本発明によるデータベース１１６〜１１８およびデータベースマネージャ１０８のオブジェクト挿入機能性のある実施形態を示す。ステップ６２０２では、オブジェクトがある特定のデータベース（例えば、コマンドが設定された時点で実行中のアプリケーションモジュールに対応するデータベース）のある特定のテーブルの中に挿入されることを示すコマンドがオブジェクトデータベースマネージャ１０８に送信される。ステップ６２０４では、挿入されるオブジェクトを特定する一意のオブジェクトＩＤが作成される。オブジェクトＩＤが作成された後、オブジェクトＩＤは、オブジェクトの中に挿入される。本発明の例示的な実施形態では、オブジェクトＩＤが、データベースに格納される第１オブジェクトが１というＩＤを与えられるように連続して割り当てられる。このオブジェクトＩＤは、データベースに挿入される新規オブジェクトごとに１づつ実現される。このようにして、オブジェクトＩＤがオブジェクトに割り当てられると、そのオブジェクトＩＤは同じデータベース内の別のオブジェクトに対して再び使用されることはないので、各オブジェクトは、固有のＩＤを有する。
【００４８】
複数のアプリケーションまたは複数の要求が同時に同じオブジェクトを変更するのを防ぐために、指定されたオブジェクトにロックをかけることが必要である場合がある。ロックは、ユーザまたはアプリケーションがデータベース内で検索されたオブジェクトの保存を希望するときには必ず必要である。例えば、同時に実行している２つのアプリケーション（またはプロセス）が同時に同じオブジェクトを修正しようとすることがある。したがって、ステップ６２０６では、データマネージャ１０８は、テーブルのオブジェクトへの同時アクセスを防ぐために、テーブルのオブジェクトにロックがかけられることが必要とされているかどうかを特定する、テーブル１１９内に含まれるフラグを評価する。
【００４９】
ロックが必要とされる場合には、ステップ６２０８でオブジェクトがロックされる。ロックが必要とされない場合、あるいはロックステップの完了（つまり、オブジェクトが無事にロックした）後、オブジェクトデータベース１０８は、テーブルの中に挿入されるオブジェクトが、ステップ６２１０内の正しいオブジェクト型に一致するかどうかを検証する。各テーブルは、テーブルの中に挿入されるのを許されるオブジェクトのクラス（つまり型）を示すフラグを有する。上記のように、型は、例えばオブジェクトに含まれる構造、フィールドおよび機能性として定義される。オブジェクト型が一致しない場合、挿入はステップ６２１２で失敗し、オブジェクト挿入プロシジャは取り消され、エラーメッセージが発生する。
【００５０】
ただし、オブジェクト型がテーブルにより許される型に一致する場合には、ステップ６２１４で、オブジェクトデータベースマネージャ１０８が、テーブルがバックアップを実行するように設定されているかどうかを判断する。バックアップは、データの破壊を防ぐためにテーブルの過去のバージョンを表すデータを記憶することとして定義される。バックアップがこのテーブルのために実行される場合には、バックアッププロシジャは、テーブルがバックアップファイルの中にコピーされるステップ６２１８で開始する。バックアッププロシジャの後、あるいはテーブルが実行されるバックのために設定されていない場合に、オブジェクトはディスクまたはハードドライブ、光ドライブ、仮想ドライブ、またはステップ６２１６でデータを記憶、検索するために使用できるそれ以外の媒体などのその他の記録可能媒体に書き込まれる。
【００５１】
ステップ６２１６の後、オブジェクトは、ステップ６２２０でテーブルの使用可能な索引に従って索引付けされる。例えば、オブジェクトが名前フィールドおよび名字フィールドを有し、テーブルが、名字フィールドに基づいた索引を含む場合には、オブジェクトデータベースマネージャ１０８は、テーブルの「名字」索引内の新規オブジェクトに索引を付ける。これにより、ユーザは、テーブルに記憶されるオブジェクトＩＤをその後特定する適切な名字索引内の名字フィールドを検索するように、データベースマネージャ１０８に命令することによって、オブジェクトの位置を突き止めることができる。オブジェクトがステップ６２２０で索引を付けられた後、オブジェクトデータベースマネージャ１０８は、ステップ６２２２で特定のテーブルのためにさらに多くの索引があるかどうかを確かめるためにチェックする。ある場合には、オブジェクトはステップ６２２０でその特定の索引のために索引を付けられる。このプロシジャは、索引ごとに繰り返す。すべての索引が新規オブジェクトで更新されると、オブジェクト挿入プロシジャがステップ６２２４で完了する。
【００５２】
図１９Ａ〜図１９Ｃは、図６Ａのディスクへの書き込みステップ６２１６の例示的な実施形態を示す。図１９Ａに関して、オブジェクトは、まずステップ１９９６３でオブジェクトからオブジェクトＩＤを抽出することによいってランダムアクセスファイルに書き込まれる。オブジェクトＩＤおよびオブジェクト自体は、オブジェクトデータマネージャ１０８が、オブジェクトＩＤがステップ１９９６４で指定されたデータベースにすでに存在しないかどうかを検証することができるように、オブジェクトデータベースマネージャ１０８に送信される。ステップ１９９６５では、オブジェクトＩＤが固有であるかどうかが判断される。固有である場合には、オブジェクトと関連付けられるテーブルについて、エントリがテーブルファイルマップ内で作成される。オブジェクトＩＤが固有ではない場合には、ステップ１９９９０でエラーが報告され、挿入は失敗する。
【００５３】
上記のように、データベースマネージャ１０８およびデータベース１１６、１１７、１１８の機能性は、一時的におよび／または恒久的にデータベースに対して変更を加える能力を含む。ランダムアクセスファイルに書き込む際にエラーを防ぐために、バッファが、ランダムアクセスファイルのコンテンツのサブセクションを一時的にメモリに記憶するために使用される。ステップ１９９６７では、オブジェクトがバッファ内のその適切な場所にあるメモリに記憶され、コンテンツが正確であるとして検証されると、バッファのコンテンツはそれからランダムアクセスファイルに記憶され、存在する場合その既存のコンテンツを置き換える。このようにして、ランダムアクセスファイルに対するすべての変更は、コミットプロセスのバッファからの一時点で加えられる。本発明の代替実施形態においては、オブジェクトは、それらをまずバッファに記憶せずにランダムアクセスファイルに直接的に書き込まれる。
【００５４】
バッファの使用は、書き込みプロシジャの信頼性を保証するだけではなく、ランダムアクセスファイルからアイテムを検索するために要するアクセス時間も加速できる。加えて、別の種類のバッファリングが固有のオブジェクトの高速アクセスの優位点を提供する。すなわち、例えばオブジェクトの検索は、実際の検索の前にアプリケーションモジュール１０４によって予測することができ、それはバッファ内に格納することができる。加えて、対応するランダムアクセスファイルをファイあるマップに書き込みをする前に、バッファに加えられる変更は、トランザクションベクタとしてメモリに記憶され、その結果テーブルに加えられる変更のそれぞれが、必要ならば、それらをコミットする前に逆転できる。ファイルマップはコミットが呼び出されるまで変更されないので、変更が加えられ、不正確であると理解された後にロールバックが発生した場合、ファイルマップからデータを再ロードすることによって、あるいは代わりに、トランザクションベクタに記憶される変更を逆転して、ファイルマップをその元の状態に復元することによって（変更前に）ファイルマップのバッファをそのオリジナルコンテンツに復元することだけが必要である。
【００５５】
図１９Ｂは、図１９Ａのオブジェクトステップ１９９６６用ファイルマップエントリ作成の例示的な実施形態を示す。ステップ１９９７４では、バイトのアレイが（例えば、従来のＪａｖａ（登録商標）直列化技法を使用することによって）オブジェクトから作成される。ステップ１９９７５では、アレイのバイト長またはサイズが計算される。ステップ１９９７６では、バイトのアレイを収容するほど大きいランダムアクセスファイル内の空きスペースの第１バイト用のファイル索引を表す開始ポインタが割り当てられる。ステップ１９９７７では、ステップ１９９７６で求められるポインタ値がファイルマップに記憶される。ステップ１９９７８では、ステップ１９９７７に記憶されるポインタ値が、ファイルマップ内の「挿入」ポインタとしてマークされる。ステップ１９９７９では、ファイルマップに対する変更がトランザクションベクタ内にログされる。
【００５６】
図１９Ｃは、バッファの中へのオブジェクト挿入の例示的な実施形態を示す（図１９Ａのステップ１９９６７）。ステップ１９９６８では、オブジェクトがバイトのアレイの中に直列化される。ステップ１９９６９では、オブジェクトの開始ポインタが、使用可能な空きスペースを評価することによってファイルマップから検索される。ステップ１９９７０では、バッファは、新規オブジェクトが記憶される適切なポインタ値まで横切られる。ステップ１９９７１では、オブジェクトはバッファの中に記憶され、コミットが呼び出された後に、ランダムアクセスファイルに記憶される。ステップ１９９７２では、コミット後に、現在メモリ内にあるバッファが、修正されたばかりのバッファであるかどうかが判断される。そうである場合には、ステップ１９９７３で、バッファは、バッファのコンテンツを最新に保つために、ランダムアクセスファイルから削除（または復元）される。本発明の代替実施形態においては、複数のバッファがランダムアクセスファイルのコンテンツを記憶するために使用されてもよい。
【００５７】
図６Ｂは、図６Ａの索引付けステップ６２２０の例示的な実施形態を示す。オブジェクトに索引を付けるため、テーブル１１９内の索引１２０、１２１ごとにステップ６２２８のオブジェクトおよびオブジェクトＩＤを使用する索引プロシジャが実行される。特に、索引ルーチン６２２０は、データベース内のテーブルに関連付けられる索引の１つの中にエントリを挿入するために呼び出され、そのルーチンに渡されるパラメータは、索引が付けられなければならないオブジェクトおよびオブジェクトＩＤを含む。ステップ６２３０で索引値を得るために、（索引ファイル内に記憶されるまたは参照される）メソッドまたはプロシジャがオブジェクト上で実行される。この索引値は、テーブルのオブジェクトを並べ替えるために索引によって使用される値に一致する。例えば、索引は、オブジェクトの名字フィールドの索引値で並べ替えられてもよい。また、索引は、オブジェクトの作成の日付けで並べ替えられてよい。
【００５８】
前述のように、索引は、オブジェクト内の、あるいはオブジェクトに関係するパラメータまたはフィールドのいずれかのために作成されてもよい。索引値がステップ６２３０で検索されると、索引値がすでに索引内に存在するかどうかを判断するために、索引の既存のコンテンツ上で実行される。検索はあらゆる適切なメソッドによって実行されてもよい。例えば、バイナリ検索が使用されてもよい。索引値がステップ６２３２にすでに存在する場合には、新規オブジェクトＩＤが、ステップ６２３４の索引の索引値に一致する既存のオブジェクトＩＤの隣に挿入される。それ以外の場合、ステップ６２３６で、新規索引値が作成され、新規索引値に一致するオブジェクトＩＤがリストに入れられる。プロシジャはステップ６２３８で終了する。
【００５９】
図７Ａは、データベースマネージャ１０８によって実行される例示的な修正プロシジャを示す。オブジェクトを修正するために、すなわち既存のオブジェクトを、それを変更済みのオブジェクトで置換することによって修正すると、オブジェクトデータベースマネージャ１０８は、最初に、同時にそのオブジェクトを修正するようにとの別の要求を回避するために、ステップ７２４０の修正プロシジャを要求するアクションによって置換（または修正）されるオブジェクトにロックをかけられるかどうかを検証しなければならない。オブジェクトにロックをかけることができない場合には、修正はステップ７２４２で失敗する。例えば、ロックがすでにそのオブジェクトに掛けられている場合に、これが発生する可能性があり、それが現在別の要求によって変更されていることを示す。
【００６０】
ただし、オブジェクトにロックをかけることができる場合には、オブジェクトは、ステップ７２４３でそのオブジェクトと関連付けられるフラグをセットすることによってロックされ、旧オブジェクトはステップ７２４４で検索される。これは、テーブルに、特定のオブジェクトＩＤが指定されるオブジェクトを戻すように命令することによって実行される。テーブルは、要求されたオブジェクトの物理的な場所を突き止めるためにファイルマップを使用する。修正プロシジャが既存のオブジェクトを修正しているので、特定的なオブジェクトＩＤは、修正を要求するアプリケーションに既知である。ステップ７２４６では、新規オブジェクトと旧オブジェクトの両方を考慮して、各索引がオブジェクトの変化を反映するように更新される。例えば、名字フィールドに変更があった場合、新規オブジェクトとの旧オブジェクトの比較は、名字が変化したことを反映する。この場合、索引は、修正されたオブジェクトのための新規索引値を反映するように更新される。オブジェクトＩＤは同じままである。ステップ７２４８は、テーブルの索引ごとにステップ７２４６を繰り返す。索引のすべてが更新されると、更新プロシジャがステップ７２５０で完了される。
【００６１】
ステップ７２４６を、図７Ｂに関してさらに説明する。ステップ７２５２では、索引値、すなわち索引がそれに従ってオブジェクトを並べ替える値が新規オブジェクトから抽出される。ステップ７２５４では、旧オブジェクトの索引値が抽出される。ステップ７２５６では、旧い値および新規値が比較され、索引値がステップ７２５８で同じ場合には、索引は依然として最新であり、索引を変更する必要はなく、プロシジャはステップ７２６０で終了する。旧索引値および新規索引値が同じでない場合には、ステップ７２６２で、オブジェクトＩＤが索引から削除される。削除されたオブジェクトＩＤが特定的な索引値に一致する唯一のオブジェクトＩＤであった場合には、索引値も索引から削除される。ステップ７２６４では、新規索引値がオブジェクトＩＤとともにすでに存在しない場合には、新規索引値が索引の中に挿入される。新規索引値がすでに索引内に存在する場合には、オブジェクトＩＤが挿入される。索引は、ここで更新され、プロシジャは７２６６で終了する。
【００６２】
固有のオブジェクトＩＤを提供することによってオブジェクトを更新することに加え、条件でオブジェクトを修正することも可能である。すなわち、ユーザまたはアプリケーションは、条件を評価できるようになるまでどのオブジェクトを修正する必要があるのか知らない可能性がある。例えば、ある特定の索引値を有する名字フィールドを含む指定されるテーブル内のすべてのオブジェクトを修正することが必要である場合がある。
【００６３】
この特徴の例示的な実施形態を、図８に示す。ステップ８３００では、条件の値が評価され、条件を満たすオブジェクトのリストが戻される。ステップ８３０２では、オブジェクトデータベースマネージャ１０８は、ロックがあるかどうか、あるいは条件に一致する、特定されたオブジェクトのすべてでロックを確立できるかどうかを判断する。特定されたオブジェクトのすべてにロックを確立できない場合には、修正プロシジャが失敗し、ステップ８３０４でエラーメッセージが発生し、ルーチンがステップ８３１６で終了する。しかしながら、ロックがステップ８３０６で確立できる場合には、ユーザまたはアプリケーションが複数のオブジェクトを置換することを意図していたかどうかが判断される。この意図は、修正プロシジャ開始時にオブジェクトデータベースマネージャ１０８に送信される変数またはフラグを介してオブジェクトデータベースマネージャ１０８に伝達することができる。フラグが、アプリケーションが条件による修正について複数のオブジェクトの更新を生じさせることを意図していなかったことを示す場合には、ステップ８３０８で、オブジェクトデータベースマネージャ１０８が、複数のオブジェクトがステップ８３００から戻されたかどうかを判断する。複数のオブジェクトがステップ８３０８で戻された場合には、ステップ８３１０で、エラーメッセージが発生し、プロシジャは終了する。
【００６４】
しかしながら、ステップ８３００でただ１つのオブジェクトだけが戻されたとステップ８３０８で判断される場合、あるいはフラグが、ユーザまたはアプリケーションが複数のオブジェクトについて置換されることを意図していたことを示すとステップ８３０６で判断される場合には、データベースマネージャ１０８はステップ８３１２に進む。ステップ８３１２では、第１オブジェクトが、図７Ｂに図示されるプロシジャを使用して、関連付けられるオブジェクトＩＤによって修正される。ステップ８３１４では、第１オブジェクトの更新が完了すると、つまりオブジェクトＩＤによる修正プロシジャがステップ７２６６で終了すると、ステップ８３１４で、オブジェクトデータベースマネージャ１０８が、ステップ８３００によって提供されるリスト内に追加のオブジェクトＩＤがあるかどうかを判断する。ある場合には、オブジェクトデータベースマネージャ１０８は、再びオブジェクトＩＤによる修正プロシジャを使用してステップ８３１２におけるリスト中の次のオブジェクトＩＤに対応するオブジェクトを修正する。ステップ８３００で戻されるオブジェクトのすべてが修正されると、プロシジャはステップ８３１６で終了する。
【００６５】
特定の特性または値を有するオブジェクトをデータベースから検索するために、オブジェクトデータベースマネージャ１０８が照会に一致するオブジェクトのオブジェクトＩＤを戻すことができるように、条件でテーブルを照会する必要がある。
【００６６】
このプロシジャの例示的な実施形態を、図９に示す。ステップ９４００では、照会はオブジェクトデータベースマネージャ１０８に送信される。照会は、アプリケーションを使用するユーザによって、あるいはアプリケーション自体によって作成できる。照会は真または偽を戻すブール式であるか、あるいは照会は結果のセットを戻す式である場合がある。照会は、照会に一致するオブジェクトを求めて、あらゆるまたはすべてのデータベース１１６、１１７、１１８、あるいはデータベースのどれかまたはすべての中のあらゆる、またはすべてのテーブルが検索されなければならないことを指定する。ステップ９４０２では、テーブルからの照会に一致するオブジェクトのすべてのオブジェクトＩＤが戻される。一致するオブジェクトのリストを得るために、検索される各テーブルと関連付けられる多様な索引が、照会で提示される基準を満たすオブジェクトのオブジェクトＩＤを見つけるために使用できる。
【００６７】
ステップ９４０４では、オブジェクトデータベースマネージャ１０８が、検索されたオブジェクト内に記憶されるフラグに基づいて、戻されるオブジェクトでロックを確立する必要があるかどうかを判断する。本発明の代替実施形態においては、各テーブルがオブジェクトデータベースマネージャ１０８によって参照されるロックされたオブジェクトＩＤのリストを含む。フラグは、オブジェクトデータベースマネージャ１０８に照会を送信したアプリケーションによってセットされる。検索されたオブジェクトをロックすることが必要である場合には、オブジェクトデータベースマネージャ１０８は、ステップ９４０６のオブジェクトのそれぞれをロックする。ステップ９４０６の完了後、あるいはオブジェクトのどれかをロックすることが必要ではない場合、オブジェクトＩＤはステップ９４０８でリストの形で戻され、その時点で、プロシジャはステップ９４１０で終了する。
【００６８】
図１８Ａ〜図１８Ｄは、図９のステップ９４０２で照会の条件に一致するオブジェクトのすべての検索オブジェクトＩＤの例示的な実施形態を示す。図１８Ａに関して、ステップ１８９００で、すべてのオブジェクトＩＤが指定されるテーブル用のファイルマップから検索される。照会条件は、ステップ１８９０２で評価され、句エバリュエータが条件の値（例えば、オブジェクトＩＤのセットまたはブール値）を戻す。プロシジャはステップ１８９０６で終了する。
【００６９】
図１８Ｂは、図１８Ａの評価条件ステップ１８９０２の例示的な実施形態を示す。ステップ１８９０８では、条件記述子が作成される。条件記述子は、優先順位単位で（例えば、動作の順序に従って）条件の論理演算（例えば、ブール演算子）を並べ替え、記憶する演算ベクタを含む。加えて、条件記述子は、句マップを含む。句マップは、句タグ（つまり、複数の条件の内側にある各句を一意の識別子、例えば「１０歳を超えるすべての人々」および「茶色の髪の毛のすべての人々」は、ＡとＢとして表され、この場合ＡとＢは句タグである）を実際の句と関連付ける。ステップ１８９１０では、（優先順位順の）論理演算が検索される。ステップ１８９１２では、句マップが検索される。ステップ１８９１４では、一番上の論理演算が検索される。ステップ１８９１６では、論理演算は、それが単項（例えば、ＮＯＴ（否定））であるのか、それとも２項（例えば、ＡＮＤ（論理積）またはＯＲ（論理和））であるのかを判断するために評価される。それが単項である場合、ステップ１８９１８では、第１句タグが検索される。ステップ１８９２０では、句が評価され、ブール値またはオブジェクトＩＤのセットを戻す。ステップ１８９２２では、単項論理演算子が検索され、ステップ１８９２４で、句および演算子がともに評価される。ステップ１８９２４の結果は、ステップ１８９２６内のセットマップと呼ばれるスタックに記憶される。追加論理演算子の存在はステップ１８９４０でチェックされる。ステップ１８９４２で残りの論理演算子がない場合には、セットマップの値が検索され、プロシジャはステップ１８９４４で終了する。
【００７０】
論理演算子が２項演算子（例えばＡＮＤ（論理積）またはＯＲ（論理和））であるとステップ１８９１６で判断されると、第１句タグがステップ１８９２８で検索される。ステップ１８９３０では、句が評価され、ステップ１８９３２で、次の句タグが検索される。ステップ１８３４では、次の句タグと関連付けられる句が評価され、ステップ１８９３６では２項論理演算子が検索される。ステップ１８９３８で、ステップ１８９３６で検索された演算子とともに、ステップ１８９３０およびステップ１８９３４の結果を使用して、２項演算が評価される。ステップ１８９３８の結果はステップ１８９２６のセットマップに記憶され、プロシジャは前述のようにステップ１８９４０で続行する。ステップ１８９４０で、演算ベクタにさらに多くの論理演算子があると判断されると、プロシジャはステップ１８９１４に戻る。
【００７１】
図１８Ｃは、図１８Ｂの条件記述子作成ステップ１８９０８の例示的な実施形態を示す。ステップ１８９４２では、条件がゼロより多い演算を有するかどうかが判断される。条件がゼロより多い演算を含まない場合には、句が条件から検出され、固有のＩＤを割り当てられ、ステップ１８９４４内の句マップに追加される。条件がゼロより多い演算を含む場合、一番上の演算子がステップ１８９４６の演算ベクタから検索される。ステップ１８９４８では、演算子が２項演算子であるかどうか判断される。演算子が２項演算子ではない場合（つまり、単項演算子）、演算子はステップ１８９５０で演算ベクタに追加される。演算子が２項演算子である場合には、ステップ１８９５２で、条件記述子が、条件記述子を再帰的に作成するために図１８Ｃの前記プロシジャを使用することにより２項演算子の第２条件について作成される。ステップ１８９５４では句が句マップに格納され、ステップ１８９５６では、演算子が演算ベクタに格納される。
【００７２】
図１８Ｄは、句評価ステップ１８９３０（ステップ１８９２０と１８９３４も）の例示的な実施形態を示す。ステップ１８９５８では、句がすでに評価され、過去の評価ステップによってセットマップに記憶されているかどうかが判断される。記憶されている場合には、ステップ１８９６０で、セットマップに記憶される句の値が戻される。句がすでに評価されていなかった場合には、ステップ１８９６２で、句の条件（例えば、１０歳以上のすべての人）を適切なテーブルの対応する索引のエントリ（例えば、人物オブジェクト用の年齢索引テーブル）に比較することによって、句が評価される。
【００７３】
図１０は、オブジェクトをそのオブジェクトＩＤごとに削除するためのプロシジャの例示的な実施形態を示す。ステップ１０５０２では、ロックが、削除される指定されたオブジェクトにかけられる。ステップ１０５０４では、オブジェクトデータベースマネージャ１０８が、ロックが特定されたオブジェクトに無事にかけられたかどうかを判断する。ロックが無事に入手されなかった場合には、削除は失敗し、エラーメッセージがステップ１０５０６で発生し、プロシジャはステップ１０５０８で終了する。ロックがオブジェクトに無事にかけられた場合には、ステップ１０５１２で、オブジェクトＩＤがオブジェクトから抽出される。ステップ１０５１４およびステップ１０５１６では、オブジェクトＩＤが索引のそれぞれから削除される。索引のオブジェクトのための索引値に関連付けられる複数のオブジェクトＩＤがある場合、そのオブジェクトＩＤだけが索引から削除される。索引の索引値に関連付けられるオブジェクトＩＤがただ１つである場合には、索引値も削除され、その結果、索引エントリ全体が削除される。ステップ１０５１４は、図１２に関して後述する。ステップ１０５１８では、オブジェクトが、それがランダムアクセスファイルに記憶されるデータベースから削除され、プロシジャはステップ１０５２０で終了する。
【００７４】
ステップ１０５１８で、オブジェクトがテーブルから削除され、索引がオブジェクトの削除を反映するように変更されると、ファイルマップからオブジェクトを削除し、ランダムアクセスファイル内のその場所を空きスペースとして割り当てることが必要である。
【００７５】
先ず、ファイルマップからオブジェクトＩＤ用ファイルオフセットを得る。その後、ファイルマップを修正して、削除したオブジェクトを保存するのに以前に割り当てたセクタないしバイト位置が、今利用できるセクタないしバイト位置であることを示すようにする。これは、例えばファイルマップにおける別のヘッディングあるオブジェクトに以前に割り当てたセクタをフリースペースとして指定することにより達成できる。図１９Ｄは、図１０に示したファイルマップから削除するステップ１０５１８の典型的な実施の形態を示している。ステップ１９９８１において、特定ＩＤのオブジェクトがテーブルにあるかどうかが判定される。なければ、ステップ１９９８２でエラーメッセージが返される。特定オブジェクトがテーブルにあると判定されると、ステップ１９９８３において特定オブジェクトを含むテーブルのファイルマップが検索される。ステップ１９９８４においては、ファイルマップに、特定オブジェクトのオブジェクトＩＤに対応するファイルオフセット（または、ポインター）が含まれているかどうかを判定する。ファイルオフセットがないと判定されると、ステップ１９９８９でエラーメッセージが返され、削除操作が中断される。対応するオフセットが見つかると、ステップ１９９８５においてファイルオフセットが返される。ステップ１９９８９においては、オブジェクトのディスクマップエントリーが除去され、ランダムアクセスファイルにおいて使われていたスペースがフリースペースとしてファイルマップに示される。ステップ１９９８７では、図１０のステップ１０５１４において複数のインデックスに対してなされた変更のログが取引ベクトルに保存される。
【００７６】
図１１は、条件に応じてオブジェクトを削除するためにオブジェクトデータベースマネジャー１０８が実行する手順を示す。ステップ１１５２０で特定の条件と一致するオブジェクトのリストを返すのに、図９に示した手順が使われる。ステップ１１５２２においては、オブジェクトデータベースマネジャー１０８が、条件により返された全てのオブジェクトに対してロックがかけられたことを検証する。これら全てのオブジェクトにロックがかけられなかった場合、ステップ１１５２４において、条件によりオブジェクトを削除するｋとができず、それに伴ってエラーメッセージが返されると共に、手順が終了する。しかしながら、全てのリスとされているオブジェクトにロックがかけられた場合、ステップ１１５２６と１１５２８とにおいて、図１０に示したルーチンを利用することで条件からの一致のリストにオブジェクトＩＤがなくなるまで、各オブジェクトがオブジェクトＩＤにより削除される。この手順はステップ１１５３０で終了する。
【００７７】
オブジェクトがテーブルから削除されると、変更を反映するために索引を更新することが必要である。図１２では、図１０のステップ１０５１４で呼び出される索引からオブジェクトを削除するためのプロシジャの例示的な実施形態を示す。ステップ１２５３２では、削除されたオブジェクトのファイルマップからのファイルオフセットが求められる。ステップ１２５３４では、索引に対する検索、例えばバイナリ検索が、索引値を含む第１索引行を見つけるために実行される。ステップ１２５３６では、索引値に一致する索引が見つけられ、それからステップ１２５４０で、オブジェクトＩＤが索引から削除される。加えて、索引からオブジェクトＩＤを削除した後に、ステップ１２５４２の特定の索引値に関連付けられる追加オブジェクトＩＤがない場合には、ステップ１２５４４で索引値も索引から削除され、プロシジャはステップ１２５４６で終了する。追加オブジェクトＩＤがある場合、プロシジャは、索引行を削除せずにステップ１２５４６で終了する。一致がステップ１２５３６で見つけられなかった場合には、オブジェクトが現在テーブルにないために、削除動作は失敗し、ステップ１５２３８でエラーメッセージが発生し、プロシジャはステップ１２５４６で終了する。
【００７８】
図１３〜図１４は、あるコンピュータが、それが本発明に従って接続される別のコンピュータにデータを素真する機構の例示的な実施形態を示す。このプロシジャは、例えば、ネットワークコンピュータ１００から１台または複数台のクライアントコンピュータ１０１に、アプリケーションモジュールに関連付けられる新規オブジェクトをダウンロードするために使用される。プロシジャは、ネットワークコンピュータ１００と１台または複数台のクライアントコンピュータ１０１の間、あるいは２台または３台以上のクライアントコンピュータの間で、データファイルまたはオブジェクトを渡すために使用することもできる。一例示的実施形態に従って、図２および図３の更新プロシジャ２３０の一部である図１４の更新プロシジャが、クライアントコンピュータ１０１が初めてネットワークにログオンするときに背景で実行する。代わりに、アプリケーションモジュールを実行中のユーザ、またはアプリケーションモジュール自体が、情報がリモートコンピュータ（ネットワークコンピュータ１００または別のクライアントコンピュータ１０１のいずれか）に転送される更新をトリガすることができる。加えて、更新は、接続なしで所定の時間量が経過した場合（例えば、５日後）に、クライアントコンピュータ１０１にネットワークコンピュータ１００と接続することを要求することによって、タイマによってトリガされてもよい。
【００７９】
図１３Ａ〜図１３Ｄに関して、ユーザまたはアプリケーションがデータ（例えば、オブジェクト、クラスファイル、バイトハンドラ、またはその他の種類のデータ）を、リモートコンピュータなどのリモートロケーションに送信することを望む場合、トランスポートセルリスト１３５５２が発信テーブル１３５５０に入れられる。発信テーブル１３５５０は、少なく後も１つのトランスポートセルリストを記憶するファイルを表す識別子を含む一次元テーブルである。図１３Ｄに示すように、各トランスポートセルリスト１３５５２は、例えば固有のホスト名識別１３５６０、（送信側コンピュータにとって）固有のトランスポートセル識別番号、および少なくとも１つのトランスポートセル（１３５６４または１３５６６）を含む。各トランスポートセル１３５６４、１３５６６は、例えばオブジェクト、クラスファイル、バイトハンドラなどを表す１個または複数個のバイトの文字列、あるいはそれ以外のデータおよびバイトの型、例えば、バイトがクラスファイルを表すのか、オブジェクトを表すのか、バイトハンドラを表すのか、あるいはそれ以外のデータを表すのかを示すコンテンツ型フィールド１３５７０を含む。発信テーブルはデータベースに記憶され、図１４の更新プロシジャが実行中であるときにデータベースゲートウェイ１１２によってアクセスされる。
【００８０】
データは、リモートサイトに転送されると、リモートコンピュータの入信テーブル１３５５１内に記憶される。特にリモートコンピュータで実行中のブラウザは、受信されたトランスポートセルリスト１３５５２の同一のコンテンツを含む少なくとも１つのトランスポートセルリスト１３５５３を含む入信テーブル１３５５１を作成する。同じコンピュータから２回同一のトランスポートセルリストを受信するのを避けるために、ローカルコンピュータおよびリモートコンピュータは履歴テーブル１３５５４を記憶する。この履歴テーブル１３５５４は、トランスポートセルリストが発生した（列１３５５６内に）ホスト名１３５６０および別のコンピュータから受信された各入信テーブル１３５５１に表示されるトランスポートセルリストごとのトランスポートセル識別１３５６２を記憶する。更新プロシジャ完了時に、ブラウザは、入信テーブルに記憶される各トランスポートセルリスト１３５５３のトランスポートセル１３５６４、１３５６６のそれぞれを評価し、該当する場合は、コンテンツ型フィールド１３５７０の値に基づいてバイトハンドラを使用してリモートコンピュータにバイト１３５６８をインストールする。これは、図１４に関してさらに完全に後述する。
【００８１】
図１４は、図１３Ａ〜図１３Ｄのテーブルを使用してコンピュータの更新を実行する図３のステップ３５０の例示的な動作のフローチャートである。ステップ１４５７０では、リモートコンピュータへの接続がローカルコンピュータによって開始される。理解を容易にするために、ここではローカルコンピュータおよびリモートコンピュータを参照する。リモートコンピュータ（例えば、ＩＰアドレス）の場所は、グローバル設定値モジュール１０６に記憶することができるか、あるいはアプリケーションまたはユーザによって入力することができる。ステップ１４５７２では、通信プロトコルが、ローカルコンピュータとリモートコンピュータ間で交渉され、オプションの認証プロシジャが開始される。様々なプロトコルの例としては、「更新」サービス、「アプリケーションモジュール要求」サービス、「ステータスチェック」サービス、または安全な「コマース」サービスが挙げられる。認証は、ユーザ名とパスワードおよび／またはローカルコンピュータのホスト名をリモートコンピュータに送信することを含む場合がある。
【００８２】
ステップ１４５７４では、リモートコンピュータは、無事終了した認証、または無事に終了しなかった認証の肯定応答を送信する。認証が無事に終了しなかった場合には、プロシジャはステップ１４５７６で終了する。認証が無事に終了した場合には、ステップ１４５７８で、リモートコンピュータの履歴ファイルテーブルにおけるローカルコンピュータのホスト名と関連付けられるトランスポートセルリスト識別がローカルコンピュータに送信される。ステップ１４５８０では、ローカルコンピュータが受信されたトランスポートセルリスト識別を、その発信テーブルにおけるそのトランスポートセルリストのそれぞれのトランスポートセルリスト識別フィールドと比較する。
【００８３】
比較後、ステップ１４５８２では、ローカルコンピュータが、リモートコンピュータから受信されたトランスポートセルリスト識別に一致しないすべてのトランスポートセルリストを送信する。リモートコンピュータは、リモートコンピュータの入信テーブルにトランスポートセルリストのそれぞれを記憶し、その履歴テーブルにホスト名フィールドおよびトランスポートセルリスト識別フィールドをログする。ステップ１４５８４では、ローカルコンピュータは、リモートコンピュータのホスト名と関連付けられるトランスポートセルリスト識別を送信する。このプロセスは、リモートコンピュータがローカルコンピュータにデータを送信できるように、いま逆転されている。ステップ１４５８６では、リモートコンピュータが、ローカルコンピュータからの受信されたトランスポートセルリスト識別を比較し、それらを、リモートコンピュータの発信テーブル内のトランスポートセルリスト識別と比較する。比較後、ステップ１４５８８で、リモートコンピュータはローカルコンピュータから受信されたトランスポートセルリスト識別と一致しないすべてのトランスポートセルリストを送信する。ローカルコンピュータは、ローカルコンピュータの入信テーブルの中にトランスポートセルリストのそれぞれを記憶し、その履歴テーブル内にホスト名フィールドおよびトランスポートセルリスト識別フィールドをログする。その後、更新プロセスはステップ１４５９０で完了する。
【００８４】
本発明の代替実施形態においては、ローカルコンピュータとリモートコンピュータの両方が、さらに、特定的な宛て先を指定するために、それらの発信テーブル内のトランスポートセルリストのそれぞれにフラグをセットする。例えば、ローカルコンピュータのユーザが新しいアプリケーションモジュール（またはモジュールの一部）を購入すると、リモートコンピュータから、リモートコンピュータは、ローカルコンピュータをトランスポートセルリストに含まれるアプリケーションモジュールの許可された受取人として指定するフラグをトランスポートセルリストにセットすることができる。フラグは、トランスポートセルリストがローカルコンピュータに送信されなければならないかどうかを判断するために評価されるブール式（例えば、条件）も表すことがある。フラグがセットされていない、あるいは式が偽と評価される場合、トランスポートセルリストは送信されない。
【００８５】
本発明のさらなる代替実施形態においては、履歴リストのコンテンツ全体が、ローカルコンピュータとリモートコンピュータ間で交換される。それにより、リモートコンピュータは、（その識別フィールドおよびホスト名フィールドによって特定された）所定のトランスポートセルリストが、ローカルコンピュータによって別のリモートコンピュータからすでに受信されていた場合には、トランスポートセルリストを送信しないことを決定してもよい。
【００８６】
トランスポートセルリストが入信テーブルに入れられると、トランスポートセルリストのコンテンツは、ローカルコンピュータとリモートコンピュータの両方にインストールされる。図１５Ａ〜図１５Ｃは、本発明の例示的なインストレーションプロシジャを示す。トランスポートセルに含まれるバイトをインストールするには、バイトハンドラが使用される。ハンドラマネージャ１０９は、オブジェクトデータマネージャ１０８の一部である。本発明の代替実施形態においては、ハンドラマネージャ１０９は、データベースゲートウェイ１１２および更新モジュール１１０の両方と接続する別個のモジュールである。バイトハンドラは、データベース１１６、１１７、１１８内のオブジェクトとして記憶することができ、考えられるコンテンツ型１３５７０ごとに、適切なインストレーションプロシジャを適用するために、ハンドラマネージャ１０９によって使用される。
【００８７】
ステップ１５６００では、ハンドラマネージャ１０９が起動される。ステップ１５６０２では、入信テーブル１３５５１内のすべてのトランスポートセルリストを特定するリストが、入信テーブル１３５５１からハンドラマネージャ１０９によって検索される。それから、第１トランスポートセルリスト１３５５２は、ステップ１５６０４でハンドラマネージャ１０９によって検索される。ステップ１５６０６および１５６０８では、第１トランスポートセルリスト１３３５２の第１トランスポートセル１３５６４は、ハンドラマネージャによって検索される。ステップ１５６１０では、ハンドラマネージャ１０９は、第１トランスポートセルリスト内に追加のトランスポートセルがあるかどうかを判断する。ある場合には、プロシジャはステップ１５６０６に戻り、次のトランスポートセルを検索する。ない場合、ハンドラマネージャ１０９は、追加のトランスポートセルリストがあるかどうか判断する。ある場合には、プロシジャはステップ１５６０４に戻り、次のトランスポートセルリストを検索する。ない場合には、ハンドラマネージャ１０９は、図１５Ｃに関して後述する、ステップ１５６１４のトランスポートセルのそれぞれをインストールする。
【００８８】
図１５Ｂは、図１５Ａのステップ１５６０８のプロセスの一実施形態をさらに詳細に示す。図１５Ｂに図示するプロセスの目的とは、クラスが第１にインストールでき、バイトハンドラが第２にインストールでき、それ以外のすべてのコンテンツ型が所定された優先順位順でインストールできるように、異なるコンテンツ型のトランスポートセルを分離することである。このプロシジャにより、本発明は、その適切なクラスファイルがインストールされる前に、Ｊａｖａ（登録商標）オブジェクトをインストールしようと試みるのを回避できるようにする。同様に、このプロシジャにより、本発明は、対応するバイトハンドラがインストールされる前に新規コンテンツ型のバイトのインストールを試みるのを回避できるようにする。
【００８９】
ここで図１５Ｂを参照すると、ステップ１５６１６で、ハンドラマネージャ１０９が、コンテンツ型フィールド１３５７０をチェックし、それが型「クラス」（つまり、Ｊａｖａ（登録商標）クラスファイル）であるかを判断する。そうである場合にはステップ１５６１８で、ハンドラマネージャ１０９は、トランスポートセルをデータベースのメモリ内のアンインストールクラストランスポートセルリストに追加する。それ以外の場合、ステップ１５６２０で、ハンドラマネージャ１０９は、コンテンツ型フィールド１３５７０をチェックし、それが型「ハンドラ」（つまり、バイトハンドラ）であるかどうかを判断する。そうである場合、ステップ１５６２２で、ハンドラマネージャ１０９は、メモリ内またはデータベース内のトランスポートセルをアンインストールハンドラトランスポートセルリストに追加する。それ以外の場合、ステップ１５６２４では、ハンドラマネージャ１０９は、コンテンツ型フィールド１３５７０をチェックし、それが、図１５Ａのインストレーションプロシジャ全体の間に過去のトランスポートセルによって使用された固有の型であるかどうかを判断する。そうである場合、ステップ１５６２８で、ハンドラマネージャ１０９が、既知の型に対応するメモリ内またはデータベース内のアンインストールトランスポートセルリストにトランスポートセルを追加する。それ以外の場合、ステップ１５６２６では、メモリ内またはデータベース内の新規のアンインストールトランスポートセルリストが、型に対応して作成される。
【００９０】
図１５Ｃは、図１５Ａのステップ１５６１４の例示的な実施形態を示す。ハンドラマネージャ１０９は、それぞれのコンテンツ型のバイトをインストールする方法を、ハンドラマネージャに知らせるバイトハンドラを参照する。ステップ１５６３０では、ハンドラマネージャ１０９は、アンインストールクラストランスポートセルリストにトランスポートセルがあるかどうかを判断する。ある場合には、ステップ１５６３４で、第１トランスポートセルが検索される。ステップ１５６３８で、「クラス」バイトハンドラが検索され、「クラス」バイトハンドラがトランスポートセルのバイトフィールドに含まれるクラスファイルをインストールする。ステップ１５６４２では、ハンドラマネージャ１０９が、メモリ内またはデータベース内のアンインストールクラストランスポートセルリストにさらに多くのトランスポートセルがあるかどうかを判断する。
【００９１】
アンインストールクラストランスポートリストにトランスポートセルがない（つまりステップ１５６３０の結果がノーである）場合、あるいはステップ１５６４２のアンインストールクラストランスポートセルリストにこれ以上トランスポートセルがない場合に、ハンドラマネージャ１０９は、バイトハンドラトランスポートセルリストにトランスポートセルがあるかどうかを判断する。ある場合には、ステップ１５６３６で、第１トランスポートセルが検索される。ステップ１５６４０では、「バイトハンドラ」バイトハンドラが検索され、「バイトハンドラ」バイトハンドラは、トランスポートセルのバイトフィールドに含まれる新規バイトハンドラファイルをインストールする。ステップ１５６４４では、ハンドラマネージャ１０９は、アンインストールバイトハンドラトランスポートセルリストにさらに多くのトランスポートセルがあるかを判断する。ある場合には、次のトランスポートセルのために、プロシジャはステップ１５６３６に戻される。
【００９２】
アンインストールクラストランスポートセルリストにトランスポートセルがない（つまり、ステップ１５６３２の結果がノーである）場合、あるいはアンインストールバイトハンドラトランスポートセルリストにさらに多くのトランスポートセルがない場合、ステップ１５６４４で、それからステップ１５６４６で、ハンドラマネージャ１０９が、優先順位単位で残りのバイトハンドラを並べ替える。バイトハンドラの優先順位は、該バイトハンドラの一部としてハンドラマネージャ１０９によって受信されるフラグに含まれる。並べ替え後、最高の優先順位が指定されるバイトハンドラがステップ１５６４８で検索される。ステップ１５６５０では、選択されたバイトハンドラに対応するアンインストールトランスポートセルリストからすべてのトランスポートセルが検索される。ステップ１５６５２では、第１トランスポートセルが検索され、ステップ１５６５４では、対応するバイトハンドラが検索され、トランスポートセルのバイトフィールドに含まれるバイトをインストールする。
【００９３】
ステップ１５６５６では、ハンドラマネージャ１０９が、対応するアンインストールトランスポートセルリストにさらに多くのトランスポートセルがあるかどうかを判断する。ある場合には、プロシジャは、次のトランスポートセルのためにステップ１５６５２に戻される。ステップ１５６５６の結果がノーである場合には、ステップ１５６５８で、ハンドラマネージャ１０９は、ステップ１５６４６および１５６４８から追加バイトハンドラがあるかどうかを判断する。ある場合には、次のバイトハンドラがステップ１５６４８で検索される。それ以外の場合、プロシジャはステップ１５６６０で終了する。すべてのバイトのインストレーションが無事に終了した場合、ハンドラマネージャ１０９は、インストレーションを永久にするためにコミットプロシジャを呼び出す。しかしながら、すべてのバイトのインストレーションが無事に終了しなかった場合には、ハンドラマネージャ１０９（または、ハンドラマネージャ１０９に命令するユーザ）が、データベースを、インストレーションプロシジャが開始する前にそれがいた状態に復元するために、ロールバックを呼び出す。
【００９４】
図１６Ａ〜図１６Ｃは、本発明に従って含むことのできるアプリケーションモジュール１０４の例示的な構造を示す。図１６Ａでは、アプリケーションモジュール１０４は、典型的にモデル１６７０２、ビュー１６７０４および制御装置１６７０６を含む少なくとも１つのモードを含む。図１６Ｂでは、一連のモード１６７００、１６７１０、１６７１２が、グループ１６７０８内でリンクできる。グループ１６７０８内のモード１６７００、１６７１０、１６７１２をリンクすることによって、リンクされたモード１６７００、１６７１０、１６７１２のあらゆるモデル、ビューまたは制御装置のどれかが共用できるか、あるいは一方のモードから他方のモードへ転送できる。さらに、図１６Ｃでは、グループ１６７１４が、直列のモード１６７００、１６７１８、１６７２０、１６７２２およびグループ１６７１６の組み合わせを含み、それにより異なるグループのモードの間でモデル、ビューおよび制御装置を共用する。
【００９５】
図１７Ａ〜図１７Ｊは、本発明の例示的な対話型教育システムアプリケーションモジュールを示す。例示的な対話型教育システムにより、ユーザは、ネットワーク（例えば、インターネット、ダイレクトトゥサーバ（ｄｉｒｅｃｔ−ｔｏ−ｓｅｒｖｅｒ）ダイヤルイン、またはイントラネットまたはウェブサイトから）上で受信される更新を介して、教育課程およびその他の関連する情報をユーザのパーソナルコンピュータで受信できるようになる。更新は、ユーザが、ネットワークに接続されている間にアプリケーションを実行するたびに自動的に発生する。その結果、ユーザには、ユーザにより高速でより優れた情報を与え、管理者にユーザのニーズおよび進行に関する即時フィードバックを与える）個人化された教育ポートフォリオが提供される。
【００９６】
アプリケーションモジュールは、プロファイルボタン１７８０２、ライブラリボタン１７８０４、コースボタン１７８０６、メモボタン１７８０８、用語集ボタン１７８１０、フラッシュカードボタン１７８１２、事後試験ボタン１７８１４、最終試験ボタン１７８１６、点数ボタン１７８１８、ポートフォリオボタン１７８２０、メールボックスボタン１７８２２、およびアプリケーション終了ボタン１７８２４を有するディスプレイ１７８００を含む。さらに、アプリケーションモジュールのユーザによって現在選択されているコースを示すグラフィック１７８２６が表示される。
【００９７】
ユーザが、ネットワークから切り離されている間にアプリケーションモジュールを操作できるようにするために、ネットワーク接続が使用できる場合に、更新プロシジャが起動モジュール１０２の間に実行される。ネットワーク接続が使用できない場合には、更新プロシジャは、起動モジュール１０２が起動される次回のために遅延できる。代わりに、起動モジュール１０２またはアプリケーションモジュール１０４は、ネットワーク接続の存在についてクライアントを監視し、いったん接続が検出されると更新についてプロンプトを出すことができる。加えて、起動モジュール１０２またはアプリケーションモジュール１０４が、更新プロシジャを任意の時点で開始できる。
【００９８】
ユーザがプロファイルボタン１７８０２を起動すると、ビューが図１７Ｂに変化し、ユーザがプロファイル／登録ボックス１７８２８に自分の個人情報を入力できるようになる。個人情報がプロファイルに入力されると、ユーザはプロファイル終了ボタン１７８３０を起動し、個人情報は、システムの次の更新２３０の間に教育サーバに送信するために、クライアントコンピュータの発信テーブル１３５５０に記憶、格納される。
【００９９】
ユーザがライブラリボタン１７８０４を起動すると、ビューは図１７Ｃに変化し、ユーザがコースウィンドウ１７８３０からコースを選択できるようにする。選択されたコースの説明は、説明ウィンドウ１７８３２に表示され、コース選択はコース選択ボタン１７８３４を起動することによって最終的にされる。ユーザがコースの選択を希望しない場合には、ユーザは、ユーザを図１７Ａに戻す取り消しボタン１７８３６を起動することができる。
【０１００】
ユーザがメモボタン１７８０８を起動すると、ビューは図１７Ｄに変化し、ユーザがメモウィンドウ１７８３８のメモを見ることができるようにする。ユーザが自分のメモを見るのを終了すると、ユーザはメモ終了ボタン１７８４０を起動し、図１７Ａに戻る。本発明の例示的な実施形態では、メモは、（例えば、コース資料またはフラッシュカードを見ている間に）ユーザがメモを取ることを所望することが可能なあらゆるウィンドウに位置する「メモ入力」ボタンから使用できるメモウィンドウに入力できる。
【０１０１】
ユーザが用語集ボタン１７８１０を起動すると、ビューは図１７Ｅに変化し、ユーザが用語集ウィンドウ１７８４２内の用語集用語のリストをスクロールできるようにする。また、ユーザは、検索ウィンドウ１７８４４に検索項目を入力することによって用語集の用語を検索できる。ユーザは用語集を終了させると、ユーザは用語集終了ボタン１７８４６を起動し、図１７Ａに戻ることができる。
【０１０２】
ユーザがフラッシュカードボタン１７８１２を起動すると、ビューは図１７Ｆに変化し、ユーザが、前ボタン１７８５０と次ボタン１７５８２を使用して、任意の用語でフラッシュカード１７８４８を選択できるようにする。ユーザは、用語ボタン１７８５６または定義ボタン１７８５４をそれぞれ起動することによって、用語のディスプレイまたはその定義を切り替えることができる。ユーザはフラッシュカードを終了させると、ユーザは、フラッシュカード終了ボタン１７８５８を起動し、図１７Ａに戻ることができる。
【０１０３】
コースの各章の完了後、ユーザは、図１７Ｇにビューを変更し、章の資料の実践試験を運営する事後試験ボタン１７８１４を起動することができる。質問ウィンドウ１７８６０に質問が尋ねられ、前ボタン１７８６６および次ボタン１７８６８を使用して横切ることができる。ユーザは、回答ボタン１７８６４の１つを選択することにより回答ボックス１７８６２に自分の回答を入力する。本発明の代替実施形態では、ユーザは質問に応えて短い回答を入力する。新しい質疑フォーマットは、本発明の更新プロシジャを利用することにより、アプリケーションモジュールに追加できる。新しい質問フォーマットは、トランスポートセルの中で受信され、ハンドラマネージャ１０９は、アプリケーションモジュールのモデル、ビューおよび制御装置の１つまたはすべてを変更する新規オブジェクトをインストールする。
【０１０４】
ユーザが事後試験を終了すると、ユーザは試験終了ボタン１７８７０を起動し、図１７Ａに戻ることができる。一定の質問に費やされた時間の長さなどのそれ以外の統計情報だけではなく、事後試験の結果も、評価のためにサーバに送信される、ローカルコンピュータの発信テーブル１３５５０のトランスポートセルリストにおけるトランスポートセルに格納できる。サーバ（または管理者）は、ある特定の質問に欠陥があるかどうかを判断するために、多くのクライアントの質問に対する答えを評価することもできる。それから、サーバは、新しい質問をその発信テーブルに格納することによって、欠陥のある質問を新しい質問で置換するためにクライアントのすべてに更新を送信することができる。
【０１０５】
ユーザは、（好ましくは、コースの章のすべての完了後）ビューを図１７Ｈに変更する最終試験ボタン１７８１６を起動することができる。質問は、質問ウィンドウ１７８７２で尋ねられ、前ボタン１７８８０および次ボタン１７８８２を使用して横切ることができる。ユーザは、クロックアイコン１７８７８によって表示される所定の時間期間中に回答ボタン１７８７６の１つを選択することによって、回答ボタン１７８７４に自分の回答を入力する。ユーザが最終試験を終了すると、ユーザは試験終了ボタン１７８８６を起動し、図１７Ａに戻ることができる。代わりに、ユーザは、結果を保存しないで最終試験を終了するために終了ボタン１７８８４を選択できる。一定の質問に費やされた時間の長さなどのそれ以外の統計情報だけではなく、最終試験の結果も、評価のためにサーバに送信できる。
【０１０６】
事後試験または最終試験の完了後、ユーザは、点数ボタン１７８１８を起動することができ、ビューは図１７Ｈに変化する。ユーザは、表示方式ウィンドウ１７８９０から表示方式を選択することによって、様々な方法で点数結果を表示することができる。表示方式の例は、トピック単位の点数、目的（テキスト）単位の点数、および目的（グラフ）単位の点数である。点数データは、点数ウィンドウ１７８８８に表示される。ユーザが点数データの閲覧を終了すると、ユーザは点数終了ボタン１７８９２を起動し、図１７Ａに戻ることができる。
【０１０７】
ユーザがポートフォリオボタン１７８２０を起動すると、ビューは図１７Ｉに変化する。ポートフォリオウィンドウ１７８９４は、ユーザが完了したコースのリストを表示する。ユーザがポートフォリオの表示を終了すると、ユーザは、ポートフォリオ終了ボタン１７８９６を起動し、図１７Ａに戻ることができる。
【０１０８】
ユーザはメールボックスボタン１７８２２によって起動できる電子メールボックスを有することもできる。メールボックス機能は、専用のディスプレイを有し、本発明の更新プロシジャを通してメールを送信できる。ユーザがアプリケーションモジュールの終了を希望すると、ユーザは図１７Ａの終了ボタン１７８２４を選択する。
【０１０９】
上記説明は、本発明の多様な実施形態の十分かつ完全な開示を提供するが、発明の真の精神および範囲から逸脱することなく多様な変型、代替構造および同等物が利用できる。したがって、前記説明および図は、添付の請求項により定義される発明の範囲を制限すると解釈されるべきではない。
【図面の簡単な説明】
【図１Ａ】本発明を利用することのできる種類の典型的なコンピュータシステムを示す。
【図１Ｂ】本発明を利用することのできる種類の典型的なコンピュータシステムを示す。
【図１Ｃ】本発明による動的アプリケーションブラウザの例示的な実施形態を示す。
【図１Ｄ】本発明による例示的なオブジェクトを示す。
【図１Ｅ】本発明による例示的なテーブルを示す。
【図１Ｆ】本発明による例示的な索引を示す。
【図１Ｇ】本発明による例示的な索引を示す。
【図１Ｈ】本発明によるデータベースのファイル構造の例示的な実施形態を示す。
【図１Ｉ】本発明によるデータベースのファイル構造の例示的な実施形態を示す。
【図１Ｊ】本発明によるデータベースのファイル構造の例示的な実施形態を示す。
【図１Ｋ】本発明によるデータベースのファイル構造の例示的な実施形態を示す。
【図１Ｌ】本発明によるデータベースのファイル構造の例示的な実施形態を示す。
【図２】本発明の起動モジュールによって実行される例示的なプロセスを示す。
【図３】図２の更新ステップ２３０の例示的なフローチャートを示す。
【図４】図２のインストールステップ２３２を実行するための例示的なフローチャートを示す。
【図５】図２の自動ロードアクションモジュール２３４の例示的なフローチャートを示す。
【図６Ａ】本発明によるデータベースのオブジェクト挿入機能性の例示的な実施形態を示す。
【図６Ｂ】図６Ａの索引付けステップ６２２０の例示的な実施形態を示す。
【図７Ａ】本発明によるデータベースマネージャによって実行される例示的な修正プロシジャのフローチャートを示す。
【図７Ｂ】図７Ａのステップ７２４６の例示的な実施形態を示す。
【図８】本発明によるデータベースマネージャによって実行される、例示的な条件プロシジャによるオブジェクト修正のフローチャートを示す。
【図９】本発明によるデータベースマネージャによって実行される例示的な条件プロシジャによるテーブル照会のフローチャートを示す。
【図１０】本発明に従ってそのオブジェクトＩＤ単位でオブジェクトを削除するためのプロシジャの例示的な実施形態を示す。
【図１１】本発明に従って条件に基づいてオブジェクトを削除するためにオブジェクトデータベースマネージャによって実行されるプロシジャの例示的な実施形態を示す。
【図１２】図１０のステップ１０５１４の例示的な実施形態を示す。
【図１３Ａ】本発明の例示的な実施形態による発信テーブルを示す。
【図１３Ｂ】本発明の例示的な実施形態による入信テーブルを示す。
【図１３Ｃ】本発明の例示的な実施形態による履歴テーブルを示す。
【図１３Ｄ】本発明の例示的な実施形態によるトランスポートセルリストを示す。
【図１４】一方のコンピュータが、それが本発明に従って接続される他方のコンピュータにデータを送信するプロシジャの例示的な実施形態を示す。
【図１５Ａ】本発明の例示的なインストレーション手順を示す。
【図１５Ｂ】本発明の例示的なインストレーション手順を示す。
【図１５Ｃ】本発明の例示的なインストレーション手順を示す。
【図１６Ａ】本発明のアプリケーションモジュールの例示的な構造を示す。
【図１６Ｂ】本発明のアプリケーションモジュールの例示的な構造を示す。
【図１６Ｃ】本発明のアプリケーションモジュールの例示的な構造を示す。
【図１７Ａ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｂ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｃ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｄ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｅ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｆ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｇ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｈ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｉ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１７Ｊ】本発明の例示的な対話型教育システムアプリケーションモジュールを示す。
【図１８Ａ】図９の例示的な実施形態ステップ９４０２を示す。
【図１８Ｂ】図９の例示的な実施形態ステップ９４０２を示す。
【図１８Ｃ】図９の例示的な実施形態ステップ９４０２を示す。
【図１８Ｄ】図９の例示的な実施形態ステップ９４０２を示す。
【図１９Ａ】図６Ａのステップ６２１６の例示的な実施形態を示す。
【図１９Ｂ】図６Ａのステップ６２１６の例示的な実施形態を示す。
【図１９Ｃ】図６Ａのステップ６２１６の例示的な実施形態を示す。
【図１９Ｄ】図６Ａのステップ６２１６の例示的な実施形態を示す。
【図１Ａ】
2004518215.tif 000002
【図１Ｂ】
2004518215.tif 000003
【図１Ｃ】
2004518215.tif 000004
【図１Ｄ】
2004518215.tif 000005
【図１Ｅ】
2004518215.tif 000006
【図１Ｆ】
2004518215.tif 000007
【図１Ｇ】
2004518215.tif 000008
【図１Ｈ】
2004518215.tif 000009
【図１Ｉ】
2004518215.tif 000010
【図１Ｊ】
2004518215.tif 000011
【図１Ｋ】
2004518215.tif 000012
【図１Ｌ】
2004518215.tif 000013
【図２】
2004518215.tif 000014
【図３】
2004518215.tif 000015
【図４】
2004518215.tif 000016
【図５】
2004518215.tif 000017
【図６Ａ】
2004518215.tif 000018
【図６Ｂ】
2004518215.tif 000019
【図７Ａ】
2004518215.tif 000020
【図７Ｂ】
2004518215.tif 000021
【図８】
2004518215.tif 000022
【図９】
2004518215.tif 000023
【図１０】
2004518215.tif 000024
【図１１】
2004518215.tif 000025
【図１２】
2004518215.tif 000026
【図１３Ａ】
2004518215.tif 000027
【図１３Ｂ】
2004518215.tif 000028
【図１３Ｃ】
2004518215.tif 000029
【図１３Ｄ】
2004518215.tif 000030
【図１４】
2004518215.tif 000031
【図１５Ａ】
2004518215.tif 000032
【図１５Ｂ】
2004518215.tif 000033
【図１５Ｃ】
2004518215.tif 000034
【図１６Ａ】
2004518215.tif 000035
【図１６Ｂ】
2004518215.tif 000036
【図１６Ｃ】
2004518215.tif 000037
【図１７Ａ】
2004518215.tif 000038
【図１７Ｂ】
2004518215.tif 000039
【図１７Ｃ】
2004518215.tif 000040
【図１７Ｄ】
2004518215.tif 000041
【図１７Ｅ】
2004518215.tif 000042
【図１７Ｆ】
2004518215.tif 000043
【図１７Ｇ】
2004518215.tif 000044
【図１７Ｈ】
2004518215.tif 000045
【図１７Ｉ】
2004518215.tif 000046
【図１８Ａ】
2004518215.tif 000047
【図１８Ｂ】
2004518215.tif 000048
【図１８Ｃ】
2004518215.tif 000049
【図１８Ｄ】
2004518215.tif 000050
【図１９Ａ】
2004518215.tif 000051
【図１９Ｂ】
2004518215.tif 000052
【図１９Ｃ】
2004518215.tif 000053
【図１９Ｄ】
2004518215.tif 000054
【国際公開パンフレット】
2004518215.tif 000055
2004518215.tif 000056
2004518215.tif 000057
2004518215.tif 000058
2004518215.tif 000059
2004518215.tif 000060
2004518215.tif 000061
2004518215.tif 000062
2004518215.tif 000063
2004518215.tif 000064
2004518215.tif 000065
2004518215.tif 000066
2004518215.tif 000067
2004518215.tif 000068
2004518215.tif 000069
2004518215.tif 000070
2004518215.tif 000071
2004518215.tif 000072
2004518215.tif 000073
2004518215.tif 000074
2004518215.tif 000075
2004518215.tif 000076
2004518215.tif 000077
2004518215.tif 000078
2004518215.tif 000079
2004518215.tif 000080
2004518215.tif 000081
2004518215.tif 000082
2004518215.tif 000083
2004518215.tif 000084
2004518215.tif 000085
2004518215.tif 000086
2004518215.tif 000087
2004518215.tif 000088
2004518215.tif 000089
2004518215.tif 000090
2004518215.tif 000091
2004518215.tif 000092
2004518215.tif 000093
2004518215.tif 000094
2004518215.tif 000095
2004518215.tif 000096
2004518215.tif 000097
2004518215.tif 000098
2004518215.tif 000099
2004518215.tif 000100
2004518215.tif 000101
2004518215.tif 000102
2004518215.tif 000103
2004518215.tif 000104
2004518215.tif 000105
2004518215.tif 000106
2004518215.tif 000107
2004518215.tif 000108
2004518215.tif 000109
2004518215.tif 000110
2004518215.tif 000111
2004518215.tif 000112
2004518215.tif 000113
2004518215.tif 000114
2004518215.tif 000115
2004518215.tif 000116
2004518215.tif 000117
2004518215.tif 000118
2004518215.tif 000119
2004518215.tif 000120
2004518215.tif 000121
2004518215.tif 000122
2004518215.tif 000123
2004518215.tif 000124
2004518215.tif 000125
2004518215.tif 000126
2004518215.tif 000127
2004518215.tif 000128
2004518215.tif 000129
2004518215.tif 000130
2004518215.tif 000131
2004518215.tif 000132
2004518215.tif 000133
2004518215.tif 000134
2004518215.tif 000135
2004518215.tif 000136
2004518215.tif 000137
2004518215.tif 000138
2004518215.tif 000139
2004518215.tif 000140
2004518215.tif 000141
2004518215.tif 000142
【国際調査報告】
2004518215.tif 000143