(57)【要約】      （修正有）【課題】トポロジおよびナビゲーションパスを利用してアプリケーション内でナビゲーションを規定することを容易にする。【解決手段】トポロジは、受信するメタデータ基づいて作成され、ノードオブジェクトとリンクオブジェクトのネットワークである。ナビゲーションパスは、トポロジ上の逐次的なリストで、そのサブグラフを表す。規定コンポーネント１０２は、トポロジおよびナビゲーションパスを、ランタイムの間のナビゲーション（例えば、探索）の間に、アプリケーション１０４が、規定ナビゲーションを利用することができるように作成することができる。【選択図】図１
2006190261.tif 000002
【特許請求の範囲】
【請求項１】
受信したメタデータに基づいて、ノードオブジェクトおよびリンクオブジェクトのネットワークであるトポロジを作成するトポロジコンポーネントと、
前記トポロジにわたるリンクの逐次的リストであるナビゲーションパスを作成して、そのサブグラフを表すナビゲーションコンポーネントであって、前記トポロジとナビゲーションパスは、ナビゲーションのランタイムの間、アプリケーションによって利用されるナビゲーションコンポーネントと
を備えたことを特徴とするアプリケーションの開発を容易にするためのシステム。
【請求項２】
前記トポロジおよびナビゲーションパスは、アプリケーションの設計を行う間にメタデータを用いて作成されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記ノードオブジェクトは、別のノードに対するリンクリストおよび関連データコンテンツを含むビゲーションの状態を表すことを特徴とする請求項１に記載のシステム。
【請求項４】
前記ノードオブジェクトは、少なくとも次のうちの１つ、すなわちエンティティ、エンティティキューブ、クエリ、タスク、およびプロバイダからクエリ可能な情報源のうちの１つであることを特徴とする請求項１に記載のシステム。
【請求項５】
前記リンクオブジェクトは、次のうちの１つ、すなわちソースおよび相手先ノードへの参照、ならびに相手先ノードに対するアクセスを提供するプロバイダへの要求のうちの１つを行うことを特徴とする請求項１に記載のシステム。
【請求項６】
ルートノードを識別し、サブグラフを削減することにより前記トポロジから前記ナビゲーションパスを作成するモデルエディタをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項７】
ナビゲーションパス式を用いて、前記トポロジ内のノードをフィルタリングすることにより、前記ナビゲーションパスを作成するフィルタをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項８】
前記ナビゲーションパス式は、アプリケーションの設計を行う間に、トポロジおよび関連コードに基づいて作成されるオブジェクトモデルであることを特徴とする請求項７に記載のシステム。
【請求項９】
前記ナビゲーションパスは、ナビゲーションルートを記述するメタデータの集合として維持され、その際に、前記メタデータの集合を利用して、強く型付けされる方法で組み立てられるナビゲーションパス式を含むコードを生成することを特徴とする請求項１に記載のシステム。
【請求項１０】
前記トポロジを手動作成するユーザインターフェースツールをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項１１】
エンティティグラフ、ビジネスインテリジェンスメタデータ、およびビジネスインテリジェンスジャーナルのうちの少なくとも１つを利用して、自動的に前記トポロジを作成する自動コンポーネントをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項１２】
クライアントアプリケーションと少なくとも１つのナビゲーションパスプロバイダとの間の通信を管理して、設計時において前記トポロジメタデータの作成を可能にするナビゲーションパスプロバイダインフラストラクチャをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項１３】
前記ナビゲーションパスプロバイダインフラストラクチャは、ナビゲーションパスサービスを提供し、変換および／または情報抽出機構を通して、コンテキストノードにアクセスするナビゲーションパスプロバイダを含むことを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記情報抽出機構は、次のうちの少なくとも１つ、すなわちエンティティのためのメタモデルプロバイダ、ビジネスインテリジェンスのためのドリル機能、操作のためのタスク、およびナビゲーションパスプロバイダからクエリ可能である情報のうちの少なくとも１つであることを特徴とする請求項１３に記載のシステム。
【請求項１５】
次のうちの１つ、すなわちナビゲーションの履歴を記録するジャーナル、およびメタデータにより駆動されるユーザインターフェースに対するバインディングを可能にするユーザインターフェースバインディングのうちの１つをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１６】
請求項１に記載するコンポーネントを格納することを特徴とするコンピュータ読取可能媒体。
【請求項１７】
アプリケーション内でナビゲーションを規定することを容易にするコンピュータ実装方法であって、
メタデータを受信するステップと、
前記メタデータに基づいてトポロジを作成するステップと、
前記トポロジのサブグラフをナビゲーションパスとして確立するステップと、
前記強く型付けされるナビゲーション式のためのナビゲーションパスをコード生成するステップと、
前記ナビゲーションパスおよび前記トポロジを、アプリケーションのための規定ナビゲーションとして利用するステップと
を備えたことを特徴とするコンピュータ実装方法。
【請求項１８】
前記トポロジは、トラバース可能なオブジェクトとパスのサブセットを表すノードオブジェクトとリンクオブジェクトのネットワークであり、前記ナビゲーションパスは、トポロジにわたるリンクの逐次的リストであることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記トポロジコンポーネントと前記ナビゲーションコンポーネントとの間を通信するデータパケットであって、請求項１７に記載の方法を容易にすることを特徴とするデータパケット。
【請求項２０】
アプリケーション内でナビゲーションを規定することを容易にするコンピュータ実装システムであって、
メタデータを受信するための手段と、
前記メタデータに基づいて、トポロジを作成するための手段と、
前記トポロジのサブグラフをナビゲーションパスとして確立するための手段と、
強く型付けされるナビゲーションパス式のためのナビゲーションパスをコード生成するための手段と、
前記ナビゲーションパスおよび前記トポロジをアプリケーションのための規定ナビゲーションとして利用するための手段と
を備えたことを特徴とするコンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にコンピュータプログラミングに関し、特に、アプリケーション開発を容易にするシステムおよび方法に関する。
【背景技術】
【０００２】
ビジネス上の手続きおよび／または予測を能率化するため、ビジネスアプリケーションプログラムを複数の産業に提供する傾向が続いている。ビジネスアプリケーションソフトウエアは、陽におよび／または暗に関連付けられる多様なビジネスデータにわたって、ナビゲートおよび／または探索を提供する。ビジネスアプリケーションは典型的に、圧倒的な量の情報と関連しており、本質的に無限量のこの情報は相互関係を含む。例えば、典型的な中規模マーケットアプリケーションは、伝票、表、在庫品、チャート、グラフなどを含み、大多数のデータは明白にも暗黙にも相互に絡み合っている。具体的には、データ（例えば、請求伝票、従業員名簿、注文伝票など）は、例えば、給与支払申請、売上高解析、出荷申請、賞与報告、原価解析などを含むビジネスアプリケーションとの関連で使用することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一般的に、ビジネスアプリケーション内の膨大な量の情報を発見および／または探索するには、ハイパーメディアシステムを利用する。このようなハイパーメディアシステムは、その中で従来のコンテキストクエリでなくナビゲーションを通じてアクセスと探索を完遂する情報システムである。さらに、このようなシステムは、アプリケーションの内部または外部のアプリケーションおよびリソースに対してリンクを作成して維持する。これらのリンクにより、ユーザはクエリ結果に関連する追加情報を取り出すことができる。例えば、消費者名のリストに関するクエリは、特定顧客に関する注文のリストを取り出す別のクエリに対するリンクも提供する。
【０００４】
ハイパーメディアシステムに伴う一つの利点は、複合的で相互参照される情報の本体を、ノードとリンクのネットワーク（例えば、レコードを互いにツリー構造でリンクする階層データベースモデル）として格納する能力である。ナビゲーションの範囲内でクエリを発行することは、データアクセスに関するクエリおよび相互関係に関するクエリと定義することができる。例えば、データアクセスに関するクエリを、リソースがデータである特定の型のノードに対するデータアクセスを提供するために利用することができる。これに対し、相互関係に関するクエリは、例えば、メタデータおよび／またはキーワードに基づいてデータの相互関係を提供する。言い換えると、用語「クエリ」は、データ（例えば、プロジェクトデータ）を入手することを指すが、これに対し用語「ナビゲーション」は、関連データ（例えば、プロジェクトの関係およびデータ）を入手することを指す。データ間の関係をナビゲーション投影して把握することは、データの「非線形」探索と呼ばれる。
【０００５】
ハイパーメディアシステム内でデータを非線形探索する間、ユーザは概して、膨大な認識オーバーヘッドにより迷ったり方向感覚を失ったりすることがある。本質的にユーザは、ナビゲーションデータ探索の間に発見される膨大な量の関連リンクに圧倒されてしまう。その上、ハイパーメディアシステム内でのナビゲーションは、従来ランタイム間に行われて来た。コードの大部分は必須であって、単一用途のモジュールをもたらし、転じてこれらはランタイムの間に、極めて効率が悪く遅いアプリケーションを生じる結果となっている。
【課題を解決するための手段】
【０００６】
以下では、本発明のいくつかの態様を基本的に理解するため、本発明の簡単な要約を提示する。この要約は、本発明の広範な概観ではない。本発明のキーまたは重要な要素を確認するものでも、本発明の範囲を線引きするものでもない。この唯一の目的は、本発明のいくつかの概念を簡単な形で、後に提示するより詳細な記述に対する準備として、提示することである。
【０００７】
本発明は、規定ナビゲーションを利用することによりアプリケーションの開発を容易にするためのシステムおよび／または方法に関する。規定ナビゲーションは、受信するメタデータに基づくトポロジを利用する。この場合、トポロジのサブグラフを表すのにナビゲーションパスを採用する。規定コンポーネントは、設計を行う間にデータを受信することができる。この場合、このようなデータはメタデータ（例えば、ビジネスフレームワークに関するメタデータ）であることができる。アプリケーションの設計を行う間に、規定コンポーネントは、受信するデータに基づいて、関連ナビゲーションパス有するトポロジを作成することができる。このトポロジおよびナビゲーションパス（例えば、ＮＰａｔｈ）は、アプリケーション開発を効率化する規定ナビゲーションを、設計を行う間に使用できる。その上、規定コンポーネントは、線形、星形および／またはツリーのようなナビゲーションを提供することができる。
【０００８】
本発明の一態様によると、規定コンポーネントは、ナビゲーションパスプロバイダインフラストラクチャを利用する。このインフラストラクチャは、アプリケーションおよび／またはナビゲーションパスクライアントに対しサービスを提供するナビゲーションパスプロバイダを、少なくとも１つ含む。言い換えると、ナビゲーションパスプロバイダインフラストラクチャは、クライアントアプリケーションと各種ナビゲーションパスプロバイダとの間の通信を管理する。その上、ナビゲーションパスプロバイダ（単数または複数）は、変換および／または情報抽出機構の何れかを通じてコンテキストノードにアクセスする各種のリソースプロバイダであることができる。
【０００９】
本発明のさらに別の態様によると、特定のトポロジは、自動、手動、またはそれらの組合せにより作成することができる。規定コンポーネントは、トポロジ作成において自動的に利用されるデータ（例えば、エンティティグラフ、ビジネスインテリジェンスメタデータ、およびビジネスインテリジェンスジャーナル、…）を受信する。その上、トポロジは、２つのエンティティ間の論理関係を表すリンクを追加するユーザインターフェースツールを用いることにより、手動で作成することができる。さらに、トポロジは、自動技術と手動技術の組合せを用いて作成することもできる。
【００１０】
本発明のさらに別の態様によると、トポロジに基づいてオブジェクトモデルであるナビゲーションパス式を作成することができる。ナビゲーションパス式には要素と、様々なサブツリーを削除または含む機能を提供するフィルタを追加することができる。さらに、ナビゲーションパス式を要素に追加して、ナビゲーションパスをプログラム的に取り除くことができる。さらに、ナビゲーションパスを、ナビゲーションルート（単数または複数）を記述するメタデータの集合として永続させるようなコードを生成できる。メタデータの集合は、コードの作成に利用することができる。この場合、ナビゲーションパス式は、強い型付き方法で組み立てることができる。
【００１１】
本発明のさらに別の態様によると、規定コンポーネントは、コンピュータソフトウェア間通信を提供するナビゲーションパスクライアントのアプリケーションプログラムインターフェース（ＡＰＩ）と相互作用をする。このナビゲーションパスＡＰＩは、ユーザインターフェース（ＵＩ）バインディングを利用できる。このＵＩバインディングは、ＮＰａｔｈ要素、または呼び出されるノードと、ユーザインターフェースコンポーネントとの間のバインディングを可能にし、メタデータにより管理される。さらに、ナビゲーションパスクライアントＡＰＩは、アプリケーションに関するナビゲーションの履歴を記録するジャーナルを利用することができる。ジャーナルは、利用されるナビゲーションパスに無関係にナビゲーションの履歴を記録する。したがって、トポロジ内の複雑なナビゲーション履歴は、アプリケーション内のデータの様々な詳細およびデータのナビゲーション（例えば、発見すること）に対する様々な洞察を提供する。ジャーナルは、アプリケーションに規定ナビゲーションを提供する、トポロジの基盤として利用することができる。
【発明を実施するための最良の形態】
【００１２】
以下の記述および添付図面は、本発明のある例証的な側面を詳細に記述する。これらの側面は、しかしながら、本発明の原理が採用される方法を少数だけ表示するのみで、本発明は、これら側面およびそれらの等価物のすべてを含むことを目的とする。本発明のその他の利点および新規の特徴は、図面との関係で考察するとき、以下の詳細説明により明らかになるであろう。
【００１３】
本出願書において使用するとき、用語「コンポーネント」、「システム」等は、ハードウエア、（例えば、実行中の）ソフトウエアおよび／またはファームウエア何れかのコンピュータ関連実体を指すことを意味する。例えば、コンポーネントは、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行可能体、プログラムおよび／またはコンピュータであることができる。例として、サーバ上で実行しているアプリケーションおよびサーバは、コンポーネントであることができる。１つまたは複数のコンポーネントは、プロセス内に存在することが出来、コンポーネントは、１つのコンピュータ上に局在するかおよび／または２つ以上のコンピュータの間に分散させることができる。
【００１４】
本発明を、図面を参照して記述する。ここで、全体にわたって、同じ参照番号は同じ要素を指す。以下の記述において、説明上の目的で、本発明を徹底的に理解するために多数の特別な詳細項目が提供されている。しかしながら、本発明は、これらと区別な詳細項目無しで実用されうることは明白である。別の例においては、公知の構造および装置が、本発明の記述を容易にするため、ブロック図の形で示される。
【００１５】
図１に、規定ナビゲーションを用いることにより設計を行う間のアプリケーション開発を容易にするシステム１００を示す。規定コンポーネント１０２は、設計を行う間にメタデータ（例えば、ビジネスコンポーネントに関するメタデータ）でありうるデータを受信することができる。アプリケーション（単数または複数）１０４の設計の間に、規定コンポーネント１０２は、受信するデータに基づいて、関連ナビゲーションパス有するトポロジを作成することができる。このトポロジおよびナビゲーションパス（例えば、Ｎｐａｔｈ）は、アプリケーション開発を能率化する規定ナビゲーションを設計時において使用できる。トポロジは、例えば、一意の名前を持つリンクコレクションの、メタデータインスタンスであることができる。ここで、このリンクコレクションは、ノードとリンクオブジェクトのネットワークであり、このネットワークは、メタデータモデルにおけるパス内のトラバース可能オブジェクトのサブセットを表す。このようなノードまたはリンクは、戻って元のメタデータを参照することができる。
【００１６】
規定コンポーネント１０２によりトポロジが作成されると、ナビゲーションパスが使用される。このナビゲーションパスは、特定のアプリケーション（単数または複数）１０４の情報トポロジをナビゲートする作用の集合である。このナビゲーションパスはトポロジ上のリンクの逐次的リストであって、受信するデータから作成される一般トポロジのサブグラフを表す。ナビゲーションパスのコンテンツがグラフを定義する一方で、リスト内のリンクオブジェクトの物理的順序は、線形ナビゲーションパスを表す。アプリケーション１０４は、式を用いてトポロジ内のノードをフィルタすることにより、ナビゲーションパスを用いことができることは理解される筈である。さらに、このようなナビゲーションパスは概して、ルートノード、次の機能（例えば、ナビゲーションパス内の次のノードの探索）をサポートする順序、ユーザインターフェース（ＵＩ）プレゼンテーションバインディング、およびナビゲーション型（例えば、線形，星形、またはツリー）の概念を含む。
【００１７】
ナビゲーションパス有するトポロジは、関連リンクを伴う各種のノードを含む。ノードは、ナビゲーションの状態を表すオブジェクトで、ナビゲーション時の他のノードへのリンクおよびデータコンテンツのリストを含む。トポロジ内のノードとナビゲーションパスは、これらに限定されないが、コンテンツが提供されるＥｎｔｉｔｙまたはＥｎｔｉｔｙＣｕｂｅ（後述）のようなモデル要素と関連させることができることは理解される筈である。各ノードは、特定のノードに結合されるデータであるノードコンテンツを含む。さらに、ノードに結合するデータは特定のノードに限定されないことは理解される筈である。例えば、データ「Ａ」は、ノード「Ａ」およびノード「Ｂ」に結合することができる。その上、ノードコンテンツは、エンティティ，ＥｎｔｉｔｙＣｕｂｅ、および／またはアクセスに際してデータのコレクションまたは単にリソースを返すクエリであることができる。これらのノードコンテンツは、値と型の情報をさらに提供し、型コンテンツは、ノード値を抽出するとき、実行時に動的に割り当てられる。ノード間のリンクは、互いに相互関連する。リンクは、統一リソース識別子（ＵＲＩ）およびソースと相手先ノードに対するリファレンスを収容することができる。リンクオブジェクトは、関連したエンドノードと同様に、インスタンス化される。
【００１８】
データに基づいて作成されるトポロジおよびナビゲーションパスは、アプリケーション（単数または複数）１０４内で規定ナビゲーションの使用を容易にする。規定ナビゲーションは、設計を行う間に、発見プロセスを実行時から設計時に移動する。受信するデータとナビゲーションパスに基づくトポロジを使用することにより、アプリケーション開発者はナビゲーションパスをエンドユーザのために規定して、エンドユーザがアプリケーション（単数または複数）１０４のコンテンツを通してナビゲートするようにすることができる。したがって、規定コンポーネント１０２により作成されるトポロジおよびナビゲーションパスは、ユーザにあてどなくパス上をたどらせるのではなく、特定のパス内でデータの探索／発見／検索を規定することで、アプリケーション（単数または複数）１０４の開発を容易にする。アプリケーション１０４は、これらに限定されないが、ビジネスアプリケーション、コンピュータ読取可能媒体上のアプリケーション、ビジネスフレームワーク内のアプリケーションなどであることができることは理解される筈である。
【００１９】
図２は、規定ナビゲーションおよび／または関連データ範囲内のデータ探索を用いてアプリケーションの開発を容易にするシステム２００を示す。規定コンポーネント２０２は、アプリケーションの規定ナビゲーションを作成することを容易にするメタデータ（例えば、アプリケーション関連のメタデータ、ビジネスフレームワーク関連のメタデータ）のようなデータを受信することができる。設計時のメタデータに基づいた規定ナビゲーションにより、アプリケーション開発者はナビゲーションビューを用いた能率的な開発を行うことができる。さらに、トポロジ内の規定ナビゲーションパスを利用することにより、複数のアプリケーションのためのモジュール再利用性が提供される。規定コンポーネント２０２は、データ間の関係の発見およびそのようなデータポイントをトラバースすることが設計時に行われるように、トポロジおよびナビゲーションパスを作成する。従来のナビゲーション技術は、そのような関係を実行時に発見すること、およびそのようなデータポイントを実行時にトラバースすることを提供する。従って、規定ナビゲーションがアプリケーション開発を容易にするようなアーキテクチャをアプリケーション開発者に提供することが本発明の新規性である。
【００２０】
規定コンポーネント２０２は、アプリケーションに関連するメタデータのようなデータに基づいてトポロジを作成するトポロジコンポーネント２０４をさらに含む。トポロジは、一意にラベルされたリンクコレクション上のメタデータインスタンスであって、少なくとも１つのノードと少なくとも１つとリンクオブジェクトのネットワークである。トポロジコンポーネント２０４は、ノードとリンクオブジェクトのネットワークが、トラバース可能オブジェクトとトラバース可能パスのサブセットを表すように、トポロジを作成する。作成されるトポロジは、特定のアプリケーションコンポーネントに関する概念モデルの反映であることは理解される筈である。
【００２１】
作成に当たって、トポロジは再使用することができる。例えば、トポロジコンポーネント２０４は、データに基づいてトポロジを作成することができる。この場合、このようなトポロジは、１つのアプリケーションおよび／または複数のアプリケーションが再利用することができる。さらに、トポロジは、（例えば、アプリケーションにおいてナビゲーション論理に対して異なるパスを利用することで）アプリケーションの各種部分および／またはコンポーネントにより再利用されうる。一例において、トポロジコンポーネント２０４は、アプリケーション「俸給」とアプリケーション「ボーナス報告」が実質的に同一トポロジを利用するように、トポロジを作成することができる。
【００２２】
トポロジは、ノードおよび関連リンクを含む。ノードはナビゲーションの状態を表すオブジェクトで、少なくとも別のノードに対するリンクリストをデータコンテンツと共に含む。例えば、ノードは、エンティティ、エンティティキューブ、クエリ、タスクおよび別のリソースであることができる。リンクは、ソースおよび相手先ノードに照会する統一リソース識別子（ＵＲＩ）を含む。トポロジコンポーネント２０４は、トポロジを手動でおよび／または自動的に作成することができることは理解されるであろう。したがって、トポロジコンポーネントは、ユーザインターフェース（ＵＩ）に基づいて（例えば、手動で）またはプロバイダ（単数または複数）に基づいて（例えば、自動的に）またはそれらの組合せで、作成することができる。
【００２３】
トポロジコンポーネント２０４は、トポロジを作成して、アプリケーションのため規定ナビゲーションを提供するナビゲーションパスをその上に作ることができるようにする。ナビゲーションパスは、ｎパスコンポーネント２０６により作成される。この場合、ナビゲーションパスは、（例えば、トポロジコンポーネント２０４が作成する）トポロジ上の逐次的なリストで、このようなトポロジのサブグラフを表す。例えば、トポロジは複数のノードおよびリンクから構成することができる。この場合、リンクを介して一連の関連ノードを通る探索は、ナビゲーションパスであることができる。ナビゲーションパスのコンテンツはサブグラフを定義する一方で、リスト内のリンクオブジェクトの物理的順序は、線形ナビゲーションパスを表す。
【００２４】
以下の例は、説明目的のためであって、本発明への制限であるとは解釈しない。トポロジは、トポロジが停留所（例えば、ノード）および接続する道路／街道（例えば、リンク）を含む輸送網であるとして、作成することができる。トポロジ内のナビゲーションパスは、地点「Ａ」から地点「Ｂ」迄の具体的な経路であることができる。このような規定ナビゲーションを作成することで、人々が一地点から別の地点に移動するのを容易にする輸送網の「ガイド付き旅行」が提供される。
【００２５】
ｎパスコンポーネント２０６は、トポロジのサブセットが利用されるように、ナビゲーションパスを作成する。トポロジのサブセットは規定されるけれども、このサブセットはトポロジ全体を含むことができることは理解されるであろう。その上、ｎパスコンポーネント２０６は、構成が少なくとも１つのリンクと少なくとも１つのノードであるように、ナビゲーションパスを作成する。ナビゲーションパスは、ルートノード、次をサポートする順序、ユーザインターフェース（ＵＩ）プレゼンテーションバインディング、およびユーザインターフェース（ＵＩ）バインディングメタデータ（例えば、ソーストポロジから継承するが、上書きすることができる）も含む。さらに、ナビゲーションパスは、複数のナビゲーションおよび／または探索の型（例えば、線形、星形、ツリートラバースなど）をサポートする。各種のナビゲーション型は、実行時にアプリケーションに対して、ナビゲーションパスのアプリケーションプログラムインターフェース（ＡＰＩ）の動作を駆動する。
【００２６】
例えば、線形ナビゲーションは、ノードに対するリンクが線形パスにおいて逐次的である場合に、利用することができる。別の例においては、星形ナビゲーション型を利用することができる。星形ナビゲーションは、ハブアンドスポークとも呼ばれ、中心ノードから外向きに突き出る多数のリンクから構成される。流通経路は、別のノードに対するリンクを介して最終相手先に到達する前に中央ノード（例えば、ハブ）を経由して経路指定される。ナビゲーションパスがサポートする別のナビゲーション型は、例えば、ツリートラバースである。ツリートラバースは、ツリーデータ構造体における各ノードを巡回するプロセスであって、そこでは各ノードに対して逐次的に前進できる。トラバースは、ノードを巡回する順序により特徴付けることができることは理解される筈である。
【００２７】
なおも図２を参照すると、ｎパスコンポーネント２０６は、設計を行う間に、トポロジ内に規定ナビゲーションを準備してナビゲーションパスを作成する。設計を行う間に、ｎパスコンポーネントを利用して、ルートノードを識別しおよび関連グラフ（例えば、リンクおよび／またはノード）を取り除く（例えば、削除する）ことにより、トポロジからナビゲーションパスを作成することができる。さらに、ランタイムの間、アプリケーションは追加のナビゲーションパス（単数または複数）を作成することおよび／または設計時に作成されたナビゲーションパスを利用することができる。アプリケーションがランタイムの間にナビゲーションパスを作成するときは、フィルタを利用して、ランタイム生成ナビゲーションパスを生じるノード（単数または複数）をフィルタする。
【００２８】
規定コンポーネント２０２は、アプリケーション開発を容易にするトポロジとナビゲーションパスを利用して、規定ナビゲーションを提供する。このナビゲーションパス（例えば、トポロジのサブグラフ）を、Ｎが整数であるＮ番目のプロバイダまでの少なくとも１つのプロバイダを含むナビゲーションパス（例えば、ｎパス）プロバイダインフラストラクチャ２０８により追加することができる（例えば、ノードおよび／またはリンクを追加する）。ナビゲーションパスプロバイダは、例えば、変換および／または情報抽出機構（例えば、エンティティに対するメタモデルプロバイダ、ビジネスインテリジェンス（ＢＩ）のための上下左右への掘り進み、タスクオペレーションまたはワークフローなど）を介して、コンテキストノードにアクセスするリソースプロバイダであることができる。
【００２９】
ナビゲーションパスプロバイダ（例えば、プロバイダ１からプロバイダＮ）は、適切な機能をナビゲーションパスプロバイダインフラストラクチャ２０８全体に提供する基本能力を有する。ナビゲーションパスプロバイダは、データコンテキストを提供するノード（単数または複数）を伴うリクエストに対し、データ（例えば、追加されたメタデータ）をもって応答する。ナビゲーションパスプロバイダはまた、返値型の集合（例えば、データセット、オブジェクト、ＸＭＬなど）によって応答する能力も実装する。さらに、（例えば、プロバイダがコンテキストを用いてリンクを作成する）リンクコンテキストおよび（例えば、特定の型のプロバイダに対し独自性を与えている）リンク型のようなリンク作成能力も提供される。
【００３０】
ナビゲーションプロバイダ（例えば、プロバイダ１からプロバイダＮ）は、例えば、セキュリティトークンおよび／またはフィルタ（後述）のような追加の能力を備えることができることは理解される筈である。与えられたセキュリティトークンは、ナビゲーションパスプロバイダを検証および／または認証するため、ナビゲーションパスプロバイダインフラストラクチャ２０８内で採用することができる。例えば、ナビゲーションパスがトポロジのサブセットを代表するものであるとき、トポロジはメタデータに基づいて作成することができる。（例えば、メタデータを含む）ノードに対するデータコンテキストを作成するため、ナビゲーションパスプロバイダは、変換および／または情報抽出機構を用いて、コンテキストノードにアクセスすることができる。しかしながら、セキュリテイ、信憑性、および／または立証を提供するため、ナビゲーションパスプロバイダはセキュリティトークンを利用することができる。
【００３１】
ナビゲーションパスプロバイダインフラストラクチャ２０８は、少なくとも１つのナビゲーションパスプロバイダを含むことができる。この場合、インフラストラクチャ２０８は、クライアントアプリケーションと少なくとも１つのナビゲーションパスプロバイダとの間の通信を管理する。ナビゲーションパスプロバイダインフラストラクチャ２０８は、複数のクライアントアプリケーションと複数のナビゲーションパスプロバイダとの間の通信を管理することは理解される筈である。ナビゲーションパスプロバイダインフラストラクチャ２０８は、プラグ機能、拡張性、および／または型情報が提供されるときナビゲーションリクエストをプロバイダの特定の集合に委譲する委譲能力を備える。しかしながら、型情報が提供されないとき、インフラストラクチャ２０８は、プロバイダ１乃至プロバイダＮに対してリクエストをブロードキャストすることにより、応答を要求する。その上、ナビゲーションパスプロバイダインフラストラクチャ２０８は、トポロジおよびナビゲーションパスをインスタンス化できる。トポロジをインスタンス化することは、ナビゲーションパス式の解決のためであって、ナビゲーションパスは、ランタイムに存在することは理解される筈である。さらにナビゲーションパスを、ナビゲーションルート（単数または複数）を記述するメタデータの集合として永続させるように、コードを生成できることは理解される筈である。このメタデータの集合は、コードの作成に利用することができる。この場合、ナビゲーションパス式は、強く型付けする方法で組み立てることができる。
【００３２】
ここで図３を参照すると、規定ナビゲーションを用いることによって設計を行う間にアプリケーションを開発することを容易にするアーキテクチャ３００が示されている。受信するメタデータに基づいてトポロジおよびナビゲーションパス（例えば、トポロジのサブセット）を作成することにより、能率化されたアプリケーション開発を可能にする規定ナビゲーションを実装することができる。アーキテクチャ３００は、設計ポイントを確立して、これらには限らないが、高度のプラグ機能と拡張性を可能にし、開発者とアプリケーションの必要性と、アプリケーションプログラムインターフェース（ＡＰＩ）の長期安定性に重点を置き、ビジネスフレームワークナビゲーションのための高水準の規定性（ｐｒｅｓｃｒｉｐｔｉｖｅ−ｎｅｓｓ）を提供し、およびビジネスインテリジェンス（ＢＩ）およびエンティティメタデータの価値を最大にする。
【００３３】
アーキテクチャ３００は、作業領域層３０２およびサービス層３０４を含む。サービス層３０４内には、ｎパスコア３０６が含まれ、これはアプリケーションのための規定ナビゲーションの作成を容易にする。ｎパスコア３０６は、トポロジ３０８、セッション３１０、およびインスタンス化３１２をさらに含む。ｎパスコア３０６は、受信するデータに基づいてトポロジ３０８をインスタンス化する。例えば、トポロジ３０８は、メタデータストア（図示せず）に含まれるメタデータに基づいて作成することができる。後に詳細を説明するように、トポロジ３０８は、手動でまたは自動的に若しくはそれらの組合せでも作成することができる。トポロジ３０８をインスタンス化すると、ｎパスコア３０６は、ナビゲーションパス３１４（例えば、ＮＰａｔｈとも呼ぶ）をトポロジインスタンスからインスタンス化３１２を用いることによりインスタンス化する。すなわち、インスタンス化３１２は、トポロジ３０８および／またはナビゲーションパス３１４（例えば、ＮＰａｔｈとも呼ぶ）をインスタンス化することができる。一例において、ナビゲーションパスを、トポロジインスタンスから、ＮＰａｔｈ式とも呼ぶナビゲーションパス式を用いて、インスタンス化することができる。さらに別の例においては、ナビゲーションパスを、ナビゲーションルート（単数または複数）を記述するメタデータの集合として永続させるように、コードを生成できる。このメタデータの集合を、コードの作成に利用することができ、ナビゲーションパス式は、強く型付けする方法で組み立てることができる。また、作成されるナビゲーションパスは、クライアント側とサービス側を有し、この中で、ナビゲーションパス３１４はクライアント側を表し、サービス側に存在する（図示せず）ことは理解される筈である。
【００３４】
さらに、ｎパスコア３０６は、作業領域層内の規定ナビゲーションを考慮して、ｎパスクライアント用のサービスセッションを作成することができる。ｎパスコア３０６は、プロバイダインフラストラクチャ３２４へ要求を委譲するための、ｎパスクライアントに対するサービス層を表すことは理解される筈である。プロバイダインフラストラクチャ３２４は、前述のようにクライアントアプリケーションとナビゲーションパスとの間の通信（例えば、リクエスト／応答、委譲／ブロードキャスト、登録など）を管理するサービス層であることは理解される筈である。
【００３５】
ｎパス３１４は、作業領域層に常駐し、ＮＰａｔｈ３１４（例えば、ナビゲーションパス３１４）は、ジャーナル３１６，パス３１８、式３２０、およびユーザインターフェース（ＵＩ）バインディング３２２を利用することができる。ナビゲーションパスクライアント側３１４は、クライアントアプリケーションのための機能を備える。その機能は、例えば、サービス時のトポロジインスタンスからパスのインスタンスを作成するため、ＮＰａｔｈ式を構成する強く型付けする式を式３２０が含む；メタデータの一部として存続するＵＩバインディング３２２により、ノードとＵＩコンポーネントとの間のナビゲーションコンテキストセンシティブなバインディングを可能にする；パス３１８は、ナビゲーションパス内のリンク上でのナビゲーションを可能にするプログラミングモデルを含む；およびジャーナル３１６は、ユーザナビゲーションおよび／またはそれに関連する履歴を追跡するジャーナル作成機能を提供する；などの機能である。
【００３６】
一実施例において、ジャーナル３１６は、アプリケーション内のユーザナビゲーションを追跡するログおよび／または記録を提供する。アプリケーション内のナビゲーションを規定すること、およびナビゲーション付きトポロジの開発を容易にして、関係の発見とデータポイントのトラバースをより良いものにするために、ジャーナル３１６を利用することができる。例えば、アプリケーション開発を容易にするログおよび／またはレコードが生成されるセッション内に、トポロジ内あるいはトポロジ外から特定のユーザのナビゲーションを、ジャーナル３１６は実行時のアドホックな探索により追跡できる。
【００３７】
図４は、トポロジおよびナビゲーションパスを含む規定ナビゲーションを用いることによりアプリケーションの開発を容易にするシステム４００を示す。トポロジコンポーネント４０２は、自動コンポーネント４０４かまたは手動コンポーネント４０６若しくはそれらの組合せを利用するかの何れかによりトポロジを作成する。自動コンポーネント４０４はデータを受信し、トポロジを作成することができる。リンクおよびノードの形状およびコレクションを、単一のプロバイダおよび／または複数のプロバイダにより判定することができる。例えば、トポロジはエンティティグラフ（例えば、メタデータから直接生成されるトポロジ）から作成することができる。情報管理システム（ＩＭＳ）内でエンティティメタデータを検査することにより、トポロジをエンティティモデルから作成することができる。エンティティ型はノードであり、この場合、関連付けと構成がこのようなノードの間のリンクを形成することは理解される筈である。ビジネスエンティティプロバイダは、これらのノードおよびリンクに対し責任を有する。
【００３８】
別の例において、トポロジはビジネスインテリジェンス（ＢＩ）データから自動的に作成することができる。したがって、キューブ、次元、および尺度はノードであり、さらにビジネス基準インスタンス（例えば、多次元式（ＭＤＸ）ステートメント）もノードある。上述のノードの間のリンクは、例えば、上下左右の掘り進みであることができ、それらは少なくとも１つのビジネスインテリジェンス（ＢＩ）プロバイダにより実装される。自動的に作成されるトポロジも、ビジネスインテリジェンス（ＢＩ）メタデータとエンティティメタデータとの間の関係を包含することは理解される筈である。さらに、異なる例において、自動コンポーネント４０４は、ビジネスインテリジェンス（ＢＩ）ジャーナルに基づいて、トポロジを作成することができる。このジャーナルは、これに限定されないが、重複エントリを除去してジャーナルを変換することによりトポロジが作成されるような、ナビゲーションサービスに対し提供されうる。
【００３９】
手動コンポーネント４０６は、ユーザインターフェースツールを介してユーザ入力を受信して、トポロジを手動で作成および／または変更することができる。例えば、次のコードを用いて、２つのエンティティ間の論理的関連付けを表すリンクを追加することができる。
Topology myTopology = new Topology("myTopologyName", typeof(Order));
／／ＯｒｄｅｒとＣｕｓｔｏｍｅｒとの間にリンクカテゴリ「Ｅｎｔｉｔｙ」でリンクを追加
myTopology.AddLink(typeof(Order), typeof(Customer), "Entity");
／／ＯｒｄｅｒとＯｒｄｅｒＬｉｎｅとの間にリンクカテゴリ「Ｅｎｔｉｔｙ」でリンクを追加
myTopology.AddLink(typeof(Order), typeof(OrderLine), "Entity");
／／ＯｒｄｅｒＬｉｎｅとＰｒｏｄｕｃｔとの間にリンクカテゴリ「Ｅｎｔｉｔｙ」でリンクを追加
myTopology.AddLink(typeof(OrderLine), typeof(Product), "Entity");
／／ＯｒｄｅｒとＳａｌｅｓＥｎｔｉｔｙＣｕｂｅとの間にリンクカテゴリ「ＤｒｉｌｌＵｐ」でリンクを追加
myTopology.AddLink(typeof(Order), typeof(SalesEntityCube), "DrillUp");
／／ＳａｌｅｓＥｎｔｉｔｙＣｕｂｅとＰｒｏｄｕｃｔＥｎｔｉｔｙＣｕｂｅとの間にリンクカテゴリ「ＤｒｉｌｌＡｃｒｏｓｓ」でリンクを追加
myTopology.AddLink(typeof(SalesEntityCube), typeof(ProductEntityCube), "DrillAcross");
…
／／トポロジをサーバ側に保存
myTopology.Save();
【００４０】
上のコードは、Ｏｒｄｅｒ型のルートノード有する「ｍｙＴｏｐｏｌｏｇｙＮａｍｅ」の名のトポロジを作成する。コード全体を通じて、ノード間に各種のリンクが追加され、次いでトポロジがサーバ側に保存される。上のコードは注釈付きで、そのような注釈は先頭に「／／」があることは理解される筈である。
【００４１】
手動コンポーネント４０６および自動コンポーネント４０４は、トポロジを作成するため連携して利用することができることは理解される筈である。例えば、トポロジを上述の技術に基づいて自動的に作成することができるけれども、ユーザはユーザインターフェースを利用して自動的に作成されたトポロジを編集することができる。こうして、個人に対し特別に合わせるよう、トポロジのカスタマイズが可能であり、かつ利用できる。
【００４２】
作成されるトポロジは、次いで、ｎパスコンポーネント４０８を用いてナビゲーションパスを作成することに利用される。作成されるナビゲーションパスは、トポロジ上のリンクの逐次的リストで、（例えば、自動コンポーネント４０４により自動的に作成される、手動コンポーネント４０６により手動で作成される、またはそれらの組合せで作成される）トポロジのサブグラフを表す。ナビゲーションパスを、存続するジャーナルを利用して作成することができること、このときジャーナルは自動的におよび／または手動で利用されることは理解される筈である。ｎパスのコンテンツがグラフを定義する一方で、リスト内のリンクオブジェクトの物理的順序は、線形ナビゲーションパスを表す。さらに、ナビゲーションパスおよびトポロジパスは、アプリケーション内で規定ナビゲーションを利用することで、アプリケーション開発を容易にする。
【００４３】
図５は、アプリケーション内でナビゲーションを規定することを容易にするシステム５００を示す。ｎパスサービス５０２は、規定ナビゲーションパスが判定されている場合に、ナビゲーションパス（単数または複数）有するトポロジ５０４を含むことができる。しかしながら、初期化の前には、ナビゲーションパスは（例えば、トポロジがベースとする）メタデータのみを含み、データは含まない。ノードのルートは、トラバースされるために、データのインスタンスを有しなければならない。アプリケーションは、ｎパスクライアントのアプリケーションプログラムインターフェース（ＡＰＩ）５０６を利用してデータのインスタンスを入手しなければならない。この場合、アプリケーションは、コンテキストを作成して、そのコンテキストをｎパスサービス５０２に送信する。ｎパスサービス５０２は、ルートノードデータ値を、その値をアプリケーションに提供するｎパスクライアントＡＰＩ５０６に対し提供することができる。ルートノード値は、ナビゲーションパスがナビゲートされるための初期コンテキストであることは理解される筈である。アプリケーションが初期コンテキストを設定すると、ｎパスプロバイダ５０８は、型付けされたコンテキストを入手することができる。各種技術におけるデータビューで、ルートノードを初期化することができる。例えば、以下のコードで示すように、ルートノードに対してリンクを注入することで、初期コンテキストが生成される。
【００４４】
【表１】
2006190261.tif 000003
【００４５】
リンクを注入するという概念は、アプリケーション内でコンテキストノードのビューが動的に変化しているとき有益であることは理解される筈である。さらに、リンクは、同一コンテキストノードを用いて、ビューを一方から他方に変更することができる。
【００４６】
ｎパスクライアントＡＰＩ５０６は、アプリケーション内でのナビゲーションを規定することを容易にするため、システム５００に対して多様な機能を提供する。ｎパスクライアントＡＰＩ５０６は、複数のナビゲーションを提供するナビゲート５１０を含む。ナビゲート５１０は、ｎバス逐次的ナビゲーションを提供することができる。この場合、ｎバス逐次的ナビゲーションによりアプリケーションは最小のパス発見を用いてナビゲーションパスを逐次的に下ることができる。ｎパスサービス５０２との相互作用は、ＴｒａｖｅｒｓｅＬｉｎｋ（）を呼出すことによりノードコンテンツを取得することであることは理解される筈である。例えば、クライアントがｎパスサービス５０２に接続できるようにする接続を確立することができる。ナビゲーションパスは、トポロジ名、開始ノード、ｎパス式、およびナビゲーションパスのインスタンスを入手するための探索計画を用いてｎパスサービス５０２を呼出すことによりインスタンス化されて、ナビゲーションパスのインスタンスを取得する。次いで、アプリケーションは、開始ノードからナビゲーションパス上を「Ｎｅｘｔ」を用いてナビゲートすることができる。以下のサンプルコードは、アプリケーションの典型的な例である。
NPath myPath = new NPath("myTopologyName", myExpression);
／／Ｎｅｘｔボタンクリックハンドラ
…NextButtonOnClick(...)
｛
／／次のリンクを検査
myPath.Next().Traverse(dataContext);
｝
【００４７】
さらに、ナビゲート５１０は、ｎパスサブツリーナビゲーションを提供することができる。この場合、アプリケーションは、所与のｎパスコンテキストノード内での直接の子のリンク内をナビゲートする。パス発見が無く、ｎバスサービス５０２との相互作用によりノードコンテンツを受信ができることは理解される筈である。クライアントはｎパスサービス５０２に接続する。この中で、ナビゲーションを許可するｎパスは、アプリケーションがＴｒａｖｅｒｓｅ（）を呼出すときにインスタンス化される。さらに、典型的な例は、表示されるデータおよび／またはボタンコントロール上にホットリンクを有するフォームを基礎とするアプリケーションであることは理解される筈である。ホットリンクは、例えば、開始ノードからリンク相手先ノードまでパスが存在するとき動的に作動する。
【００４８】
簡単に図６を参照すると、オンライン注文アプリケーションは、フォーム、すなわち顧客、売上報告、注文、注文行、および製品を含むことができる。アプリケーションに関するナビゲーションパスは、［＜顧客、報告＞、＜顧客、注文＞、＜注文、注文行＞、＜注文行、製品＞］であることができる。図６に、そのフォームを含むナビゲーションパスを描写する。ｎパスサービス５０２は、アプリケーションが指定するトポロジおよび式に基づいて、ナビゲーションパスを返すことができる。
【００４９】
別の例において、アプリケーションは、接続していないユーザインターフェース（ＵＩ）エレメント（例えば、Ｗｉｎｆｏｒｍ）を顧客側で利用することができる。この場合、エレメントはナビゲーションパス内の少なくとも１つのノードに対し個別にバインドされる。簡単に図７を参照すると、ユーザインターフェース（ＵＩ）エレメント７００は、顧客注文フォームの設計時の図７０２、および顧客注文フォームの実行時の図７０４であることができる。例えば、顧客フォームＵＩは、特定のアプリケーションには無関係であるが、データソース型、ナビゲーションリンク型、または任意のユーザ入力のようなナビゲーションコンテキストに特有の、ナビゲーションパス内の顧客ノードにバインドされうる。この顧客フォームの例の内部では、メタデータ内のｎパスに基づいて、ＵＩコントロールがダイナミックに生成される。この例において、顧客注文フォーム内にある２つのナビゲーションパスのボタンコントロールを、報告チャート、注文フォーム、注文行データグリッドなどのようなＵＩコントロールにノードデータをバインドするよう規定することができる。ランタイムの間、顧客ノードをトラバースすることにより、所与のナビゲーションコンテキストに合致するフォームが起動する。このとき、ノードデータが提示され、ソースからトラバース可能なリンクがナビゲーションコントロールエリア７０６に追加される。
【００５０】
前記の例に続いて、報告ボタン７０８は、アプリケーション開発者によりおよび／またはｎパスクライアントＡＰＩにより自動的に作成されうる。報告ボタン７０８を作動させるとき、リンク＜顧客、報告＞リンクがトラバースされる。次いでｎパスは報告データをロードして報告チャートユーザインターフェース（ＵＩ）を表示することができる。報告チャートは、例えば、モーダルダイアログボックス、モードレスフォーム、および／またはインプレースの連結コントロールであることができる。さらに、注文フォームは、各種のコントロールを有して注文ディテールコレクション（例えば、データグリッドコントロールの派生）を表示することができる。注文書をトラバースするとき、自動的にリンク＜注文、注文行＞をトラバースするように、注文ディテールコントロールは注文フォームの子となることができる。リンク＜注文行、製品＞の存在により、注文行の製品列上のハイパーテキストリンクを可能にする。上述のことは、以下のコードにより実証することができる。
【００５１】
NPath myPath = new NPath("my TopologyName", myExpression);
／／ＮＰａｔｈ内のルートからアウトバウンドリンクをすべて入手
List<Link> outBoundLinks = myPath.Root.OutBoundLinks;
／／５番目のリンクを検討
outBoundLinks[4].Traverse(dataContext);
【００５２】
図５に戻って参照すると、ナビゲート５１０は、トポロジナビゲーションを提供することができる。この場合、アプリケーションは、所与のトポロジ内ではなくて、ナビゲーションパスの外でリンクの発見を明白に要求する。ナビゲート５１０は、既知のノード上でＧｅｔＰａｔｈ（）を利用することができる。アプリケーションは、ノード上でＧｅｔＰａｔｈ（）を呼出して、ｎパスプロバイダ５０８にアクセスすることなく、トポロジの範囲内にあるリンクを入手することができる。返されるリンクは、新らたなｎパスインスタンスの形である。アプリケーションは、返されるリンクをジャーナル５１２内に選択的に追加することができる（後述）ことは理解される筈である。上述のことは以下のコードのサンプルにより実証することができる。
NPath myPath = new NPath("myTopologyName", myExpression);
／／ＮＰａｔｈ内のルートからアウトバウンドリンクをすべて入手
List<Link> outBoundLinks = myPath. myPath.Root.OutBoundLinks;
／／アウトバウンドリンクから５番目のリンクをトラバース
outBoundLinks[4].Traverse(dataContext);
／／アドホックが現在のトポロジからリンクを得る
NPath adhocPath = outBoundLinks[4].Destination.GetPath(someExpression, SearchScope.CurrentTopoloy);
／／第１アドホックリンクをトラバースして、このリンクナビゲーション情報をジャーナルに保存
adhocPath.Links[0].Traverse(newDataContext);
【００５３】
アドホックナビゲーションは、トポロジナビゲーションと実質的には類似しているが、発見範囲は依然としてｎパスプロバイダのレベルに止まる。アドホックナビゲーションは、下記のコードサンプルを用いてナビゲート５１０によって実装される。
NPath myPath = new NPath("myTopologyName", myExpression);
／／ＮＰａｔｈ内のルートからアウトバウンドリンクをすべて入手
List<Link> outBoundLinks = myPath. myPath.Root.OutBoundLinks;
／／アウトバウンドリンクから５番目のリンクをトラバース
outBoundLinks[4].Traverse(dataContext);
／／アドホックが現在のトポロジからリンクを得る
NPathadhocPath = outBoundsLinks[4],Destination.GetPath(someExpression, SearchScope.UniversalTopology);
／／第１アドホックリンクをトラバースして、このリンクナビゲーション情報をジャーナルに保存
adhocPath.Links[0].Traverse(newDataContext);
【００５４】
ｎパスクライアントＡＰＩ５０６は、ナビゲーションの履歴を記録することのできるジャーナル５１２をさらに含むことができる。ジャーナル５１２は、使用されるナビゲーションパスに関係なくナビゲーションの履歴を記録することができる。ジャーナル５１２は、ジャーナル５１２が閉じられるまで続くナビゲーションの記録を可能にするために開かれる。ジャーナル５１２は、例えば、閉じる際にローカルファイル内に保存することができる。一例において、アプリケーションは起動に際して、ジャーナル履歴をロードするため、構成ファイル内にジャーナルファイルを置くか否かを判定することができる。これらのアプリケーションが停止するとき、ジャーナル５１２を、ほぼ同様のファイルに保存することができる。
【００５５】
さらに、ジャーナル５１２のコンテンツを、トポロジにおいてアップロードされることができる。この場合、このようなジャーナルのコンテンツは、そのトポロジを、追加、置換、または上書きする。この関係はメタデータに書き込む権利を持ちうることは理解される筈である。例えば、ジャーナル５１２は、ユーザのためナビゲーションの履歴を作成することができる。この場合、そのような履歴は、規定のナビゲーションがアプリケーションを容易に開発できるようなトポロジおよびナビゲーションパスの作成の基礎となることができる。ジャーナル５１２は、起動時のナビゲーションアクティビティによって更新される。したがってナビゲーションアクティビティが記録される。ジャーナル５１２に関する主な機能は、「Ｂａｃｋ」と「Ｆｏｒｗａｒｄ」である。
【００５６】
簡単に図８を参照すると、ジャーナルに関する概略図が示されており、ここで、ジャーナルオブジェクトモデル８００は、ユーザがナビゲートし／訪問したページをカプセル化する。ジャーナルオブジェクトモデル８００は、ジャーナルオブジェクトを含み、これが多様な属性および動作を提供する。ｂａｃｋ属性は、ユーザが後方にナビゲートできるリンクを提供し、柔軟性のためスタックよりむしろ配列として実装される。ｆｏｒｗａｒｄ属性は、ユーザがリンクを前方にナビゲートすることを可能にし、これも柔軟性のためスタックの代わりに配列として実装することができる。別の属性、ｃｕｒｒｅｎｔは、現在訪問しているリンクまたはページ（例えば、これはｆｏｒｗａｒｄ用またはｂａｃｋ用のいずれのリンクリストにも属さない）を提供する。ジャーナルオブジェクトは、例えば、ｊｏｕｒｎａｌ（例えば、ジャーナルオブジェクトの構築）、ｊｏｕｒｎａｌ（例えば、コピーコンストラクタ）、ｔｒａｖｅｒｓｅ（例えば、新規のリンクまたはページにナビゲートし、その際、現在のページは後進用スタックにプッシュされ、現在のページが新規ページに設定される）、ｂａｃｋ（例えば、１ページ戻る）、ｂａｃｋ（例えば、指定のページ数戻る）、ｆｏｒｗａｒｄ（例えば、１ページ進む）、ｆｏｒｗａｒｄ（例えば、指定のページ数進む）、ｓｅｒｉａｌｉｚｅ（例えば、ジャーナルをＸＭＬストリーム内に保存する）、ｄｅｓｅｒｉａｌｉｚｅ（例えば、ジャーナルをＸＭＬストリームからロードする）、ｂａｃｋｓｔａｃｋ（例えば、ｂａｃｋ用配列内の、現在のページを含まないページ配列を返す）、およびｆｏｗａｒｄｓｔａｃｋ（例えば、ｆｏｒｗａｒｄ用配列内の、現在のページを含まないページ配列を返す）のような動作をさらに提供する。さらに、ジャーナルオブジェクトモデル８００は、ユーザが訪問したページを作成し直すのに必要な情報をカプセル化するＪｏｕｒｎａｌＬｉｎｋオブジェクトを含む。例えば、ＪｏｕｒｎａｌＬｉｎｋオブジェクトは、ｎａｍｅ（例えば、ジャーナルノードをユーザに表示するのに使用することのできるページの名称）およびＵＲＩ属性（例えば、このページに至るのにユーザがトラバースしたリンクを記述するＵＲＬで、このＵＲＬはコンテキストデータを含む）を含む。ＪｏｕｒｎａｌＬｉｎｋオブジェクトは、例えば、ｎａｍｅ（例えば、ページの名称を返す）およびＵＲＩ（例えば、ページを作成したＵＲＩを返す。この際、ＵＲＩページ型がＵＲＩと共にページを再作成する）のようなオペレーションを提供する。
【００５７】
ｎパスクライアントＡＰＩ５０６は、ＵＩバインディング５１４をさらに含むことができる。グラフィックユーザインターフェース（ＧＵＩ）アプリケーションは、実証されたナビゲーションパスに基づくことができる。けれども、ナビゲーションに際しノードに関するユーザインターフェース（ＵＩ）を表示することは、ｎパスクライアントＡＰＩ５０６を用いて行われる。例えば、開発者は、ユーザインターフェースコントロール（例えば、ページ）をｎパスクライアントＡＰＩ５０６にわたるクライアントコンポーネント内に書き込むことができ、このｎパスクライアントＡＰＩ５０６は、ユーザインターフェースコントロールをビジネスフレームワークメタデータに記述される型にバインドする。このページは、ｎパスクライアントＡＰＩ５０６に対し通信するインターフェースを実装することができる。ナビゲーションパスのトラバーサルは、ルートノードのデータインスタンスから生じることは理解される筈である。それでも、アプリケーション（単数または複数）は、コンテキストデータを提供する必要がある。これは、ナビゲーションパスにより規定される型の構築データ検索基準を用いておこなわれる。
【００５８】
ページがＵＩバインディング５１４を介してトポロジ内のノードに結び付くとき、ノードコンテンツのビューが判定される。さらに、バインディングは、起動の方法や表示における他のコントロールとの関連などの指定のページの実行時の動作を判定する。例えば、バインディングは、ユーザインターフェース（ＵＩ）コントロールがモーダルまたはモードレスか、もしくはインプレースのコントロールであるか否かを判定する。ページは別のインプレースのページを子ページ（例えば、子ページのノードが親ページノードから到達することができることを条件に）として有することができることは理解される筈である。トラバーサルは親ページがロードされたとき開始される。
【００５９】
ＵＩバインディング５１４は、ページの登録（例：例えば、ナビゲーションマネージャを用いる登録）、デフォルトのＵＩバインディング（例えば、プロパティページに類似した単一データインスタンスのためのデフォルトＵＩバインディングおよびデータグリッドであるコレクションのためのデフォルトＵＩバインディング）、型ベースのＵＩバインディング（例えば、デフォルトのバインディングをオーバーライドするバインディングに基づく型としてページを登録すること）、ノードベースのＵＩバインディング（例えば、１ページ以上を利用することができるとき、型とノードｉｄとが一致するページ）、リンクベースのＵＩバインディング（例えば、複数のページを利用することができるとき、型、ノードｉｄ、およびリンクが一致するページ）、バインディングコンテキスト（例えば、ページの登録、および１つの型、または１つのノードに対して複数のページが登録できるバインディングコンテキストの提供）を提供する。
【００６０】
ｎパスクライアントＡＰＩ５０６は、ナビゲーションサービスを容易にするナビゲーションセッションマネージャ５１６を含むことができる。ナビゲーションセッションマネージャ５１６は、ナビゲーションパス（単数または複数）、ジャーナル５１２、ページ、およびＵＩバインディング５１４を、プレゼンテーション層において管理することができるｎパスクライアントＡＰＩ５０６内のシングルトンオブジェクトである。アプリケーションの初期化に際して、ｎパスクライアントＡＰＩ５０６は、アプリケーションのためのナビゲーションサービス（図示せず）に対し接続することができる。この場合、接続は、例えば、ビジネスフレームワークアカウント名、パスワードなどのような、入力パラメータを必要とする。サービス側によりユーザの認証が与えられると、セッションのための接続ハンドル／オブジェクトが返される。この認証はビジネスフレームワークにより提供することができることは理解される筈である。
【００６１】
ナビゲーションセッションマネージャ５１６は、ｎパスサービス５０２を呼出して、返されるナビゲーションパスインスタンスを入手することができる。ナビゲーションパスをインスタンス化するため、アプリケーションプロバイダは、例えば、以下のパラメータを提供する。すなわち、トポロジ名、開始ノードインスタンス、ナビゲーション計画、および式の文字列またはオブジェクトモデル（ＯＭ）である。トポロジ名は、トポロジの一意の名称である。名称のないトポロジは、発見の結果として開始ノードおよび第１レベル子ノードのみを含む単なる返されたナビゲーションパスである。開始ノードのインスタンスは、ノードの開始点を提供する。基準がルートからの絶対パスの開始ノードを一意に識別することができるときは、開始ノードのインスタンスは必要でない。しかしながら、ノードを最初に確認することのできるアプリケーションは、トポロジに関する情報もノードに対する絶対パスも含まないことがある。ナビゲーション計画は、ナビゲーションにおいて利用される技術である。リンクリストを用いて、グラフの接続が固定されるが、開始ノードからのトラバースは異なる。すなわち、２つ以上のナビゲーションパスは、実質的に同様のリンクを利用するが、アプリケーションによって提供される異なるナビゲーションシーケンスを利用する。例えば、可能なシーケンスは、深さ優先（順に接続されるリンクでは線形）、幅優先、または星形（例えば、シーケンスでなく接続を使用）である。式の文字列またはオブジェクトモデル（ＯＭ）は、トポロジ上でパスを識別するのを支援するオブジェクトモデルを有するＸパス類似式である。
【００６２】
図９は、規定ナビゲーションの使用によりアプリケーションの開発を容易にするオブジェクトモデル９００を示す。このオブジェクトモデルは、ＸＭＬに対するシリアライゼーションをサポートするＩＳｅｒｉａｌｉｚａｂｌｅインターフェースを実装するＮｐａｔｈＥｘｐｒｅｓｓｉｏｎクラスを含む。ＮｐａｔｈＥｘｐｒｅｓｓｉｏｎクラスは、各種の属性およびオペレーションを有するエレメントオブジェクトのチェーンまたはツリーを含む。例えば、ＮｐａｔｈＥｘｐｒｅｓｓｉｏｎに関連づけられた属性は、ｎａｍｅ（例えば、一意であるパス名）、ｓｔａｒｔ（例えば、エレメントプロパティに依存する相対パスまたは絶対パスを参照することができるパスの第１エレメント）である。ＮｐａｔｈＥｘｐｒｅｓｓｉｏｎは、これらに限定されないが、ＮｐａｔｈＥｘｐｒｅｓｓｉｏｎ（例えば、コンストラクタ）、ｓｔａｒｔ（例えば、プロパティ、パスの第１エレメントを設定するかまたは返す）、およびＴｏＳｔｒｉｎｇ（例えば、ＮｐａｔｈＥｘｐｒｅｓｓｉｏｎのＸパス類似式の表示を返す）のようなオペレーションを利用することができる。
【００６３】
オブジェクトモデル９００は、ＩＳｅｒｉａｌｉｚａｂｌｅインターフェースを実装してＸＭＬに対するシリアライゼーションをサポートするエレメントクラスをさらに含む。さらに、エレメントクラスは、Ｘパスのエレメントをカプセル化して、別のエレメントオブジェクトのフィルタおよびチェーンまたはツリーを含む。エレメントは、これらに限定されないが、ｅｎｔｉｔｙ（例えば、ビジネスインテリジェンスエンティティ、この場合、ヌルおよびパス内の第１エレメントであるときは相対パス、ヌルおよびエレメントが第１ノードでないときは親ノード）、ｃｈｉｌｄｒｅｎ（例えば、パス内の次のエレメント）、ｐａｒｅｎｔ（例えば、このエレメントに対する親）、およびｆｉｌｔｅｒ（例えば、次のサブツリーをフィルタするフィルタ式）のような属性を含む。このエレメントクラスは、例えば、ｅｌｅｍｅｎｔ（例えば、コンストラクタ）、ｆｉｌｔｅｒ（例えば、フィルタを返す）、ａｄｄ（例えば、パスにエレメントを追加する、この場合、エレメントはカレントエレメントのｃｈｉｌｄｒｅｎ属性に追加される）、ａｄｄ（例えば、パスにエレメントの配列を追加して、サブツリーのユニオンを作成する）、ｉｎｃｌｕｄｅ（例えば、パスにエレメントとそのサブツリーを含むヘルプ機能）、ｅｘｃｌｕｄｅ（例えば、パスにエレメントとそのサブツリーを排除するヘルプ機能）、ｃｈｉｌｄｒｅｎ（例えば、子配列を返す読取専用プロパティ）、ｐａｒｅｎｔ（例えば、エレメントの親を返す読取専用プロパティ）、およびＴｏＳｔｒｉｎｇ（例えば、エレメントのＸパス類似式の表示を返し、ＮｐａｔｈＥｘｐｒｅｓｓｉｏｎにより再帰的に呼出すことができる）のようなオペレーションを提供することができる。
【００６４】
その上、オブジェクトモデル９００は、ＩＳｅｒｉａｌｉｚａｂｌｅインターフェースを実装してＸＭＬに対するシリアライゼーションをサポートするフィルタクラスを含む。フィルタは、フィルタ式を作る項、演算子および関数のスタックを含む。フィルタ呼出は、フィルタ式のポストフィックスのオーダーに代表されるスタックを提供するｓｔａｃｋ属性を含むことができる。フィルタクラスは、例えば、ｆｉｌｔｅｒ（例えば、コンストラクタ）、ｅｑｕａｌｓｔｏ（例えば、ヘルパーメソッド）、ｎｏｔｅｑｕａｌｓｔｏ（例えば、ヘルパーメソッド）、ｐｕｓｈ（例えば、項または演算子をポストフィックススタックにプッシュする内部使用）、ｐｏｐ（例えば、トップタームまたは演算子をポストフィックススタックから移動する内部使用）、ｉｓｅｍｐｔｙ（例えば、スタックが空のときｔｒｕｅを返す）、およびｔｏｓｔｒｉｎｇ（例えば、このフィルタのＸパス類似式の表示を返し、エレメントが再帰的に呼出すことができる）のオペレーションも提供する。
【００６５】
図１０および図１１は、トポロジ生成サービスを利用し、規定ナビゲーションの使用によりアプリケーションの開発を容易にするオブジェクトモデル１０００および１１００を示す。オブジェクトモデル１０００および１１００は、一部がサーバ上に存在するトポロジおよびクライアントとリファレンスと間のアクセス可能性に基づくＭａｒｓｈａｌＢｙＲｅｆＯｂｊｅｃｔから派生されるトポロジクラスを含む。ナビゲーションパスは、ＩＳｅｒｉａｌｉｚａｂｌｅから派生され、このとき値は順に回される。ナビゲーションパスがサーバ上に存在するときは、ナビゲーションパスのＭｏｖｅＮｅｘｔ（）ファンクション呼出はリモートなので、複数の発行を生じる能力に欠けていることは理解される筈である。
【００６６】
オブジェクトモデル１０００および１１００を利用して、トポロジを、エンティティキューブウィザードから、作成することができる。トポロジはクライアントが作成し、格納し、次いでロードすることができる。以下のコードは、クライアントによる作成、格納およびロードを示す。
【００６７】
【表２】
2006190261.tif 000004
【００６８】
ナビゲーションパスは、作成することができ、この場合、例えば、モデルビューワから、ナビゲーションインスタンスを作成することができる。トポロジを作成し、ルートノードを位置指定し、およびナビゲーションパス式をナビゲーションパスとナビゲーション型を用いて作成することができる。作成に当たって、ナビゲーションパスを入手し、ストアに保存することができる。ナビゲーションパスがナビゲーションルート（単数または複数）を記述するメタデータの集合として存続するようにコードが生成されることは理解される筈である。このメタデータの集合は、ナビゲーションパス式を強く型付けされる方法で組み立てることができるとき、コードの生成に利用することができる。ナビゲーションパスは、クライアントがロードすることができる。上述のことは、以下のコードにより示すことができる。
【００６９】
【表３】
2006190261.tif 000005
【００７０】
図１２−１４は、本発明にかかる方法を示す。説明を簡単にするため、方法を一連の動作として描写し、記述する。本発明は示される動作によりおよび／または動作のシーケンスにより限定されるものではないこと、例えば動作は各種のシーケンスおよび／または同時に、およびここに提示しないおよび記述しない動作とともに生じることがあること、は理解され認識される筈である。さらに、示される動作すべてが、本発明による方法の実行に必要というわけではないこともある。さらに、当業者は、この方法は、代わりに状態ダイアグラムまたは状態イベントを介して相互関係のある一連の状態として表現されることを理解し認識するであろう。
【００７１】
図１２は、トポロジおよびナビゲーションパスを利用することによりナビゲーションの規定を容易にする方法１０００を示す。１２０２において設計時にメタデータが受信され、それから１２０４においてトポロジを作成される。このトポロジは、一意に命名されるリンクのコレクション（例えば、ノードおよびリンクのオブジェクトのネットワーク）のメタデータインスタンスである。例えば、トポロジは（例えば、エンティティグラフ、ビジネスインテリジェンスメタデータ、ビジネスインテリジェンスジャーナルなどから）自動的に、または（例えば、ユーザインターフェースツール、などを使用して）手動で、またはそれらの組合せで作成することができる。次に、１２０６において、トポロジ内部にナビゲーションパスを確立する。ナビゲーションパスは、１２０４において作成されたトポロジ上の逐次的なリンクリストであって、そのトポロジのサブグラフを表す。ナビゲーションパスのコンテンツがグラフを定義する一方で、リスト内のリンクオブジェクトのシーケンスは線形ナビゲーションパスを表す。
【００７２】
１２０８において、ナビゲーションパスおよびトポロジを、アプリケーションのための規定ナビゲーションに利用する。ナビゲーションパスおよびトポロジは、例えば、プロバイダインフラストラクチャをさらに含むナビゲーションパスプロバイダを含むナビゲーションパスサービスによって利用されることができる。ナビゲーションパスは、ナビゲーションサービスがデータインスタンスを追加するルートノードを含む。追加させると、アプリケーションは、ナビゲーションパスおよびトポロジをナビゲーション（例えば、この場合ナビゲーションは規定のナビゲーションに基づく）のため利用することができる。このようなナビゲーションは、例えば、逐次的ナビゲーション、ナビゲーションサブツリーナビゲーション、アドホックナビゲーション、トポロジナビゲーション、ジャーナルナビゲーションなどであることができる。さらに、ナビゲーションパスおよびトポロジは、ナビゲーションパス式（例えば、設計を行う間に作成されるオブジェクトモデル）と共に利用することができる。ナビゲーションパス式は、エレメントとフィルタを含み、この場合、サブツリーは追加されるか、またはパスから除外されることができる。パスをプログラム的に取り除くための各エレメントを式に追加できることは理解される筈である。さらに、コードは、ナビゲーションパスがナビゲーションルート（単数または複数）を記述するメタデータのセットとして存続するように生成することができる。このメタデータのセットは、コードの作成に利用することができる。この場合、ナビゲーションパス式は強く型付けされる方法で組み立てられる。
【００７３】
図１３は、トポロジおよびナビゲーションパスを利用することによりナビゲーションの規定を容易にする方法１３００を示す。１３０２において、例えば、設計を行う間にメタデータを受信する。１３０４において、入手したメタデータ少なくとも１つに基づいてトポロジを作成する。このトポロジは、一意に命名されるリンクのコレクション（例えば、ノードおよびリンクオブジェクトのネットワーク）のメタデータインスタンスである。一例において、トポロジは自動的に（例えば、エンティティグラフ、ビジネスインテリジェンスメタデータ、ビジネスインテリジェンスジャーナルなどから）、または手動で（例えば、ユーザインターフェースツールなどを使用して）、またはそれらの組合せで作成することができる。次に、１３０６において、トポロジ内部にナビゲーションパスを確立する。ナビゲーションパスは、１３０４において作成されるトポロジ上の逐次的なリンクリストであって、当該トポロジのサブグラフを表す。ナビゲーションパスのコンテンツがグラフを定義する一方で、リスト内のリンクオブジェクトのシーケンスは線形ナビゲーションパスを表す。
【００７４】
１３０８において、ナビゲーションパスサービス（例えば、ナビゲーションパスプロバイダ・インフラストラクチャを有するナビゲーションパスプロバイダ）への接続が提供され、ここで、多様なサービスをアプリケーションに提供することができる。例えば、アプリケーションは、検証するナビゲーションパスサービスに接続することができるので、コンテキストデータをナビゲーションパスおよびトポロジに提供する（例えば、ナビゲーションサービスによりルートノードがデータインスタンスと共に追加される）。ナビゲーションパスプロバイダおよび／またはナビゲーションサービスに対して接続および／または検証されると、ナビゲーションサービスおよび／またはトポロジは、１３１０において、アプリケーションのための規定ナビゲーションとして利用される。このようなナビゲーションは、例えば、逐次的ナビゲーション、ナビゲーションサブツリーナビゲーション、アドホックナビゲーション、トポロジナビゲーション、ジャーナルナビゲーションなどであることができる。さらに、ナビゲーションパスおよびトポロジは、ナビゲーションパス式（例えば、設計を行う間に作成されるオブジェクトモデル）と共に利用することができる。ナビゲーションパス式は、エレメントとフィルタを含み、この場合、サブツリーは追加されるかまたはパスから除外されることができる。パスをプログラム的に取り除くための各エレメントを式に追加できることは理解される筈である。さらに、コードは、ナビゲーションパスがナビゲーションルート（単数または複数）を記述するメタデータの集合として存続するように作成することができる。このメタデータの集合は、コードの生成に利用することができる。この場合、ナビゲーションパス式は強く型付けされる方法で組み立てることができる。
【００７５】
図１４は、トポロジおよびナビゲーションパスを利用することによりナビゲーションの規定を容易にする方法１４００を示す。１４０２において、メタデータが取得され、この場合、トポロジを基礎とすることができる。１４０４において、トポロジを自動的に作成するか否かを判断する。トポロジを自動作成すると判断すると、この方法は１４０６に進み、そこで機密保護機能のあるプロバイダからトポロジを入手する。トポロジを自動作成しないと判断するときは、１４０８においてトポロジを手動で作成する。この方法は、手動で作成されるトポロジと自動的に作成されるトポロジとの組合せを設けることができることは理解される筈である。
【００７６】
１４１０において、（例えば、自動的に、手動で、またはそれらの組合せで）作成されるトポロジ内部にナビゲーションパスを確立する。確立されると、ナビゲーションパスプロバイダ（例えば、ナビゲーションパスサービス）は、１４１２において保護され、および／または認証され、１４１４において、ナビゲーションパスおよびトポロジの追加を行う。接続し、および／または検証し、および／または追加させると、ナビゲーションパスおよびトポロジは、１４１６において、アプリケーションのための規定ナビゲーションとして利用される。このようなナビゲーションは、例えば、逐次的ナビゲーション、ナビゲーションサブツリーナビゲーション、アドホックナビゲーション、トポロジナビゲーション、ジャーナルナビゲーションなどであることができる。さらに、ナビゲーションパスおよびトポロジは、ナビゲーションパス式（例えば、設計を行う間に作成されるオブジェクトモデル）と共に利用することができる。さらに、コードは、ナビゲーションパスがナビゲーションルート（単数または複数）を記述するメタデータの集合として存続するように作成することができる。このメタデータの集合は、コードの生成に利用することができる。この場合、ナビゲーションパス式は強く型付けされる方法で組み立てることができる。このナビゲーションパス式は、エレメントとフィルタを含み、この場合、サブツリーは追加されるかまたはパスから除外されることができる。パスをプログラム的に取り除くための各エレメントを式に追加できることは理解される筈である。
【００７７】
本発明の各種態様を実装するための追加のコンテキストを提供するために、図１５−１６および以下の説明は、本発明の各種態様を実装するのに適するコンピューティング環境の簡単で一般的な記述を提供することを目的とする。本発明は、ローカルコンピュータおよび／またはリモートコンピュータ上で稼動するコンピュータプログラムのコンピュータ実行可能命令に関する一般的な文脈においてこれまで述べてきたが、当業者は、本発明は別のプログラムモジュールとの組合せにおいても実装されることを理解するであろう。一般的に、プログラムモジュールは、特定のタスクを実行するおよび／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。
【００７８】
さらに、本発明の方法は、シングルプロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、と同時に個人用コンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサに基づくおよび／またはプログラム可能な家電製品などを含み、それらの各々が動作可能に１つまたは複数の関連装置と通信する別のコンピュータシステム構成を用いても実施されるであろうことを、当業者は理解するであろう。本発明の説明する態様は、通信ネットワークを通じて連結されるリモート処理装置により一定のタスクが実行される分散コンピューティング環境においてもまた実施される。しかしながら、本発明の、全部ではないにしてもいくつかの態様は、独立型のコンピュータ上で実施されることがある。分散コンピューティング環境において、プログラムモジュールは、ローカルおよび／またはリモートのメモリ記憶装置に置かれる。
【００７９】
図１５は、本発明が相互に作用することのできるサンプルコンピューティング環境１５００の概略ブロック図である。システム１５００は、１つまたは複数のクライアント１５１０を含む。クライアント（単数または複数）１５１０は、ハードウエアおよび／またはソフトウエア（例えば、スレッド、プロセス、コンピューティング装置）であることができる。システム１５００は、１つまたは複数のサーバ１５２０も含む。サーバ（単数または複数）１５２０は、ハードウエアおよび／またはソフトウエア（例えば、スレッド、プロセス、コンピューティング装置）であることができる。サーバ１５２０は、スレッドを収容し、例えば、本発明を採用することにより変換を行う。
【００８０】
クライアント１５１０とサーバ１５２０との間の１つの可能な通信は、２つ以上のコンピュータプロセスの間で送信するのに適応するデータパケットの形であることができる。システム１５００は、クライアント（単数または複数）１５１０とサーバ（単数または複数）１５２０との間の通信を容易にするのに採用することのできる通信フレームワーク１５４０を含む。クライアント（単数または複数）１５１０は、クライアント（単数または複数）１５１０のローカルにある情報を格納するのに採用することのできるクライアントデータストア（単数または複数）１５５０に動作可能に接続される。同様に、サーバ（単数または複数）１５２０は、サーバ１５４０のローカルにある情報を格納するのに採用することのできるサーバデータストア（単数または複数）１５３０に動作可能に接続される。
【００８１】
図１６を参照すると、本発明の各種態様を実装するための例示的な環境１６００は、コンピュータ１６１２を含む。コンピュータ１６１２は、処理装置１６１４、システムメモリ１６１６、およびシステムバス１６１８を含む。システムバス１６１８は、これらに限定されないが、システムメモリ１６１６を含むシステムコンポーネントを処理装置１６１４に対し結合する。処理装置１６１４は、利用可能な各種プロセッサのうち何でも差し支えない。デュアルマイクロプロセッサおよび別のマルチプロセッサアーキテクチャも処理装置１６１４として採用することができる。
【００８２】
システムバス１６１８は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／または、これらに限定されないが、業界標準アーキテクチャ（ＩＳＡ）、マイクロチャンネルアーキテクチャ（ＭＣＡ）、拡張ＩＳＡ（ＥＩＳＡ）、インテリジェントドライブエレクトロニクス（ＩＤＥ）、ＶＥＳＡローカルバス（ＶＬＢ）、周辺コンポーネント相互接続（ＰＣＩ）、カードバス、ユニバーサルシリアルバス（ＵＳＢ）、アドバンスドグラフィックポート（ＡＧＰ）、パーソナルコンピュータメモリカードインターナショナルアソシエーションバス（ＰＣＭＣＩＡ）、ファイヤワイヤ（ＩＥＥＥ  １３９４）、および小型コンピュータシステムインターフェース（ＳＣＳＩ）を含む利用可能な各種のバスアーキテクチャを用いるローカルバスを含む数個の型のバス構造体（単数または複数）のうち何れにもすることができる。
【００８３】
システムメモリ１６１６は、揮発性メモリ１６２０および不揮発性メモリ１６２２を含む。スタートアップの間などに、コンピュータ１６１２内部のエレメント間で情報を転送する基本ルーチンを収容する基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ１６２２内に格納される。例として、限定としてではなく、不揮発性メモリは、読取専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）またはフラッシュメモリを含むことができる。揮発性メモリ１６２０は、外部キャッシュメモリとして働くランダムアクセスメモリ（ＲＡＭ）を含む。例として、限定としてではなく、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、ＳｙｎｃｈｌｉｎｋＤＲＡＭ（ＳＬＤＲＡＭ）およびダイレクトＲａｍｂｕｓＲＡＭ（ＤＤＲＡＭ）のような多数の形で入手することができる。
【００８４】
コンピュータ１６１２は、取り外し可能／固定の、揮発性／不揮発性コンピュータ記憶媒体も含む。図１６は、ディスク記憶装置１６２４を示す。ディスク記憶装置１６２４は、これらに限定されないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックのような装置を含む。さらに、ディスク記憶装置１６２４は、個別に、または限定されないが、コンパクトディスクＲＯＭ装置（ＣＤ−ＲＯＭ）、ＣＤ記録可能ドライブ（ＣＤ−Ｒドライブ）ＣＤ書直し可能ドライブ（ＣＤ−ＲＷドライブ）またはデジタル揮発性ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）のような光ディスクドライブを含む別の記憶媒体と組合せて含むことができる。ディスク記憶装置１６２４のシステムバス１６１８に対する接続を容易にするには、インターフェース１６２６取り外し可能または固定のインターフェースが典型的に利用される。
【００８５】
図１６は、ユーザと基本的コンピュータリソースとの間で媒介として働く適切な動作環境１６００内で記述されるソフトウエアを記述することは理解される筈である。このようなソフトウエアは、オペレーティングシステム１６２８を含む。オペレーティングシステム１６２８は、ディスク記憶装置１６２４に格納されることが出来て、コンピュータシステム１６１２のリソースをコントロールし割当てる働きをする。システムアプリケーション１６３０は、オペレーティングシステム１６２８によるリソースの管理を、システムメモリ１６１６内またはディスク記憶装置１６２４上の何れかに格納されるプログラムモジュール１６３２およびプログラムデータ１６３４を通じて、巧みに利用する。本発明は、各種オペレーティングシステムまたはオペレーティングシステムの組合せを用いて実装されることは理解される筈である。
【００８６】
ユーザは、入力装置（単数または複数）１６３６を通して、コマンドまたは情報をコンピュータ１６１２に入力する。入力装置１６３６は、これらに限定されないが、マウス、トラックボール、電子ペン、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどのようなポインティングデバイスを含む。これらおよびその他の入力装置は、システムバス１６１８を通じインターフェースポート（単数または複数）１６３８を介して、処理装置１６１４に接続する。インターフェースポート（単数または複数）１６３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルポート（ＵＳＢ）を含む。出力装置（単数または複数）１６４０は、入力装置（単数または複数）１６３６と同一型のいくつかのポートを使用する。したがって、例えば、ＵＳＢポートは、コンピュータ１６１２に対し入力を提供し、コンピュータ１６１２から出力装置１６４０へ情報を出力することに使用される。出力アダプタ１６４２は、その他の出力装置１６４０内でもモニタ、スピーカ、およびプリンタのように特殊なアダプタを必要とするいくつかの出力装置があることを示すため提供される。出力アダプタ１６４２は、例としてであって限定ではなく、出力装置４２とシステムバス１６１８との間の接続手段を提供するビデオおよびサウンドカードを含む。リモートコンピュータ（単数または複数）１６４４のような別の装置および／または装置のシステムは、入力および出力両方の能力を備えることに注意しなければならない。
【００８７】
コンピュータ１６１２は、リモートコンピュータ（単数または複数）１６４４のような、１つまたは複数のリモートコンピュータに対し論理接続を用いるネットワーク環境内で起動することができる。リモートコンピュータ（単数または複数）１６４４は、電気製品、ピア装置、またはその他の共通ネットワークノードなどに基づくパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサであることができ、コンピュータ１６１２に関連して記述したエレメントの多くまたは全部を典型的に含む。簡潔にする目的で、リモートコンピュータ（単数または複数）１６４４と共にメモリ記憶装置１６４６１つのみを示す。リモートコンピュータ（単数または複数）１６４４は、コンピュータ１６１２に対し、ネットワークインターフェース１６４８を通じて論理的に接続され、次いで通信接続１６５０を介して物理的に接続される。ネットワークインターフェース１６４８は、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）のような有線および／または無線の通信ネットワークを包含する。ＬＡＮ技術は、Ｆｉｖｅｒ  Ｄｅｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＦＤＤＩ）、Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＣＤＤＩ）、イーサネット（登録商標）、トークンリングなどを含む。ＷＡＮ技術は、これらに限定されないが、ポイントツーポイントリンク、総合デジタル通信網（ＩＳＤＮ）とその変形のような回線切り替えネットワーク、パケット切り替えネットワーク、およびデジタル加入者回線（ＤＳＬ）を含む。
【００８８】
通信接続（単数または複数）１６５０は、ネットワークインターフェース１６４８をバス１６１８に対し接続することに採用されるハードウエア／ソフトウエアを指す。通信接続１６５０は、説明を明確にするためコンピュータ１６１２の内部に示したけれども、コンピュータ１６１２に外付けとすることもできる。ネットワークインターフェース１６４８に対する接続のため必要なハードウエア／ソフトウエアは、例示的な目的のみで、一般回線用モデムを含むモデムのような内蔵および外付け技術、ケーブルモデムおよびＤＳＬモデム、ＩＳＤＮアダプタ、およびイーサネット（登録商標）カードを含む。
【００８９】
上述の事項は、本発明の例を含む。勿論、本発明を記述する目的のため、コンポーネントまたは方法の考えられるあらゆる組合せを記述することは不可能であるが、当業者は、本発明の多数の追加の組合せおよび置換えが可能であることを理解するであろう。依って、本発明は、付属請求項の精神と範囲内に該当するこのような代替案、変更、および変形全部を包容することを目的とする。
【００９０】
上述のコンポーネント、装置、回路、システムなどが行う各種機能に対し格別におよびそれに関連して、このようなコンポーネントを記述することに使用された用語は（「手段」に対する言及を含めて）、別途に示さない限り、開示する構造体に対し構造的に同等でなくとも、記述するコンポーネントの規定の機能を行う任意のコンポーネント（例えば、機能的同等物）であって、本発明のここに示す例示的態様における機能を行うコンポーネントに相当することを意味する。この関連で、本発明はシステムと同時に本発明の各種方法の動作および／またはイベントを行うためのコンピュータ実行可能命令を有するコンピュータ読取可能媒体をも含むことは理解される筈である。
【００９１】
さらに、本発明の特定の特徴を、いくつかの実施態様のうちの１つのみに関して開示したけれども、このような特徴は、所与のまたは特定の用途のため望まれ且つ利点があるとき、別の実施態様の別の特徴のうちの１つまたは複数と組み合わされることがある。さらに、用語「含む」および「含んでいる」並びにそれらの変形が詳細な記述または請求項のいずれかにおいて使用される範囲において、これらの用語は「包含している」と同様の方法で包括的であることを意味する。
【図面の簡単な説明】
【００９２】
【図１】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的システムのブロック図である。
【図２】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的システムのブロック図である。
【図３】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的アーキテクチャのブロック図である。
【図４】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的システムのブロック図である。
【図５】アプリケーション内でナビゲーションの規定を容易にする例示的システムのブロック図である。
【図６】出発ノードおよび関連リンクを含む図である。
【図７】規定ナビゲーションを用いてアプリケーションの開発を容易にするノードを有するカスタマフォームのブロック図である。
【図８】規定ナビゲーションを用いてアプリケーションの開発を容易にするオブジェクトモデルのブロック図である。
【図９】規定ナビゲーションを用いてアプリケーションの開発を容易にするオブジェクトモデルのブロック図である。
【図１０】規定ナビゲーションを用いてアプリケーションの開発を容易にするオブジェクトモデルのブロック図である。
【図１１】規定ナビゲーションを用いてアプリケーションの開発を容易にするオブジェクトモデルのブロック図である。
【図１２】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的方法のフローチャートである。
【図１３】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的方法のフローチャートである。
【図１４】規定ナビゲーションを用いてアプリケーションの開発を容易にする例示的方法のフローチャートである。
【図１５】本発明の新規側面を採用することのできる例示的ネットワーク環境を示す図である。
【図１６】本発明の新規側面を採用することのできる例示的動作環境を示す図である。
【図１】
2006190261.tif 000006
【図２】
2006190261.tif 000007
【図３】
2006190261.tif 000008
【図４】
2006190261.tif 000009
【図５】
2006190261.tif 000010
【図６】
2006190261.tif 000011
【図７】
2006190261.tif 000012
【図８】
2006190261.tif 000013
【図９】
2006190261.tif 000014
【図１０】
2006190261.tif 000015
【図１１】
2006190261.tif 000016
【図１２】
2006190261.tif 000017
【図１３】
2006190261.tif 000018
【図１４】
2006190261.tif 000019
【図１５】
2006190261.tif 000020
【図１６】
2006190261.tif 000021