(57)【要約】【課題】画面制御と業務処理とが独立して動作するイベント駆動型のＧＵＩフレームワーク環境においても、先行入力されたキーとリアルタイムに入力されたキーとを整合性を保って処理する。【解決手段】イベント処理部３と各イベント受信部４とでイベント駆動型ワークフレームにおけるシングルスレッド機構を構成する。状態保持部６は、業務処理部７からの状態変更通知に基づき状態変更イベントを発行する。イベント処理部３から始まる一連のイベント処理内で、状態変更イベント受信部４−１はキーイベント可否フラグを管理し、キーイベント可能状態に遷移した場合に、スタックキュー８に待避させておいた全てのキーイベントを割り込みイベントとして発行する。キーイベント受信部４−２は、キーイベント可否フラグがキーイベント可能状態の場合にはそのキーイベントをＧＵＩ部５に処理させ、不可状態の場合にはスタックキュー８に格納する。【選択図】図１
2008204297.tif 000002
【特許請求の範囲】
【請求項１】
キー入力に応じてキーイベントを発生させるキー入力装置と、少なくともキーイベントが発送されるとキーイベントに応じた画面制御を行う画面制御部と、前記画面制御部の画面制御によって取り込まれたデータを用いて前記画面制御部とは独立して処理を行うデータ処理部とを備えたデータ入力システムであって、
前記データ処理部が処理中か否かを示す処理状態の変更を検出した場合に、前記データ処理部の処理状態の変更を通知する状態変更イベントを発生させる状態変更イベント入力部と、
少なくとも前記キーイベントと前記状態変更イベントとを発生した順序に従って受け付けて、各イベントに対応する一連のイベント処理を実行するイベント処理部と、
前記データ処理部が処理中の間に前記イベント処理部が受け付けたキーイベントを先行入力キーイベントとして格納する先行入力キーイベント格納手段とを備え、
前記イベント処理部は、各イベントに対応する一連のイベント処理で、データ処理部の状態変更に伴うキーイベントの一時待避および一時待避させたキーイベントの前記画面制御部への発送を制御する
ことを特徴とするデータ入力システム。
【請求項２】
イベント処理部は、少なくともキーイベントに対応するイベント処理で、キーイベントが受け付け可能か否かを示す可否フラグが受け付け可能である場合には現在受け付け中のキーイベントを画面制御部に発送し、前記可否フラグが受け付け不可である場合には該キーイベントを前記先行入力キーイベント格納手段に格納し、
前記イベント処理部は、状態変更イベントに対応する一連のイベント処理で、データ処理部の処理状態に基づき前記可否フラグを更新するとともに、前記可否フラグが受け付け可能になった場合には、当該イベント処理を中断してまたは当該イベント処理の直後に、前記先行入力キーイベント格納手段に格納されている全ての先行入力キーイベントに対応するイベント処理を実行するための制御をする
ことを特徴とするデータ入力システム。
【請求項３】
イベント処理部は、画面制御部に発送したキーイベントがデータ処理部に処理を開始させるアテンションキーイベントであった場合には、当該キーイベント処理を中断してまたは当該キーイベント処理の直後に、データ処理部が処理中であることを示す状態変更イベントに対応するイベント処理を実行するための制御をする
請求項２に記載のデータ入力システム。
【請求項４】
イベント処理部は、先行入力キーイベント格納手段に格納されている全ての先行入力キーイベントを順次取得して、オペレーティングシステムが提供する割り込み制御や優先制御を利用した割り込みイベントとして発行することによって、現在受け付け中の状態変更イベントに対応するイベント処理を中断してまたは当該イベント処理の直後に、前記全ての先行入力キーイベントに対応するイベント処理を実行する
請求項２または請求項３に記載のデータ入力システム。
【請求項５】
キー入力に応じてキーイベントを発生させるキー入力装置と、少なくともキーイベントが発送されるとキーイベントに応じた画面制御を行う画面制御部と、前記画面制御部の画面制御によって取り込まれたデータを用いて前記画面制御部とは独立して処理を行うデータ処理部とを備えたデータ入力システムにおいて、前記データ処理部が処理中に入力された先行入力キーを処理するための先行入力キー処理方法であって、
前記データ処理部が処理中か否かを示す処理状態の変更を検出した場合に、前記データ処理部の処理状態の変更を通知する状態変更イベントを発生させ、
イベント処理部が、少なくとも前記キーイベントと前記状態変更イベントとを発生した順序に従って受け付けて、
前記イベント処理部が、各イベントに対応する一連のイベント処理で、データ処理部の状態変更に伴うキーイベントの一時待避および一時待避させたキーイベントの前記画面制御部への発送を制御する
ことを特徴とする先行入力キー処理方法。
【請求項６】
キー入力に応じてキーイベントを発生させるキー入力装置と、少なくともキーイベントが発送されるとキーイベントに応じた画面制御を行う画面制御部と、前記画面制御部の画面制御によって取り込まれたデータを用いて前記画面制御部とは独立して処理を行うデータ処理部とを備えたデータ入力システムにおいて、前記データ処理部が処理中に先行入力されたキーを処理するための先行入力キー処理用プログラムであって、
コンピュータに、
前記データ処理部が処理中か否かを示す処理状態の変更を検出した場合に、前記データ処理部の処理状態の変更を通知する状態変更イベントを発生させる処理、および
少なくとも前記キーイベントと前記状態変更イベントとを発生した順序に従って受け付けて、各イベントに対応する一連のイベント処理を実行する処理を実行させ、
各イベントに対応する一連のイベント処理で、データ処理部の状態変更に伴うキーイベントの一時待避および一時待避させたキーイベントの前記画面制御部への発送を制御させる
ための先行入力キー処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ入力システム、先行入力キー処理方法および先行入力キー処理用プログラムに関し、特に、先行入力されたキーとリアルタイムに入力されるキーとを整合性を保って処理することが可能なデータ入力システム、先行入力キー処理方法および先行入力キー処理用プログラムに関する。
【背景技術】
【０００２】
例えば、銀行などの勘定系入力システムなどのデータ入力システムにおいて、操作に慣れた熟練の入力者が、データ入力後そのデータを用いてシステムが業務処理を行っている間、まだ表示されていない次画面のデータを先行して入力する場合がある。
【０００３】
特許文献１には、入力されたキーに対応するメッセージを受けて対応する処理を制御する処理制御手段が処理中の間、他のメッセージを一時格納しておき、処理制御手段による処理の制御が終了した段階で、格納されている他のメッセージを処理制御手段に送る先行入力キー処理装置（入力キーの先行受付装置）が記載されている。
【０００４】
【特許文献１】特開２０００−２２２０９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで、データ入力システムが、イベント駆動型のＧＵＩフレームワークによって実現される場合、キー入力は、ＧＵＩコンポーネントに対するキーイベントとして処理されなければならない。しかしながら、特許文献１に記載されている先行入力キー処理装置では、イベント駆動型のＧＵＩフレームワーク環境において、先行入力キーとリアルタイムに入力されるキーとを整合性を保って処理できるような仕組みが確立されているとは言えない。例えば、特許文献１には、画面フォーム制御部に対するキーロック／キーリリースと、アペンテージ制御部が更新するスタックフラグとの関連について何ら記載がない。また、メッセージループによる次のメッセージ送出のタイミングについても何ら記載がない。
【０００６】
従って、特許文献キー入力装置１に記載されている先行入力キー処理装置を、画面制御（ＧＵＩ処理）と業務処理とが独立して動作しうるイベント駆動型のＧＵＩフレームワーク環境に適用した場合、独立して動作するＧＵＩ処理側と業務処理側の２つのスレッドで、スタックフラグを書き換えたり、先行入力キーを処理したり、次のメッセージを読み出したりすることになり、メッセージが消失したり、正しい順序でメッセージが処理されない可能性がある。
【０００７】
そこで、本発明は、画面制御と業務処理とが独立して動作しうるイベント駆動型のＧＵＩフレームワーク環境においても、先行入力されたキーとリアルタイムに入力されたキーとを整合性を保って処理することができるデータ入力システム、先行入力キー処理方法および先行入力キー処理用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明によるデータ入力システムは、キー入力に応じてキーイベントを発生させるキー入力装置と、少なくともキーイベントが発送されるとキーイベントに応じた画面制御を行う画面制御部と、画面制御部の画面制御によって取り込まれたデータを用いて画面制御部とは独立して処理を行うデータ処理部とを備えたデータ入力システムであって、データ処理部が処理中か否かを示す処理状態の変更を検出した場合に、データ処理部の処理状態の変更を通知する状態変更イベントを発生させる状態変更イベント入力部（例えば、状態保持部６）と、少なくともキーイベントと状態変更イベントとを発生した順序に従って受け付けて、各イベントに対応する一連のイベント処理を実行するイベント処理部（例えば、イベント処理部３およびイベント受信部４）と、データ処理部が処理中の間にイベント処理部が受け付けたキーイベントを先行入力キーイベントとして格納する先行入力キーイベント格納手段（例えば、スタックキュー８）とを備え、イベント処理部は、各イベントに対応する一連のイベント処理で、データ処理部の状態変更に伴うキーイベントの一時待避および一時待避させたキーイベントの画面制御部への発送を制御することを特徴とする。
【０００９】
また、イベント処理部は、少なくともキーイベントに対応するイベント処理で、キーイベントが受け付け可能か否かを示す可否フラグが受け付け可能である場合には現在受け付け中のキーイベントを画面制御部に発送し、可否フラグが受け付け不可である場合には該キーイベントを先行入力キーイベント格納手段に格納し、イベント処理部は、状態変更イベントに対応する一連のイベント処理で、データ処理部の処理状態に基づき可否フラグを更新するとともに、可否フラグが受け付け可能になった場合には、当該イベント処理を中断してまたは当該イベント処理の直後に、先行入力キーイベント格納手段に格納されている全ての先行入力キーイベントに対応するイベント処理を実行するための制御をしてもよい。
【００１０】
また、イベント処理部は、画面制御部に発送したキーイベントがデータ処理部に処理を開始させるアテンションキーイベントであった場合には、当該キーイベント処理を中断してまたは当該キーイベント処理の直後に、データ処理部が処理中であることを示す状態変更イベントに対応するイベント処理を実行するための制御をしてもよい。
【００１１】
また、イベント処理部は、先行入力キーイベント格納手段に格納されている全ての先行入力キーイベントを順次取得して、オペレーティングシステムが提供する割り込み制御や優先制御を利用した割り込みイベントとして発行することによって、現在受け付け中の状態変更イベントに対応するイベント処理を中断してまたは当該イベント処理の直後に、全ての先行入力キーイベントに対応するイベント処理を実行してもよい。
【００１２】
また、本発明による先行入力キー処理方法は、キー入力に応じてキーイベントを発生させるキー入力装置と、少なくともキーイベントが発送されるとキーイベントに応じた画面制御を行う画面制御部と、画面制御部の画面制御によって取り込まれたデータを用いて画面制御部とは独立して処理を行うデータ処理部とを備えたデータ入力システムにおいて、データ処理部が処理中に入力された先行入力キーを処理するための先行入力キー処理方法であって、データ処理部が処理中か否かを示す処理状態の変更を検出した場合に、データ処理部の処理状態の変更を通知する状態変更イベントを発生させ、イベント処理部が、少なくともキーイベントと状態変更イベントとを発生した順序に従って受け付けて、イベント処理部が、各イベントに対応する一連のイベント処理で、データ処理部の状態変更に伴うキーイベントの一時待避および一時待避させたキーイベントの画面制御部への発送を制御することを特徴とする。
【００１３】
また、本発明による先行入力キー処理用プログラムは、キー入力に応じてキーイベントを発生させるキー入力装置と、少なくともキーイベントが発送されるとキーイベントに応じた画面制御を行う画面制御部と、画面制御部の画面制御によって取り込まれたデータを用いて画面制御部とは独立して処理を行うデータ処理部とを備えたデータ入力システムにおいて、データ処理部が処理中に先行入力されたキーを処理するための先行入力キー処理用プログラムであって、コンピュータに、データ処理部が処理中か否かを示す処理状態の変更を検出した場合に、データ処理部の処理状態の変更を通知する状態変更イベントを発生させる処理、および少なくともキーイベントと状態変更イベントとを発生した順序に従って受け付けて、各イベントに対応する一連のイベント処理を実行する処理を実行させ、各イベントに対応する一連のイベント処理で、データ処理部の状態変更に伴うキーイベントの一時待避および一時待避させたキーイベントの画面制御部への発送を制御させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、イベント処理部が、画面制御に関わるキーイベントだけでなくデータ処理部の処理状態の変更を通知する状態変更イベントを受け付けて、各イベントに対応する一連のイベント処理を行い、そのイベント処理部が行う各イベントに対応する一連のイベント処理内で、データ処理部の状態変更に伴うキーイベントの一時待避や一時待避させた画面制御部への発送を制御している。このため、画面制御と業務処理とが独立して動作するイベント駆動型のＧＵＩフレームワーク環境においても、リアルタイムに入力されるキーと先行入力されたキーとを整合性を保って処理させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。図１は、本発明による先行入力キー処理装置を適用したデータ入力システムの構成例を示すブロック図である。
【００１６】
図１に示すデータ入力システムは、キーボード等のキー入力装置１と、イベントキュー２と、イベント処理部３と、複数のイベント受信部４と、ＧＵＩ部５と、状態保持部６と、業務処理部７と、スタックキュー８とを備える。なお、イベント受信部４という表現は、各イベントを受信してそのイベントに応じたイベント処理を行う複数のイベント受信部の総称として用いている。本実施の形態では、具体的には、イベント受信部４は、状態変更イベント受信部４−１と、キーイベント受信部４−２とを含む。
【００１７】
イベントキュー２は、イベント処理部３に対し発行されたイベントを格納する記憶装置である。なお、イベントキュー２には、割り込みイベントとして格納されるイベントを除き、格納したときの順番を維持して格納されているイベントを取り出すための制御（ＦＩＦＯ制御）を行う制御手段を含む。ここで、割り込みイベントとは、通常のイベントよりも優先して処理させるイベントをいう。割り込みイベントは、例えば、オペレーティングシステムが提供する割り込み制御を用いて実現してもよいし、イベントキュー２の制御手段によるイベントキュー２内における優先制御を用いて実現してもよい。イベントキュー２の制御手段は、イベントキュー２内における優先制御として、例えば、割り込みイベント用の優先キューに割り込みイベントを格納しておき、イベントを取得させる際にキューを切り替えたり、１つのキューであっても割り込みイベントを格納させる際にキュー内の通常イベントよりも早い順で取り出されるようにその順番を入れ替えたりすればよい。なお、このような優先制御は、優先度とともにイベントを発行することによって、オペレーティングシステムによって実現される場合もある。
【００１８】
また、本実施の形態では、イベント処理部３に対し発行するイベントとして、ＧＵＩフレームワークにおいてＧＵＩコンポーネントに対し発行されるＧＵＩイベントだけでなく、新たに、業務処理部７の状態が変化したことを通知するための状態変更イベントを定義する。なお、ＧＵＩイベントは、例えば、入力されたキー値を表示させるＧＵＩコンポーネントに対し発行されるキーイベントである。なお、キーイベントには、そのキー入力によって業務処理の開始を指示するアテンションキーイベントなども含まれる。
【００１９】
イベント処理部３は、イベントキュー２から順次イベントを取り出して適切なイベント受信部４にディスパッチ（発送）し、各イベント受信部４にそのイベントに対応したイベント処理を実行させる。本実施の形態においては、取り出したイベントが状態変更イベントであれば状態変更イベント受信部４−１に発送し、キーイベントであればキーイベント受信部４−２に発送する。イベント処理部３と各イベント受信部４とでイベント駆動型のＧＵＩワークフレームにおけるシングルスレッド機構を構成することによって、イベント処理部３に対し発行されたイベント（ＧＵＩイベント）に応じた一連のイベント処理を実行する。なお、シングルスレッド機構については後述する。
【００２０】
イベント受信部４は、イベント処理部３からイベントを受け取り、そのイベントに対応したイベント処理を実行する。状態変更イベント受信部４−１は、状態変更イベントに対応した状態変更イベント処理を実行するためのイベント受信部４である。また、キーイベント受信部４−２は、キーイベントに対応したキーイベント処理を実行するためのイベント受信部４である。
【００２１】
状態変更イベント受信部４−１は、状態変更イベントに対応したイベント処理で、ＧＵＩ部５がキーイベントを受け付け可能か否かを示すキーイベント可否フラグを管理しつつ、キーイベント可否フラグの変化に応じて、先行入力されたキーに対応するキーイベントの制御を行う。具体的には、業務処理部７の状態変化に応じてキーイベント可否フラグを更新し、キーイベント可否フラグがキーイベント可能状態に遷移した場合には、スタックキュー８に格納させているキーイベントを全て割り込みイベントとしてイベント処理部３に対し発行する。すなわち、イベント処理中に割り込みイベントを発行することによって、現在処理中のイベントの後に発行された通常イベントについてのイベント処理の前に、割り込みイベントについてのイベント処理をイベント処理部３に開始させる。
【００２２】
キーイベント受信部４−２は、キーイベントに対応したイベント処理で、状態変更イベント受信部４−１が管理するキーイベント可否フラグに応じて、キーイベントの描画処理またはスタック処理を行う。具体的には、キーイベント可否フラグがキーイベント可能状態の場合には、ＧＵＩ部５にそのキーイベントを処理させる。一方、キーイベント不可能状態の場合には、そのキーイベントをスタックキュー８に格納する。すなわち、スタックキュー８に格納されたキーイベントが先行入力されたキーに対応するキーイベントとなる。
【００２３】
ＧＵＩ部５は、画面コンポーネントに対し実際に制御を行うＧＵＩコントロール群である。例えば、Ｗｉｎｄｏｗコントロールや、Ｆｏｒｍコントロールや、ＴｅｘｔＢｏｘコントロールや、Ｂｕｔｔｏｎコントロールである。各ＧＵＩコントロールは、自身に対する画面操作をイベントとして受け取り、そのイベントに対応して必要な画面制御を行う処理を行う。
【００２４】
状態保持部６は、業務処理部７が業務処理中か否かを示す状態フラグを管理し、状態フラグの変化に応じて状態変更イベントをイベント処理部３に対し発行する。状態保持部６は、業務処理部７からの業務開始通知や業務終了通知、またはキーイベント受信部４−２からのキー入力不可通知に応じて、自身が管理する状態フラグを更新し、その状態フラグの状態が変化した場合に、状態変更イベントをイベント処理部３に対し発行する。
【００２５】
業務処理部７は、業務処理を実行する。なお、業務処理部７は、本システムにおけるＧＵＩフレームワーク（具体的には、イベント処理部３、イベント受信部４およびＧＵＩ部５）とは独立して動作する処理部である。なお、業務処理部７は、業務処理を開始する際および業務処理が終了した際に、その旨を状態保持部６に通知する（業務開始通知および業務終了通知）機能を備える。以下、業務開始通知および業務終了通知をまとめて状態変更通知と呼ぶ。
【００２６】
スタックキュー８は、キーイベント不可状態中に入力されたキーに対応して発行されたキーイベントを格納する記憶装置である。なお、スタックキュー８には、格納したときの順番を維持して格納されているキーイベントを取り出すための制御（ＦＩＦＯ制御）を行う制御手段を含む。
【００２７】
本実施の形態において、例えば、イベントキュー２、およびスタックキュー８は、記憶装置とプログラムに従って動作するＧＰＵによって実現される。また、イベント処理部３、イベント受信部４、ＧＵＩ部５、状態保持部６、業務処理部７は、プログラムに従って動作するＣＰＵによって実現される。
【００２８】
次に、シングルスレッド機構について説明する。図２は、本実施の形態が実現するＧＵＩフレームワークにおけるシングルスレッド機構を説明するための説明図である。図２に示すように、シングルスレッド機構は、イベントキュー２にキューイング（格納）されているイベントを順次取り出して発送するイベント処理部３と、そのイベントに対応した処理を行うイベント受信部４（必要に応じてＧＵＩ部５）とで、一連のイベント処理を実行するように構成される機構をいう。なお、シングルスレッド機構であるので、ＧＵＩフレームワークにおいてＧＵＩイベントを処理するイベント処理部３は１つしか存在しない。また、イベント処理部３は、各イベント受信部４によるイベント処理が完了するまでは次のイベント（通常のイベント）が取り出せない。例えば、各イベント受信部４は、イベント処理部３の下位モジュールとして構成されることによって、シングルスレッド機構を実現してもよい。また、例えば、イベント処理部３が、各イベント受信部４にイベントを発送した後、処理完了を示す応答を受信するまで待ち状態に移行するような状態遷移処理を行うことによって、シングルスレッド機構を実現してもよい。
【００２９】
このような構成において、イベントキュー２は、イベント処理部３に対し発行されたイベント１を順次キューイングする。イベント処理部３は、イベントキュー２から順次イベントを取得して、適切なイベント受信部４にイベントを発送して、各イベント受信部４にそのイベントに対応したイベント処理を実行させる。
【００３０】
なお、直ちにイベント処理部３にイベント処理を行わせたい場合には、そのイベントを割り込みイベントとしてイベント処理部３に対し発行する。例えば、オペレーティングシステムが提供する割り込み制御による割り込みイベントとして発行することによって、現在処理中のイベント処理は中断され、割り込みイベントのイベント処理が開始される。なお、割り込まれたイベントのイベント処理は、割り込みイベントのイベント処理が終了してから再開される。また、例えば、イベントキュー２の制御手段が提供する優先制御による割り込みイベントとして発行することによって、現在処理中のイベント処理が完了した後、次に取り出されるイベントが割り込みイベントとなる。どちらの場合であっても、現在処理中のイベントの次にイベントキュー２に格納された通常イベントよりも先に処理される。なお、同レベルの割り込みイベントが複数発行された際には、割り込みイベントの発行順序に従って処理を行う。
【００３１】
次に、図３を参照して本データ入力システムにおける先行入力キーの処理方法について説明する。図３は、本実施の形態によるデータ入力システムにおける画面制御側のイベント処理の処理フローの一例を示すフローチャートである。図３に示すように、キー入力装置１に入力があった場合、キー入力装置１は、入力されたキーに応じたキーイベントを作成してイベントキュー２にポスト（格納）する（ステップＳ１：キーイベントの発行）。キー入力装置１は、例えば、どのキーが押下されたかを示すキー情報を付加したキーイベントを作成する。なお、キー入力装置１に対するキー入力は、イベント処理部３から始まる一連のＧＵＩイベント用の処理部の状態に関わらず、ユーザ操作に応じて行われる。
【００３２】
また、業務処理部７は、業務処理を開始する際および業務処理を終了した際に、業務処理状態の変更を状態保持部６に通知する（ステップＳ２：状態変更通知）。業務処理部７からの状態変更通知を受信した状態保持部６は、自身が管理している状態フラグで示される業務処理状態と状態変更通知で示される業務処理状態とを比較し（ステップＳ３）、変更があった場合には状態フラグを更新するとともに、状態変更イベントを作成してイベントキュー２にポストする（ステップＳ４：状態変更イベントの発行）。状態保持部６は、例えば、どの状態に遷移したかを示す情報を付加して状態変更イベントを作成してもよい。状態保持部６は、変更がなかった場合には何も行わない。なお、状態保持部６に対する業務処理部７からの状態変更通知は、イベント処理部３から始まる一連のＧＵＩイベント用の処理部の状態に関わらず、不定期に行われる。
【００３３】
イベントが発行されると、イベント処理部３は、イベントキュー２からイベントを取り出し、対応するイベント受信部４にそのイベントをディスパッチ（発送）する（ステップＳ５：イベントの取得および発送）。イベント処理部３は、取り出したイベントが状態変更イベントであれば状態変更イベント受信部４−１に発送し、キーイベントであればキーイベント受信部４−２に発送する。ここで、イベントのディスパッチ（発送）とは、イベントが適切なイベント受信部４に受信され、その処理を終了するまでを意味する。本実施の形態において、イベント処理部３から始まる一連のイベント処理は、シングルスレッド機構で実行されるので、イベントの発送中に次のイベントが発送されることはない。例えば、イベント処理部３は、各イベント受信部４を実現する下位モジュールを呼び出して、そのモジュールから復帰したときに、イベント受信部４におけるイベント処理の終了を認識する。また、例えば、イベント処理部３は、各イベント受信部４からの処理完了を示す応答を受信したときに、イベント受信部４におけるイベント処理の終了を認識する。
【００３４】
イベント処理部３が取得したイベントが状態変更イベントの場合、状態変更イベント受信部４−１がそのイベントを受け取り、状態変更イベントに対応したイベント処理を実行する（ステップＳ６〜Ｓ８）。状態変更イベント受信部４−１は、まず状態保持部６が管理する状態フラグに基づき、キーイベント可否フラグを更新する（ステップＳ６）。状態変更イベント受信部４−１は、例えば、状態保持部６が管理する状態フラグが業務処理中である旨を示している場合には、キーイベント可否フラグをキーイベント不可状態とする。また、例えば、状態保持部６が管理する状態フラグが業務処理中でない旨を示している場合には、キーイベント可否フラグをキーイベント可能状態とする。なお、状態変更イベントに、業務処理部７がどの状態に変更されたかを示す情報が付加されている場合には、その情報に基づいて、キーイベント可否フラグを更新してもよい。
【００３５】
次に、状態変更イベント受信部４−１は、ステップＳ６の更新によって、キーイベント可否フラグがキーイベント可能状態に変更になった場合には（ステップＳ７のＹｅｓ）、スタックキュー８に格納されているキーイベントを全て取得してイベント処理部３に割り込みイベントとして処理させる（ステップＳ８）。なお、変更の有無に関わらずキーイベント可否フラグがキーイベント可能状態であれば、スタックキュー８からキーイベントの取得を試みてもよい。
【００３６】
状態変更イベント受信部４−１は、例えば、スタックキュー８から順にキーイベントを取得し、取得したキーイベントを割り込みイベントとしてイベント処理部３に対し発行すればよい。なお、割り込みイベントとして発行することによって、現在処理中のイベント処理は中断され、割り込みイベントのイベント処理が開始される。または、現在処理中のイベント処理が終了した直後に、割り込みイベントのイベント処理が開始される。なお、中断されたイベント処理は、割り込みイベントのイベント処理が終了した後で再開される。状態変更イベント受信部４−１は、スタックキュー８に格納されている全てのキーイベントを割り込みイベントとして発行し終えたら、状態変更イベント受信部４−１におけるイベント処理を終了する。
【００３７】
なお、キーイベント可否フラグがキーイベント不可状態の場合には、状態変更イベント受信部４−１は、そのままイベント処理を終了する（ステップＳ７のＮｏ）。状態変更イベント受信部４−１におけるイベント処理が終了すると、イベント処理部３は、状態変更イベントに対応した一連のイベント処理を終了し、次のイベントに対応したイベント処理を行うためにステップＳ５に戻る。
【００３８】
一方、イベント処理部３が取得したイベントがキーイベントの場合、キーイベント受信部４−２がそのイベントを受け取り、キーイベントに対応したイベント処理を実行する（ステップＳ９〜Ｓ１２）。キーイベント受信部４−２は、まず状態変更イベント受信部４−１が管理するキーイベント可否フラグを参照する（ステップＳ９）。キーイベント可否フラグがキーイベント可能状態であった場合、キーイベント受信部４−２は、ＧＵＩ部５にそのキーイベントを処理させる（ステップＳ１０のＹｅｓ，ステップＳ１１：描画処理）。例えば、キーイベント受信部４−２がＧＵＩ部５にそのキーイベントを発送し、ＧＵＩ部５で、ＡｃｔｉｖｅなＧＵＩコントロール（例えば、ＴｅｘｔＢｏｘコントロール）が、そのキーイベントで示されるキー値をテキスト領域に設定するといった描画処理を行う。キーイベント受信部４−２は、ＧＵＩ部５におけるイベント処理（以下、単にＧＵＩ処理という。）が終了したら、キーイベント受信部４−２におけるイベント処理を終了する。
【００３９】
一方、キーイベント可否フラグがキーイベント不可状態であった場合には、キーイベント受信部４−２は、そのキーイベントをスタックキュー８に格納して、キーイベント受信部４−２におけるイベント処理を終了する（ステップＳ１０のＮｏ，ステップＳ１２）。キーイベント受信部４−２におけるイベント処理が終了すると、イベント処理部３は、キーイベントに対応した一連のイベント処理を終了し、次のイベントに対応したイベント処理を行うためにステップＳ５に戻る。このように、イベントキュー２に格納されている全てのイベントに対する一連のイベント処理（ステップＳ５〜Ｓ１２）が終了するまで繰り返し行う。
【００４０】
なお、上述の動作例では、入力されたキーのキー値を画面上に表示させる描画処理を一例として示しているが、キーイベントによっては、Ｗｉｎｄｏｗ内のＡｃｔｉｖｅコントロールを切り替えたり、画面転換したり、業務処理を依頼するといったＧＵＩ処理を実行させる場合もある。なお、キーイベント受信部４−２は、ＧＵＩ部５がＧＵＩ処理で何を実行するかを認識している必要はないが、少なくともそのキーイベントが業務処理を開始させるアテンションキーに対応するものであるか否かは判定可能とする。キーイベント受信部４−２は、例えばＧＵＩ処理の応答としてアテンションキーであったか否かを示す情報を取得するようにしてもよい。または、予めどのＧＵＩコントロールに対するどのキーイベントがアテンションキーに対応するものかを記憶しておき、そのキーイベントが、記憶されている情報と合致した場合にアテンションキーに対応するキーイベント（以下、単にアテンションキーイベントという。）であると判定してもよい。
【００４１】
キーイベント受信部４−２は、イベント処理部３から受け取ったキーイベントがアテンションキーイベントであった場合には、ＧＵＩ部５にＧＵＩ処理をさせるだけでなく、状態保持部６に業務処理が開始される旨の通知（以下、アテンションキー通知という。）を行う。キーイベント受信部４−２は、例えば、ＧＵＩ部５にＧＵＩ処理をさせた後で、そのキーイベントがアテンションキーイベントであるか否かを判定し、アテンションキーイベントであった場合に、状態保持部６にアテンションキー通知を行えばよい。ここで、アテンションキー通知を受けた状態保持部６は、即座に状態保持部６に状態フラグの更新および状態変更イベントの発行を行う。なお、アテンションキー通知からの状態変更イベントは、割り込みイベントとして発行する。
【００４２】
状態保持部６は、例えば、業務処理部７からの状態変更通知や、キーイベント受信部４−２からのアテンションキー通知に対応する処理を実行するための関数を用意しておき、その関数内で排他制御を行いつつ状態変更フラグを更新し、必要に応じて状態変更イベントを発行するようにしてもよい。そして、キーイベント受信部４−２は、状態保持部６が提供するアテンションキー通知用の関数を呼び出し、その関数から復帰したら、キーイベント受信部４−２におけるアテンションキーイベントのイベント処理を終了すればよい。なお、現在処理中のイベント処理内で状態変更イベントを割り込みイベントとして発行されればよく、例えば、状態保持部６へのアテンションキー通知をＧＵＩ部５に処理させる前に行ってもよい。
【００４３】
なお、アテンションキー通知は、状態変更イベントのイベント処理においてキーイベント可否フラグの更新を状態保持部６の状態フラグに基づいて行うことによる、状態変更イベントの経路を一本化するために行うものである。例えば、状態変更イベントに業務処理中か否かを示す情報を付加させる場合には、アテンションキー通知を省略してキーイベント受信部４−２が直接状態変更イベントを発行することも可能である。
【００４４】
また、ＧＵＩイベントにはキー入力したときに発行されるキーイベントの他に、マウス入力されたときに発行されるマウスイベントや画面描画イベントも含まれるが、ＧＵＩ部５にＧＵＩ処理させるという点でキーイベントと同様であるため説明省略している。
【００４５】
次に、具体例を用いて本実施の形態の動作を説明する。図４〜図８は、本実施の形態における各処理部間の処理の流れを示すシーケンス図である。なお、本具体例におけるデータ入力システムは、キー入力装置１と、一連のイベント処理を行うイベント処理群（イベント処理部３、キーイベント受信部４−２、およびＧＵＩ部５）と、業務処理部７とが、イベント駆動によってそれぞれ独立して動作するよう構成されている。また、割り込みイベントは、オペレーティングシステムの割り込み制御を利用して実現している。
【００４６】
まず、キーイベント可能状態からキーイベント不可状態へと遷移する場合について説明する。図４は、キーイベント可能状態中に業務開始通知があった場合のシーケンス図である。図４に示すように、例えば、キーイベント可能状態中に、連続して複数のキーが入力されたとする。キー入力装置１は、各キーに対応するキーイベントをイベント処理部３に対し発行する。ここでは、キー入力装置１は、入力された各キーに対応するキーイベント（Ａ），（Ｂ），（Ｃ）を順次発行する。イベント処理部３に対し発行されたキーイベントはイベントキュー２に格納される。
【００４７】
本例では、上記キー入力の最中に業務処理部７から業務開始通知がある。状態保持部６は、業務処理部７からの業務開始通知を受けて、状態フラグを業務処理中（ｂｕｓｙ）に変更するとともに、状態変更イベント（イ）をイベント処理部３に対し発行する。結果、本例では、イベントキュー２に、キーイベント（Ａ）→キーイベント（Ｂ）→状態変更イベント（イ）→キーイベント（Ｃ）の順にイベントが格納されるものとする。
【００４８】
イベント処理部３はイベントが発行されたことによって待ち状態から復帰する。イベント処理部３は、まず、イベントキュー２から先頭のイベント（ここでは、キーイベント（Ａ））を取得して、キーイベント受信部４−２にディスパッチ（発送）する。
【００４９】
イベント処理部３からキーイベント（Ａ）を受け取ったキーイベント受信部４−２は、状態変更イベント受信部４−１が管理するキーイベント可否フラグに基づき、描画処理かスタック処理かを行う。ここでは、キーイベント可否フラグがキーイベント可能状態（ｅｎａｂｌｅ）であるので、描画処理を行う。図５に、描画処理のシーケンス図を示す。図５に示すように、キーイベント受信部４−２は、イベント処理部３からキーイベントを受け取ると、状態変更イベント受信部４−１が管理するキーイベント可否フラグを参照し、キーイベント可能状態（ｅｎａｂｌｅ）であれば、ＧＵＩ部５にＧＵＩ処理を依頼する。キーイベント受信部４−２は、例えば、キーイベントを引数にＧＵＩ部５が提供するイベント処理用のコールバックメソッドを呼び出すことでＧＵＩ部５にＧＵＩ処理を依頼する。ＧＵＩ部５は、そのコールバックメソッド内で、例えばキーイベント（Ａ）で示されるキー値をＧＵＩコンポーネントのテキスト領域に設定することによってそのキー値を表示する。キーイベント受信部４−２は、呼び出したコールバックメソッドからの復帰をもって、キーイベント受信部４−２におけるキーイベント（Ａ）のイベント処理を終了する。
【００５０】
イベント処理部３は、キーイベント受信部４−２におけるキーイベント（Ａ）のイベント処理が終了すると、次のイベント（ここでは、キーイベント（Ｂ））を取得する。なお、キーイベント（Ｂ）のイベント処理は、キーイベント可否フラグの状態が変化していないので、キーイベント（Ａ）のイベント処理と同様である。
【００５１】
イベント処理部３は、キーイベント受信部４−２におけるキーイベント（Ｂ）のイベント処理が終了すると、次のイベントを取得する。ここでは、状態変更イベント（イ）が取得されるので、イベント処理部３は、状態変更イベント受信部４−１にディスパッチ（発送）する。
【００５２】
イベント処理部３から状態変更イベント（イ）を受け取った状態変更イベント受信部４−１は、状態保持部６が管理する状態フラグを参照して、キーイベント可否フラグを更新する。状態フラグは、業務処理部７からの業務開始通知によってこの状態変更イベント（イ）が発行される際に業務処理中（ｂｕｓｙ）に変更されているので、状態変更イベント受信部４−１は、キーイベント可否フラグをキーイベント不可状態（ｄｉｓａｂｌｅ）に変更する。なお、変更後のキーイベント可否フラグはキーイベント不可状態であるので、そのまま状態変更イベント受信部４−１における状態変更イベント（イ）のイベント処理を終了する。
【００５３】
イベント処理部３は、状態変更イベント受信部４−１における状態変更イベント（イ）のイベント処理が終了すると、次のイベントを取得する。ここでは、キーイベント（Ｃ）が取得されるので、イベント処理部３は、キーイベント受信部４−２にディスパッチ（発送）する。
【００５４】
イベント処理部３からキーイベント（Ｃ）を受け取ったキーイベント受信部４−２は、状態変更イベント受信部４−１が管理するキーイベント可否フラグに基づき、描画処理かスタック処理かを行う。ここでは、キーイベント可否フラグがキーイベント不可状態（ｄｉｓａｂｌｅ）であるので、スタック処理処理を行う。図６に、スタック処理のシーケンス図を示す。図６に示すように、キーイベント受信部４−２は、イベント処理部３からキーイベントを受け取ると、状態変更イベント受信部４−１が管理するキーイベント可否フラグを参照し、キーイベント不可状態（ｄｉｓａｂｌｅ）であれば、そのキーイベントをスタックキュー８にスタック（待避、格納）して、キーイベント受信部４−２におけるキーイベント（Ｄ）のイベント処理を終了する。
【００５５】
なお、これ以降、キー入力によってキーイベントが発行されたとしても、業務処理部７からの業務終了通知があるまでは、キーイベント（Ｃ）と同様にスタックキュー８に順次スタックされることになる。このように、業務処理状態がアイドル状態から業務処理中に変更になった際に発行される状態変更イベントを境に、状態変更イベントが発行される前であれば、リアルタイムにＧＵＩ処理を行うが、状態変更イベントが発行された後は、先行入力キーによるキーイベントであるとしてスタックキュー８に格納する。
【００５６】
次に、キーイベント不可状態からキーイベント可能状態へと遷移する場合について説明する。図７は、キーイベント不可状態中に業務開始通知があった場合のシーケンス図である。図７に示すように、例えば、キーイベント不可状態中に、先行入力キーとしていくつかキーが入力されたとする。キー入力装置１は、各キーに対応するキーイベントをイベント処理部３に対し発行する。ここでは、キー入力装置１は、入力された各キーに対応するキーイベント（Ｃ），（Ｄ），（Ｅ）を順次発行する。イベント処理部３に対し発行されたキーイベントはイベントキュー２に格納される。
【００５７】
本例では、先行入力キーが入力されている最中に、業務処理部７から業務終了通知がある。状態保持部６は、業務処理部７からの業務終了通知を受けて、状態フラグをアイドル中（ｉｄｌｅ）に変更するとともに、状態変更イベント（ロ）をイベント処理部３に対し発行する。結果、本例では、イベントキュー２に、キーイベント（Ｃ）→キーイベント（Ｄ）→状態変更イベント（ロ）→キーイベント（Ｅ）の順に格納されるものとする。
【００５８】
ここで、キーイベント不可状態中のキーイベント（Ｃ）およびキーイベント（Ｄ）のイベント処理は、図４に示したキーイベント（Ｃ）と同様である。従って、キーイベント（Ｄ）のイベント処理が終了した時点で、スタックキュー８には、キーイベント（Ｃ）→キーイベント（Ｄ）の順番で格納されている。
【００５９】
イベント処理部３は、キーイベント受信部４−２におけるキーイベント（Ｄ）のイベント処理が終了すると、次のイベントを取得する。ここでは、状態変更イベント（ロ）が取得されるので、イベント処理部３は、状態変更イベント受信部４−１にディスパッチ（発送）する。
【００６０】
イベント処理部３から状態変更イベント（ロ）を受け取った状態変更イベント受信部４−１は、状態保持部６が管理する状態フラグを参照し、キーイベント可否フラグを更新する。状態フラグは、業務処理部７からの業務終了通知によってこの状態変更イベント（ロ）が発行される際にアイドル中（ｉｄｌｅ）に変更されているので、状態変更イベント受信部４−１は、キーイベント可否フラグをキーイベント可能状態（ｅｎａｂｌｅ）に変更する。状態変更イベント受信部４−１は、キーイベント可否フラグがキーイベント可能状態に変更になった場合には、スタックキュー８に格納されているキーイベントを全て取得してイベント処理部３に割り込みイベントとして発行する。まず、状態変更イベント受信部４−１は、スタックキュー８から先頭のイベント（ここでは、キーイベント（Ｃ））を取得し、取得したキーイベント（Ｃ）を割り込みイベントとしてイベント処理部３に対し発行する。
【００６１】
割り込みイベントが発行されると、イベント処理部３において現在処理中のイベント処理（状態変更イベント（ロ）に対応した一連のイベント処理）は中断され、割り込みイベントであるキーイベント（Ｃ）のイベント処理がイベント処理部３から開始される。割り込みイベントのイベント処理が開始されると、イベント処理部３は、その割り込みイベント（キーイベント（Ｃ））を取得したとして、キーイベント受信部４−２にキーイベント（Ｃ）をディスパッチ（発送）する。
【００６２】
イベント処理部３からキーイベント（Ｃ）を受け取ったキーイベント受信部４−２は、状態変更イベント受信部４−１が管理するキーイベント可否フラグに基づき、描画処理かスタック処理かを行う。ここでは、中断される前のイベント処理（状態変更イベント（ロ）のイベント処理）でキーイベント不可フラグがキーイベント可能状態（ｅｎａｂｌｅ）に更新されているので、キーイベント受信部４−２は描画処理を行う。キーイベント受信部４−２は、ＧＵＩ部５にＧＵＩ処理をさせ、その終了をもってキーイベント受信部４−２におけるキーイベント（Ｃ）のイベント処理を終了する。
【００６３】
イベント処理部３は、キーイベント受信部４−２におけるイベント処理が終了すると、イベント処理部３における割り込みイベント（キーイベント（Ｃ））のイベント処理を終了する。イベント処理部３による割り込みイベントのイベント処理が終了すると、中断されていた状態変更イベント（ロ）のイベント処理が再開される。再開された状態変更イベント（ロ）のイベント処理では、状態変更イベント受信部４−１が、例えば、キーイベント（Ｃ）を割り込みイベントとして発行する処理から復帰し、スタックキュー８から次のイベントを取得する。ここでは、キーイベント（Ｄ）が取得されるので、続いてキーイベント（Ｄ）を割り込みイベントとしてイベント処理部３に対し発行する。
【００６４】
割り込みイベントが発行されると、イベント処理部３において現在処理中のイベント処理（状態変更イベント（ロ）に対応した一連のイベント処理）は中断され、割り込みイベントであるキーイベント（Ｄ）に対応したイベント処理が開始される。なお、割り込みイベントであるキーイベント（Ｄ）のイベント処理は、上述の割り込みイベントであるキーイベント（Ｃ）のイベント処理と同様である。
【００６５】
イベント処理部３による割り込みイベント（キーイベント（Ｄ））のイベント処理が終了すると、中断されていた状態変更イベント（ロ）のイベント処理が再開される。再開された状態変更イベント（ロ）のイベント処理では、状態変更イベント受信部４−１が、例えば、キーイベント（Ｄ）を割り込みイベントとして発行する処理から復帰し、スタックキュー８から次のイベントを取得する。この時点で、スタックキュー８に格納されていたイベントは全て取得されているので、先行入力されたキーイベントを全ての処理しおえたとして、状態変更イベント受信部４−１における状態変更イベント（ロ）のイベント処理を終了する。
【００６６】
イベント処理部３は、状態変更イベント受信部４−１における状態変更イベント（ロ）のイベント処理が終了すると、次のイベント（ここでは、キーイベント（Ｅ））を取得する。なお、キーイベント（Ｅ）のイベント処理では、キーイベント可否フラグの状態がキーイベント可能状態であるので、通常の描画処理が行われることになる。このように、業務処理状態が業務処理中からアイドル状態に変更した際に発行される状態変更イベントのイベント処理中に、スタックキュー８に格納されているキーイベントを全て割り込みイベントとして発行することによって、状態変更イベントよりも後に発行されたキーイベントのイベント処理よりも前に、先行入力されたキーによる先行入力キーイベントのイベント処理を実行する。なお、本例では、割り込み制御を利用することによって、状態変更イベントのイベント処理中に先行入力キーイベントのイベント処理を実行する例を示しているが、イベントキュー２の制御部による優先制御を利用した場合には、状態変更イベントのイベント処理を終了した後、次に取得されるイベントが先行入力キーイベントとなり、状態変更イベントの後に発行された通常イベントのイベント処理よりも前に、割り込みイベントのイベント処理を実行することになる。
【００６７】
次に、キーイベント可能状態中にアテンションキーによって業務開始する場合について説明する。図８は、キーイベント可能状態中にアテンションキーによって業務開始する場合のシーケンス図である。図８に示すように、例えば、キーイベント可能状態中に、業務処理を開始させるアテンションキーを含むキー入力があったとする。キー入力装置１は、各キーに対応するキーイベントを発行する。ここでは、キー入力装置１は、入力された各キーに対応するキーイベント（Ｆ），（Ｇ）を順次発行する。ここでは、キーイベント（Ｆ）がアテンションキーイベントであるとする。イベント処理部３に対し発行されたキーイベントはイベントキュー２に格納される。
【００６８】
イベント処理部３は、まず、イベントキュー２から先頭のイベント（ここでは、キーイベント（Ｆ））を取得して、キーイベント受信部４−２にディスパッチ（発送）する。イベント処理部３からキーイベント（Ｆ）を受け取ったキーイベント受信部４−２は、状態変更イベント受信部４−１が管理するキーイベント可否フラグに基づき、描画処理かスタック処理かを行う。ここでは、キーイベント可否フラグがキーイベント可能状態（ｅｎａｂｌｅ）であるので、描画処理を行う。なお、キーイベント（Ｆ）はアテンションキーイベントであるので、ＧＵＩ部５は、ＧＵＩ処理で業務処理部７に対し業務処理開始依頼を行う。なお、ＧＵＩ部５と業務処理部７とは別スレッドであるため、業務処理開始依頼後の業務処理部７の動作については関与しない。
【００６９】
また、キーイベント受信部４−２は、キーイベント（Ｆ）がアテンションキーイベントである場合には、状態保持部６に対しアテンションキー通知を行う。
【００７０】
アテンションキー通知を受けた状態保持部６は、状態フラグを業務処理中（ｂｕｓｙ）に変更するとともに、状態変更イベント（ハ）を割り込みイベントとしてイベント処理部３に対し発行する。なお、業務処理部７からの業務開始通知によって既に状態フラグが業務処理中である場合には、何もせず処理を終了すればよい。
【００７１】
割り込みイベントが発行されると、イベント処理部３において現在処理中のイベント処理（キーイベント（Ｆ）に対応した一連のイベント処理）は中断され、割り込みイベントである状態変更イベント（ハ）のイベント処理が開始される。割り込みイベントのイベント処理が開始されると、イベント処理部３は、その割り込みイベント（状態変更イベント（ハ））を取得したとして、状態変更イベント受信部４−１に状態変更イベント（ハ）をディスパッチ（発送）する。
【００７２】
イベント処理部３から状態変更イベント（ハ）を受け取った状態変更イベント受信部４−１は、状態保持部６が管理する状態フラグを参照し、キーイベント可否フラグを更新する。状態フラグは、キーイベント受信部４−２からのアテンションキー通知によってこの状態変更イベント（ハ）が発行される際に業務処理中（ｂｕｓｙ）に変更されているので、状態変更イベント受信部４−１は、キーイベント可否フラグをキーイベント不可状態（ｄｉｓａｂｌｅ）に変更し、状態変更イベント受信部４−１における状態変更イベント（ハ）のイベント処理を終了する。
【００７３】
イベント処理部３は、状態変更イベント受信部４−１におけるイベント処理が終了すると、イベント処理部３における割り込みイベント（状態変更イベント（ハ））のイベント処理を終了する。イベント処理部３による割り込みイベントのイベント処理が終了すると、中断されていたキーイベント（Ｆ）のイベント処理が再開される。再開されたキーイベント（Ｆ）のイベント処理では、キーイベント受信部４−２が、例えば、アテンションキー通知用の関数から復帰し、キーイベント受信部４−２におけるキーイベント（Ｆ）のイベントの処理を終了する。
【００７４】
イベント処理部３は、キーイベント受信部４−２におけるキーイベント（Ｆ）のイベント処理が終了すると、次のイベント（ここでは、キーイベント（Ｇ））を取得する。なお、キーイベント（Ｇ）のイベント処理では、アテンションキーイベント（Ｆ）のイベント処理中に発行された割り込みイベントとしての状態変更イベント（ハ）のイベント処理によって、キーイベント可否フラグがキーイベント不可状態に変更されているので、スタック処理が行われる。なお、イベント処理部３と業務処理部７とが独立して動作する場合には、ＧＵＩ部５から業務処理開始依頼を行うことによって業務処理部７が業務処理を開始する場合であっても、別スレッドである業務処理部７がいつ業務開始通知を行うかまでは制御できない。本例によれば、仮に業務処理部７からの業務開始通知が来る前にキー入力があったとしても、アテンションキーイベントのイベント処理中に、状態変更イベントを割り込みイベントとして発行することによって、そのキーイベントを先行入力キーイベントとしてスタックキュー８に格納させることができる。
【００７５】
以上のように、本実施の形態では、入力されたキーをキーイベントとして順次取得して処理するイベント駆動型のＧＵＩフレームワークにおけるイベント処理部３に対し発行するイベントに、業務状態が変化した際にその変更を通知する状態変更イベントを新たに定義し、イベント処理部３から始まる一連のイベント処理内で、状態変更に伴うキーイベントのスタック処理や描画処理を制御している。このため、状態変更に伴うキーイベントの制御を一本化することができ、画面からだけでなく業務処理の結果によってもキー入力可否状態が変わるようなデータ入力システムにおいても、先行入力されるキーを適切に処理することができる。すわなち、画面制御と業務処理とが独立して動作するイベント駆動型のＧＵＩフレームワーク環境においても、リアルタイムに入力されるキーと先行入力されたキーとを整合性を保って処理させることができる。
【００７６】
例えば、キーイベント可能状態に遷移した後に入力されたキーに対応する通常のキーイベントはイベントキュー２に格納されたまま、状態変更イベントの処理内またはその直後に全先行入力キーイベントのイベント処理を行うので、キーイベント可能状態に遷移した後もリアルタイムにキー入力されつづけていた場合であっても、先行入力キーイベントと、先行入力キーイベントの処理中にリアルタイムに入力されるキーに対応するキーイベントとの間で、その発行順序を維持して処理することができる。
【産業上の利用可能性】
【００７７】
本発明は、画面転換と業務処理とが独立して動作しうるイベント駆動型のＧＵＩフレームによって実現されるデータ入力システムに好適に適用可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明による先行入力キー処理装置を適用したデータ入力システムの構成例を示すブロック図である。
【図２】本実施の形態において実現するシングルスレッド機構の例を示す説明図である。
【図３】本実施の形態における先行入力キー処理装置の動作例を示すフローチャートである。
【図４】各処理部間の処理の流れを示すシーケンス図である。
【図５】各処理部間の処理の流れを示すシーケンス図である。
【図６】各処理部間の処理の流れを示すシーケンス図である。
【図７】各処理部間の処理の流れを示すシーケンス図である。
【図８】各処理部間の処理の流れを示すシーケンス図である。
【符号の説明】
【００７９】
１  キー入力装置
２  イベントキュー
３  イベント処理部
４  イベント受信部
４−１  状態変更イベント受信部
４−２  キーイベント受信部
５  ＧＵＩ部
６  状態保持部
７  業務処理部
８  スタックキュー
【図１】
2008204297.tif 000003
【図２】
2008204297.tif 000004
【図３】
2008204297.tif 000005
【図４】
2008204297.tif 000006
【図５】
2008204297.tif 000007
【図６】
2008204297.tif 000008
【図７】
2008204297.tif 000009
【図８】
2008204297.tif 000010