(57)【特許請求の範囲】
【請求項１】
データベースと当該データベースがカプセル化するすべてのオブジェクトとを含む分散コンピュータ環境内に既存のデータ・ソースからのデータを、スプレッドシート内の１つまたは複数のセルにデータ転送することによりバインドするコンピュータが実行する方法であって、
設計時中に、前記データ・ソースからのデータおよび前記データを処理するための前記オブジェクトをデータ・オブジェクトとしてインポートし、前記データ・オブジェクトの階層構造であるデータ・ソース・モデルとしてリポジトリに登録するステップと、
設計時中に、前記データ・ソース・モデルとしてリポジトリに登録された前記分散コンピュータ環境内の前記データ・オブジェクトの要素を、グラフィカル・ユーザ・インタフェースに表示し、前記グラフィカル・ユーザ・インタフェースを介して前記各セルに対するドラッグ・アンド・ドロップ処理によって前記スプレッドシート内の１つまたは複数のセルに対し前記データ・オブジェクトを関連付けるステップと、
実行時中での前記関連づけの要求時に前記データ・オブジェクトのデータを、前記データ・ソースのＵＲＬ位置、パス、読み取り／書込属性、およびパラメータを含むメタ・データ情報を使用して前記スプレッドシート内の１つまたは複数のセルに転送して実行時中にバインドするステップとを含み、
前記バインドするステップは、前記データ・ソースからの情報を使用して実行され、前記データ・ソースの当該データは、スプレッドシートに対する変更に対応して前記データ・ソースと前記スプレッドシートとの間で両方向にデータ転送される、方法。
【請求項２】
インポートされたデータがＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ Ｍａｒｋｕｐ Ｌａｎｇｕａｇｅ）フォーマットで保管される、請求項１に記載の方法。
【請求項３】
インポートされたオブジェクトがツリーで記憶される、請求項１に記載の方法。
【請求項４】
前記関連付けるステップが前記データ・オブジェクトの１つまたは複数の子を前記スプレッドシート内の１つまたは複数のセルにドラッグ・アンド・ドロップすることをさらに含む、請求項１に記載の方法。
【請求項５】
実行時中にＳＱＬコードを生成することをさらに含む、請求項１に記載の方法。
【請求項６】
前記データ・ソースがビジネス・オブジェクトである、請求項１に記載の方法。
【請求項７】
前記データ・ソースに関連するメソッドまたは関数を呼び出すことをさらに含む、請求項６に記載の方法。
【請求項８】
データベースと当該データベースがカプセル化するすべてのオブジェクトとを含む分散コンピュータ環境内に既存のデータ・ソースからのデータを、スプレッドシート内の１つまたは複数のセルにデータ転送することによりバインドするコンピュータを含むシステムであって、
前記データ・ソースからのデータおよび前記データを処理するための前記オブジェクトをデータ・オブジェクトとしてインポートし、前記データ・オブジェクトの階層構造であるデータ・ソース・モデルとしてリポジトリに登録する手段と、
設計時中に、前記データ・ソース・モデルとしてリポジトリに登録された前記分散コンピュータ環境内の前記データ・オブジェクトの要素を、グラフィカル・ユーザ・インタフェースに表示し、前記グラフィカル・ユーザ・インタフェースを介して前記各セルに対するドラッグ・アンド・ドロップ処理によって前記スプレッドシート内の１つまたは複数のセルに対し前記データ・オブジェクトを関連付ける手段と、
実行時中での前記関連づけの要求時に前記データ・オブジェクトのデータを、前記データ・ソースのＵＲＬ位置、パス、読み取り／書込属性、およびパラメータを含むメタ・データ情報を使用して前記スプレッドシート内の１つまたは複数のセルに転送して実行時中にバインドする手段とを含み、
前記バインドする手段は、前記データ・ソースからの情報を使用して実行され、前記データ・ソースの当該データは、スプレッドシートに対する変更に対応して前記データ・ソースと前記スプレッドシートとの間で両方向にデータ転送される、システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル・コンピュータによる情報処理の分野に関するものであり、さらに詳細には、データ・ベースからのデータをスプレッドシート上で効果的に使用するための方法およびシステムに関するものである。
【０００２】
【従来の技術】
スプレッドシート・プログラムは、記録保存、「what-if」分析、最適化分析、計算、チャート作成、およびグラフ分析などの数学的アプリケーションおよびデータベース・アプリケーションに一般的に使用されている。電子スプレッドシートは、紙の対応物に対する多数の長所を提供する。たとえば、電子スプレッドシートを用いると、ユーザが、紙の対応物より多くの情報を操作できるようになる。
【０００３】
また、スプレッドシート・プログラムを用いると、ユーザが「what if」シナリオを実行でき、その結果、数学的関係の組をワークシートに入力した後に、異なる前提の組を使用してスプレッドシートを再計算することができ、再計算のそれぞれの結果が動的に示される。この操作を、紙と鉛筆を用いて手作業で実行するには、行われる変更のそれぞれについてモデル内のすべての関係を再計算することが必要になる。したがって、電子スプレッドシートは、会計係の金銭出納帳、鉛筆、および電卓などの伝統的な財務モデリング・ツールに対して、数学的モデルの作成、編集、および使用の容易さにおいて劇的な改善を提供する。
【０００４】
電子スプレッドシートは、膨大な量のデータを操作することができるが、スプレッドシートにデータを配置する便利なシステムはない。スプレッドシートは、データの操作および提示のためにエンド・ユーザによって定義された規則および命令の特定の組を含むセルを有する。セルごとにそのような規則および命令の組を定義することは、簡単な作業であるが、分散データを各セルに向け、転送する作業は、非常に複雑になる可能性がある。
【０００５】
これを行う従来の方法では、データが保管されるデータベースのファイルを読み取り、それをスプレッドシートにインポートすることによって、所望のデータの組をデータベースからスプレッドシートにインポートする。もう１つの従来の方法には、必要なデータをデータベースから検索して、そのデータをテーブルに入力するステップが含まれる。この検索のために、プログラムされた検索数式が、データベースに必要である。前者の従来の方法は、データベースのファイルが直接に読み取られるが、データベースの構成ならびにデータと共に記憶されるファイルのフォーマットなどを理解することが必要である。したがって、読み取られるすべてのテーブルのフォーマットがデータベースの保管フォーマットによって制限され、これがデータの選択的読み取りの困難さを構成する。
【０００６】
ほとんどの場合に、データベースから抽出されるデータのフォーマットは、使用されるスプレッドシートのテーブル・フォーマットに対する十分な適合可能性を有しておらず、したがって、ユーザが読取データのテーブル・フォーマットを最適なフォーマットに再形成することが必要である。後者の方法では、検索数式がデータベース検索のために入力されるが、ユーザによる検索数式の準備の必要に加えて、やはりデータベースの構成を理解することが必要であり、したがって、ユーザは、データベース検索の数式を記述する方法と、所与のスプレッドシートを使用する方法の両方をマスターする必要がある。
【０００７】
通常、リレーショナル・データベース管理システム（ＲＤＢＭＳ）のデータ・ソースをスプレッドシート内の特定のセルにバインドするためには、特定のマクロおよびコーディングを行う必要がある。マクロおよびコードの記述は、ユーザがVisual Basic（Ｒ）でのプログラミングと、Excel のオブジェクト・メソッド、および構造化照会言語（ＳＱＬ）の知識を有することを必要とする。さらに、コードは、データベースの更新またはビジネス・ロジックの進化のたびに、調整または改造される必要がある。さらに、このコードは、１つの特定のスプレッドシート・アプリケーションに固有である。
【０００８】
要するに、ユーザは、データベースからのデータをスプレッドシート上で効果的に使用するために、データベースの構成の詳細に精通しなければならない。そのような要件は、スプレッドシート上でデータベースを効果的に使用するためにユーザに大きい負担を課し、したがって、データベースの内容を分析するためにスプレッドシートを使用することに対する障害物になる。
【０００９】
【発明が解決しようとする課題】
データ・ベースからのデータをスプレッドシート上で効果的に使用するためのシステムおよび方法を提供し、ユーザに大きい負担を課すことなく、ユーザがデータベースの内容を分析するためにスプレッドシートを使用できるようにする。
【００１０】
【課題を解決するための手段】
本発明は、データ・オブジェクトをインポートし、データ・オブジェクトのデータ・ソース・モデルを定義すること、データ・オブジェクトをスプレッドシート内の１つまたは複数のセルに関連付けること、および要求時にデータ・オブジェクトからのデータを１つまたは複数のセルにバインドすることにより、データ・ソースからのデータをスプレッドシート内の１つまたは複数のセルにバインドする。
【００１１】
本発明の実施形態には、下記の１つまたは複数が含まれる。インポートするステップおよび関連付けるステップが設計時中に実行され、バインドするステップが実行時中に実行される。インポートされたデータがＸＭＬ（Extensible Markup Language）フォーマットで保管される。インポートされたオブジェクトがツリーで記憶される。関連付けるステップがさらにデータ・オブジェクトの１つまたは複数の子をスプレッドシート内の１つまたは複数のセルにドラッグ・アンド・ドロップすることを含む。データ・ソースはデータベースとなることができ、その場合に、ＳＱＬコードが実行時中に生成される。データ・ソースがビジネス・オブジェクトである場合に、データ・ソースに関連するメソッドまたは関数を呼び出すことができる。
【００１２】
本発明の長所には、下記の１つまたは複数が含まれる。本発明は、スプレッドシートと、ＲＤＢＭＳなどの外部データ・ソースの間の「シームレスな」両方向リンクを提供し、その結果、この両者が完全に統合されて見えるようにする。そのようなシームレスな統合では、外部データ・ソースとの間のデータの転送が、完全に自動的に見え、スプレッドシートの再計算の通常の過程で行われる。本発明は、スプレッドシートのエンド・ユーザに分散環境全体を表示する能力を与える、ドラッグ・アンド・ドロップ・パラダイムを伴う使いやすいインターフェースを提供する。ユーザは、所望の分散データ・ソースをスプレッドシートの各セルに単純にドラッグ・アンド・ドロップすることができる。したがって、本発明は、プラットフォーム独立の形で、各セルに対して行われる変更を基礎となるバインディング・データ・ソースにシームレスに伝搬し、反映させる。
【００１３】
さらに、コンピューティング環境内の分散（または他の）データ・ソースを表示することができる。そのようなデータ・ソースは、データ・ソースを表すエンティティの単純なドラッグ・アンド・ドロップによって、１つまたは複数のデータ・ソース・スキーマ内で定義されるかモデル化されることができる。これは、ＳＱＬなどの概念のプログラミングまたは技術的知識、もしくはスプレッドシート・ユーザの代わりの他のデータ・ソース（データベースを含む）技術を必要としない。したがって、本発明は、本発明によらなければスプレッドシート・セルとデータ・ソースのバインディングを行うために必要になるはずのコーディングおよびプログラミングをカプセル化し、隠蔽する。
【００１４】
他の特徴および長所は、図面および請求項を含む、以下の説明から明白になる。
【００１５】
【発明の実施の形態】
図１に、スプレッドシート・セルとデータ・ソースの自動的なバインディングを提供するシステム１００を示す。このシステムには、実行時マネージャ１０２および設計時マネージャ１０４が含まれる。設計時マネージャ１０４は、リポジトリ１０６と通信し、リポジトリ１０６は、データ・ソース・エンジン１０８と通信する。データ・ソース・エンジン１０８は、さまざまなデータベース・ソース１１０ならびに、ビジネス・オブジェクト１２０を含むデータの非データベース・ソースと通信する。データベース・ソース１１０は、たとえば、ＪＤＢＣ１１２、ＯＬＥＤ１１４、またはＯＤＢＣ１１６とすることができる。さらに、データ・ソースは、単にデータベース・オブジェクトであるのではなく、とりわけ、ＤＬＬ１２２、ＣＯＭオブジェクト１２４、Java（Ｒ）オブジェクト１２６、および実行可能ファイルとすることができる。データ・ソース・エンジン１０８は、実行時マネージャ１０２とも通信して、ユーザ要求時にセルとデータ・ソースのバインディングを提供する。
【００１６】
設計時マネージャ１０４はデータ・モデラを有し、このデータ・モデラは分散（または他の）コンピュータ環境内のすべての既存データ・ソース（ＲＤＢＭＳまたは他の）を公開する使いやすいグラフィカル・ユーザ・インターフェース（ＧＵＩ）である。たとえば、ＲＤＢＭＳデータ・ソースには、データベースと、そのデータベースによってカプセル化されるすべてのオブジェクトが含まれる。これらには、とりわけ、テーブル、各テーブル内の列、格納されたプロシージャが含まれる。非ＲＤＢＭＳデータ・ソースの例には、とりわけ、ＤＬＬまたはJava（Ｒ）パッケージが含まれる。そのようなデータ・ソースによってカプセル化されるすべてのオブジェクトも、ユーザに公開される。これらには、一般のメソッド、関数、パラメータなどが含まれる。ユーザは、各オブジェクトを検査し、そのようなオブジェクトのあるプロパティを設定することができる。さらに、ユーザは、新しいスキーマを作成し、単純なドラッグ・アンド・ドロップ・ユーザ・インターフェースによって、異なるデータ・ソースからそのようなスキーマに異なるオブジェクトを含めることができる。モデラは、すべてのそのようなスキーマの作成を処理する。設計時中に、ユーザは、モデラ内で表示される特定のデータ・ソースをスプレッドシートの個々のセルにドラッグ・アンド・ドロップすることができる。設計時マネージャ１０４内のバインディング・マネージャが選択されたデータ・ソースの種類に無関係に、すべてのバインディング処理を処理する。
【００１７】
図１のシステムでは、分散コンピューティング環境内のデータ・ソースが、モデル・ビューワ・コンポーネントを使用して表示される。ユーザは、モデルを作成し、あるデータ・ソースを分散環境からモデルにインポートすることができる。これは、所望のデータ・ソースを選択し、モデル内にドラッグするという単純なドラッグ・アンド・ドロップ動作によって行われる。図１のシステムは、インポートされた各データ・ソースの読取／書込属性を示す。これは、後に、セルとデータ・ソースの間でデータを伝送する両方向能力を提供するのに使用される。
【００１８】
ユーザは、モデルに対する１つまたは複数のビューを作成することができる。ビューとは、仮想オブジェクトとも称するものである。これらのビューは、仮想オブジェクト・コントローラを使用して作成される（図３を参照されたい）。ユーザは、データ・ソースの要素を単純にドラッグ・アンド・ドロップして、対応するモデルに対するビューを作成することができる。さらに、ユーザは、特殊なＧＵＩウィザードを介してビューの各要素のパラメータを定義することができる。したがって、たとえば、Java（Ｒ）メソッドの特定のパラメータに渡される値がセルの名前を述べることによって、またはいくつかの値に基づく数式によって、定義される。この形で、データ・ソースを１つのモデルに混入することができ、各データ・ソースを個々のセルにバインドすることができる。１つのモデルにデータ・ソースを混入し、バインド時に区別することによって、バインディング機能のほかにモデリング機能が提供される。
【００１９】
ユーザは、リンク・マネージャを使用して、モデル・ビューの要素をスプレッドシート上の個々のセルにバインドし（図４を参照されたい）、リンク・マネージャは、すべてのモデルおよびそれらのめいめいのビューをツリー構造コントロールで表示する。バインディングは、ビューの要素（たとえば、列またはJava（Ｒ）メソッド）のドラッグおよびその要素のExcelワークシート上の特定の個々のセルへのドロップを含む、単純なドラッグ・アンド・ドロップ動作によって行われる。
【００２０】
実行時マネージャ１０２は、データ・ソースからそのバインディング・セルへおよびその逆のデータの変形、変換、および推移を検査する。実行時マネージャ１０２によって実行される動作には、データ・ソースからセルへ（およびその逆）の接続のオープン、特定のＳＱＬステートメントの構成および実行（基礎となるバインディング・データ・ソースがＲＤＢＭＳである場合）、または特定のメソッドまたは関数の呼出し（基礎となるバインディング・データ・ソースがＤＬＬまたはJava（Ｒ）パッケージなどの非ＲＤＢＭＳである場合）と；各セルとその基礎となるバインディング・データ・ソースの間のデータの変形、変換、および推移が含まれる。
【００２１】
バインディングに関するすべてのメタデータ情報は、ワークシート内でＸＭＬオブジェクトとして直列化される。ＸＭＬは、ＩＳＯのＳＧＭＬ（Standard Generalized Markup Language）のサブセットであり、ＳＧＭＬは、さまざまな形で表示または印刷されることができる単一の文書ソースを刊行者が作成できるようにする標準文書フォーマット設定言語である。ＳＧＭＬは、ウェブに特に適さない、大規模で複雑なフォーマット設定言語である。ＨＴＭＬおよびＸＭＬは、ウェブ・ページをサポートするように特に設計された、ＳＧＭＬの簡略版である。ＸＭＬは、ＨＴＭＬに非常に類似する（実際にＨＴＭＬと相互運用可能である）が、単一のＤＴＤに頼らない。その代わりとして、ＸＭＬは、文書作成者がＸＭＬ文書内で新しいＸＭＬタグを定義するための標準機構を提供する。マークアップ言語であることの他に、ＸＭＬは、新しいＤＴＤを定義することができるメタ言語である。ＸＭＬ  ＤＴＤでは、特定のＸＭＬ文書タイプのフォーマットが指定され、どのタグが文書内に現れることができるか、または現れなければならないかが識別される。文書はそのＤＴＤを含むか、そのＤＴＤを指すことができる。したがって、ＸＭＬは、自己記述的データ・フォーマットである。ＸＭＬ文書は、ＤＴＤによって定義される必要はない。しかし、ＤＴＤが存在する場合には、文書が特定のフォーマットに一致することの検証に使用される。いかなるＸＭＬパーサも埋め込まれたＤＴＤを動的に解析して、文書内のＸＭＬタグを解析する方法を習得し、文書の内容を検証することができる。
【００２２】
図１のシステムでは、実行時環境が、そのようなメタデータ情報のすべてをシームレスに読み取り、バインディング命令に従って、セルと基礎になるバインドされたデータ・ソースとの間でデータを転送する。そのような命令には、実行される必要があるＳＱＬコード（基礎となるバインドされたデータ・ソースがデータベース・オブジェクトの場合）または、実行される必要があるメソッドの位置および関数（基礎となるバインドされたデータ・ソースが非データベース・オブジェクトの場合）が含まれる。したがって、図１のシステムでは、データ・ソース情報および文書テンプレートがＸＭＬフォーマットにモデル化され、その後、スプレッドシートの内部でこれらが一緒にバインドされる。実行時には、このメタ・データがネットワーク上のデータ・ソースを突止め、スプレッドシートとの間でのデータの取出しおよび更新に使用される。
【００２３】
図２、３、および４に、それぞれモデル・コントローラ、仮想オブジェクト・コントローラ、およびリンク・マネージャに関連する処理２００、２５０、および３００を示す。コントローラは、３つのウィンドウまたはパネルに分割された１つのＧＵＩコントロールの一部であり、このＧＵＩコントロールの実施形態を、図５および６に示し、下で説明する。モデル・コントローラを用いると、ユーザがモデルを作成でき、そのモデルにデータ・ソースをインポートできるようになる。インポートされた後は、モデルが最上位ノードがモデルの名前であるツリーで表示される。仮想オブジェクト・コントローラを用いると、ユーザがモデルの個々の要素をモデル・コントローラからビューにドラッグ・アンド・ドロップできるようになる。再度、すべてが、最上位モデルがユーザの作成したビューの名前であるツリーで表示される。
【００２４】
リンク・マネージャを用いると、モデルおよびそれに関連するすべてのビューを最上位レベルがモデルであり、子ノードがビューであるツリー構造に表示できるようになる。特定のモデルに対するビューが中央ウィンドウ内で作成される際に、ノードがそれ相応にモデルの下のリンク・マネージャ・ツリーに追加される。ユーザは、ビューの要素を選択し、リンク・マネージャ・ツリーからスプレッド・シート上の個々のセルにドラッグ・アンド・ドロップすることができる。これが行われる時に、リンク・パスがリンク・マネージャ・ウィンドウの右パネル側に表示される。リンク・パスは、ドラッグ・アンド・ドロップされるデータ・ソースがバインドされる、worksheet.cell.datasourceパスの名前を記述する絶対パスである。
【００２５】
図２に示されているように、モデル・コントローラは、データ・ソースをユーザ定義のモデルにインポートするために使用される。このコンポーネントは、各データ・ソースのＵＲＬ位置およびパス、それらの読取／書込属性、およびパラメータなどの必要なすべてのメタ・データ情報を保管する。
【００２６】
処理２００では、特定のビューに持ち込まれたすべての要素のパラメータ定義、起点、および位置に関するメタ・データ情報がＸＭＬとして保管される。用語パラメータは、ここでは、メソッドおよび関数のパラメータだけではなく、データベース関連オブジェクトを含めることができる特定のビューを定義するＳＱＬステートメントのWHERE文節部分に現れる引数も指す。たとえば、ユーザがテーブルｔ１から列１、テーブルｔ２から列２をビューに持ち込むことができる。生成されるＳＱＬは、select t1.c1, t2.c2 from t1, t2 where t1.c1 = <whatever>, t2.c2 = <whatever>である。<whatever>部分はＧＵＩウィザード（このコンポーネントの一部）によって注記され、ユーザはウィザード内でこれらを入力することができる。<whatever>文節は、実際の値として、もしくは複雑な数式またはワークシート内の特定のセルの名前として任意に定義することができる（たとえば、select t1.c1, t2.c2 from t1, t2 where t1.c1 = cell1 = 75 and t2.c2 = cell2*cell1+45）。ＳＱＬステートメントが自動的に生成され、使いやすいウィザードは、生成されるＳＱＬステートメントのWHERE文節をユーザが定義するのを援助し、したがって、ユーザがＳＱＬを深く知る必要をなくす。
【００２７】
データ・ソース・モデルは、データ・ソース・エンジン１０８を使用してオブジェクトをインポートすることによって定義される（ステップ２０２）。前に述べたように、データ・ソースは、単にデータベース・オブジェクトであるのではなく、Java（Ｒ）オブジェクト、ＣＯＭオブジェクト、ＤＬＬ、および実行可能ファイルなどの非データベース・オブジェクトとすることができる。次に、モデルを、ＸＭＬオブジェクトとしてデータ・ソース・リポジトリ１０６に保管する（ステップ２０４）。最後に、インポートしたオブジェクトをツリーで表示する（ステップ２０６）。ツリーには、各オブジェクトに関する情報がそのオブジェクトの子と共に保管される。したがって、ツリーによって保管されたデータには、とりわけ、表、列、Java（Ｒ）オブジェクトおよびそれに関連するメソッドを含めることができる。
【００２８】
説明のために、例示的なモデルが１１個のデータ・ソースを有することができる。これらには、データベースからインポートされた３つのテーブルおよび２つの格納されたプロシージャと、３つのメソッドをそれぞれが有する２つのJava（Ｒ）オブジェクトと、４つの関数を有するＤＬＬを含めることができる。ユーザは、あるテーブルから２つの列、もう１つのテーブルから３つの列、第１のJava（Ｒ）オブジェクトからの２つのメソッド、第２のJava（Ｒ）オブジェクトからの１つのメソッド、およびＤＬＬからの１つの関数をビューにドラッグ・アンド・ドロップすることができる。
【００２９】
図３に、仮想オブジェクト・コントローラに関連する処理２５０を示す。仮想オブジェクト・コントローラを用いると、ユーザが特定のデータ・ソース・モデルへの１つまたは複数のビューを定義できるようになる。処理２５０には、特定のビュー名の定義と、そのビューへのモデルの個々の要素（たとえば、とりわけ、テーブルの列、Java（Ｒ）メソッド、ＣＯＭメソッド、格納されたプロシージャ、関数）をドラッグ・アンド・ドロップすることが含まれる。まず初めに、ステップ２５２で、ユーザが図２のステップ２０２で定義されたデータ・ソース・モデルに基づいて、さまざまな仮想オブジェクトを定義する。データベース・オブジェクトの場合には、ステップ２５２にＳＱＬコードを生成するＳＱＬ照会ビルダ・ウィザードの呼出しが含まれる。このウィザードを用いると、ユーザがＳＱＬ照会定義の判断基準の一部として、各セルをシームレスに統合できるようになる。その代わりに、データ・ソースがデータベースでない場合には、ウィザードが基礎となる非データベース・データ・ソースのパラメータを考慮に入れる（ステップ２５４）。非データベース仮想オブジェクトの場合には、各仮想オブジェクトの定義にセルへのオブジェクトのドラッグ・アンド・ドロップが含まれる。たとえば、パラメータは、Java（Ｒ）オブジェクトのメソッドを含むことができる。最後に、仮想オブジェクトは、ツリー構造で保管されて表示される（ステップ２５８）。
【００３０】
図４を参照すると、リンク・マネージャに関連する処理３００が示されている。リンク・マネージャは、すべてのモデルをそのモデルについて定義されたすべてのビューと共にツリー構造コントロール内に表示する（ステップ３０２）。ユーザは、ビューの要素をワークシート上の特定のセルにドラッグ・アンド・ドロップすることができる。システムは、必要なメタ・データ情報をスプレッドシートのワークシートと共に保管する。メタ・データ情報には、セルと基礎になるデータ・ソースの間でデータを渡すのに必要なＳＱＬステートメント（データベース・オブジェクトの場合）が含まれ、または基礎となるデータ・ソースが非データベース・オブジェクトの場合には、メソッドまたは関数を呼び出すために設定する必要がある位置およびパラメータが含まれる。仮想オブジェクト・コントローラによって定義されたデフォルト・パラメータ値を上書きするために、パラメータ割当を処理する責任を負うウィザードをこのステージでも呼び出すことができる。
【００３１】
図５および６に、上で述べたモデル・コントローラ、仮想オブジェクト・コントローラ、およびリンク・マネージャの例示的なユーザ・インターフェースを示す。これらのコントローラは、この例では米マイクロソフト社のExcelスプレッドシートである、例示的なスプレッドシートにシームレスに統合される。これらのコントローラは、Visual Basic（Ｒ）アプリケーションでコード化され、Excelに組み込まれる。
【００３２】
まず図５を参照すると、スプレッドシート３５０が示されている。スプレッドシート内の文書を２つの主なコンポーネントすなわち、テンプレートと、そのテンプレートを取り込むデータを有するものとして表示することができる。文書テンプレートは、単純に、データを操作し、その後にエンド・ユーザに提示する形を提供する。データは、１つまたは複数のネットワーク・ベースの分散（または他の）ソースから発するエンティティである。スプレッドシート内では、各セルが１つまたは複数のデータ・ソース・オブジェクトに結合された独立のＧＵＩコントロール・オブジェクトとして表示される。そのようなセルのそれぞれがスプレッドシート・ユーザによって定義され、そのセルに含まれる特性によって定義される、それ自体の特定の挙動を維持する。各セルがＧＵＩコントロールとして表示され、操作されるので、そのようなセルの集合によって、１つまたは複数の分散データ・ソースを介してナビゲートすることができる独立のエンティティが確立される。
【００３３】
このシステムは、３つのウィンドウまたはパネルに分割された１つのＧＵＩコントロールを提示し、そのＧＵＩコントロールの実施形態が図５および６に示されている。モデル・コントローラを用いると、ユーザがモデル・ビュー３６２でモデルを作成でき、そのモデルにデータ・ソースをインポートできるようになる。インポートされたデータ・ソースに関連するテーブル関係が、テーブル・ビュー３６４に示される。インポートされた後に、モデルが、最上位ノードがモデルの名前であるツリーで表示される。仮想オブジェクト・コントローラを用いると、ユーザがモデルの個々の要素をモデル・コントローラからオブジェクト・ビュー３６６にドラッグ・アンド・ドロップできるようになる。再度、すべてが、最上位モデルがユーザの作成したビューの名前であるツリーで表示される。図５の例では、ソース・オブジェクトに関連するメタ・データが示されている。ソース・オブジェクトはデータベースであるため、メタ・データにはソース３６８、列名３７２、および列の型３７４が含まれる。
【００３４】
図６に、例示的なリンク・マネージャのユーザ・インターフェースを示す。リンク・マネージャを用いると、モデルおよびそれらに関連するすべてのビューを最上位がモデルであり、その子ノードがビューであるツリー構造３８２に表示できるようになる。特定のモデルへのビューが中央ウィンドウ３８４に作成される時に、ノードがそれ相応にそのモデルの下のリンク・マネージャ・ツリーに追加される。ユーザはビューの要素を選択し、リンク・マネージャ・ツリーからスプレッド・シート上の個々のセルにドラッグ・アンド・ドロップすることができる。これが行われる時に、リンク・パスがリンク・マネージャ・ウィンドウのウィンドウ３８６に表示される。リンク・パスは、ドラッグ・アンド・ドロップされるデータ・ソースがバインドされるworksheet.cell.datasourceパスの名前を記述する絶対パスである。
【００３５】
実行時環境に関連する処理４００を図７に示す。まず初めに、スプレッドシート・ワークシートを読み取り、すべてのバインディング情報を抽出する（ステップ４０２）。データ・ソースがデータベースである場合には、ワークシートから抽出されるバインディング情報に、下記が含まれる。
１．リンク・パス情報（たとえば、cellname.tableName.columnName）
２．データ・ソースの絶対パス位置（たとえば、データベースのディレクトリまたはＵＲＬ位置）
３．接続情報（たとえば、接続文字列）
４．バインディングに関連するＳＱＬ（たとえば、Update、Insert、Delete、Select）
５．ＳＱＬに関連するパラメータ（たとえば、ステートメント：select column1 from table1 where column1 = cell1 * 25では、パラメータは、column1とみなされ、その値は、cell1 * 25とみなされ、これは、ＳＱＬステートメントを実際に実行する前の実行時に計算される）
６．取出しに関する最大行数
【００３６】
データ・ソースが非データベースである場合には、ワークシートから抽出されるバインディング情報に、下記が含まれる。
１．データ・ソースのタイプ（たとえば、ＣＯＭ、ＤＬＬ、ＥＪＢ、ＣＯＲＢＡなど）
２．データ・ソースのタイプに基づいて、特定の情報が保管される（たとえば、ＣＯＭオブジェクトの場合、そのインターフェース識別子が保管される）。
３．リンク・パス情報（たとえば、cellname.objectname.methodname）
４．データ・ソースへのパラメータのリストおよびそれらを計算する方法。（これには、パラメータを評価する方法に加えて、それが入力専用か出力専用か入出力用かというパラメータのタイプが含まれる。）
【００３７】
実行時環境は、セルがバインドされるデータ・ソースのタイプを知り、それ相応にバインディング情報を処理する。実行時環境は、ＳＱＬコードを使用して、バインディング・セルおよびデータ・ソースと相互作用する（ステップ４０４）。ＳＱＬコード生成は、使いやすいＧＵＩウィザードを介して行われる。ウィザードは、Select、Insert、Update、およびDeleteを含む、ウィザードによって生成されることができる異なるタイプのＳＱＬステートメントを提供する。相互作用処理は、次の通りである。
１．ウィザードがモデル情報（たとえば、とりわけ、テーブル、ビュー、格納されたプロシージャ）をロードする。
２．ユーザが自分に表示される特定のオブジェクトをリストから選択する。これには、たとえば、テーブルがその列と共に含まれる。
３．選択されたオブジェクトが生成されるタイプのＳＱＬステートメントに含まれる。
４．ユーザがパラメータ判断基準情報を入力する（たとえば、WHERE文節に含まれる項目。これは、リストから列名を選択することを介して行われる）。
５．ウィザードが可能な手動調整のために、生成されたＳＱＬをユーザに表示する。
６．仮想オブジェクト（この例では、仮想テーブル）が生成されたＳＱＬステートメントに基づいて作成される。
【００３８】
データ・ソースが、ＣＯＭオブジェクトなど、データベースでない場合には、処理４００は、シームレスに、たとえば、ＣＯＭオブジェクトをインスタンス化するためにCoCreateInstanceを作成し、その後、その特定のセルについてワークシート内で直列化されたメソッドの名前を知ることによって、ＣＯＭを使用して適当なメソッド（ＡＰＩ）を呼び出す。同様に、データ・ソースがCorbaオブジェクトまたはJava（Ｒ）Beanメソッドである場合には、処理４００は、バインディング・メソッドを呼び出すために、適当なインターフェースおよび機構を呼び出す。
【００３９】
本発明は、ディジタル・ハードウェア、コンピュータ・ソフトウェア、またはこの両方の組合せで実施することができる。本発明は、コンピュータ・システム内で実行されるコンピュータ・プログラムで実施されることが好ましい。そのようなコンピュータ・システムには、プロセッサ、データ記憶システム、少なくとも１つの入力装置、および出力装置を含めることができる。図８に、ＣＰＵバス６９８によって結合される、プロセッサ（ＣＰＵ）６１０、ＲＡＭ６２０、ＲＯＭ６２２、および入出力コントローラ６３０を含む、そのようなコンピュータ・システム６００を示す。入出力コントローラ６３０は、入出力バス６５０によって、キーボード６６０、マウス６７０などの入力装置と、モニタ６８０などの出力装置にも結合される。さらに、１つまたは複数のデータ記憶装置６９２が入出力インターフェース６９０を介して入出力バスに結合される。
【００４０】
さらに、図８の基本的なコンピュータ・システムの変形形態が、本発明の範囲に含まれる。たとえば、ユーザ入力装置としてマウスを使用することの代わりに、圧力感知ペン、ディジタイザ、またはタブレットを、描かれるセグメント位置情報を生成するのに使用することができる。したがって、ユーザ入力がセグメントを定義するためにサンプリングされる。
【００４１】
上で説明したソフトウェアは、専用システムまたは組込みシステムで動作する、高水準手続き型プログラミング言語または高水準オブジェクト指向プログラミング言語で実施することができる。しかし、所望する場合には、プログラムをアセンブリ言語または機械語で実施することができる。どの場合でも、言語は、コンパイルされる言語または解釈される言語とすることができる。
【００４２】
そのようなコンピュータ・プログラムのそれぞれは、説明した手順を実行するために、記憶媒体または記憶装置がコンピュータによって読み取られる時に、汎用または特殊目的のプログラム可能コンピュータを構成して動作させるために、コンピュータによって読み取り可能である記憶媒体または記憶装置（たとえば、ＣＤ−ＲＯＭ、ハード・ディスク、または磁気ディスケット）に保管されることができる。このシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読記憶媒体として実施されることもでき、この場合に、そのように構成される記憶媒体が特定の事前に定義された形でコンピュータを動作させる。
【００４３】
本発明の実施形態に関して本発明を図示し、説明してきたが、形態および詳細における上記および他の変更を、請求項の趣旨および範囲から逸脱せずに行えることを、当業者は理解するであろう。
【００４４】
他の実施形態は、請求項の範囲に含まれる。
【図面の簡単な説明】
【図１】  スプレッドシート内のセルと、１つまたは複数のデータ・ソースとを自動的にバインディングするためのシステムを示す。
【図２】  モデル・コントローラに関連する処理の流れ図である。
【図３】  仮想オブジェクト・コントローラに関連する処理の流れ図である。
【図４】  リンク・マネージャに関連する処理の流れ図である。
【図５】  モデル・コントローラおよび仮想オブジェクト・コントローラの例示的なユーザ・インターフェースを示す。
【図６】  リンク・マネージャの例示的なユーザ・インターフェースを示す。
【図７】  セルへのデータ・ソースのバインディングの処理の流れ図である。
【図８】  自動セル・バインディングをサポートするコンピュータの概略図である。
【符号の説明】
１０２  実行時マネージャ
１０４  設計時マネージャ
１０６  リポジトリ
１０８  データ・ソース・エンジン
１１０  データベース
１１２  ＪＤＢＣ
１１４  ＯＬＥＤ
１１６  ＯＤＢＣ
１２０  ビジネス・オブジェクト
１２２  ＤＬＬ
１２４  ＣＯＭオブジェクト
１２６  Ｊａｖａ（Ｒ）オブジェクト
３５０  スプレッドシート
３６２  モデル・ビュー
３６４  テーブル・ビュー
３６６  オブジェクト・ビュー
３６８  ソース
３７２  列名
３７４  列の型
３８２  ツリー構造
３８４  中央ウィンドウ
３８６  リンク・マネージャ・ウィンドウ
６００  コンピュータ・システム
６１０  プロセッサ
６２０  ＲＡＭ
６２２  ＲＯＭ
６３０  入出力コントローラ
６５０  入出力バス
６６０  キーボード
６７０  マウス
６８０  ディスプレイ
６９０  入出力インターフェース
６９２  取外可能ディスク・ドライブ
６９８  ＣＰＵバス
【図１】
0004806148.tif 000002
【図２】
0004806148.tif 000003
【図３】
0004806148.tif 000004
【図４】
0004806148.tif 000005
【図５】
0004806148.tif 000006
【図６】
0004806148.tif 000007
【図７】
0004806148.tif 000008
【図８】
0004806148.tif 000009