JP2007172602A - イベント・ソースへのイベントを永続的に決定するための方法および装置 - Google Patents
イベント・ソースへのイベントを永続的に決定するための方法および装置 Download PDFInfo
- Publication number
- JP2007172602A JP2007172602A JP2006327595A JP2006327595A JP2007172602A JP 2007172602 A JP2007172602 A JP 2007172602A JP 2006327595 A JP2006327595 A JP 2006327595A JP 2006327595 A JP2006327595 A JP 2006327595A JP 2007172602 A JP2007172602 A JP 2007172602A
- Authority
- JP
- Japan
- Prior art keywords
- event
- component
- hierarchy
- identifier
- gui
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
【課題】 GUIイベントを記録し、記録したイベントの以降の再生のためにイベントの目標GUI構成要素を永続的に識別するための方法、コンピュータ・プログラム、およびデータ処理システムを提供すること。
【解決手段】 本発明の好ましい実施形態によれば、はっきりと定義した順序で、構成要素階層を横断することにより各GUI構成要素に数値識別子が割り当てられる。横断中、GUI構成要素がアクセスされると、構成要素がアクセスされた順序により構成要素に順次的に番号が付けられる。イベントを受信した場合には、イベントの目標構成要素に対応する番号と一緒にイベントが記録される。GUIプログラムが次回実行されると、同じ順序で構成要素階層が再度横断され、これにより構成要素に識別番号が同様に割り当てられる。それ故、番号により識別したその対応する目標構成要素に各イベントを適用することにより、記録したイベントを再生することができる。
【選択図】 図1
【解決手段】 本発明の好ましい実施形態によれば、はっきりと定義した順序で、構成要素階層を横断することにより各GUI構成要素に数値識別子が割り当てられる。横断中、GUI構成要素がアクセスされると、構成要素がアクセスされた順序により構成要素に順次的に番号が付けられる。イベントを受信した場合には、イベントの目標構成要素に対応する番号と一緒にイベントが記録される。GUIプログラムが次回実行されると、同じ順序で構成要素階層が再度横断され、これにより構成要素に識別番号が同様に割り当てられる。それ故、番号により識別したその対応する目標構成要素に各イベントを適用することにより、記録したイベントを再生することができる。
【選択図】 図1
Description
本発明は、概して、オブジェクト指向型グラフィカル・ユーザ・インタフェース(GUI)の分野に関する。より詳細には、本発明は、イベント駆動オブジェクト指向型グラフィカル・ユーザ・インタフェース(GUI)内でイベントを記録および再生するための方法、コンピュータ・プログラムおよびデータ処理システムを提供する。
最も初期の対話式コンピュータは、人間のオペレータと対話型通信を行うためにテレタイプライタ(TTY)またはテキスト端末に依存していた。これらの初期のタイプの人とコンピュータとの相互作用(HCI)は、テキスト・ベースまたは文字ベースの情報交換しかできなかった。多くのコンピュータ・ソフトウェア製品は、今日、グラフィカル・ユーザ・インタフェース、すなわちGUI(通常、「gooey」のように発音する)を使用している。GUIは、テキストまたは文字の他に画像または他の視覚表現を使用する人とコンピュータとの相互作用の視覚手段である。
大部分のGUIは、ユーザのディスプレイ上に表示され、ユーザの入力により作動する視覚制御装置を使用する。典型的な視覚制御装置は、ボタン、(テキストを入力するための)テキスト・フィールド、ラジオ・ボタン、チェックボックス、選択ボックスおよびメニュー・バーを含むが、含むことができるものはこれらに限定されない。典型的なGUIにおいては、ディスプレイの周囲でカーソルを移動し、視覚制御装置を作動するために、マウスのようなポインティング・デバイスが使用される。GUIは、通常、表示のためのラベルおよびアイコンのような静的表示構成要素も使用するが、通常それ自身入力機能を持たない。しかし、場合によっては、これらの静的表示構成要素は、これらの構成要素が、ディスプレイ上の他のフィーチャに対してディスプレイ上で移動している場合には、入力の役割を果たすことができる(例えば、ファイルを削除するために、あるファイルのアイコンをごみ箱のアイコンにドラッグする場合)。
多くのGUIは、「窓掛け(windowing)」インタフェースと呼ばれる。何故なら、これらのGUIは、「デスクトップ」と呼ばれるバックグラウンド上に重畳しているパネルまたは「ウィンドウ」の形で、ディスプレイ上に情報を視覚的に配置するからである。多くのシステムの場合、ウィンドウは、ポインティング・デバイスにより、ディスプレイ上の他の位置にドラッグすることもできるし、拡大したり、縮小したり、他のウィンドウに重畳させることができる。通常、ウィンドウは、ウィンドウ内の制御装置を作動することにより、ユーザがコンピュータ・プログラムと相互作用をすることができるようにするために多数の視覚制御装置を含む。ユーザからの何らかの入力が必要な場合には、「ダイアログ・ボックス」と呼ばれる特種な形のウィンドウがプログラムにより表示される。
ウィンドウ、視覚制御装置、および静的表示構成要素は、GUI構成要素と呼ばれる。何故なら、GUI構成要素は、GUIを構成している構成ブロックであるからである。ウィンドウのようないくつかのGUI構成要素は、「コンテナ構成要素」(または単に「コンテナ」)と呼ばれる。何故なら、このような構成要素は、他の構成要素を含むことができるからである。例えば、ウィンドウは、ボタンまたはメニュー・バーのような視覚制御装置、およびテキスト・ラベルまたはアイコンのような静的表示構成要素を含むことができる。コンテナは、また、他のコンテナを含むことができる。例えば、あるウィンドウ・ベースのワード・プロセッサの場合には、ワード・プロセッサ自身が(主)ウィンドウ内に位置していて、一方、編集中の各ファイルは主ウィンドウ内の他のウィンドウ内に位置する。
コンテナ構成要素はウィンドウを含むが、また、目に見えるものであってもよいし、目に見えないものであってもよい他の構成要素を含むことができる。例えば、カリフォルニア州マウンテンビュー所在のSun Microsystems社が開発したJAVA(TM)プログラミング言語は、ウィンドウおよびダイアログ・ボックスのような目に見える種々のコンテナ構成要素、および多数の内蔵構成要素を1つのユニットにまとめるためだけに使用する「java.awt.Panel」コンテナ構成要素のような目に見えないコンテナ構成要素を定義している。コンテナのいくつかの例としては、ウィンドウ、ダイアログ・ボックス、パネル、タブ付きパネル、ノートブック・ページ、および1つまたは複数の他のGUI構成要素を含むことができる任意の他のGUI構成要素等があるが、これらに限定されない。
構成要素の表示、または構成要素に対するユーザ入力(例えば、ポインティング・デバイスによる構成要素へのポインティングまたは構成要素上でのクリックから)の検出のようなGUI構成要素上で基本的動作を供給するための実際の機能は、多くの場合、オペレーティング・システムのようなシステム・レベルのソフトウェアにより提供される。通常、アプリケーションは、GUIを生成し、維持するためにシステム・レベルのソフトウェアへの呼出しを行い、一方、システム・レベルのソフトウェアは、特定のGUI構成要素に対するユーザ入力イベントを検出し、イベント通知をこれらのGUI構成要素を担当しているアプリケーションに送る。
例えば、ワシントン州レドモンド所在のMicrosoft社が開発したWINDOWS(R)オペレーティング・システムは、GUIの生成のためのサービスを提供し、ユーザ入力イベントを適当なアプリケーションに中継する。WINDOWS(R)オペレーティング・システム自身のための主インタフェースもGUIである。他の環境の場合には、GUIサービスを提供するために、(例えば、デーモン(daemon)またはバックグラウンド処理として)オペレーティング・システム・カーネルのトップ上で、もっと高いレベルのシステム・ソフトウェアが動作することができる。例えば、「X11」は、オペレーティング・システムでプロセスとして動作するオープン・ソースGUIエンジンである。X11は、X11サーバ・プロセスが、GUIサービスを提供するためにアプリケーション(クライアント)から要求を受け入れ、これらの構成要素に関連するアプリケーションへの特定のGUI構成要素に関係するユーザ入力イベントを中継するクライアント−サーバ・モデルを採用している。
別の方法としては、アプリケーションは、GUIサービスを提供するためのそれ自身のコードを含むことができる。通常、このコードは、基本的なGUI動作を行うための再利用可能なコード・ライブラリの形をしている。
多くの現代のプログラミング言語実施は、通常、システム・レベルのソフトウェアが提供するGUIサービスへのインタフェースを提供することにより、またはプログラミング言語でのインタフェースが提供される低いレベルのGUIコードのライブラリを内蔵することにより、GUIを生成するための内蔵機能を有する。例えば、JAVA(TM)プログラミング言語は、GUIを定義するための標準アプリケーション・プログラミング・インタフェース(API)を含むオブジェクト指向プログラミング言語である。JAVA(TM)プログラミング言語標準の一部である2つのAPIは、Abstract Windowing Toolkit(AWT)API、およびSwing API(AWT API上で形成される)である。JAVA(TM)プログラミング言語の場合には、オブジェクト指向型GUI APIが通常そうであるように、各タイプのGUI構成要素がクラスとして定義される。
オブジェクト指向プログラミング言語の場合には、クラスは、メンバー変数と呼ばれるデータの集合体を含むデータ・タイプの定義であり、データ、呼び出された方法(または別の方法としては、メンバー機能)上で行うことができる一組の動作の定義である。あるクラスにより定義されたデータ・タイプのデータの実際の集合体は、オブジェクトと呼ばれる。オブジェクト指向プログラミング(OOP)言語(parlance)の場合には、オブジェクトは、そのクラスの「インスタンス(instance)」であると言われる。何故なら、そのクラスにより定義されるのはデータ構造であるからである。オブジェクト指向プログラミング言語でオブジェクトを生成するための実行時処理は、「インスタンシエーション(instantiation)」と呼ばれ、実行時に存在するオブジェクトは、「インスタンシエートされている」と言われる。
また、オブジェクト指向プログラミング言語は、通常、「継承(inheritance)」と呼ばれるものを提供する。継承を使用して、新しいクラス(「子孫」クラスと呼ばれる)を1つまたは複数の既存のクラス(「ベース」クラスと呼ばれる)で定義することができる。それ故、子孫クラスは、ベース・クラスの1つまたは複数のメンバー変数または方法を継承する。例えば、JAVA(TM)プログラミング言語のAWT APIの場合には、「コンテナ」は「構成要素」と呼ばれるベース・クラスの子孫クラスであり、「コンテナ」クラスは、「コンテナ」の少なくともいくつかの方法およびメンバー変数を含む。それ故、「コンテナ」は、「構成要素」の子孫であるということになる。多くの場合、子孫クラスは、ベース・クラスから継承したものではない追加の方法またはメンバー変数を含む。
同様に、子孫クラスは、特定の方法のためにベース・クラスのコードを重ね書きするように書き込むことができる。例えば、ベース・クラスの「コンテナ」は、子孫クラスの「コンテナ」が継承するGUI構成要素を表示するための「表示」と呼ばれる方法を有することができる。コンテナ(他の構成要素を含むことができる)の表示は、一般的なGUI構成要素の表示よりも特異なものなので、「コンテナ」クラスは、「構成要素」クラスのコードとは異なる「表示」のためのコードを定義することができる。
このことは重要である。何故なら、ほとんどのオブジェクト指向言語の場合には、子孫クラスのオブジェクトは、ベース・クラスのもっと特異なインスタンスとして処理されるからである。それ故、「コンテナ」オブジェクトは、タイプ「構成要素」の変数内に格納することができ、または「構成要素」を引数としてとる方法は、「コンテナ」を引数としてとることもできる。何故なら、「コンテナ」は、「構成要素」から特性(すなわち、メンバー変数および方法)を継承するからである。子孫クラスからのオブジェクトをそれらのオブジェクトがベース・クラスのインスタンスであるかのように処理するこの機能は、「多型」と呼ばれる。
JAVA(TM)プログラミング言語が提供するようなオブジェクト指向型GUI APIの場合には、GUI構成要素はオブジェクトとしてインスタンシエートされ、相互間のGUI構成要素の設置および行動を定義するために、インスタンシエートしたオブジェクト間で関係が確立される。例えば、「収容関係」は、そのコンテナ構成要素が含んでいる構成要素に、コンテナ構成要素を関連付けるGUI構成要素間の関係である。例えば、JAVA(TM)プログラミング言語の場合には、構成要素は、通常、「追加」と呼ぶコンテナの方法によりコンテナとの収容関係に入る。
典型的なGUI構成要素は、構成要素の特定の特性を定義する1つまたは複数の属性を有する。例えば、典型的な窓掛けGUI内の「ボタン」構成要素は、ディスプレイ上のボタンのサイズ、ボタンの表面上に表示されるテキストまたはグラフィックス、ボタンの背景の色、ボタンに関連するキーボード・ショートカット等を定義する属性を有する。通常、GUI構成要素をインスタンシエートするプログラム・コード(例えば、機能、方法、サブルーチン、手順等)の一部は、また、その構成要素のための属性を所望の値に設定する多数のコードのラインを含む。JAVA(TM)プログラミング言語および他のオブジェクト指向プログラミング・システムの場合には、例えば、構成要素は、一般的に、構成要素の特定の属性を設定するために実行することができる方法を有する。
多くのインスタンスの場合、GUIへの入力(例えば、キーボードまたはマウスあるいはその両方から)を記録することができる見込みがあるので、これらの入力をセーブし再生することができる。例えば、入力イベントを記録し再生する機能は、反復GUI試験の効率を増大する。Eclipse Standard Widget Toolkit(SWT)またはJAVA(TM)AWT/Swing APIのような多くのGUIツールキットの場合、これらのツールキットは、GUI構成要素に永続的な一意の識別を割り当てるための機能を持たない。それ故、(GUIアプリケーションの以降の実行の際のように)GUIが再度生成される度に、GUI制御装置に新しい識別が割り当てられる。このことは、以降の再生のために入力を永続的にセーブするのを難しくする。何故なら、どの制御装置が特定の入力イベントを永続的方法で目標にするのかを格納する明確な方法がないからである。
2005年4月28日付けの米国特許第20050091510号公報(MC KEON他)は、永続的識別子を生成するための1つの方法を開示している。しかし、この方法は、識別子の一意性を保存するために長く複雑な経路識別子を生成しなければならない。
米国特許第20050091510号公報
それ故、記録したイベントの以降の再生のために永続的方法でGUI素子を一意に識別するための簡単で透明な方法が求められている。本発明は、この問題および他の問題の解決方法を提供し、従来の解決方法より優れている他の利点を有する。
本発明は、GUIイベントを記録し、記録したイベントの以降の再生のためにイベントの目標GUI構成要素を永続的に識別するための方法、コンピュータ・プログラム、およびデータ処理システムを提供する。本発明の好ましい実施形態によれば、はっきりと定義した順序(例えば、深さ方向優先の横断など)で、構成要素階層を横断することにより、各GUI構成要素に数値識別子が割り当てられる。横断中、GUI構成要素がアクセスされると、構成要素がアクセスされた順序により構成要素に順次的に番号が付けられる。イベントを受信した場合には、イベントの目標構成要素に対応する番号と一緒にイベントが記録される。GUIプログラムが次回実行されると、同じ順序で構成要素階層が再度横断され、これにより同じ構成要素が前と同じ識別子に関連付けられる。それ故、番号により識別したその対応する目標構成要素に各イベントを適用することにより、記録したイベントを再生することができる。
上記説明は概要であるので、必要に応じて詳細を簡単にしたり、一般化したり、省略してある。それ故、当業者であれば、概要は単に例示としてのものであって、如何なる意味でも本発明を制限するものではないことを理解することができるだろう。他の態様によれば、特許請求の範囲だけに記載する本発明の新規な機能および利点は、下記の詳細な説明を読めば理解することができるだろう。この説明も本発明を制限するものではない。
添付の図面を参照すれば、当業者であれば本発明をよりよく理解することができ、その多くの目的、機能および利点を理解することができるだろう。
下記の説明は、本発明の一例を詳細に説明するためのものであって、本発明自身を制限するためのものと解釈すべきではない。それどころか、任意の数の変更も、特許請求の範囲に記載する本発明の範囲内に入る。
図1は、本発明の好ましい実施形態によるGUI構成要素階層100の図面である。GUI構成要素階層100は、エクリプスSWT(Eclipse SWT)およびJAVA(TM)AWT/Swing APIを含むがこれに限定されない多数のGUIツールキットのうちのいずれかにより実施することができる。この好ましい実施形態によれば、階層100内の各構成要素(例えば、構成要素102、104および106)は識別子により識別される。この例の場合には、選択した識別子は整数であるが、識別子を表すために任意の類似の計数データ・タイプ(enumerable data type)を使用することもできる。これらの識別子番号は、はっきりと定義した順序の横断プロセスにより階層100内の構成要素に割り当てられる。
この特定のケースの場合、構成要素には(鎖線108で示す)左から右への深さ方向優先の横断により番号が付けられる。それ故、階層100のルート要素である構成要素102には、「1」という番号が付けられる。何故なら、構成要素102は、階層100の左から右への深さ方向優先の横断中にアクセスする第1の構成要素であるからである。同様に、構成要素104は、左から右への深さ方向優先の横断中にアクセスする第2の構成要素である。それ故、構成要素104には「2」という番号が付けられる。構成要素106は、3番目にアクセスされる構成要素なので「3」という番号が付けられ、以下同様である。それ故、階層100内の構成要素の結果としてのラベル付けは、階層100のトポロジーで完全に決まり、任意の他のデータ(構成要素自身の他の内部データなど)で決まるのではない。それ故、このラベル付けは、(同じトポロジーを有する)同じ階層が再現される場合にはいつでもこの意味で永続的なものであり、階層の同じはっきりと定義した順序の横断を行うことにより同じラベル付けを再現することができる。
さらに、当業者であれば、選択した横断の特定の形(例えば、深さ方向優先、幅方向優先、左から右、右から左など)は、可能な各トポロジーのために構成要素がアクセスされることができる選択する唯一の可能な順序を有する横断の形が1つである場合には、本発明が正しく機能するために不可欠なものではないことを理解することができるだろう。左から右への深さ方向優先の横断は確かにこの特性を有しているが、同様にこの特性を有する順番付け横断の他の可能な形は無数にある。
図2に示すように、構成要素階層にラベルが付けられると、階層に対して以降の修正を行うことができる。例えば、図2の場合には、構成要素202(「11」という番号が付いている)は、(図1の階層100から修正される)修正した階層200においては、構成要素204(「7」という番号が付いている)と交換済みである。また、追加の構成要素206には、階層200が追加され、(11の後の)順に次の数値識別子である識別子「12」が与えられる。
必要な場合、または便利な場合には、構成要素階層は、修正した場合には番号を付け直すことができる。例えば、図3は、階層200の番号を付け直したバージョン300を示す。このような番号の付け直しが行われると、前に定義した識別子(図4のコラム402)を、対応する新しく定義した識別子(図4のコラム404)にマッピングするために、(図2および図3に示すラベル付けに対応する)図4のテーブル400のような関連するデータ構造を生成することができる。
図5〜図9は、図1に示すようなラベルを付けた階層を生成し、イベントの目標構成要素を識別するためのその階層を使用し、そのためにこれらイベントおよびその対応する目標構成要素を記録し、再生することができるプロセスを示す。
図5は、本発明の好ましい実施形態によるGUIに識別子を割り当てるプロセスのフローチャートである。このプロセスは、GUI自身が最初に生成されるか、または階層の番号の付け直しが行われた場合に実行され、そのため階層内の構成要素と関連する識別子は、階層の現在のトポロジーを正しく反映する。
GUI階層が識別子によりラベルが付けられたり、再度ラベルが付けられると、もし存在する場合には、GUI構成要素の既存の識別子のその現在の値はクリアされる(ブロック502)。(図1の例の場合には、これらの識別子は、数値識別子である。)次に、予め指定した順序で階層が横断され、横断中に個々のGUI構成要素がアクセスされると、順次、各構成要素に番号が付けられる(または他の方法の場合には、識別子によりタグが付けられる)(ブロック504)。
図6は、本発明の好ましい実施形態による以降の再生のためにイベントを記録するプロセスのフローチャートである。本発明の好ましい実施形態の場合には、図6に示すプロセスは、イベントが発生した場合にいつでも非同期的に呼び出されるイベント・ハンドラ・ルーチンに内蔵される。イベントを検出した場合には(ブロック600)、そのイベントの目標構成要素が検出される(ブロック602)。
次に、そのイベントに対応するイベント記録が生成される(ブロック604)。識別した目標構成要素に対応する数値識別子が、このイベント記録に記録される(ブロック606)。このイベントに関する追加情報も、イベント記録に格納される(ブロック608)。この情報は、イベント(例えば、キーの圧下、マウスのクリックなど)のタイプ、画面座標、またはイベントに対応する他の類似のパラメータ、およびタイムスタンプ、または遅延情報を含むことができる。このタイムスタンプまたは遅延情報は、最後のイベントを記録してからの経過時間のような再生中のイベントのタイミングを再度生成するために使用することができるオプションとしての情報である。図9に示すように、この情報は、GUIへの記録したイベントの適用の間の遅延の測定値を挿入するために使用することができる。
図6のプロセスの結果は、図7に示すように、イベント記録(例えば、記録701)のアレイ700である。アレイ700は記録したイベントのシーケンスを示す。アレイ700内の各記録は、そのイベントが関連するGUI構成要素の識別子(識別子702)、イベントの前の遅延時間(遅延時間703)、およびイベントのGUIツールキット表現であり、当該イベントのタイプに関する情報を含んでいるイベント・オブジェクト706への参照またはポインタ704を含む。
アレイ700が含んでいる情報は、以降の使用のために永続記憶装置に格納することができる。本発明の好ましい実施形態でこのことを行うことができる1つの方法は、各記録(例えば、記録701)を、図8に示すように、直列の(テキスト)表現708に変換することである。イベント記録の直列化方法の一例である直列表現708は、直列イベント記録の開始を示す前文710、表示中のイベントの目標構成要素の識別子(識別子712)、遅延時間714、およびイベント記録が示すイベントのタイプの識別(イベント・タイプ716)を含む。当業者であれば、制限を受けずに、本発明の範囲および精神から逸脱することなしに、本発明の実施形態でイベント記録の種々様々な異なる形の直列化を使用することができることを理解することができるだろう。さらに、コンテキストにより、異なる量の情報をこのような直列化したものの中に格納/表示することができる。例えば、「キー圧下」イベントを、押された特定のキーに関する追加情報と一緒に直列化することができる。
別の方法としては、他の形の永続記憶装置を使用することができる。このような別の形の永続記憶装置は、図8の直列化した/フラット・ファイル記憶装置を補足することもできるし、その代わりに使用することもできる。例えば、イベント情報を格納するために、リレーショナル・データベースまたは他の形のデータベース管理システムを使用することができる。
図9は、本発明の好ましい実施形態による記録したイベントを再生するためのプロセスのフローチャートである。再生するイベントがあり(ブロック800:yes)、(永続記憶装置またはメモリから)次のイベント記録が読み取られる(ブロック802)。次に、現在のプロセスまたはスレッドがイベント記録内に記録している指定の長さの遅延時間の間中止される(スリープ状態になる)(ブロック804)。次に、イベントの目標構成要素に対応する数がイベント記録から読み取られ、図1に示すように、GUI構成要素階層を横断することにより、対応する構成要素の位置が読み取られる(ブロック806)。次に、記録したイベントが、識別した目標構成要素に適用される(ブロック808)。このプロセスは再生するイベントがなくなるまで反復される(ブロック800)。
図10は、本発明の好ましい実施形態を参照しながら本明細書で説明する計算動作を行うことができるコンピュータ・システム/サーバの簡単にした例である情報処理システム901である。コンピュータ・システム901は、ホスト・バス902と結合しているプロセッサ900を含む。レベル2(L2)キャッシュ・メモリ904もホスト・バス902と結合している。ホスト−PCIブリッジ906はメイン・メモリ908と結合していて、キャッシュ・メモリおよびメイン・メモリ制御機能を含んでいて、PCIバス910、プロセッサ900、L2キャッシュ904、メイン・メモリ908およびホスト・バス902間の転送を処理するためにバス制御を行う。メイン・メモリ908は、ホスト−PCIブリッジ906およびホスト・バス902と結合している。LANカード930のようなホスト・プロセッサ900だけが使用するデバイスは、PCIバス910と結合している。サービス・プロセッサ・インタフェースおよびISAアクセス・パススルー912は、PCIバス910とPCIバス914の間でインタフェースとしての働きをする。このようにして、PCIバス914は、PCIバス910から絶縁される。フラッシュ・メモリ918のようなデバイスは、PCIバス914と結合している。一実施態様の場合には、フラッシュ・メモリ918は、種々の低いレベルのシステム機能およびシステム・ブート機能のために必要なプロセッサが実行することができるコードを内蔵しているBIOSコードを含む。
PCIバス914は、例えば、フラッシュ・メモリ918を含むホスト・プロセッサ900およびサービス・プロセッサ916が共有する種々のデバイスに対してインタフェースとしての働きをする。PCI−ISAブリッジ935は、PCIバス914およびISAバス940、ユニバーサル・シリアルバス(USB)機能945、電力管理機能955間の転送を処理するためにバス制御を行い、リアルタイム・クロック(RTC)、DMA制御、割込サポート、およびシステム管理バス・サポートのような図示していない他の機能素子を含むことができる。不揮発性RAM920が、ISAバス940に取り付けられている。サービス・プロセッサ916は、初期化ステップ中、プロセッサ900と通信するためにJTAGおよびI2Cバス922を含む。また、JTAG/I2Cバス922は、L2キャッシュ904、ホスト−PCIブリッジ906、およびメイン・メモリ908と結合していて、プロセッサ、サービス・プロセッサ、L2キャッシュ、ホスト−PCIブリッジ、およびメイン・メモリ間に通信経路を提供する。サービス・プロセッサ916も、情報処理デバイス901をパワーダウンするためにシステム電力リソースにアクセスする。
周辺デバイスおよび入出力(I/O)装置は、種々のインタフェース(例えば、パラレル・インタフェース962、シリアル・インタフェース964、キーボード・インタフェース968、およびISAバス940と結合しているマウス・インタフェース970)に取り付けることができる。別の方法としては、多くのI/OデバイスをISAバス940に取り付けられているスーパーI/Oコントローラ(図示せず)により収容することができる。
ネットワークを通してファイルをコピーする目的で、他のコンピュータ・システムにコンピュータ・システム901を取り付けるために、LANカード930はPCIバス910と結合している。同様に、電話線接続によりインターネットに接続する目的でコンピュータ・システム901をISPと接続するために、モデム975は、シリアル・ポート964およびPCI−ISAブリッジ935に接続している。
図10のコンピュータ・システムは、本明細書に記載するプロセスを実行することができるが、このコンピュータ・システムは、コンピュータ・システムの単なる一例に過ぎない。当業者であれば、多くの他のコンピュータ・システム設計が、本明細書に記載するプロセスを実行することができることを理解することができるだろう。
本発明の好ましい実施態様のうちの1つは、クライアント・アプリケーション、すなわち、一組の命令(プログラム・コード)、または例えば、コンピュータのランダム・アクセス・メモリ内に常駐することができるコード・モジュールの他の機能記述材料である。コンピュータが要求するまで、上記一組の命令を、例えば、ハード・ディスク・ドライブ内の他のコンピュータ・メモリ、または(CD ROM内で最終的に使用するための)光ディスクのような取り外し可能メモリ、または(フレキシブル・ディスク・ドライブで最終的に使用するための)フレキシブル・ディスクに格納することもできるし、インターネットまたは他のコンピュータ・ネットワークを介してダウンロードすることもできる。それ故、本発明は、コンピュータで使用するためにコンピュータ・プログラムとして実施することができる。さらに、上記種々の方法は、ソフトウェアにより選択的に作動または再構成した汎用コンピュータで容易に実施することができるが、通常の当業者であれば、このような方法は、ハードウェア、ファームウェア、または必要な方法のステップを実行するために形成したもっと特種化した装置で実行することができることを理解することができるだろう。機能記述材料は、機械に機能を与える情報である。機能記述材料としては、コンピュータ・プログラム、命令、規則、事実、コンピュータ機能の定義、オブジェクト、およびデータ構造等があるが、これらに限定されない。
100 GUI構成要素階層
102,104,106 構成要素
108 鎖線
200 階層
202,204,206 構成要素
300 番号を付け直したバージョン
400 テーブル
402,404 コラム
700 アレイ
701 記録
702,712 識別子
703,714 遅延時間
704 ポインタ
706 イベント・オブジェクト
708 直列表現
710 前文
716 イベント・タイプ
900 プロセッサ
901 コンピュータ・システム
902 ホスト・バス
904 L2キャッシュ
906 ホスト−PCIブリッジ
908 メイン・メモリ
910,914 PCIバス
912 ISAアクセス・パススルー
916 サービス・プロセッサ
918 フラッシュ・メモリ
920 不揮発性RAM
922 JTAG/I2Cバス
930 LANカード
935 PCI−ISAブリッジ
940 ISAバス
945 ユニバーサル・シリアルバス(USB)機能
955 電力管理機能
962 パラレル・インタフェース
964 シリアル・インタフェース
968 キーボード・インタフェース
970 マウス・インタフェース
102,104,106 構成要素
108 鎖線
200 階層
202,204,206 構成要素
300 番号を付け直したバージョン
400 テーブル
402,404 コラム
700 アレイ
701 記録
702,712 識別子
703,714 遅延時間
704 ポインタ
706 イベント・オブジェクト
708 直列表現
710 前文
716 イベント・タイプ
900 プロセッサ
901 コンピュータ・システム
902 ホスト・バス
904 L2キャッシュ
906 ホスト−PCIブリッジ
908 メイン・メモリ
910,914 PCIバス
912 ISAアクセス・パススルー
916 サービス・プロセッサ
918 フラッシュ・メモリ
920 不揮発性RAM
922 JTAG/I2Cバス
930 LANカード
935 PCI−ISAブリッジ
940 ISAバス
945 ユニバーサル・シリアルバス(USB)機能
955 電力管理機能
962 パラレル・インタフェース
964 シリアル・インタフェース
968 キーボード・インタフェース
970 マウス・インタフェース
Claims (11)
- コンピュータにより実施される方法であって、
グラフィカル・ユーザ・インタフェースの構成要素階層内の複数の構成要素に、前記構成要素階層の順序的横断に従って識別子を割り当てるステップと、
イベントを検出するステップと、
前記イベントに関連する目標構成要素における対応する識別子とともに、前記イベントを記録するステップと
を含む方法。 - 前記構成要素階層の前記順序的横断が深さ方向優先の横断である、請求項1に記載の方法。
- 前記識別子が数値識別子である、請求項1に記載の方法。
- 前記イベントが、先行イベント後に経過した時間の長さに対応する遅延時間と一緒に記録される、請求項1に記載の方法。
- 前記イベントが永続記憶装置に記録される、請求項1に記載の方法。
- 前記目標構成要素についての前記記録されたイベントを再度生成することにより前記記録されたイベントを再生するステップであって、前記目標構成要素が前記記録された識別子により識別されることを特徴とする、ステップをさらに含む、請求項1に記載の方法。
- 前記構成要素階層を修正して、修正した階層を入手するステップと、
前記修正した階層の順序的横断に従って前記複数の構成要素に新しい識別子を割り当てるステップと
をさらに含む、請求項1に記載の方法。 - 前記新しい識別子内へのマッピングを定義する関連データ構造を生成するステップをさらに含む、請求項7に記載の方法。
- 前記構成要素階層に更なる構成要素を追加するステップと、
前記更なる構成要素の追加に応じて、前記更なる構成要素に次の識別子を割り当てるステップであって、前記次の識別子はすでに割り当てられた最後の識別子の後に連続して続くことを特徴とする、ステップとをさらに含む、請求項1に記載の方法。 - コンピュータ読み取り可能媒体内のコンピュータ・プログラムであって、コンピュータにより実行した場合に、前記コンピュータに、
グラフィカル・ユーザ・インタフェースの構成要素階層内の複数の構成要素に、前記構成要素階層の順序的横断に従って識別子を割り当てるステップと、
イベントを検出するステップと、
前記イベントに関連する目標構成要素における対応する識別子とともに、前記イベントを記録するステップと
を実行させるコンピュータ・プログラム。 - データ処理システムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに関連する記憶装置と、
前記記憶装置内の一組の命令であって、前記少なくとも1つのプロセッサに、
グラフィカル・ユーザ・インタフェースの構成要素階層内の複数の構成要素に、前記構成要素階層の順序的横断に従って識別子を割り当てるステップと、
イベントを検出するステップと、
前記イベントに関連する目標構成要素における対応する識別子とともに、前記イベントを記録するステップと
を実行させる一組の命令と
を含む、データ処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/315,383 US20070143678A1 (en) | 2005-12-21 | 2005-12-21 | Method and apparatus for persistently resolving events to event source |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007172602A true JP2007172602A (ja) | 2007-07-05 |
Family
ID=38175223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006327595A Pending JP2007172602A (ja) | 2005-12-21 | 2006-12-04 | イベント・ソースへのイベントを永続的に決定するための方法および装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070143678A1 (ja) |
JP (1) | JP2007172602A (ja) |
CN (1) | CN1987775A (ja) |
TW (1) | TW200805155A (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8151195B2 (en) * | 2008-03-05 | 2012-04-03 | Lsi Corporation | Title editing for slow or fast motion on recordable DVD discs |
US9047413B2 (en) | 2012-10-05 | 2015-06-02 | Software Ag | White-box testing systems and/or methods for use in connection with graphical user interfaces |
US9098636B2 (en) | 2013-12-18 | 2015-08-04 | Software Ag | White-box testing systems and/or methods in web applications |
US9811448B2 (en) * | 2015-12-18 | 2017-11-07 | Fujitsu Limited | Event-driven software testing |
KR102276895B1 (ko) | 2017-08-17 | 2021-07-12 | 삼성전자주식회사 | 반도체 장치 및 그 이벤트 프로파일링 방법 |
CN109522189B (zh) * | 2017-09-19 | 2022-06-21 | 北京国双科技有限公司 | 一种数据监测方法、装置及系统 |
CN110471656B (zh) * | 2018-05-10 | 2024-09-20 | 北京京东尚科信息技术有限公司 | 组件层级的调整方法和装置 |
CN110134751B (zh) * | 2019-05-15 | 2021-04-23 | 北京京电电力工程设计有限公司 | 桩位导线id生成方法、装置和移动终端 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546525A (en) * | 1989-11-13 | 1996-08-13 | Lotus Development Corporation | Computer user interface with multimode selection of displayed controls |
US6121964A (en) * | 1996-12-09 | 2000-09-19 | Microsoft Corporation | Method and system for automatic persistence of controls in a windowing environment |
US6415298B1 (en) * | 1999-07-15 | 2002-07-02 | American Management Systems, Inc. | Effective dated tree control in a component based-object oriented convergent customer care and billing system |
US6750887B1 (en) * | 2000-06-02 | 2004-06-15 | Sun Microsystems, Inc. | Graphical user interface layout manager |
AU2002230442A1 (en) * | 2001-11-21 | 2003-06-10 | Software Engineering 2000, Inc. | System process and logic element for providing and managing record keeping applications |
US7421683B2 (en) * | 2003-01-28 | 2008-09-02 | Newmerix Corp£ | Method for the use of information in an auxiliary data system in relation to automated testing of graphical user interface based applications |
US7607110B2 (en) * | 2003-10-23 | 2009-10-20 | Microsoft Corporation | Element persistent identification |
US7627821B2 (en) * | 2004-06-15 | 2009-12-01 | Microsoft Corporation | Recording/playback tools for UI-based applications |
US7653896B2 (en) * | 2004-06-30 | 2010-01-26 | Microsoft Corporation | Smart UI recording and playback framework |
-
2005
- 2005-12-21 US US11/315,383 patent/US20070143678A1/en not_active Abandoned
-
2006
- 2006-10-20 CN CNA2006101371150A patent/CN1987775A/zh active Pending
- 2006-12-04 TW TW095144889A patent/TW200805155A/zh unknown
- 2006-12-04 JP JP2006327595A patent/JP2007172602A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
TW200805155A (en) | 2008-01-16 |
CN1987775A (zh) | 2007-06-27 |
US20070143678A1 (en) | 2007-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7017613B2 (ja) | 自動検出されるターゲットラベルに基づくロボティックプロセスオートメーションアクティビティのネーミング(名付け) | |
Horstmann et al. | Core Java: Advanced Features | |
US7398474B2 (en) | Method and system for a digital device menu editor | |
CN112424836B (zh) | 用于显示与光线跟踪图像相关联的着色器表的技术 | |
EP3123316B1 (en) | Supporting dynamic behavior in statically compiled programs | |
JP4812337B2 (ja) | フォームタイプを使用してフォームを生成する方法および装置 | |
JP4901731B2 (ja) | コンテンツ生成用の自動画像キャプチャ | |
JP2007172602A (ja) | イベント・ソースへのイベントを永続的に決定するための方法および装置 | |
US6289395B1 (en) | Generic Java-based event processor for scripting Java beans | |
EP4055477B1 (en) | Just-in-time containers | |
JP5244826B2 (ja) | ユーザーインターフェース要素を用いた分離、管理および通信 | |
TW201308209A (zh) | 運行時間系統 | |
US11403074B1 (en) | Systems and methods for generating interfaces for callback functions in object-oriented classes | |
US8464226B2 (en) | System and method for interoperating with foreign objects from a host computing environment | |
US11221881B2 (en) | Computer resource leak detection | |
KR20220113372A (ko) | 통합된 참조물 및 2차 객체 표시 | |
CN110286900A (zh) | 基于Unity的配置方法、装置及设备 | |
JP4288017B2 (ja) | コンピュータ構成のためのテキスト・ファイルを変更する方法及びシステム | |
Hirt et al. | Oracle JRockit: The Definitive Guide | |
Myers | Taligent's CommonPoint: the promise of objects | |
US8135943B1 (en) | Method, apparatus, and computer-readable medium for generating a dispatching function | |
Buttfield-Addison et al. | Learning Cocoa with Objective-C: Developing for the Mac and IOS App Stores | |
Griffiths et al. | NET Windows forms in a nutshell | |
Ludin | Learn BlackBerry 10 App Development: A Cascades-Driven Approach | |
Ali | iPhone SDK 3 Programming |