(57)【要約】【課題】３層クライアント・サーバシステムにおいて、サーバ処理ロジック内部の如何なる箇所からでもユーザとの対話を実現する。【解決手段】クライアント１のクライアントプロセス４はネットワーク３を介して、処理要求をサーバ２のメッセージキュー６に格納する。サーバプロセス５はメッセージキュー６に格納された処理要求を取得し処理を開始する。処理実行中にクライアント１との対話が必要となると、サーバプロセス５は返答要求をメッセージキュー６に格納し、クライアントプロセス４は返答要求を取得する。クライアントプロセス４はユーザが入力した返答要求結果をメッセージキュー６に格納する。サーバプロセス５は返答要求結果を元に処理を再開し処理が完了したら処理要求結果をメッセージキュー６に格納する。クライアントプロセス４は処理要求結果を取得し自端末に反映する。【選択図】図１
2009258803.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して処理要求を行う要求送信部と、前記処理要求に対する処理結果を受信する結果受信部と、前記処理要求における問合せに応答する問合応答部とを有するクライアントと、
前記ネットワークを介して前記クライアントからの処理要求を受信する要求受信部と、前記処理要求で要求された処理を実行する処理部と、前記処理部で実行された処理結果を前記クライアントに送信する結果送信部と、前記処理部で実行中の処理に関する問合せを前記クライアントに送信する問合送信部と、前記クライアントからの問合せ結果を受信して前記処理部に供給する問合結果受信部とを有するサーバと、
前記サーバ内に設けられ、前記クライアントからの処理要求の受信及び前記クライアントへの処理結果の送信、前記クライアントへの問合せの送信及び前記クライアントからの問合せ結果の受信を処理する通信部と
を備える対話処理システム。
【請求項２】
前記通信部は、前記クライアントからの処理要求及び前記クライアントへの処理結果、前記クライアントへの問合せ及び前記クライアントからの問合せ結果に、それぞれ対応する識別番号を付して格納するメッセージ格納部として機能する、請求項１記載の対話処理システム。
【請求項３】
前記通信部は、前記クライアントからの処理要求の受信及び前記クライアントへの処理結果の送信、前記クライアントへの問合せの送信及び前記クライアントからの問合せ結果の受信の通信手順を、それぞれ処理内容を示すラベルと通信の向きとに基づいて決定するプロトコル処理部として機能する、請求項１または２に記載の対話処理システム。
【請求項４】
前記サーバの前記処理部は、前記クライアントからの前記処理要求の処理を実行中に一時中断し、前記処理部の中断中に、前記問合送信部は、前記クライアントに問合せを送信し、前記問合結果受信部は、前記クライアントから問合せ結果を受信し、その後、前記処理部は、前記中断していた処理を再開する、請求項１〜３のいずれかに記載の対話処理システム。
【請求項５】
前記クライアントの前記要求送信部は、前記処理要求を前記サーバに送信し、その後、前記クライアントの前記問合応答部は、前記サーバからの問合せを受信し、前記問合せに応答する問合せ結果を前記サーバに送信する、請求項１〜４のいずれかに記載の対話処理システム。
【請求項６】
ネットワークを介してクライアントからサーバへ処理要求を行う処理要求ステップと、
前記ネットワークを介して前記クライアントからの処理要求を前記サーバが受信する処理要求受信ステップと、
前記処理要求で前記サーバが要求された処理を実行する処理実行ステップと、
前記処理実行ステップで実行中の処理を一時中断し、実行中の処理に関する問合せを前記サーバから前記クライアントに送信する問合送信ステップと、
前記処理要求に関する問合せに対して、前記クライアントから前記サーバへ応答する問合応答ステップと、
前記クライアントからの問合せ結果を受信して、前記サーバが前記中断していた処理を再開する処理再開ステップと、
前記処理実行ステップで実行された処理結果を前記サーバから前記クライアントに送信する処理結果送信ステップと、
前記処理要求に対する前記処理結果を前記サーバから前記クライアントが受信する処理結果受信ステップと
を含む対話処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのクライアントとサーバとの間の対話処理に関するものである。
【背景技術】
【０００２】
従来、スタンドアロンシステム、２層クライアント・サーバシステム又は３層クライアント・サーバシステムが用いられていた。２層クライアント・サーバシステムでは、ＧＵＩ（グラフィカルユーザインターフェース）などのユーザインターフェース部とコンピュータ処理部がクライアントに設けられ、データベースのみがサーバに設けられる。３層クライアント・サーバシステムでは、ユーザインターフェース部のみがクライアントに設けられ、コンピュータ処理部とデータベースがサーバに設けられる。
【０００３】
このスタンドアロンシステム又は２層クライアント・サーバシステムにおける対話処理は、ユーザインターフェース部とコンピュータ処理部が同一アプリケーションのプロセス内で実行される。このため、コンピュータ処理部における処理ロジック内部の如何なる箇所（処理時点）においてもユーザインターフェース部を介してユーザとの対話を実現することが可能である。
【０００４】
また、３層クライアント・サーバシステムにおいては、ユーザインターフェース部とコンピュータ処理部は、それぞれクライアントとサーバに分かれて処理される。このため、コンピュータ処理部における処理ロジックとユーザインターフェース部を介したユーザとの対話は以下の場合に限られる。
【０００５】
すなわち、クライアントからサーバへ処理要求を送信する時と、サーバが要求された処理結果をクライアントに送信する時である。あるいはこの他にも、クライアントからの要求処理を実行する時点とは独立して、サーバからクライアントへ通信を行うメッセージ送受信方法が提案されている（特許文献１参照）。
【特許文献１】特開２０００−１０１６７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述した３層クライアント・サーバシステムにおけるクライアントとサーバ間の対話は、クライアントからの処理要求と関係付けてその前後に行うか、クライアントからの要求とは独立した通信としてサーバが行うかのどちらかの方法に限られていた。このため、サーバに設けられるコンピュータ処理部において、クライアントから要求された処理要求の実行中に、ユーザインターフェース部を介してユーザとの対話を実現することはできなかった。
【０００７】
このユーザとの対話を実現するためには、サーバのアプリケーションプログラムの改造が必要であり、この度にユーザとの対話を意識したモジュール分割が必要であった。また、モジュールを分割したことにより、分割されたモジュール間の調整のための新たなプログラム修正が生じるなど、改造時の作業量が多大になってしまうという問題があった。
【０００８】
そこで、本発明では、３層クライアント・サーバシステムにおいて、サーバのコンピュータ処理部における処理ロジック内部の如何なる箇所からでも、処理中にユーザとの対話を実現することを目的とするものである。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の対話処理システムは、ネットワークを介して処理要求を行う要求送信部と、処理要求に対する処理結果を受信する結果受信部と、処理要求における問合せに応答する問合応答部とを有するクライアントを備えている。
また、本発明の対話処理システムは、ネットワークを介してクライアントからの処理要求を受信する要求受信部と、処理要求で要求された処理を実行する処理部と、処理部で実行された処理結果をクライアントに送信する結果送信部と、処理部で実行中の処理に関する問合せをクライアントに送信する問合送信部と、クライアントからの問合せ結果を受信して処理部に供給する問合結果受信部とを有するサーバを備えている。そして、このサーバ内には、クライアントからの処理要求の受信及びクライアントへの処理結果の送信、クライアントへの問合せの送信及びクライアントからの問合せ結果の受信を処理する通信部が設けられている。
【００１０】
また、本発明の対話処理方法は、ネットワークを介してクライアントからサーバへ処理要求を行う処理要求ステップと、ネットワークを介してクライアントからの処理要求をサーバが受信する処理要求受信ステップと、この処理要求で要求された処理をサーバが実行する処理実行ステップとを含んでいる。
また、本発明の対話処理方法は、この処理実行ステップで実行中の処理を一時中断し、現在、実行中の処理に関する問合せをサーバからクライアントに送信する問合送信ステップと、クライアントからの処理要求に関するサーバからクライアントへの問合せに対してクライアントからサーバへ応答する問合応答ステップと、クライアントからの問合せ結果を受信してサーバが中断していた処理を再開する処理再開ステップとを含んでいる。
更に、本発明の対話処理方法は、処理実行ステップで実行された処理結果をサーバからクライアントに送信する結果送信ステップと、このサーバから送信される処理結果をクライアントが受信する処理結果受信ステップと、を含んでいる。
【００１１】
本発明によれば、クライアントは、ネットワークを介して接続されたサーバに処理要求を送信し、サーバからの処理結果を受信する。また、サーバは、クライアントからの処理要求を受信し、この要求された処理を実行して処理結果をクライアントに送信するようにしている。
【００１２】
ここで、サーバは、クライアントから要求された処理の実行中に、任意のタイミングでその実行中の処理を一時中断し、クライアントに問合せを送信できるようにする。そして、クライアントから問合せ結果を受信して中断していた処理を再開する。このサーバにおける処理の中断、問合せ及び処理の再開に関連して、クライアントは、サーバからの問合せ要求を受信し、このサーバからの問合せに対する回答、つまり問合せ結果をサーバに送信するようにしている。
【発明の効果】
【００１３】
本発明によれば、サーバの処理ロジック内部の如何なる箇所からでも、処理中にクライアントとの対話を行うことができるという作用効果がある。この効果は、特に、サーバの処理が多数のサブルーチンによって階層化している場合に顕著である。
また、サーバのアプリケーションのプログラムを改造する際に、クライアントとの対話を意識したモジュール分割を行う必要がなくなり、改造に伴う作業量を大幅に削減することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施の形態を、図１〜２を参照して説明する。
図１は、本実施の形態例のシステム構成例を示している。
図１において、クライアント１とサーバ２がネットワーク３を介して接続されている。クライアント１には内部の処理を実行するクライアントプロセス４が設けられ、サーバ２には内部の処理を実行するサーバプロセス５が設けられている。クライアントプロセス４及びサーバプロセス５は、それぞれクライアント１及びサーバ２のＯＳ（オペレーティングシステム）上で実行されるアプリケーションプログラムにより実現される。
【００１５】
クライアント１のクライアントプロセス４とサーバ２のサーバプロセス５のプロセス間には、両者の通信を処理するメッセージキュー６が設けられている。
メッセージキュー６はサーバ２上に存在し、クライアント１とサーバ２はそれぞれメッセージキュー６に対してメッセージの格納又はメッセージの取得を行うことができるように構成されている。
【００１６】
クライアントプロセス４は、ネットワーク３を介してサーバ２へ処理要求を行う要求送信部１１と、処理要求に対する処理結果を受信する結果受信部１２と、処理要求における問合せに応答する問合応答部１３とを有している。
サーバプロセス５は、ネットワーク３を介してクライアント１からの処理要求を受信する要求受信部３１と、処理要求で要求された処理を実行する処理部３２と、処理部３２で実行された処理結果をクライアント１に送信する結果送信部３５とを有している。
【００１７】
また、サーバプロセス５は、処理部３２で実行中の処理に関する問合せをクライアント１に送信する問合送信部３３と、クライアント１からの問合せ結果を受信して処理部３２に供給する問合結果受信部３４とを有している。
ここで、メッセージキュー６は、クライアント１からの処理要求の受信を処理する要求ラベル上り通信部２１と、クライアント１への処理結果の送信を処理する結果ラベル下り通信部２４とを有している。
【００１８】
また、メッセージキュー６は、クライアント１への問合せの送信を処理する問合ラベル下り通信部２２と、クライアント１からの問合せ結果の受信を処理する問合結果ラベル上り通信部２３とを有している。
このメッセージキュー６の各通信部２１〜２４は、クライアント１からの処理要求及びクライアント１への処理結果、クライアント１への問合せ及びクライアント１からの問合せ結果に、それぞれ同一又は対応する識別番号を付して格納するメッセージ格納部として機能するものである。
【００１９】
すなわち、クライアント１からの処理要求及びクライアント１への処理結果には同一又は対応する識別番号が付され、クライアント１への問合せ及びクライアント１からの問合せ結果には同一又は対応する識別番号が付される。
これにより、クライアント１及びサーバ２は、処理要求及び処理結果、問合せ及び問合せ結果の各通信に応じて、メッセージキュー６へのメッセージの格納と取り出しを実行することができる。
【００２０】
また、メッセージキュー６の各通信部２１〜２４は、クライアント１からの処理要求の受信及びクライアント１への処理結果の送信、クライアント１への問合せの送信及びクライアント１からの問合せ結果の受信の通信手順を決定する。このように、メッセージキュー６の各通信部２１〜２４は、それぞれの処理内容を示すラベルと通信の向きとに基づいて各通信手順を決定するプロトコル処理部としても機能している。
【００２１】
すなわち、要求ラベル上り通信部２１は、クライアント１からの処理要求のラベルと上り（サーバ２が受信）通信を認識する。結果ラベル下り通信部２４は、クライアント１への処理結果のラベルと下り（サーバ２が送信）通信を認識する。
これにより、要求ラベル上り通信部２１は、処理要求のラベルと上り通信の認識を要求受信部３１に伝える。結果ラベル下り通信部２４は、処理結果のラベルと下り通信の認識をクライアント１の結果受信部１２に伝える。
【００２２】
また、問合ラベル下り通信部２２は、クライアント１への問合せのラベルと下り（サーバ２が送信）通信を認識する。問合結果ラベル上り通信部２３は、クライアント１からの問合せ結果のラベルと上り（サーバ２が受信）通信を認識する。問合ラベル下り通信部２２は、要求ラベル上り通信部２１への処理要求の後に、問合せの処理を実行するように手順を決定する。
【００２３】
これにより、問合ラベル下り通信部２２は、問合せのラベルと下り通信の認識をクライアント１の結果受信部１２に伝える。問合結果ラベル上り通信部２３は、問合せ結果のラベルと上り通信の認識を問合結果受信部３４に伝える。
【００２４】
図２は、本実施の形態例のシステムにおける処理の流れを示すフローチャートである。
次に、図２を用いて処理の流れを説明する。クライアント１は処理要求メッセージＲ１をサーバ２に送信する（ステップＳ１０）。ここで、クライアント１はグラフィカルユーザインターフェースを備えており、クライアント１においてユーザの画面操作が行われた際に、図１に示した要求送信部１１により処理要求メッセージＲ１の送信が実行される。
【００２５】
この処理要求メッセージＲ１はサーバ２内のメッセージキュー６の要求ラベル上り通信部２１に格納される。クライアント１は、同時に、要求ラベルで上り通信を示すセッション情報もサーバ２に送信する。
そして、処理要求メッセージＲ１がメッセージキュー６に格納される際に、メッセージキュー６はこのメッセージに対して一意なＩＤ７を付番する（ステップＳ１１）。クライアントプロセス４は付番されたＩＤ７をセッション情報に格納する。そして、クライアントプロセス４はセッション情報のＩＤ７とＩＤが一致するメッセージがメッセージキュー６に格納されるまで待機する（ステップＳ１２）。
【００２６】
サーバ２は要求された処理を実行するサーバプロセス５を備えており、サーバプロセス５内の処理部３２の複数のスレッドが処理を実行する。サーバプロセス５はメッセージキュー６にクライアント１からの処理要求メッセージＲ１が格納されるまで待機している（ステップＳ２０）。
そして、メッセージキュー６に処理要求メッセージＲ１が格納されると、サーバプロセス５の要求受信部３１は要求メッセージＲ１を取得し（ステップＳ２１）、処理部３２の複数のスレッドが要求された処理を同時又は連続して実行する（ステップＳ２２）。
【００２７】
その際、サーバプロセス５はクライアント１の要求ラベルで上り通信を示すセッション情報を取得し、さらに処理要求メッセージＲ１に付番されているＩＤ７を取得したセッション情報に格納する。これによりサーバプロセス５は実行中の処理がどのクライアント１から要求された処理であるかを認識することができる。
【００２８】
ここで、サーバ２が要求された処理の実行中にクライアント１との対話を必要とする場合、サーバプロセス５は、返答要求（クライアント１からの返答を必要とする問合せのこと）をメッセージキュー６に格納する（ステップＳ２３）。
すなわち、サーバプロセス５は、以下の処理を実行する。サーバプロセス５内の処理部３２の複数のスレッドは、返答要求（問合せラベルで上り通信）であることをクライアント１に認識させるセッション情報を持たせた返答要求メッセージＲ２を作成する。そして、問合送信部３３は、セッション情報を格納した返答要求メッセージＲ２にＩＤ７を付番してメッセージキュー６の問合ラベル下り通信部２２に格納する。
【００２９】
このとき、返答要求メッセージＲ２にはクライアント１のユーザに伝達する文章や、画面に画像を表示する方法（例えば、メッセージボックスやインプットボックス）等による情報が格納されている。また、サーバプロセス５内の処理部３２の複数のスレッドは、問合せラベルで上り通信のセッション情報に格納されたＩＤ７と一致するメッセージがメッセージキュー６に格納されるまで待機する（ステップＳ２４）。
【００３０】
次に、クライアント１のクライアントプロセス４は、返答要求を受信する（ステップＳ１３）。このとき、クライアントプロセス４の結果受信部１２は、問合ラベル下り通信のセッション情報のＩＤ７を認識して返答要求メッセージＲ２を取得し、返答要求であるか否かをチェックする。
【００３１】
メッセージが返答要求であれば、クライアントプロセス４の問合応答部１３は、返答要求メッセージＲ２を解析し、サーバ２から渡されたクライアント１のユーザに伝達する文章をサーバ２から指示された方法で画面に表示する。このとき、クライアント１のユーザにより問合応答部１３で画面表示された方法を介して返答要求結果の入力が行われる（ステップＳ１４）。
クライアントプロセス４の問合応答部１３は、返答要求結果メッセージＡ２を、サーバ２に送信する（ステップＳ１５）。この返答要求結果メッセージＡ２はサーバ２内のメッセージキュー６の問合結果ラベル上り通信部２３に格納される（ステップＳ１６）。
【００３２】
このとき、返答要求結果メッセージＡ２がメッセージキュー６に格納される際に、メッセージキュー６は問合結果ラベル上り通信のセッション情報にＩＤ７を付番し、付番されたＩＤ７をセッション情報と共に格納する。そして、クライアントプロセス４は問合結果ラベル上り通信のセッション情報のＩＤ７とＩＤが一致する処理結果がメッセージキュー６に格納されるまで待機する（ステップＳ１７）。
【００３３】
サーバプロセス５の問合結果受信部３４は、メッセージキュー６の問合結果ラベル上り通信部２３から返答要求結果を取得し（ステップＳ２５）、処理部３２は要求された処理を再開する（ステップＳ２６）。
すなわち、返答要求結果待機中にセッション情報に格納されているＩＤ７と一致するＩＤをもつメッセージがメッセージキュー６に格納されると、サーバプロセス５内の処理部３２の複数のスレッドは、返答要求結果メッセージＡ２を取得し本来の処理を再開する。
【００３４】
サーバプロセス５内の処理部３２の複数のスレッドは、処理が終了すると処理結果メッセージＡ１にセッション情報のＩＤ７を付番し、結果送信部３５は処理結果メッセージＡ１をメッセージキュー６の結果ラベル下り通信部２４に格納する（ステップＳ２７）。
クライアントプロセス４は、セッション情報に格納されたＩＤ７と一致するメッセージがメッセージキュー６に格納されるのを待つ（ステップＳ１７）。そして、クライアントプロセス４は、処理結果を受信する（ステップＳ１８）。
【００３５】
すなわち、ＩＤ７と一致するメッセージがメッセージキュー６に格納されると、クライアントプロセス４は、メッセージを取得し、メッセージが処理結果であるか否かをチェックする。メッセージが処理結果の場合、クライアントプロセス４は、処理結果を自端末の画面処理に反映し一連の処理は完了する。
以上により、サーバ２がクライアント１から要求された処理の任意の箇所から、クライアント１との対話処理を実現することができる。
【００３６】
なお、本発明は、上述した本実施の形態例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨を逸脱しない限り、適宜変更しうることは言うまでもない。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施の形態によるシステム構成例を示す説明図である。
【図２】本発明の一実施の形態によるシステムの処理の流れを示すフローチャートである。
【符号の説明】
【００３８】
１…クライアント、２…サーバ、３…ネットワーク、４…クライアントプロセス、５…サーバプロセス、６…メッセージキュー、７…ＩＤ、Ｒ１…処理要求メッセージ、Ｒ２…返答要求メッセージ、Ａ１…処理要求結果メッセージ、Ａ２…返答要求結果メッセージ、１１…要求送信部、１２…結果受信部、１３…問合応答部、２１…要求ラベル上り通信部、２２…問合ラベル下り通信部、２３…問合結果ラベル上り通信部、２４…結果ラベル下り通信部、３１…要求受信部、３２…処理部、３３…問合送信部、３４…問合結果受信部、３５…結果送信部
【図１】
2009258803.tif 000003
【図２】
2009258803.tif 000004