(57)【特許請求の範囲】
【請求項１】
プロセッサによって実行される実行可能な命令を記憶するコンピュータ可読媒体を有するコンピュータで実施される視覚化システムであって、
ユーザエクスペリエンスに関連するコンポーネントのためのコンポーネント定義および前記コンポーネント定義に基づいて選択されたデータ定義を含むストア定義と、
ストア定義に基づいて特定のプラットフォームのために構成された視覚化ホストのユーザエクスペリエンスに対応する出力コンポーネントのインスタンスを自動的に構成する構成エンジンと、を備え、
前記コンポーネント定義は、ベースコンポーネントおよびコンテナコンポーネントの構成ための定義を含み、
前記コンテナコンポーネントはベースコンポーネントのコンテナであり、プラットフォーム非依存であり、
前記ベースコンポーネントは、前記特定のプラットフォームに向けて実装されており、
前記出力コンポーネントは前記ベースコンポーネントおよび前記コンテナコンポーネントの組み合わせを含み、グローバル変数が適用されていることを特徴とするシステム。
【請求項２】
前記出力コンポーネントは、前記ユーザエクスペリエンスの前記出力コンポーネントにより表示されるデータのタイプであるターゲットデータタイプに基づいて構成されることを特徴とする請求項１に記載のシステム。
【請求項３】
コンポーネントが前記ターゲットデータタイプに基づいてそれを介して検索されるコンポーネントレジストリをさらに備えることを特徴とする請求項２に記載のシステム。
【請求項４】
前記出力コンポーネントは、関連するコンポーネント特性をデータコンテキスト要素にバインドして前記出力コンポーネントの子コンポーネントである前記ベースコンポーネントをリンクすることを特徴とする請求項１に記載のシステム。
【請求項５】
前記構成エンジンは、出力コンポーネント間のデータ交換を可能にするグローバル変数を含むことを特徴とする請求項１に記載のシステム。
【請求項６】
プロセッサおよびメモリを介して実行可能なコンピュータで実施される視覚化方法であって、
特定のプラットフォームに関する実行環境において利用されるべきコンポーネントを求める要求を受信するステップと、
前記コンポーネントに関連するコンポーネント定義を検索するステップと、
見つけられたコンポーネント定義のための１つまたは複数のデータ定義を選択するステップと、および
前記実行環境において前記コンポーネントを出力するために前記コンポーネント定義で前記１つまたは複数のデータ定義を自動的に構成するステップと、を備え、
前記コンポーネント定義は、ベースコンポーネントおよびコンテナコンポーネントの構成ための定義を含み、
前記コンテナコンポーネントはベースコンポーネントのコンテナであり、プラットフォーム非依存であり、
前記ベースコンポーネントは、前記特定のプラットフォームに向けて実装されており、
前記コンポーネントは前記ベースコンポーネントおよび前記コンテナコンポーネントの組み合わせを含み、特定の視覚化ホストのユーザエクスペリエンスに対応しグローバル変数が適用されていることを特徴とする方法。
【請求項７】
前記コンポーネント定義が見つからないときは前記要求されたコンポーネントのデータタイプに基づいて前記コンポーネント定義を検索するステップをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記要求されたコンポーネントの欠如に基づいてカスタムコンポーネントを作成するステップをさらに含むことを特徴とする請求項６に記載の方法。
【請求項９】
グローバル変数をプライベート変数でオーバライドして前記プライベート変数を前記コンポーネントの子コンポーネントに課すステップをさらに含み、前記コンポーネントの子コンポーネントはグローバル変数の代わりにプライベート変数を使用することを特徴とする請求項６に記載の方法。
【請求項１０】
前記要求されたコンポーネントが見つからないときは前記コンテナコンポーネントを作成するステップと、
前記コンテナコンポーネントに前記ベースコンポーネントに関連するデータタイプの特性をロードするステップと、
前記コンポーネントとして前記コンテナコンポーネントを出力するステップと
をさらに含むことを特徴とする請求項６に記載の方法。
【請求項１１】
プロセッサおよびメモリを介して実行可能なコンピュータで実施される視覚化方法であって、
特定のプラットフォームに関する実行環境において利用されるコンポーネントを求める要求を受信するステップと、
前記コンポーネントに関連するコンポーネント定義を検索するステップと、
コンポーネント定義が見つけられた場合に、前記コンポーネント定義のための１つまたは複数のデータ定義を選択するステップと、
前記コンポーネント定義が見つからないときは、前記要求されたコンポーネントに関連するデータタイプに基づいてカスタムコンポーネントを作成するステップと、
データコンテキスト間のデータ交換を可能にするためにグローバル変数を前記コンポーネント又はカスタムに適用するステップと、
前記実行環境において前記コンポーネントを出力するために前記コンポーネント定義で前記１つまたは複数のデータ定義を自動的に構成するステップと、を備え、
前記コンポーネント定義は、ベースコンポーネントおよびコンテナコンポーネントの構成ための定義を含み、
前記コンテナコンポーネントはベースコンポーネントのコンテナであり、プラットフォーム非依存であり、
前記ベースコンポーネントは、前記特定のプラットフォームに向けて実装されており、
前記コンポーネントは前記ベースコンポーネントおよび前記コンテナコンポーネントの組み合わせを含み、前記グローバル変数が適用されている
ことを特徴とする方法。
【請求項１２】
グローバル変数をプライベート変数でオーバライドして前記プライベート変数を前記コンポーネントの子コンポーネントに課すステップをさらに含み、前記コンポーネントの子コンポーネントは前記グローバル変数の代わりに前記プライベート変数を使用することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記要求されたコンポーネントが見つからないときは前記コンテナコンポーネントを作成するステップと、
前記コンテナコンポーネントに前記ベースコンポーネントに関連するデータタイプ特性をロードするステップと、
前記コンポーネントとして前記コンテナコンポーネントを出力するステップと
をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
パラメータノードを介して前記コンポーネントに渡されるべきデータを定義するステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１５】
特性の子コンポーネントである前記ベースコンポーネントへのバインディングを含む親コンポーネントを構成するステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記コンポーネントはユーザエクスペリエンスに対応する出力コンポーネントにより表示されるデータのタイプであるターゲットデータタイプに基づいて構成されることを特徴とする、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
プラットフォーム非依存プレゼンテーションの構成に関する。
【背景技術】
【０００２】
ユーザエクスペリエンス（ＵＸ）の質は、ＵＸがユーザの期待にどれほどよく合わせられるかに基づく。多くのデータタイプ、多くのデータソース、および多くのＵＸプラットフォームを扱わなければならないので、設計者は、特定のＵＸプラットフォームのためのデータソースから特定のデータを消費する特定の人に関するプレゼンテーションコードを書くこと、または、いかなる１人の人のニーズをも満たさない広範囲に向けられたＵＸを提供することを含む魅力的でない手法から選択しなければならない。
【０００３】
例えば、ＨＴＭＬ（ハイパーテキストマークアップ言語）、ＸＡＭＬ（拡張可能アプリケーションマークアップ言語）、およびＸＳＬＴ（拡張可能スタイルシート言語変換）などの既存のＵＸ構成システムは、マークアップコードが特定のプラットフォームのために開発されるように設計されている。開発者がコードをいくつかのプラットフォーム上で使いたい場合は、プラットフォームの違いを処理するためにカスタムロジックがコードに組み込まれなければならない。さらに、既存のＵＸ構成システムは、特定のプレゼンテーションがデータインターフェース要素ごとに明示的に定義されることを必要とする。要素が表す基本的なデータ構造に基づくＵＸ要素の動的生成を可能にする機能は、特にデータ構造が複雑で、および／または継承可能である場合は、非実在物に限定される。
【０００４】
これらの弱点の結果として、マスマーケット（例えば、電子メール）はサービスされてきたかもしれないが、より小さいコミュニティのユーザ（例えば、exchange管理者またはＣＲＭ（顧客関係管理）サービスオーナ）は十分にサービスされていない。
【発明の概要】
【０００５】
下記は、本明細書に記載のいくつかの新規の実施形態の基本的な理解を提供するために、簡略化された概要を提示する。この概要は、広範囲にわたる概観ではなく、キー／クリティカル要素を識別することまたはそれらの範囲を概説することを意図するものではない。その唯一の目的は、以下で提示されるより詳細な説明の序として簡略化された形でいくつかの概念を提示することである。
【０００６】
開示されたアーキテクチャは、プラットフォーム非依存構成駆動プレゼンテーション構成エンジンを含む。構成エンジンは、データコントラクトに基づくマルチプラットフォームユーザエクスペリエンス（ＵＸ）の動的生成を可能にする。構成によって、ユーザは、部分、相互作用、および相互作用と部分との間の制約、ならびに相互に関する配置を選択することができる。
【０００７】
ＵＸは、特定のデータクラスに向けられたコンポーネントから動的に構成される。実行時に、プラットフォーム依存コンポーネントの実装は、構成ホストの実行プラットフォームに基づいてエンジンによって自動的に選択される。
【０００８】
開示されたアーキテクチャは、ユーザが、多くのプラットフォーム上で機能する多くのデータソースにアクセスすることができる複数のプレゼンテーションウィジェットから構成することによってコードを書かずにＵＸを作成するまたはカスタマイズすることができるようにする。構成は、データクラスおよびプレゼンテーションタイプの両方に向けられ、予め定義されてもよく、または生成されてもよい。
【０００９】
前述のおよび関連する目的の達成のために、いくつかの例示的態様が以下の説明および添付の図面に関連して本明細書で説明される。これらの態様は、本明細書で開示される原理が実行され得る様々なやり方を示し、したがって、すべての態様およびそれらの同等物は、本特許請求の主題の範囲内にあるものとする。他の利点および新規の特徴は、図面を参照しながら考察された場合、以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】開示されたアーキテクチャによる視覚化システムを例示する図である。
【図２】開示されたアーキテクチャによる代替視覚化システムを例示する図である。
【図３】構成エンジンによって構成された例示的構成を例示する図である。
【図４】構成システムのデータテキストおよびビジュアルベースコンポーネントを含む親コンポーネントを例示する図である。
【図５】コンポーネント定義を例示する図である。
【図６】コンポーネントを見つけるまたは選択するためのコンポーネントレジストリを例示する図である。
【図７】構成エンジン内の変数の使用を表す宣言図を例示する図である。
【図８】開示されたアーキテクチャによる視覚化方法を例示する図である。
【図９】図８の方法のさらなる態様を例示する図である。
【図１０】代替視覚化方法を例示する図である。
【図１１】図１０の方法のさらなる態様を例示する図である。
【図１２】構成エンジンにおいてコンポーネントを取得する方法を例示する図である。
【図１３】構成エンジンにおいてコンポーネントを取得するさらに詳細な方法を例示する図である。
【図１４】開示されたアーキテクチャによる構成を実行するコンピューティングシステムのブロック図である。
【発明を実施するための形態】
【００１１】
開示されたアーキテクチャは、プレゼンテーション構成エンジンである。構成エンジンは、ユーザが様々なコンポーネントを相互に「接合する」（構成する）ことができるようにするサービスのセットとして示される汎用構成フレームワーク、およびコンポーネント（１つまたは複数）の構成（エンジンの出力構成）である。構成によって、ユーザは、部分、相互作用、および相互作用と部分との間の制約、ならびに相互に関する部分の配置を選択することができる。エンジンは、ＵＩ（ユーザインターフェース）および非ＵＩコンポーネントの両方のためのプレゼンテーションニュートラルフレームワークである。
【００１２】
コンポーネントは、構成エンジンのためのＵＩ宣言の最小再利用可能構築ブロックであり、名称によって識別可能であり、任意選択でデータタイプに向けられる。コンポーネントは、ベースコンポーネント（ユニットコンポーネント）でも、またはコンテナコンポーネント（合成コンポーネント）でもよい。データコンテキストは、コンポーネントのためのターゲットデータのインスタンスである。言い換えれば、データコンテキストは、コンポーネントに関連するデータを表す名称／値のペアセットである。データコンテキストは、サポート変更通知を入力し、構成は、変更を開始する、および／または他の構成によって開始された変更をリスンすることができる。構成エンジンは、プラットフォーム非依存であるユーザエクスペリエンスとしての特定のホストのためのコンポーネントをアセンブルする。視覚化ホストは、特定のプラットフォーム（実行時）のための構成の実行環境である。
【００１３】
構成は、データクラスおよびプレゼンテーションタイプの両方に向けられ、予め定義されていてもよく、または生成されてもよい。複数のコンポーネントが構成されてもよいが、コンポーネントチェーンは、具体的なベースコンポーネント（例えば、ＴｅｘｔＢｏｘコントロール、データベースクエリコンポーネントなど）において終わる。
【００１４】
構成エンジンは、データコントラクトに基づいてマルチプラットフォームＵＸ（ユーザエクスペリエンス）の動的生成を可能にする。ＵＸは、特定のデータクラスに向けられるコンポーネントから動的に構成される。実行時に、プラットフォーム依存コンポーネントの実装は、構成ホストの実行プラットフォームに基づいてエンジンによって自動的に選択される。
【００１５】
次に、全体にわたって同様の参照符号は同様の要素を示すために使用される図面が参照される。以下の説明では、説明の目的で多数の特定の詳細がそれらの徹底的な理解を提供するために記述される。しかし、新規の実施形態はこれらの特定の詳細なしで実行されることが可能であることが明らかであろう。他の場合には、よく知られている構造およびデバイスがそれらの説明を容易にするためにブロック図の形で示され。この意図は、本特許請求の主題の趣旨および範囲の範囲内に入るすべての変更形態、同等形態、および代替形態をカバーすることである。
【００１６】
図１は、開示されたアーキテクチャによる視覚化システム１００を例示する。システム１００は、ユーザエクスペリエンスに関連するコンポーネントおよびデータのためのコンポーネント定義１０４およびデータ定義１０６を含むストア定義のストア１０２を含む。コンポーネント定義１０４は、ベースコンポーネント、コンテナコンポーネント、ならびにベースコンポーネントおよびコンテナコンポーネントの構成のための定義を含んでよい。このようにして、コンポーネントの既存の構成は、動的選択および出力コンポーネント１１０への構成のために容易に利用可能である。
【００１７】
構成エンジン１０８はストア定義に基づいて出力コンポーネント１１０のインスタンスを自動的かつ宣言的に構成する。出力コンポーネントは、様々なホスト１１２の視覚化ホストのユーザエクスペリエンスに特有である。
【００１８】
出力コンポーネント１１０は、ベースコンポーネント、コンテナコンポーネント、またはベースコンポーネントおよびコンテナコンポーネントの組合せを含む。出力コンポーネント１１０は、ユーザエクスペリエンスのターゲットデータタイプに基づいて構成される。システム１００は、コンポーネントがターゲットデータタイプに基づいてそれを介して検索されるコンポーネントレジストリをさらに備えてよい。出力コンポーネントは、関連コンポーネント特性をデータコンテキスト要素にバインドして子コンポーネントをリンクする。構成エンジン１０８は、関連のないデータコンテキストにおける出力コンポーネント間のデータ交換を可能にするグローバル変数を含む。
【００１９】
図２は、開示されたアーキテクチャによる代替可視化システム２００を例示する。システム２００は、図１のシステム１００のエンティティ、ならびにデータコンテキスト２０２、個人化（プライベート）オーバライド２０４、およびコンポーネントの実装２０６を含む。出力コンポーネント１１０は、既存のコンポーネント定義ではなくデータコンテキスト２０２に基づいて構成されてよい。すなわち、データに基づいて、カスタマイズされたコンポーネントが作成され、純粋にコンテキストデータ２０２（ターゲットＵＸ内のデータのインスタンス）に基づいて出力されてよい。構成エンジン１０８は、選択されたコンポーネント定義で構成されるパーソナライズド・オーバライド２０４を利用してグローバル変数をプライベート変数でオーバライドする。
【００２０】
図３は、構成エンジンによって構成された例示的構成３００を例示する。ここでは、構成３００が、ベースコンポーネント（例えば、ＳｔａｃｋＰａｎｅｌベースコンポーネント３０２）およびコンテナコンポーネント３０４の点から説明される。ここでは、ベースコンポーネント３０２は、２つのテキストボックスベースコンポーネントを含み、第１のテキストボックスベースコンポーネントはテキスト「ＡＢＣ」を示し、第２のテキストボックスベースコンポーネントはテキスト「ＤＥＦ」を示す。ベースコンポーネント３０２はまた、ボタンベースコンポーネントを含む。
【００２１】
ベースコンポーネントは、特定のプラットフォームに向けられた具体的な実装、構成プロセスの葉ノードであり、ビジュアルでも非ビジュアルでもよい。下記は、（コンポーネントタイプではなくコンポーネントタイプの点からの）ベースコンポーネント定義の一例である。
【００２２】
【表１】
0005938031.tif 000002
【００２３】
ＭＥＦ（ｍａｎａｇｅｄ  ｅｘｔｅｎｓｉｂｉｌｉｔｙ  ｆｒａｍｅｗｏｒｋ）ファクトリは、ＭＥＦ実行時を呼び出して登録されたＵＩアセンブリから対応するタイプを引き出す。ＭＥＦは、１つの例示的実装方式にすぎず、他のファクトリ実装が利用されてもよいことに留意されたい。
【００２４】
コンテナコンポーネント（さらに合成コンポーネント）は、ベースコンポーネント（さらにユニットコンポーネント）のコンテナであり、カスタム実装を有さない、プラットフォーム非依存である。下記は、合成コンポーネント定義の一例である。
【００２５】
【表２】
0005938031.tif 000003
【００２６】
図３では、コンテナコンポーネント３０４が、以下のコードにおいて例示されているように、ベースコンポーネントを結合し、ここで、ＰｒｏｐｅｒｔｙＡは「ＡＢＣ」であり、ＰｒｏｐｅｒｔｙＢは「ＤＥＦ」である。
【００２７】
【表３】
0005938031.tif 000004
【００２８】
各コンポーネント（ベースまたはコンテナ）は、データコンテキスト（Ｄａｔａ  Ｃｏｎｔｅｘｔ）インスタンスでバックアップされる。Ｄａｔａ  Ｃｏｎｔｅｘｔは、特性変更通知およびエラーセット通知をサポートするキー（ストリング）と値（オブジェクト）のペアの集まりである。コンポーネントは、その特性をデータコンテキスト要素にバインドして子コンポーネントを相互にリンクする。
【００２９】
図４は、構成システムのデータコンテキスト４０２（ＤａｔａＣｏｎｔｅｘｔ要素として）およびビジュアルベースコンポーネント４０４（例えば、図３のＳｔａｃｋＰａｎｅｌベースコンポーネント３０２）を含む親コンポーネント４００を例示する。ここでは、データコンテキスト４０２は、３つの特性、すなわち、それぞれ対応する値「ＡＢＣ」、「ＤＥＦ」、および「ＸＹＺ」を有するＰｒｏｐｅｒｔｙＡ、ＰｒｏｐｅｒｔｙＢ、およびＰｒｏｐｅｒｔｙＣを含む。ビジュアルベースコンポーネント４０４は、対応する双方向データバインドを介してのＰｒｏｐｅｒｔｙＡおよびＰｒｏｐｅｒｔｙＢへのバインディングを含むが、ビューモデル４０８の複数のデータコンポーネント４０６は、ＰｒｏｐｅｒｔｙＢおよびＰｒｏｐｅｒｔｙＣにバインドされる。言い換えれば、特性の子コンポーネント（テキストボックスベースコンポーネント）へのバインディングおよび特性のデータコンポーネント４０６へのバインディングを含む親コンポーネント４００が構成される。
【００３０】
図５は、コンポーネント定義５００を例示する。コンポーネント定義５００は、２つの部分、すなわち、タイプ宣言５０２および実装定義５０４を備える。各コンポーネントは、名称、および関連コンポーネントを捜し出すために使用され得るオプショナルターゲットタイプ属性を有する。例示的タイプ宣言（コンポーネントに関して）は、以下の通りである。
【００３１】
【表４】
0005938031.tif 000005
【００３２】
コンポーネントはまた、以下に例示されているように（コンポーネントに関して）、渡されると予想されるデータ形状（例えば、ストリング）を定義するＰａｒａｍｅｔｅｒｓサブノードを含んでよい。
【００３３】
【表５】
0005938031.tif 000006
【００３４】
図６は、コンポーネントを見つけるまたは選択するためのコンポーネントレジストリ６００を例示する。レジストリ６００は、すべての定義されたコンポーネントおよびコンポーネント構成のリストを維持する。例えば、ベースコンポーネント（例えば、図３のＳｔａｃｋＰａｎｅｌ／Ｂｕｔｔｏｎ／Ｅｄｉｔ）は、ＴｙｐｅＩｄおよびＴａｒｇｅｔＴｙｐｅ（ターゲットデータタイプ）に基づいて捜し出される（検索される）ことが可能である。この場合、出力は、ＴａｒｇｅｔＴｙｐｅに対応するベースコンポーネント、またはＴｙｐｅＩｄおよびＴａｒｇｅｔＴｙｐｅである。
【００３５】
コンポーネントに関する特性を設定するために、以下のサンプルコードに示されているように、「Ｐａｒａｍｅｔｅｒ」ノードが使用される。
【００３６】
【表６】
0005938031.tif 000007
【００３７】
この場合、コンポーネント「ＥｖｅｎｔＶｉｅｗ」の特性「Ｓｃｏｐｅ」は、テキスト「Ｃｏｍｐａｎｙ．ＳｙｓｔｅｍＣｅｎｔｅｒ．ＳｑｌＤＢ」に設定される。しかし、しばしば、パラメータは静的ではなく、他の要素にバインドされる。一般に、リファレンスは、
【００３８】
【表７】
0005938031.tif 000008
【００３９】
の形である。
【００４０】
例えば、２つのコンポーネントは、変数「ａｂｃ」にバインドされる。
【００４１】
【表８】
0005938031.tif 000009
【００４２】
下記はＰａｒａｍｅｔｅｒノードにおけるリファレンスプロトコルの例示的リストである。
【００４３】
【表９】
0005938031.tif 000010
【００４４】
グローバル変数は、関連のないデータコンテキストにおける構成（ベースコンポーネントおよび／またはコンテナコンポーネント）間のデータ交換を可能にするために使用され得る。最初に、グローバル変数が宣言される。
【００４５】
【表１０】
0005938031.tif 000011
【００４６】
変数は、
【００４７】
【表１１】
0005938031.tif 000012
【００４８】
を使用して、ベースコンポーネントおよびコンテナコンポーネントにおいて参照され得る。
【００４９】
任意の所与のコンポーネント（例えば、ベース、コンテナ）は、コンポーネントの子が、以下のサンプルコードに例示されている変数のプライベートコピーを見るように、変数をプライベート実装でオーバライドすることができる。
【００５０】
【表１２】
0005938031.tif 000013
【００５１】
図７は、構成エンジンにおける変数の使用を表す宣言図７００を例示する。７０２において、グローバル変数「Ａ」が宣言される。７０４において、パラメータ名「Ｂｌａｈ」がコンポーネントに渡される。７０６において、グローバル変数のローカルコピーが作成される。７０８および７１０において、グローバル変数ではなく、変数のローカルコピーが使用される。
【００５２】
本明細書には、開示されたアーキテクチャの新規の態様を実行するための例示的方法を表すフローチャートのセットが含まれている。説明を簡単にするために、例えばフローチャートまたは流れ図の形で本明細書に示されている１つまたは複数の方法は、一連の動作として示され説明されているが、これらの方法は、いくつかの動作はそれらの方法によって本明細書に示され説明されている順序とは異なる順序でおよび／または他の動作と同時に行われてもよいので、動作の順序によって限定されないことが理解され認識されるべきである。あるいは、例えば、方法は、状態図などにおいて一連の相互関係のある状態またはイベントとして表されてもよいことを当業者は理解し認識するであろう。さらに、必ずしも方法において例示されているすべての動作が新規の実装のために必要とされるわけではない。
【００５３】
図８は、開示されたアーキテクチャによる視覚化方法を例示する。８００において、実行環境において利用されるべきコンポーネントを求める要求が受信される。８０２において、コンポーネントに関連するコンポーネント定義が検索される。８０４において、１つまたは複数のデータ定義が、見つけられたコンポーネント定義のために選択される。８０６において、１つまたは複数のデータ定義がコンポーネント定義によって自動的に構成されて環境実行時に実行環境においてコンポーネントを出力する。
【００５４】
図９は、図８の方法のさらなる態様を例示する。９００において、コンポーネント定義が見つからないときは、コンポーネント定義は要求されたコンポーネントのデータタイプに基づいて検索される。９０２において、カスタムコンポーネントが要求されたコンポーネントの欠如に基づいて作成される。９０４において、グローバル変数がコンポーネントに適用されて関連のないデータコンテキスト間のデータ交換を可能にする。９０６において、グローバル変数がプライベート変数でオーバライドされてプライベート変数をコンポーネントの子コンポーネントに課す。９０８において、要求されたコンポーネントが見つからないときは、コンテナコンポーネントが作成される。９１０において、コンテナコンポーネントがベースコンポーネント関連データタイプ特性をロードされる。９１２において、コンテナコンポーネントがコンポーネントとして出力される。
【００５５】
図１０は、代替視覚化方法を例示する。１０００において、コンポーネント実行環境に基づいて、コンポーネントを求める要求が受信される。１００２において、コンポーネントに関連するコンポーネント定義が検索される。１００４において、コンポーネント定義が見つかった場合は、コンポーネント定義のための１つまたは複数のデータ定義が選択される。１００６において、コンポーネント定義が見つからないときは、要求されたコンポーネントに関連するデータタイプに基づいてカスタムコンポーネントが作成される。１００８において、グローバル変数がコンポーネントまたはカスタムに適用されて関連のないデータコンテキスト間のデータ交換を可能にする。１０１０において、１つまたは複数のデータ定義がコンポーネント定義によって自動的に構成されて環境実行時に実行環境においてコンポーネントを出力する。
【００５６】
図１１は、図１０の方法のさらなる態様を例示する。１１００において、グローバル変数がプライベート変数でオーバライドされてコンポーネントの子コンポーネントにプライベート変数を課す。１１０２において、要求されたコンポーネントが見つからないときは、コンテナコンポーネントが作成される。１１０４において、コンテナコンポーネントがベースコンポーネント関連データタイプ特性をロードされる。１１０６において、コンテナコンポーネントがコンポーネントとして出力される。１１０８において、コンポーネントに渡されるべきデータがパラメータノードを介して定義される。１１１０において、特性の子コンポーネントへのバインディングおよび特性のデータコンポーネントへのバインディングを含む親コンポーネントが構成される。
【００５７】
図１２は、構成エンジンにおいてコンポーネントを取得する方法を例示する。１２００において、コンポーネントが取得される（例えば、「コンポーネントを取得する」コールを介して）。１２０２において、ターゲットデータタイプが取得される。１２０４において、ターゲットデータタイプのためのコンポーネントが存在するかどうかを判定するためにチェックが行われる。存在しない場合は、フローは１２０６に進み、コンポーネントコンテナを作成する。コンポーネントは、１つまたは複数の関連データ特性を有してよい。１２０８において、コンポーネントのための特性タイプが取得される。１２１０において、特性タイプのためのコール「コンポーネントを取得する」が行われる。１２１２において、コンポーネントがコンテナに付加される。フローは１２０８に戻り、完了するまで続く。すべてのデータ特性およびタイプがコンテナに適用された後に、フローは、１２１４に進み、結果を返す。１２０４において、チェックがターゲットデータタイプのためのコンポーネントが存在すると判定した場合は、フローは１２１６に進み、コンポーネントを選択し、次いで、１２１６において結果を返す。
【００５８】
図１３は、構成エンジンにおいてコンポーネントを取得するさらに詳細な方法を例示する。１３００において、ターゲットタイプおよびデータタイプなどの機能パラメータが受信される。１３０２において、ターゲットタイプおよびターゲット名のために定義されたコンポーネントに関してチェックが行われる。そうである場合は、フローは１３０４に進み、インターフェースを検証する。あるいは、ターゲットタイプおよびターゲット名のためのコンポーネントが存在しない場合は、フローは１３０６に進み、その結果、タイプシステムルックアップを使用して特性ごとにデータタイプのためのコンポーネントが定義される。そうである場合は、フローは１３０４に進み、インターフェースを検証する。チェックを行ってインターフェースを検証するためにタイプシステム１３０８へのアクセスが提供される。インターフェースが検証された後は、フローは１３１０に進み、コンポーネントタイプをチェックする。ユニットコンポーネントであれば、フローは１３１２に進み、正しいプラットフォームのためのユニットコンポーネントのインスタンスを作成し、すべての宣言されたパラメータをユニットコンポーネントに渡す。１３１４において、ローダがＵＸ構成システム（例えば、ＸＡＭＬ、ＭＥＦなど）のためのアセンブリをロードすることができる。
【００５９】
１３１０において、コンポーネントタイプが合成コンポーネントである場合は、フローは１３１６に進み、構成のコンポーネントに関する値を設定して（例えば、ＸＭＬで書かれた）構成において子ノードをウォークする。これは、パラメータノード（１つまたは複数）１３１８からのパラメータ値、コンポーネントノード（１つまたは複数）１３２０からのパラメータ、および１３２２の「パラメータからデータを構築する」から提供される子ノードからのパラメータセットを受信することを含む。タイプＩＤは、１３２２においてデータを構築するためにコンポーネントノード１３２０から送信される。１３２４においては、コンポーネントノード１３２０から受信された名称およびターゲット情報に基づいて、データおよび名称として、ルックアップのための名称として、ターゲットによって参照されるコンポーネント。
【００６０】
１つまたは複数のコンポーネントが実行のプロセスおよび／またはスレッドの中に存在してよく、コンポーネントは、１つのコンピュータ上にローカライズされてもよく、および／または２つ以上のコンピュータ間に分散されてもよい。用語「例示的」は、本明細書では、実施例、例、または例示として役立つことを意味するために使用されてよい。本明細書で「例示的」として示されているいかなる態様または設計も、必ずしも他の態様または設計より好ましいまたは有利であると解釈されるわけではない。
【００６１】
次に、図１４を参照すると、開示されたアーキテクチャによる構成を実行するコンピューティングシステム１４００のブロック図が例示されている。コンピューティングシステム１４００の様々な態様のための追加のコンテキストを提供するために、図１４および以下の説明は、様々な態様がそこで実施され得る適切なコンピューティングシステム１４００の簡単な全般的説明を提供することを意図するものである。上記の説明は１つまたは複数のコンピュータ上で実行することができるコンピュータ実行可能命令の一般的なコンテキストにおいてであるが、新規の実施形態はまた他のプログラムモジュールと組み合わせておよび／またはハードウェアおよびソフトウェアの組合せとして実施され得ることを当業者は理解するであろう。
【００６２】
様々な態様を実施するためのコンピューティングシステム１４００は、処理ユニット（１つまたは複数）１４０４、システムメモリ１４０６などのコンピュータ可読ストレージ、およびシステムバス１４０８を有するコンピュータ１４０２を含む。処理ユニット（１つまたは複数）１４０４は、シングルプロセッサ、マルチプロセッサ、シングルコアユニットおよびマルチコアユニットなど、様々な市販のプロセッサのいずれでもよい。さらに、新規の方法は、それぞれが１つまたは複数の関連デバイスに動作可能に結合され得るミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ（例えば、デスクトップ、ラップトップなど）、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのまたはプログラマブルなコンシューマ電子機器、および同種のものを含めて、他のコンピュータシステム構成によって実行され得ることを当業者は理解するであろう。
【００６３】
システムメモリ１４０６は、揮発性（ＶＯＬ）メモリ１４１０（例えば、ランダムアクセスメモリ（ＲＡＭ））および不揮発性メモリ（ＮＯＮ−ＶＯＬ）１４１２（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなど）などのコンピュータ可読ストレージ（物理的記憶媒体）を含んでよい。基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ１４１２に記憶されることが可能であり、起動中などにコンピュータ１４０２の中のコンポーネント間のデータおよび信号の通信を容易にする基本ルーチンを含む。揮発性メモリ１４１０はまた、データをキャッシュするためのスタティックＲＡＭなどの高速ＲＡＭを含んでよい。
【００６４】
システムバス１４０８は、処理ユニット（１つまたは複数）１４０４へのシステムメモリ１４０６を含むがそれに限定されないシステムコンポーネントのためのインターフェースを提供する。システムバス１４０８は、任意の様々な市販のバスアーキテクチャを使用して、（メモリコントローラを有するまたは有しない）メモリバス、および周辺バス（例えば、ＰＣＩ、ＰＣＩｅ、ＡＧＰ、ＬＰＣなど）にさらに相互接続することができるいくつかのタイプのバス構造体のいずれでもよい。
【００６５】
コンピュータ１４０２は、機械可読ストレージサブシステム（１つまたは複数）１４１４およびストレージサブシステム（１つまたは複数）１４１４をシステムバス１４０８および他の所望のコンピュータコンポーネントにインターフェースするためのストレージインターフェース（１つまたは複数）１４１６をさらに含む。ストレージサブシステム（１つまたは複数）１４１４（物理的記憶媒体）は、例えば、ハードディスクドライブ（ＨＤＤ）、磁気フロッピーディスクドライブ（ＦＤＤ）、および／または光ディスクストレージドライブ（例えば、ＣＤ−ＲＯＭドライブＤＶＤドライブ）のうちの１つまたは複数を含んでよい。ストレージインターフェース（１つまたは複数）１４１６は、例えば、ＥＩＤＥ、ＡＴＡ、ＳＡＴＡ、およびＩＥＥＥ１３９４などのインターフェース技術を含んでよい。
【００６６】
１つまたは複数のプログラムおよびデータは、オペレーティングシステム１４２０、１つまたは複数のアプリケーションプログラム１４２２、他のプログラムモジュール１４２４、およびプログラムデータ１４２６を含めて、メモリサブシステム１４０６、機械可読および取外し可能メモリサブシステム１４１８（例えば、フラッシュドライブフォームファクタ技術）、および／またはストレージサブシステム（１つまたは複数）１４１４（例えば、光、磁気、ソリッドステート）に記憶され得る。
【００６７】
１つまたは複数のアプリケーションプログラム１４２２、他のプログラムモジュール１４２４、およびプログラムデータ１４２６は、例えば、図１のシステム１００のエンティティおよびコンポーネント、図２のシステム２００のエンティティおよびコンポーネント、図３の構成３００、図４の親コンポーネント４００、図５のコンポーネント定義５００、図６のレジストリ６００、図７の図７００、および図８〜１３のフローチャートによって表された方法を含んでよい。
【００６８】
一般に、プログラムは、特定のタスクを実行するまたは特定の抽象データタイプを実施するルーチン、方法、データ構造、他のソフトウェアコンポーネントなどを含む。オペレーティングシステム１４２０、アプリケーション１４２２、モジュール１４２４、および／またはデータ１４２６のすべてまたは一部分はまた、例えば、揮発性メモリ１４１０などのメモリにキャッシュされることも可能である。開示されたアーキテクチャは、様々な市販のオペレーティングシステムまたはオペレーティングシステム（例えば、仮想マシン）の組合せによって実施されてよいことが理解されるべきである。
【００６９】
ストレージサブシステム（１つまたは複数）１４１４およびメモリサブシステム（１４０６および１４１８）は、データ、データ構造、コンピュータ実行可能命令などの揮発性ストレージまたは不揮発性ストレージのためのコンピュータ可読媒体として役立つ。そのような命令は、コンピュータまたは他のマシンによって実行される場合、コンピュータまたは他のマシンに方法の１つまたは複数の動作を実行させることができる。動作を実行するための命令は、命令がすべて同じ媒体上にあるかどうかに関係なく、命令が１つまたは複数のコンピュータ可読記憶媒体上にまとめて現れるように、１つの媒体上に記憶されてもよく、または複数の媒体にまたがって記憶されてもよい。
【００７０】
コンピュータ可読媒体は、コンピュータ１４０２によってアクセスされることが可能であり、取外し可能もしくは取外し不可能な揮発性および不揮発性内部および／または外部媒体を含む任意の入手可能な媒体でよい。コンピュータ１４０２では、媒体は、任意の適切なデジタルフォーマットでのデータの記憶に対応する。開示されたアーキテクチャの新規の方法を実行するためのコンピュータ実行可能命令を記憶するためのジップドライブ、磁気テープ、フラッシュメモリカード、フラッシュドライブ、カートリッジ、および同種のものなどの他のタイプのコンピュータ可読媒体が利用され得ることが当業者には理解されるはずである。
【００７１】
ユーザは、キーボードおよびマウスなどの外部入力デバイス１４２８を使用して、コンピュータ１４０２、プログラム、およびデータと対話することができる。他の外部ユーザ入力デバイス１４２８は、マイクロホン、ＩＲ（赤外線）リモートコントロール、ジョイスティック、ゲームパッド、カメラ認識システム、スタイラスペン、タッチスクリーン、ジェスチャシステム（例えば、目の動き、頭の動きなど）、および／または同種のものを含んでよい。ユーザは、タッチパッド、マイクロホン、キーボードなどのオンボードユーザ入力デバイス１４３０を使用して、コンピュータ１４０２、プログラム、およびデータと対話することができ、コンピュータ１４０２は、例えば、ポータブルコンピュータである。これらおよび他の入力デバイスは、入力／出力（Ｉ／Ｏ）デバイスインターフェース（１つまたは複数）１４３２を通ってシステムバス１４０８を介して処理ユニット（１つまたは複数）１４０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェースなどの他のインターフェースによって接続されてもよい。Ｉ／Ｏデバイスインターフェース（１つまたは複数）１４３２はまた、サウンドカードおよび／またはオンボードオーディオ処理機能など、プリンタ、オーディオデバイス、カメラデバイスなどの出力周辺装置１４３４の使用を容易にする。
【００７２】
１つまたは複数のグラフィックスインターフェース（１つまたは複数）１４３６（グラフィックス処理ユニット（ＧＰＵ）とも呼ばれる）は、コンピュータ１４０２と外部ディスプレイ（１つまたは複数）１４３８（例えば、ＬＣＤ、プラズマ）および／またはオンボードディスプレイ１４４０（例えば、ポータブルコンピュータ用）との間にグラフィックス信号およびビデオ信号を提供する。グラフィックスインターフェース（１つまたは複数）１４３６はまた、コンピュータシステムボードの一部分として製造されることも可能である
【００７３】
コンピュータ１４０２は、有線／無線通信サブシステム１４４２を介しての１つまたは複数のネットワークおよび／または他のコンピュータへの論理接続を使用して（例えば、ＩＰベースの）ネットワーク化された環境において動作することができる。他のコンピュータは、ワークステーション、サーバ、ルータ、パーソナルコンピュータ、マイクロプロセッサベースのエンタテインメント装置、ピアデバイス、または他の一般的なネットワークノードを含んでよく、通常、コンピュータ１４０２に関して記述された要素の多くまたはすべてを含んでよい。論理接続は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、ホットスポットなどへの有線／無線接続を含んでよい。ＬＡＮおよびＷＡＮネットワーキング環境は、オフィスおよび会社では普通であり、すべてインターネットなどのグローバル通信ネットワークに接続されることができるイントラネットなどの企業規模でのコンピュータネットワークを容易にする。
【００７４】
ネットワーキング環境において使用される場合、コンピュータ１４０２は、有線／無線ネットワーク、有線／無線プリンタ、有線／無線入力デバイス１４４４などと通信するために、有線／無線通信システム１４４２（例えば、ネットワークインターフェースアダプタ、オンボードトランシーバサブシステムなど）を介してネットワークに接続される。コンピュータ１４０２は、ネットワークを介して通信を確立するためのモデムまたは他の手段を含んでよい。ネットワーク環境では、コンピュータ１４０２に関するプログラムおよびデータは、分散システムに関連する場合のように、リモートメモリ／記憶デバイスに記憶されてもよい。図示されているネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段が利用されてよいことが理解されるであろう。
【００７５】
コンピュータ１４０２は、例えば、プリンタ、スキャナ、デスクトップコンピュータおよび／またはポータブルコンピュータ、携帯情報端末（ＰＤＡ）、通信衛星、無線で検出可能なタグに関連する装置の任意の部分または位置（例えば、キオスク、ニューススタンド、レストルーム）、および電話との無線通信（例えば、ＩＥＥＥ８０２．１１オーバジエア変調技術）において動作可能に配置された無線デバイスなど、ＩＥＥＥ８０２．ｘｘファミリの規格などの無線技術を使用して有線／無線デバイスまたはエンティティと通信するように動作可能である。これは、少なくともホットスポットのためのＷｉ−Ｆｉ（またはワイヤレスフィデリティ）、ＷｉＭａｘ、およびブルートゥース（商標）無線技術を含む。したがって、通信は、従来のネットワークの場合のように、予め定義された構造または単に少なくとも２つのデバイス間のアドホック通信でよい。Ｗｉ−Ｆｉネットワークは、安全で信頼できる高速無線接続を提供するためにＩＥＥＥ８０２．１１ｘ（ａ、ｂ、ｇなど）と呼ばれる無線技術を使用する。Ｗｉ−Ｆｉネットワークは、コンピュータを相互に、インターネットに、および（ＩＥＥＥ８０２．３関係媒体および機能を使用する）有線ネットワークに接続するために使用され得る。
【００７６】
例示され説明された諸態様は、いくつかのタスクが、通信ネットワークを介してリンクされたリモート処理デバイスによって実行される分散コンピューティング環境において実行されてよい。分散コンピューティング環境では、プログラムモジュールは、ローカルストレージおよび／またはリモートストレージおよび／またはメモリシステム内に配置されてよい。
【００７７】
上記で説明されてきたものは、開示されたアーキテクチャの実施例を含む。もちろん、コンポーネントおよび／または技術のすべての考えられる組合せを説明することは不可能であるが、多くのさらなる組合せおよび置換が可能であることを当業者は理解することができる。したがって、新規のアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内に入るすべてのそのような改変形態、変更形態、および変形形態を包含するものとする。さらに、用語「含む（ｉｎｃｌｕｄｅｓ）」が詳細な説明または請求項のいずれかで使用される限り、そのような用語は、「備える（ｃｏｍｐｒｉｓｉｎｇ）」が請求項において移行語として利用されるときに解釈されるように、用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」と同様に包括的であるものとする。
【図１】
0005938031.tif 000014
【図２】
0005938031.tif 000015
【図３】
0005938031.tif 000016
【図４】
0005938031.tif 000017
【図５】
0005938031.tif 000018
【図６】
0005938031.tif 000019
【図７】
0005938031.tif 000020
【図８】
0005938031.tif 000021
【図９】
0005938031.tif 000022
【図１０】
0005938031.tif 000023
【図１１】
0005938031.tif 000024
【図１２】
0005938031.tif 000025
【図１３】
0005938031.tif 000026
【図１４】
0005938031.tif 000027