(57)【要約】      （修正有）【課題】ユーザインターフェース（ＵＩ）を基礎となるデータに接続する簡単で柔軟な方法を提供すること。【解決手段】ＵＩ指定によるＵＩ要素の基礎となるデータ要素への１対多マッピングの宣言型指定を行うことにより、バインディングリストおよび優先順序が提供され、実行時にこれらのバインディングが評価される。正常に評価された優先順位の最も高いバインディングが実行され、ソースとターゲットの間の双方向転記を制御する。実行中に、すべての可能なデータバインディングパスが監視される。既存のバインディングより高い優先順位を持つバインディングが正常に評価された場合、既存のバインディングは終了され、新しいバインディングが実行される。【選択図】図６
2005301994.tif 000002
【特許請求の範囲】
【請求項１】
複数のバインディングステートメントを受け取るデータバインディングエンジンを備えたターゲットとソースをバインドするシステムであって、前記複数のバインディングステートメントは、少なくとも第１のバインディングステートメントおよび第２のバインディングステートメントを含むことを特徴とするシステム。
【請求項２】
前記複数のバインディングステートメントの各ステートメントは、実行の優先順位と関連付けられることを特徴とする請求項１に記載のシステム。
【請求項３】
前記実行の優先順位は、前記複数のバインディングステートメントの順序により示されることを特徴とする請求項２に記載のシステム。
【請求項４】
前記第１のバインディングステートメントは第１の優先順位に関連付けられ、前記第２のバインディングステートメントは第２の優先順位に関連付けられることを特徴とする請求項２に記載のシステム。
【請求項５】
前記第１の優先順位が前記第２の優先順位より上位であると判断されると、前記第１のバインディングステートメントが評価されることを特徴とする請求項４に記載のシステム。
【請求項６】
前記第１のバインディングステートメントが正常に評価されると判定すると、前記第１のバインディングステートメントが実行されることを特徴とする請求項５に記載のシステム。
【請求項７】
前記実行の優先順位は、
前記第１の優先順位が最も高い優先順位であり、前記第２の優先順位が次に高い優先順位であり、前記第１のバインディングステートメントが正常に評価されず、前記第２のバインディングステートメントが正常に評価されると、前記第２のバインディングステートメントを実行する
を含むことを特徴とする請求項４に記載のシステム。
【請求項８】
前記第１のバインディングステートメントは、データソースを含むことを特徴とする請求項１に記載のシステム。
【請求項９】
前記データソースは、ＵＲＩを介してアクセスされるオブジェクトを含むことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記データソースは、ＸＭＬソースを含むことを特徴とする請求項８に記載のシステム。
【請求項１１】
前記データソースは、オブジェクトモデルを含むことを特徴とする請求項８に記載のシステム。
【請求項１２】
前記データソースは、データベース照会言語によりアクセスされるデータベースを含むことを特徴とする請求項８に記載のシステム。
【請求項１３】
前記第１のバインディングステートメントは、バインディングパスを含むことを特徴とする請求項１に記載のシステム。
【請求項１４】
前記バインディングパスは、ＸＭＬ  ＸＰａｔｈとして表されることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記バインディングパスは、オブジェクトパスを含むことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記第１のバインディングステートメントは、式を含むことを特徴とする請求項１に記載のシステム。
【請求項１７】
前記第１のバインディングステートメントが正常に評価されるとの判定は、前記式が真であると評価されるとの判定を含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記第２のバインディングステートメントは、デフォルト値を含み、前記第２のバインディングステートメントだけが正常に評価されたときに前記デフォルト値を用いてターゲットが更新されることを特徴とする請求項１に記載のシステム。
【請求項１９】
ターゲットを複数のデータ要素の少なくとも２つにバインドする方法であって、
少なくとも第１のバインディングステートメントおよび第２のバインディングステートメントを含む複数のバインディングステートメントを受け取るステップと、
前記第１のバインディングステートメントが最も高い優先順位に関連付けられ、前記第２のバインディングステートメントが次に高い優先順位に関連付けられる、前記複数のバインディングステートメントの実行の順序を示す優先順序を受け取るステップと、
前記第１のバインディングステートメントを実行するステップと
を備えたことを特徴とする方法。
【請求項２０】
前記第１のバインディングステートメントを正常に評価するステップをさらに備えたことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記優先順序は、前記複数のバインディングステートメントの順序により示されることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記第１のバインディングステートメントを実行するステップは、前記第１のバインディングステートメントにより示されたデータ要素を用いてターゲットを更新するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２３】
前記第１のバインディングステートメントが正常に評価されないと判定されると、前記第２のバインディングステートメントを評価することを特徴とする請求項１９に記載の方法。
【請求項２４】
前記第２のバインディングステートメントを正常に評価されると、前記第２のバインディングステートメントを実行することを特徴とする請求項２３に記載の方法。
【請求項２５】
前記複数のバインディングステートメントは、マークアップ言語によって定義されることを特徴とする請求項１９に記載の方法。
【請求項２６】
前記マークアップ言語は、ＨＴＭＬ、ＸＭＬおよびＸＡＭＬのいずれかであることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記第１のバインディングステートメントは、式値を含むことを特徴とする請求項１９に記載の方法。
【請求項２８】
前記第１のバインディングステートメントは、前記第１のバインディングステートメントが正常に評価され、前記第１のバインディングステートメント式が真と評価されると判定されると、実行されることを特徴とする請求項２７に記載の方法。
【請求項２９】
前記第２のバインディングステートメントは、デフォルト値を含み、前記デフォルト値はターゲットを更新するために用いられることを特徴とする請求項２３に記載の方法。
【請求項３０】
前記ターゲットは、ユーザインターフェースの要素であることを特徴とする請求項１９に記載の方法。
【請求項３１】
前記複数のバインディングステートメントに関連付けられた複数のデータバインディングパスに変更通知がないか監視するステップをさらに備えたことを特徴とする請求項１９に記載の方法。
【請求項３２】
前記変更通知を受け取ると、前記複数のバインディングステートメントを再評価するステップをさらに備えたことを特徴とする請求項３１に記載の方法。
【請求項３３】
宣言型マークアップ言語で書かれたバインディングステートメントの集合を用いて、ソースの複数のデータ要素のうちの少なくとも第１のデータ要素と第２のデータ要素にターゲットをマッピングするコンピュータ実行可能な命令を含むことを特徴とするコンピュータ読取り可能な媒体。
【請求項３４】
前記バインディングステートメントの集合における実行順序を指示するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３３に記載のコンピュータ読取り可能な媒体。
【請求項３５】
前記バインディングステートメントの集合が、前記第１のデータ要素および最も高い優先順位を示す第１の実行順序と関連付けられた第１のバインディングステートメントと、前記第２のデータ要素および２番目に高い優先順位を示す第２の実行順序と関連付けられた第２のバインディングステートメントとを含むよう指定するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３４に記載のコンピュータ読取り可能な媒体。
【請求項３６】
前記第１のバインディングステートメントを評価し、前記第１のバインディングステートメントが正常に評価されると判定されると、前記第１のバインディングステートメントを実行するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３５に記載のコンピュータ読取り可能な媒体。
【請求項３７】
前記第１のデータ要素の値を用いて前記ターゲットを更新するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３６に記載のコンピュータ読取り可能な媒体。
【請求項３８】
前記第１のデータ要素および前記第２のデータ要素に変更通知があるか監視し、前記変更通知を検出すると、前記バインディングステートメントの集合を再評価するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３５に記載のコンピュータ読取り可能な媒体。
【請求項３９】
前記第１のバインディングステートメントが正常に評価されないと判定されると、前記第２のバインディングステートメントを評価するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３５に記載のコンピュータ読取り可能な媒体。
【請求項４０】
前記第２のバインディングステートメントを評価し、前記第２のバインディングステートメントが正常に評価されると判定されると、前記第２のバインディングステートメントを実行するコンピュータ実行可能な命令をさらに備えたことを特徴とする請求項３９に記載のコンピュータ読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算処理に関し、より詳細には、優先バインディング技法による、ターゲットのいくつかのデータ要素へのマッピングに関する。
【背景技術】
【０００２】
本出願は、本出願と同時に出願した、「ＡＰＰＬＩＣＡＴＩＯＮ  ＯＦ  Ａ  ＤＡＴＡ−ＢＩＮＤＩＮＧ  ＭＥＣＨＡＮＩＳＭ  ＴＯ  ＰＥＲＦＯＲＭ  ＣＯＭＭＡＮＤ  ＢＩＮＤＩＮＧ」という名称の特許出願整理番号ＭＳＦＴ３４９０／３０７３３９．１に関連するものである。
【０００３】
ソフトウェアアプリケーションのユーザインターフェース（ＵＩ）を設計する作業は、退屈で時間のかかる作業である。開発者らは、通常、アプリケーションの基礎となるデータからＵＩの要素またはコンポーネントに、およびその逆にコードを書き込み、情報を転送する多大な時間を費やす。これは、開発者に時間を費やさせるのみならず、開発者をＵＩ設計に深く関与せざるを得なくさせることも意味する。ＵＩはますます視覚的に洗練されてきており、開発者ではなく専門の設計者にＵＩを構築させることが一層重要になっている。しかし、インターフェースを基礎となるデータに「接続する」には依然としてコードが必要とされるため、ＵＩ設計の作業を、開発者と設計者とで分担しなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
インターフェースを基礎となるデータに接続する簡単で柔軟な方法があれば役立つはずである。
【課題を解決するための手段】
【０００５】
優先バインディングのシステムおよび方法は、データ接続コードを必要とせずに、ＵＩを宣言的に定義することを可能にする。ＵＩ指定におけるＵＩ要素の１つまたは複数の基礎となるデータ要素への１対多マッピングの宣言型指定は、複雑なコード開発を必要とせずに洗練されたＵＩの構築を可能にする。バインディングリストおよび優先順序が提供される。実行時に、これらのバインディングが評価される。有効な結果であると評価された（すなわち、正常に評価された）優先順位が最も高いバインディングが実行され、ＵＩと基礎となるデータとの間での情報の転記を制御する。ＵＩが実行されている間、すべての可能なデータバインディングパスウェイが監視される。既存のバインディングより優先順位の高いバインディングが正常に評価された場合、既存のバインディングを終了し、新しいバインディングを実行する。
【０００６】
前述の発明の開示、および以下の例示的な実施形態の詳細な説明は、添付の図面と併せて読むことによってよく理解される。本発明を説明するために、図面には、本発明の例示的な構成を示す。しかしながら本発明は、開示の具体的方法および手段に限定されるものではない。
【発明を実施するための最良の形態】
【０００７】
（概要）
ＵＩ要素またはコンポーネントを基礎となるデータに「接続する」のに必要なコーディングを不要にするために、一般に「データバインディング」と呼ばれる機能は、設計者が基礎となるデータとＵＩとの間の接続を宣言的に記述することを可能にする。テキストボックスなどのＵＩ要素またはコンポーネントの、例えば、１つのデータ（すなわち、従業員の数またはカウント）との接続を記述することにより、プラットフォームはそのデータをＵＩに、またはＵＩから移動するプロセスを自動的に処理することができる。例えば、データバインディングを、以下のようなステートメントにより呼び出すことができる。
【０００８】
Text.TextContent=Bind("Employees.Count");
これは、ＵＩ上のテキストボックスに従業員数（すなわちモデルの状態）を表示するはずである。双方向バインディングは、ターゲットでの変化をモデルに反映させることも可能にする。例えば、以下のステートメントは双方向バインディングを呼び出す。
【０００９】
CheckBox.IsChecked=Bind("Employee.IsMarried");
上記のステートメントにおいては、モデルの状態を表示することに加えて、チェック状態に加えられた変更もＥｍｐｌｏｙｅｅ（従業員）モデルに即座に反映されるはずである。
【００１０】
この手法の欠点は、その厳密さである。例えば、単一のＵＩ要素が複数のデータ要素に接続されることがあり、それは、例えば、ＵＩ中の状況またはヘルプテキスト表示などで生じる場合がある。状況テキストは、ＵＩ中の他の状態に応じて異なるメッセージを示することができる。例えば、項目リストの１項目が選択された場合、状況テキストは、選択された項目に関する情報を示すことができる。何も選択されていない場合、テキストは、全リストに関する情報を示すことができる（例えば、テキストはリスト中の項目数を表示することができる）。
【００１１】
コードを使用すると、開発者は、従来のデータバインディングを用いて行われる１対１データマッピングより洗練されたデータとＵＩとの間の接続を記述することができるが、この手法は、設計者と開発者との両者をＵＩの開発に関与させる必要があるという前述の問題を抱える。
【００１２】
本発明は、より柔軟なシステムおよび方法を用いて１対１マッピングを拡張し、開発者の関与を必要とせずに設計者がより洗練されたＵＩを記述することができるようにすることにより、上記およびその他の問題に対処する。この手法を用いると、単一のＵＩが単一のデータ要素だけにバインドされるのではなく、バインディングのリストおよび優先順序を提供することができる。いくつかの実施形態では、優先順位は、ステートメントが出現する順序（すなわち、コードまたはマークアップ中でのステートメントの出現順序）で指示される。またはそれに替えて、バインディングステートメントの集合、およびバインディングが評価され、かつ／または実行される順序の指示（例えば、バインディングステートメントに関連付けられた優先順位標識によるものなど）も提供することができる。実行時にＵＩ要素がインスタンス化されると、これらのバインディングが評価され、データバインディングステートメントにより識別される特定のデータ要素が存在する場合（すなわち、ステートメントが正常に評価された場合）、そのバインディングはライブになり、ＵＩと基礎となるデータとの間のデータの転記を制御する。
【００１３】
ＵＩの存続期間の間に、データ要素のリスト中で参照される状態のいずれかが変化した場合、データバインディングエンジンは、バインディングリストを再評価し、優先順位が最も高い有効バインディングをサーチし直す。優先順位の最も高い有効バインディングが実行される。以下のステートメントは上記の例を記述するものとする。
【００１４】
StatusTextLabel.Text.Bindings.Add("Employees.SelectedItem.Name");
StatusTextLabel.Text.Bindings.Add("Employees.Count");
バインディング評価時に、本発明のいくつかの実施形態におけるデータバインディングエンジンは、まず、第１のバインディングを調べる。式
"Employee.SelectedItem.Name"
を正常に評価することができた場合、そのバインディングは有効であり、データバインディングエンジンは、そのバインディングをライブにし、必要に応じてデータを状況テキストラベルにコピーする。「Ｅｍｐｌｏｙｅｅｓ」という名前の現在のデータがないために、またはデータ中に現在選択されている項目がないために、あるいはＳｅｌｅｃｔｅｄＩｔｅｍが属性「Ｎａｍｅ」を持たないために、ステートメントが正常に評価されなかった場合、第１のバインディングは実行されず、次のバインディングが評価される。そのバインディングが有効である場合、それが実行される。どのバインディングも有効でなかった場合、バインディングは実行されず、ＵＩ要素との間でデータはコピーされない。
【００１５】
（例示的な計算処理環境）
図１および以下の説明は、本発明が実施され得る適当な計算処理環境の簡単で一般的な説明を行うためのものである。しかしながら、本発明との関連で使用するために、あらゆる種類のハンドヘルド、携帯式、その他の計算処理装置が意図されていることを理解すべきである。以下では汎用コンピュータについて説明するが、これは一例に過ぎず、本発明には、ネットワークサーバ相互運用性および相互作用を備えるシンクライアントさえあればよい。したがって、非常に僅かな、または最小限のクライアントリソースが関与するネットワークで接続され、ホスティングされたサービス環境、例えば、クライアント装置が単にワールドワイドウェブへのブラウザまたはインターフェースとしてだけ働くネットワーク化環境などで本発明を実施することができる。
【００１６】
必須ではないが、本発明は、開発者が使用するために、アプリケーションプログラミングインターフェース（ＡＰＩ）を介して実施することもでき、かつ／またはクライアントワークステーション、サーバ、その他の装置といった１台または複数のコンピュータにより実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況で記述されるネットワークブラウズソフトウェア内に含めることもできる。一般に、プログラムモジュールには、個々のタスクを実行し、または個々の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通常、プログラムモジュールの機能を、様々な実施形態において望みどおりに組み合わし、または分散することができる。さらに、本発明が他のコンピュータシステム構成を用いても実施され得ることを当業者は理解するであろう。本発明と共に使用するのに適し得る他の公知の計算処理システム、環境、および／または構成には、それに限定しないが、パーソナルコンピュータ（ＰＣ）、現金自動預け払い機、サーバコンピュータ、ハンドヘルドまたはラップトップ機器、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能家庭用電化製品、ネットワークＰＣ、マイクロコンピュータ、マインフレームコンピュータなどが含まれる。本発明は、通信ネットワークまたは他のデータ伝送媒体を介してリンクされたリモート処理装置によってタスクが実行される分散計算処理環境でも実施され得る。分散計算処理環境では、プログラムモジュールを、記憶装置を含むローカルとリモートとの両方のコンピュータ記憶媒体に配置することができる。
【００１７】
したがって、図１に、本発明を実施することができる適当な計算処理システム環境１００の一例を示すが、上記で明らかなように、計算処理システム環境１００は、適当な計算処理環境の一例に過ぎず、本発明の使用または機能の範囲に関するいかなる限定をも示唆するためのものではない。また、計算処理環境１００は、例示的な動作環境１００に示す構成要素のいずれか１つまたはそれらの組み合わせに関するいかなる依存性または要件を持つものとも解釈すべきではない。
【００１８】
図１を参照すると、本発明を実施する例示的なシステムは、コンピュータ１１０の形で汎用計算処理装置を含む。コンピュータ１１０の構成要素には、それに限定しないが、処理装置１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１を含むことができる。システムバス１２１は、様々なバスアーキテクチャのいずれかを用いたメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む様々な種類のバス構造のいずれでもよい。例をあげると、それに限定しないが、そのようなアーキテクチャには、ＩＳＡ（産業標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡ（ビデオ電子装置規格化協会）ローカルバス、（メザニンバスとも呼ばれる）ＰＣＩ（周辺装置相互接続）バスが含まれる。
【００１９】
コンピュータ１１０は、通常、様々なコンピュータ読取り可能な媒体を含む。コンピュータ読取り可能な媒体は、コンピュータ１１０からアクセスすることができる任意の利用可能な媒体とすることができ、それには揮発性と不揮発性との両方、取り外し可能と固定との両方の媒体が含まれる。例をあげると、それに限定しないが、コンピュータ読取り可能な媒体にはコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ読取り可能な命令、データ構造、プログラムモジュールまたはその他のデータといった情報の記憶のための任意の方法または技術で実施された揮発性と不揮発性との両方、取り外し可能と固定との両方の媒体が含まれる。コンピュータ記憶媒体には、それに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶他の磁気記憶装置、または所望の情報を格納するために使用することができ、コンピュータ１１０からアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、コンピュータ読取り可能な命令、データ構造、プログラムモジュールまたはその他のデータを、搬送波またはその他の搬送機構などの変調データ信号として実施する。「変調データ信号」という用語は、その特性の１つまたは複数が、その信号に情報を符号化するような方式で設定または変更されている信号を意味する。例を挙げると、それに限定しないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体が含まれる。上記のいずれの組み合わせも、コンピュータ読取り可能な媒体の範囲内に含むべきである。
【００２０】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形でコンピュータ記憶媒体を含む。始動時などに、コンピュータ１１０内の要素間の情報転送を支援する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１３３は、通常、ＲＯＭ１３１上に記憶される。ＲＡＭ１３２は、通常、処理装置１２０から直ちにアクセス可能であり、かつ／またはそれによって現在処理されているデータおよび／またはプログラムモジュールを含む。例として、それに限定しないが、図１ａに、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２１】
コンピュータ１１０は、他の取り外し可能／固定、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。例に過ぎないが、図１ａに、固定の不揮発性磁気媒体から読取りまたは書込みを行うハードディスクドライブ１４１、取り外し可能な不揮発性磁気ディスク１５２から読取りまたは書込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭやその他の光媒体など、取り外し可能な不揮発性光ディスク１５６から読取りまたは書込みを行う光ディスクドライブ１５５を示す。例示的な動作環境で使用することができる他の取り外し可能な／固定の、揮発性／不揮発性のコンピュータ記憶媒体には、それに限定しないが、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの固定のメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能なメモリインターフェースによってシステムバス１２１に接続される。
【００２２】
前述の、図１に示す各ドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ１１０にコンピュータ読取り可能な命令、データ構造、プログラムモジュールおよびその他のデータの記憶を提供する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでも、異なっていてもよい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくともそれらが異なるコピーであることを示すために、図では異なる符号を振ってある。ユーザは、キーボード１６２や、一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含むことができる。上記その他の入力装置は、多くの場合、システムバス１２１に結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）といった他のインターフェースおよびバス構造によって接続することもできる。
【００２３】
システムバス１２１には、ビデオインターフェース１９０などのインターフェースを介して、モニタ１９１または他の種類の表示装置も接続される。ノースブリッジなどのグラフィックスインターフェース１８２もシステムバス１２１に接続することができる。ノースブリッジは、ＣＰＵまたはホスト処理装置１２０とやりとりし、アクセラレーテッドグラフィックスポート（ＡＧＰ）通信を担うチップセットである。１つまたは複数のグラフィックス処理装置（ＧＰＵ）１８４はグラフィックスインターフェース１８２とやりとりすることができる。この点において、ＧＰＵ１８４は、一般に、レジスタ記憶などのオンチップ記憶装置を含み、ＧＰＵ１８４は、ビデオメモリ１８６とやりとりする。但し、ＧＰＵ１８４は、コプロセッサの一例に過ぎず、よってコンピュータ１１０には様々なコプロセシング装置が含まれ得る。システムバス１２１には、ビデオインターフェース１９０などのインターフェースを介して、モニタ１９１または他の種類の表示装置も接続され、ビデオインターフェース１９０はビデオメモリ１８６と通信することができる。コンピュータは、モニタ１９１以外に、スピーカ１９７やプリンタ１９６など他の周辺出力装置を含むこともでき、それらを、出力周辺インターフェース１９５を介して接続することができる。
【００２４】
コンピュータ１１０は、リモートコンピュータ１８０など、１台または複数のリモートコンピュータへの論理接続を用いてネットワーク化環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置その他一般のネットワークノードとすることができ、図１ａには記憶装置１８１だけを示すが、通常は、コンピュータ１１０に関連して前述した要素の多くまたは全てを含む。図１ａに示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークも含むことができる。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットではよく見られるものである。
【００２５】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用されるとき、コンピュータ１１０は、通常、モデム１７２またはインターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０または他の適当な機構を介してシステムバス１２１に接続することができる。ネットワーク化環境では、コンピュータ１１０に関連して示すプログラムモジュール、またはその一部を、リモート記憶装置にも格納することができる。例として、それに限定しないが、図１ａに、記憶装置１８１上にあるものとしてリモートアプリケーションプログラム１８５を示す。図示のネットワーク接続は例示的なものであり、コンピュータ間で通信を確立する他の手段も使用され得ることは理解されるであろう。
【００２６】
コンピュータ１１０またはその他のクライアント装置をコンピュータネットワークの一部として配置することができることは、当業者は理解するであろう。この点において、本発明は、任意の数のメモリまたは記憶ユニット、および任意の数の記憶ユニットまたはボリュームにわたって実行される任意の数のアプリケーションおよびプロセスを備える任意のコンピュータシステムに関係する。本発明は、リモートまたはローカル記憶を有するネットワーク環境に配置されたサーバコンピュータおよびクライアントコンピュータを備える環境に適用され得る。プログラミング言語機能、解釈および実行機能を有する独立型計算処理装置にも本発明を適用することができる。
【００２７】
（優先データバインディングを実行するシステムおよび方法）
図２に、本発明のいくつかの実施形態による優先バインディングを実行する例示的なシステムを示す。そのようなシステムの全体または一部は、図２の例示的なコンピュータ２０２などの１台または複数のコンピュータ上に存在することができる。コンピュータ２０２には、図１に関して説明したコンピュータ１１０などのコンピュータを含むことができる。優先バインディングを実行するシステムは、以下の要素、すなわち、データバインディングコンポーネント２０８、ソース２０６、および／またはターゲット２０３の１つまたは複数を含むことができる。
【００２８】
ソース２０６は、ソースオブジェクト２１０ａ、２１０ｂなどで表される１つまたは複数のソースオブジェクトを含むことができる。ソースオブジェクト２１０ａ、２１０ｂなどは、図２にソースオブジェクト２１２ａなどで表す、１つまたは複数の子ソースオブジェクトに関連付けることができる。本発明のいくつかの実施形態では、ソース２０６はモデルを表す。本発明のいくつかの実施形態におけるモデルは、基礎となる状態の集合を表す基礎となるアプリケーション論理である。
【００２９】
例えば、ユーザがファイルシステムを探索できるようにするアプリケーションを考察する。この例におけるアプリケーションでのモデルは、ファイルシステム、すなわち、選択されたディレクトリのフォルダおよびそれらのフォルダ内のファイルの集合とすることができる。１つのモデルにいくつかのビューをバインドすることができる。モデルにバインドされたビューは、そのモデルに依存することができる。但し、本発明のいくつかの実施形態では、モデルはそれら１つまたは複数のビューに依存しない。モデルは、そのオブジェクトの１つでの属性が変化した場合、または状態の変化が生じた場合、変更通知を送ることができる。例えば、新しいファイルがフォルダに追加された場合に、変更通知を送ることができる。
【００３０】
ターゲット２０３は、図２にターゲットオブジェクト２０４ａ、２０４ｂ他で表す１つまたは複数のターゲットオブジェクトを含むことができる。ターゲットオブジェクト２０４ａ、２０４ｂ他は、１つまたは複数の子ターゲットオブジェクト（図示せず）に関連付けることができる。本発明のいくつかの実施形態では、ターゲットは、ビューまたはユーザインターフェースとすることができる。１つまたは複数のビューを１つのモデルにバインドし、基礎となるモデルの状態を表示させることができる。本発明のいくつかの実施形態では、ビューまたはユーザインターフェースは、ＨＴＭＬ（ハイパーテキストマークアップ言語）、ＸＭＬ（拡張可能なマークアップ言語）、ＸＡＭＬ（拡張可能なアプリケーションマークアップ言語）、その他適当なマークアップ言語などのマークアップ言語で定義され、そこでユーザインターフェースの外観が定義され、ユーザインターフェースの諸要素またはコンポーネントが定義される。ターゲットオブジェクトは、それに限定しないが、メニュー項目、ボタン、テキストコントロール、リストボックスといったユーザインターフェース要素またはコントロールとすることができる。前述のファイルシステムの例では、例示的なユーザインターフェースは、現在選択されているフォルダ中のファイルのリストを表示することができる。
【００３１】
ターゲットをソースに（例えば、ユーザインターフェースを基礎となるモデルに）バインドするために、本発明のいくつかの実施形態では、イベントハンドラを用いてユーザインターフェースと基礎となるモデルとの関係を維持するコードによってバインディングを明示的に定義するのではなく、データソースおよび、それに限定しないが、問い合わせパスなどのバインディングパスを指定することにより、ユーザインターフェースコンポーネントを表すオブジェクトが基礎となるモデルオブジェクトにバインドされる。問い合わせの任意の一部が変化した場合、オブジェクトによって変更通知が送られ、優先データバインディングエンジンが変更通知を検出し、適当な（１つまたは複数の）オブジェクトを更新する。問い合わせされている対象は実行中のプログラム内のライブオブジェクトであることが理解されるであろう。本発明のいくつかの実施形態では、参照されるデータソースは、それに限定しないが、ＵＲＩ（ユニフォームリソース識別子）で指定されたオブジェクト、データベース問い合わせを介してアクセスされるデータベース、プログラムモデルなどどんな種類のデータソースでもよい。問い合わせパスを、オブジェクトパス、ＸＭＬ  ＸＰａｔｈ式などとして指定することができる。
【００３２】
本発明のいくつかの実施形態では、データバインディングコンポーネント２０８は、いくつかのソースオブジェクト（例示的なソースオブジェクト２１０ａ、２１０ｂ他、２１２ａ他など）のいずれかの、ターゲットオブジェクト（例示的なターゲットオブジェクト２０４ａ、２０４ｂ他など）への動的バインディングを可能にする優先データバインディングエンジンである。優先データバインディングエンジン２０８は、ソースオブジェクトへの変更が関連するターゲットオブジェクト上に自動的に反映され、逆もまた同様であるように、オブジェクト（オブジェクト２０４ａ、２０４ｂ他、２１０ａ、２１０ｂ他、２１２ａ他など）に関する属性変更通知を聴取（ｌｉｓｔｅｎ）することができる。ターゲットオブジェクトは、データソースと関連付けることができ、それによってそのターゲットオブジェクトがバインドされているソースモデルを識別することができる。優先データバインディングエンジン２０８は、ターゲットの特定の部分のソースの特定の部分へのバインディングを可能にする属性パスをサポートすることができる。本発明のいくつかの実施形態では、ターゲットオブジェクトのソースオブジェクトへのバインディングは、ＨＴＭＬ（ハイパーテキストマークアップ言語）、ＸＭＬ（拡張可能なマークアップ言語）、ＸＡＭＬ（拡張可能なアプリケーションマークアップ言語）、その他適当なマークアップ言語などのマークアップ言語で宣言的に行われることが可能である。データバインディングエンジン２０８は、ターゲットオブジェクトのデータソース上でソースオブジェクトをサーチし、適当な更新を行うことができ、同様に、ソースオブジェクトのデータソース上でターゲットオブジェクトをサーチし、適当な更新を行うこともできる。
【００３３】
本発明のいくつかの実施形態では、オブジェクト指向オブジェクトのグラフが生成され、グラフ中では、１つ、若干、またはすべてのオブジェクトが他のオブジェクトを指し示してグラフを形成し、各矢印は、１つのオブジェクトから属性を表すグラフ中の別のオブジェクトを指し示す。オブジェクト指向オブジェクトの例示的なグラフを図３ａの一部に示す。図３ａおよび３ｂに、ファイルシステム（ファイルおよびフォルダ）の一例を提示する。意図されている発明は、ファイルおよびフォルダや、ファイルシステム探索アプリケーションのモデルに限定されるものではなく、それに限定しないが、オブジェクト指向プログラミング言語領域中のオブジェクトなど、データソースおよび属性の階層として表すことのできる任意の適当な対象が意図されていることが、当業者には理解されるであろう。図３ａでは、例えば、オブジェクト３２４は、ファイルシステム探索アプリケーション（モデル）を表し、オブジェクト３２３および３１２は、そのファイルシステム内のフォルダおよびファイルオブジェクトを表すことができる。オブジェクト３２２および３１６は、それぞれ、フォルダオブジェクト３２３およびファイルオブジェクト３１２での名前属性を表すことができる。本発明のいくつかの実施形態では、優先データバインディングエンジン３２０は、データソース（オブジェクト３２４など）、およびデータソース（オブジェクト３２４）からデータパス（オブジェクト３２３からオブジェクト３２２へ）によって識別されるオブジェクトへのパスを表す属性パス（「ＣｕｒｒｅｎｔＦｏｌｄｅｒ．Ｎａｍｅ」など）の指定を可能にする。したがって、この例では、優先データバインディングエンジン３２０は、オブジェクトグラフに問い合わせて、パス「ＣｕｒｒｅｎｔＦｏｌｄｅｒ．Ｎａｍｅ」によってどのオブジェクトが表されているか（この場合にはオブジェクト３２２）を判定し、オブジェクト３２２の内容を判定し、指定されたターゲットオブジェクト（ＵＩ３２８のテキストフィールド３３０など）を更新する。
【００３４】
図３ａでは、優先データバインディングエンジン３２０は、ソースオブジェクト３１２上の属性３１６（モデル３２４の一部）を、ターゲットオブジェクト３３０上の属性（ＵＩコンポーネントテキストフィールドなど）にバインドすることができる。優先データバインディングエンジン３２０は、属性変更通知を聴取することができる（例えば、モデル３２４の選択された項目オブジェクト３１２の名前属性３１６が変更された場合、選択された項目オブジェクト３１２によって変更通知を送ることができる）。優先データバインディングエンジン３２０は、変更通知の有無を聴取し、変更通知を検出すると、ソースとターゲット（ＵＩ要素、テキストフィールド３３０）を自動的に同期させることができる。
【００３５】
図３ｂに本発明のいくつかの実施形態による例示的な優先バインディングシステムを示す。図３ｂで、モデル３２４は、オブジェクト３２３（現在のフォルダ）および３１２（選択された項目）で表される１つまたは複数のオブジェクトを含み、現在のフォルダ３２３の（名前３２２で表される）１つまたは複数の属性および選択された項目３１２の（名前３１６で表される）１つまたは複数の属性を公開する。ＵＩ３２８は、図３ｂにテキストフィールド３３０で表す１つまたは複数のＵＩコンポーネントを含む。ＵＩ３２８の指定は、図３ｂにバインディング１  ３０５、バインディング２  ３０６・・・バインディングｎ  ３０８、フォールバック値３１０（任意選択）で表す１つまたは複数のバインディングステートメントが含まれる。（ＵＩに表示される）テキストフィールドの内容は、現在のフォルダの名前（オブジェクト３２２）または選択された項目の名前（オブジェクト３１６）にバインドされることができる。本発明のいくつかの実施形態におけるデータバインディングエンジン３２０は、バインディングのうちのどれが実行されるか、したがって、どのような内容がテキストフィールド３３０に表示されるかを判定する。評価するために１つまたは複数のバインディングステートメントを指定することができる。バインディングステートメントが提示される順序によって優先順位を決める、すなわち、提示される第１のステートメントを最も高い優先順位とし、第２のステートメントを次に高い優先順位とし、以下同様とすることが可能であるが、優先順位を識別する任意の適当な手段が意図されていることが理解されるであろう。例えば、優先順位を、関連するタグによって、マークアップ中の提示順序で（優先順位は上から下または下から上の順序とされる）、アルファベット順で、あるいは他の任意の適当な手段で指示することができる。図３ｂでは、バインディングステートメントの集合は、バインディング１  ３０５およびバインディング２  ３０６を含むが、任意の数のバインディングを指定することができる。本発明のいくつかの実施形態では、ステートメントの評価の順序を、優先順序によるが、バインディングステートメントはどんな順序でも評価することができることが理解されるであろう。本発明のいくつかの実施形態では、データバインディングエンジン３２０は、まず、バインディング１  ３０５を評価しようとする。バインディング１  ３０５は、現在のフォルダ３２３の名前３２２に関連付けられるものとする。バインディング１  ３０５が正常に評価された場合、現在のフォルダの名前がテキストフィールド３３０に表示される。バインディング２  ３０６は、選択された項目３１２の名前３１６に関連付けられるものとする。バインディング１  ３０５が正常に評価されなかった場合、データバインディングエンジン３２０は、バインディング２  ３０６を評価しようとする。バインディング２  ３０６が正常に評価された場合、選択された項目３１２の名称３１６がテキストフィールド３３０に表示される。また、本発明のいくつかの実施形態では、フォールバック値３１０を指定することができる。この場合、バインディング１  ３０５もバインディング２  ３０６も正常に評��されなかった場合には、フォールバック値３１０をテキストフィールド３３０に表示することができる。したがって、データバインディングエンジン３２０は、変更イベントの有無を聴取し、バインディングの集合のどれが実行されるか（すなわち、どれがライブバインディングか）判定し、現在ライブであるバインディングに従ってターゲット（ＵＩコンポーネントなど）を更新する。
【００３６】
本発明のいくつかの実施形態では、データバインディングエンジンは、すべてのオブジェクトに変更通知がないか連続して監視する。バインディングエンジンがより優先順位の高いバインディングでの変更通知を受け取った場合、そのバインディングが評価され、そのバインディングが正常に評価された場合、データバインディングエンジンは、そのより優先順位の高いバインディングを実行する。また、現在のバインディングが無効になった（例えば、項目が選択されず選択された項目がヌルになったためなどの）場合、式全体が正常に評価されなくなり、データバインディングエンジンはバインディング式の集合を再度評価する。正しく評価された優先順位が最も高い式が実行され、その表示が適当に更新される。
【００３７】
図４ａ〜ｃに、前述の内容を保つ際の可能なシナリオを示す一連のユーザインターフェースを示す。図４ａに、ファイルシステム（ファイルおよびフォルダ）がモデルである例示的なＵＩ４００を示す。Ｄｅｔａｉｌｓ（詳細）ペイン４０２は、現在の選択に関する状態を表示する。本発明のいくつかの実施形態では、Ｄｅｔａｉｌｓペイン４０２に何が表示されるかは、ＵＩ定義中の優先バインディングステートメントの集合を介して宣言的に指定される。本発明のいくつかの実施形態では、ＵＩは、ＨＴＭＬ（ハイパーテキストマークアップ言語）、ＸＭＬ（拡張可能なマークアップ言語）、ＸＡＭＬ（拡張可能なアプリケーションマークアップ言語）、その他の適当なマークアップ言語などのマークアップ言語によって定義される。Ｄｅｔａｉｌｓペイン４０２のテキスト内容（図３ａおよび３ｂのターゲットテキストフィールド３３０に対応する）は、ＵＩの定義で指定される優先バインディングリストにより、現在の選択（図３ａおよび３ｂの選択された項目３１２に対応する）および現在のフォルダ（現在のフォルダ３２３）に結び付けることができる。優先バインディングリストは、テキストコントロールが単一の選択の名前（最も高い優先順位）にバインドされることを指示することができ、単一の選択がない場合には、テキストは、現在のフォルダの名前にバインドされる。以下は、ＸＡＭＬで書かれた、前述の指定の一例である。
【００３８】
【表１】
2005301994.tif 000003
【００３９】
したがって、何も選択されていないとき、Ｄｅｔａｉｌｓペイン４０２は、現在のフォルダの名前４０４（「Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ」）を表示することができる。
【００４０】
項目の記述（「Ｆｉｌｅ  Ｆｏｌｄｅｒ（ファイルフォルダ）」４０６）およびその変更日時４０８もマークアップの類似の部分を指定することにより表示することができる。例えば、何かが選択されている場合、テキストコントロールを、単一の選択の記述にバインドすることができる。単一の選択がない場合、テキストを選択された項目数にバインドすることができる。どんな種類の選択もない場合、テキストを現在のフォルダの記述にバインドすることができる。以下は、ＸＡＭＬで書かれた、前述の指定の一例である。
【００４１】
【表２】
2005301994.tif 000004
【００４２】
図４ａには、選択された項目がないため、最初の２つのバインディングステートメントのどちらも評価されない。しかしながら、第３のステートメントは正常に評価され、そのため、現在のフォルダの記述（「ファイルフォルダ」）が評価されて、「Ｆｉｌｅ  Ｆｏｌｄｅｒ」がテキストフィールド４０６に表示される。図４ｂに、単一の項目が選択された後の図４ａの例示的なＵＩ４００を示す。図４ｂでは、項目「ＩＥＸＰＬＯＲＥ．ＥＸＥ」４１２が選択されている。項目「ＩＥＸＰＬＯＲＥ．ＥＸＥ」４１２は、図３ａおよび３ｂの選択された項目３１２に対応する。
【００４３】
次に、Ｄｅｔａｉｌｓペイン４０２は、選択された項目の名前（「ＩＥＸＰＬＯＲＥ．ＥＸＥ」４１４）、記述（「Ｆｉｌｅ（ファイル）」４１６）を表示する。テキストコントロールもその単一の選択のファイルサイズにバインドすることができる。単一の選択がない場合、テキストを選択された項目の集合によって公開される合計ファイルサイズにバインドすることができる。どんな種類の選択もない場合、テキストは、そのコントロールの種類でのデフォルト値、空ストリングを取ることができる。以下は、ＸＡＭＬで書かれた、前述の指定の一例である。
【００４４】
【表３】
2005301994.tif 000005
【００４５】
したがって、図４ｂでは、項目が選択されているため、ファイルサイズ４２０が表示される。マークアップの類似のブロックを指定し、変更日時４１８を表示することができる。
【００４６】
図４ｃに、複数の項目が選択された後の図４ａの例示的なＵＩ４００を示す。図４ｃでは、項目「ＨＭＭＡＰＩ．ＤＬＬ」４２２および「ＩＥＸＰＬＯＲＥ．ＥＸＥ」４１２が選択されている。この場合、Ｄｅｔａｉｌｓペイン４０２は、選択された項目の名前ではなくフォルダの名前（「Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ」）４０４と、選択された項目数４２４および合計ファイルサイズ４２６を表示する記述とを表示する。変更日時は表示されない。
【００４７】
本発明のいくつかの実施形態では、いくつかの項目を選択し、それらを、（おそらく「ファイル」タイプなどではなく「集合」タイプの）選択された項目すべてを含む項目の単一の集合として公開することができる。その項目の集合に何かが追加され、またはそこから除去された場合には、変更通知が送られ、バインディングエンジンにより更新が行われる。
【００４８】
本発明のいくつかの実施形態では、どのバインディングも有効でない場合にはデフォルト値が使用される。リテラル値をＵＩ定義で指定することができる。優先バインディングリスト全体のサーチで正常に評価されるバインディングステートメントが見つからなかった場合、リテラル値がターゲットに適用される。例えば、記述フィールドでのバインディングステートメントのいずれも正常に評価できなかった場合、テキストコントロールは、代わりに指定されたフォールバック値（「記述がありません」）を使用することができる。以下は、ＸＡＭＬで書かれた、前述の指定の一例である。
【００４９】
【表４】
2005301994.tif 000006
【００５０】
本発明のいくつかの実施形態では、優先バインディング機構は、さらなる柔軟性を実現するために各バインディングステートメントごとに任意選択の式を評価する。例えば、図４ａ〜ｃのファイルシステムＵＩのＤｅｔａｉｌｓペインでの名前フィールドの例に代替の手法を提供する式を指定することができる。このフィールドは、その選択に１つの項目だけしかない場合は選択された項目の名前にバインドされ、そうでない場合は現在のフォルダの名前にバインドされるものとする。以下のステートメントグループは、そのような結果を指定することができる。
【００５１】
【表５】
2005301994.tif 000007
【００５２】
その場合、２つの項目が選択されるものとする。ＳｅｌｅｃｔｅｄＩｔｅｍｓは０番目の項目を含むはずであり、その項目はＮａｍｅ属性を持つことができるが、バインディングステートメント１中の式は、ＳｅｌｅｃｔｅｄＩｔｅｍｓ．Ｃｏｕｎｔが１にならないために失敗する。その結果、バインディングステートメント１は正常に評価されず、バインディングステートメント２
【００５３】
【表６】
2005301994.tif 000008
【００５４】
が、バインディングステートメント１に関して前述したように評価される。
【００５５】
図５に、本発明の一実施形態による優先バインディングを指定、実行する方法の例示的な流れ図を示す。この方法の１つまたは複数のステップは任意選択とすることができる。図５のステップ５０２で、ソース定義が受け取られる。これには、モデルまたはアプリケーションのコーディングおよび／またはインスタンス化が関与することができる。例えば、開発者は、モデルを実施し、そこにバインドされる１つまたは複数の属性を公開することができる。ステップ５０４で、ターゲット定義が受け取られる。これには、ユーザインターフェースやユーザインターフェースのインスタンス化などのターゲットのコードまたはマークアップでの指定が関与することができる。例えば、設計者がマークアップ言語でユーザインターフェースを作成することもでき、開発者がコードでユーザインターフェースを作成することもできる。ステップ５０６で、１つまたは複数のバインディングステートメントの集合が受け取られ、実行の順序または優先順位が指示される。本発明のいくつかの実施形態では、優先順序は、ステートメントの順序で指示される。すなわち、ステートメントリスト中の第１のバインディングステートメントは優先順位が最も高いステートメントであり、ステートメントリスト中の第２のバインディングステートメントは優先順位が２番目に高いステートメントであり、以下同様である。またはこれに替えて、実行の優先順位は、バインディングステートメントに関連付けられたマーカまたは標識によって、あるいは他の任意の適当な手段によって指示することもできる。例えば、実行の優先順位を、上から下または下から上に提示されるバインディングステートメントの順序によって指示することができる。優先順位を指示する他の適当な手段も考えられる。本発明のいくつかの実施形態では、バインディングステートメントの指定は、ターゲットの定義に組み込むことができる（ステップ５０４）。これには、（開発者などによる）ターゲットとソースの間のデータ接続のコーディング、または前述の（設計者などによる）マークアップ中での１つまたは複数のバインディングステートメントの集合の指定が関与することができる。
【００５６】
ステップ５０８で、モデルおよびユーザインターフェースを含むアプリケーションが生成され、かつ／またはインスタンス化されることができる。バインディングエンジンは、モデルのパス上で聴取し、データバインディングステートメントの集合を優先順に実行する。すなわち、正常に評価された優先順位の最も高いステートメントが実行され、したがって、前述のようにターゲットとモデルが同期される。本発明のいくつかの実施形態では、バインディングステートメントは、優先実行順に評価されるが、バインディングステートメントは、ランダム順序で、現在実行中のステートメントの地点から、指示された評価順序で、あるいは他の適当な順序で評価することもできる。
【００５７】
図６は、前述のバインディングステートメントの集合の評価を示す流れ図である。ステップ６０２で、バインディングステートメントが評価される。それが正常に評価され、式が真である場合（ステップ６０４、任意選択）、ステップ６０６でそのオブジェクトの値が適用される。バインディングステートメントが正常に評価されなかった場合、次のバインディングステートメントが（もしあれば）評価される（ステップ６０８）。次のデータバインディングステートメントが正常に評価され、式が真である場合（ステップ６１０、任意選択）、ステップ６１２で、そのバインディングステートメントで指示される値が適用される。次のバインディングステートメントが正常に評価されなかった場合、その次のバインディングステートメントが（もしあれば）評価される。これらのステップは、ステートメント集合中のすべてのバインディングステートメントが評価されるまで繰り返される。前述のように、バインディングステートメントは、優先順に評価することも、他の任意の順序で評価することもできる。正常に評価された（それに関連する式がある場合は、それが真である）優先順位の最も高いバインディングステートメントが実行される。ステートメント集合中のバインディングステートメントすべてが評価され、どれも正常に評価されず、かつフォールバック値が指定されている場合（ステップ６１４、任意選択）、そのフォールバック値を用いてターゲットを更新することができる。フォールバックステートメントが設けられていない場合は、ターゲット値を未設定のまましておくことも、その値をクリアすることも、あるいはその値をデフォルト値に設定することもできる。
【００５８】
図３ｂおよび図４ｂに戻り、バインディングステートメント１が
【００５９】
【表７】
2005301994.tif 000009
【００６０】
であるものとする。
【００６１】
ステップ６０２で、バインドパス「Ｍｏｄｅｌ．ＳｅｌｅｃｔｅｄＩｔｅｍ．Ｎａｍｅ」が評価される。オブジェクトグラフに問い合わせされ、以下を判定することができる。
【００６２】
データソース、モデルにおいて、ＳｅｌｅｃｔｅｄＩｔｅｍ属性が存在するか？
真である場合、オブジェクト値はヌルでないか？
真である場合、オブジェクトは「Ｎａｍｅ」属性を持つか？
真である場合、式が定義されているか？
真である場合、式を評価する。式は正しく評価されたか？
真である場合、そのバインディングを適用する。
【００６３】
偽である場合、そのバインディング評価は失敗する。
【００６４】
前述の例では、モデル上にＳｅｌｅｃｔｅｄＩｔｅｍ属性が存在し、名前属性を持ち（ＩＥＸＰＬＯＲＥ．ＥＸＥ）、式はないため、バインディングステートメント１が適用され、ＵＩテキストフィールドに表示するためにＩＥＸＰＬＯＲＥ．ＥＸＥが返される。このステップ群を、正常に評価される優先順位の最も高いバインディングステートメントが見つかるまで、評価される各バインディングステートメントに繰り返すことができることが理解されるであろう。
【００６５】
バインディングエンジンは、変更通知の有無を監視することができる。例えば、オブジェクト３１６から変更通知が送られた場合、優先順位の最も高いステートメントを決定するためにそのバインディングステートメントが再評価される。
【００６６】
本明細書で説明した様々な技法は、ハードウェアまたはソフトウェアと、あるいは適切な場合には、両者の組み合わせと関連させて実施され得る。したがって、本発明の方法および装置、あるいはその一部の態様または部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、またはその他任意の機械読取り可能な記憶媒体など、有形の媒体に実施されたプログラムコード（すなわち命令）の形を取り得るものであり、プログラムコードが、コンピュータなどのマシンに読み込まれ、そのマシンによって実行されると、そのマシンが本発明を実施する装置になる。プログラム可能なコンピュータ上でプログラムコードを実行する場合には、その計算処理機器は、一般に、プロセッサ、プロセッサにより読取り可能な（揮発性および不揮発性のメモリおよび／または記憶要素を含む）記憶媒体、少なくとも１つの入力装置、および少なくとも１つの出力装置を含むことになる。例えばデータ処理ＡＰＩなどを介して、本発明のドメイン別プログラミングモデル態様の作成および／または実施を利用することができる１つまたは複数のプログラムは、好ましくは、コンピュータシステムとやりとりするために高水準手続き型またはオブジェクト指向プログラミング言語で実施される。しかしながら、その（１つまたは複数の）プログラムは、必要に応じて、アセンブリ言語や機械語でも実施され得る。いずれにしても、言語は、コンパイラ型またはインタープリタ型言語とし、ハードウェア実装形態と組み合わせることができる。
【００６７】
以上、本発明を、様々な図の好ましい実施形態との関連で説明してきたが、本発明を逸脱することなく、本発明の同じ機能を実行するために、他の類似の実施形態を用いることもでき、前述の実施形態に改変および追加を行えることもできることを理解すべきである。それゆえに、本発明は、いかなる単一の実施形態にも限定すべきではなく、添付の特許請求の範囲による広がりと範囲で解釈すべきである。
【図面の簡単な説明】
【００６８】
【図１】本発明の諸態様が実施され得る例示的な計算処理環境を示す構成図である。
【図２】本発明の一実施形態による優先バインディングを実行する例示的なシステムを示す構成図である。
【図３ａ】本発明の一実施形態による図２をより詳細に示す図である。
【図３ｂ】本発明の一実施形態による図３ａをより詳細に示す図である。
【図４ａ】本発明の一実施形態による例示的なユーザインターフェースを示す図である。
【図４ｂ】本発明の一実施形態による例示的なユーザインターフェースを示す図である。
【図４ｃ】本発明の一実施形態による例示的なユーザインターフェースを示す図である。
【図５】本発明の一実施形態による優先バインディングの例示的な方法を示す流れ図である。
【図６】本発明の一実施形態による優先バインディングステートメントのリストを評価する例示的な方法を示す流れ図である。
【符号の説明】
【００６９】
１４１  ハードディスクドライブ
１５１  磁気ディスクドライブ
１５５  光ディスクドライブ
１８１  記憶措置
４００  ユーザインターフェース
４０２  Ｄｅｔａｉｌｓペイン
【図１】
2005301994.tif 000010
【図２】
2005301994.tif 000011
【図３ａ】
2005301994.tif 000012
【図３ｂ】
2005301994.tif 000013
【図４ａ】
2005301994.tif 000014
【図４ｂ】
2005301994.tif 000015
【図４ｃ】
2005301994.tif 000016
【図５】
2005301994.tif 000017
【図６】
2005301994.tif 000018