(57)【要約】  拡張可能なコントロール設計フレームワークは、コントロール（ビジュアルおよび非ビジュアル）と、その他のコンポーネントとを、宣言的に定義するために利用される。コントロールの機能は、アクションと呼ばれるオブジェクトを介して振る舞いおよびセマンティクスを宣言的に追加することによって、拡張されることができる。コントロールは、振る舞いおよびセマンティクスの追加によって、過度に複雑になることはない。アクションオブジェクトは、明確に定義された機能をカプセル化し、既存のコントロールに関連付けられる。アクションオブジェクトは、イベントが起こされたときに機能が自動的に実行されるように、イベントまたはトリガとも関連付けられる。機能は、プログラミングコードに馴染みのないユーザが設計環境においてアプリケーション用のロジックおよび機能を容易に定義することができるように、独立のアプリケーションコンポーネント内にパッケージ化されることができる。
2009508254.tif 000002
【特許請求の範囲】
【請求項１】
コントロールアクションを宣言的に定義するためのコンピュータ実施方法であって、前記方法は、
アクションをコントロールに関連付けるステップ（６００）であって、前記アクションおよび前記コントロールは、独立にカスタマイズ可能なコンポーネントであるステップと、
イベントを前記コントロールに関連付けるステップ（６１０）と、
前記イベントが起こされたことを検出するステップ（６２０）と、
前記イベントが起こされた時に関連付けられた時に前記アクションを実行するステップ（６３０）であって、値に基づいてロジック動作を実行するステップを含むステップと
を含むことを特徴とするコンピュータ実施方法。
【請求項２】
前記アクションを実行するステップは、論理セマンティクスを前記コントロールに関連付けるステップをさらに含み、前記論理セマンティクスは、前記コントロールに関連付けられたアプリケーション（２３０）に特有であることを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項３】
前記アクションを実行するステップは、前記イベントが起こされた回数を決定するステップ（３６０）をさらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項４】
前記アクションを実行するステップは、アプリケーションに関連付けられたロジックの実行を開始するステップ（２８５）をさらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項５】
前記アクションを実行するステップは、アプリケーションに関連付けられたロジックの実行を再開するステップ（３７０）をさらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項６】
前記アクションを実行するステップは、前記コントロールに効果を適用するステップ（５５０）をさらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項７】
前記イベントが起こされたことを検出するステップは、前記コントロールで値を受け取るステップ（４８０）をさらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項８】
前記アクションを実行するステップは、前記値の有効性を確認するステップ（３５０）をさらに含むことを特徴とする請求項７に記載のコンピュータ実施方法。
【請求項９】
前記アクションを実行するステップは、前記値に関連する誤ったデータ割り当てを解決するステップ（４２０）をさらに含むことを特徴とする請求項７に記載のコンピュータ実施方法。
【請求項１０】
前記アクションを実行するステップは、前記コントロールに関連するプロパティを発見するステップ（４８０）をさらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１１】
前記イベントが起こされた時に関連付けられた時は、前記イベントが起こされる前の時である（７００）ことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１２】
前記イベントが起こされた時に関連付けられた時は、前記イベントが起こされた後の時である（７００）ことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１３】
コントロールアクションを宣言的に定義するためのシステムであって、
第１のアクション（３５０）と、
前記第１のアクション（３５０）に関連付けられた第２のアクション（３６０）と、
前記第１のアクション（３５０）および前記第２のアクション（３６０）に関連付けられたコントロール（３１０）であって、前記第１のアクション（３５０）、前記第２のアクション（３６０）、および前記コントロールは、独立にカスタマイズ可能なコンポーネントであるコントロールと、
前記コントロールに関連付けられたイベントであって、前記第１のアクション（３５０）および前記第２のアクション（３６０）は、前記イベントが起こされた時に実行されるイベントと
を含むことを特徴とするシステム。
【請求項１４】
前記第２のアクション（３６０）は、前記第１のアクション（３５０）内に入れ子にされることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記第２のアクション（３６０）は、列挙型プロパティの１つの選択が、前記第２のアクション（３６０）に関連付けられた有効なプロパティ選択を引き起こすように、前記列挙型プロパティに関連付けられることを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記第２のアクション（３６０）は、前記第２のアクション（３６０）が実行される場合に、第３のアクション（３７０）の実行を取り消すことを特徴とする請求項１３に記載のシステム。
【請求項１７】
コントロールアクションを宣言的に定義するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記命令は、
第１のアクションをコントロールに関連付けるステップ（６００）であって、前記第１のアクションおよび前記コントロールは、独立にカスタマイズ可能なコンポーネントであるステップと、
イベントを前記コントロールに関連付けるステップ（６１０）と、
前記コントロールで値を受け取るステップ（４８０）と、
前記イベントが起こされた時に前記第１のアクションを実行するステップ（６３０）であって、前記値に基づいてロジック動作を実行するステップを含むステップと、
第２のアクションを前記第１のアクションと前記コントロールの少なくとも一方に関連付けるステップ（６１０）であって、前記第１のアクション、前記第２のアクション、および前記コントロールは、独立にカスタマイズ可能なコンポーネントであるステップと、
前記イベントが起こされた時に前記第２のアクションを実行するステップ（６３０）と
を含むことを特徴とするコンピュータ可読媒体。
【請求項１８】
前記第２のアクションを前記第１のアクションに関連付けるステップは、前記第２のアクションを前記第１のアクション内に入れ子にするステップをさらに含むことを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
列挙型プロパティの１つの選択が、前記第２のアクション（４８０）に関連付けられた有効なプロパティ選択を引き起こすように、前記第２のアクションを前記列挙型プロパティに関連付けるステップをさらに含むことを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
前記第１のアクションを実行するステップは、論理セマンティクスを前記コントロールに関連付けるステップをさらに含み、前記論理セマンティクスは、前記コントロールに関連付けられたアプリケーション（２３０）に特有であることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
コンピュータソフトウェアアプリケーションは、開発プロセスを簡単にするため、宣言的方式で開発されることがますます多くなっている。ユーザインタフェースおよびアプリケーション開発フレームワークでは、ロジックおよび非ユーザインタフェースな振る舞いが、ユーザインタフェースコンポーネントに組み込まれて、ユーザインタフェースコンポーネントに関連するコントロールプロパティを拡張する。非ユーザインタフェースな振る舞いは、ユーザインタフェースコンポーネントの組織に組み込まれることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
複合コントロールは、異なる必要性に対応するために修正を施すことがユーザにとって困難になるほど、多くの異なるプロパティを有して、きわめて大きくなることがある。関連するプロパティのすべてにユーザが馴染んでいるとは限らないので、非常に多くのプロパティは、コントロールのカスタマイズを複雑なものにする。オブジェクトモデルは膨らみ過ぎとなり、コントロールがフォームに含まれる場合、ユーザは、コントロールによって提供される機能によって圧倒されるかもしれない。
【課題を解決するための手段】
【０００３】
拡張可能なコントロール設計フレームワークは、コントロール（ビジュアルおよび非ビジュアル）と、その他のコンポーネントとを、宣言的に定義するために利用される。コントロールの機能は、アクションと呼ばれるオブジェクトを介して振る舞いおよびセマンティクスを宣言的に追加することによって、拡張されることができる。コントロールは、振る舞いおよびセマンティクスの追加によって、過度に複雑になることはない。アクションオブジェクトは、明確に定義された機能をカプセル化し、既存のコントロールに関連付けられる。アクションオブジェクトは、イベントが起こされたときに機能が自動的に実行されるように、イベントまたは他の何らかのトリガとも関連付けられる。機能は、プログラミングコードに馴染みのないユーザが設計環境においてアプリケーション用のロジックおよび機能を容易に定義することができるように、独立のアプリケーションコンポーネント内にパッケージ化されることができる。
【０００４】
この「課題を解決するための手段」は、以下の「発明を実施するための最良の形態」でさらに説明される概念の抜粋を簡潔な形で紹介するために提供された。この「課題を解決するための手段」は、特許請求される主題の主要な特徴または必須の特徴を識別することを意図したものではなく、特許請求される主題の範囲を決定する助けとして使用されることを意図したものでもない。
【発明を実施するための最良の形態】
【０００５】
これから本開示の実施形態が、本発明の一部を形成し、本発明を実施するための特定の例示的な実施形態を図によって示す、添付の図面を参照して、これ以降でより十分に説明される。しかし、本開示は、多くの異なる形態で実施されることができ、本明細書で説明された実施形態に限定されると解釈されるべきではなく、むしろこれらの実施形態は、本開示が綿密かつ完全なものとなり、当業者に本発明の範囲を十分に伝えるように、提供されている。とりわけ、本開示は、方法または装置として実施されることができる。したがって、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェア面とハードウェア面とを組み合わせた実施形態という形態をとることができる。したがって、以下の詳細な説明は、限定的な意味に理解されるべきではない。
【０００６】
ここで図面を参照すると、本発明の様々な態様が説明され、図面においては、同様の数字は同様の要素を表す。特に、図１および対応する説明は、本発明の実施形態が実施され得る適切なコンピューティング環境の簡単で全般的な説明を提供することを意図したものである。本発明は、サーバおよびパーソナルコンピュータシステム上で実行されるプログラムモジュールという一般的な文脈で説明されるが、その他のタイプのコンピュータシステムおよびプログラムモジュールの組合せでも本発明が実施され得ることは、当業者であれば理解されよう。
【０００７】
一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、コンポーネント、データ構造、およびその他のタイプの構造を含む。さらに、本発明が、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能消費者家電、ミニコンピュータ、およびメインフレームコンピュータなどを含む、その他のコンピュータシステム構成を用いて実施されることは、当業者であれば理解されよう。本発明は、通信ネットワークを介して結合されるリモート処理装置によってタスクが実行される、分散コンピューティング環境でも実施されることができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に配置されることができる。
例示的な動作環境
ここで図１を参照すると、本発明の様々な実施形態で利用されるコンピュータ１００のための例示的なコンピュータアーキテクチャが説明される。図１に示されるコンピュータアーキテクチャは、中央処理装置１１０（「ＣＰＵ」）と、ランダムアクセスメモリ（「ＲＡＭ」）１２２およびリードオンリーメモリ（「ＲＯＭ」）１２４を含むシステムメモリ１２０と、メモリをＣＰＵ１１０に結合するシステムバス１３０とを含む、従来のデスクトップまたはラップトップコンピュータを示している。基本入出力システムは、起動中などにコンピュータ内の要素間で情報を伝送する助けをする基本ルーチンを含み、ＲＯＭ１２４内に保存される。コンピュータ１００は、以下でより詳細に説明される、オペレーティングシステム１４２、アプリケーションプログラム、およびその他のプログラムモジュールを保存するための大容量記憶装置１４０をさらに含む。
【０００８】
大容量記憶装置１４０は、バス１３０に接続される大容量記憶コントローラ（図示されず）を介してＣＰＵ１１０に接続される。大容量記憶装置１４０および関連するコンピュータ可読媒体は、コンピュータ１００に不揮発性記憶を提供する。本明細書に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭ装置などの大容量記憶装置に言及するが、コンピュータ可読媒体はコンピュータ１００によってアクセス可能な任意の利用可能な媒体とすることができることは、当業者であれば理解されよう。
【０００９】
限定することなく例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技法で実施された、揮発性および不揮発性、着脱可能および固定式媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）、もしくはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を記憶するのに使用でき、コンピュータ１００によってアクセス可能なその他の任意の媒体を、これらに限定することなく含む。
【００１０】
本発明の様々な実施形態によれば、コンピュータ１００は、インターネットなどのネットワーク１５０を介するリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。コンピュータ１００は、バス１３０に接続されるネットワークインタフェースユニット１６０を介してネットワーク１５０に接続することができる。ネットワークインタフェースユニット１６０は、その他のタイプのネットワークおよびリモートコンピュータシステムに接続するためにも利用されることができる。コンピュータ１００は、キーボード、マウス、または電子スタイラスを含む多くのその他の装置（図１には図示されず）から入力を受け取り、それを処理するための、入力／出力コントローラ１７０も含むことができる。同様に、入力／出力コントローラ１７０は、ディスプレイ画面、プリンタ、またはその他のタイプの出力装置に出力を提供することができる。
【００１１】
上で簡潔に述べられたように、アプリケーション１４８、およびネットワーク接続されたパーソナルコンピュータの動作を制御するのに適した、ワシントン州レッドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ製のＷＩＮＤＯＷＳ(登録商標)  ＸＰオペレーティングシステムなどのオペレーティングシステム１４２を含む、多くのプログラムモジュールおよびデータファイルが、コンピュータ１００の大容量記憶装置１４０およびＲＡＭ１２２に保存されることができる。大容量記憶装置１４０およびＲＡＭ１２２は、１つまたは複数のプログラムモジュールも保存することができる。特に、大容量記憶装置１４０およびＲＡＭ１２２は、ウェブブラウザアプリケーションプログラム１４４を保存することができる。ウェブブラウザアプリケーションプログラム１４４は、ＨＴＭＬを使用してフォーマットされたウェブページ１４６などの電子文書を要求し、受信し、表示し、電子文書との接続性を提供するように動作する。本発明の一実施形態によれば、ウェブブラウザアプリケーションプログラム１４４は、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ製のＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲウェブブラウザアプリケーションプログラムを含む。しかし、ＭＯＺＩＬＬＡ  ＦＯＵＮＤＡＴＩＯＮ製のＦＩＲＥＦＯＸウェブブラウザアプリケーションなど、その他の製造業者のその他のウェブブラウザアプリケーションプログラムが、本発明の様々な態様を実施するために利用され得ることを理解されたい。
宣言的に定義されるコントロールアクション
拡張可能なコントロール設計フレームワークは、コントロール（ビジュアルおよび非ビジュアル）と、その他のコンポーネントとを、宣言的に定義するために利用される。コントロールの機能は、アクションと呼ばれるオブジェクトを介して振る舞いおよびセマンティクスを宣言的に追加することによって、拡張されることができる。コントロールは、振る舞いおよびセマンティクスの追加によって、過度に複雑になることはない。アクションオブジェクトは、明確に定義された機能をカプセル化し、既存のコントロールに関連付けられる。アクションオブジェクトは、イベントが起こされたときに機能が自動的に実行されるように、イベントまたは他の何らかのトリガとも関連付けられる。機能は、プログラミングコードに馴染みのないユーザが設計環境においてアプリケーション用のロジックおよび機能を容易に定義することができるように、独立のアプリケーションコンポーネント内にパッケージ化されることができる。
【００１２】
フレームワークは、迅速なアプリケーション開発（ＲＡＤ：ｒａｐｉｄ  ａｐｐｌｉｃａｔｉｏｎ  ｄｅｖｅｌｏｐｍｅｎｔ）を簡単にする。設計者は、ビジュアル設計サーフェス（ｖｉｓｕａｌ  ｄｅｓｉｇｎ  ｓｕｒｆａｃｅ）を使用して、アプリケーションコンポーネントを選択し、配置することができる。アプリケーションコンポーネントは、ビジュアル設計サーフェスを使用して、結び付けられることができる。アプリケーションコンポーネントは、イベントを処理し、イベントに関係する動作を実行するためのコードを記述することによって、プロパティを用いてカスタマイズされることもできる。アプリケーションコンポーネントは、イベントが起こされた時に、自動的に呼び出されることができる。フレームワークは、ウェブ設計、スクリプトベースプログラミング、およびフォームベースプログラミングなどを含む、その他の設計環境にも適用可能である。
【００１３】
コントロール設計フレームワークは、ボタンコントロールに関連するクリックイベントを参照して説明される。本明細書で説明される実施形態は、ボタンコントロールに関連するクリックイベントの文脈で提示されるが、コントロールインタフェース上で定義される任意のイベントまたはトリガが利用され得ることを理解されたい。
【００１４】
コントロール設計フレームワークは、コントロール機能をコンポーネント内にパッケージ化する。コンポーネントは、宣言型アクションおよび振る舞いを使用して関連付けられる。図２は、宣言的に定義されたコントロールを実装するコンポーネントの一例を示している。開発者は、個々のテキストボックスコントロール２１０、２１２と、ボタンコントロール２２０とを用いて、フォーム上に複合コントロールとしてログインコンポーネント２００を作成することができる。ログインコンポーネント２００内の各コントロールは、コントロールがカスタマイズおよび再配置され得るように、フォーム上で単独にアクセス可能な独立のエンティティである。ユーザは、テキストボックスコントロール２１０、２１２に値を入力し、ボタンコントロール２２０をクリックすることができる。ボタンコントロール２２０で起こされたクリックイベントは、ログインメソッド２３０に関連付けられる。
【００１５】
ログインメソッド２３０は、コントロールを宣言的に定義するためのコード例を含む。ログインメソッド２３０は、ボタンコントロール２２０に関連付けられたクリックイベントが起こされた時、テキストボックスコントロール２１０、２１２から値を取り出す。ログインメソッド２３０は、その値に基づいてロジックを実行し、ユーザインタフェースは、ログインロジック動作の結果（例えば、ログインが許可された、または拒否された）に従って更新される。
【００１６】
コントロール設計フレームワークは、特定のシナリオごとにカスタムコントロールを作成することなく、異なるアプリケーションシナリオが、宣言的に定義されることを可能にする。ログインメソッド２３０内のコード例を参照すると、ログインシナリオは、ログインコントロールを用いずに実装されている。ログインコンポーネント２００は、２つのテキストボックス２４０、２５０と、ボタン２６０などのコントロールを用いて定義されている。テキストボックス２４０、２５０と、ボタン２６０は、コントロールは特定のフォーム構造に制約されないので、独立にカスタマイズおよび再配置されることができる。各テキストボックス２４０、２５０は、関連するテキストプロパティ２６５、２７０（例えば、名前、パスワード）を有し、ボタン２６０も、テキストプロパティ２７５（例えば、Ｃｌｉｃｋ  Ｍｅ）に関連付けられる。
【００１７】
ボタン２６０は、ＣｌｉｃｋＡｃｔｉｏｎｓ  ２８０に関連付けられる。ＣｌｉｃｋＡｃｔｉｏｎｓ  ２８０は、ＬｏｇｉｎＡｃｔｉｏｎ  ２８５を含む。ＬｏｇｉｎＡｃｔｉｏｎ  ２８５は、カスタマイズされ得る（例えば、名前およびパスワード）ログインコンポーネントである。ＬｏｇｉｎＡｃｔｉｏｎ  ２８５は、ＣｌｉｃｋＡｃｔｉｏｎｓ  ２８０内に含まれるので、クリックイベントが起こされた時に自動的にトリガされる。宣言的に定義されたログインコンポーネント２００は、記述コードによって定義されたログインコントロールと同じ機能を有する。宣言的に定義されたコントロールは、ビジュアル設計サーフェス上で構築ブロックコントロールを使用するプログラミングの追加的な柔軟性から利益を得る。開発者は、必要に応じて、ビジュアル設計サーフェス上でコントロールをさらにカスタマイズすることもできる。
【００１８】
図３は、コントロール設計フレームワークが、追加の振る舞いをコントロールにどのようにアタッチするかを示している。追加の振る舞いのアタッチは、ユーザインタフェース３００上のボタン３１０を参照して説明される。ユーザインタフェース３００は、ユーザがデータ値を入力するためのテキストボックス３０５も含むことができる。テキストボックス３０５は、グループ化されることができる（例えば、テキストボックス３０５は、グループ化され、「Ｇｒｏｕｐ１」と命名される）。ボタン３１０は、プロパティ拡張メソッド３２０に関連付けられる。
【００１９】
プロパティ拡張メソッド３２０は、テキストプロパティ３４０を有する単純なボタンコントロール３３０を定義する。ボタン３１０がクリックされた時、クリックイベント（例えば、ＶａｌｉｄａｔｉｏｎＡｃｔｉｏｎ  ３５０、ＣｏｕｎｔｅｒＡｃｔｉｏｎ  ３６０、およびＷｏｒｋｆｌｏｗＡｃｔｉｏｎ  ３７０）が起こされる。
【００２０】
コントロールのプロパティが容易に変更され得るような拡張可能な方式で、アプリケーションセマンティクスが、ボタン３１０にアタッチされることができる。コントロールのプロパティは、任意の（命令型または宣言型）アプリケーションロジックを構成されたようにトリガする、または呼び出すことができる。例えば、ＶａｌｉｄａｔｉｏｎＡｃｔｉｏｎ  ３５０、ＣｏｕｎｔｅｒＡｃｔｉｏｎ  ３６０、およびＷｏｒｋｆｌｏｗＡｃｔｉｏｎ  ３７０はすべて、ボタン３１０がクリックされた時に実行されることができる。ＶａｌｉｄａｔｉｏｎＡｃｔｉｏｎ  ３５０は、ボタン３１０がクリックされた時、ユーザインタフェース３００において、Ｇｒｏｕｐ１として識別されるテキストボックス３０５内のデータ値の有効性を確認する。ＣｏｕｎｔｅｒＡｃｔｉｏｎ  ３６０は、ボタン３１０がクリックされた回数の勘定を維持する。ＷｏｒｋｆｌｏｗＡｃｔｉｏｎ  ３７０は、ボタン３１０がクリックされた時、（ワークフローなどの）アプリケーションに関連付けられた任意の（命令型または宣言型）ロジックを開始または再開する。したがって、追加のプロパティは、既存のオブジェクトモデルを複雑化することも、または新しいオブジェクトモデルの作成を必要とすることもなく、ボタン３１０に宣言的にアタッチされる。
【００２１】
図４は、コントロール設計フレームワークが、発見可能性（ｄｉｓｃｏｖｅｒａｂｉｌｉｔｙ）および強い型付け（ｓｔｒｏｎｇｌｙ  ｔｙｐｅｄ）手法をコントロールにどのように提供するかを示している。ＦｏｒｍＶｉｅｗコントロールは、データベース行の中の内容に関連付けられる。ＦｏｒｍＶｉｅｗコントロールに関連付けられたボタンコントロールは、その行を対象にデータベース操作を実行する。例えば、「Ｕｐｄａｔｅ」ボタンは、以下に示すように、ＦｏｒｍＶｉｅｗコントロールに関連付けられることができ、
<asp:Button CommandName=“Update”/>
ここで、「Ｕｐｄａｔｅ」は文字列プロパティである。
【００２２】
ＦｏｒｍＶｉｅｗコントロールは、特に「Ｕｐｄａｔｅ」と呼ばれるコマンド名を検索する。ボタンがクリックされた時、更新ロジックが実行される。しかし、更新ロジックは、現行のコントロールフレームワークでは発見可能ではない。言い換えると、プログラム内でＦｏｒｍＶｉｅｗコントロールを使用する開発者は、ＦｏｒｍＶｉｅｗコントロールに関連するサブコマンドについて知らないことがある。加えて、コマンド名が大文字と小文字を区別するかどうかも明らかでない。例えば、「ｕｐｄａｔｅ」がエラーを起こし、見落とされ得るように、ＦｏｒｍＶｉｅｗコントロールは、特に「Ｕｐｄａｔｅ」を検索することができる。さらに、キー入力誤りが、フォームが障害を起こす原因となることがある。例えば、「Ｕｐｄａｔｅ」ではなく「Ｕｐｄａｔｅ１」が検索された場合、ボタンがクリックされた時に、更新ロジックは実行されないであろう。知られたコントロールプログラミングフレームワークは、コードを精査してキー入力誤りを発見することをユーザに要求する。
【００２３】
コントロール設計フレームワークは、コントロールのプログラミングに強い型付け手法を提供する。「強い型付け」という用語は、クラスのメソッドおよびメンバ変数の明示的な命名および型付けのことを指す。データの型は、コンパイル時に分かるので、誤ったデータ型の割り当てが、実行時ではなく、コンパイル時に解決されることを可能にし、処理を安全に保ち、コード内のエラーの可能性を減少させる。コントロール設計フレームワークは、いくつかのビルトインアクションも提供する。上で説明されたように、サードパーティおよびアプリケーション開発者は、特定のシナリオに特有の新しいアクションを開発することができる。アクションは、コントロールデザイナ（ｃｏｎｔｒｏｌ  ｄｅｓｉｇｎｅｒ）において発見可能であるべきであり、さもなければ、新たに定義されたアクションのことを知らないその他のユーザは、それらが存在することさえ知らない。
【００２４】
発見可能性および強い型付け手法は、ユーザインタフェース４００上のボタン４１０を参照して説明される。ユーザインタフェース４００は、ユーザが「ｉｔｅｍ」などのデータ値を入力するためのテキストボックス４０５も含むことができる。ボタン４１０は、発見可能性および強い型付け手法メソッド４２０に関連付けられる。発見可能性および強い型付け手法メソッド４２０は、ＦｏｒｍＶｉｅｗコントロール４３０と、テキストプロパティ４４５を有する単純なボタンコントロール４４０を定義する。
【００２５】
開発者は、ＦｏｒｍＶｉｅｗコントロール４３０によって使用される文字列の特有の組について知る必要はない。代わりに、関連するアクションのオブジェクトモデルが、その情報を提供する。ボタンコントロール４４０は、コマンド名を含まない。ボタンコントロール４４０は、ボタン４４０に関連付けられたＣｌｉｃｋＡｃｔｉｏｎｓ  ４６０の内部にＦｏｒｍＶｉｅｗＡｃｔｉｏｎ  ４５０を含む。ＦｏｒｍＶｉｅｗＡｃｔｉｏｎ  ４５０は、Ｏｐｅｒａｔｉｏｎ＝“Ｅｄｉｔ”プロパティ４７０を含む。Ｏｐｅｒａｔｉｏｎ＝“Ｅｄｉｔ”プロパティ４７０は、プロパティが固定された値の組（例えば、ｅｄｉｔ、ｄｅｌｅｔｅ、ｕｐｄａｔｅなど）に関連付けられる、（文字列ではなく）列挙型である。列挙型は、エディタおよびパーサが、列挙に対して有効な値を強制することを可能にする。例えば、開発者が、「Ｏｐｅｒａｔｉｏｎ＝」とタイプしたとする。その場合、ユーザが有効な値を選択することができるように、列挙の異なる値を有するドロップダウンメニュー４８０が表示されることができる。したがって、開発者は、コントロールに関連付けられたサブコマンドを発見することができる。
【００２６】
開発者は、プロパティ４７０をキー入力する場合に、キー入力誤りを犯すことがある。例えば、開発者は、「Ｅｄｉｔ」の代わりに、「Ｅｄｉｔ１」または「ｅｄｉｔ」とキー入力したかもしれない。ページが構文解析されるとき、「Ｅｄｉｔ１」は、未知の値であるので、構文解析エラーを生じさせる。検索機能が大文字と小文字を区別する場合、「ｅｄｉｔ」も構文解析エラーを生じさせる。もし値が文字列だとしたら、エラーは生じないであろう。代わりに、ボタン４１０で起こされるクリックイベントは、どのようなアクションも引き起こさない。したがって、列挙型プロパティは、開発者のキー入力誤りによって引き起こされるエラーのクラスを排除する、強い型付け値である。
【００２７】
図５は、コントロールに効果を適用するために、コントロール設計フレームワークが、どのように使用され得るかを示している。ユーザインタフェース５００は、検索を実行するための入力を受け取るように構成される。テキストボックス５１０は、検索語を受け取るように構成される。ユーザは、検索を開始するために、検索ボタン５２０をクリックすることができる。結果は、検索リストとしてパネル５３０上に表示される。
【００２８】
検索ボタン５２０は、パネル５３０上に表示される時に効果が検索リストに適用され得るように、効果適用メソッド５４０に関連付けられることができる。例えば、ＦａｄｅＩｎＥｆｆｅｃｔ  ５５０などのフェードイン・アニメーション効果が、検索リストなどのターゲットオブジェクト５６０に適用されることができる。検索リストは、パネル５３０上に表示される時にフェードインする。ＦａｄｅＩｎＥｆｆｅｃｔ  ５５０は、クリックイベント５８０によって呼び出されるｐｌａｙメソッド５７０を含む。クリックイベント５８０はまた、パネル５３０が可視となるように、プロパティ５９０をパネル５３０にアタッチする。検索ボタン５２０がクリックされた時、ＦａｄｅＩｎＥｆｆｅｃｔ  ５５０がパネル５３０に適用され、パネル５３０は可視となる。したがって、メソッドを呼び出し、特定のターゲットを定義することによって、メソッドは宣言的に定義されることができる。
【００２９】
図６は、コントロールアクションを宣言的に定義するためのプロセスを示す操作フロー図である。プロセスは、コントロールが機能を実行するために配置される、開始操作から開始する。
【００３０】
処理は、アクションがコントロールに関連付けられる操作６００で続行される。例えば、コントロールは、ボタンコントロール、テキストボックスコントロール、またはフォームビューコントロールとすることができる。アクションは、コントロールの機能が拡張されるように、振る舞いおよびセマンティクスをカプセル化する。アクションは、アクションがコントロールに関連付けられた場合に、コントロールが過度に複雑にならないように、独立のアプリケーションコンポーネントとする。独立のアプリケーションコンポーネントは、アプリケーション設計環境で、アクションが構築ブロックとして定義されることを可能にする。開発者は、構築ブロックを組み立てて、アプリケーション用のロジックおよび機能を定義することによって、アプリケーションを容易に開発することができる。一実施形態では、アクションは、固定された値の組を識別する列挙プロパティを含む。固定された値の組は、プロパティがキー入力されるときに、開発者に対して表示されることができる。開発者がプロパティ値を誤ってキー入力した場合、誤ってキー入力された値は固定の組に含まれていないので、エラーが生じる。別の実施形態では、２つ以上のコントロールは、アクションに関連付けられることができる。例えば、一方のアクションは、他方のアクション内に入れ子にされることができる。また別の実施形態では、追加のプロパティが、コントロールに関連付けられることができる。
【００３１】
操作６１０に進むと、イベントがコントロールに関連付けられる。例えば、コントロールがボタンである場合、関連付けられるイベントは、ボタンで起こされるクリックイベントとすることができる。操作６２０に移ると、コントロールは、関連付けられたイベントが起こされたことを検出する。一実施形態では、コントロールは、値がコントロールで受け取られた時に、関連付けられたイベントが起こされたことを検出する。
【００３２】
操作６３０に移ると、イベントが起こされた時に、アクションが実行される。アクションは、値に基づいてロジック動作を実行することによって、実行されることができる。アクションの実行の例は、値を処理すること、値の有効性を確認すること、イベントが起こされた回数をカウントすること、ワークフローの実行を開始すること、ワークフローの実行を再開すること、コントロールに関連するプロパティを発見すること、誤ったデータ型の割り当てをコンパイル時に解決すること、およびコントロールに効果を適用することなどを含む。
【００３３】
イベントに関連付けられたその他の独立のアクションも、実行されることができる。一実施形態では、アクションのシーケンスを実行するためにプロセスが繰り返される。シーケンス内の１つのアクションは、実行されて、「偽」を返すことができ、それによって、アクションシーケンスを中断することができる。その後、処理は、終了操作で終了する。
【００３４】
図７は、コントロール設計フレームワークがコントロールデザイナにおいてどのように実施されるかを示す、コードセグメント例７００である。コントロールデザイナは、タスクパネルを介して、アクションをサポートするコントロールのために、アクションエディタ（ａｃｔｉｏｎｓ  ｅｄｉｔｏｒ）を自動的に提供することができる。アクションエディタは、アプリケーションによって参照されるアセンブリで利用可能なアクションの組を提示する。アクションは、プロパティグリッドを超える豊かな編集体験を提供するために、関連するデザイナ機能を提供する。コードセグメント例７００は、アクションがイベント発生前に実行されることができるか、それとも発生後に実行されることができるかを示す。
【００３５】
基本クラスが、すべてのコントロールアクションに提供される。各アクションは、アクションがイベントが起こされる前に実行されるか、それとも後に実行されるかを指定することができる。戻り値は、イベントが起こされる前に実行されるアクションにとって意味がある。アクションは、その後のイベントの発生を取り消すために「真」を返すことができる。アクションは、ポストバック（ｐｏｓｔ−ｂａｃｋ）振る舞いのカスタマイズで利用されることができる。コントロールは、ポストバック関係のイベントに関連付けられたアクションのためのインタフェースを実施するアクションに呼び掛けることができる。
【００３６】
図８は、基本的なボタンコントロールが、コントロールアクションを宣言的に定義するための機能をどのように提供することができるかを示す、コードセグメント例８００である。
【００３７】
上記の明細書、例、およびデータは、本発明の構成の製造および使用についての完全な理解を提供する。本発明の多くの実施形態が、本発明の主旨および範囲から逸脱することなく作成され得るので、本発明は、本明細書に添付された特許請求の範囲内である。
【図面の簡単な説明】
【００３８】
【図１】本発明の様々な実施形態で利用され、様々な実施形態によって提供される、コンピュータシステムを示すコンピュータシステムアーキテクチャ図である。
【図２】宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。
【図３】宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。
【図４】宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。
【図５】宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。
【図６】宣言的に定義されたコントロールアクションのためのプロセスを示す操作フロー図である。
【図７】コントロール設計フレームワークがコントロールデザイナにおいてどのように実施されるかを示すコード例である。
【図８】コントロールアクションを宣言的に定義するための機能を基本的なコントロールがどのように提供することができるかを示すコード例である。
【図１】
2009508254.tif 000003
【図２】
2009508254.tif 000004
【図３】
2009508254.tif 000005
【図４】
2009508254.tif 000006
【図５】
2009508254.tif 000007
【図６】
2009508254.tif 000008
【図７】
2009508254.tif 000009
【図８】
2009508254.tif 000010
【国際調査報告】
2009508254.tif 000011
2009508254.tif 000012