以下、サーバ装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態)
図1は、本実施の形態における情報処理システム1のブロック図である。
情報処理システム1は、サーバ装置10、及び端末装置20を備える。サーバ装置10と端末装置20とは、通信回線や、ネットワーク等により、通信可能に接続されている。ここでは、サーバ装置10が一つである場合を例に挙げて示しているが、サーバ装置10は複数であっても良い。かかることは、端末装置20においても同様である。
サーバ装置10は、第一受信部101、第二受信部102、格納部103、判断部104、実行部105、及び送信部106を備える。
端末装置20は、操作受付部201、端末送信部202、端末受信部203、及び端末出力部204を備える。
サーバ装置10は、例えば、コンピュータ等により実現される。サーバ装置10は、例えば、会計処理ソフトウェアや、財務処理ソフトウェア等を実行するサーバ装置10である。
第一受信部101は、端末装置20等が送信する1または2以上の要求情報を受信する。要求情報は、サーバ装置10に対して、任意の処理の実行を要求する情報である。任意の処理とは、例えば、ログインの処理や、ユーザ登録の処理、数値を入力する処理、検索を行う処理、集計等を行う処理、データを出力する処理や、データをバックアップする処理等、どのような処理であっても良い。要求情報は、例えば、任意の処理を指定する情報や、任意の処理の実行を指示するコマンドやメソッドやメニュー項目やこれらを識別する識別情報、処理の実行に用いられる関数やその識別情報、処理の実行に用いられる情報等を有している。処理の実行に用いられる情報は、例えば、検索キーや、検索式や、入力データ等である。
要求情報は、例えば、処理識別情報を有している。処理識別情報は、要求情報が示す処理を識別する情報である。処理識別情報は、要求情報を識別する情報であっても良い。処理識別情報は、例えば、要求情報の送信元が生成して、要求情報に与える。要求情報の送信元は、例えば、端末装置20等である。ただし、処理識別情報は、最初の要求情報を受信した際に、この要求情報に応じてサーバ装置10が生成して、要求情報の送信元に送信し、要求情報の送信元は、再度同じ要求を示す要求情報を送信する際に、この処理識別情報を有する要求情報を送信するようにしてもよい。この場合、最初の要求情報は、処理識別情報を有していなくても良い。ここでは、例えば、一致する処理識別情報を有する複数の要求情報は、同じ処理の実行を要求する要求情報と考えて良い。
処理識別情報は、要求情報が示す処理を識別可能な情報であれば、どのような情報であるかは問わない。処理識別情報は、例えば、要求情報が送信される日時や要求情報を送信する指示等を受け付けた日時等の日時の情報と乱数とを組み合わせた情報であっても良い。また、処理識別情報は、処理を指定する情報や、処理の実行を指示するコマンドやメソッドやメニュー項目やこれらを識別する識別情報、処理の実行に用いられる関数やその識別情報、処理に利用される検索キー等のデータのうちの1以上や、これらからハッシュ関数を用いて算出されたハッシュ値等であっても良い。要求情報自体が処理識別情報であっても良い。処理識別情報が、当該処理識別情報で識別される処理を判別可能な情報であるか否かは問わない。
なお、要求情報は、この要求情報の送信先、即ちサーバ装置10の識別情報や、送信元、即ち端末装置20の識別情報等を有していても良い。送信先の識別情報は、送信先のアドレス情報と考えても良い。送信先のアドレス情報は、例えば、URLや、IPアドレスや、IPアドレスとポート番号等の組合せ等である。また、送信元の識別情報は、送信元のアドレス情報と考えてもよい。送信元のアドレス情報は、例えば、IPアドレスや、IPアドレスとポート番号等の組合せ等である。また、要求情報はいわゆるセッションID等を有していていてもよい。
第一受信部101は、要求情報の受信後に要求情報の送信元との接続を切断することが好ましい。ここでの接続とは、通常のネットワークや通信回線等における接続である。ここでの接続は、例えば、情報を通信するうえでの接続である。送信元と接続されているということは、例えば、要求情報の送信元との間での情報の送受信に必要な情報を、サーバ装置10が保持している状態である。なお、接続に関しては、公知技術であるので、詳細な説明は省略する。第一受信部101は、例えば、要求情報を受信する際における要求情報の送信元との接続を、要求情報の受信後に切断する。例えば、第一受信部101は、要求情報の受信直後に接続を切断する。例えば、要求情報の受信をトリガーとして接続を切断しても良い。要求情報の受信後に切断するということは、要求情報に応じて、サーバ装置10が実行する処理の結果を待たずに、接続を切断することと考えても良い。ここでの切断は、接続解除と考えても良い。ここでの切断とは、例えば、要求情報の送信元との間での情報の送受信に必要な情報を、サーバ装置10が削除することと考えても良い。なお、接続の切断に関しては、公知技術であるので、ここでは詳細な説明は省略する。要求情報の送信元とは、例えば、端末装置20である。通常、第一受信部101が要求情報を受信した後の予め指定された時間は、要求元情報の送信元と、サーバ装置10との間の接続が維持されるが、本実施の形態においては、第一受信部101は、例えば、この接続を要求情報の受信後に切断する。第一受信部101がどのように要求情報との接続を切断するかは問わない。例えば、第一受信部101は、要求元情報の送信元との接続を強制的に切断しても良く、要求元情報の送信元に何らかの情報を送信することにより、この情報が要求情報に対応した実行処理の結果であると送信元に判断させることで、送信元に接続を切断させても良い。このように接続を切断することで、要求情報の受信後に、要求情報を受信する際に確保したリソースを開放することができる
第一受信部101は、通常、無線または有線の通信手段で実現される。第一受信部101は、通信デバイスを含むと考えても、含まないと考えても良い。
第二受信部102は、1または2以上の問合せ情報を受信する。問合せ情報は、要求情報が示す処理の完了を問い合わせる情報である。完了を問い合わせるとは、完了したことを確認することや、完了したか否かを判断することと考えても良い。問合せ情報は、例えば、要求情報の送信元、ここでは、端末装置20が送信する情報である。
問合せ情報は、例えば、問い合わせ対象となる要求情報が示す処理を指定するための情報を有している。具体的には、問合せ情報は、問い合わせ対象となる要求情報が示す処理を指定するための情報として、処理識別情報を有している。一の要求情報と一致する処理識別情報を有する問合せ情報は、例えば、この一の要求情報が示す処理の完了を問い合わせる情報である。また、同じ処理識別情報を有する複数の問合せ情報は、例えば、同じ要求情報が示す処理についての問合せ情報である。同じ処理識別情報を有する要求情報と問合せ情報は、通常、同じ送信元、例えば、同じ端末装置20から送信される要求情報及び問合せ情報である。問い合わせ情報は、この問い合わせ情報が有する処理識別情報が示す処理の完了を問い合わせる情報と考えてもよい。また、問合せ情報は、例えば、処理結果に関する情報の送信が可能であるか否かを問い合わせる情報と考えても良い。処理の結果に関する情報については、後述する。
第二受信部102は、通常、無線または有線の通信手段で実現される。第二受信部102は、通信デバイスを含むと考えても、含まないと考えても良い。
格納部103には、1または2以上の要求情報が示す処理の実行結果に関する情報と、各要求情報が有する処理識別情報とが対応付けられて格納される。この要求情報は、第一受信部101が受信した要求情報である。処理の実行結果に関する情報は、実行結果を示す情報であってもよく、実行結果により得られた情報であっても良く、これらの両方であっても良い。実行結果を示す情報とは、例えば、処理の実行が成功したか、否か等を示す情報である。例えば、要求情報が示す処理が、認証処理や、ユーザ登録等の情報を登録する処理であり場合、実行結果を示す情報は、認証が成功したか否かを示す情報や、ユーザ登録が成功したか失敗したか否かを示す情報である。実行結果により得られた情報とは、例えば、要求情報が示す処理が、検索処理や、データの集計等を行う処理である場合、検索結果として取得された情報(例えば、検索された用語やURL等)や、集計により得られたデータである。なお、格納部103には、実行結果により得られたデータのパスや、ポインタ等が格納されていてもよく、この場合、このパスやポインタが示すデータが格納部103に格納されていると考えても良い。
なお、本実施の形態においては、一の要求情報が示す処理の実行結果に関する情報と、この一の要求情報が有する処理識別情報とを有する1または2以上の実行結果管理情報が、格納部103に格納されている場合を例に挙げて説明する。
なお、格納部103に格納されている情報は、一定または不定のタイミングで、削除するようにしてもよい。あるいは、格納部103に情報を蓄積する際に、蓄積日時等の情報を付与するようにし、蓄積日時から予め指定された期間が経過した情報は、格納部103から削除するようにしても良い。
格納部103は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
判断部104は、第一受信部101が受信した要求情報が有する処理識別情報が示す処理が完了しているか否かを判断する。判断部104は、例えば、第一受信部101が受信した要求情報が有する処理識別情報と一致する処理識別情報が、格納部103に格納されているか否かを判断する。これにより、一致する処理識別情報が格納されていれば、処理識別情報が示す処理が完了していると判断することができ、格納されていなければ、処理が完了していないと判断することができる。判断部104は、例えば、第一受信部101が要求情報を受信した場合に、この判断処理を行う。処理識別情報が一致する要求情報とは、例えば、過去に第一受信部101が受信した要求情報が示す処理を、リトライするために、過去に要求情報を送信した端末装置20等が送信する要求情報である。
なお、判断部104がどのように、処理が完了しているか否かを判断するかは問わない。例えば、実行部105が、図示しない記憶媒体等に、第一受信部101が過去に受信した要求情報が示す処理識別情報と、処理が完了しているか否かを示すいわゆる完了フラグ等とを対応付けて蓄積するようにし、第一受信部101が受信した要求情報が有する処理識別情報と一致する処理識別情報と対応付けられて蓄積された完了フラグ等が、処理が完了していることを示すものであるか否かを判断することで、処理が完了しているか否かを判断するようにしてもよい。
判断部104は、通常、MPUやメモリ等から実現され得る。判断部104の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
実行部105は、第一受信部101が受信した要求情報が示す処理を実行する。例えば、要求情報が有する処理を指定する情報や、コマンドやメソッド等に応じて処理を実行する。また、例えば、要求情報が有する処理に利用される検索キー等のデータを用いて処理を実行する。なお、実行部105が要求情報に応じて処理を実行することについては、公知技術であるので、ここでは詳細な説明は省略する。
実行部105は、要求情報が示す処理の実行結果に関する情報と、要求情報が有する処理識別情報とを対応付けて格納部103に蓄積する。実行部105は、例えば、一の要求情報が示す処理を実行して、処理の実行結果に関する情報を取得し、この実行結果に関する情報と、一の要求情報が有する処理識別情報とを対応付けて、格納部103に蓄積する。この実施の形態においては、実行部105は、例えば、実行結果に関する情報と、処理識別情報とを有する実行結果管理情報を、格納部103に蓄積する。
実行部105は、第一受信部101が受信した要求情報が有する処理識別情報が示す処理が完了していると判断部104が判断した場合に、この要求情報が示す処理を実行しないようにする。例えば、実行部105は、一致する処理識別情報が格納されていると判断部104が判断した場合に、第一受信部101が受信した要求情報が示す処理を実行しないようにする。一致する処理識別情報が格納されているということは、上述したように、この処理識別情報が示す処理が完了していることを意味する。これにより、過去に実行した処理と同じ処理を実行部105が実行することを防ぐことができる。
実行部105は、通常、MPUやメモリ等から実現され得る。実行部105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
送信部106は、第二受信部102が問合せ情報を受信したタイミングにおいて、要求情報が示す処理が完了している場合に、この処理の結果に関する情報を、問合せ情報の送信元に送信する。問合せ情報を受信したタイミングとは、問合せ情報を受信した時点と考えてもよいし、問合せ情報を受信した時点から、予め指定された時間が経過するまでの時点と考えてもよい。また、「問合せ情報を受信したタイミングにおいて」とは、問合せ情報の受信をトリガーとして判断処理等の処理を行うことと考えてもよい。ここでの要求情報は、第二受信部102が受信した問合せ情報に対応する要求情報であり、問合せ情報が完了を問い合わせる処理を示す要求情報である。具体的には、問合せ情報と同じ処理識別情報を有する要求情報である。
送信部106は、例えば、問合せ情報を受信したタイミングにおいて、この問合せ情報に対応する要求情報が示す処理が完了しているか否かを判断する。具体的には、問合せ情報が有する処理識別情報と同じ処理識別情報を有する要求情報が示す処理が完了しているか否かを判断する。送信部106が、どのように、処理が完了しているか否かを問い合わせるかは問わない。例えば、問合せ情報が有する処理識別情報が示す処理が完了したか否かを、実行部105に問い合わせてもよい。この実施の形態においては、送信部106が、格納部103に、問合せ情報が有する処理識別情報と一致する処理識別情報が格納されているか否かを判断し、格納されている場合、実行部105による処理が完了したと判断し、格納されていない場合、処理が完了していないと判断する場合を例に挙げて説明する。なお、格納部103に問合せ情報が有する処理識別情報と一致する処理識別情報が格納されているか否かを判断することは、格納部103に問合せ情報が有する処理識別情報と一致する処理識別情報を有する実行結果管理情報が格納されているか否かを判断する処理と実質的に同じ処理と考えてよい。
送信部106は、処理が完了していると判断した場合、問合せ情報の送信元に、処理の実行結果に関する情報を送信する。例えば、送信部106は、問合せ情報に含まれる処理識別情報と一致する処理識別情報と対応付けられて格納部103に格納されている実行結果に関する情報を、処理の実行結果に関する情報として、問合せ情報の送信元に送信する。例えば、格納部103に格納されている実行結果管理情報のうちの、問合せ情報に含まれる処理識別情報と一致する処理識別情報を有する実行結果管理情報が有する実行結果に関する情報を、問合せ情報の送信元に送信する。同じ処理識別情報を有する要求情報と、問合せ情報とは、上述したように、通常、同じ送信元から送信された要求情報及び問合せ情報であることから、処理の実行結果に関する情報を問合せ情報の送信元に送信することは、同じ処理識別情報を有する要求情報の送信元に送信することと考えても良い。
なお、問合せ情報に含まれる処理識別情報と一致する処理識別情報が、格納部103に格納されているか否かにより、処理が完了したか否かを判断する代わりに、実行部105により、問合せ情報に含まれる処理識別情報が示す処理が実行中であるか否かを判断して、実行中でない場合に、処理が完了したと判断しても良い。
送信部106は、例えば、処理が完了していないと判断した場合には、送信元に何らかの情報を送信しなくてもよい。あるいは、処理が完了していないと判断した場合には、処理が完了していない旨の情報を送信しても良い。ここでの処理の完了は、処理のエラーによる終了も含むと考えても良い。
送信部106は、第一受信部101が受信した要求情報が有する処理識別情報が示す処理が完了していると判断部106が判断した場合に、受信した要求情報が有する処理識別情報と対応する処理の結果に関する情報を格納部103から取得して、要求情報の送信元に送信する。例えば、送信部106は、第一受信部101が受信した要求情報に含まれる処理識別情報と一致する処理識別情報が、格納部103に格納されていると判断部104が判断した場合に、受信した要求情報が有する処理識別情報と対応する処理の結果に関する情報を格納部103から取得して、要求情報の送信元に送信する。格納部103に一致する処理識別情報が格納されているということは、上述したように、この処理識別情報が示す処理が完了していることを意味する。このようにすることで、過去に実行した処理と同じ処理を実行部105が実行することを防ぐことができるとともに、同じ処理を示す要求情報を送信した送信元に対して、過去に送信した処理結果に関する情報と同じ処理結果に関する情報を送信することができる。
送信部106は、通常、無線または有線の通信手段で実現される。送信部106は、通信デバイスを含むと考えても、含まないと考えても良い。また、送信部106が、問合せ情報に応じた判断処理等を行うための処理は、例えば、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。送信部106のこれらの処理を行う部分は、例えば、MPUやメモリ等から実現され得る。
端末装置20は、ユーザからの操作に応じて、要求情報や、問合せ情報を、サーバ装置10に送信する装置である。端末装置20は、例えば、コンピュータや、携帯情報端末、携帯電話、いわゆるスマートフォン等の多機能情報端末、タブレット端末等で実現可能である。
操作受付部201は、ユーザからの操作を受け付ける。操作受付部201が受け付ける操作は、例えば、要求情報をサーバ装置10へ送信するための操作や、要求情報が示す処理を実行するために必要な情報を入力する操作等である。また、操作受付部201は、一旦送信した要求情報を、再送信する操作であるいわゆるリトライの操作であってもよい
ユーザからの操作の入力手段は、テンキーやキーボードやマウスやタッチパネル、メニュー画面によるもの等、何でも良い。操作受付部201は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
端末送信部202は、要求情報をサーバ装置10に送信する。端末送信部202は、処理識別情報を有する要求情報をサーバ装置10に送信する。端末送信部202は、例えば、処理識別情報を取得して、この処理識別情報を有する要求情報を取得する。ここでの取得は、例えば、生成等も含む概念である。例えば、端末送信部202は、予め用意されたアルゴリズム等を用いて処理識別情報を取得する。端末送信部202は、例えば、操作受付部201が受け付けた、処理を実行するために必要な情報等を有する要求情報を取得する。そして、端末送信部202は、取得した要求情報を、サーバ装置10に送信する。端末送信部202は、例えば、操作受付部201が受け付けた操作に応じて、この操作が示すサーバ装置10に、要求情報を送信する。また、端末送信部202は、操作受付部201が受け付けたリトライの操作に応じて、リトライの対象となる過去に送信された要求情報と同じ処理を示す要求情報であって、同じ処理識別情報を有する要求情報を、同じサーバ装置10に送信する。同じ処理識別情報は、新たに生成する必要はなく、例えば、前回送信した要求情報から取得すればよい。また、端末送信部202は、例えば、要求情報を送信後に、予め指定された条件を満たさなかった場合、例えば、サーバ装置10から予め指定された時間内に、予め指定された情報や、任意の情報を受信できなかった場合、再度、同じ処理識別情報を有する要求情報をサーバ装置10に送信するようにしてもよい。
端末送信部202は、1または2以上の問合せ情報を送信する。端末装置20は、例えば、一の要求情報を送信した後、この一の要求情報と同じ処理識別情報を有する問合せ情報を送信する。同じ処理識別情報は、新たに生成する必要はなく、例えば、先に送信した一の要求情報と同じ処理識別情報を取得すればよい。例えば、端末送信部202は、予め指定された時間の経過後に、問合せ情報を送信する。2以上の問合せ情報を送信する場合、端末送信部202は、例えば、各問合せ情報を予め指定された時間間隔を隔てて送信する。予め指定された時間間隔は、一定であっても、不定であってもよい。各問合せ情報を送信するか否かは、予め設定されている条件、例えば、処理の実行結果に関する情報を取得済みであるか否か等の条件に応じて決定してもよい。
端末送信部202は、通常、無線または有線の通信手段で実現される。端末送信部202は、通信デバイスを含むと考えても、含まないと考えても良い。
端末受信部203は、サーバ装置10から送信される情報を受信する。端末受信部203は、例えば、端末送信部202から送信される要求情報や問合せ情報に応じてサーバ装置10が送信する情報を受信する。例えば、端末受信部203は、要求情報が示す処理の実行結果に関する情報をサーバ装置10から受信する。例えば、端末受信部203は、端末送信部202が送信した要求情報が示す処理の実行結果に関する情報をサーバ装置10から受信する。
端末受信部203は、通常、無線または有線の通信手段で実現される。端末受信部203は、通信デバイスを含むと考えても、含まないと考えても良い。
端末出力部204は、端末受信部203が受信した情報を出力する。ここでの出力は、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
端末出力部204は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。端末出力部204は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、情報処理システム1のサーバ装置10の動作の一例について図2のフローチャートを用いて説明する。
(ステップS101)第一受信部101は、要求情報を受信したか否かを判断する。受信した場合、ステップS102に進み、受信していない場合、ステップS105に進む。
(ステップS102)判断部104は、格納部103に格納されている実行結果管理情報の中に、ステップS101で受信した要求情報が有する処理識別情報と一致する処理識別情報があるか否かを判断する。一致する処理識別情報がある場合、ステップS107に進み、ない場合、ステップS103に進む。
(ステップS103)第一受信部101は、要求情報の接続元との間で確立された接続を切断(解除)する。
(ステップS104)実行部105は、ステップS101で受信した要求情報が示す処理を実行開始する。そして、ステップS101に戻る。実行部105の実行は、例えば、他の処理と並列に実行されると考えても良い。
(ステップS105)第二受信部102は、問合せ情報を受信したか否かを判断する。問合せ情報を受信した場合、ステップS106に進み、受信していない場合、ステップS110に進む。
(ステップS106)送信部106は、格納部103に格納されている実行結果管理情報の中に、ステップS105で受信した問合せ情報が有する処理識別情報とあるか否かを判断する。一致する処理識別情報がある場合、ステップS107に進み、ない場合、ステップS109に進む。
(ステップS107)送信部106は、格納部103に格納されている実行結果管理情報から、直前のステップS101で受信した要求情報、または直前のステップS105で受信した問合せ情報が有する処理識別情報と対応付けられた実行結果に関する情報を取得する。例えば、送信部106は、ステップS102またはステップS107で検出した要求情報または問合せ情報が有する処理識別情報と一致する処理識別情報を有する実行結果管理情報から、実行結果に関する情報を取得する。
(ステップS108)送信部106は、ステップS107で取得した実行結果に関する情報を要求情報の送信元または問合せ情報の送信元に送信する。そして、ステップS101に戻る。なお、この情報の送信により、例えば、送信元との接続は切断(解除)される。
(ステップS109)送信部106は、実行部105が要求情報に応じて実行している処理が完了していないことを示す情報を、問合せ情報の送信元に送信する。そして、ステップS101に戻る。この情報の送信により、例えば、送信元との接続は切断(解除)される。なお、処理が完了していないことを示す情報を送信する代わりに、ステップS103と同様に、第二受信部102が、問合せ情報の接続元との間で確立された接続を切断(解除)するようにしてもよい。
(ステップS110)実行部110は、要求情報が示す処理の実行が完了したか否かを判断する。処理の実行が完了した場合、ステップS111に進み、完了していない場合、ステップS101に戻る。
(ステップS111)実行部105は、実行が修了した処理の実行結果に関する情報を、この処理を示す処理識別情報、即ちこの処理の実行を要求する要求情報が有する処理識別情報と対応付けて格納部103に蓄積する。例えば、実行部105は、実行結果に関する情報と、処理識別情報とを有する実行結果管理情報を、格納部103に蓄積する。そして、ステップS101に戻る。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
以下、端末装置20の動作について簡単に説明する。端末送信部202は、操作受付部201が受け付けた操作に応じて、処理識別情報を有する要求情報を取得し、取得した要求情報をサーバ装置10に送信する。また、端末装置20は、同じ識別情報を有する問合せ情報を、サーバ装置10に送信する。また、サーバ装置10から要求情報に応じて実行された処理の実行結果に関する情報が取得できない場合等においては、必要に応じて、端末送信部202が同じ要求情報を再送する。即ち、要求情報の送信のリトライを行う。また、端末受信部203は、問合せ情報に応じて、サーバ装置10から送信される情報等を受信する。例えば、端末受信部203は、サーバ装置10から送信される要求情報に対応した実行結果に関する情報を受信する。端末出力部204は、サーバ装置10から受信した情報、例えば実行結果に関する情報等を出力する。
以下、本実施の形態における情報処理システム1の具体的な動作について説明する。ここでは、一例として、サーバ装置10が、企業等で利用される会計処理ソフトウェアを実行するサーバ装置であり、端末装置20が、この会計処理ソフトウェアに対して入出力を行うクライアントソフトウェアを実行する端末装置である場合を例に挙げて説明する。
例えば、端末装置20を利用するユーザが、ユーザ登録を行うために、ユーザ登録を行う画面等(図示せず)を表示して、キーボード等からユーザ名等の情報を入力する操作を行い、登録を実行するための実行コマンド等を入力したとする。端末装置20の操作受付部201は、ユーザからのこれらの操作を受け付ける。
そして、端末送信部202は、この操作に応じて、ユーザ登録を実行する処理を要求する要求情報を取得する。この要求情報は、処理識別情報を有する要求情報である。この処理識別情報は、例えば、予め指定されたアルゴリズム等を利用して生成される。ここでは、一例として、端末送信部202は、日付と、乱数とを組み合わせた処理識別情報を生成する。端末送信部202が生成した、この要求情報が有する処理識別情報は、例えば、「20130808345789」であったとする。また、この要求情報は、ユーザがユーザ登録用に入力したユーザ名「日本太郎」等の情報を有するものとする。
端末送信部202は、取得した要求情報を、ネットワークを介してサーバ装置10に送信する。
図3は、格納部103に格納されている実行結果管理情報を管理する実行結果管理表である。実行結果管理表は、「処理ID」と「結果」という属性を有している。「処理ID」は、処理識別情報である。「結果」は、実行結果に関する情報である。「結果」の属性値「ユーザ登録完了」は、例えば、ユーザ登録の処理が完了したことを示す情報である。また、「結果」の属性値「syukei.csv」は、例えば、ユーザにより指定されたデータの集計結果を示すファイルであるとする。この実行結果管理表の各レコード(行)が、ここでは、一の実行結果管理情報である。
第一受信部101は、端末送信部202から要求情報を受信する。判断部104は、第一受信部101が受信した要求情報から上記の処理識別情報「20130808345789」を取得し、この処理識別情報と一致する処理識別情報が、図3に示した実行結果管理表に格納されているか否かを判断する。
ここでは、図3に示した実行結果管理表のレコードに、「処理ID」の値が、処理識別情報「20130808345789」に一致するレコードがないため、判断部104は、一致する処理識別情報が格納部103に格納されていないと判断する。
第一受信部101は、端末装置20との接続を切断する。
実行部105は、第一受信部101が受信した要求情報が示す処理の実行を開始する。具体的には、要求情報が有するユーザ名「日本太郎」等の情報を用いて、ユーザ登録の処理を開始する。
実行部105によるユーザ登録の処理が完了した場合、実行部105は、処理の実行結果に関する情報を取得する。ここでは、ユーザ登録の処理が正常に完了したため、例えば、予めユーザ登録の処理と対応付けられて図示しない記憶媒体等に格納されていた「ユーザ登録完了」という文字列の情報を取得したとする。
実行部105は取得した文字列「ユーザ登録完了」と、この処理を示す要求情報が有する処理識別情報である「20130808345789」とを有する実行結果管理情報を、格納部103に追記する。具体的には、「処理ID」が「20130808345789」であり、「結果」が「ユーザ登録完了」であるレコードを、図3に示した実行結果管理表に追記する。
図4は、実行結果管理情報を追記した実行結果管理表を示す図である。
端末装置20の端末送信部202は、要求情報を送信してから予め指定された時間が経過後、上記の要求情報と同じ処理識別情報「20130808345789」を有する問合せ情報をサーバ装置10に送信する。この処理識別情報は、例えば、要求情報を取得した際に生成した処理識別情報を、図示しない記憶媒体等に蓄積しておくようにして、これを適宜読み出すようにすればよい。
第二受信部102が、端末装置20から問合せ情報を受信すると、送信部106は、第二受信部102が受信した問合せ情報から上記の処理識別情報「20130808345789」を取得する。そして、送信部106は、この処理識別情報と一致する処理識別情報を有する実行結果管理情報が、図4に示した実行結果管理表に格納されているか否かを判断する。
ここでは、一番下のレコードの「処理ID」の値が一致するため、送信部106は、一致する処理識別情報を有する実行結果管理情報が、実行結果管理表に格納されていると判断する。問合せ情報が有する処理識別情報が示す処理の実行結果に関する情報が格納されていることから、問合せ情報により問い合わせられた処理の実行が完了していると考えられる。
送信部106は、上記で「処理ID」の値が、問合せ情報の処理識別情報「20130808345789」と一致すると判断された実行結果識別情報の「結果」の値である「ユーザ登録完了」を問合せ情報に対応した情報として、図4に示した実行結果管理表から取得する。そして、送信部106は、取得した文字列「ユーザ登録完了」を端末装置20に送信する。
端末装置20の端末受信部203が文字列「ユーザ登録完了」を受信すると、端末出力部204は、受信した文字列をモニタ等に表示する。これにより、ユーザに要求情報が示すユーザ登録の処理が完了したことを通知することができる。
ここで、仮に、問合せ情報から取得した処理識別情報「20130808345789」と一致する処理識別情報を有する実行結果管理情報が、実行結果管理表に格納されていなかった場合について説明する。送信部106は、端末装置20に対して、処理が完了していないことを示す情報、例えば、「未完了」等の情報を送信する。この情報は、処理が完了していないことを端末装置20が判断可能な情報であればよい。なお、この情報に処理識別情報を付与して端末装置20に送信するようにしても良い。
端末装置20の端末受信部203が、処理が完了していないことを示す情報を受信すると、端末送信部202は、上記と同様に、問合せ情報を送信する処理を繰り返し行う。この場合、例えば、前回問合せ情報を送信してから、予め指定された時間が経過した後に、問合せ情報を再度送信する。
ここで、例えば、端末装置20の端末受信部203等が、要求情報を送信してから、サーバ装置10から処理の実行結果に関する情報を受信したか否かを確認する処理を、一定または不定のタイミングで繰り返していたとする。そして、予め設定された時間が経過した時点で、端末受信部203が、サーバ装置10から処理の実行結果に関する情報を受信できなかった場合について説明するする。ここでは、この予め設定された時間を、待機設定時間と呼ぶ。待機設定時間は、例えば、その時間内に、問合せ情報が少なくとも一回以上送信可能な時間であるとする。また、サーバ装置10から処理の実行結果に関する情報を受信したか否かを確認するタイミングも、待機設定時間よりも短い時間が経過したタイミングであるとする。
この場合、端末出力部204は、例えば、要求情報に対応した処理の実行結果が得られなかったことを示す旨の出力と、要求情報の再送信、即ちいわゆるリトライを行うか否かを尋ねる旨の出力を、図示しないもモニタ等に行う。ここでの処理や出力は、いわゆるタイムアウト等の際の処理や出力と同様のものと考えても良い。例えば、端末出力部204は、「サーバ装置から実行結果が取得できません。再度、要求情報の送信を行いますか。」等のダイアログを出力する。
そして、この出力に応じて、ユーザが、要求情報の再送信を行うための操作を行ったとすると、端末送信部202は、処理識別情報「20130808345789」を有する上記と同じ要求情報をサーバ装置10に送信する。
サーバ装置10の第一受信部101が、再送信された要求情報を受信すると、判断部104は、上記と同様に、第一受信部101が受信した要求情報から上記の処理識別情報「20130808345789」を取得する。そして、この処理識別情報と一致する処理識別情報を有する実行結果管理情報が、格納部103に格納されているか否かを判断する。
ここで、仮に、端末装置20から前回受信した要求情報に応じて実行部105が実行した処理が既に完了していたが、通信障害等により、処理結果に関する情報が、サーバ装置10から端末装置20に送信されていなかった場合について説明する。この場合、この実行結果に関する情報を含む実行結果管理情報が、既に実行結果管理表に格納されており、実行結果管理表が上記と同様に図4に示すようになっていたとする。
図4に示された実行管理表の一番下のレコードの、「処理ID」の値「20130808345789」は、再送信された要求情報から取得した処理識別情報「20130808345789」と一致する。このため、判断部104は、要求情報から取得した処理識別情報と一致する処理識別情報を有する実行結果管理情報が、格納部103に格納されているという判断結果を得る。
このため、実行部105は、この再度受信した要求情報が示す処理は実行しない。そして、送信部106は、格納部103に格納されている実行結果管理情報のうちの、判断部104が一致すると判断した処理識別情報を有する実行結果管理情報の「結果」の値である実行結果に関する情報を読み出し、要求情報の送信元である端末装置20に送信する。以下の処理は、上述した実行結果に関する情報を送信する処理以降の処理と同様である。
以下、仮に、最初に送信した要求情報を、ネットワークの不具合等によりサーバ装置10の第一受信部101が受信できず、この結果、実行部105が要求情報が示す処理を実行せず、実行結果に関する情報が端末装置20に送信できず、その結果、再度同じ処理を示す要求情報を受信した場合について説明する。
この場合、実行結果管理表は、図3と同様のものとなり、「処理ID」の値が、再度受信した要求情報の処理識別情報「20130808345789」に一致するレコードがないため、判断部104は、一致する処理識別情報が格納部103に格納されていないと判断する。
このため、実行部105は、再度受信した要求情報が示す処理を実行する。これにより、要求情報が受信できなかったために実行できなかった処理を、再度実行することが可能となる。そして、サーバ装置10は、上記と同様に、例えば、要求情報の次に端末装置20から受信される問合せ情報に応じて、実行結果に関する情報等を端末装置20に送信する処理等を行う。
なお、上記の具体例においては、実行結果に関する情報として、実行結果を示す文字列の情報を送信する例について説明したが、例えば、図4の実行結果管理表の上から三列目のレコードの「結果」の値「syukei.csv」のように、要求情報が示す処理の実行結果により得られたデータ等を、実行結果に関する情報として、端末装置20等に送信しても良い。なお、実行結果管理表の「結果」の値が、実行結果のデータが格納されるパスの情報や、ポインタの情報である場合、このパスやポインタが示すデータを、実行結果に関する情報と考えても良い。
以上、本実施の形態によれば、要求情報を受信した場合に、この要求情報が示す処理を実行し、この要求情報が示す処理の問合せ情報を受信したタイミングにおいて、この処理が完了している場合に、処理の実行結果に関する情報を問合せ情報の送信元に送信するようにした。これにより、サーバ装置と要求情報の送信元との接続時間を短くして他の要求情報等の受信を妨げないようにした場合においても、処理の実行結果に関する情報を、適切に、処理の要求元に送信することができる。
また、本実施の形態によれば、処理の実行結果に関する情報と対応付けて格納されている処理識別情報と一致する処理識別情報を有する要求情報を受信した場合に、この要求情報が示す処理を実行しないようにし、この要求情報が有する処理識別情報と対応付けて格納されている処理の実行結果に関する情報を、要求情報の送信元に送信するようにした。これにより、実行か完了している処理と同じ処理を示す要求情報を受け付けた場合に、再度、同じ処理を実行しないようにして、無駄な処理が実行されないようにすることができるとともに、同じ処理を示す要求情報を受信した場合には、同じ処理結果に関する情報を要求情報の送信元に送信することができる。
なお、上記実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、上記実施の形態において、一の装置に存在する2以上の通信手段(第一受信部、第二受信部、及び送信部のうちの2以上や、端末送信部と端末受信部等)は、物理的に一の媒体で実現されても良いことは言うまでもない。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部(例えば、ハードディスクやメモリ等の記録媒体)にアクセスしながらプログラムを実行してもよい。
なお、上記各実施の形態におけるサーバ装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、任意の処理の実行を要求する情報である要求情報を受信する第一受信部と、第一受信部が受信した要求情報が示す処理を実行する実行部と、要求情報が示す処理の完了を問い合わせる情報である1または2以上の問合せ情報を受信する第二受信部と、第二受信部が問合せ情報を受信したタイミングにおいて、前記要求情報が示す処理が完了している場合に、当該処理の実行結果に関する情報を、問合せ情報の送信元に送信する送信部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図5は、上記プログラムを実行して、上記実施の形態によるサーバ装置等を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図5において、コンピュータシステム900は、CD−ROM(Compact Disk Read Only Memory)ドライブ905、FD(Floppy(登録商標) Disk)ドライブ906を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図6は、コンピュータシステム900の内部構成を示す図である。図6において、コンピュータ901は、CD−ROMドライブ905、FDドライブ906に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM(Random Access Memory)913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANへの接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態によるサーバ装置等の機能を実行させるプログラムは、CD−ROM921、またはFD922に記憶されて、CD−ROMドライブ905、またはFDドライブ906に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921やFD922、またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、上記実施の形態によるサーバ装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。