JP5108773B2 - 宣言的に定義されるコントロールアクション - Google Patents

宣言的に定義されるコントロールアクション Download PDF

Info

Publication number
JP5108773B2
JP5108773B2 JP2008531156A JP2008531156A JP5108773B2 JP 5108773 B2 JP5108773 B2 JP 5108773B2 JP 2008531156 A JP2008531156 A JP 2008531156A JP 2008531156 A JP2008531156 A JP 2008531156A JP 5108773 B2 JP5108773 B2 JP 5108773B2
Authority
JP
Japan
Prior art keywords
action component
control
action
event
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008531156A
Other languages
English (en)
Other versions
JP2009508254A (ja
Inventor
コザリ ニキル
エム.サナブリア アンドレス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009508254A publication Critical patent/JP2009508254A/ja
Application granted granted Critical
Publication of JP5108773B2 publication Critical patent/JP5108773B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Quality & Reliability (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Data Mining & Analysis (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Devices For Executing Special Programs (AREA)

Description

コンピュータソフトウェアアプリケーションは、開発プロセスを簡単にするため、宣言的方式で開発されることがますます多くなっている。ユーザインタフェースおよびアプリケーション開発フレームワークでは、ロジックおよび非ユーザインタフェースな振る舞いが、ユーザインタフェースコンポーネントに組み込まれて、ユーザインタフェースコンポーネントに関連するコントロールプロパティを拡張する。非ユーザインタフェースな振る舞いは、ユーザインタフェースコンポーネントの組織に組み込まれることができる。
複合コントロールは、異なる必要性に対応するために修正を施すことがユーザにとって困難になるほど、多くの異なるプロパティを有して、きわめて大きくなることがある。関連するプロパティのすべてにユーザが馴染んでいるとは限らないので、非常に多くのプロパティは、コントロールのカスタマイズを複雑なものにする。オブジェクトモデルは膨らみ過ぎとなり、コントロールがフォームに含まれる場合、ユーザは、コントロールによって提供される機能によって圧倒されるかもしれない。
拡張可能なコントロール設計フレームワークは、コントロール(ビジュアルおよび非ビジュアル)と、その他のコンポーネントとを、宣言的に定義するために利用される。コントロールの機能は、アクションと呼ばれるオブジェクトを介して振る舞いおよびセマンティクスを宣言的に追加することによって、拡張されることができる。コントロールは、振る舞いおよびセマンティクスの追加によって、過度に複雑になることはない。アクションオブジェクトは、明確に定義された機能をカプセル化し、既存のコントロールに関連付けられる。アクションオブジェクトは、イベントが起こされたときに機能が自動的に実行されるように、イベントまたは他の何らかのトリガとも関連付けられる。機能は、プログラミングコードに馴染みのないユーザが設計環境においてアプリケーション用のロジックおよび機能を容易に定義することができるように、独立のアプリケーションコンポーネント内にパッケージ化されることができる。
この「課題を解決するための手段」は、以下の「発明を実施するための最良の形態」でさらに説明される概念の抜粋を簡潔な形で紹介するために提供された。この「課題を解決するための手段」は、特許請求される主題の主要な特徴または必須の特徴を識別することを意図したものではなく、特許請求される主題の範囲を決定する助けとして使用されることを意図したものでもない。
これから本開示の実施形態が、本発明の一部を形成し、本発明を実施するための特定の例示的な実施形態を図によって示す、添付の図面を参照して、これ以降でより十分に説明される。しかし、本開示は、多くの異なる形態で実施されることができ、本明細書で説明された実施形態に限定されると解釈されるべきではなく、むしろこれらの実施形態は、本開示が綿密かつ完全なものとなり、当業者に本発明の範囲を十分に伝えるように、提供されている。とりわけ、本開示は、方法または装置として実施されることができる。したがって、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェア面とハードウェア面とを組み合わせた実施形態という形態をとることができる。したがって、以下の詳細な説明は、限定的な意味に理解されるべきではない。
ここで図面を参照すると、本発明の様々な態様が説明され、図面においては、同様の数字は同様の要素を表す。特に、図1および対応する説明は、本発明の実施形態が実施され得る適切なコンピューティング環境の簡単で全般的な説明を提供することを意図したものである。本発明は、サーバおよびパーソナルコンピュータシステム上で実行されるプログラムモジュールという一般的な文脈で説明されるが、その他のタイプのコンピュータシステムおよびプログラムモジュールの組合せでも本発明が実施され得ることは、当業者であれば理解されよう。
一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、コンポーネント、データ構造、およびその他のタイプの構造を含む。さらに、本発明が、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能消費者家電、ミニコンピュータ、およびメインフレームコンピュータなどを含む、その他のコンピュータシステム構成を用いて実施されることは、当業者であれば理解されよう。本発明は、通信ネットワークを介して結合されるリモート処理装置によってタスクが実行される、分散コンピューティング環境でも実施されることができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に配置されることができる。
例示的な動作環境
ここで図1を参照すると、本発明の様々な実施形態で利用されるコンピュータ100のための例示的なコンピュータアーキテクチャが説明される。図1に示されるコンピュータアーキテクチャは、中央処理装置110(「CPU」)と、ランダムアクセスメモリ(「RAM」)122およびリードオンリーメモリ(「ROM」)124を含むシステムメモリ120と、メモリをCPU110に結合するシステムバス130とを含む、従来のデスクトップまたはラップトップコンピュータを示している。基本入出力システムは、起動中などにコンピュータ内の要素間で情報を伝送する助けをする基本ルーチンを含み、ROM124内に保存される。コンピュータ100は、以下でより詳細に説明される、オペレーティングシステム142、アプリケーションプログラム、およびその他のプログラムモジュールを保存するための大容量記憶装置140をさらに含む。
大容量記憶装置140は、バス130に接続される大容量記憶コントローラ(図示されず)を介してCPU110に接続される。大容量記憶装置140および関連するコンピュータ可読媒体は、コンピュータ100に不揮発性記憶を提供する。本明細書に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはCD−ROM装置などの大容量記憶装置に言及するが、コンピュータ可読媒体はコンピュータ100によってアクセス可能な任意の利用可能な媒体とすることができることは、当業者であれば理解されよう。
限定することなく例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技法で実施された、揮発性および不揮発性、着脱可能および固定式媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、もしくはその他のソリッドステートメモリ技術、CD−ROM、デジタル多用途ディスク(「DVD」)、もしくはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を記憶するのに使用でき、コンピュータ100によってアクセス可能なその他の任意の媒体を、これらに限定することなく含む。
本発明の様々な実施形態によれば、コンピュータ100は、インターネットなどのネットワーク150を介するリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。コンピュータ100は、バス130に接続されるネットワークインタフェースユニット160を介してネットワーク150に接続することができる。ネットワークインタフェースユニット160は、その他のタイプのネットワークおよびリモートコンピュータシステムに接続するためにも利用されることができる。コンピュータ100は、キーボード、マウス、または電子スタイラスを含む多くのその他の装置(図1には図示されず)から入力を受け取り、それを処理するための、入力/出力コントローラ170も含むことができる。同様に、入力/出力コントローラ170は、ディスプレイ画面、プリンタ、またはその他のタイプの出力装置に出力を提供することができる。
上で簡潔に述べられたように、アプリケーション148、およびネットワーク接続されたパーソナルコンピュータの動作を制御するのに適した、ワシントン州レッドモンドのMICROSOFT CORPORATION製のWINDOWS(登録商標) XPオペレーティングシステムなどのオペレーティングシステム142を含む、多くのプログラムモジュールおよびデータファイルが、コンピュータ100の大容量記憶装置140およびRAM122に保存されることができる。大容量記憶装置140およびRAM122は、1つまたは複数のプログラムモジュールも保存することができる。特に、大容量記憶装置140およびRAM122は、ウェブブラウザアプリケーションプログラム144を保存することができる。ウェブブラウザアプリケーションプログラム144は、HTMLを使用してフォーマットされたウェブページ146などの電子文書を要求し、受信し、表示し、電子文書との接続性を提供するように動作する。本発明の一実施形態によれば、ウェブブラウザアプリケーションプログラム144は、MICROSOFT CORPORATION製のINTERNET EXPLORERウェブブラウザアプリケーションプログラムを含む。しかし、MOZILLA FOUNDATION製のFIREFOXウェブブラウザアプリケーションなど、その他の製造業者のその他のウェブブラウザアプリケーションプログラムが、本発明の様々な態様を実施するために利用され得ることを理解されたい。
宣言的に定義されるコントロールアクション
拡張可能なコントロール設計フレームワークは、コントロール(ビジュアルおよび非ビジュアル)と、その他のコンポーネントとを、宣言的に定義するために利用される。コントロールの機能は、アクションと呼ばれるオブジェクトを介して振る舞いおよびセマンティクスを宣言的に追加することによって、拡張されることができる。コントロールは、振る舞いおよびセマンティクスの追加によって、過度に複雑になることはない。アクションオブジェクトは、明確に定義された機能をカプセル化し、既存のコントロールに関連付けられる。アクションオブジェクトは、イベントが起こされたときに機能が自動的に実行されるように、イベントまたは他の何らかのトリガとも関連付けられる。機能は、プログラミングコードに馴染みのないユーザが設計環境においてアプリケーション用のロジックおよび機能を容易に定義することができるように、独立のアプリケーションコンポーネント内にパッケージ化されることができる。
フレームワークは、迅速なアプリケーション開発(RAD:rapid application development)を簡単にする。設計者は、ビジュアル設計サーフェス(visual design surface)を使用して、アプリケーションコンポーネントを選択し、配置することができる。アプリケーションコンポーネントは、ビジュアル設計サーフェスを使用して、結び付けられることができる。アプリケーションコンポーネントは、イベントを処理し、イベントに関係する動作を実行するためのコードを記述することによって、プロパティを用いてカスタマイズされることもできる。アプリケーションコンポーネントは、イベントが起こされた時に、自動的に呼び出されることができる。フレームワークは、ウェブ設計、スクリプトベースプログラミング、およびフォームベースプログラミングなどを含む、その他の設計環境にも適用可能である。
コントロール設計フレームワークは、ボタンコントロールに関連するクリックイベントを参照して説明される。本明細書で説明される実施形態は、ボタンコントロールに関連するクリックイベントの文脈で提示されるが、コントロールインタフェース上で定義される任意のイベントまたはトリガが利用され得ることを理解されたい。
コントロール設計フレームワークは、コントロール機能をコンポーネント内にパッケージ化する。コンポーネントは、宣言型アクションおよび振る舞いを使用して関連付けられる。図2は、宣言的に定義されたコントロールを実装するコンポーネントの一例を示している。開発者は、個々のテキストボックスコントロール210、212と、ボタンコントロール220とを用いて、フォーム上に複合コントロールとしてログインコンポーネント200を作成することができる。ログインコンポーネント200内の各コントロールは、コントロールがカスタマイズおよび再配置され得るように、フォーム上で単独にアクセス可能な独立のエンティティである。ユーザは、テキストボックスコントロール210、212に値を入力し、ボタンコントロール220をクリックすることができる。ボタンコントロール220で起こされたクリックイベントは、ログインメソッド230に関連付けられる。
ログインメソッド230は、コントロールを宣言的に定義するためのコード例を含む。ログインメソッド230は、ボタンコントロール220に関連付けられたクリックイベントが起こされた時、テキストボックスコントロール210、212から値を取り出す。ログインメソッド230は、その値に基づいてロジックを実行し、ユーザインタフェースは、ログインロジック動作の結果(例えば、ログインが許可された、または拒否された)に従って更新される。
コントロール設計フレームワークは、特定のシナリオごとにカスタムコントロールを作成することなく、異なるアプリケーションシナリオが、宣言的に定義されることを可能にする。ログインメソッド230内のコード例を参照すると、ログインシナリオは、ログインコントロールを用いずに実装されている。ログインコンポーネント200は、2つのテキストボックス240、250と、ボタン260などのコントロールを用いて定義されている。テキストボックス240、250と、ボタン260は、コントロールは特定のフォーム構造に制約されないので、独立にカスタマイズおよび再配置されることができる。各テキストボックス240、250は、関連するテキストプロパティ265、270(例えば、名前、パスワード)を有し、ボタン260も、テキストプロパティ275(例えば、Click Me)に関連付けられる。
ボタン260は、ClickActions 280に関連付けられる。ClickActions 280は、LoginAction 285を含む。LoginAction 285は、カスタマイズされ得る(例えば、名前およびパスワード)ログインコンポーネントである。LoginAction 285は、ClickActions 280内に含まれるので、クリックイベントが起こされた時に自動的にトリガされる。宣言的に定義されたログインコンポーネント200は、記述コードによって定義されたログインコントロールと同じ機能を有する。宣言的に定義されたコントロールは、ビジュアル設計サーフェス上で構築ブロックコントロールを使用するプログラミングの追加的な柔軟性から利益を得る。開発者は、必要に応じて、ビジュアル設計サーフェス上でコントロールをさらにカスタマイズすることもできる。
図3は、コントロール設計フレームワークが、追加の振る舞いをコントロールにどのようにアタッチするかを示している。追加の振る舞いのアタッチは、ユーザインタフェース300上のボタン310を参照して説明される。ユーザインタフェース300は、ユーザがデータ値を入力するためのテキストボックス305も含むことができる。テキストボックス305は、グループ化されることができる(例えば、テキストボックス305は、グループ化され、「Group1」と命名される)。ボタン310は、プロパティ拡張メソッド320に関連付けられる。
プロパティ拡張メソッド320は、テキストプロパティ340を有する単純なボタンコントロール330を定義する。ボタン310がクリックされた時、クリックイベント(例えば、ValidationAction 350、CounterAction 360、およびWorkflowAction 370)が起こされる。
コントロールのプロパティが容易に変更され得るような拡張可能な方式で、アプリケーションセマンティクスが、ボタン310にアタッチされることができる。コントロールのプロパティは、任意の(命令型または宣言型)アプリケーションロジックを構成されたようにトリガする、または呼び出すことができる。例えば、ValidationAction 350、CounterAction 360、およびWorkflowAction 370はすべて、ボタン310がクリックされた時に実行されることができる。ValidationAction 350は、ボタン310がクリックされた時、ユーザインタフェース300において、Group1として識別されるテキストボックス305内のデータ値の有効性を確認する。CounterAction 360は、ボタン310がクリックされた回数の勘定を維持する。WorkflowAction 370は、ボタン310がクリックされた時、(ワークフローなどの)アプリケーションに関連付けられた任意の(命令型または宣言型)ロジックを開始または再開する。したがって、追加のプロパティは、既存のオブジェクトモデルを複雑化することも、または新しいオブジェクトモデルの作成を必要とすることもなく、ボタン310に宣言的にアタッチされる。
図4は、コントロール設計フレームワークが、発見可能性(discoverability)および強い型付け(strongly typed)手法をコントロールにどのように提供するかを示している。FormViewコントロールは、データベース行の中の内容に関連付けられる。FormViewコントロールに関連付けられたボタンコントロールは、その行を対象にデータベース操作を実行する。例えば、「Update」ボタンは、以下に示すように、FormViewコントロールに関連付けられることができ、
<asp:Button CommandName=“Update”/>
ここで、「Update」は文字列プロパティである。
FormViewコントロールは、特に「Update」と呼ばれるコマンド名を検索する。ボタンがクリックされた時、更新ロジックが実行される。しかし、更新ロジックは、現行のコントロールフレームワークでは発見可能ではない。言い換えると、プログラム内でFormViewコントロールを使用する開発者は、FormViewコントロールに関連するサブコマンドについて知らないことがある。加えて、コマンド名が大文字と小文字を区別するかどうかも明らかでない。例えば、「update」がエラーを起こし、見落とされ得るように、FormViewコントロールは、特に「Update」を検索することができる。さらに、キー入力誤りが、フォームが障害を起こす原因となることがある。例えば、「Update」ではなく「Update1」が検索された場合、ボタンがクリックされた時に、更新ロジックは実行されないであろう。知られたコントロールプログラミングフレームワークは、コードを精査してキー入力誤りを発見することをユーザに要求する。
コントロール設計フレームワークは、コントロールのプログラミングに強い型付け手法を提供する。「強い型付け」という用語は、クラスのメソッドおよびメンバ変数の明示的な命名および型付けのことを指す。データの型は、コンパイル時に分かるので、誤ったデータ型の割り当てが、実行時ではなく、コンパイル時に解決されることを可能にし、処理を安全に保ち、コード内のエラーの可能性を減少させる。コントロール設計フレームワークは、いくつかのビルトインアクションも提供する。上で説明されたように、サードパーティおよびアプリケーション開発者は、特定のシナリオに特有の新しいアクションを開発することができる。アクションは、コントロールデザイナ(control designer)において発見可能であるべきであり、さもなければ、新たに定義されたアクションのことを知らないその他のユーザは、それらが存在することさえ知らない。
発見可能性および強い型付け手法は、ユーザインタフェース400上のボタン410を参照して説明される。ユーザインタフェース400は、ユーザが「item」などのデータ値を入力するためのテキストボックス405も含むことができる。ボタン410は、発見可能性および強い型付け手法メソッド420に関連付けられる。発見可能性および強い型付け手法メソッド420は、FormViewコントロール430と、テキストプロパティ445を有する単純なボタンコントロール440を定義する。
開発者は、FormViewコントロール430によって使用される文字列の特有の組について知る必要はない。代わりに、関連するアクションのオブジェクトモデルが、その情報を提供する。ボタンコントロール440は、コマンド名を含まない。ボタンコントロール440は、ボタン440に関連付けられたClickActions 460の内部にFormViewAction 450を含む。FormViewAction 450は、Operation=“Edit”プロパティ470を含む。Operation=“Edit”プロパティ470は、プロパティが固定された値の組(例えば、edit、delete、updateなど)に関連付けられる、(文字列ではなく)列挙型である。列挙型は、エディタおよびパーサが、列挙に対して有効な値を強制することを可能にする。例えば、開発者が、「Operation=」とタイプしたとする。その場合、ユーザが有効な値を選択することができるように、列挙の異なる値を有するドロップダウンメニュー480が表示されることができる。したがって、開発者は、コントロールに関連付けられたサブコマンドを発見することができる。
開発者は、プロパティ470をキー入力する場合に、キー入力誤りを犯すことがある。例えば、開発者は、「Edit」の代わりに、「Edit1」または「edit」とキー入力したかもしれない。ページが構文解析されるとき、「Edit1」は、未知の値であるので、構文解析エラーを生じさせる。検索機能が大文字と小文字を区別する場合、「edit」も構文解析エラーを生じさせる。もし値が文字列だとしたら、エラーは生じないであろう。代わりに、ボタン410で起こされるクリックイベントは、どのようなアクションも引き起こさない。したがって、列挙型プロパティは、開発者のキー入力誤りによって引き起こされるエラーのクラスを排除する、強い型付け値である。
図5は、コントロールに効果を適用するために、コントロール設計フレームワークが、どのように使用され得るかを示している。ユーザインタフェース500は、検索を実行するための入力を受け取るように構成される。テキストボックス510は、検索語を受け取るように構成される。ユーザは、検索を開始するために、検索ボタン520をクリックすることができる。結果は、検索リストとしてパネル530上に表示される。
検索ボタン520は、パネル530上に表示される時に効果が検索リストに適用され得るように、効果適用メソッド540に関連付けられることができる。例えば、FadeInEffect 550などのフェードイン・アニメーション効果が、検索リストなどのターゲットオブジェクト560に適用されることができる。検索リストは、パネル530上に表示される時にフェードインする。FadeInEffect 550は、クリックイベント580によって呼び出されるplayメソッド570を含む。クリックイベント580はまた、パネル530が可視となるように、プロパティ590をパネル530にアタッチする。検索ボタン520がクリックされた時、FadeInEffect 550がパネル530に適用され、パネル530は可視となる。したがって、メソッドを呼び出し、特定のターゲットを定義することによって、メソッドは宣言的に定義されることができる。
図6は、コントロールアクションを宣言的に定義するためのプロセスを示す操作フロー図である。プロセスは、コントロールが機能を実行するために配置される、開始操作から開始する。
処理は、アクションがコントロールに関連付けられる操作600で続行される。例えば、コントロールは、ボタンコントロール、テキストボックスコントロール、またはフォームビューコントロールとすることができる。アクションは、コントロールの機能が拡張されるように、振る舞いおよびセマンティクスをカプセル化する。アクションは、アクションがコントロールに関連付けられた場合に、コントロールが過度に複雑にならないように、独立のアプリケーションコンポーネントとする。独立のアプリケーションコンポーネントは、アプリケーション設計環境で、アクションが構築ブロックとして定義されることを可能にする。開発者は、構築ブロックを組み立てて、アプリケーション用のロジックおよび機能を定義することによって、アプリケーションを容易に開発することができる。一実施形態では、アクションは、固定された値の組を識別する列挙プロパティを含む。固定された値の組は、プロパティがキー入力されるときに、開発者に対して表示されることができる。開発者がプロパティ値を誤ってキー入力した場合、誤ってキー入力された値は固定の組に含まれていないので、エラーが生じる。別の実施形態では、2つ以上のコントロールは、アクションに関連付けられることができる。例えば、一方のアクションは、他方のアクション内に入れ子にされることができる。また別の実施形態では、追加のプロパティが、コントロールに関連付けられることができる。
操作610に進むと、イベントがコントロールに関連付けられる。例えば、コントロールがボタンである場合、関連付けられるイベントは、ボタンで起こされるクリックイベントとすることができる。操作620に移ると、コントロールは、関連付けられたイベントが起こされたことを検出する。一実施形態では、コントロールは、値がコントロールで受け取られた時に、関連付けられたイベントが起こされたことを検出する。
操作630に移ると、イベントが起こされた時に、アクションが実行される。アクションは、値に基づいてロジック動作を実行することによって、実行されることができる。アクションの実行の例は、値を処理すること、値の有効性を確認すること、イベントが起こされた回数をカウントすること、ワークフローの実行を開始すること、ワークフローの実行を再開すること、コントロールに関連するプロパティを発見すること、誤ったデータ型の割り当てをコンパイル時に解決すること、およびコントロールに効果を適用することなどを含む。
イベントに関連付けられたその他の独立のアクションも、実行されることができる。一実施形態では、アクションのシーケンスを実行するためにプロセスが繰り返される。シーケンス内の1つのアクションは、実行されて、「偽」を返すことができ、それによって、アクションシーケンスを中断することができる。その後、処理は、終了操作で終了する。
図7は、コントロール設計フレームワークがコントロールデザイナにおいてどのように実施されるかを示す、コードセグメント例700である。コントロールデザイナは、タスクパネルを介して、アクションをサポートするコントロールのために、アクションエディタ(actions editor)を自動的に提供することができる。アクションエディタは、アプリケーションによって参照されるアセンブリで利用可能なアクションの組を提示する。アクションは、プロパティグリッドを超える豊かな編集体験を提供するために、関連するデザイナ機能を提供する。コードセグメント例700は、アクションがイベント発生前に実行されることができるか、それとも発生後に実行されることができるかを示す。
基本クラスが、すべてのコントロールアクションに提供される。各アクションは、アクションがイベントが起こされる前に実行されるか、それとも後に実行されるかを指定することができる。戻り値は、イベントが起こされる前に実行されるアクションにとって意味がある。アクションは、その後のイベントの発生を取り消すために「真」を返すことができる。アクションは、ポストバック(post−back)振る舞いのカスタマイズで利用されることができる。コントロールは、ポストバック関係のイベントに関連付けられたアクションのためのインタフェースを実施するアクションに呼び掛けることができる。
図8は、基本的なボタンコントロールが、コントロールアクションを宣言的に定義するための機能をどのように提供することができるかを示す、コードセグメント例800である。
上記の明細書、例、およびデータは、本発明の構成の製造および使用についての完全な理解を提供する。本発明の多くの実施形態が、本発明の主旨および範囲から逸脱することなく作成され得るので、本発明は、本明細書に添付された特許請求の範囲内である。
本発明の様々な実施形態で利用され、様々な実施形態によって提供される、コンピュータシステムを示すコンピュータシステムアーキテクチャ図である。 宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。 宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。 宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。 宣言的に定義されたコントロールを実装するアプリケーションコンポーネントの一例の図である。 宣言的に定義されたコントロールアクションのためのプロセスを示す操作フロー図である。 コントロール設計フレームワークがコントロールデザイナにおいてどのように実施されるかを示すコード例である。 コントロールアクションを宣言的に定義するための機能を基本的なコントロールがどのように提供することができるかを示すコード例である。

Claims (12)

  1. コンピュータに、コントロールアクションを宣言的に定義する方法を実行させるプログラムであって、コンピュータに、
    コントロールを画定するためのビジュアルデザイン画面インタフェースを提供するステップと、
    数の予め定義されたアクションコンポーネントのうちの第1のアクションコンポーネントを、第1のメソッドを介して前記ビジュアルデザイン画面インタフェース内に画定されたコントロールに関連付けるステップであって、第1のアクションコンポーネントおよび前記コントロールは独立でカスタマイズ可能なコンポーネントである、ステップと、
    イベントを受け付けたときに第1のメソッドが実行されるように、イベントを前記コントロールに関連付けるステップと、
    前記コントロールで値を受け取るステップと、
    イベントに関連付けられた前記コントロールで入力を受け付けて第1のメソッドを実行して第1のアクションコンポーネントの実行を引き起こすステップであって、第1のアクションコンポーネントを実行することは、前記受け取った値に基づいて論理オペレーションを実行することを含む、ステップと、
    第2のアクションコンポーネントを、第2のメソッドを介して第1のアクションコンポーネントおよび前記コントロールに関連付けるステップであって、第1のアクションコンポーネント、第2のアクションコンポーネントおよび前記コントロールは独立でカスタマイズ可能なコンポーネントであり、第2のアクションコンポーネントは、列挙型プロパティの1つを選択することが第2のアクションコンポーネントに伴って表示される有効なプロパティ選択を引き起こすような列挙型プロパティに関連付けられる、ステップと、
    イベントに関連付けられた前記コントロールで入力を受け付けて、第2のメソッドを実行して第2のアクションコンポーネントの実行を引き起こすステップと実行させることを特徴とするプログラム。
  2. 第2のアクションコンポーネントを、第1のアクションコンポーネントおよび前記コントロールに関連付けることは、第2のアクションコンポーネントを第1のアクションコンポーネント内に入れ子にすることを含むことを特徴とする請求項1に記載のプログラム。
  3. 前記第1のアクションコンポーネントを実行することは、セマンティクスを前記コントロールに関連付けることをさらに含み、前記セマンティクスはコントロールに関連付けられたアプリケーションに特有であることを特徴とする請求項1に記載のプログラム。
  4. 前記コントロールは、前記ビジュアルデザイン画面インタフェース内のボタンであることを特徴とする請求項1に記載のプログラム。
  5. コンピュータに、コントロールアクションを宣言的に定義する方法を実行させるプログラムを記録したコンピュータ可読記録媒体であって、該プログラムはコンピュータに、
    コントロールを画定するためのビジュアルデザイン画面インタフェースを提供するステップと、
    数の予め定義されたアクションコンポーネントのうちの第1のアクションコンポーネントを、第1のメソッドを介して前記ビジュアルデザイン画面インタフェース内に画定されたコントロールに関連付けるステップであって、第1のアクションコンポーネントおよび前記コントロールは独立でカスタマイズ可能なコンポーネントである、ステップと、
    イベントを受け付けたときに第1のメソッドが実行されるように、イベントを前記コントロールに関連付けるステップと、
    前記コントロールで値を受け取るステップと、
    イベントに関連付けられた前記コントロールで入力を受け付けて第1のメソッドを実行して第1のアクションコンポーネントの実行を引き起こすステップであって、第1のアクションコンポーネントを実行することは、前記受け取った値に基づいて論理オペレーションを実行することを含む、ステップと、
    第2のアクションコンポーネントを、前記コントロール定義するための第2のメソッドを介して第1のアクションコンポーネントおよび前記コントロールに関連付けるステップであって、第1のアクションコンポーネント、第2のアクションコンポーネントおよび前記コントロールは独立でカスタマイズ可能なコンポーネントであり、第2のアクションコンポーネントは、列挙型プロパティの1つを選択することが第2のアクションコンポーネントに伴って表示される有効なプロパティ選択を引き起こすような列挙型プロパティに関連付けられる、ステップと、
    イベントに関連付けられた前記コントロールで入力を受け付けて、第2のメソッドを実行して第2のアクションコンポーネントの実行を引き起こすステップと実行させることを特徴とするプログラムを記録したコンピュータ可読記録媒体。
  6. 第2のアクションコンポーネントを、第1のアクションコンポーネントおよび前記コントロールに関連付けることは、第2のアクションコンポーネントを第1のアクションコンポーネント内に入れ子にすることを含むことを特徴とする請求項5に記載のプログラムを記録したコンピュータ可読記録媒体。
  7. 前記第1のアクションコンポーネントを実行することは、セマンティクスを前記コントロールに関連付けることをさらに含み、前記セマンティクスはコントロールに関連付けられたアプリケーションに特有であることを含むことを特徴とする請求項5に記載のプログラムを記録したコンピュータ可読記録媒体。
  8. 前記コントロールは、前記ビジュアルデザイン画面インタフェース内のボタンであることを特徴とする請求項5に記載のプログラムを記録したコンピュータ可読記録媒体。
  9. プロセッサと
    プログラムを記載したメモリと備えたシステムであって、
    前記プログラムは、前記プロセッサに、コントロールアクションを宣言的に定義する方法を実行させるプログラムであって、前記プログラムはプロセッサに、
    コントロールを画定するためのビジュアルデザイン画面インタフェースを提供するステップと、
    数の予め定義されたアクションコンポーネントのうちの第1のアクションコンポーネントを、第1のメソッドを介して前記ビジュアルデザイン画面インタフェース内に画定されたコントロールに関連付けるステップであって、第1のアクションコンポーネントおよび前記コントロールは独立でカスタマイズ可能なコンポーネントである、ステップと、
    イベントを受け付けたときに第1のメソッドが実行されるように、イベントを前記コントロールに関連付けるステップと、
    前記コントロールで値を受け取るステップと、
    イベントに関連付けられた前記コントロールで入力を受け付けて第1のメソッドを実行して第1のアクションコンポーネントの実行を引き起こすステップであって、第1のアクションコンポーネントを実行することは、前記受け取った値に基づいて論理オペレーションを実行することを含む、ステップと、
    第2のアクションコンポーネントを、第2のメソッドを介して第1のアクションコンポーネントおよび前記コントロールに関連付けるステップであって、第1のアクションコンポーネント、第2のアクションコンポーネントおよび前記コントロールは独立でカスタマイズ可能なコンポーネントであり、第2のアクションコンポーネントは、列挙型プロパティの1つを選択することが第2のアクションコンポーネントに伴って表示される有効なプロパティ選択を引き起こすような列挙型プロパティに関連付けられる、ステップと、
    イベントに関連付けられた前記コントロールで入力を受け付けて、第2のメソッドを実行して第2のアクションコンポーネントの実行を引き起こすステップと実行させることを特徴とするシステム。
  10. 第2のアクションコンポーネントを、第1のアクションコンポーネントおよび前記コントロールに関連付けることは、第2のアクションコンポーネントを第1のアクションコンポーネント内に入れ子にすることを含むことを特徴とする請求項9に記載のシステム。
  11. 前記第1のアクションコンポーネントを実行することは、セマンティクスを前記コントロールに関連付けることをさらに含み、前記セマンティクスはコントロールに関連付けられたアプリケーションに特有であることを特徴とする請求項9に記載のシステム。
  12. 前記コントロールは、前記ビジュアルデザイン画面インタフェース内のボタンであることを特徴とする請求項9に記載のシステム。
JP2008531156A 2005-09-12 2006-08-29 宣言的に定義されるコントロールアクション Expired - Fee Related JP5108773B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71656205P 2005-09-12 2005-09-12
US60/716,562 2005-09-12
US11/333,870 2006-01-17
US11/333,870 US7730495B2 (en) 2005-09-12 2006-01-17 Declaratively defined control actions
PCT/US2006/034122 WO2007032926A1 (en) 2005-09-12 2006-08-29 Declaratively defined control actions

Publications (2)

Publication Number Publication Date
JP2009508254A JP2009508254A (ja) 2009-02-26
JP5108773B2 true JP5108773B2 (ja) 2012-12-26

Family

ID=37856792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008531156A Expired - Fee Related JP5108773B2 (ja) 2005-09-12 2006-08-29 宣言的に定義されるコントロールアクション

Country Status (9)

Country Link
US (1) US7730495B2 (ja)
EP (1) EP1924927B1 (ja)
JP (1) JP5108773B2 (ja)
KR (1) KR20080043345A (ja)
CN (1) CN101263484B (ja)
ES (1) ES2609508T3 (ja)
MX (1) MX2008003417A (ja)
RU (1) RU2431187C2 (ja)
WO (1) WO2007032926A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341598B2 (en) 2008-01-18 2012-12-25 Microsoft Corporation Declartive commands using workflows
US8504985B2 (en) * 2009-04-30 2013-08-06 Adobe Systems Incorporated Context sensitive script editing for form design
CN102929632B (zh) * 2012-11-06 2017-02-15 丁黄香 控件动作执行方法
RU2583736C2 (ru) 2014-02-13 2016-05-10 Общество С Ограниченной Ответственностью "Яндекс" Система и способ отображения результатов поиска
US20160077709A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Actionable item switcher
US9288235B1 (en) * 2014-09-17 2016-03-15 Microsoft Technology Licensing, Llc Contextually aware device management
CN107544820A (zh) * 2016-06-29 2018-01-05 平安科技(深圳)有限公司 图表展示方法及装置
US10635416B2 (en) 2018-07-31 2020-04-28 Microsoft Technology Licensing, Llc Property filtering

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809266A (en) 1994-07-29 1998-09-15 Oracle Corporation Method and apparatus for generating reports using declarative tools
US6449659B1 (en) * 1997-07-14 2002-09-10 Microsoft Corporation System for instance customization with application independent programming of controls
US6014666A (en) 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6083276A (en) 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
AU3875900A (en) 1999-03-11 2000-09-28 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
US6493837B1 (en) * 1999-07-16 2002-12-10 Microsoft Corporation Using log buffers to trace an event in a computer system
US6856322B1 (en) 1999-08-03 2005-02-15 Sony Corporation Unified surface model for image based and geometric scene composition
WO2001082071A1 (en) 2000-04-21 2001-11-01 Togethersoft Corporation Methods and systems for supporting and deploying distributed computing components
US6677962B1 (en) * 2000-06-26 2004-01-13 Microsoft Corporation Methods and systems for manipulating user interface controls
US6715107B2 (en) 2000-12-26 2004-03-30 International Business Machines Corporation Method and system for reducing the computation tree to include only model behaviors defined succinctly by a user via regular expressions as being of interest
US20050210263A1 (en) * 2001-04-25 2005-09-22 Levas Robert G Electronic form routing and data capture system and method
JP4536971B2 (ja) * 2001-09-28 2010-09-01 キヤノン株式会社 サーバ装置及びその制御方法
US7152204B2 (en) * 2001-10-18 2006-12-19 Bea Systems, Inc. System and method utilizing an interface component to query a document
US7076766B2 (en) 2002-06-03 2006-07-11 Steve Wirts Software application development methods and framework
WO2004019160A2 (en) 2002-08-23 2004-03-04 Jway Group, Inc. Extensible user interface (xui) framework and development environment
EP1403765B1 (en) 2002-09-25 2008-12-24 Sap Ag Method and computer system for event handling
US20040233237A1 (en) * 2003-01-24 2004-11-25 Andreas Randow Development environment for DSP
JP2004318848A (ja) * 2003-03-28 2004-11-11 Daiwa Securities Group Inc 画面自動生成装置、画面自動生成方法、画面自動生成プログラム、記録媒体、実行装置、ファイル編集装置、ファイル編集方法およびファイル編集プログラム
US7576878B2 (en) * 2003-04-03 2009-08-18 Hewlett-Packard Development Company, L.P. Enhanced management of raster image processing resources
US7644367B2 (en) 2003-05-16 2010-01-05 Microsoft Corporation User interface automation framework classes and interfaces
US7503043B2 (en) 2003-09-05 2009-03-10 International Business Machines Corporation Method of building dynamic installation packages using a declarative authoring tool
JP2005099975A (ja) * 2003-09-24 2005-04-14 Hitachi Ltd プログラム編集装置
US20050144174A1 (en) 2003-12-31 2005-06-30 Leonid Pesenson Framework for providing remote processing of a graphical user interface
JP2005227865A (ja) * 2004-02-10 2005-08-25 Fuji Xerox Co Ltd 印刷制御装置、方法およびプログラム

Also Published As

Publication number Publication date
MX2008003417A (es) 2008-03-27
RU2008109248A (ru) 2009-10-10
CN101263484A (zh) 2008-09-10
US20070061741A1 (en) 2007-03-15
KR20080043345A (ko) 2008-05-16
JP2009508254A (ja) 2009-02-26
CN101263484B (zh) 2010-09-08
RU2431187C2 (ru) 2011-10-10
EP1924927A4 (en) 2008-12-24
ES2609508T3 (es) 2017-04-20
EP1924927B1 (en) 2016-10-12
US7730495B2 (en) 2010-06-01
WO2007032926A1 (en) 2007-03-22
EP1924927A1 (en) 2008-05-28

Similar Documents

Publication Publication Date Title
JP5108773B2 (ja) 宣言的に定義されるコントロールアクション
KR101424303B1 (ko) 씬 클라이언트 소프트웨어 개발 환경을 제공하기 위한 방법, 서버 기반 소프트웨어 개발 프로젝트 공유를 위한 방법, 및 컴퓨터-판독가능 매체
RU2439664C2 (ru) Модель фазирования прикладной среды
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
KR102055024B1 (ko) 클라이언트측 최소 다운로드 및 시뮬레이션 페이지 네비게이션 기능
US9524279B2 (en) Help document animated visualization
US20060117267A1 (en) System and method for property-based focus navigation in a user interface
US8037484B2 (en) Building compound extensible AJAX applications
US8650532B2 (en) Change notification and information update based on uncompiled software development project
US20050268280A1 (en) Encapsulating changes to a software application
US9372683B2 (en) Automatic generation of class identifiers from source code annotations
US20110126171A1 (en) Dynamic native editor code view facade
JP4851107B2 (ja) コンピュータ実施方法
US20050102652A1 (en) System and method for building software suite
US20030233585A1 (en) System and method for reducing errors during software development
Gundecha et al. Learn Selenium: Build data-driven test frameworks for mobile and web applications with Selenium Web Driver 3
Hill et al. History and development
Betancourt et al. Why Python?
JP5629355B1 (ja) ソースプログラム生成装置およびソースプログラム生成プログラム
Rouaix et al. Security properties of typed applets
Troelsen et al. Introducing ASP. NET Core Web Applications
Burdette The JavaScript Pocket Guide

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120824

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121005

R150 Certificate of patent or registration of utility model

Ref document number: 5108773

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151012

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees