JP4864432B2 - イベント駆動型アプリケーションにおけるイベント配送方法 - Google Patents

イベント駆動型アプリケーションにおけるイベント配送方法 Download PDF

Info

Publication number
JP4864432B2
JP4864432B2 JP2005343574A JP2005343574A JP4864432B2 JP 4864432 B2 JP4864432 B2 JP 4864432B2 JP 2005343574 A JP2005343574 A JP 2005343574A JP 2005343574 A JP2005343574 A JP 2005343574A JP 4864432 B2 JP4864432 B2 JP 4864432B2
Authority
JP
Japan
Prior art keywords
event
state machine
registration information
script
execution
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
JP2005343574A
Other languages
English (en)
Other versions
JP2007148874A (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.)
Kyocera Corp
Original Assignee
Kyocera 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 Kyocera Corp filed Critical Kyocera Corp
Priority to JP2005343574A priority Critical patent/JP4864432B2/ja
Publication of JP2007148874A publication Critical patent/JP2007148874A/ja
Application granted granted Critical
Publication of JP4864432B2 publication Critical patent/JP4864432B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ユーザインターフェース(以下、単にUIとも言う)を有するスクリプトを実行するイベント駆動型アプリケーションにおけるイベント配送方法に関するものである。
現在、衛星デジタル放送や地上デジタル放送におけるデータ放送では、XHTML(eXtensible Hyper Text Markup Language)を拡張したBML(Broadcast Markup Language)というマークアップ言語で記述された文書を送信し、このBML文書を受信機で受信・表示してイベント処理を行っている。
BML文書には、表示するテキストやスタイルの他に、イベントとスクリプトとを定義し、イベント発生時に実行すべき関数をスクリプトで記述できるようになっている。スクリプトには、ECMAScriptと呼ばれる言語が採用されている。ECMAScriptは、ECMA(European Computer Manufacturers’ Association)がECMA−262として定めたスクリプト言語で、ISO/IEC 16262として承認されたものが、ECMA−262 second editionとして発行されている。さらに、ECMA−262はthird editionが発行されている。
また、従来、地上デジタル放送を携帯機器で受信するための運用規定が定められている。この運用規定では、地上デジタル放送を受信する携帯機器においてもBMLで記述された文書を表示してECMAScriptを実行することが求められている。
一方、従来のスクリプトとして、例えばレーザービームプリンタにおけるページ記述言語が知られている。また、スクリプトプログラムを実行するものとして、例えば入力されたインタープリタプログラムから冗長なコマンドを削除して最適化することで処理速度の高速化を図ったインタープリタ実行装置(例えば、特許文献1参照)や、スクリプトを中間コードに変換してから実行することで処理速度の高速化を図った画像形成装置(例えば、特許文献2参照)も知られている。
ここで、スクリプトは、人が記述する高級言語であり、中央演算処理装置(CPU,Central Processing Unit)に依存した機械語命令にコンパイルせずに、インタープリタによって解釈実行されることが特徴である。また、インタープリタは、通常、字句解析(lexical analysis)と、構文解析(syntax analysis)との処理機能を備えており、公知のソフトウエアでは、lexにより字句解析器を作成することができ、yacc、bisonにより構文解析器を作成することができる。
構文解析器は、解析結果として実行処理が可能な中間表現を作成するもので、この中間表現には、評価器(Evaluater)によって評価可能なツリー表現と、仮想マシン(VM,Virtual Machine)によって実行可能な中間コードとがある。
ツリー表現は、例えばDavid Leonard氏によって作成され公開されたSEE(Simple ECMAScript Engine)が採用している(http://www.adaptive-enterprises.com.au/~d/software/see/ 参照)。
また、中間コードは、仮想マシンで処理するか、あるいはさらに本来のCPUの機械語に変換して実行される。仮想マシンで処理する場合は、多くの場合、関数の引数と戻り値とをスタックのみを用いて受け渡すスタックマシンを採用して、仮想マシンが中間言語で記述された処理を実行するようにしており、例えばThe Mozilla Organizationが公開している、Spider Monkeyと言うコードネームのECMAScriptインタープリタが知られている(http://www.mozilla.org/js/spidermonkey/ 参照)。
評価器によりツリー表現を評価する場合には、本来の実行環境における関数呼び出しが多数発生し、また様々な付随した処理を必要とすることから、実行速度が仮想マシン方式よりも遅くなり、また本来の実行環境におけるスタックメモリを多く消費することになる。このため、ツリー表現は、簡易なインタープリタで使用され、より高度なインタープリタでは、中間コードが採用され、さらに処理を高速化する場合には中間コードを機械語に変換して実行することが行われている。
なお、実行環境とは、開発環境に対する名称でランタイムとも呼ばれ、ある目的のために開発作成されたスクリプトまたはその中間コードを実行し、かつ実行時に必要な標準関数などを提供するソフトウエアである。したがって、実行環境は、少なくとも中間表現を処理実行する機能を含む必要があるが、字句解析器および構文解析器等を備えて、インタープリタ全体を含んでいてもよい。
特開平9−330231号公報 特開2000−6498号公報
しかしながら、従来のツリー表現を評価実行するインタープリタでは、ツリーのルートから評価を開始し、ルート側の結果が確定しないままツリーのリーフ側の評価をネストで開始するようにしている。このため、本来の実行環境では、評価関数が次々とネストして呼び出されてスタックが消費されることから、スクリプトの実行中に実行を一時保留して、CPUの実行権限をOS(Operating System)に戻し、他のタスクと実行権限を分かち合うといった処理ができなくなる。つまり、スクリプトの実行を開始すると、その処理が完了するまで、CPUの実行権限が独占されてしまうことから、途中でユーザが所望する他のタスクを実行できないという問題がある。
これに対し、従来の中間コードを仮想マシンで実行するスクリプト実行環境やインタープリタでは、スクリプト実行時の状態が、仮想マシンがアクセスするスタックに保存されており、このスタックは実行コンテキストの中に存在して本来の実行環境のスタックとは独立している。したがって、中間コードを生成する際に、処理を一時保留するための命令を挿入するなどすれば、仮想マシンでの処理を保留して、実行状態を保存したままCPUの実行権限をOSに戻し、その後、CPUの実行権限を得た際に処理を再開することが可能である。
しかし、このタイプのスクリプト実行環境でも、スクリプトがUI(User Interface)に表示を行って、ユーザが選択した結果のイベントを受け取ろうとすると、そのイベントをスクリプトが受け取ることができない。
以下、この点について、さらに詳細に説明する。
通常、UIとインタラクションをするアプリケーションは、イベント駆動型アプリケーションとして作成される。このイベント駆動型アプリケーションは、イベントハンドラを備えており、アプリケーション実行環境はイベントハンドラを呼び出してイベントを配送する。イベントハンドラでは、通知されたイベントに応じて実行すべき処理を記述しておく。
複雑なアプリケーションでは、状態マシンを備えるのが普通であり、イベントハンドラは状態マシンを呼び出してイベントを配送し、状態マシンはイベントを受けると状態を変化させることにより、所望の仕様の処理を実現することが可能となる。ここで、配送されるイベントには、それをどの関数(あるいは状態マシン)が処理するべきかという付加情報を添付することができるので、イベントハンドラはユーザ操作により発生したイベントを適切な関数(や状態マシン)に配送することができる。
しかし、このようなイベント駆動型アプリケーションにおいて、スクリプト実行中に、スクリプトがUIに表示を行い、ユーザが選択した結果のイベントをスクリプトが受け取ろうとすると、イベントハンドラは受け取ったイベントを配送すべき適切な関数(や状態マシン)を見出すことができないため、イベントを受け取ることができないことになる。このため、例えば地上デジタル放送の受信装置において、擬似オブジェクトがUI上にダイアログを出し、ユーザに選択させようとしても、それを実現することができないことになる。
したがって、かかる事情に鑑みてなされた本発明の目的は、UIを有するスクリプト実行中に、ユーザ操作により発生したイベントを適切に処理できるイベント駆動型アプリケーションにおけるイベント配送方法を提供することにある。
上記目的を達成する請求項1に係るイベント駆動型アプリケーションにおけるイベント配送方法の発明は、装置が、スクリプトを実行するイベント駆動型アプリケーションにおけるイベントを配送するにあたり、
アプリケーションと、そのコンテキストに応じたダイアログの状態遷移を、一時的状態マシンにより動的に制御するものであって、
前記スクリプトを実行すると、該スクリプトの実行により呼ばれた関数の機能を実装する状態マシンを一時的に確保するとともに、イベントハンドラに前記状態マシンの登録情報を登録し、
前記一時的に確保した状態マシンによりダイアログを表示し、
前記ダイアログにおいて所定のイベントが発生すると前記状態マシンへ前記イベントを配送することを特徴とするものである。
本発明によるイベント駆動型アプリケーションにおけるイベント配送方法によれば、スクリプトが実行される際に、対応する状態マシンを一時的に確保してイベントハンドラに登録し、所定のイベントを受けた際にイベントハンドラに前記状態マシンが登録されていれば、当該状態マシンへイベントを配送するので、UIを有するスクリプト実行中に、ユーザ操作により発生したイベントを適切に処理することができる。
以下、本発明の実施の形態について図を参照して説明する。
(第1実施の形態)
図1乃至図3は本発明の第1実施の形態に係るイベント駆動型アプリケーションにおけるイベント配送方法を説明するもので、図1はイベント駆動型アプリケーションの概念的構成を示すブロック図、図2および図3は動作を示すフローチャートである。
図1において、イベント駆動型アプリケーション1(以下、単にアプリケーション1とも言う)は、OS(Operating System)9が管理するタスクの一つであるアプリケーション実行環境8の上で動作する。
アプリケーション1は、イベントハンドラ2を備えており、イベントハンドラ2は登録部3を備えている。アプリケーション実行環境8はイベントハンドラ2を呼び出してイベントを配送する。なお、イベントハンドラ2にイベントの処理方法を実装しておくこともできるが、本実施の形態におけるアプリケーション1は状態マシンとして動作するもので、ディフォルト状態マシン6を備えており、このディフォルト状態マシン6にイベントを配送する。
ディフォルト状態マシン6は、イベントI/F(Interface)関数7を備えており、イベントハンドラ2はこのイベントI/F関数7を呼び出すことによってイベントを配送する。
また、アプリケーション1は、一時的状態マシン4をヒープに割り当てるようになっている。この一時的状態マシン4は、イベントI/F関数5を備えており、イベントの配送を受け取れるように実装される。なお、アプリケーション1の起動時の状態では、一時的状態マシン4はまだ確保されていない。
次に、図2に示すフローチャートを参照して動作を説明する。
先ず、ステップ101で、一時的状態マシン4を確保して、初期化する。この処理は、アプリケーション1に実装されているディフォルト状態マシン6によって実行する。
その後、ステップ102で、一時的状態マシン4を実行する。この一時的状態マシン4の実行処理は、通常は実行イベントを配送することによって行うが、ここでは専用の関数もしくはイベントI/F関数5をコールすることによって行う。
次に、ステップ103で、イベントハンドラ2の登録部3に一時的状態マシン4の登録情報を有効状態で登録する。ここで、登録情報は、一時的状態マシン4が動作を行うためのインスタンスのアドレスまたはハンドルと、イベントを受け取るためのイベントI/F関数5のアドレスとの双方とするか、あるいはインスタンスのアドレスからイベントI/F関数5のアドレスが求められる場合は、インスタンスのアドレスだけとするか、あるいはインスタンスのアドレスとイベントI/F関数5のアドレスとをテーブルに登録しておく場合には、そのテーブル内でのインデクスとする。
次に、ステップ104で、一時的状態マシン4によりUI上にダイアログを表示する。このダイアログの表示処理では、アプリケーション実行環境8が提供するAPI(Application Program Interface)をコールして、画面上にダイアログを表示する。
次に、ステップ105で、一時的状態マシン4をUIイベント待ち状態に遷移させる。これにより、イベントハンドラ2はリターンし、CPUの実行権限はアプリケーション1から解放される。
その後、ステップ106で、ユーザによりキー操作されたらダイアログを閉じる。この際、アプリケーション実行環境8はダイアログを画面から消去し、ユーザの選択に応じた情報を伴ったUIイベントを発生させる。
次に、ステップ107で、イベントハンドラ2はアプリケーション実行環境8から呼び出されてUIイベントを受け取る。
その後、ステップ108で、イベントハンドラ2は登録部3に登録情報が存在するか判定する。ここで、登録部3には、複数の登録情報を存在させるようにしてもよい。この場合には、イベントの種類や付随データなどから一時的状態マシン4が受け取るべきイベントを特定できるように登録情報を登録しておく。
ステップ108での判定の結果、登録情報が存在する場合はステップ109へ進み、登録情報が存在しない場合はステップ112へ進む。
ステップ109では、登録情報を登録部3から取り出して登録部3から削除する。
次に、ステップ110で、登録部3から取り出した登録情報が有効状態にあるかどうか判定する。すなわち、登録情報が登録された時点では有効状態であっても、後の処理によって無効状態に変更されている場合があるので、取り出した登録情報が有効状態にあるかを判定する。この判定の結果、登録情報が有効状態であればステップ111へ進み、無効状態であればそのUIイベントは無視して、このフローを終了する。
ステップ111では、登録情報に基づいて特定される一時的状態マシン4にUIイベントを配送する。このため、イベントハンドラ2は、有効状態の登録情報から一時的状態マシン4のインスタンスのアドレスと、イベントI/F関数5のアドレスとを割り出し、イベントとインスタンスのアドレスとを引数にセットし呼び出す。この呼び出しによって一時的状態マシン4はUIとのインタラクションを完了し、処理を続行する。
処理の続行の結果、処理が完了すると、一時的状態マシン4は自分自身を削除する。これにより、このフローは終了する。
一方、ステップ108での判定の結果、登録情報が存在しない場合は、ステップ112で、発生したUIイベントをディフォルト状態マシン6へ配送する。つまり、イベントハンドラ2は、ディフォルト状態マシン6のイベントI/F関数7をコールし、ディフォルト状態マシン6がUIを使用していた場合は適切に処理し、予期していないイベントであった場合は無視して、このフローを終了する。
図2のフローチャートに従って、一時的状態マシン4はUIイベントを受け取るが、少なくともアプリケーション実行環境8がアプリケーション1を強制終了させる場合には、UIイベント待ちの状態にある一時的状態マシン4を強制削除する必要がある。
図3は、この場合の動作を示すフローチャートで、一時的状態マシン4がUIイベント待ち状態のときに、別のイベントが発生して、これを処理するディフォルト状態マシン6が一時的状態マシン4を強制削除する場合の動作を示したものである。
ディフォルト状態マシン6は、一時的状態マシン4を生成確保したものなので、その情報はイベントハンドラ2の登録部3に保持されている。したがって、先ず、ステップ120で、イベントハンドラ2の登録部3に一時的状態マシン4の登録情報が存在するか判定する。
その結果、登録情報が存在していると判定された場合は、ステップ121で、一時的状態マシン4の登録情報を無効状態にした後、ステップ122で一時的状態マシン4を強制削除し、登録情報が存在していないと判定された場合は、直接、ステップ122で一時的状態マシン4を強制削除して、このフローを終了する。
このように、イベントハンドラ2の登録部3における一時的状態マシン4の登録情報を無効状態としておけば、その後は、イベントハンドラ2がUIイベントを受け取ってもそれを配送せずに無視するようになる。したがって、本実施の形態のように、アプリケーション実行環境8とのインタラクションを許容する場合に、既に削除された一時的状態マシン4へのイベントの配送を防止することができ、不正な処理を避けることができる。
(第2実施の形態)
図4乃至図8は本発明の第2実施の形態に係るイベント駆動型アプリケーションにおけるイベント配送方法を説明するもので、図4はイベント駆動型アプリケーションの概念的構成を示すブロック図、図5(a)乃至(d)は図4に示すスタック10における動作を説明する概念図、図6乃至図8は第2実施の形態の動作を示すフローチャートである。
図4に示すように、本実施の形態のアプリケーション1は、第1実施の形態において、イベントハンドラ2の登録部3にスタック10を付加するとともに、スクリプト実行コンテキスト11およびそのイベントI/F関数12を付加したもので、その他の構成は第1実施の形態と同様であるので、同一要素には同一参照符号を付して説明を省略する。
スタック10は、複数の登録情報を貯めることができる記憶手段で、最後に入った情報を最初に取り出すLIFO方式のものである。すなわち、図5(a)に示すように、スタック10に第1の登録情報21が存在している状態で、図5(b)に示すように第2の登録情報22がプッシュされると、その第2の登録情報22は第1の登録情報21の上に積み上げられる。さらに、図5(c)に示すように、第3の登録情報23がプッシュされると、その第3の登録情報23は第2の登録情報22の上に積み上げられる。また、図5(c)に示すスタック10の状態から、登録情報をポップする(取り出す)と、図5(d)に示すように最後に入った第3の登録情報23が取り出されて、スタック10には第2の登録情報22と第1の登録情報21とが残ることになる。
本実施の形態では、アプリケーション実行環境8による複数のダイアログの表示をスタック10によって管理している。すなわち、最後に実行して表示したダイアログが画面に表示され、それから時間を遡る順番に重なってダイアログが存在し、画面に表示されているダイアログがユーザの操作によって閉じられると、次の最後に実行して表示したダイアログが表示される。
アプリケーション実行環境8は、ダイアログが閉じられるとUIイベントを発生させ、これがイベントハンドラ2に配送される。このUIイベントには宛先を特定するための情報は添付されていないので、本実施の形態ではスタック10を備えることによって、スタック10にある登録情報に基づいて適切な状態マシンへUIイベントを配送することを可能にしている。
次に、図6乃至図8に示すフローチャートを参照して本実施の形態の動作を説明する。なお、図6乃至図8において、第1実施の形態と同様の処理には同じ符号を付してある。
先ず、図6において、ステップ141で、スクリプト実行コンテキスト11によりスクリプトの実行を開始する。スクリプト実行コンテキスト11とは、スクリプトを構文解析して生成した中間コードと、その中間コードの中のどの命令を現在実行しているかという情報と、スタックマシンである仮想マシンのスタック、などの情報を保持しているデータである。
次に、ステップ142で、スクリプトの実行によって所定の関数を呼ぶ。この関数はスクリプトで定義されたものではなく、本来の実行プログラムとして、C言語で記述されて機械語にコンパイルされた関数である。
次に、ステップ101で、呼ばれた関数によって一時的状態マシン4をヒープに確保し、初期化する。つまり、呼ばれた関数は状態マシンとして実装されている。
次に、ステップ143で、スクリプト実行コンテキスト11に含まれる仮想マシンのスタックから、関数の引数を取り出して、一時的状態マシン4へ渡す。
次に、ステップ144で、スクリプト実行コンテキスト11を関数の完了待ち状態に遷移させる。すなわち、スクリプト実行コンテキスト11もまた状態マシンであって、イベントI/F関数12を通じてイベントを受け取って動作するイベント駆動型である。
次に、ステップ102で、一時的状態マシン4を実行する。一時的状態マシン4は、通常、実行イベントが配送されることによって実行するが、ここでは専用の関数もしくはイベントI/F関数5をコールすることによって実行する。
次に、ステップ145で、イベントハンドラ2の登録部3に一時的状態マシン4の第1実施の形態と同様の登録情報を有効状態で登録するとともに、その登録情報をスタック10にプッシュする。
次に、ステップ104で、一時的状態マシン4によりUI上にダイアログを表示する。このダイアログの表示処理では、第1実施の形態と同様に、アプリケーション実行環境8が提供するAPIをコールして、画面上にダイアログを表示する。
次に、ステップ105で、一時的状態マシン4をUIイベント待ち状態に遷移させて、イベントハンドラ2をリターンし、これによりCPUの実行権限をアプリケーション1から解放させる。
その後、ステップ106で、ユーザによりキー操作されたらダイアログを閉じる。この際、アプリケーション実行環境8はダイアログを画面から消去し、ユーザの選択に応じた情報を伴ったUIイベントを発生させる。
次に、ステップ107で、イベントハンドラ2はアプリケーション実行環境8から呼び出されてUIイベントを受け取る。
次に、ステップ146で、イベントハンドラ2はスタック10から登録情報をポップする。ここで、スタック10には、既に一時的状態マシン4が登録情報をプッシュしているが、その後にディフォルト状態マシン6がダイアログを表示してスタック10に登録情報をプッシュしている場合もある。ここでは、一時的状態マシン4がプッシュした登録情報が取り出されるものとして説明する。
その後、図7のステップ147で、イベントハンドラ2は登録部3の中に登録情報が存在するか判定する。この判定処理は、第1実施の形態とは違って、UIイベント自体には宛先を特定する情報が含まれていないので、スタック10からポップされた情報によって登録情報の存在を判定する。
ステップ147での判定の結果、登録情報が存在する場合はステップ110へ進み、登録情報が存在しない場合はステップ112へ進む。
ステップ110では、取り出した登録情報が有効状態にあるかどうか判定する。すなわち、登録情報が登録された時点では有効状態であっても、後の処理によって無効状態に変更されている場合があるので、取り出した登録情報が有効状態にあるかを判定する。この判定の結果、登録情報が有効状態であればステップ111へ進み、無効状態であればそのUIイベントは無視して、このフローを終了する。
ステップ147での判定の結果、登録情報が存在しない場合は、ステップ112で、発生したUIイベントをディフォルト状態マシン6へ配送する。つまり、イベントハンドラ2は、ディフォルト状態マシン6のイベントI/F関数7をコールし、ディフォルト状態マシン6がUIを使用する場合には、登録部3とスタック10とに登録をしておく必要があるが、ディフォルト状態マシン6にとって予期していないUIイベントであった場合は無視して、その後このフローを終了する。
ステップ110での判定の結果、取り出した登録情報が有効状態にあれば、ステップ111で、その登録情報に基づいて特定される一時的状態マシン4にUIイベントを配送する。このため、イベントハンドラ2は、有効状態の登録情報から一時的状態マシン4のインスタンスのアドレスと、イベントI/F関数5のアドレスとを割り出し、イベントとインスタンスのアドレスとを引数にセットし呼び出す。この呼び出しによって一時的状態マシン4はUIとのインタラクションを完了し、処理を続行する。処理の続行の結果、所定の関数の実行処理が完了すると、ステップ148へ進む。
ステップ148では、一時的状態マシン4が求めた所定の関数の戻り値をスクリプト実行コンテキスト11のスタックに渡す。スタックマシンは、関数がリターンした際の戻り値をスタックに積んでおくので、これと同様の動作を行わせるためである。
次に、ステップ149で、スクリプト実行コンテキスト11に宛てて再開イベントを発生する。この再開イベントは、アプリケーション実行環境8のAPIをコールすることによって発生し、その発生したイベントはアプリケーション1用の待ち行列につながれる。
次に、ステップ150で、一時的状態マシン4の処理を完了して、一時的状態マシン4を削除する。これにより、UIイベントを配送していたイベントハンドラ2はリターンし、CPUの実行権限はアプリケーション1から解放される。
次に、ステップ151で、再開イベントによってアプリケーション実行環境8によりイベントハンドラ2を呼び出し、イベントハンドラ2によりそのイベントがスクリプト実行コンテキスト11宛であることを識別して、スクリプト実行コンテキスト11のイベントI/F関数12を呼び出す。これにより、スクリプト実行コンテキスト11は、待ち状態から実行状態に遷移してスクリプトの実行を再開する。
その後、ステップ152で、スクリプトの実行が完了したら、スクリプト実行コンテキスト11をアイドル状態に遷移させて、このフローを終了する。
次に、図8を参照して、一時的状態マシン4を強制削除する場合の処理を説明する。先ず、ステップ160で、イベントハンドラ2の登録部3に一時的状態マシン4の登録情報が存在するか判定する。本実施の形態の場合には、登録情報がスタック10に貯められているので、スタック10の登録情報を検索する。なお、スタック10には、登録情報のインデクスを貯めておき、そのインデクスで指定される位置のテーブルに登録情報を格納しておくことも可能であり、その場合にはテーブルを検索する。
このステップ160での判定の結果、登録情報が存在している場合は、ステップ161で、存在していた一時的状態マシン4の登録情報を無効状態にした後、ステップ122で一時的状態マシン4を強制削除し、登録情報が存在していないと判定された場合は、直接、ステップ122で一時的状態マシン4を強制削除して、このフローを終了する。
すなわち、登録情報はスタック10に貯められているので、ステップ161では、その中の一時的状態マシン4に関するものを全て無効状態にする。なお、スタック10には、登録情報のインデクスを貯めておき、そのインデクスで指定される位置のテーブルに登録情報を格納しておく構成の場合には、テーブル内の登録情報を無効状態にするだけで、スタック10の中の一時的状態マシン4に関するもの全てを無効状態にすることができる。
このように、スタック10における一時的状態マシン4の登録情報を無効状態としても、スタック10には登録情報が残っているので、イベントハンドラ2がUIイベントを受け取った際、それを配送せずに無視しても、アプリケーション実行環境8が管理しているダイアログスタックの通りに、イベントを適切な宛先に配送することができる。
本実施の形態では、スタック10を設けることで、スタック10にある登録情報に基づいてUIイベントを適切な関数に配送することができ、また、スクリプト実行コンテキスト11を設けることで、スクリプト実行中にスクリプトがUIとインタラクションすることが可能となる。
(第3実施の形態)
図9および図10は本発明の第3実施の形態に係るデジタル放送受信装置を説明するもので、図9はデジタル放送受信装置の概略構成を示すブロック図であり、図10(a)乃至(c)は図9に示す表示部における画面表示例を示す図である。
図9に示すデジタル放送受信装置は、本発明によるイベント配送方法を実施するもので、全体の動作を制御するCPUを含む制御手段である制御部31、イベント駆動型アプリケーションを含む各種のプログラムを格納する記憶手段であるROM32、処理上のデータを保持するRAM33、ブックマーク保存用のフラッシュ(Flash)ROM34、表示手段である表示部35、デジタル放送受信手段であるデジタル放送受信部36、キー入力部37、オーディオ部40およびスピーカ38を有しており、制御部31、ROM32、RAM33、フラッシュROM34、表示部35およびデジタル放送受信部36はバス39に接続されている。
デジタル放送は、デジタル放送受信部36で受信・復調され、さらに映像情報および音声情報が復号されて、映像情報が表示部36に表示され、音声情報がオーディオ部40を経てスピーカ38から出力される。
表示部36には、通常、図10(a)に示すように、映像領域41、BML領域42および右ソフトメニュー43が表示される。なお、右ソフトメニュー43には、メニュー呼び出し機能が登録されている。
図10(a)に示すように放送を受信して表示している間に、保存できるブックマークが存在すると、図10(b)に示すようにアイコン44が表示され、左ソフトメニュー45に保存機能が登録される。
ここで、ユーザが左ソフトメニューキーを押下すると、ブックマークの保存が開始される。この処理は、スクリプトによって実行され、この際に対応する状態マシンが一時的に確保されるとともに、イベントハンドラに状態マシンが登録されて、一時的状態マシンによる処理、すなわちブックマークの保存処理が実行される。
このスクリプト実行中に、保存用のフラッシュROM34が一杯の場合には、図10(c)に示すようにダイアログ46が表示されて、例えば「メモリが一杯です 古いブックマークを消去しますか?」というメッセージが表示され、左ソフトメニュー47にはOK機能が、右ソフトメニュー48にはキャンセル機能が割り当てられている。ここで、ユーザが何れかのキーを操作すると、イベントハンドラに前記の状態マシンが登録されていれば、そのUIイベントが当該状態マシンに配送されてダイアログ46が閉じ、図10(a)の状態に戻る。
このように、本実施の形態によれば、デジタル放送の受信において擬似オブジェクトがUI上にダイアログを出し、ユーザに選択させることができるので、使い勝手を向上することができる。
なお、本発明は、上記実施の形態に限定されるものではなく、幾多の変更または変形が可能である。例えば、本発明によるイベント配送方法は、デジタル放送の受信装置に限らず、UIを有するスクリプトを実行するイベント駆動型アプリケーションを採用する各種の機器に広く適用することができる。
本発明の第1実施の形態を説明するイベント駆動型アプリケーションの概念的構成を示すブロック図である。 第1実施の形態の動作を説明するフローチャートである。 同じく、第1実施の形態の動作を説明するフローチャートである。 本発明の第2実施の形態を説明するイベント駆動型アプリケーションの概念的構成を示すブロック図である。 図4に示すスタックにおける動作を説明する概念図である。 第2実施の形態の動作を説明するフローチャートである。 同じく、第2実施の形態の動作を説明するフローチャートである。 同じく、第2実施の形態の動作を説明するフローチャートである。 本発明の第3実施の形態に係るデジタル放送受信装置の概略構成を示すブロック図である。 図9に示す表示部における画面表示例を示す図である。
符号の説明
1 イベント駆動型アプリケーション
2 イベントハンドラ
3 登録部
4 一時的状態マシン
5 イベントI/F関数
6 ディフォルト状態マシン
7 イベントI/F関数
8 アプリケーション実行環境
9 OS
10 スタック
11 スクリプト実行コンテキスト
12 イベントI/F関数
31 制御部
32 ROM
33 RAM
34 フラッシュROM
35 表示部
36 デジタル放送受信部
37 キー入力部
38 スピーカ
39 バス
40 オーディオ部

Claims (1)

  1. 装置が、スクリプトを実行するイベント駆動型アプリケーションにおけるイベントを配送するにあたり、
    アプリケーションと、そのコンテキストに応じたダイアログの状態遷移を、一時的状態マシンにより動的に制御するものであって、
    前記スクリプトを実行すると、該スクリプトの実行により呼ばれた関数の機能を実装する状態マシンを一時的に確保するとともに、イベントハンドラに前記状態マシンの登録情報を登録し、
    前記一時的に確保した状態マシンによりダイアログを表示し、
    前記ダイアログにおいて所定のイベントが発生すると前記状態マシンへ前記イベントを配送することを特徴とするイベント駆動型アプリケーションにおけるイベント配送方法。
JP2005343574A 2005-11-29 2005-11-29 イベント駆動型アプリケーションにおけるイベント配送方法 Expired - Fee Related JP4864432B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005343574A JP4864432B2 (ja) 2005-11-29 2005-11-29 イベント駆動型アプリケーションにおけるイベント配送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005343574A JP4864432B2 (ja) 2005-11-29 2005-11-29 イベント駆動型アプリケーションにおけるイベント配送方法

Publications (2)

Publication Number Publication Date
JP2007148874A JP2007148874A (ja) 2007-06-14
JP4864432B2 true JP4864432B2 (ja) 2012-02-01

Family

ID=38210210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005343574A Expired - Fee Related JP4864432B2 (ja) 2005-11-29 2005-11-29 イベント駆動型アプリケーションにおけるイベント配送方法

Country Status (1)

Country Link
JP (1) JP4864432B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230096108A1 (en) * 2021-09-30 2023-03-30 Acronis International Gmbh Behavior analysis based on finite-state machine for malware detection

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110670A (ja) * 1992-04-22 1994-04-22 Nec Corp グラフィックユーザインタフェース機能カスタマイズ方式
JP2001060155A (ja) * 1999-08-20 2001-03-06 Fujitsu Ltd メッセージ処理装置
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230096108A1 (en) * 2021-09-30 2023-03-30 Acronis International Gmbh Behavior analysis based on finite-state machine for malware detection

Also Published As

Publication number Publication date
JP2007148874A (ja) 2007-06-14

Similar Documents

Publication Publication Date Title
KR101238550B1 (ko) 명령을 내리는 방법 및 컴퓨터 판독가능 매체
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US8875098B2 (en) Workflow engine for execution of web mashups
US7216351B1 (en) Systems and methods for synchronizing multi-modal interactions
US20070130205A1 (en) Metadata driven user interface
JP2520543B2 (ja) プログラムの実行を管理する方法及びシステム
US7996826B2 (en) Method of executing virtual machine application program and digital broadcast receiver using the same
US20060225107A1 (en) System for running applications in a resource-constrained set-top box environment
KR20080001706A (ko) 애플리케이션 윈도우 그룹화 및 관리를 위한 방법 및 장치
JP2008512012A (ja) デジタルテレビで双方向サービスを提供する方法及びシステム
US20090187886A1 (en) Declartive commands using workflows
US20070113205A1 (en) Focus scope
JP2005025760A (ja) 逐次マークアップ言語およびオブジェクト指向開発ツールの結合使用
CN110765746B (zh) 基于事件代理的表单自动生成方法和系统
JPWO2003107186A1 (ja) プログラム実行処理端末装置、プログラム実行処理方法及びプログラム
JP4864432B2 (ja) イベント駆動型アプリケーションにおけるイベント配送方法
US20030237052A1 (en) Method and an apparatus for styling a web service
KR102337962B1 (ko) 마이크로서비스 아키텍처 애플리케이션 실행 시스템과 방법 및 이를 위한 컴퓨터 프로그램
KR100870200B1 (ko) 통합 미들웨어형 디지털방송 수신장치
EP1172726A2 (en) Pervasive computing device and method
US20070046656A1 (en) Display apparatus, display method, and storage medium storing display program
US7464382B1 (en) UI aware method invocation transferring to java event dispatch thread
JP5421914B2 (ja) Sip及びsdpプロトコルのユーザーカスタマイズ用コルーチンインターフェース
US8296751B2 (en) Software application program interface method and system
US7421713B2 (en) Safe service extension platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111017

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: 20111108

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: 20111109

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

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4864432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees