(57)【要約】【課題】サーバ側の処理において処理の分岐が起こった際に、ユーザの指示に従った処理をサーバにおいて行うことが可能な仕組みを提供すること。【解決手段】外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信し、前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付け、受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する。【選択図】図３
2012008735.tif 000002
【特許請求の範囲】
【請求項１】
外部サーバと通信可能な情報処理装置であって、
前記外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信する受信手段と、
前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付ける受付手段と、
前記受付手段により受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する送信手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
外部サーバと通信可能な情報処理装置における情報処理方法であって、
受信手段が、前記外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信する受信ステップと、
受付手段が、前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付ける受付ステップと、
送信手段が、前記受付ステップにより受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する送信ステップとを備えることを特徴とする情報処理方法。
【請求項３】
外部サーバと通信可能な情報処理装置において実行されるプログラムであって、
前記情報処理装置を
前記外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信する受信手段と、
前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付ける受付手段と、
前記受付手段により受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する送信手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント端末とサーバとの通信に関するものである。
【背景技術】
【０００２】
近年、インターネットとＰＣの普及、およびＷｅｂブラウザ上で複雑な処理の実行を可能とするアーキテクチャの実用化により、場所や時間の制約なく利用でき特別なソフトウェアのインストールが不要なＷｅｂブラウザ型アプリケーションの利用が広がっている。
【０００３】
Ｗｅｂブラウザ型アプリケーションが登場した当初はブラウザ側では簡単な処理すら実行することは出来なかったが、Ｆｌａｓｈ（登録商標）やＡｊａｘ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｊａｖａｓｃｒｉｐｔ（登録商標）＋ＸＭＬ）の登場により、現在では複雑な処理であってもブラウザ上で実行したいという要望に応えるアーキテクチャが考案されている。
【０００４】
しかしながら、一般的にＷｅｂブラウザ側処理で実行する複雑な処理といえば即時性が要求される画面部品（例えばグラフやチャート）の書き替えのことを指すことが多く、サーバ側処理の制御に介入することまでは考えられていない。
【０００５】
サーバ側処理を制御するには、まず、サーバ側処理の状況を監視する必要がある。特許文献１によればブラウザ側処理からサーバ側処理の状況を監視する技術としてポーリングを利用した技術が開示されている。
【０００６】
また、サーバ側処理の状況を通知する技術として、サーバ側処理にて任意のタイミングでサーバ側からクライアント側にイベントを通知するサーバプッシュ技術が特許文献２で開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−３０８２９５号公報
【特許文献２】特開２００９−１４６４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ポーリングによる問い合わせは、問い合わせのタイミングがサーバ側処理で分岐が発生したタイミングと一致しなければタイムラグが発生することになり、サーバ側処理で分岐が発生したことを即座に認識することはできない。また、サーバ側処理で分岐が起こっていない場合のポーリングはその行為自体が無駄となる。
【０００９】
また、特許文献２においてはブラウザ上の画面部品が必要とするデータの変化をサーバ側からブラウザ上の画面部品に通知する手段としてサーバプッシュを利用するに留まり、サーバ側処理で処理の分岐が発生したことをブラウザ側に通知し、ブラウザ側からの指示に応じて処理を行うことまでは考えられていない。
【００１０】
そこで、本発明の目的は、サーバ側の処理において処理の分岐が起こった際に、ユーザの指示に従った処理をサーバにおいて行うことが可能な仕組みを提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、外部サーバと通信可能な情報処理装置であって、前記外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信する受信手段と、前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付ける受付手段と、前記受付手段により受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する送信手段と、を備えることを特徴とする。
【００１２】
また本発明は、外部サーバと通信可能な情報処理装置における情報処理方法であって、受信手段が、前記外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信する受信ステップと、受付手段が、前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付ける受付ステップと、送信手段が、前記受付ステップにより受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する送信ステップとを備えることを特徴とする。
【００１３】
また本発明は、外部サーバと通信可能な情報処理装置において実行されるプログラムであって、前記情報処理装置を前記外部サーバから送信される、該外部サーバにおいて分岐処理が発生した旨の通知を受信する受信手段と、前記外部サーバにおいて発生した分岐処理に対するユーザの指示を受け付ける受付手段と、前記受付手段により受け付けた前記ユーザの指示を、前記分岐処理が発生した前記外部サーバに送信する送信手段として機能させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、サーバ側の処理において処理の分岐が起こった際に、ユーザの指示に従った処理をサーバにおいて行うことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例における情報処理システムの構成を示す図である。
【図２】クライアントＰＣ１０７、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３の基本構成を示すブロック図である。
【図３】クライアントＰＣ１０７、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３の機能構成を示す図である。
【図４】本実施例における画面を、クライアントＰＣ１０７が備えるディスプレイ装置に表示させる処理のうち、クライアントＰＣ１０７が行う処理を示したフローチャートである。
【図５】本実施例における画面を、クライアントＰＣ１０７が備えるディスプレイ装置に表示させる処理のうち、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３が行う処理を示したフローチャートである。
【図６】ユーザによるサーバ上のデータの編集にかかる処理において、クライアント側の処理を示すフローチャートである。
【図７】ユーザによるサーバ上のデータの編集にかかる処理において、サーバ側の処理を示すフローチャートである。
【図８】本発明の実施例における処理の具体例を示す図である。
【図９】本発明の実施例におけるテーブル編集に利用するＪＳＯＮデータの書式を示す図である。
【図１０】本発明の実施例におけるテーブル更新に利用するＪＡＳＯＮデータの記述例を示す図である。
【図１１】本発明の実施例におけるテーブル更新を依頼するＨＴＴＰリクエストのボディ部の記述例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明を適用した好適な実施例を、添付図面を参照しながら詳細に説明する。
【００１７】
図１は、実施例におけるＷｅｂアプリケーションを実現するシステム構成の一例を示す図である。
【００１８】
１０１はＷｅｂサーバであって、クライアントＰＣ１０７の要求に応じて、蓄積しているＨＴＭＬ文書や画像等の表示を返すサービスが稼動する。
【００１９】
１０２はアプリケーションサーバであって、分岐処理を含むサーバ側処理はここで実行される。
【００２０】
１０３はデータベースサーバであって、アプリケーションで永続化すべきデータを記憶している。
【００２１】
１０４はＷｅｂサーバ１０１とアプリケーションサーバ１０２とを相互にデータ通信可能に接続するためのネットワークである。
【００２２】
１０５はアプリケーションサーバ１０２とデータベースサーバ１０３とを相互にデータ通信可能に接続するためのネットワークである。
【００２３】
１０６はＷｅｂサーバ１０１とクライアントＰＣ１０７−１、１０７−２、…、１０７−Ｎとを相互にデータ通信可能に接続するためのネットワークである
【００２４】
なお、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２及びデータベースサーバ１０３はネットワーク上に分散していても、分散していなくても、どちらの構成であっても構わない。
【００２５】
１０７−１、１０７−２、…、１０７−Ｎは同じＷｅｂアプリケーションを使用するクライアントＰＣである。
【００２６】
次に、図２を用いて、図１に示したＷｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３、クライアントＰＣ１０７のハードウェア構成について説明する。
【００２７】
図２は、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３、クライアントＰＣ１０７に適用可能な情報処理装置のハードウェア構成例を示すブロック図である。ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２８】
図２に示すように、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３、クライアントＰＣ１０７は、システムバス２０４を介してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２、入力コントローラ２０５、ビデオコントローラ２０６、メモリコントローラ２０７、通信Ｉ／Ｆコントローラ２０８等が接続された構成を採る。ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２９】
また、ＲＯＭ２０２あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（ＢＡＳＩＣ  ＩＮＰＵＴ  ／  ＯＵＴＰＵＴ  ＳＹＳＴＥＭ）やオペレーティングシステムプログラム（以下、ＯＳ）や、各コンピュータが実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。また、本発明を実施するために必要な情報が外部メモリ２１１に記憶されている。なお外部メモリ２１１はデータベースであってもよい。
【００３０】
ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０３にロードして、ロードしたプログラムを実行することで各種動作を実現するものである。
【００３１】
また、入力コントローラ（入力Ｃ）２０５は、入力装置２０９からの入力を制御する。なお、入力装置は、マウス等のポインティングデバイスでもキーボードでもいずれの入力装置であってもよい。
【００３２】
ビデオコントローラ（ＶＣ）２０６は、ディスプレイ２１０等の表示器への表示を制御する。なお、表示器は液晶ディスプレイでもＣＲＴディスプレイでもいずれの表示器でも構わない。これらは必要に応じてユーザが使用するものである。
【００３３】
メモリコントローラ（ＭＣ）２０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）等の外部メモリ２１１へのアクセスを制御する。
【００３４】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）２０８は、ネットワーク（例えば、図１に示したＬＡＮ１０４）を介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。
【００３５】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ２１０上での表示を可能としている。また、ＣＰＵ２０１は、ディスプレイ２１０上に各種操作画面およびマウスカーソル等（不図示）を表示しユーザ指示を可能とする。
【００３６】
なお、後述する各処理を実現するためのプログラムは、例えば外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０３にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイルおよび各種情報テーブル等も、外部メモリ２１１に格納されており、これらについての詳細な説明についても後述する。
【００３７】
次に、図３を用いて本実施例における、クライアントＰＣ１０７、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３の機能構成を説明する。
【００３８】
１０は、マイクロソフト社のインターネットエクスプローラのようなＷｅｂブラウザである。Ｗｅｂブラウザ１０のプログラムはクライアントＰＣ１０７が備える記憶領域に記憶されている。
【００３９】
２０は、Ｗｅｂブラウザ１０の外観を表す領域であり、主にＵＲＬ入力欄２１、メニューバー２２、ツールバー２３及び画面表示部２４から構成されている。ＵＲＬとは、インターネット上のリソース（資源）を特定するための形式的な記号の並びであり、ＷＷＷをはじめとするインターネットアプリケーションにおいて提供されるリソースを、主にその所在を表記することで特定する。なお、リソースとは（主にインターネット上の）データやサービスを指す。
【００４０】
本実施例ではＷｅｂブラウザ１０とＷｅｂサーバ１０１間の通信はＨＴＴＰという通信規約を使用するものとする。Ｗｅｂブラウザ１０が備えるＵＲＬ入力欄２１には「ｈｔｔｐ：／／ホスト名：ポート番号／ファイル名」という書式で指定する。ここで、Ｗｅｂサーバが稼動するホストのホスト名が解決されない場合はホスト名の代わりにホストのＩＰアドレスを指定してもかまわない。また、ポート番号とはＷｅｂサーバ１０１のプロセスが利用しているポートを指す。
【００４１】
ツールバー２３にはユーザが頻繁に使用する機能を起動するボタンが配置されている。ブラウザの操作はメニューバー上のメニュー項目やツールバー上のボタンを介して行う。画面表示部２４にはインターネットアプリケーションの画面が表示される。
【００４２】
画面表示部２４は、ＪａｖａＳｃｒｉｐｔにより実装された画面部品パネル２５を持ち、さらにそのパネルはデータベースサーバのテーブルを編集するグリッド部品２６、グリッド部品の編集結果をデータベースに保存を命ずる更新ボタン２７、等のＪａｖａＳｃｒｉｐｔにより実装された画面部品を持つ構成となっている。さらに、グリッド部品２６や更新ボタン２７はＷｅｂサーバのプログラム１０１−１と非同期通信を行う非同期通信処理部３１を備えている。
【００４３】
非同期通信処理部３１の構成について説明する。非同期通信処理部３１は送信部３２と受信部３３より構成されている。画面部品は送信部３１にてＪａｖａＳｃｒｉｐｔのクラスライブラリである「ＸＭＬＨｔｔｐＲｅｑｕｅｓｔ」というクラスを使用することで画面部品からＷｅｂサーバ１０１に非同期通信でＨｔｔｐリクエストを送ることが出来る。非同期通信で送信したＨｔｔｐリクエストのレスポンスは受信部３３で受け取る。
【００４４】
グリッド部品２６及び更新ボタン２７が備える非同期通信処理部３１の利用目的について説明する。グリッド部品２６が非同期通信６０、６１を利用する目的は、画面全体の更新ではなくグリッド部品の単位で書き替えを行うことにより画面全体の更新が引き起こすちらつきを防ぐためである。更新ボタン２７が非同期通信６０、６１を利用する目的は、画面のちらつきを防ぐためだけではなく、サーバ側処理プログラム１０２−４が行うサーバプッシュを非同期通信が提供する非同期通信６１によるコールバック機能により実現するためである。
【００４５】
ダイアログ４０はその外観に分岐先を選択するボタン４１、４２等を備え、その内部にはサーバ側ソケット１０２−４−１と通信するクライアントソケット４３を備える。なお、ダイアログ起動スクリプト３４、ダイアログ４０及びクライアントソケット４３は、更新ボタン２７と一緒にＷｅｂブラウザに取り込まれる。
【００４６】
３０はＪａｖａＳｃｒｉｐｔ言語実行エンジンであって、Ｗｅｂブラウザの内部に組み込まれている。
【００４７】
１０１−１はオープンソースソフトウェアのＡｐａｃｈｅやマイクロソフト社のＩＩＳ（Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｅｒ）のようなＷｅｂサーバのプログラムである。ＷｅｂサーバのプログラムはＷｅｂサーバ１０１の記憶領域に記憶されている。なお、Ｗｅｂサーバ１０１のプログラムは記憶領域に記憶されているＷｅｂサーバ１０１の設定ファイルの内容に従って動作する。Ｗｅｂサーバ１０１のプログラム１０１−１はＷｅｂブラウザ１０から送信されてくるＵＲＬを解析し、Ｗｅｂサーバ１０１のＨＤＤに記憶しているファイルを要求元Ｗｅｂブラウザ１０に送信するか、受信したリクエストをアプリケーションサーバ１０２に転送するかを判断する。本実施例においてはこの判断をファイル名の拡張子の種類より判断している。具体的にはＨｔｔｐリクエストに含まれるファイル名の拡張子が「ｄｏ」の場合はサービスと判断し、それ以外の拡張子ではファイルの要求と判断するよう設定した。
【００４８】
なお、本実施例におけるＷｅｂサーバ１０１の記憶領域は、ＨＴＭＬにより記述されている画面の雛形１０１−２やＪａｖａＳｃｒｉｐｔにより実装された画面部品１０１−３及びその画面部品が利用するＪａｖａＳｃｒｉｐｔクラスライブラリ１０１−４をファイル形式で記憶している。ＨＴＭＬにより記述されている標準画面の雛形データは拡張子がｈｔｍｌのファイルに、ＪａｖａＳｃｒｉｐｔにより実装された画面部品やＪａｖａＳｃｒｉｐｔクラスライブラリは拡張子がｊｓのファイルに記憶されている。
【００４９】
Ｗｅｂサーバのプログラム１０１−１は、要求元Ｗｅｂブラウザがファイルを要求していると判断した場合、ＵＲＬのファイル名をもとに記憶領域を検索し、見つけたファイルを要求元Ｗｅｂブラウザに送信する。
【００５０】
Ｗｅｂサーバのプログラム１０１−１は、要求元がサービスの実行を要求していると判断した場合、Ｗｅｂサーバ１０１のＣＰＵは受信したリクエストをアプリケーションサーバ１０２上で稼動するＷｅｂアプリケーションサーバのプログラム１０２−１に転送する。
【００５１】
１０２−１は、Ｗｅｂアプリケーションサーバのプログラムであり、アプリケーションサーバ１０２の記憶領域に記憶され、アプリケーションサーバ１０２のＣＰＵ２０１により記憶領域からＲＡＭ２０３にロードされ、実行される。
【００５２】
１０２−１は、サービスプログラムコンテナ（１０２−２）を持ち、このサービスプログラムコンテナ上でアプリケーションを構成する各種のサービスプログラム（１０２−３、１０２−４、…）が稼動する。
【００５３】
１０２−３は、ユーザのＨｔｔｐリクエストに含まれるサービス名からサービスプログラムを特定するアプリケーションプログラムである。
【００５４】
サービスプログラム（１０２−４、１０２−５、…）とはアプリケーションの機能を実現する各種のプログラムのことである。このプログラムで分岐判断をユーザに問い合わせる必要が生じたときは非同期通信のコールバック関数を利用してユーザに通知する。この分岐が発生したときサービスプログラムはサーバソケット１０２−４−１を生成する。
【００５５】
１０２−４−１はサーバソケットであって、ダイアログ４０が持つクライアントソケット４３からの接続要求に応じ、通信経路を確立する。このサーバソケットはユーザがダイアログにて選択した分岐条件を受信し、受信した値をサービスプログラムに戻す役割を担う。サーバ側処理プログラム１０２−４はサーバソケットより渡された値に基づき処理を分岐する。
【００５６】
１０３−１は、データベースサーバのプログラムであり、データベースサーバ１０３の記憶領域に記憶されている。
【００５７】
以上が本実施例における、クライアントＰＣ１０７、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３の機能構成についての説明である。
【００５８】
図４は、本実施例における画面を、クライアントＰＣ１０７が備えるディスプレイ装置に表示させる処理のうち、クライアントＰＣ１０７が行う処理を示したフローチャートである。
【００５９】
なお、実施例を説明する画面は例えばマイクロソフト社のＥｘｃｅｌライクな操作が出来るグリッド部品やサーバソケットと通信機能やサーバソケットに対する命令を受け付けるダイアログを備えているものとする。また、ユーザはこのグリッド部品を利用してデータベースサーバのテーブルで管理しているデータを編集することが可能である。
【００６０】
なお、Ｗｅｂブラウザ１０のプログラムはクライアントＰＣ１０７が備える記憶領域に記憶されている。ユーザからのＷｅｂブラウザ１０のプログラムの起動命令がＣＰＵ２０１に通知されると、ＣＰＵ２０１はＷｅｂブラウザ１０のプログラムを記憶領域よりＲＡＭ２０３にロードし、実行する。
【００６１】
ステップＳ４０１では、クライアントＰＣ１０７のＣＰＵ２０１は、Ｗｅｂブラウザ１０が備えるＵＲＬ入力欄２１に対するユーザからの入力を受け付ける。なお、本実施例では、ＵＲＬ入力欄２１にＷｅｂサーバ１０１に対してアプリケーションの画面をリクエストするデータの入力が行われたとする。クライアントＰＣ１０７のＣＰＵ２０１はＳ１０１で受け付けたデータをＲＡＭ２０３に記憶するとともにＵＲＬ入力欄２１の表示内容をユーザが入力したデータに変更する。
【００６２】
例えば、ユーザにより入力欄２１に入力されたＵＲＬが「ｈｔｔｐ：／／ｓｅｒｖｅｒｈｏｓｔ：８０８０／ＧｅｔＧｒｉｄＥｄｉｔｏｒ．ｈｔｍｌ」である場合は、ＨＴＴＰリクエストを送信するＷｅｂサーバのホスト名が「ｓｅｒｖｅｒｈｏｓｔ」、ポート番号が「８０８０」、ファイル名が「ＧｅｔＧｒｉｄＥｄｉｔｏｒ．ｈｔｍｌ」となる。
【００６３】
ステップＳ４０２では、クライアントＰＣ１０７のＣＰＵは、ユーザによりＷｅｂブラウザ１０が備えるツールバー２３の送信ボタン（不図示）が押下されると、ＣＰＵ２０１はＲＡＭ２０３よりＷｅｂブラウザ１０が備えるＵＲＬ入力欄２１に入力されたＵＲＬデータを取り出し、そのＵＲＬデータをＷｅｂサーバ１０１に同期通信５０を利用して送信する。
【００６４】
なお、ＣＰＵ２０１がＷｅｂサーバ１０１にサービスをリクエストする場合にはＨＴＴＰプロトコルのＰＯＳＴメソッドを利用し、リソースの取得をしたい場合にはＧＥＴメソッドを使用する。本実施例では、Ｓ４０１においてＧｅｔＧｒｉｄＥｄｉｔｏｒ．ｈｔｍｌというＨＴＭＬファイルの取得を要求しているのでＧＥＴメソッドが使われることとなる。
【００６５】
ステップＳ４０３では、クライアントＰＣ１０７のＣＰＵ２０１は、Ｗｅｂサーバ１０１からのレスポンスデータを受信する。そして、クライアントＰＣ１０７のＣＰＵ２０１はＷｅｂサーバ１０１からのレスポンスデータを同期通信５１を利用して受信するとそのレスポンスデータをＲＡＭ２０３に記憶する。
【００６６】
本実施例におけるレスポンスデータは、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で書かれている。ＨＴＭＬは文書の論理構造や外観の見栄えなどを記述するために使用され、文書の中に画像や音声、動画、スクリプトなどをＷｅｂサーバにリクエストする命令や他の文書へのハイパーリンクなどを埋め込むことができる。また、本実施例におけるスクリプトとは特に断りがない限りＪａｖａＳｃｒｉｐｔのことを指す。
【００６７】
このレスポンスデータには例えばマイクロソフト社のＥｘｃｅｌライクな操作が出来るグリッド部品２６や、編集確定をＷｅｂサーバ１０１に通知する更新ボタン２７を実装したスクリプトや、そのスクリプトが使用するクラスライブラリをＷｅｂサーバ１０１に要求する命令が記述されている。なお、Ｗｅｂサーバの間で非同期通信を行うスクリプト３１、サーバソケットと通信するクライアントソケット４３及びクライアントソケットに命令を送るダイアログ４０については、画面部品を実装したスクリプトをＷｅｂブラウザ１０に取り込む際に一緒に取り込まれる。
【００６８】
ステップＳ４０４では、クライアントＰＣ１０７のＣＰＵ２０１はＲＡＭ２０３よりＷｅｂブラウザ１０が受信したレスポンスデータを読み出し、解釈をする。
【００６９】
ステップＳ４０５では、ＣＰＵ２０１はそのレスポンスデータであるＨＴＭＬの内容を解釈しながらＷｅｂブラウザ１０にて画面を構築する。
【００７０】
ステップＳ４０６では、ＣＰＵ２０１はステップＳ４０３で受信したレスポンスデータ中に未処理のＷｅｂサーバ１０１へのリクエスト命令が含まれているか否かを判断する。
【００７１】
ステップＳ４０６で未処理のリクエスト命令が含まれていると判断した場合（Ｓ４０６：Ｙｅｓ）は、処理をステップＳ４０２に移行し、ＣＰＵ２０１はその命令をリクエストとしてＷｅｂサーバ１０１に送信する。
【００７２】
他方、レスポンスデータに未処理の命令が存在しないと判断した場合（Ｓ４０６：Ｎｏ）、ＣＰＵ２０１は本フローチャートにおける画面構築処理を終了する。
【００７３】
図５は、本実施例における画面を、クライアントＰＣ１０７が備えるディスプレイ装置に表示させる処理のうち、Ｗｅｂサーバ１０１、アプリケーションサーバ１０２、データベースサーバ１０３が行う処理を示したフローチャートである。
【００７４】
なお、Ｗｅｂサーバ１０１のプログラムはＷｅｂサーバ１０１の記憶領域に記憶され、必要に応じＲＡＭ２０３にロードされ、ＣＰＵ２０１によって実行される。
【００７５】
ステップＳ５０１では、Ｗｅｂサーバ１０１のＣＰＵ２０１はクライアントＰＣ１０７から送信されるリクエストを受信する。
【００７６】
そして、ステップＳ５０２では、Ｗｅｂサーバ１０１のＣＰＵ２０１は受信したリクエストデータをＲＡＭ２０３に記憶し、当該リクエストデータの解析を行う。
【００７７】
ステップＳ５０３では、当該リクエストがファイルの要求なのかサービス実行の要求なのかを判断する。なお、Ｗｅｂサーバ１０１のＣＰＵ２０１がステップＳ５０３の判断において用いる規則については、あらかじめＷｅｂサーバ１０１が備える記憶領域にファイル形式で記憶してあるものとする。そして、ＣＰＵ２０１はこの設定ファイルを記憶領域よりＲＡＭ２０３にロードし、リクエストデータがファイルの要求なのかサービス実行の要求なのかを判断する際に参照する。なお、本実施例では、リクエストのファイル名の拡張子が「ｄｏ」の場合はサービス実行の要求であると判断するようファイルに定義したものとする。他方、リクエストのファイル名の拡張子が「ｈｔｍｌ」や「ｊｓ」などで指定されている場合は、ファイルの要求であると判断する。
【００７８】
ステップＳ５０３において、リクエストがファイルの要求であると判断すると（ステップＳ５０３：ＮＯ）、ファイル名に従い記憶領域より当該要求されたファイルを取得し、その内容のデータをＲＡＭ２０３に記憶する（Ｓ５０４）。
【００７９】
ステップＳ５０５では、Ｗｅｂサーバ１０１のＣＰＵ２０１はＲＡＭ２０３よりファイルの内容のデータを読み込み、レスポンスデータを作る。
【００８０】
そして、Ｗｅｂサーバ１０１のＣＰＵ２０１はリクエスト元のブラウザに対してレスポンスデータを送信する（Ｓ５１２）。
【００８１】
従って、Ｗｅｂサーバ１０１のＣＰＵが受信したリクエストがｈｔｔｐ：／／ｓｅｒｖｅｒｈｏｓｔ：８０８０／ＧｅｔＧｒｉｄＥｄｉｔｏｒ．ｈｔｍｌだとすると、Ｗｅｂサーバ１０１のＣＰＵ２０１は記憶領域よりＧｅｔＧｒｉｄＥｄｉｔｏｒ．ｈｔｍｌを取得し、レスポンスデータとしてリクエスト元のクライアントＰＣ１０７に送信する（Ｓ５１２）。
【００８２】
Ｗｅｂサーバ１０１のＣＰＵ２０１が受信したリクエストに含まれるファイル名の拡張子より、当該リクエストがサービス実行の要求であると判断した場合（Ｓ５０３：Ｙｅｓ）には、Ｗｅｂサーバ１０１のＣＰＵ２０１は処理をステップＳ５０６に移行し、ＲＡＭ２０３より取り出したリクエストをＷｅｂアプリケーションサーバ１０２に転送する。
【００８３】
すなわち、Ｗｅｂサーバ１０１のＣＰＵが受信したリクエストがｈｔｔｐ：／／ｓｅｒｖｅｒｈｏｓｔ：８０８０／ＧｅｔＧｒｉｄＤａｔａＡｃｔｉｏｎ．ｄｏだとすると、Ｗｅｂサーバ１０１のＣＰＵは受け取ったリクエストをアプリケーションサーバ１０２に転送する（Ｓ５０６）。
【００８４】
アプリケーションサーバのプログラムはアプリケーションサーバ１０２の記憶領域に記憶され、必要に応じてＲＡＭ２０３にロードされ、ＣＰＵ２０１によって実行される。
【００８５】
ステップＳ５０７では、アプリケーションサーバ１０２は、ステップＳ５０６でＷｅｂサーバ１０１から転送されたリクエストを受信する。
【００８６】
そして、ステップＳ５０８では、ステップＳ５０７で受信したリクエストに従い実行すべきサービスプログラムを特定する。
【００８７】
具体的には、アプリケーションサーバ１０２の記憶領域にはサービス名から処理プログラムを特定し実行するプログラムが記憶されてあり、また、アプリケーションサーバ１０２の記憶領域にはサービス名と処理プログラムの関係が定義されているファイルが存在している。アプリケーションサーバ１０２のＣＰＵ２０１はリクエストの解析より得たサービス名に従い、記憶領域に記憶されているプログラムから実行すべきサービスプログラムを特定する。
【００８８】
ＣＰＵ２０１は特定されたサービスプログラムを記憶領域からＲＡＭ２０３に読み込み、ＣＰＵ２０１は当該サービスプログラムを実行する（ステップＳ５０９）。
【００８９】
本実施例においては、サービスプログラムの名称がＧｅｔＧｒｉｄＤａｔａＡｃｔｉｏｎとしたので、アプリケーションサーバ１０２のＣＰＵ２０１はこの名称をもとに検索し、対応するサービスプログラムを特定し実行する。なお、ＧｅｔＧｒｉｄＤａｔａＡｃｔｉｏｎと対応するプログラムはデータベースサーバ１０３のテーブルデータを参照し、その参照結果をレスポンスデータに埋め込みＲＡＭ２０３に記憶する
【００９０】
このとき、サービスプログラムはその参照データを一意に特定するキーと最終更新日時の組を同時にＲＡＭに記憶する。参照データを一意に特定するキーと最終更新日時の組をＲＡＭに記憶する理由は、後にＲＡＭに記憶した更新日時とデータベースサーバ上の更新日時を比較し、異なっていればデータが編集されていると判断できるからである。
【００９１】
そして、ステップＳ５１１では、アプリケーションサーバ１０２のＣＰＵ２０１はＲＡＭ２０３よりレスポンスデータを取り出し、Ｗｅｂサーバ１０１に送信する。
【００９２】
ステップＳ５１２では、Ｗｅｂサーバ１０１のＣＰＵ２０１は、ステップＳ５０５で作成したレスポンスデータまたはステップＳ５１１でアプリケーションサーバ１０２から受信したレスポンスデータをＷｅｂブラウザ１０に送信する。
【００９３】
次に、図６および図７を用いてユーザによるサーバ上のデータ編集に係る処理について説明する。
【００９４】
図６は、ユーザによるサーバ上のデータの編集にかかる処理において、クライアント側の処理を示すフローチャートである。
【００９５】
ステップＳ６０１では、クライアントＰＣ１０７のＣＰＵ２０１は、Ｗｅｂブラウザ１０に表示されるＷｅｂアプリケーションの画面が備えるグリッド部品内のセルに対してユーザにより入力されるデータを受け付ける。
【００９６】
そして、クライアントＰＣ１０７のＣＰＵ２０１はＳ３０１でセルが受け付けたデータをＲＡＭ２０３に記憶するとともに画面上のセルの表示内容をユーザが入力したデータに変更する。
【００９７】
クライアントＰＣ１０７のＣＰＵ２０１は、ユーザによるアプリケーションの画面が備える更新ボタン２７に対する押下を検知すると（Ｓ６０２）、ＣＰＵ２０１はグリッド部品内で編集されたセルの値をデータベースサーバ１０３のテーブルに保存するための処理を開始する（ステップＳ６０３）。
【００９８】
まず、ＣＰＵ２０１はグリッド部品内で編集された値のみを集める。次に、ＣＰＵは編集された値を非同期通信６０でＷｅｂサーバ１０１に送信するためにＨＴＴＰリクエストＵＲＬを組み立てＲＡＭに保管する（Ｓ６０３）。
この場合のＨＴＴＰリクエストＵＲＬは下記の通りとなる。
【００９９】
ｈｔｔｐ：／／ｓｅｒｖｅｒｈｏｓｔ：８０８０／ＥｄｉｔＧｒｉｄＤａｔａＡｃｔｉｏｎ．ｄｏ？ｄａｔａ＝図１０のデータ
【０１００】
つまり、Ｗｅｂサーバ１０１のホスト名はｓｅｒｖｅｒｈｏｓｔ、ポート番号は８０８０、サービス名はＥｄｉｔＧｒｉｄＤａｔａＡｃｔｉｏｎ．ｄｏ、サービスプログラムに引き渡す引数は「図１０のデータ」ということである。サービスプログラムに渡される引数はｋｅｙ＝ｖａｌｕｅ  のような組で記述する。なお、送信したい組が複数個ある場合にはｋｅｙ１＝ｖａｌｕｅ１＆ｋｅｙ２＝ｖａｌｕｅ２＆…ｋｅｙＮ＝ｖａｌｕｅＮのように＆で区切る。また、ＵＲＬの中で出現する「？」はサービス名と引数の区切り文字である。
【０１０１】
本実施例において、テーブルを更新するデータはＪＳＯＮ（ＪａｖａＳｃｒｉｐｔＯｂｊｅｃｔＮｏｔａｔｉｏｎ）という構造化データ書式で記述し、そのＪＳＯＮデータの書式は図９のような書式とする。
【０１０２】
ここで、図９に示す書式により記述されたデータについて説明する。図８の従業員テーブルにおいて社員番号００３の「所属」を「研究」から「開発」に変更する場合のＪＳＯＮデータは図１０のように表現する。従業員番号を含めるのは従業員テーブルのレコードを一意に特定できるキーが従業員番号だからである。ここで仮に、図１０のデータを送信する際に使うパラメータ名をｄａｔａとすると引数は図１１のようになる。なお、パラメータ名の意味はサーバ側のサービスプログラムが知っている必要がある。
【０１０３】
ステップＳ６０４では、クライアントＰＣ１０７のＣＰＵ２０１は、ＲＡＭ２０３よりＳ６０３にて作成したリクエストメッセージ（図１１）を読み出し、非同期通信６０でＷｅｂサーバ１０１に送信する。
【０１０４】
ステップＳ６０５では、クライアントＰＣ１０７のＣＰＵ２０１は、Ｗｅｂサーバ１０１から非同期通信により送られてくる処理結果を含むレスポンスデータを受信する。なお、受信が確認できない場合（ステップＳ６０５：ＮＯ）は、受信するまで待機する。
【０１０５】
ステップＳ６０５でレスポンスデータを受信すると、受信したレスポンスデータを解釈する（ステップＳ６０６）。
【０１０６】
クライアントＰＣ１０７のＣＰＵ２０１は受信したレスポンスデータを参照し、保存を依頼されたデータが保存されたか判断する（Ｓ６０７）。これ以降の処理でサーバソケットと接続が必要になる場合、接続先のホスト名（又はホストのＩＰアドレス）とポート番号はこのレスポンスデータに含まれている値を利用する。
【０１０７】
クライアントＰＣ１０７のＣＰＵ２０１がレスポンスデータを解釈した結果、データの更新が出来ていると判断した場合（ステップＳ６０７：ＹＥＳ）は本フローチャートの処理を終了する（ＥＮＤ）。
【０１０８】
クライアントＰＣ１０７のＣＰＵ２０１がデータの更新が出来ていないと判断した場合（ステップＳ６０８：ＮＯ）は、さらに、ＣＰＵ２０１は更新が出来なかった理由を判断する（Ｓ６０８）。
【０１０９】
既に更新済みであるために更新が出来なかった場合（ステップＳ６０８：既に更新済み）は、処理をステップＳ６１０に移行する。他方、それ以外の理由により更新できなかった場合（ステップＳ６０８：その他）は、処理をステップＳ６０９に移行する。
【０１１０】
ステップＳ６０９では、クライアントＰＣ１０７のＣＰＵ２０１は更新できない理由をユーザに知らせるダイアログ作り、ＲＡＭ２０３に記憶し、Ｗｅｂブラウザ１０上に表示する。そして、処理をステップＳ６２０に移行する。
【０１１１】
ステップＳ６１０では、クライアントＰＣ１０７のＣＰＵ２０１はこのまま更新しても良いかをユーザが選択可能なボタンを備えるダイアログを生成しＲＡＭ２０３に記憶する。
【０１１２】
そして、ステップＳ６１１では、クライアントＰＣ１０７のＣＰＵ２０１はサーバソケット１０２−４−１と通信するためのクライアントソケット４３を生成し、ＲＡＭ２０３に記憶する。クライアントソケット４３の生成で使用する接続先サーバソケットを特定するホスト名とポート番号はＳ６０６で取得した値を利用する。
【０１１３】
さらにＣＰＵ２０１は既にＲＡＭ２０３に記憶されているダイアログを読み出し、Ｓ６１０にて生成したダイアログとＳ６１１にて生成したクライアントソケット４３とを関係づける。この処理によりＣＰＵ２０１はダイアログより選ばれた値をクライアントソケット４３に渡すことが可能になる。
【０１１４】
ステップＳ６１２では、クライアントＰＣ１０７のＣＰＵ２０１はクライアントソケット４３とサーバソケット１０２−４−１の間の接続を確立する。
【０１１５】
クライアントＰＣ１０７のＣＰＵ２０１はＷｅｂブラウザ１０上にステップＳ６１０で生成したダイアログを表示する（Ｓ６１３）。
【０１１６】
クライアントＰＣ１０７のＣＰＵ２０１は常にステップＳ６１３で表示したダイアログが備えるボタンに対するユーザの操作を監視し（Ｓ６１４）、クライアントＰＣ１０７のＣＰＵ２０１はダイアログが備えるボタンに対する操作を検出すると（ステップＳ６１５：ＹＥＳ）、検出した操作に基づき送信メッセージを組み立てる。
【０１１７】
そして、クライアントＰＣ１０７のＣＰＵ２０１は作成した送信メッセージをクライアントソケット４３に詰め込み、メッセージをサーバソケット１０２−４−１に送信する。
【０１１８】
なお、クライアントソケット４３がサーバソケットに送信するデータについては、ステップＳ６１６においてユーザからのダイアログに対する操作がデータの更新である場合（ステップＳ６１６：ＯＫ）には、クライアントＰＣ１０７のＣＰＵ２０１はクライアントソケット４３にデータ更新のメッセージを詰め込む（ステップＳ６１８）。
【０１１９】
クライアントＰＣ１０７のＣＰＵ２０１が検出したダイアログに対するユーザの操作がデータ更新の取消しであると判断した場合（ステップＳ６１６：ＮＯ）は、ＣＰＵ２０１はクライアントソケット４３にデータ更新の取消しを依頼する（ステップＳ６１７）。
【０１２０】
そして、ステップＳ６１９では、クライアントＰＣ１０７のＣＰＵ２０１はクライアントソケット４３を破棄する。
【０１２１】
ステップＳ６２０では、クライアントＰＣ１０７のＣＰＵ２０１はＷｅｂブラウザ１０に表示されているダイアログ４０を閉じる。
【０１２２】
図７は、ユーザによるサーバ上のデータの編集にかかる処理において、サーバ側の処理を示すフローチャートである。
【０１２３】
ステップＳ７０１において、Ｗｅｂサーバ１０１のＣＰＵ２０１はＷｅｂブラウザ１０からのリクエストを受信する。
【０１２４】
Ｗｅｂサーバ１０１のＣＰＵ２０１が受信したリクエストに含まれるファイル名の拡張子より、当該リクエストがサービス実行の要求であると判断した場合、
【０１２５】
ステップＳ７０２では、Ｗｅｂサーバ１０１のＣＰＵ２０１は受信したリクエストをアプリケーションサーバ１０２に転送する。
【０１２６】
なお、リクエストがファイルの要求であると判断した場合は、Ｗｅｂサーバ１０１のＣＰＵ２０１はＲＡＭ２０３よりファイルの内容のデータを読み込み、レスポンスデータを作成し、リクエスト元のＷｅｂブラウザ１０に対してレスポンスデータを送信する。
【０１２７】
ステップＳ７０３では、アプリケーションサーバ１０２のＣＰＵ２０１は、ステップＳ７０２で受信したリクエストを解釈し、実行するサービスを特定する。
【０１２８】
そして、ステップＳ７０４では、アプリケーションサーバ１０２のＣＰＵ２０１は、ステップＳ７０３にて特定したサービスプログラムにリクエストのボディ部に含まれているデータを引き渡す。
【０１２９】
ステップＳ７０５では、アプリケーションサーバ１０２のＣＰＵ２０１はＲＡＭ２０３に記憶されている更新対象のデータが他のデータにより更新されているかを判断する。
【０１３０】
具体的には、ＣＰＵ２０１は更新対象のテーブルデータについて参照したときのタイムスタンプと更新するときのタイムスタンプを比較し、一致していれば更新されていないと判断し、異なっていれば更新されていると判断する。なお、この判断に利用する参照時のテーブルデータのタイムスタンプはセッションに保存されていることとする。
【０１３１】
ステップＳ７０５において更新対象のデータが他のデータにより更新されていると判断した場合（ステップＳ７０５：ＹＥＳ）は、処理をステップＳ７０６へ移行する。
【０１３２】
他方、ステップＳ７０５において更新対象のデータが更新されていないと判断した場合（ステップＳ７０５：ＮＯ）は、処理をステップＳ７１５へ移行する。
【０１３３】
ステップＳ７０６では、アプリケーションサーバ１０２のＣＰＵ２０１はサーバソケット１０２−４−１を作成し、ＲＡＭ２０３に記憶する。
【０１３４】
そしてステップＳ７０７では、アプリケーションサーバ１０２のＣＰＵ２０１は更新対象のデータが既に他のユーザにより更新されている旨をリクエスト元のクライアントＰＣ１０７にサーバソケットが稼動するホスト名とポート番号とを含めて通知する。
【０１３５】
ここで、サーバ側処理がクライアント側処理に送信するメッセージについて説明する。本実施例におけるメッセージは、ｋｅｙ＝ｖａｌｕｅ  のような組で表現する。なお、送信したい組が複数個ある場合にはｋｅｙ１＝ｖａｌｕｅ１＆ｋｅｙ２＝ｖａｌｕｅ２＆…ｋｅｙＮ＝ｖａｌｕｅＮのように＆で区切る。仮に、更新対象のデータが既に他のユーザにより更新されている旨を表すステータス番号が１０で、サーバソケットが稼動するホスト名がａｐｐｓｅｒｖｅｒｈｏｓｔ、ポート番号が１０００番であるとすると下記の通り、
【０１３６】
ｓｔａｔｕｓ＝１０＆ｓｅｒｖｅｒｈｏｓｔ＝  ａｐｐｓｅｒｖｅｒｈｏｓｔ＆ｐｏｒｔｎｕｍｂｅｒ＝１０００
【０１３７】
となる。なお、ｋｅｙとして使用したｓｔａｔｕｓ、ｓｅｒｖｅｒｈｏｓｔ、ｐｏｒｔｎｕｍｂｅｒは任意であるが、クライアント側処理で理解できる文字列にしておく必要がある。
【０１３８】
ステップＳ７０８では、アプリケーションサーバ１０２のＣＰＵ２０１はサーバソケットに対してクライアントソケット４３からの接続を待ち受けるように命じ、クライアントからの接続を受け付ける。
【０１３９】
ステップＳ７０９で、アプリケーションサーバ１０２のＣＰＵ２０１はサーバソケットにクライアントソケットからの接続が行われたかを判断し、接続が確立したと判断した場合（ステップＳ７０９：ＹＥＳ）は、処理をステップＳ７１１に移行する。
【０１４０】
他方、接続が確立していない場合（ステップＳ７０９：ＮＯ）は、処理をステップＳ７１０に移行し、さらにサーバソケットを生成してからの時間がタイムアウト時間に到達したかを判断する。
【０１４１】
アプリケーションサーバ１０２のＣＰＵ２０１はサーバソケットを生成してから未接続の時間がタイムアウト時間に到達したと判断した場合（ステップＳ７１０：ＹＥＳ）、処理をステップＳ７１６へ進める。
【０１４２】
他方、タイムアウト時間に達していない場合は、処理をステップＳ７０８に戻し、クライアントからの接続を待ち受ける。
【０１４３】
ステップＳ７０９において、接続が確立したと判断され（ステップＳ７０９：ＹＥＳ）、処理をステップＳ７１１に移行すると、アプリケーションサーバ１０２のＣＰＵ２０１はサーバソケットに対してクライアントソケットからの命令受付を命じる。
【０１４４】
そして、ステップＳ７１２でクライアントからの命令を受信したか否かを判断し、受信したと判断すると（ステップＳ７１２：ＹＥＳ）、処理をステップＳ７１４に移行する。
【０１４５】
他方、受信していないと判断すると（ステップＳ７１２：ＮＯ）、処理をステップＳ７１３に移行し、サーバソケットがクライアントソケットからの命令を待ち受けている時間がタイムアウト時間に到達したか否かを判断する。
【０１４６】
ステップＳ７１３においてタイムアウト時間に達したと判断された場合は（ステップＳ７１３：ＹＥＳ）、処理をステップＳ７１６に移行する。
【０１４７】
他方、ステップＳ７１３においてタイムアウト時間に達していないと判断された場合は（ステップＳ７１３：ＮＯ）、処理をステップＳ７１１に移行し、再度クライアントからの命令を待つ。
【０１４８】
ステップＳ７１４では、アプリケーションサーバ１０２のＣＰＵ２０１はクライアントソケットからの命令がデータの更新であるか否かを判断する。
【０１４９】
データの更新であると判断した場合は（ステップＳ７１４：ＹＥＳ）、処理をステップＳ７１５に移行し、データの更新ではないと判断した場合は（ステップＳ７１４：ＮＯ）、処理をステップＳ７１６に移行する。
【０１５０】
ステップＳ７１５では、アプリケーションサーバ１０２のＣＰＵ２０１はＲＡＭ２０３に記憶されている更新対象のデータの更新を実行する。
【０１５１】
そして、ステップ７１６では、アプリケーションサーバ１０２のＣＰＵ２０１はＲＡＭ２０３に記憶されているサーバソケットを消去し、処理をＳ７１７へ進める。
【０１５２】
ステップＳ７１７では、アプリケーションサーバ１０２のＣＰＵ２０１はＲＡＭ２０３に記憶されている更新対象データを消去する。
次に、図８に示す具体例を用いて本実施例を説明する。
【０１５３】
まず、社員番号、氏名、所属、電話番号等を項目に持つ従業員テーブルを編集するブラウザ型Ｗｅｂアプリケーションが存在しているものとする。
【０１５４】
このブラウザ型Ｗｅｂアプリケーションにおいて異なるユーザがほぼ同時に社員番号００２のデータを編集し始めたとする（１）、（２）。次にユーザＡが社員番号００２の所属を研究から開発に編集する（３）。同時にユーザＢは社員番号００２の所属を研究から開発に、電話番号を０３から０６に編集する（４）。ユーザＡは編集を確定する（４）。ユーザＡが編集を開始してから確定するまで１０秒掛かったとする。ユーザＢは編集を確定する（６）。ユーザＢが編集を開始してから確定するまで２０秒掛かったとする。このときサーバ側処理はユーザＢが更新しようとしているデータが既にユーザＡによって更新されているため、サーバ側処理はこのまま更新処理をしても更新矛盾が起きないかをユーザＢに問い合わせる（７）。ユーザＢがダイアログで「ＹＥＳ」を選択するとサーバ側処理は更新（８）を継続し、ユーザＢが「ＮＯ」を選択するとサーバ側処理は更新を行わない。
【０１５５】
このようにブラウザ型Ｗｅｂアプリケーションでありながらデスクトップアプリケーションを操作しているように処理の制御にユーザが介入することが可能となる。
【０１５６】
以上説明した処理を行うことにより、サーバ側の処理において処理の分岐が起こった際に、ユーザの指示に従った処理をサーバにおいて行うことが可能となる。
【０１５７】
以上のように、前述した実施例の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【０１５８】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【０１５９】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ、シリコンディスク等を用いることが出来る。
【０１６０】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１６１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１６２】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６３】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施例およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１６４】
１０１  Ｗｅｂサーバ
１０２  アプリケーションサーバ
１０３  データベースサーバ
１０４、１０５、１０６  ネットワーク
１０７−１、１０７−２、１０７−Ｎ  クライアントＰＣ
【図１】
2012008735.tif 000003
【図２】
2012008735.tif 000004
【図３】
2012008735.tif 000005
【図４】
2012008735.tif 000006
【図５】
2012008735.tif 000007
【図６】
2012008735.tif 000008
【図７】
2012008735.tif 000009
【図８】
2012008735.tif 000010
【図９】
2012008735.tif 000011
【図１０】
2012008735.tif 000012
【図１１】
2012008735.tif 000013