(57)【特許請求の範囲】
【請求項１】
各々のオブジェクトが、そのオブジェクトに関連してコードを生成し得るオブジェクトである、１つまたは複数のオブジェクトの階層表示であるシーングラフとしてあらわされたアプリケーションを、コンピュータにより実行するための方法であって、
前記コンピュータにより、前記シーングラフの階層を辿るステップと、
前記コンピュータにより、前記シーングラフの各々のオブジェクトに関連付けられたバイト・コードを検索するステップと、
前記コンピュータにより、前記各オブジェクトを、形状タイプ・オブジェクトを含む複数のタイプの１つとして特徴付け、形状タイプ・オブジェクトである場合、形状創造ステートメントを生成するステップと、
前記コンピュータにより、前記シーンの一部として前記バイトコードを保存するステップと、
前記コンピュータにより、前記シーンのバイト・コード実行イメージを生成するステップと、
前記コンピュータにより、前記バイト・コード実行イメージを実行エンジンに提供し、前記バイト・コード中の各ステートメントを実行するステップと、
前記コンピュータにより、前記各ステートメントが形状創造ステートメントかどうか判断し、もしそうなら、形状を作成するステップと、
前記コンピュータにより、トークン化された形状名を用いて、コンテキスト・ハッシュ・テーブル中に、前記形状を保持するステップを有する、
方法。
【請求項２】
前記ステートメントが、プロパティ開始ステートメントかどうか判断するステップと、
もしプロパティ開始ステートメントであるなら、前記コンテキスト・ハッシュ・テーブル中で形状を検索するステップと、前記形状に関連付けられた開始メソッドを実行するステップをさらに有する、請求項１の方法。
【請求項３】
前記ステートメントが、セット・プロパティ・ステートメントかどうか判断するステップと、
もしセット・プロパティ・ステートメントであるなら、前記コンテキスト・ハッシュ・テーブル中で形状を検索するステップと、前記形状に関連付けられたプロパティ表現を評価するステップと、該プロパティに値を割り当てるステップをさらに有する、請求項１の方法。
【請求項４】
前記ステートメントが、プロパティ終了ステートメントかどうか判断するステップと、
もしプロパティ終了ステートメントであるなら、前記コンテキスト・ハッシュ・テーブル中で形状を検索するステップと、前記形状に関連付けられたプロパティ終了メソッドを実行して前記プロパティをコミットするステップと、前記形状を初期化するステップと、前記形状を表示リストに追加するステップをさらに有する、請求項１の方法。
【請求項５】
各々のオブジェクトが、そのオブジェクトに関連してコードを生成し得るオブジェクトである、１つまたは複数のオブジェクトの階層表示であるシーングラフとしてあらわされたアプリケーションを、コンピュータにより実行するためのシステムであって、
前記シーングラフの階層を辿る手段と、
前記シーングラフの各々のオブジェクトに関連付けられたバイト・コードを検索する手段と、
前記各オブジェクトを、形状タイプ・オブジェクトを含む複数のタイプの１つとして特徴付け、形状タイプ・オブジェクトである場合、形状作成ステートメントを生成する手段と、
前記シーンの一部として前記バイトコードを保存する手段と、
前記シーンのバイト・コード実行イメージを生成する手段と、
前記バイト・コード実行イメージを実行エンジンに提供し、前記バイト・コード中の各ステートメントを実行する手段と、
前記各ステートメントが形状作成ステートメントかどうか判断し、もしそうなら、形状を作成する手段と、
トークン化された形状名を用いて、コンテキスト・ハッシュ・テーブル中に、前記形状を保持する手段を有する、
システム。
【請求項６】
前記ステートメントが、プロパティ開始ステートメントかどうか判断する手段と、
もしプロパティ開始ステートメントであるなら、前記コンテキスト・ハッシュ・テーブル中で形状を検索し、前記形状に関連付けられた開始メソッドを実行する手段をさらに有する、請求項５のシステム。
【請求項７】
前記ステートメントが、セット・プロパティ・ステートメントかどうか判断する手段と、
もしセット・プロパティ・ステートメントであるなら、前記コンテキスト・ハッシュ・テーブル中で形状を検索し、前記形状に関連付けられたプロパティ表現を評価し、該プロパティに値を割り当てる手段をさらに有する、請求項５のシステム。
【請求項８】
前記ステートメントが、プロパティ終了ステートメントかどうか判断する手段と、
もしプロパティ終了ステートメントであるなら、前記コンテキスト・ハッシュ・テーブル中で形状を検索し、前記形状に関連付けられたプロパティ終了メソッドを実行して前記プロパティをコミットし、前記形状を初期化し、前記形状を表示リストに追加する手段をさらに有する、請求項５のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベース管理システム（ＤＢＭＳ）上にアプリケーションを組み立てるためのビジネスインテリジェンスツールに関する。
【０００２】
【発明の背景】
プロセッサ、メモリ及びデータ記憶装置の進化によって、高性能で、しかも経済的なコンピュータが出現したことにより、コンピューターは現代の企業にとって不可欠なものとなった。これらのコンピュータにとって重要なアプリケーションには、情報がデータモデルに従って収集、構成され、照会に応じて検索されるＤＢＭＳが含まれる。ＤＢＭＳを使えば、ユーザーは、記録を構成する情報がコンピュータ内で実際にどのように記憶されているのか詳細に知らなくても、コンピュータ内に記憶されている記録の場所をつきとめ、追加し、削除し、そして更新するような操作を実行できるようになる。
【０００３】
高性能型ＤＢＭＳの一つは、記憶されている情報がユーザーには、各々がリレーションと呼ばれているテーブルのセットのように見える、リレーショナルＤＢＭＳとして知られている。各リレーションでは、情報は、データの列が互いに一つ又はそれ以上の所定の関数よって関連付けられる行列状に配置されているように見える。
【０００４】
照会コンパイラは、リレーショナルＤＢＭＳ内の特定の情報にアクセスするために、通常は構造化照会言語（ＳＱＬ）のような照会言語で表現されるユーザーの要求を、ユーザーの要求に応じたソリューションを作り出すために１つ又はそれ以上の入力されたリレーション上で実行される一式のオペレーションに変換する。ＤＢＭＳによって提供される照会言語を使えば、ユーザーは、ＤＢＭＳからのデータ検索、データ処理及びデータのレポートへの編成を容易にするアプリケーションプログラムを開発することもできる。
【０００５】
ビジネスインテリジェンスツールを開発する際の問題の一つは、ツールが作成しようとするレポートのタイプである。通常、ツールは、照会言語を使って予めフォーマットされている定型レポートを作成する。照会言語はベーシック又はＣ言語のような従来型プログラミング言語よりは使い易いが、新しい各レポートの作成には、更に或る程度のプログラミング技術が必要であり、かなりの時間がかかる。
【０００６】
【発明の概要】
本発明は、ユーザーがデータを理解し、眺め、操作できるようにする、シーンと呼ばれる情報スペースを通して、データへのユーザーアクセスを提供する。ある態様では、シーングラフとして表現されているアプリケーションを実行するための方法が開示される。シーングラフは１つ又はそれ以上のオブジェクトの階層的表現であり、各オブジェクトはオブジェクトに関係するコードを生成することができるようになっている。アプリケーションは、シーングラフの階層を横断し、そしてシーングラフ内に記憶されている各オブジェクトに対しては、各オブジェクトが自己実行するように命令することにより実行される。
【０００７】
本発明のインプリメンテーションには以下のことが含まれる。本方法は、オブジェクトの各ノードに関係するバイトコードを検索することと、そのバイトコードをシーンの１部として記憶することと、そのシーンに対するバイトコード実行画像を生成することにより、シーングラフの各シーンに対する実行画像を生成する。更に、ノードは幾つかのタイプの中の１つのタイプとして特徴付けられる。ノードタイプが形態タイプである場合、本方法は形態創造ステートメントを生成し、プロパティ開始ステートメントを生成し、各プロパティ毎に、オブジェクトに関係する各プロパティを設定するためのステートメントを生成し、各プロパティをコミットするためのステートメントを生成する。ノードタイプがデータソースタイプである場合、本方法はデータベース照会を生成し、参照可能識別子に関する列名を決め、照会を創造するためのステートメントを生成し、各パラメータ毎に、照会パラメータ値を設定するためのステートメントを生成し、照会を実行するためのステートメントを生成する。次に、バイトコード画像が実行エンジンに供給される。次に実行コンテクストがバイトコードに対し創造される。
【０００８】
バイトコード内のステートメントが実行されると、本方法はステートメントが形態創造ステートメントであるか否かを確認し、もしそうであれば、形態を創造し、トークン化された形態名を使って形態をコンテクストハッシュテーブル内に記憶する。ステートメントがプロパティ開始ステートメントである場合、本方法は形態をコンテクストハッシュテーブル内で探し、その形態に関係する開始方法を実行する。ステートメントがプロパティ設定ステートメントである場合、本方法は形態をコンテクストハッシュテーブル内で探し、その形態に関係するプロパティの式の値を求め、プロパティに値を割り当てる。ステートメントがプロパティ終了ステートメントである場合、本方法は形態をコンテクストハッシュテーブル内で探し、プロパティをコミットするためにその形態に関係するプロパティ終了方法を実行し、形態を初期化し、ディスプレイリストに形態を追加する。本方法は又、形態に関係するキャンバスをリフレッシュする。オブジェクトの各プロパティが設定され、オブジェクトには、設定の前及び後に、オブジェクトのプロパティが通知される。
【０００９】
もう１つの態様では、データ表現をビジュアルに編集するためのエディタが開示される。データは親グラフと、その親グラフ内に再帰的にネストされた１つ又はそれ以上のグラフィカルなデータエレメントを有している。エディタは親グラフを編集するためのウインドウと、親グラフ内にネストされ、各々がネストされたグラフを含んでいる１つ又はそれ以上のグラフィカルデータエレメントの各々を編集するための１つ又はそれ以上のドリルダウン・ウインドウを有している。
【００１０】
エディタのインプリメンテーションには、以下のことの内１つ又はそれ以上が含まれている。属性ウインドウはグラフィカルデータエレメントの各々と関係付けられる。属性ウインドウは、オブジェクト状態と、各々が関数式で定義されランタイムにはデータ値として参照可能な複数の属性を通してオブジェクト状態にアクセスできる１つ又はそれ以上のインタフェースとを有する、コンピューターで実行されるオブジェクトに関係するプロパティを編集するために用いられる。関数式は以下のもの、即ち、関数、オペレータ、データベース、列名、変数、定数、の内１つ又はそれ以上を含んでいる。属性は静的データ値でもよい。関数式は構文解析され、ランタイム値として記憶される関数が生成される。関数は定数であれば、クローンが作られ、デザインタイム値として記憶される。更に、式が無効であればエラーメッセージが表示される。
【００１１】
本発明の利点には、次の一つ又はそれ以上が含まれる。本発明は、従来のフォームベース又はレポートベースのアプリケーションにとって本質的な制約を越えて拡張するアプリケーションを組み立てるためのビジュアルなビジネスインテリジェンスツールである。専門化したプログラマーはアプリケーション開発過程から除外され、ユーザーをデータに近づけて、アプリケーション開発時間が低減できるようにする。ユーザーインターフェイスは、情報豊かなデータベースと、データの保管所及び決定支援のようなアプリケーション用に、すぐにしかも簡単に作成できる。
【００１２】
本発明のハイパーリンクは、コンテクストと「先見」情報をアプリケーションに提供する。この機能は、データ駆動アプリケーションを組み立てる際に幾つかの効果的な利点をサポートする。まず、ユーザーは、現在いる場所のコンテクストを失うことなく、ポータルを通してデータの他の画面を調べることができる。アプリケーションをブラウジングするユーザーがたどる経路がアプリケーション自体にも影響を与え、アプリケーションのダイナミックなカスタマイゼイションが行われることもある。更に、コンテクストポータルは、単一のアプリケーション内の様々なデータソースの統合を簡単にする。ポータルによって設定されているパラメータによってパラメータ化された照会の場合、異なるデータベースからのデータを意味のある方法で組み合わせられるようにして、事実上、汎用のクライアントサイドの照会結合を提供する。その結果、コンテクストポータルは、ユーザーがデータをハイレベルで理解できるようにし、より良い業務決定ができるようにする。
【００１３】
ダイナミックオブジェクトプロパティはデータ駆動アプリケーションの開発を容易にし、スプレッドシートの使用以外にはプログラミング経験の無い専門領域のエキスパートが、ツール作成の強力なアプリケーションを容易に使えるようにする。ダイナミックオブジェクトプロパティは、コンパイルされるときにアプリケーションにハードコード化されるスタティックオブジェクトプロパティを凌ぐ幾つかの利点を有している。第一の利点は、プロパティが継ぎ目無く、自動的にデータに結合されるということである。更に、前記結合は、単に一つのオブジェクトではなく、むしろオブジェクトの全クラス（データエレメントノードで表される全オブジェクト）に適用される（即ち、各オブジェクトに対する計算値はオブジェクトにより示される行によって決まる）。もう一つの利点は、さもなければ、オブジェクトの色をデータソースからの一つのコラムか又はコラムのセットの値によって決めるような簡単なタスクを実行するために必要となる、特殊なコーディングを省略できることである。更に、２つ以上のオブジェクトプロパティを、一行の一つの列に（又は全行で実行される計算にさえ）結合することができる。各オブジェクトが一つのリンクに制限されている従来の開発ツールとは対照的に、本発明では、１つのオブジェクトに関連している各列又は行を、別々のプロパティへリンクできるようにする。
【００１４】
シーングラフからコードを生成すればマニュアルプログラミングが不要になるので、開発者は、ツールそのものではなく問題領域に集中できるようになる。その結果、プログラミング経験のない専門領域のエキスパートでも、すぐに強力なアプリケーションを作成できる。更に、シーングラフ表示は、アプリケーションの内容をブラウジングし、ワードプロセッサ内で書類に関するアウトラインをできるだけ簡単に再順序付けできるようにアプリケーションを構成変更するのに効果的な方法を提供する。
【００１５】
更に、本発明は、個々のデータポイントの表示を、できるだけ一般的にトップレベルシーン自体として編集できるようにする。この機能により、ドリルダウン及び検索ナビゲーションをサポートする高性能のアプリケーション作成が可能となる。このナビゲーションにより、ユーザーはデータをより深く理解できるようになり、より良い業務決定を下せるようになる。
【００１６】
他の特性及び利点は、以下の説明および請求項から明らかとなるであろう。
【実施例】
アプリケーションを組み立てるためのビジュアルビジネスインテリジェンスシステムについて以下説明する。このシステムでは、開発者が対話型でバーチャルワールドを組み立てるが、その組み立てブロックはシーンと、データソースと、グローバルパラメータと、リソースとを含んでいる。シーンは、情報がデータベースに記憶されているデータにリンクされている場合を除いて、プレゼンテーションのスライドに良く似た情報のビジュアルディスプレーである。シーンの中では、データソースから作り出された値が、ユーザー指定のデータエレメントとして図表で表される。データソースは、一つ又はそれ以上のデータベース照会を作成するブロック図表作成ツールを使って組み立てられる。照会は、ＳＱＬ照会であってもよい。シーンは、データソースを直ぐに分かるようにシーンの図表エレメントに結合するドローイングエディタを使って作成される。バーチャルワールドが完成すると、バーチャルワールドの実行画像は、バイトコード又は引き続いて翻訳されることになるハイレベルコードとして表示される。バーチャルワールドを表示するバイトコードは、アクティブＸコントロールのようなランタイムコントロールにより実行することができる。ランタイムコントロールは、ウェブページ又はビジュアルベーシック、Ｃ又はＣ＋＋のようなアクティブＸコントロールをサポートする何れかのアプリケーションに埋め込むこともできる。
【００１７】
シーンは、一つ又はそれ以上のオブジェクトを含んでいてもよい。シーン内のオブジェクトは一式のプロパティで表示され、クリックや、ユーザーのシーンへの接近や、マウス位置のようなイベントによってトリガされるアクションが割り当てられている。視点は、シーンを見るための三次元位置である。位置は、シーン中心からのユーザーのその時点のカーソルのＸ及びＹ方向オフセットと、ユーザーのその時点のズームレベル（しばしば倍率レベルと呼ばれる）とを使って表わされる。視点には、バーチャルワールド内でのナビゲーションを容易にするために、固有名が付けられてセーブされる。ユーザーは名前の付いた視点をマニュアルナビゲーションに使うか、又はイベントベースのジャンプアクションの目標として使うこともできる。
【００１８】
データエレメントは、照会の結果生じる行の図表表示である。これはレイアウト及びデータソースと常に関連しており、シーンと同様に構成されている。これはレイアウト及び他のシーンへのワ−ムホールを始めとする、オブジェクトのどんな組み合わせを含んでいてもよい。データエレメントを構成するオブジェクトに関するプロパティは、基準シーンパラメータであるだけではなく、関連したデータソースにある基準コラム名でもある。
シーンエレメント及びデータエレメントはユーザーのズームレベルの機能として別々に表示してもよい。それぞれの表示は詳細さの水準（ＬＯＤ）と呼ばれ、他のＬＯＤとは、視覚的に、互いに排他的である。例えば、一つのドット表示で始まるオブジェクトが、ユーザーがより近くにズームするとアイコンに変化し、更に近くにズームするとチャートに変化するようにしてもよい。
【００１９】
詳細さのレベル同士の間の移行点は、ズームファクターという用語で、ユーザーによって定義される。シーンエレメント又はデータエレメントはＮ個の詳細さのレベルに対してＮ−１個の移行点を持つ。視認性も、オブジェク毎ベースに、「視認性」プロパティを下記のような条件式に設定することによって制御することができる。
【００２０】
If（ユーザーズーム ＞ ２、真、偽）
従って、移行領域は、互いの表示がズームレベルのある範囲で相互に排他的であるのではなく重なり合う場所に作られる。重なりあいは、多種多様なデータエレメントを含む層状マップ作成時には特に重要である。更に、他の効果を達成するために、より複雑な表示を視認性の制御に用いることができる。
データソースは、ランタイムに設定される１つ又はそれ以上の識別子によってパラメータ化できるＳＱＬ照会と名前を付けることができる。データソースが定義される際には、名前が付けられて、ワールドに追加され、ワールドマネージャのデータソースカテゴリに表示される。するとこれらを実行に利用できるようになる。その結果はデータシートでブラウジングすることができ、又レイアウトの中で用いることができる。レイアウトの中で用いる場合、照会の結果できる各行はデータエレメントで表示される図表に転換される。その結果生じるデータソース内のコラムは、データエレメントに含まれるオブジェクトの属性にリンクされる。データソース照会内に存在するパラメータはグローバルプログラム変数、ローカルシーンパラメータ、又はワールドツリー階層で高位置にあるデータソース内のコラムに関連付けられる。
【００２１】
図１は、一つ又はそれ以上のワールドを同時に編集するための多様なドキュメントのインターフェースを示している。ユーザーインターフェースの主要な部分は、ワールドマネージャーウインドウ１０と、プロジェクトワークスペース及びエディタウインドウ２０及び２２と、オブジェクトインスペクタ３０と、コントロールバー４０と、アウトプットウインドウ２４である。
【００２２】
ワールドワークスペースは、エディタウインドウを含むバックグラウンドエリアである。４タイプのエディタウインドウが提供されている。シーンエディタと呼ばれる図表描画エディタが、トップレベルシーンを構成するために提供されている。データエレメントエディタと呼ばれる図表描画エディタが、各データポイントの表示をレイアウト内に定めるために提供されている。照会エディタと呼ばれるツールが、照会の図形ブロック線図を構築するか、又はＳＱＬを直接手動で入力するかのどちらかによって、ＳＱＬ照会を定義するために提供されている。照会エディタは又、照会の結果を見るためのデータシートも提供する。更に、全バーチャルワールドの二つの視界を示すワールドエディタが提供されており、その２つの内第１はパラメータのリンクと共にワールドのナビゲーション階層を示すワールドの構造画面であり、第２は全ワールドに文書化及び検索の機能を提供する読み出し専用の疑似コードである。
【００２３】
ワールドマネージャーウインドウ１０は、ユーザーのオープンワールドを編集し管理するための基本的なインターフェースである。これは、タブ１２，１４，１６を備えたドック可能なコントロールバーと対応する情報のパネルとを有している。ユーザーがタブをクリックすると、タブは最上部へ移動し下にあったパネルが表示される。各パネルは、情報のカテゴリを表示するため順に一式のボタンを提示する。ボタンをクリックすると、そのボタンに関連するカテゴリの情報が表示される。図表タブ１６は、シーン又はデータエレメントに追加できる全図表オブジェクトの分類別パレットを提示する。
【００２４】
ワールドマネージャー１０は、ワークスペース２０の左右どちらかにドックしておくことができる。ドックされている状態では、パネルの寸法を横方向に拡大又は縮小することができる。浮動状態では、縦横の両方向に拡大又は縮小させることができる。
【００２５】
図１の例では、ワールドタブ１２と呼ばれる一つのタブが、その時点で開いているワールドの構成と階層に関して３つの異なる画面を表示する。各オープンワールドは、ツリーコントロール１８内の主要ワークスペースの項目の下に表示される。コンテクストメニューは、ツリーコントロール内に表示される各項目に関して利用でき、右のマウスボタンをクリックすると、選択された項目に関する共通メニューコマンドのリストが提供される。
【００２６】
この例では、シーンカテゴリは、グローバルパラメータと各オープンワールド内に含まれているシーンを表示する。グローバルパラメータは、オブジェクトプロパティとイベントアクション双方内のあらゆるシーンの階層内のどこにでも参照符号を付けて配列しておくことのできる識別子である。各シーンの下には、シーンに関する詳細さのレベル及び各詳細さのレベルから成るオブジェクトの階層リストと共に、そのローカルパラメータ（あれば）と視点のリストがある。一見すると、各詳細のレベルは互いに排他的である。言い換えると、一時に一つの詳細さのレベルが見られるだけである。詳細さのレベルの下にあるツリー内のオブジェクトの順番は、その引用順番である。別のオブジェクトの下に表示されるオブジェクトは、チャイルドオブジェクトと呼ばれ、その所有者はペアレントオブジェクト又は複合オブジェクトと呼ばれる。ツリー内のある項目は、別のシーンを参照するワームホール（後述する）のようなツリー内の他の項目を参照として載せてもよいし、或いはデータソースカテゴリに関するツリー内のデータソースを参照するデータエレメントを参照として載せてもよい。
【００２７】
データソースカテゴリは、各オープンワールドに含まれる照会のリストを表示する。各データソースは、照会パラメータ、列名又は別名、及び照会を構成するのに照会線図エディタが使われた場合は線図のリストを順に含んでいる。提示されるときには、照会線図には、構成に使われているブロックとコネクションのリストが含まれている。リソースカテゴリは、シーンやその図表コンテンツ（ノード）に関するプロパティ値の計算に使われる実行リソースのリストを表示する。基本的リソースタイプには、カラーマップ、カラーシーケンス、ストック画像、及びユーザークラスが含まれる。
【００２８】
データタブ１４は二つの情報のカテゴリを含んでおり、その１つは照会線図を構成するのに用いられるエレメントのパレットを提供する照会デザインであり、もう１つはアクティブなデータベーススキーマのコンテンツをブラウジングできるようびするデータベースコンテンツである。照会デザインカテゴリのコンテンツはパレット形式で提示される。データベースコンテンツのカテゴリはツリー形式で提示され、そこでは各表の下の列名と視界は、列名と種類がダブルコロンで分けられて（例えば、employee_name::varchar）表示される。データベースコンテンツツリーは、アクティブなスキーマをブラウジングするのに用いることができる。
【００２９】
各オープンワールドは、ゼロ又はそれ以上のオープンエディタウインドウを含んでいる。４つのタイプのエディタはそれぞれ、エディタのタイプ及びエディタのコンテンツを記述するテキストがその後に続く、独特のアイコンを表示する。テキストのフォーマットは、下記のような省略フォーマット又は拡張フォーマット、即ち、
EditorType : Contents
又は、
EditorType : WorldName[.ExtendedContents]
であり、ここに、EditorTypeとはエディタのタイプ（「シーン」、「データエレメント」、「照会」又は「ワールド」）であり、WorldNameとはコンテンツを含むワールドの名前であり、Contentsとは編集されているオブジェクトの短い名前（例えば「DataElement１」）であり、ExtendedContentsとは編集されているオブジェクトの長い名前であり、これはピリオドで分けられた全ペアレントオブジェクトの象徴化された名前を含んでいる（例えば「Scene１．ScatterChart 1. DataElement 1」）。
【００３０】
２つ以上のエディタウインドウがワールドの所与の部分に対し開かれる。例えば、同一のシーンは、シーン全体を見るために、１００パーセントの倍率で、一つのエディタの中で編集され、一方別のエディタがそのシーンのより細かい部分にズームインする。どちらかのエディタでシーンが変更されると、両方のウインドウに反映される。
【００３１】
シーンエディタウインドウは、トップレベルシーンのコンテンツを図表的に編集し、デバグするために用いられる。エディタは、デザインモードとランタイムモードとの二つのモードを有している。デザインモード画面では、オブジェクトはグラフィックパレットから追加され、照会の実行なしで表示される。一つ又はそれ以上のプロパティ値を通してデータソースに結合されるオブジェクトは位置ホルダオブジェクトで表示される。更に、オブジェクトイベントは何も生成されないので、オブジェクトに関連する何らのアクションも実行されない。シーンは何れのズームレベルででも編集することができ、それはナビゲーションツールバーから設定することができる。
【００３２】
デザインモード画面は、セレクターバーとパラメータバーの二つのオプションのドッキングツールバーを提供する。シーンは別々に異なるズームレベルで表示されるが、そこでは、各表示又はドローイングによってＬＯＤが定められる。セレクターバーは、現在ＬＯＤが編集されているコントロールを提供する。パラメータバーは各パラメータ用のボタンをシーン内に表示する。シーンがパラメータを有していなければ、画面メニューから手動でオンに切り替えられない限りバーは表示されない。パレットに表示されるパラメータは、オブジェクトのプロパティの値を設定するためのオブジェクトインスペクタで用いられる。パラメータバーは、パラメータが作成、削除、又は編集されると、自動的に更新される。
【００３３】
ランタイムモードが選択されると、シーンのコンテンツは、以下に述べるように、バイトコードへコンパイルされて表示される。何らかの関連する照会が実行されると、オブジェクトイベントが生成され関連するアクションが実行される。ランタイムモードがナビゲーションの全性能をサポートするので、他のシーンへのワームホール又はジャンプリンクはアクセス可能である。他のシーンへジャンプすると、デザイン画面も新しいシーンに切り替えられる。ランタイムモードは編集作業の間に、第二のウインドウを開くことによりデザイン視界内で同時に見ることができる。同一シーンを表示している多種多様なランタイム画面は独立して作動し、互いに従属関係にはない。各画面は、アクティブなランタイム画面のためのワールドシーンツリー内に反映されるグローバルパラメータの各々のコピーを有している。
【００３４】
データエレメントエディタウインドウは、照会結果によるデータポイントの表示を図表的に編集するために用いられる。データエレメントエディタウインドウが、デザインモードで図１２に示されている。セレクターバーとデータソースバーの両方を見ることができる。
【００３５】
シーンエディタウインドウと同様に、データエレメントエディタはデザインモードとランタイムモードの二つのモードを有している。デザインモード画面ではオブジェクトはグラフィックパレットから追加され、照会の実行なしで表示される。一つ又はそれ以上のプロパティ値を通してデータソースに結合されるオブジェクトは、位置ホルダオブジェクトで表示される。更に、オブジェクトイベントは何も生成されないので、オブジェクトに関連する何らのアクションも実行されない。データエレメントは何れのズームレベルででも編集することができ、それはナビゲーションツールバーから設定することができる。
【００３６】
データエレメントは別々に異なるズームレベルで表示されるが、そこでは、各表示又はドローイングによってＬＯＤが定められる。更に、データエレメント内の異なるオブジェクトは、異なる軸に関連付けられる。例えば、取引の量に関するバーを有するストックチャートは二つのＹ軸を有する。各取引日に関するデータエレメントは、価格軸に関連するハイ／ロー／クローズバーと、量軸に関連する量バーとを有している。セレクターバーは、ＬＯＤと軸のセットとを編集できるコントロールを提供する。パラメータバーは各パラメータ用のボタンをシーン内に表示する。パレットに表示されるパラメータは、オブジェクトのプロパティの値を設定するためのオブジェクトインスペクタで用いられる。パラメータバーは、パラメータが作成、削除、又は編集されると、自動的に更新される。
【００３７】
データソースバーは、データエレメントの範囲内にある各データソース用のボタンの帯を表示する。各ボタンは、オブジェクトインスペクタで用いられる列名に対応している。レイアウトを単純にするため、単一のデータソースが表示される。ネストされたレイアウトでは、各照会に関して一つの行が表示される。照会は、その関連データエレメントのオブジェクトがデータエレメントの先祖としてワールドのシーンツリー内に存在するかどうかという視野で考えられる。データソースの列が作成、削除、又は編集されると、データソースバーが自動的に更新される。
【００３８】
照会エディタは、３つの照会の画面を提示するが、その３つとは、正しく書式化された照会結果を表示するデータシートと、照会の構成のブロック線図を提供する照会線図画面と、実際のＳＱＬテキストを表示するＳＱＬ画面とである。ユーザーは、ウインドウの一番下でスクロールバーの左にある、対応するモードボタンの一つをクリックすることにより、画面間の切り替えを行う。
【００３９】
データシート画面は表になった照会の結果を示す読み出し専用の画面である。照会がパラメータ化されていれば、データシートは、デフォルト値が照会に含まれる各パラメータに利用できるときにだけ利用できる。データシートは、編集作業の間は、第二ウインドウを開くことにより照会線図又はＳＱＬテキスト画面で同時に見ることができる。照会を変更すると、データシートが対話型でリフレッシュされることになる。データシートモードが選択されない場合は、他の画面への変更があってもリフレッシュされない。行は、画面へ入ってくる場合、データシートへロードされる。
【００４０】
ユーザーは、ワールドマネージャのデータタブか又は挿入メニューからブロックを選択することによって、照会線図にブロックを追加する。ブロックは、ソースブロックの出力ポート及び目標ブロックの入力ポートをクリックすることによって接続される。替わりに、ブロックは、マウスをポートの一つから他のポートへドラッグし、ユーザがマウスボタンを放すまで表示される「ゴム結合」接続ラインによっても接続することができる。どちらの場合も、カーソルは、接続操作を示すために、ポート選択アクションの間で変更される。
【００４１】
ＳＱＬ画面は、任意の選択照会が作成され、編集できるようにする。更に、線図エディタによって生成される式の編集もできるようにする。しかし、ＳＱＬが編集されれば、線図は利用できなくなる。この場合、ユーザーに警告するために確認ダイアログが表示される。
【００４２】
ワールドエディタは、バーチャルワールドと対話するために、構成画面と疑似コード画面の２つの画面を提供する。ワールド構成ウインドウは、全ワールドに関する機構の階層的な画面を表示する。ワールドルートボックスの下にあるボックスはそれぞれ、１つのシーンに対応している。シーンの下にあるボックスは、データエレメント又はワームホールにより接続されている他のシーンに対応している。これらの何れかのボックスをダブルクリックすると、対応するシーン又はデータエレメントエディタが開く。ボックス間のリンクは、ワールドシーンツリー内の階層を表す。
【００４３】
一つのボックスは、図表コンテンツに含まれる各データソース及びワームホール用の一つのチャイルドボックスを有している。ワールドの構成次第であるが、ツリーの深さは無限である。例えば、一つのシーンがもう一つのシーンまでのワームホールを含んでおり、そのシーンが今度は第一シーンまで戻るワームホールを含んでいれば、ツリーは第一及び第二シーンの無限の縦方向シーケンスを含んでいることになる。その結果、ツリーは、ユーザーによって明示的に拡張される場合にのみレベルを拡張することとなる。
【００４４】
その下の各リンクとボックスは、リンクのトップにあるボタンをクリックすることにより、表示されたり隠されたりする。最初に表示されるとき、ワールドボックスはワールドに含まれる全シーンを表示するために拡張される。ボックスが拡張されると、ツリー構造は新たに表示されるボックス用の空間を作るようになっている。
更に、ワールドのパラメータ化も構成線図に表示される。グローバルパラメータ、シーンパラメータ、及び照会パラメータは、その入力としての役割を示すボックスの左側に伸びるテキストボックスとして表示され、一方照会列は、その出力としての役割を示すボックスの右側に伸びるテキストボックスとして表示される。パラメータと列名が別のエディタウインドウで追加、削除、又は変更される度に、その変更を反映させるためにボックスが更新される。
【００４５】
シーン又は照会パラメータが、階層中でより上層のパラメータ若しくは列に設定されている場合には、パラメータのテキストボックスは、ソース値に対して「配線されている」と示される。これらの接続は構成線図内で編集することもできる。新規接続を確立し、パラメータの値を設定するためには、当該パラメータに対する入力接続点と、ソースパラメータ又は列に対する出力接続点とをマウスでクリックする（順不同）。代わりに、接続点は、マウスを一方からもう一方へドラッグして、その結果ユーザーがマウスを放すまで表示される「ゴム結合」接続ラインによっても接続できる。どちらの場合も、カーソルは、接続操作を示すために、選択アクションの間で変更される。ここでの注意点は、接続を有効なものにするためには、ソースはツリー階層中のより高層に存在せねばならないということである。リンクを排除するには、ユーザーは当該リンクを選択して消去キーを押せばよい。
【００４６】
疑似コード画面は、ワールドの全コンテンツの読み出し専用画面をテキストフォーマットで提供する。疑似コードは、ワールド名と初期シーンから成る初期ヘッダーを表示するが、これに引き続いて以下のセクション、即ち、
グローバルパラメータ
ユーザークラス
カラーマップ
カラーシーケンス
ストック画像
データベース接続
データソース
シーン
が表示される。
【００４７】
１つの実行例では、セクションは１組の点線で、
−−−−−−−−−−−−−−−−−−−−
セクション名
−−−−−−−−−−−−−−−−−−−−
のように囲まれている。
【００４８】
更に、データソースとシーンは、
−−−−−−−−−−−−−−−−−−−−
のような一本の分離線により分けられている。
【００４９】
これに続くセクションは、各疑似コードエレメントに対するフォーマットを表示する。ここで、角括弧（‘［’と‘］’）はオプションのテキストを意味し、垂直分離線（‘ヲ’）は、二者選択を意味する点に注意されたい。
0004177531.tif 000002
0004177531.tif 000003
0004177531.tif 000004
疑似コードは、カラーコード型構文を使用して表示される。例えば、セクションのヘディングは緑で、データタイプは青で、そして他の全テキストは黒で表示される。疑似コードは、ワールド内どこかで変更がある都度更新されることになる。
【００５０】
出力ウインドウは、ワールドが展開され見えてくるにつれ、コンパイルと実行情報を表示する、ドック可能なコントロールバーである。これはまた、警告とエラーメッセージも表示する。出力ウインドウは、ドックされている時は縦方向にサイズを変えることができ、浮動時には縦横両方向にサイズ変更できる。
【００５１】
ランタイムモードでは、視点ダイアログボックスがワールドをナビゲートするために設けられる。直接アクセスできるようになっているシーンは、シーン・コンボボックスに表示される。選択されたシーンのための視点は、視点リストボックスに表示される。視点を選択すると位置編集コントロールの値が更新される。これらのコントロールの値は、位置とズーム係数を指定することにより、注文指示通りに変更される。
【００５２】
レイアウトウィザードは、新しくレイアウトを作るときにユーザーを各段階を通して案内するために設けられている。全レイアウトに共通な最初の２段階は、レイアウトを選択して、次にデータソースを選択することである。次に、各レイアウトは、当該レイアウトを創造するために必要な限りの多数の追加的レイアウト特有の段階を有する。
【００５３】
レイアウトは、軸のセットのようなサポートするコンテクスト情報を伴うデータソースに由来するデータエレメントを空間的に配列させたものである。レイアウトは、以下の５つのカテゴリのセット、即ち、
チャート−連続情報を提示するために使用される、
マップ−１つのデータソース内の多数の曲線や連続情報をレイアウトするために使用される、
階層−オブジェクトの従属物を示すために使用される、
パターン−独立したオブジェクトを指示されたパターンでレイアウトするために使用される、
フォーム−データソース内の単一の記録を表示するために使用される、
のどれかに当てはまる。
【００５４】
レイアウトは、シーン或はデータエレメント描画上のどこにでも配置できる。マップや分散チャートのような幾つかのレイアウトタイプには、２つ以上のデータエレメントをサポートするものもあり、このようにして情報を「階層化する」ことができるわけである。この場合、各データエレメントには、現行のズームレベルに依存する視認性が割り当てられるわけで、ズームレベルを上げるとより多くの情報が提示できるようになる。
【００５５】
軸ノードは、それらを必要とするレイアウトに添付されている。数値ではなくてテキストレベルに基づく軸を有する棒チャートや列チャートのような幾つかのチャートタイプでは、これらの軸の内の１つ又はそれ以上がデータソースを必要とするので、データ結合型である。サポートされる軸には、線形軸、対数軸、及び日付／時間軸が含まれる。これらの軸は、自動調整式ラベルと小刻みな増分もサポートするので、ズーミングはより多くの情報を正確な軸値で提供することができる。
【００５６】
ある種のレイアウトタイプでは、データエレメントを位置づけるのに、軸よりもむしろロケーターを使用するものもある。これらのロケーターは、デザインタイムには目に見えて表示されないが、そのプロパティは、レイアウトの他のオブジェクトのプロパティと共に、オブジェクトインスペクター内に表示される。レイアウト内のデータエレメントがレイアウトそのものを保有するという複合レイアウトも使用できる。普通は、第２レイアウトに関連するデータソースがパラメータ化され、１つ又はそれ以上のパラメータが親レイアウトのデータソースの列とリンクされる。
【００５７】
識別子は、バーチャルワールド内の、オブジェクト、データソース、シーン、パラメータ、ユーザークラス、カラーマップ、カラーシーケンス、視点のようなエレメントにとっての名前である。識別子は、ケースには敏感ではなく、１文字に等しいかそれ以上ならどんな長さでもよい。
【００５８】
オブジェクトのプロパティは、オブジェクトの外見を関数式の事項で定義づける、名前の付いた属性から成る。これらのプロパティへのアクセスはオブジェクトインスペクターを介して行われる。その値は、式を計算した結果に基づき、ランタイムに設定される。式には、ランタイムに結果として出る行に自動的に結合される１つ又はそれ以上のデータソース列の名前を含んでいる。
【００５９】
オブジェクトプロパティ式は結果的に、Boolean、Numeric、String、Point、PointList、及びImageといった基本的なデータタイプの内の１つとなる。導き出されるNumericタイプには、Color、DateTime、Enum、Integer、及びPercentageが含まれる。導き出されるStringタイプには、FilePath（若しくはＵＲＬ）及びFontNameが含まれる。
【００６０】
これより図２の説明に入るが、ここではオブジェクトインスペクター３０についてより詳しく示している。オブジェクトインスペクター３０は、属性名＿列１００とプロパティ列１１０という２つの列を提供する。図２で検査されるオブジェクトは、プロパティ、１１２、１１４、１１６、１１８、１２０、１２２、１２４、１２６を有する。特に、プロパティ１１４、１１６、１１８、１２０、１２４、１２６は静的定数である。しかしながら、プロパティ１１２と１２２は、動的であって、実行時に値が決められる。動的なプロパティ１１２と１２２に起因して、データ駆動アプリケーションを創造する際には、ユーザーは当該動的プロパティを入力しさえすればコードが自動的に生成される。このように、動的プロパティ１１２と１２２のデータ結合は、継ぎ目無くプロパティシート３０へと統合される。
【００６１】
オブジェクトインスペクターウインドウ３０は、オブジェクトのプロパティとイベントを表示するドック可能なコントロールバーである。オブジェクトインスペクターは、ドックされている時には横方向にサイズ変更することができ、浮動時には縦横両方向にサイズ変更することができる。ウインドウは、ドラッグ中にその位置がドッキングサイトと重なるときには、ワールドのワークスペースの左又は右にドックされる。オブジェクトインスペクター３０は、シーンエディタ又はデータエレメントエディタウインドウが、デザインモードで稼働しているときに表示され、エディタの範囲内の全オブジェクトのリストを保有するドロップダウン・コンボボックスを表示する。「ドット」表記法は複合オブジェクトを示すために使用される。例えば、“ScatterChart1．DataElement1"は、DataElement1がScatterChart1に所有されるオブジェクトであることを表している。
【００６２】
オブジェクト選択コンボボックスの下には、あるオブジェクトに関してのプロパティ又はイベントの何れかを表示するタブ式シートがある。プロパティのタブが選択されると、選択されたオブジェクトのプロパティの値を設定するため、２列入力用紙が表示される。左列は、プロパティの名前を表示する読み出し専用列であり、もう一方の右列は、プロパティの値を表示する読み出し／書き込み列である。右列に入力される値は、定数でもよいし、或はデータソースからのパラメータの関数又は名前を含んでいる計算値であってもよい。プロパティ値が計算されるタイプのもの（有限な数の値にしか設定できない値）であるときは、ドロップダウン・コンボボックスはそのプロパティにとって正当な値をリストにして表示される。計算されるタイプには、これに限定するわけではないが、次のもの、即ち、
フォント名（例：“Arial"，“Courier"）、
カラー（例：赤、青）、
テキスト整列（例：左、右）、
テキストの固定ポイント（例：左下、右上）、
ブール値（例：真、偽）、
線スタイル（例：実線、点線）、
充填パターン（例：べた、横方向）
が含まれる。
【００６３】
プロパティが日付或は時間であれば、フィールドがアクティブになるとカレンダーコントロールがプロパティ値の下に表示される。
【００６４】
フォーム及びデータエレメントオブジェクトは、オブジェクトインスペクターのリストに載っているQueryParametersオブジェクトを介して照会パラメータの値全体を制御する。QueryParametersオブジェクトは、フォーム又はデータエレメントの子オブジェクトであり、各照会パラメータについてのプロパティを保有している。照会がパラメータ化されていない場合には、QueryParametersオブジェクトは、オブジェクトインスペクターに表示されない。オブジェクトに含まれる値は、ランタイムに、当該照会が実行される前に、照会プロパティーを設定するために使用される。
【００６５】
図３は、抄録ベースクラスVcPropertyBag２００のプロパティオブジェクトモデルを示している。VcPropertyBag２００は、１つ又はそれ以上の導き出されたクラスに特有のプロパティのセットに対しコンテナの役目を果たす。VcPropertyBag２００は、プロパティとそれらの値にアクセスしそれらを操作するためのインターフェースを提供する。それは又、導き出されたオブジェクトのプリパティのセットについてのタイプ情報を入手するための純粋に仮想的な方法も提供する。
【００６６】
VcPropertyBag２００から引き出されるのは、抄録べースクラスVcScene２０２、及び抄録ベースクラスVcDrawingNode２０４である。VcScene２０２はシーンのためのクラスであって、VcPropertyBag２００からプロパティを継承する。VcDrawingNode２０４は、シーンに表示される全グラフィカルオブジェクト用の抄録ベースクラスであり、やはりVcPropertyBag２００からプロパティを継承する。VcDrawingNode２０４は、ムーブメントをサポートしてプロパティを操作するため、スケーリングのため、及び他の標準的な編集オペレーションのための純粋に仮想的な方法のセットを提供する。導き出されたクラスは、適当なプロパティに対する編集オペレーションをマッピングすることに責任を負う。
【００６７】
VcPropertyBag２００は又、クラスVcProperty２１０のm＿propertiesというプロパティのセットを有しており、このセットには、名前と計算タイプ情報m＿expectedTypeを始めとして、特定オブジェクトプロパティについての全情報が含まれている。m＿expectedTypeは、求められたプロパティ値のデータタイプ（例：ブール、数字、ストリング等）を記述し、オブジェクトへアクセスする経路m＿pathを記憶し、そして当該プロパティに関するデザインタイム値m＿designValueとランタイム値m＿runtimeValueを管理する。デザインタイムは常に定数に決められるので、コンテナオブジェクトは孤立して（データ或はパラメータにリンクされずに）表示されることになる。ランタイムの値も定数である場合、この２つの値は同じ値に設定される。
【００６８】
VcProperty２１０はプロパティの名前用の保管場所を提供するための標準的なストリングクラスであるCString２１２に属するm＿nameプロパティを有する。VcPropertyオブジェクト２１０は又、VcPropertyPath２１４と呼ばれるm＿pathプロパティのクラスも有しており、これはVcPropertyBagのプロパティのセット内だけに特有のものであるプロパティに対する識別子を記憶し、ポインターm＿nextをVcPropertyPathのリンクされたリストに提供して一まとめにされたプロパティバッグをサポートする。
【００６９】
VcProperty２１０は又、VcPropertyValue２１６と呼ばれるクラスに属する、プロパティm＿design値も有する。VcPropertyValue２１６は、プロパティ（VcFunction２２０）にとってのデザインタイム値を表現する関数を記憶し、またユーザーにより入力された式を記憶するので、ケース感受性、スペーシング、及び他の特定項目が、ユーザーの入力に応じて表示されることになる（CString２１８）。
【００７０】
VcFunction２２０は、構文解析された式エレメントのための抄録ベースクラスであり、この関数はコンテクストオブジェクトを供給することによって求められる式ツリーにとってのルートエレメントである。CString２１８は、ユーザーにより入力される式の保管場所を提供する標準的なストリングクラスである。
【００７１】
最後に、VcPropertyオブジェクト２１０はまた、抄録ベースクラスVcPropertyValue２２２に属するm＿runtime値も有する。VcPropertyValue２２２は、当該プロパティに対するランタイム値を表す関数を記憶し、またユーザーにより入力された式を記憶するので、ケース感受性、スペーシング、及び他の特定項目が、ユーザーの入力に応じて表示されることになる。
【００７２】
これより図４に移るが、ここでは模範的バイトコードの実行を表す線図が示されている。本例では、ユーザーは関数を式の形で規定している。式は続いて構文解析されバイトコードが生成されるが、このバイトコードは所望のオペレーションを表すインストラクションのハイレベルのセットであり、ランタイムに実行されるものである。バイトコードの実行については図４に図解されている。
【００７３】
図４は、模範的VcStmtCreatShapesバイトコード３０２の実行について示している。バイトコード３０２は、実行されると特定の形態をしたオブジェクトのインスタンスを作りだし、そのオブジェクに対するトークン型の名前をハッシュテーブル・ルックアップ用に記憶する。バイトコード３０２により生成されるオブジェクト形態を構築するための１つの模範的実行例としての疑似コードをブロック３１０として示している。当該オブジェクトの形態を構築するための実行疑似コードブロック３１０では、VcStmtCreatShape'sPerform()方法が呼び出されると、それはファクトリィオブジェクトのCreatShape()方法を呼び出して新しい形態のオブジェクトを創造し、次にそのオブジェクトに対するポインタを、コンテクストオブジェクトにより所有されているハッシュテーブルに記憶して、後刻プロパティ設定時のルックアップに備える。最後に、本方法は、その創造時に確立される形態に対する参考事項をリリースする。
【００７４】
バイト符号３０２は、当該形態のトークン化された名前の保管場所を提供するために、標準的なCStringクラス３００のメンバーであるm＿objectIdプロパティを有する。バイトコード３０２は、シーン内で形態を創造すことに責任を負う抄録ベースクラスVcShapeFactory３０４のメンバーであるm＿factoryプロパティを有する。VcShapeFactory３０４の導き出されたクラスは、形態の特定のクラスを創造し且つそれをキャンバス表示リストに加えるために、純粋に仮想的なCreatShape()方法を無効にしなければならない。
【００７５】
VcShapeFactory３０４は、概念的なベースクラスVcShape３０６から導き出される形態オブジェクトのインスタンスを創造する。VcShape３０６は、全形態オブジェクトにとっての抄録ベースクラスである。それは、形態プロパティを設定するためのトランザクション指向の多形態インターフェースを提供する。VcShapeの導き出されたクラスは、レンダリングとヒット検知サポートを実行することに責任を持つ。
【００７６】
図４はまた、抄録クラスVcStmtSetProperty３２０についても示しているが、これは実行されると形態プロパティの値を設定するバイトコードステートメントのための抄録クラスである。VcStmtSetProperty３２０の導き出されたクラスは各データタイプを表現する。抄録クラスVcStmtSetProperty３２０は、形態のトークン化された名前と、プロパティに独自的にアドレスするために必要なプロパティアイデンティティのセットとを記憶する。VcStmtSetProperty３２０は、CStringクラス３２２のメンバーであるプロパティm＿objectIdと、クラスVcPropertyPath３２４のメンバーであるm＿propPathプロパティとを有する。VcPropertyPath３２４は、プロパティの形態セット内に特有のプロパティのための識別子を記憶して、１まとめにされた形態をサポートするために、リンクされたリストVcPropertyPathにポインタm＿nextを提供する。
【００７７】
今度はVcStmtSetProperty３２０がVcStmtSetStringProperty３２６により継承されるが、これは、形態のプロパティの値をストリング値に設定し、且つ、形態のプロパティを設定する前にプロパティ値を求めるための抄録ストリング関数VcSftn３２８に対するポインターを保有している。VcSftn３２８は所与のコンテクストのためのストリングに対し評価を行うVcFunctionから導き出されるが、この関数は、関数の構文解析されたエレメントを保有している構文解析表現ツリーに対するルートエレメントである。
【００７８】
VcStmtSetStringPropertyバイトコード３２６の１つの実施例を、ブロック３３０に示す。形態のプロパティを設定するためのこの実施例においては、VcStmtSetStringProperty's  Perform()方法が呼び出されると、それはコンテクストのハッシュテーブルから当該形態を検索する。それは次に、所与の文脈を用いてストリング関数を求め、その結果をプロパティパス経由で当該形態に渡す。
【００７９】
これより図５に入るが、ここではサンプル構文解析型プロパティ関数を説明する線図を示している。本例中の関数は、VcStmtSetStringProperty関数３５０である。関数３５０は、オブジェクト識別値“Text1"３５２を有しているが、これはクラスCstringのメンバーである。これは、設定予定のプロパティを保有する形態オブジェクトのトークン化された名前である。VcStmtSetStringProperty３５０は、オブジェクトText1により所有されるTextプロパティの値を、スペース記号によって分離されている付属のlast＿nameからfirst＿nameまでにより作り出される計算値に設定する、サンプル・バイトコード・ステートメントである。本例では、m＿objectIdは目標オブジェクト“Text1"を識別するストリングを指し、m＿propPathはテキストオブジェクト内に設定される予定のプロパティのアドレスを指し、m＿ftnはプロパティの値に対し評価を行うストリング関数を指す。
【００８０】
VcStmtSetStringPropert３５０は、その値がブロック３５４で設定されるプロパティパスを有する。最後に、VcStmtSetStringProperty３５０はVcSftnConcatenate関数３６０を実行するように指定されている。VcSftnConcatenate３６０は、２つのメンバーストリング関数であるm＿ftn1（first＿name＋〃〃）とm＿ftn2（last＿name）の結果を連結する、VcSftnから導き出されるストリング関数である。
【００８１】
ブロック３６０内では２つの関数が更に細かく規定される。ツリーの左枝を下って行くとVcSftnConcatenate関数３６２が示されている。VcSftnConcatenate３６２は、２つのメンバーストリング関数m＿ftn1とm＿ftn2を使用して、式（first＿name＋〃〃）の数値を求めるすることに責任を負う。ブロック３６２内には、２つの関数、即ちm＿ref（“first＿name"）に記憶されている識別子の現在値を調べる責任を負うストリング関数であるVcSftnLookup関数３６４と、一定ストリング値を記憶する責任を負うストリング関数であるVcSftnConstant３７０とが追加されている。
【００８２】
ルックアップ関数３６４の値は文字ストリング３６６により求められるが、これは識別子の名前、“fisrt＿name"、を保管する場所を提供する標準ストリングクラスである。定関数３７０で値を求めると、その結果はブロック３７２のスペース（ストリング定数“  ”）である文字ストリングになる。
【００８３】
VcSftnConcatenate関数３６０からツリーの右側を下っていくと、VcSftnLookup関数３８０が求められる。VcSftnLookup３８０は、m＿ref（“last＿name"）に記憶されている識別子の現在値を調べる責任を負うストリング関数である。VcSftnLookup関数３８０の数値を求めると、文字ストリングになる。
【００８４】
シーンからコードを生成するプロセスのオブジェクトモデルについては、図６により詳しく示す。当該シーンは、シーン内の各形態と論理エレメントのためのコードジェネレータを表す描画ノードのリストを保有する。オブジェクトVcScene４００は、視認区域に表示される全グラフィカルオブジェクト用の描画層若しくはキャンバスの輪郭を定める。CreatMethod(）関数は、実行されると、グラフィカルオブジェクト付きのシーンを創造して定住させる一連のバイトコード・ステートメントを生成する。これらのステートメントは、VcCGMethod４１０と呼ばれるオブジェクトに記憶される。
【００８５】
VcScene４００は、クラスVcDrawingNode４０２から導き出されるオブジェクトのリストm＿nodesを保有している。VcDrawingNode４０２は、シーンのコンテンツを表現する全形態と論理ノードのための抄録ベースクラスである。VcDrawingNode４０２は、導き出されたクラスにおけるVcStmt実行ステートメントのリストを生成するためのインターフェースGetExecStmt(）を定義する。VcDrawingNode４０２は、VcShapeNode４０４のサブクラスである。VcShapeNode４０４は、形態を生成するノード用の抄録ベースクラスである。VcShapeNode４０４の導き出されたクラスは、各タイプの形態のプロパティを構築し設定するのに必要なバイトコードステートメントを生成する。
【００８６】
またVcShapeNode４０４は、VcDataNodeクラス４０６のサブクラスであるが、これは、データソースをオブジェクトのレイアウトを表すグラフィカルテンプレートに照会の各行ごとに結合させる形態ノードのクラスである。VcDataNodeにより生成されるバイトコードは、データソースにより供給される結果のセットを反復し、オブジェクトのセットを創造し、それらをアクティブなシーンに付け加える。
【００８７】
VcDrawingNode４０２はまた、描画ノードのクラスVcLogicNode４０８によっても継承されるが、このクラスが今度はVcDataSource４１０に継承される。VcLogicNode４０８は、形態ノードとユーザーの間の関係を定義するバイトコードを生成する描画ノードのクラスである。VcDataScouce４１０は、データの抄録ソースを表現する論理ノードのクラスである。導き出されるクラスは、レイアウト中のグラフィックを生成するために、データノードにより使用されるデータの表になるバイトコードを生成することに責任を負う。
【００８８】
VcDataNode４０６は、VcDataSource４１０のインスタンスを保有する。VcDataSource４１０は、クラスVcQueryDataSource４１２に継承される。VcQueryDataSource４１２は、照会インスタンスを構築し、ランタイムパラメータに取って代わり、照会を実行するバイトコードを生成するために、照会オブジェクトと対話をすることに責任を持つ。
【００８９】
次にVcQueryDataSource４１２は、列とパラメータの名前とタイプを始めとする、ＳＱＬ照会についての情報を記憶する、VcQuery４１４のメンバーである照会オブジェクトm＿queryを指す。またVcQueryオブジェクト４１４は、VcColumnクラス４１６に記憶されている列のセットと、VcParameterクラス４１７に記憶されているパラメータのセットとを有する。VcColumn４１６は、データベースから検索されるデータの列についての情報を記憶するので、バイトコード実行ステートメントにより使用されるコンテクストオブジェクトにより照会することができる。VcParameter４１７は、ＳＱＬ選択ステートメントに対する引数の役をする名前の付けられた位置ホルダオブジェクトを表している。ＳＱＬステートメントが実行される時にはその前に、パラメータは、パラメータのランタイム値に置き換えられる。
【００９０】
VcSceneオブジェクト４００は、そのCreatMehtod（）メンバー関数が呼び出されると、クラスVcCGMethod４１０のインスタンスを生成する。このVcCGMethod４１０は、抄録ベースクラスVcStmt４２０に属するオブジェクトのセットを有する。VcStmt４２０は、全バイトコードステートメント用の抄録ベースクラスである。その完全に仮想的な方法Perform(）は、導き出される全クラスにより実行されるべき実行インターフェースを定義する。VcStmt抄録ベースクラス４２０は、４２２、４２４、４２６、４２８、４３０を始めとする多数のバイトコードステートメントにより継承される。VcStmtCreatShape４２２は、実行されると特定の形態オブジェクトのインスタンスを創造するバイトコードステートメントである。ステートメント４２２は、ハッシュテーブル・ルックアップのために、オブジェクトのトークン化された名前を記憶する。VcStmtCreatQuery４２４は、実行されると特定の照会オブジェクトのインスタンスを創造するバイトコードステートメントである。VcStmtBeginProperties４２６は、そのプロパティが設定される予定の形態インスタンスを通知するバイトコードステートメントである。VcStmtSetProperty４２８は、実行されると形態のプロパティの値を設定するバイトコードステートメント用の抄録クラスである。導き出されるクラスは、形態のトークン化された名前と当該プロパティを独自的にアドレスするのに必要とされるプロパティＩＤのセットを記憶する各データタイプを表す。最後に、VcStmtEndProperties４３０は、そのプロパティに対する変更が完了しており、２つ以上のプロパティに依存する何れの計算をも実行できることを、形態インスタンスに通知するバイトコードステートメントである。
【００９１】
コード実行処理のオブジェクトモデルは、図４に示すオブジェクトモデルと同様のものである。簡単に言うと、VcStmtCreatShapeバイトコードは、実行されると、ハッシュルックアップテーブルのオブジェクト用にトークン化された名前を記録し、特定の形態を呈するオブジェクトのインスタンスを創造する。VcStmtCreatShapeバイトコードステートメントは、シーン内に形態を創造することに責任を持つVcShapeFactory抄録ベースクラスから導き出されたファクトリィオブジェクトを保有する。更に、VcStmtSetProperty抄録クラスは、形態のトークン化された名前と当該プロパティを独自的にアドレスするのに必要とされるプロパティＩＤのセットとを記憶する。VcStmtSetStringPropertyバイトコードステートメントは、ストリング値に対する形態プロパティの値を設定するが、形態のプロパティを設定する前にプロパティ値を求めるための抄録ストリング関数に対するポインタを保有する。
【００９２】
これより図７に入るが、プロパティシート入力プロセス４４０について説明する。プロパティシートの使用に際して、ユーザーはある式を入力する（ステップ４４０）。その式は次に構文解析され（ステップ４４４）、有効性がチェックされる（ステップ４４６）。当該式が無効の場合には、必要なデザイン値を使用してランタイム値をクリアするよう処置され（ステップ４４８）、エラーメッセージが表示される（ステップ４５０）。そうではなく当該式が有効である場合には、関数を創造してその関数をランタイム値として記憶する処置がとられる（ステプ４５２）。次に、その関数が一定であるかどうかを確定し（ステップ４５４）、もしそうであるなら、関数のクローンを作りデザインタイム値をそれに替えて記憶する（ステップ４５６）。
【００９３】
次に、バイトコードについてのランタイム実行可能コードを保有するバイトコード実行画像を無効にする処理が行われる（ステップ４５８）。次に、ランタイムディスプレイを自動的に更新する必要があるかどうかをチェックする（ステップ４６０）。更新が必要であるなら、バイトコードが生成され（ステップ４７０）、実行される（ステップ４７２）。ステップ４６０又はステップ４７２から出て処理は終了する（ステップ４７４）。
【００９４】
次に図８に移るが、ここではオブジェクトを目に見えるように操ることについてのプロセス８２０を詳しく説明する。先ずどのオブジェクトプロパティをどの変更された属性にマッピングするのかを確定する（ステップ８２２）。次に、新しい属性値を表すために定数関数が創造されるが、この値は次にランタイムプロパティ値とデザインタイムプロパティ値として記憶される（ステップ８２４）。バイトコード実行画像は、ここで無効とされる（ステップ８２６）。次に、ランタイムディスプレイを自動的に更新する必要があるかどうかを確定する（ステップ８２８）。もし必要であれば、バイトコードが生成される（ステップ８３０）。ステップ８３０については、図９により詳細を示す。ステップ８３０に続いてバイトコードが実行される（ステップ８３２）。ステップ８３２については、図１１により詳細を示す。ステップ８２８又はステップ８３２から出て処理は終了する（ステップ８３４）。
【００９５】
次に図９に入るが、ここではバイトコードを生成するプロセス６００について示す。先ず、事前に記憶されたアプリケーションリソースを入力値とみなし（ステップ６０２）、第１シーンを入手する（ステップ６０４）。次に当該シーン中の第１ノードを入手する（ステップ６０６）。次に、そのノード用のバイトコード実行ステートメントを検索する（ステップ６０８）。このステップについては、図１０により詳しく示す。ステップ６０８に続いて、ノードを追加して処理する必要があるかどうかを確定し（ステップ６１０）、必要があれば、ステップ６０８にループバックする前に次のノードを入手する（ステップ６１２）。
【００９６】
全ノードの処理が済むと、VcCGMethodを創造して、当該シーンに関連するステートメントを記憶する（ステップ６１４）。次に、他にもまだ処理する必要のあるシーンがあるかどうかを確定する（ステップ６１６）。もしあれば、次のシーンを入手して（ステップ６１８）から、ステップ６０６までループバックし、バイトコード生成プロセスを継続する。全シーンの処理が済むと、バイト符号実行画像を生成し（ステップ６２０）て、本プロセスは終了する（ステップ６２２）。
【００９７】
次に図１０について説明するが、ここではオブジェクトノードについてのバイトコード実行ステートメントを入手するためのプロセス６３０を示す。先ずノードタイプを確認する（ステップ６３２）。ノードが形態なら、形態創造ステートメントを生成し（ステップ６３４）、同様にプロパティ捕捉を開始するためのステートメントを生成する（ステップ６３６）。次に、ステップ６３８−６４４で検索された各プロパティを設定するためのステートメントを生成する。最後に、当該プロパティをコミットするためのステートメントを創造する（ステップ６４６）。
【００９８】
一方、ノードが照会データソースである場合には、照会を入手して、パラメータ化されたＳＱＬステートメントを生成する（ステップ６４８）。次に照合可能な識別子として使用される列名を確定する（ステプ６５０）。次に、照会を作り上げるためにステートメントを創造する（ステップ６５２）。次に、ステップ６５４−６６０で、各照会パラメータを設定する１つ又はそれ以上のステートメントを創造する。最後に、照会を実行するステートメントを創造する（ステップ６６２）。ステップ６４６又はステップ６６２から出て処理は終了する（ステップ６６４）。
【００９９】
これより図１１に移るが、ここではバイトコードを実行するためのプロセス６６６を示す。先ず、実行コンテクストが創造される（ステップ６６８）。次に、VcCGMethodPerform()方法を呼び出す（ステップ６７０）。当該ステートメントが検索される（ステップ６７２）。次に、当該ステートメントが分類される（ステップ６７４）。ステップ６７４に続いて、VcStmtCreatShapeステートメントに出会うと、新しい形態を生成し（ステップ６７６）、その形態をコンテクストハッシュテーブルにトークン化された名前を使用して記憶する（ステップ６７８）。ステップ６７４に続いて、VcStmtBeginPropertiesステートメントに出会うと、形態情報をハッシュテーブルで調べる（ステップ６８０）。次に、形態のOnPropertiesBegin(）方法を呼び出す（ステップ６８２）。VcStmtSetPropertyステートメントに出会うと、形態情報をハッシュテーブルで調べる（ステップ６８４）。次に、その値をプロパティに割り当てるために形態のSetProperty()方法を呼び出す前に、プロパティ式を求める（ステップ６８６）。VcStmtEndPropertiesステートメントに出会うと、形態情報をハッシュテーブルで調べる（ステップ６９０）。次に、形態のOnPropertiesEnd()方法を呼び出す（ステップ６９２）。次に、当該形態は初期化され（ステップ６９４）て、キャンバス・ディスプレイリストに付け加えられる（ステップ６９６）。
【０１００】
ステップ６７８、６８２、６８８又は６９６に続いて、ステートメントを追加して実行する必要があるかどうかをチェック（ステップ６９８）して、必要があれば、ステップ６７４へとループバックする前に、次のステートメントを入手する（ステップ８００）。
【０１０１】
ステップ６９８に続いて、実行コンテクストを削除し（ステップ８０２）、キャンバスを新しくする（ステップ８０４）。最後に、処理は終了する（ステップ８０６）。
【０１０２】
グラフ編集システムを説明する図解を図１２に示す。シーングラフ４８０はアプリケーションの階層を表現している。シーングラフ４８０中の各エレメントはノードと呼ばれ、バイトコードの生成に際してこのノードが使用される。更に、２つのデータの画面４８２と４８４を示している。画面４８２は、２つのデータセットから検索されたデータを示すレイアウト（マップ）である。
【０１０３】
４８４の画面では、データポイントは単一画像４８５として表示してもよく、図１２では強調表示されている。画像４８５は、位置ホルダ画像付きのデザインモードで示されている。画像４８５に関連する属性はウインドウ４８６に示される。各データエレメントは自身の描画ウインドウを有しているのでユーザーは何れのデータエレメントでも編集することができる。このように、グラフはデータポイントに配置されるので、グラフはデータポイント内に存在することになる。
【０１０４】
図１２の編集システムを使えば、ユーザーは、それが次にグラフ自身の中にネストされるデータポイント内にグラフを輪郭付けすることができるようになるので、図１２の編集システムは、孔を開けて掘り下げ、より詳しく見る方法を提供しているといえる。このように、詳細さのレベルを変えながらシーンを示すために使用される場合には、ユーザーがドットにズームするとそれはグラフに変り、ユーザーがグラフにズームすると、そのデータポイントは追加的なグラフになってユーザーがより詳細なものをみるために孔を掘り下げることができるようになっている。グラフ編集システムは、単一データポイントの表現と、親シーン自身と同じ程度に普遍的にもなるデータポイント用のあらゆる任意の表現とを編集する便宜的方法を提供する。
【０１０５】
ワームホールの数学について次に説明する。ワームホールは、ユーザーが１つのシーンのウインドウを通して別のシーンを覗けるようにする特別なオブジェクトである。図１３は、この効果を図解し、目標シーンに合わせて複合ズーム係数がどのように計算されるのかについて示している。
【０１０６】
図１３は、ワームホールを示しているが、これはハイパーリンクの１つの型式であって、ユーザーに、ハイパーリンクを介してコンテクストの情報を渡すと同時に、ハイパーリンクを介して反対側を見せるようにしている。ハイパーリンクの反対側が観察できるので、この反対側はユーザーにとって「透けている」ことになる。図１３では、ワームホール４９０は、第１シーン４９２から第２シーン４９４へのウインドウとして示されている。従来型のハイパーリンクがステートレスであるのに対し、ワームホール４９０は、ステート情報を提供する。ユーザー位置４９１からの、第１シーン４９２に対する第１高度（elev1）４９６と第２シーン４９４に対する第２高度（elev2）との間の関係は、以下の式で表される。
0004177531.tif 000005
本例では、ズーム係数はそれぞれ倍率係数を表す。又、ズーム係数は関係する高度パラメータに関して逆比例する値である。例えば、１００％のズーム係数では、高度パラメータは１となるが、一方ズームウインドウが２００％の場合には、高度パラメータは０．５となる。
【０１０７】
ワームホールウインドウは、シーンに対して定義されているパラメータの値を設定する。ワームホールウインドウは又、目標シーンを拡大することのできるあるタイプのレンズとしての役割も果たす。ワームホールの目標シーンは、同じシーンを反復的に表示するためには、ソースシーンと同じであってよい。ワームホールに適用される増加するズーム係数は、データの密集域の混乱状態を低減するために、或は倍率を追加して詳細さのレベルを増やすために利用できるので、これは格別有用である。ワームホールは反復限界を定義するパラメータを有するので、反復が無限に続くことはない。
【０１０８】
ユーザーは、より多くの情報を求めて「穴を開ける」ために、そしてまたオブジェクトを目標シーンで「起動させる」ために、ワームホールを抜けてジャンプすることができる。これにより、ズーム率増大の影響が排除されるだけでなく、第１シーンのオブジェクトに使用されるメモリーも開放される。ユーザーがマウスを使用して、ワールドをナビゲートし、オブジェクトと対話すると、通知イベントが生成されて、これが動作をトリガすることになる。動作は、デザインタイムにディベロッパにより決められており、次の２つのオプション段階（順番通り）、即ち、シーン及び／又はグローバルパラメータの値を設定する段階と、活動を実行する段階とから成る。
【０１０９】
ワームホールは、オブジェクトインスペクターのリストに掲載されているSceneParametersオブジェクトを介してシーンパラメータの値について制御を行う。SceneParametersオブジェクトは、ワームホールの子オブジェクトであり、各パラメータに関するプロパティを保有している。目標シーンがパラメータ化されていなければ、SceneParametersオブジェクトは、オブジェクトインスペクターに表示されない。この値は、オブジェクトに保有され、ランタイムにシーンのプロパティを設定するために使用される。
【０１１０】
３タイプのパラメータが照会のランタイム値を駆動し、更に種々のユーザーコンテクスト変数、即ちグローバルパラメータ、シーンパラメータ、照会パラメータのモニターと制御をも行う。グローバルパラメータは、ランタイムのユーザーに、コンテナアプリケーションとして設定又はモニターされるべきプロパティとして提示される。更に、組み込み型グローバルパラメータ、即ち、UserX（ユーザーの中心からの現在の横方向オフセットをインチ幅で追跡又は設定する）、UserY（ユーザーの中心からの現在の縦方向オフセットをインチ幅で追跡又は設定する）、UserZoom（ユーザーの現在のズーム（倍率）レベルを追跡又は設定する）、及びUserClass（ユーザーのプロファイルクラス名を保有する）を利用することもできる。
【０１１１】
照会パラメータは、照会が実行される前にデータソースにより設定される。シーンパラメータはワームホール又はイベント行為により設定される。それらは、次の属性、即ち、
名前−パラメータ識別子
データタイプ−値タイプ
ディスクリプション−内部での文書利用に入手可能
デフォルト値−ワームホールのSceneParameters子オブジェクト又はイベント行為により設定されない場合に使用される値。デフォルト値が入手できなければシーンは見ることができない。
を有する。
【０１１２】
ユーザークラスは、バーチャルワールドの動作又は外見をユーザーのアイデンティティに基づいてカスタマイズするために使用することができる。例えば、売上予測に対するワームホールは販売職員と管理職社員にしか見えないようにするとか、病院の間取り図のレイアウトでは、管理者向けには空きベッドを強調表示するのに対し、心臓専門医向けには心臓病患者のベッドを強調表示するなどしてもよい。全ての新しいワールドのデフォルトユーザークラスは「匿名」である。
【０１１３】
ワールドにとっての現在のユーザークラスは、UserClassグローバルパラメータに記憶される。プロパティ値或はイベント方法は、UserClass変数がclass＿nameユーザークラスのメンバーであるかどうか次第で、真の値か偽の値を戻すIsUser（class＿name）プロパティ関数を使用することにより、現在のユーザークラスに基づくものとなる。標準的なブール式は、直接比較用又は表示用のUserClassパラメータも保有できる。
【０１１４】
ユーザークラスは、クラスを更に精製するためにサブクラスに分けられる。ある１つのクラスのユーザーサブクラスは、別のクラスのサブクラスであってもよいので、その結果、ユーザークラスは柔軟で多数の継承性を持つ階層となる。あるユーザークラスがユーザーによって削除されても、２つ以上の他のユーザークラスのサブクラスとして存在する場合、ユーザーはユーザークラスの全出現を消去するか否か、或は選択されたインスタンスだけを消去するかを問われることになる。
【０１１５】
これより図１４について説明するが、ここではワームホールのオブジェクトモデルがより詳しく示されている。VcSceneクラス５００は、視認域に表示される全グラフィカルオブジェクトに対する描画層（キャンバス）の輪郭を定める。VcScene５００は、シーン内に含まれているノードのプロパティによって参照されるパラメータのセットを提供する。当該シーンがレンダーされる前に、各パラメータは設定されねばならず、同様のやり方で、関数に対する引数は関数が呼び出される前に設定されねばならない。次に、ワームホール設定ノードは、ワームホールを通してシーンが見えると、計算された設定を各シーンパラメータに供給する。
【０１１６】
VcSceneクラス５００は、VcParameterクラス５０２のメンバーであるプロパティと、VcDrawingNodeベースクラス５０４から導き出されたノードのリストを有する。VcParameter５０２は、名前とデータタイプを始めとするシーンパラメータについての情報を記憶し、一方VcDrawingNode５０４は、シーンのコンテンツを表現する全形態及び論理ノードのための抄録ベースクラスである。VcDrawingNode５０４は、一定でも計算されてもよいプロパティを保有する。計算されたプロパティは１つ又はそれ以上のシーンパラメータに依存する。
【０１１７】
VcDrawingNode抄録ベースクラス５０４は、今度はVcShapeNode５０６に継承されるが、これは更にVcWormhoeNode５０８に継承される。VcShapeNode５０６は、全視認ノードタイプ用の抄録ベースクラスである。VcShapeNode５０６の導き出されたクラスは、形態の各タイプの特定の属性及び動作を実行する。VcWormholeNode５０８は、別のシーンにリンクするシーンの形態ノードのクラスである。それは、シーンがレンダーされる前に全シーンパラメータの値を設定するための設定用ノードに対するポインタを保有している。
【０１１８】
VcWormholeNode５０８は、VcWormholeSettingNode５１２クラスのメンバーであるm＿sceneParameterSettingsプロパティを有する。VcWormholeSettingNode５１２は、接続シーンのパラメータ毎にワームホール特定の設定を保持する論理ノードのクラスである。これらの設定は、数値を計算されて、シーンがワームホールにレンダーされる前に当該シーンに渡される。
【０１１９】
VcWormholeSettingNode５１２も又VcLogicNode５１０から導き出されるが、このVcLogicNode５１０はVcDrawingNode５０４から導き出されるものである。VcLogicNode５１は、形態ノードとユーザーの間の関係を定義するノードのための抄録ベースクラスである。
【０１２０】
図１５及び１６は、模範的なワームホールの使い方を示している。図１５には４つのワームホール、即ち、ポートフォリオリスク管理ワームホール７００、市場データワームホール７１０、考慮中の投資ワームホール７２０、ファーストコールアナリスト推薦ワームホール７３０が示されている。ポートフォリオリスク管理ワームホール７００は、当該シーンの第３レベル画面を表示する３つの詳細なワームホール７０２、７０４、７０６とチャート７０８を示している。この３つの詳細なワームホール７０２、７０４、７０６は各々、３種類の別個のファンド又はポートフォリオに関連する金融動向を示す。その上、ある１つのファンド又はポートフォリオを代表する１つのワームホールから生じる所与のシーンの画面は、別のファンドを代表する別のワームホールから生じる同じシーンの画面とは異なる。このようなわけで、例えば、ポートフォリオリスク管理ワームホール７００に穴を開け、ファンド７０２、７０４、７０６の１つを通って更に特定のポートフォリオ内の会社に行き当たるまで穴を掘り下げてゆけば、コンテクスト情報は穴を開ける都度累積されていくので、当該会社の最終的な画面は特定のファンド又はポートフォリオに対する関係で生成されることになる。その情報にはそのファンドにより保有される会社の株式の量や、会社の株主である期間、その他が含まれる。
【０１２１】
図１６の各ワームホールに表現されているシーンは、関数に対する引数に類似した方法で、company＿IDでパラメータ化される。本例では、シーンそれ自体がユーザーが何の会社を見ているかを特定する引数を有しており、当該シーンは従ってカスタマイズされる。従って、ユーザーがこれらのワームホールの何れかを通して見るときには、シーンはユーザーが見ている特定のワームホール独自の姿をしているので、そのシーンは違って見える。
【０１２２】
先に述べたように、本システムは、プログラミングの専門知識無しでも、データをダイナミックに見ることができるようにしている。ユーザーは、このようにして、データに近づくことができるので、アプリケーション開発時間が短縮される。ユーザーインターフェースは、情報豊富なデータベースに関して、そしてデータ保管とデシジョンサポートのようなアプリケーションに関して素早く容易に創造できる。更に、従来型のフォームベース若しくはレポートベースのアプリケーションについてまわる制限は回避される。
【０１２３】
その上、ここに説明した技法は、ハードウェア又はソフトウェアで実行してもよいし、或は両方を組み合わせて実行してもよい。この技法は、１台毎にプロセッサと、プロセッサが読み込み可能な記憶媒体（揮発性、非揮発性メモリ及び／又は記憶エレメントを含む）と、適切な入出力装置とを含んでいる、プログラム可能なコンピュータ上で実行するコンピュータプログラムで実行するのが望ましい。プログラムコードは、入力機器を使用して入力されるデータに適用され、説明済みの関数を実行し、出力情報を生成する。出力情報は、１つ又はそれ以上の出力装置に適用される。
【０１２４】
各プログラムは、コンピュータシステムと通信するために、高レベルの手順言語又はオブジェクト指向プログラム言語で実行することが望ましい。しかしながら、本プログラムは、必要に応じアッセンブリ言語若しくは機械言語で実行することもできる。何れの場合でも、言語はコンパイル又は翻訳された言語である。
【０１２５】
このような各コンピュータプログラムは、上記手続きを実行するためにコンピューターが読み込めば構成、作動できるような、汎用或は特殊用途のプログラム可能なコンピュータが読み出すことのできる記憶媒体若しくは記憶装置（例；ＣＤ−ＲＯＭ、ハードディスク、又は磁気ディスケット）に記憶されることが望ましい。本システムはまた、コンピュータープログラムにより構成された、コンピュータが読み出し可能な記憶媒体としても実行できるが、その場合には、そのように構成された記憶媒体がコンピュータを特定且つ事前に指定された方法で作動させることになる。
【０１２６】
他の実施例は、先の請求項の範囲にある。
【図面の簡単な説明】
【図１】１つ又はそれ以上のワールドを編集するための、多文書インタフェースである。
【図２】オブジェクトインスペクターを示す図である。
【図３】アブストラクトベースクラスVcPropertyBagのプロパティオブジェクトモデルを示す線図である。
【図４】２バイトコード実行クラスである、VCStmtCreatShape及びVcStmtSetPropertyを示す線図である。
【図５】サンプル構文解析型プロパティ関数を示す線図である。
【図６】シーンからのコード生成プロセスのオブジェクトモデルを示す線図である。
【図７】プロパティシート入力プロセスを示すフローチャートである。
【図８】オブジェクトを目に見えるように操作するためのプロセスを示すフローチャートである。
【図９】バイトコード生成用のプロセスを示すフローチャートである。
【図１０】ノード向けのバイトコード実行ステートメントを入手するためのプロセスを示すフローチャートである。
【図１１】バイトコードを実行するためのプロセスを示すフローチャートである。
【図１２】グラフ編集システムを示す線図である。
【図１３】ワームホールを示す図である。
【図１４】ワームホールのオブジェクトモデルを示す線図である。
【図１５】ワームホール使用法の１例を示す図である。
【図１６】ワームホール使用法の別の例を示す図である。
【符号の説明】
１０  ワールドマネジャーウインドウ
１２，１４，１６，４０  コントロールバー
１８  ツリーコントロール
２０  プロジェクト作業空間
２２  エディタウインドウ
２４  出力ウインドウ
３０  オブジェクトインスペクター
１００  名前列
１１０  プロパティ列
１１２，１１４，１１６，１１８，１２０，１２２，１２４，１２６  プロパティ
２００  VcPropertyBag
２０２，４００，５００  VcScene
２０４，４０２，５０４  VcDrawingNode
２１０  VcProperty
２１２，２１８，３００，３２２  CString
２１４，３２４  VcPropertyPath
２１６，２２２  VcPropertyValue
２２０  VcFunction
３０２  バイトコード
３０４  VcShapeFactory
３０６  VcShape
３１０  疑似コードブロック
３２０  VcStmtSetProperty
３２６  VcStmtSetStringProperty
３２８  VcSftn
３３０  ３２６のバイトコード
３５０  VcStmtSetStringProperty関数
３５２  テキスト１
３５４  ３５０のプロパティ経路値
３６０，３６２  VcSftnConcatenate
３６４，３８０  VcSftnLookup関数
３６６，３７２  文字列
３７０  VcSftnConcatenate関数
４０４，５０６  VcShapeNode
４０６  VcDataNode
４０８，５１０  VcLogicNode
４１０  VcCGMethod，VcDataSource
４１２  VcQueryDataSource
４１４  VcQuery
４１６  VcColumn
４１７，５０２  VcParameter
４２０  VcStmt
４２２，４２４，４２６，４２８，４３０  バイトコードステートメント
４８０  シーングラフ
４８２，４８４  画面
４８５  画像
４８６  ウインドウ
４９０、７０２、７０４、７０６  ワームホール
４９２，４９４  シーン
４９６，４９８  高度
５０８  VcWormholeNode
５１２  VcWormholeSettingNode
７００  ポートフォリオリスク管理ワームホール
７０８  チャート
７１０  市場データワームホール
７２０  考慮中の投資ワームホール
７３０  ファーストコールアナリスト推薦ワームホール
【図１】
0004177531.tif 000006
【図２】
0004177531.tif 000007
【図３】
0004177531.tif 000008
【図４】
0004177531.tif 000009
【図５】
0004177531.tif 000010
【図６】
0004177531.tif 000011
【図７】
0004177531.tif 000012
【図８】
0004177531.tif 000013
【図９】
0004177531.tif 000014
【図１０】
0004177531.tif 000015
【図１１】
0004177531.tif 000016
【図１２】
0004177531.tif 000017
【図１３】
0004177531.tif 000018
【図１４】
0004177531.tif 000019
【図１５】
0004177531.tif 000020
【図１６】
0004177531.tif 000021