(57)【要約】【課題】例えば、従来のクライアント・アプリケーションのプログラム状態保持機能に対応する機能を果たせることができ、従来のクライアント・アプリケーションで提供されていたＧＵＩアプリケーション機能をＷｅｂアプリケーションで実現する。【解決手段】Ｗｅｂサーバ１２は、クライアントＰＣ１１からの第１のイベント要求に該当するアプリケーションプログラムに含まれるべきウィンドウオブジェクト及び変数に対して、第１のイベント要求情報に対応するイベント処理を実行した後、イベント処理後のウィンドウオブジェクト及び変数をＷｅｂセッション１２２７に保持するとともに、イベント処理後のウィンドウオブジェクトをクライアントＰＣ１１に対して送信する。また、Ｗｅｂサーバ１２は、Ｗｅｂセッション１２２７に保持されるウィンドウオブジェクト及び変数を用いて第２のイベント要求に対応するイベント処理を実行する。【選択図】図３
2007122691.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と通信回線を介して接続される情報処理装置であって、
前記外部装置からのイベント要求情報を受信する受信手段と、
前記受信手段が受信する第１のイベント要求情報に該当するアプリケーションプログラムに含まれるべき少なくとも一つのウィンドウオブジェクト及び変数に対して、前記第１のイベント要求情報に対応する前記アプリケーションプログラムが実行すべきイベント処理を実行するイベント処理手段と、
前記イベント処理手段によるイベント処理後の前記ウィンドウオブジェクト及び前記変数を記録媒体に保持させる保持手段と、
前記イベント処理手段によるイベント処理後の前記ウィンドウオブジェクトを前記外部装置に対して送信する送信手段とを有し、
前記イベント処理手段は、前記アプリケーションプログラムに該当する第２のイベント要求情報を前記受信手段が更に受信した場合、前記記録媒体に保持される前記ウィンドウオブジェクト及び前記変数を用いて前記第２のイベント要求情報に対応するイベント処理を実行することを特徴とする情報処理装置。
【請求項２】
前記第１のイベント要求情報に対応するイベント処理後の前記ウィンドウの表示状態を示す表示状態情報を生成する表示状態情報生成手段と、
前記表示状態情報に基づいてＷｅｂブラウザ上で動作するスクリプト言語情報を生成するスクリプト言語生成手段とを更に有し、
前記送信手段は、更に前記スクリプト言語情報を前記外部装置に対して送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アプリケーションプログラムに含まれるべきイベント処理関数が実行し得るデータに前記ウィンドウオブジェクトの少なくとも一部を変換する変換手段を更に有し、
前記イベント処理手段は、前記イベント処理関数を含み、前記変換手段によって変換された前記ウィンドウオブジェクトの少なくとも一部に対し、前記イベント処理関数によってイベント処理を実行することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
外部装置と通信回線を介して接続される情報処理装置による情報処理方法であって、
前記外部装置からのイベント要求情報を受信する受信ステップと、
前記受信ステップにて受信する第１のイベント要求情報に該当するアプリケーションプログラムに含まれるべき少なくとも一つのウィンドウオブジェクト及び変数に対して、前記第１のイベント要求情報に対応する前記アプリケーションプログラムが実行すべきイベント処理を実行するイベント処理ステップと、
前記イベント処理ステップによるイベント処理後の前記ウィンドウオブジェクト及び前記変数を記録媒体に保持させる保持ステップと、
前記イベント処理ステップによるイベント処理後の前記ウィンドウオブジェクトを前記外部装置に対して送信する送信ステップとを含み、
前記イベント処理ステップは、前記アプリケーションプログラムに該当する第２のイベント要求情報を前記受信ステップにて更に受信した場合、前記記録媒体に保持される前記ウィンドウオブジェクト及び前記変数を用いて前記第２のイベント要求情報に対応するイベント処理を実行することを特徴とする情報処理方法。
【請求項５】
請求項４に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂアプリケーションを適用することが可能な情報処理装置、情報処理方法及びプログラムに関するものである。
【背景技術】
【０００２】
これまでのクライアント／サーバ・システムにおいてはVisual Basic等によりグラフィカルなユーザインタフェースを持つクライアント・アプリケーションを構築でき、マルチウィンドウ動作等、表現力の高いアプリケーションが実現可能となった。
【０００３】
クライアント・アプリケーションにおいては、クライアント端末のメモリに常駐して利用ユーザと１対１で要求・応答を行うことを前提としており、（１）プログラム状態の保持（グローバル変数や使用オブジェクト等の状態保持）、（２）複数ウィンドウの状態保持（ウィンドウの表示・非表示、ウィンドウのフォーカス、項目の入力可・不可、項目データの保持等）、（３）アプリケーション・ライフサイクル管理（グローバル変数やオブジェクトの初期化・消去タイミング、ウィンドウの初期化・消去タイミング、アプリケーション全体の生死などの管理）、（４）イベント管理（（３）のライフサイクルに関する内部的なイベントを含め、どのＧＵＩコンポーネントにどんなイベントが発生し、その結果どの関数やメソッドを呼ぶかを管理）といった機能をランタイムが自動化することで、優れたユーザビリティを持ったアプリケーションを容易に実現することができた。
【０００４】
一方で、クライアント／サーバ・システムでは、クライアント端末数が多くなる場合、インストール、環境設定等、クライアント・アプリケーションの配布に関する労力、マンパワー、運用に多大なコストがかかるという問題点もあった。
【０００５】
近年では、ＨＴＭＬとＷｅｂブラウザとを用いたＷｅｂアプリケーションが多く開発されており、ＷｅＢブラウザがインストールされたクライアントマシンであれば、インターネット／イントラネット上のどこからでもＷｅｂサーバからＨＴＭＬファイルをダウンロードできるので、配布については容易となった。
【０００６】
ただし、ＨＴＭＬファイルは、テキストをマークアップするために考案された言語であるため、クライアント・アプリケーションとして、マルチウィンドウのような自由なウィンドウ動作を実現するためには、十分なものではない。また、Ｗｅｂ系のシステムにおいては、ＨＴＴＰプロトコルに基づき、ネットワークに極力負担を掛けないようにクライアントとサーバとが常に繋がっているわけではなく、クライアントからのリクエストを受けてＷｅｂサーバが答えを返して接続が切れるというコミュニケーションになっている。
【０００７】
また、非特許文献１には、通常のＷｅｂアプリケーションにおける表現力、操作性等の問題点を解決するものとして、リッチ・クライアントと称されるものが開示されている。
【０００８】
【非特許文献１】田中、「リッチ・クライアントの最新事情」、月刊Ｊａｖａ（登録商標） Ｗｏｒｌｄ、株式会社アイ・ディ・ジー・ジャパン、第８巻、第９号（通巻８８号）、平成１６年９月、ｐ８２−９３
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、Ｗｅｂアプリケーションプログラムでは、クライアント／サーバ・システムのようなＧＵＩを多用したアプリケーションを実現することが一般的に困難である。その理由は、クライアント・アプリケーションとＷｅｂアプリケーションのアーキテクチャ上の違いに拠るところが大きい。先述したように、（１）プログラム状態の保持、（２）複数ウィンドウの状態保持、（３）アプリケーション・ライフサイクル管理については、そもそも一般的なＷｅｂアプリケーションのように要求が来た時にアプリケーションが生成され、応答した時に消去されるようなアーキテクチャでは個別のアプリケーションで対応を行うことが困難である。また、（４）イベント管理については、状態が保持されることが前提であり、更にＷｅｂアプリケーションとして発生するイベントは、従来のクライアント・アプリケーションで発生するイベントとは全く異なる。
【００１０】
また、非特許文献１に開示されるリッチ・クライアントの場合、クライアント側で動作するアプリケーション・プログラムが必要となる。しかしながら、現在、その開発手法、開発環境が整備されておらず、生産性、開発コストの増加、開発者の不足等が課題として挙げられる。
【００１１】
そこで、本発明の目的は、例えば、従来のクライアント・アプリケーションのプログラム状態保持機能に対応する機能を果たせることができ、従来のクライアント・アプリケーションで提供されていたＧＵＩアプリケーション機能をＷｅｂアプリケーションで実現することにある。
【００１２】
また本発明の目的は、例えば複数ウィンドウを対象とした画面の表示・非表示、画面のフォーカス制御等の外部装置にインストールされるＷｅｂブラウザ上における画面制御を情報処理装置側から行うことを可能とすることにある。
【００１３】
さらに本発明の目的は、従来から提供されていたクライアント・アプリケーション等、その構造を変えることなくイベント処理手段として利用可能とすることにある。
【課題を解決するための手段】
【００１４】
本発明の情報処理装置は、外部装置と通信回線を介して接続される情報処理装置であって、前記外部装置からのイベント要求情報を受信する受信手段と、前記受信手段が受信する第１のイベント要求情報に該当するアプリケーションプログラムに含まれるべき少なくとも一つのウィンドウオブジェクト及び変数に対して、前記第１のイベント要求情報に対応する前記アプリケーションプログラムが実行すべきイベント処理を実行するイベント処理手段と、前記イベント処理手段によるイベント処理後の前記ウィンドウオブジェクト及び前記変数を記録媒体に保持させる保持手段と、前記イベント処理手段によるイベント処理後の前記ウィンドウオブジェクトを前記外部装置に対して送信する送信手段とを有し、前記イベント処理手段は、前記アプリケーションプログラムに該当する第２のイベント要求情報を前記受信手段が更に受信した場合、前記記録媒体に保持される前記ウィンドウオブジェクト及び前記変数を用いて前記第２のイベント要求情報に対応するイベント処理を実行することを特徴とする。
本発明の情報処理方法は、外部装置と通信回線を介して接続される情報処理装置による情報処理方法であって、前記外部装置からのイベント要求情報を受信する受信ステップと、前記受信ステップにて受信する第１のイベント要求情報に該当するアプリケーションプログラムに含まれるべき少なくとも一つのウィンドウオブジェクト及び変数に対して、前記第１のイベント要求情報に対応する前記アプリケーションプログラムが実行すべきイベント処理を実行するイベント処理ステップと、前記イベント処理ステップによるイベント処理後の前記ウィンドウオブジェクト及び前記変数を記録媒体に保持させる保持ステップと、前記イベント処理ステップによるイベント処理後の前記ウィンドウオブジェクトを前記外部装置に対して送信する送信ステップとを含み、前記イベント処理ステップは、前記アプリケーションプログラムに該当する第２のイベント要求情報を前記受信ステップにて更に受信した場合、前記記録媒体に保持される前記ウィンドウオブジェクト及び前記変数を用いて前記第２のイベント要求情報に対応するイベント処理を実行することを特徴とする。
本発明のプログラムは、前記情報処理方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、或るアプリケーションプログラムに該当するイベント要求情報に応じたイベント処理を実行した後、当該アプリケーションプログラムに含まれるべきウィンドウオブジェクト及び変数の状態を保持し、当該アプリケーションプログラムについて更にイベント要求情報を受信すると、保持したウィンドウオブジェクト及び変数を用いて対応するイベント処理を行い、またイベント処理後のウィンドウオブジェクトを外部装置に対して送信するように構成したので、例えば、従来のクライアント・アプリケーションのプログラム状態保持機能に対応する機能を果たせることができ、従来のクライアント・アプリケーションで提供されていたＧＵＩアプリケーション機能をＷｅｂアプリケーションで実現することが可能となる。
【００１６】
また本発明の他の特徴によれば、ウィンドウの表示状態情報に基づくスクリプト言語を生成し、ウィンドウオブジェクトとともに外部装置に送信するように構成したので、例えば複数ウィンドウを対象とした画面の表示・非表示、画面のフォーカス制御等の外部装置にインストールされるＷｅｂブラウザ上における画面制御を情報処理装置側から行うことが可能となる。
【００１７】
さらに本発明の他の特徴によれば、ウィンドウオブジェクトの少なくとも一部を、例えば従来のクライアント・アプリケーションに含まれるイベント処理関数が実行し得るデータに変換するように構成したので、イベント処理手段として、従来から提供されていたクライアント・アプリケーション等、その構造を変えることなく利用することが可能となる。
【発明を実施するための最良の形態】
【００１８】
図１は、本発明の実施形態に係るＷｅｂアプリケーションシステムの構成を概略的に示す図である。クライアントＰＣ１１は、例えば一般的なＰＣ等によって構成され、ＨＴＴＰプロトコルに従ってＷｅｂサーバ１２に処理をＨＴＴＰリクエストによって要求し、その応答であるＨＴＴＰレスポンスを受信することができる。クライアントＰＣ１１はＨＴＴＰレスポンスとして例えばＨＴＭＬファイルを受信し、ＨＴＭＬファイルは、クライアントＰＣ１１にインストールされるＷｅｂブラウザ１１１の機能により画面上に表示される。
【００１９】
Ｗｅｂサーバ１２は、図１に示すように、ＧＵＩ処理部１２１、アーキテクチャ変換部１２２及びビジネスロジック部１２３により構成される。ＧＵＩ処理部１２１は、Ｗｅｂブラウザ１１１によってＨＴＭＬファイルを閲覧する際に文字の表示方法等を指定するためのＨＴＭＬタグ、事前に用意されたＷｅｂ用ＧＵＩコンポーネント・タグ等から成るＷｅｂ−ＧＵＩ定義体を備える。Ｗｅｂ用ＧＵＩコンポーネント・タグは、従来のクライアント・アプリケーションプログラムに含まれるＧＵＩ定義部（フォーム内のテキストボックスやラジオボタン等の様々なＧＵＩコンポーネントを構成するコード）に対応するものである。
【００２０】
ビジネスロジック部１２３は、従来のクライアント・アプリケーションプログラムに含まれるイベント処理等を行う部分に対応するものであり、１つ又は複数のアプリケーションから構成され、クライアントＰＣ１１からの要求に応じたイベント処理を実行する。
【００２１】
アーキテクチャ変換部１２２は、ＧＵＩ処理部１２１とビジネスロジック部１２３との間に配置されることによって、従来のクライアント・アプリケーションプログラムのビジネスロジックの構成を保証しつつ、Ｗｅｂサーバ１２全体としてＷｅｂアプリケーションの機能を実現し、クライアント／サーバ・システムとＷｅｂアプリケーションシステム間のアーキテクチャの違いを吸収する役割を果たす。
【００２２】
図２は、Ｗｅｂサーバ１２のハードウェア構成を示す図である。ＣＰＵ２０１は、システムバスに接続される各デバイスやコントローラを統括的に制御する。ＲＯＭ２０３又は外部メモリ２０７には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Basic Input/Output System）やオペレーティングシステムプログラムや、Ｗｅｂサーバ１２が実行する例えば図４乃至図６に示す処理のプログラム等が記憶されている。なお、図２の例では、外部メモリ２０７は、Ｗｅｂサーバ１２の外部に配置された構成を示しているが、他の実施形態として外部メモリ２０７に相当する構成がＷｅｂ１２内部に配置された構成としてもよい。また、本実施形態に係る例えば図４乃至図６に示す処理を行うためのプログラムは、ＣＤ−ＲＯＭやフレキシブルディスク等、コンピュータ読み取り可能な記録媒体に記録され、それらの記録媒体から供給される構成としてもよいし、インターネット等の通信媒体を介して供給される構成であってもよい。
【００２３】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０２にロードして、プログラムを実行することで各種動作を実現するものである。
【００２４】
メモリコントローラ２０６は、ハードディスク（ＨＤ）やフレキシブルディスク等の外部メモリ２０７へのアクセスを制御する。通信Ｉ／Ｆコントローラ２０５は、インターネットを介してクライアントＰＣと接続・通信するものであり、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。
【００２５】
図３は、Ｗｅｂサーバ１２の機能構成を示す図である。図３に示すように、Ｗｅｂサーバ１２のＧＵＩ処理部１２１は、Ｗｅｂ−ＧＵＩ定義体１２１１、ＸＭＬコード部１２１２、ＸＭＬデコード部１２１３、スクリプト生成部１２１４によって構成される。
【００２６】
Ｗｅｂ−ＧＵＩ定義体１２１１は、上述したように、従来のクライアント・アプリケーションプログラムに含まれるＧＵＩ定義部に対応するものである。
【００２７】
ＸＭＬコード部１２１２は、クライアントＰＣ１１からのイベント要求に対応するウィンドウオブジェクトをＷｅｂ−ＧＵＩ定義体１２１１に基づいて生成し、生成したウィンドウオブジェクトをＸＭＬデータに符号化してアーキテクチャ変換部１２２に渡す。本実施形態では、ウィンドウオブジェクト内におけるＧＵＩコンポーネント等の配置レイアウト構造やデータ構造を規定するために、ＧＵＩ処理部１２１に実装されるプロダクトのアーキテクチャ依存のウィンドウオブジェクトから、汎用化されたウィンドウオブジェクト（ＨＴＭＬ）に変換している。なお、ここでいうウィンドウオブジェクトとは、Ｗｅｂブラウザ上に表示されるウィンドウを構成するためのデータである。
【００２８】
ＸＭＬデコード部１２１３は、アーキテクチャ変換部１２２から渡される汎用化されたＸＭＬデータとＷｅｂ−ＧＵＩ定義体１２１１とに基づいて、ＧＵＩ処理部１２１に実装されるプロダクトのアーキテクチャ依存のウィンドウオブジェクト（ＨＴＭＬデータ）を生成し、クライアントＰＣ１１に対して送信する。
【００２９】
スクリプト生成部１２１４は、必要に応じてスクリプト言語を生成する。生成されたスクリプト言語はＸＭＬデコード部１２１３で生成されるウィンドウオブジェクト（ＨＴＭＬデータ）とともにクライアントＰＣ１１に対して送信される。
【００３０】
アーキテクチャ変換部１２２は、アプリケーション・ライフサイクル管理部１２２１、プログラム状態保持部１２２２、オブジェクト状態保持部１２２３、クライアントＧＵＩコンポーネント偽装部１２２４、複数オブジェクト状態保持部１２２５、イベント変換部１２２６及びＷｅｂセッション１２２７を備える。
【００３１】
アプリケーション・ライフサイクル管理部１２２１は、初期要求時には、アプリケーションの実行単位（例えば、Windows（登録商標） OSのEXE単位）を認識し、該当するアプリケーション（ビジネスロジック部１２３）固有のウィンドウオブジェクトやグローバル変数を初期化し、アプリケーション全体が終了する契機（例えば、当該アプリケーションを終了させるための特定のイベント発生時や当該アプリケーションの全ウィンドウが閉じられた時等）には後述する各状態保持部への消去要求を行う。
【００３２】
プログラム状態保持部１２２２は、ビジネスロジック部１２３においてイベント処理が発生した際に、ウィンドウオブジェクトやグローバル変数の現在の状態をＷｅｂセッション１２２７に保管する。例えば初期要求に対応するイベント処理時には、初期化されたウィンドウオブジェクト及び同じく初期化されたグローバル変数等をＷｅｂセッション１２２７に保管し、同一のアプリケーションに対する２回目以降のイベント処理時には、そのイベント処理によって更新されたグローバル変数等をＷｅｂセッション１２２７に保管する。なお、Ｗｅｂセッション１２２７とは、各アプリケーション毎にウィンドウオブジェクトやグローバル変数等を保持するために設けられた例えばＲＡＭ２０２内の一部の記憶領域である。
【００３３】
オブジェクト状態保持部１２２３は、ビジネスロジック部１２３による処理結果が反映させたＧＵＩコンポーネントを含む例えばＸＭＬデータ等のウィンドウオブジェクトを、Ｗｅｂセッション１２２７に保管する。
【００３４】
クライアントＧＵＩコンポーネント偽装部１２２４は、ビジネスロジック部１２３が扱えるデータとするため、ウィンドウオブジェクト内の各ＧＵＩコンポーネントに対応するＸＭＬデータをビジネスロジック部１２３と互換性のあるクラスに変換する。
【００３５】
複数オブジェクト状態保持部１２２５は、オブジェクトの発生（ロード）・消去、表示・非表示、フォーカスの有無、モーダルウィンドウ（或るオブジェクトに所定の入力がなければ、他のオブジェクトへの入力ができないオブジェクト）の有無等、複数のウィンドウの現在の表示状態を示す複数オブジェクト状態情報を生成し、Ｗｅｂセッション１２２７に保管する。スクリプト生成部１２１４は、この複数オブジェクト状態情報に基づいてスクリプト言語を生成する。生成されたスクリプト言語がＷｅｂブラウザ１１１上で動作することによって、Ｗｅｂサーバ１２からオブジェクトの発生（ロード）・消去、表示・非表示等を制御することが可能となる。
【００３６】
イベント変換部１２２６は、Ｗｅｂブラウザ１１１でのオペレーションを基に発生したイベントを認識し、対応したイベント処理関数をビジネスロジック部１２３から呼び出す。
【００３７】
ビジネスロジック部１２３は、上述したように、従来のクライアント・アプリケーションプログラムのビジネスロジックに対応するアプリケーションで構成されるものであり、ビジネスロジック部１２３固有のウィンドウオブジェクト単位で、ウィンドウ単位で使用されるグローバル変数等から構成されるウィンドウデータや各種イベント処理関数を保持するとともに、ウィンドウオブジェクト間に亘って使用されるグローバル変数を保持する。また、これらビジネスロジック部１２３固有のウィンドウオブジェクトやグローバル変数は、アプリケーションと同等の単位で保持される。
【００３８】
なお、ＸＭＬコード部１２１２、ＸＭＬデコード部１２１３、スクリプト生成部１２１４、アプリケーション・ライフサイクル管理部１２２１、プログラム状態保持部１２２２、オブジェクト状態保持部１２２３、クライアントＧＵＩコンポーネント偽装部１２２４、複数オブジェクト状態保持部１２２５及びイベント変換部１２２６は夫々、例えば外部メモリ２０７内に記憶され、必要に応じてＲＡＭ２０２にロードされるプログラム及びそれを実行するＣＰＵ２０１に相当する構成であり、Ｗｅｂセッション１２２７は、例えばＲＡＭ２０２内の一部の記憶領域であり、Ｗｅｂ−ＧＵＩ定義体１２１１及びイベント処理関数は例えば外部メモリ２０７又はＲＯＭ２０３内に記憶されるデータである。
【００３９】
次に、Ｗｅｂサーバ１２の動作を図４乃至図６のフローチャートを参照しながら説明する。図４及び図６は、ＧＵＩ処理部１２１の処理動作を示すフローチャートであり、図５は、アーキテクチャ変換部１２２の動作を示すフローチャートである。
【００４０】
図４において、ＸＭＬコード部１２１２は、クライアントＰＣ１１からＨＴＴＰリクエストとして或るアプリケーション（以下、このアプリケーションをアプリケーションＡと称す）に対するイベント（例えば、アプリケーションの起動要求、処理結果の返信要求、アプリケーションの終了要求等）を受け付けた場合（ステップＳ４０１／ＹＥＳ）、Ｗｅｂ−ＧＵＩ定義体１２１１を用いてアプリケーションＡに含まれる全ウィンドウオブジェクトをＨＴＭＬデータで生成する（ステップＳ４０２）。例えば、アプリケーションＡにウィンドウオブジェクトＡ−１、ウィンドウオブジェクトＡ−２が含まれるのであれば、ウィンドウオブジェクトＡ−１とウィンドウオブジェクトＡ−２とがＨＴＭＬデータで生成されることになる。以下では、アプリケーションＡには、ウィンドウオブジェクトＡ−１、ウィンドウオブジェクトＡ−２が含まれることを前提に説明を行う。
【００４１】
続いてＸＭＬコード部１２１２は、生成したウィンドウオブジェクト（ＨＴＭＬデータ）をＸＭＬデータに符号化し（ステップＳ４０３）、アーキテクチャ変換部１２２に渡す（ステップＳ４０４）。なお、クライアントＰＣ１１からのイベント要求がない間は（ステップＳ４０１／ＮＯ）、イベント要求を受け付けるまでの待機状態となる。
【００４２】
次に図５において、アプリケーション・ライフサイクル管理部１２２１は、ＧＵＩ処理部１２１からＸＭＬデータを受けると（ステップＳ５０１／ＹＥＳ）、当該イベントがアプリケーションＡ単位で初期要求に相当するか否かを判断する（ステップＳ５０２）。この初期要求に相当するか否かは、Ｗｅｂセッション１２２７内において、アプリケーションＡに含まれるウィンドウオブジェクト、グローバル変数が保持されているか否かによって判断される。例えば、アプリケーションＡには、ウィンドウオブジェクトＡ−１、ウィンドウオブジェクトＡ−２及びアプリケーションＡが使用するグローバル変数が含まれるので、ウィンドウオブジェクトＡ−１、ウィンドウオブジェクトＡ−２及びアプリケーションＡのグローバル変数がＷｅｂセッション１２２７内において既に保管されている場合、今回のイベントは初期要求ではないと判断され、Ｗｅｂセッション１２２７内においてアプリケーションＡに関してこれらが現在保管されていない場合は今回のイベントは初期要求であると判断される。なお、ＧＵＩ処理部１２１からのＸＭＬデータを受け付けていない間は（ステップＳ５０１／ＮＯ）、ＸＭＬデータを受け付けるまでの待機状態となる。
【００４３】
アプリケーション・ライフサイクル管理部１２２１は、例えば、今回発生したイベントが初期要求であると判断した場合（ステップＳ５０２／ＹＥＳ）、ビジネスロジック部１２３固有のアプリケーションＡを構成する全てのウィンドウオブジェクト（ウィンドウオブジェクトＡ−１、ウィンドウオブジェクトＡ−２）及びアプリケーションＡのグローバル変数の初期化を実行する（ステップＳ５０３）。
【００４４】
続いて、プログラム状態保持部１２２２は、初期化されたウィンドウオブジェクトＡ−１、Ａ−２、グローバル変数をＷｅｂセッション１２２７に保管する（ステップＳ５０４）。このときのＷｅｂセッション１２２７におけるデータの保管状態を図７−１に模式的に示す。図７−１の７１１は、Ｗｅｂセッション１２２７内においてアプリケーションＡに対して割り当てられた記憶領域を示す。７１２は、初期化されたウィンドウオブジェクトＡ−１、７１３は、初期化されたウィンドウオブジェクトＡ−２、７１４は、初期化されたグローバル変数を示す。なお、Ｗｅｂセッション１２２７内においてウィンドウオブジェクトＡ−１、Ａ−２は例えばＸＭＬデータで保管される。本実施形態では、ステップＳ５０４において、ビジネスロジック部１２３固有のウィンドウオブジェクトをＷｅｂセッション１２２７内に保管するようにしているが、他の実施形態としてＧＵＩ処理部１２１により生成される汎用化された初期化された状態のウィンドウオブジェクトを保管するように構成してもよい。但し、この汎用化されたウィンドウオブジェクトにはイベント処理関数が含まれないため、イベント処理関数ついてはビジネスロジック部１２３固有のものを初期化してＷｅｂセッション１２２７内に保管する必要がある。
【００４５】
続いて、クライアントＧＵＩコンポーネント偽装部１２２４は、保管されている初期化済みのウィンドウオブジェクトＡ−１（７１２）、Ａ−２（７１３）から、初期要求時にビジネスロジック部１２３の処理対象とされるＧＵＩコンポーネントに対応するＸＭＬデータを取得し、取得したＸＭＬデータをビジネスロジック部１２３と互換性のあるクラスに変換する（ステップＳ５０５）。例えば、初期要求時にビジネスロジック部１２３に要求されるＧＵＩコンポーネントがウィンドウオブジェクトＡ−１のテキストボックス１であり、それがＸＭＬデータで"text1"と定義されている場合、ウィンドウオブジェクトＡ−１の該当する一部のＸＭＬデータ"text1"（図７−１の７１２１）を取得し、それを"textbox1"とクラスを変換してビジネスロジック部１２３が扱える形式にする。
【００４６】
続いて、プログラム状態保持部１２２２は、アプリケーションＡのグローバル変数７１４をＷｅｂセッション１２２７から取得する（ステップＳ５０６）。
【００４７】
続いて、イベント変換部１２２６は、初期要求時に実行すべき全てのイベント処理関数を認識し、ビジネスロジック部１２３から該当するイベント処理関数を順次呼び出し、実行させる（ステップＳ５０７）。これによって、クライアントＧＵＩコンポーネント偽装部１２２４によってクラス変換されたＸＭＬデータにはイベント処理関数による処理結果が反映されることになる。例えば、初期要求時においてイベント処理関数によってテキストボックス１に"0001"が代入される場合には当該ＸＭＬデータに"0001"が反映されることになる。
【００４８】
続いてオブジェクト状態保持部１２２３は、イベント処理関数による処理結果が反映されたＸＭＬデータをＷｅｂセッション１２２７に保管する（ステップＳ５０８）。ここで保管されるＸＭＬデータによって既に保管されている初期化済みのウィンドウオブジェクトＡ−１（ＸＭＬデータ）が更新される。従って、Ｗｅｂセッション１２２７内においては今回のイベント処理を経た現在のウィンドウオブジェクト（ＸＭＬデータ）Ａ−１が保管されることになる。
【００４９】
続いてプログラム状態保持部１２２２は、今回のイベント処理関数の処理結果によって更新されたグローバル変数をＷｅｂセッション１２２７に保管する（ステップＳ５０９）。
【００５０】
続いて複数オブジェクト状態保持部１２２５は、初期要求時のイベント処理によって表示されることとなったウィンドウ、フォーカスの当たる対象となったウィンドウ等、複数ウィンドウの表示状態を示す複数オブジェクト状態情報を必要に応じて生成し、Ｗｅｂセッション１２２７に保管する（ステップＳ５１０）。図７−２は、このときのＷｅｂセッション１２２７内におけるデータの保管状態を模式的に示す図である。図７−２の７１５は、更新されたウィンドウオブジェクトＡ−１、７１５１は、今回のイベント処理関数による処理結果が反映されたＧＵＩコンポーネントに対応するＸＭＬデータ、７１６は、今回のイベント処理関数の処理結果によって更新されたグローバル変数、７１７は、必要に応じて生成された場合に保管される複数オブジェクト状態情報である。
【００５１】
続いてアーキテクチャ変換部１２２は、Ｗｅｂセッション１２２７に保管されるウィンドウオブジェクトＡ−１（７１５）、Ａ−２（７１３）を（複数オブジェクト状態保持部１２２５によって複数オブジェクト状態情報が生成されていれば当該複数オブジェクト状態情報（７１７）も併せて）、ＧＵＩ処理部１２１に渡す（ステップＳ５１１）。
【００５２】
一方、今回発生したイベントが初期要求でないと判断された場合、即ち同一アプリケーションについて２回目以降のイベントを受け付けたと判断された場合（ステップＳ５０１／ＮＯ）、クライアントＧＵＩコンポーネント偽装部１２２４は、Ｗｅｂセッション１２２７に保管されているウィンドウオブジェクトＡ−１、Ａ−２から、今回のイベント処理時にビジネスロジック部１２３の処理対象とされるＧＵＩコンポーネントに対応するＸＭＬデータを取得する。ここでは、今回受け付けたイベントがアプリケーションＡに対する２回目のイベントであり、それに対応するイベント処理において、ビジネスロジック部１２３が処理対象とするＧＵＩコンポーネントに対応するＸＭＬデータが、図７−２の７１５１、７１３１であるものとして動作を具体的に説明する。
【００５３】
次にクライアントＧＵＩコンポーネント偽装部１２２４は、取得したＸＭＬデータ７１５１、７１３１をビジネスロジック部１２３と互換性のあるクラスに変換する（ステップＳ５１２）。
【００５４】
続いてプログラム状態保持部１２２２及び複数オブジェクト状態保持部１２２５は夫々、該当するアプリケーションＡのグローバル変数７１６及び複数オブジェクト状態情報７１７をＷｅｂセッション１２２７から取得する（ステップＳ５１３）。
【００５５】
続いてイベント変換部１２２６は、今回のイベント時に実行すべき全てのイベント処理関数を認識し、ビジネスロジック部１２３から該当するイベント処理関数を順次呼び出し、実行させる（ステップＳ５１４）。これによって、ステップＳ５１２で偽装化されたＸＭＬデータ７１５１、７１３１には今回読み出されたイベント処理関数による処理結果が反映されることになる。例えば、今回のイベント要求に対応して、ウィンドウオブジェクトＡ−１の或るコンポーネントに初期要求時に反映された"0001"がウィンドウオブジェクトＡ−２の或るコンポーネントにコピーされる等の処理が行われた場合、ＸＭＬデータ７１５１は更新されないが、ＸＭＬデータ７１３１は"0001"がコピーされたデータに更新されることになる。
【００５６】
続いてオブジェクト状態保持部１２２３は、イベント処理関数による処理結果が反映されたＸＭＬデータをＷｅｂセッション１２２７に保管する（ステップＳ５０８）。上記の例であれば、ここで保管されるＸＭＬデータによって既に保管されているウィンドウオブジェクトＡ−２が更新される。
【００５７】
続いてプログラム状態保持部１２２２は、今回のイベント処理関数の処理結果によって更新されたグローバル変数をＷｅｂセッション１２２７に保管する（ステップＳ５０９）。
【００５８】
続いて複数オブジェクト状態保持部１２２５は、今回のイベントに対応するイベント処理によって表示されることとなったウィンドウ、フォーカスの当たる対象となったウィンドウ等、複数ウィンドウの表示状態を示す複数オブジェクト状態情報を必要に応じて生成し、Ｗｅｂセッション１２２７に保管する（ステップＳ５１０）。図７−３は、このときのＷｅｂセッション１２２７内におけるデータの保管状態を模式的に示す図である。図７−３の７１８は、更新されたウィンドウオブジェクトＡ−２、７１８１は、今回のイベント処理関数による処理結果が反映されたＧＵＩコンポーネントに対応するＸＭＬデータ、７１９は、今回のイベント処理関数の処理結果によって更新されたグローバル変数、７２０は、必要に応じて生成された場合に保管（更新）されるオブジェクト状態情報である。
【００５９】
続いてアーキテクチャ変換部１２２は、Ｗｅｂセッション１２２７に保管されるウィンドウオブジェクトＡ−１（７１５）、Ａ−２（７１８）を（複数オブジェクト状態保持部によって複数オブジェクト状態情報が生成されていれば当該複数オブジェクト状態情報７２０も併せて）、ＧＵＩ処理部１２１に渡す（ステップＳ５１１）。
【００６０】
図６において、ＸＭＬデコード部１２１３は、アーキテクチャ変換部１２２からＸＭＬデータ（ウィンドウオブジェクト）を受け付けた場合（ステップＳ６０１／ＹＥＳ）、受け付けたＸＭＬデータとＷｅｂ−ＧＵＩ定義体１２１１とに基づいてウィンドウオブジェクト（ＨＴＭＬデータ）Ａ−１、Ａ−２を生成する（ステップＳ６０２）。なお、アーキテクチャ変換部１２２からのＸＭＬデータを受け付けていない間は（ステップＳ６０１／ＮＯ）、ＸＭＬデータを受け付けるまでの待機状態となる。
【００６１】
続いてスクリプト生成部１２１４は、スクリプト言語を生成する必要があるか否かを判断する（ステップＳ６０３）。ＸＭＬデコード部１２１３が複数オブジェクト状態情報とともにＸＭＬデータを受け付けた場合には、当該複数オブジェクト状態情報に基づいてスクリプト言語を生成する必要があると判断し（ステップＳ６０３／ＹＥＳ）、一方、ＸＭＬデコード部１２１３がＸＭＬデータのみを受け付けた場合には、スクリプト言語を生成する必要はないと判断する（ステップＳ６０３／ＮＯ）。
【００６２】
スクリプト生成部１２１４は、ステップＳ６０３においてスクリプト言語を生成する必要があると判断した場合、上記の複数オブジェクト状態情報に基づいてスクリプト言語を生成する（ステップＳ６０４）。一方、ステップＳ６０３においてスクリプト言語を生成する必要がないと判断された場合には、スクリプト言語は生成されない。
【００６３】
例えば、初期要求時のイベント処理により、ウィンドウオブジェクトＡ−１に対応するウィンドウＡ−１のみを表示し、ウィンドウオブジェクトＡ−１に対応するウィンドウＡ−１にフォーカスが当たっている旨の複数オブジェクト状態情報が生成されている場合、ウィンドウＡ−１のみを表示させ、且つウィンドウＡ−１にフォーカスが当たっているようにＷｅｂブラウザ１１１に表示させるためのスクリプト言語が生成される。
【００６４】
また例えば２回目以降の処理により、ウィンドウＡ−１、ウィンドウＡ−２を表示し、ウィンドウＡ−２にフォーカスが当たっている旨のオブジェクト状態情報が生成されている場合、ウィンドウＡ−１、ウィンドウＡ−２をともに表示させ、且つウィンドウＡ−２にフォーカスが当たっているようにＷｅｂブラウザ１１１上で動作させるスクリプト言語が生成される。
【００６５】
続いて、ＧＵＩ処理部１２１は、スクリプト言語が生成された場合には、そのスクリプト言語とともにＧＵＩ処理部１２１に実装されるプロダクトのアーキテクチャ依存のウィンドウオブジェクト（ＨＴＭＬデータ）をクライアントＰＣ１１に対して送信し、スクリプト言語が生成されなかった場合には、ウィンドウオブジェクト（ＨＴＭＬデータ）のみをクライアントＰＣ１１に対して送信する（ステップＳ６０５）。
【００６６】
クライアントＰＣ１１側では、Ｗｅｂサーバ１２から受信するウィンドウオブジェクトＡ−１、Ａ−２に基づいてＷｅｂブラウザ１１１によりウィンドウＡ−１、Ａ−２を表示させる。スクリプト言語も受信した場合には、Ｗｅｂブラウザ１１１はスクリプト言語に基づいてウィンドウＡ−１、Ａ−２を表示させる。
【００６７】
なお、図７−１乃至図７−３では、アプリケーションＡに対して割り当てられた記憶領域でのデータの保管状態のみを示しているが、Ｗｅｂセッション１２２７が複数のアプリケーションに対応した記録領域を備え得ることは勿論である。また、上述したアプリケーション全体が終了する契機には、当該アプリケーションについて各保持部１２２２、１２２３、１２２５がＷｅｂセッション１２２７に保管したデータは消去される。
【００６８】
以上のように本実施形態では、アプリケーションＡに該当するイベント要求情報に応じたイベント処理を実行した後、アプリケーションＡに含まれるべきウィンドウオブジェクト及びグローバル変数の状態を保持し、アプリケーションＡについて更にイベント要求情報を受信すると、保持したウィンドウオブジェクト及びグローバル変数を用いて対応するイベント処理を行い、またイベント処理後のウィンドウオブジェクトを外部装置に対して送信するように構成している。従って、従来のクライアント・アプリケーションのプログラム状態保持機能に対応する機能を果たせることができ、従来のクライアント・アプリケーションで提供されていたＧＵＩアプリケーション機能をＷｅｂアプリケーションで実現することが可能となる。
【００６９】
また本実施形態では、ウィンドウオブジェクトの表示状態を示すオブジェクト状態情報に基づいてスクリプト言語を生成し、ウィンドウオブジェクトとともにクライアントＰＣ１１に送信するように構成している。従って、スクリプト言語によってＷｅｂブラウザ１１１上においてウィンドウの表示・非表示、ウィンドウのフォーカス等の動作を行わせることが可能となる。
【００７０】
さらに本実施形態では、イベント処理に対応するウィンドウオブジェクトの部分を、従来のクライアント・アプリケーションに含まれるイベント処理関数が実行し得るデータに変換するように構成している。従って、従来から提供されていたクライアント・アプリケーションのビジネスロジックを、その構造を変えることなくＷｅｂサーバ１２のビジネスロジック部１２３に利用することが可能となる。
【００７１】
なお、上記ではウィンドウオブジェクトＡ−１の或るＧＵＩコンポーネントからウィンドウオブジェクトＡ−２の或るＧＵＩコンポーネントに対して"0001"のデータをコピーするイベント処理のみを例に挙げているが、本実施形態で処理し得るイベント処理はこれに限られない。即ち、一般的なＧＵＩアプリケーションで処理し得るイベント処理（例えば、複数の項目を選択するためのチェックボックス、機能の実行や処理の確認等に用いるボタン、及び、複数の項目から１項目だけを選択するときに使用するラジオボタン等の操作に対応するイベント処理等）を実行可能であることは勿論である。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施形態に係るＷｅｂアプリケーションシステムの構成を概略的に示す図である。
【図２】Ｗｅｂサーバのハードウェア構成を示す図である。
【図３】Ｗｅｂサーバの機能構成を示す図である。
【図４】ＧＵＩ処理部の処理動作を示すフローチャートである。
【図５】アーキテクチャ変換部の動作を示すフローチャートである。
【図６】ＧＵＩ処理部の処理動作を示すフローチャートである。
【図７−１】Ｗｅｂセッションにおけるデータの保管状態を模式的に示す図である。
【図７−２】Ｗｅｂセッションにおけるデータの保管状態を模式的に示す図である。
【図７−３】Ｗｅｂセッションにおけるデータの保管状態を模式的に示す図である。
【符号の説明】
【００７３】
１１：クライアントＰＣ
１１１：Ｗｅｂブラウザ
１２：Ｗｅｂサーバ
１２１：ＧＵＩ処理部
１２２：アーキテクチャ変換部
１２３：ビジネスロジック部
２０１：ＣＰＵ
２０２：ＲＡＭ
２０３：ＲＯＭ
２０５：通信Ｉ／Ｆコントローラ
２０６：メモリコントローラ
２０７：外部メモリ
１２１１：Ｗｅｂ−ＧＵＩ定義体
１２１２：ＸＭＬコード部
１２１３：ＸＭＬデコード部
１２１４：スクリプト生成部
１２２１：アプリケーション・ライフサイクル管理部
１２２２：プログラム状態保持部
１２２３：オブジェクト状態保持部
１２２４：クライアントＧＵＩコンポーネント偽装部
１２２５：複数オブジェクト状態保持部
１２２６：イベント変換部
１２２７：Ｗｅｂセッション
【図１】
2007122691.tif 000003
【図２】
2007122691.tif 000004
【図３】
2007122691.tif 000005
【図４】
2007122691.tif 000006
【図５】
2007122691.tif 000007
【図６】
2007122691.tif 000008
【図７−１】
2007122691.tif 000009
【図７−２】
2007122691.tif 000010
【図７−３】
2007122691.tif 000011