(57)【要約】【課題】サーバの負荷を軽減しつつ一連の処理の実行を保証すること。【解決手段】制御プログラムは、順序付けられた複数の処理のうち、いずれかの処理の実行要求を受け付ける処理をコンピュータに実行させる。また、制御プログラムは、複数の処理のうち、実行要求を受け付ける前に実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部を参照する処理をコンピュータに実行させる。また、制御プログラムは、受け付けたいずれかの処理と、記憶部に記憶された処理との間の順序関係が特定関係であるか否かの判定を行う処理をコンピュータに実行させる。また、制御プログラムは、判定の結果に基づき、受け付けたいずれかの処理の実行順序に関する優先度を制御する処理をコンピュータに実行させる。【選択図】図２
2020004000.tif 000002
【特許請求の範囲】
【請求項１】
順序付けられた複数の処理のうち、いずれかの処理の実行要求を受け付け、
前記複数の処理のうち、前記実行要求を受け付ける前に前記実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部を参照して、受け付けた前記いずれかの処理と、前記記憶部に記憶された前記処理との間の順序関係が特定関係であるか否かの判定を行い、
前記判定の結果に基づき、受け付けた前記いずれかの処理の実行順序に関する優先度を制御する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【請求項２】
前記判定を行う処理は、前記実行要求の要求元から受け付けた実行要求に応じて実行された処理であって、実行に成功した処理を記憶する記憶部を参照することを特徴とする請求項１に記載の制御プログラム。
【請求項３】
前記判定を行う処理は、前記実行要求の要求元から受け付けた実行要求に応じて実行された処理および期限を示す日時を記憶する記憶部を参照して、前記期限を経過しているか否かの判定をさらに行い、
前記制御する処理は、前記判定を行う処理によって、前記順序関係が特定関係であって、かつ前記期限を経過していると判定された場合、受け付けた前記いずれかの処理の実行順序に関する優先度を制御することを特徴とする請求項１に記載の制御プログラム。
【請求項４】
前記判定を行う処理は、前記実行要求の要求元から受け付けた実行要求に応じて実行された処理および当該処理に対応するユーザを識別する情報を記憶する記憶部を参照して、前記いずれかの処理に対応するユーザと、前記記憶部に記憶された前記処理に対応するユーザとが同一であるか否かの判定をさらに行い、
前記制御する処理は、前記判定を行う処理によって、前記順序関係が特定関係であって、かつ前記いずれかの処理に対応するユーザと、前記記憶部に記憶された前記処理に対応するユーザとが同一であると判定された場合、受け付けた前記いずれかの処理の実行順序に関する優先度を制御することを特徴とする請求項１に記載の制御プログラム。
【請求項５】
前記制御する処理は、受け付けた前記いずれかの処理ごとに定められた回数を上限として、前記いずれかの処理の実行順序に関する優先度を制御することを特徴とする請求項１に記載の制御プログラム。
【請求項６】
前記制御する処理は、前記判定の結果に基づき、受け付けた前記いずれかの処理を実行するサーバへ、前記いずれかの処理の実行要求を転送する順序を変更することにより優先度を制御することを特徴とする請求項１に記載の制御プログラム。
【請求項７】
順序付けられた複数の処理のうち、いずれかの処理の実行要求を受け付け、
前記複数の処理のうち、前記実行要求を受け付ける前に前記実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部を参照して、受け付けた前記いずれかの処理と、前記記憶部に記憶された前記処理との間の順序関係が特定関係であるか否かの判定を行い、
前記判定の結果に基づき、受け付けた前記いずれかの処理の実行順序に関する優先度を制御する、
処理をコンピュータが実行することを特徴とする制御方法。
【請求項８】
順序付けられた複数の処理のうち、いずれかの処理の実行要求を受け付け、
前記複数の処理のうち、前記実行要求を受け付ける前に前記実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部を参照して、受け付けた前記いずれかの処理と、前記記憶部に記憶された前記処理との間の順序関係が特定関係であるか否かの判定を行う判定部と、
前記判定の結果に基づき、受け付けた前記いずれかの処理の実行順序に関する優先度を制御する優先度制御部と、
を有することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラム、制御方法および制御装置に関する。
【背景技術】
【０００２】
Ｗｅｂサービスの提供において、サーバは、クライアントからの要求に応じて、複数の処理を順番に実行する場合がある。例えば、Ｗｅｂショッピングにおいて、サーバは、商品をカートに追加する処理、住所を入力する処理、支払い方法を選択する処理、購入を確定する処理といった一連の処理を、それぞれクライアントからのＡＰＩ（Application  Programming  Interface）リクエストに応じて順番に行う。
【０００３】
このとき、一連の処理が途切れてしまうと、ユーザの満足度の低下やサーバの負荷の増加が起こることがある。例えば、Ｗｅｂショッピングにおいて、前述の一連の処理がエラーやタイムアウト等により途中で途切れてしまうと、ユーザは既に行った操作を最初からやり直すことになる。これにより、サーバへのリクエストが増加し、さらにはユーザの目的の商品が売り切れてしまうことが考えられる。
【０００４】
これに対し、従来、サーバが、リクエスト成功時にレスポンスにトークンを付与し、次回トークンを持つリクエストを優先処理することで、一連の処理が途切れることを防止する方法が知られている。また、サーバを複数用意し、クライアントとサーバとの間に設置したリバースプロキシが、トークンを付与したリクエストを複数のサーバのいずれかに振り分けることで負荷を軽減する方法が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−８７３１２号公報
【特許文献２】特開２００７−３２９６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の方法では、一連の処理の実行を保証するために、サーバの負荷が増加することがある。例えば、従来のトークンを付与する方法には、トークンの管理または整合性の確認をサーバが行うことから、サーバの負荷がかえって増加するという問題がある。
【０００７】
一つの側面では、一連の処理の実行を保証することによるサーバ負荷の軽減をはかることができる制御プログラム、制御方法および制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
一つの態様では、制御プログラムは、順序付けられた複数の処理のうち、いずれかの処理の実行要求を受け付ける処理をコンピュータに実行させる。また、制御プログラムは、複数の処理のうち、実行要求を受け付ける前に実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部を参照する処理をコンピュータに実行させる。また、制御プログラムは、受け付けたいずれかの処理と、記憶部に記憶された処理との間の順序関係が特定関係であるか否かの判定を行う処理をコンピュータに実行させる。また、制御プログラムは、判定の結果に基づき、受け付けたいずれかの処理の実行順序に関する優先度を制御する処理をコンピュータに実行させる。
【発明の効果】
【０００９】
一連の処理の実行を保証することによるサーバ負荷の軽減をはかることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例の制御システムの構成の一例を示すブロック図である。
【図２】図２は、実施例の制御装置の構成の一例を示すブロック図である。
【図３】図３は、処理情報記憶部の一例を示す図である。
【図４】図４は、トークン記憶部の一例を示す図である。
【図５】図５は、トークンの登録を説明するための図である。
【図６】図６は、優先制御を説明するための図である。
【図７】図７は、実施例のレスポンス受け付け時の処理の一例を示すフローチャートである。
【図８】図８は、実施例のリクエスト受け付け時の処理の一例を示すフローチャートである。
【図９】図９は、制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本願の開示する制御プログラム、制御方法および制御装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１２】
図１を用いて、制御システム１の構成について説明する。図１は、実施例の制御システムの構成の一例を示すブロック図である。図１に示すように、制御システム１は、制御装置１０、端末２０およびサーバ３０を有する。
【００１３】
例えば、端末２０は、スマートフォンおよびパーソナルコンピュータである。また、例えば、サーバ３０は、Ｗｅｂショッピング等のサービスを提供するためのＷｅｂサーバである。また、制御装置１０は、ＡＧＷ（ＡＰＩ  Ｇａｔｅｗａｙ）として機能する装置である。制御装置１０は、端末２０からのリクエストをサーバ３０に転送し、サーバ３０から返却されたレスポンスを端末２０に転送する。その際、制御装置１０は、サーバ３０の負荷を軽減しつつ、一連の処理を保証するための制御を実行する。なお、一連の処理とは、順序付けられた複数の処理である。
【００１４】
図２を用いて、制御装置１０の構成について説明する。図２は、実施例の制御装置の構成の一例を示すブロック図である。図２に示すように、制御装置１０は、通信部１１と、記憶部１２と、制御部１３とを有する。なお、制御装置１０は、図１に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
【００１５】
通信部１１は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１は、ネットワークを介して有線または無線で接続された端末２０、サーバ３０および他の装置との間で情報の通信を司る通信インタフェースである。
【００１６】
記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２は、処理情報記憶部１２１およびトークン記憶部１２２を有する。また、記憶部１２は、制御部１３での処理に用いる情報を記憶する。
【００１７】
処理情報記憶部１２１は、一連の処理を定義するための情報を記憶する。図３は、処理情報記憶部の一例を示す図である。図３に示すように、処理情報記憶部１２１は、複数の処理のそれぞれについて、順序、リクエストおよび処理名を記憶する。順序は、一連の処理の中で各処理が実行される順序である。また、リクエストは、各処理が実行される際に、端末２０から送信されるリクエストのコマンドである。また、処理名は、各処理の名称である。
【００１８】
図３の例では、処理情報記憶部１２１は、一連の処理の中で１番目に実行される、処理名が「カート追加」である処理のリクエストのコマンドが「[POST]/cart」であることを記憶する。また、図３の例では、処理情報記憶部１２１は、一連の処理の中で３番目に実行される、処理名が「支払い選択」である処理のリクエストのコマンドが「[POST]/payment」であることを記憶する。図３の例では、「カート追加」、「住所入力」、「支払い選択」および「購入確定」は、Ｗｅｂショッピングにおける一連の処理である。
【００１９】
トークン記憶部１２２は、端末２０を利用するユーザごとに、一連の処理の進捗状況を示す情報であるトークンを記憶する。トークン記憶部１２２は、実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部の一例である。なお、実行要求の要求元とは、リクエストを送信した端末２０である。
【００２０】
図４は、トークン記憶部の一例を示す図である。図４に示すように、トークン記憶部１２２は、ユーザＩＤ、処理進捗および有効期限を記憶する。ユーザＩＤは、端末２０を利用するユーザを識別する情報である。また、処理進捗は、一連の処理における処理の進捗状況を示す情報であり、実行された処理の処理名およびリクエストである。また、有効期限は、トークン記憶部１２２に記憶された各情報を使用可能な期限を示す情報である。
【００２１】
図２の説明に戻って、制御部１３は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３は、受付部１３１、転送部１３２、管理部１３３、判定部１３４、優先度制御部１３５を有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００２２】
受付部１３１は、端末２０からサーバ３０に宛てられるリクエストを受け付ける。また、受付部１３１は、サーバ３０から端末２０に返却されるレスポンスを受け付ける。ここで、受付部１３１は、受け付けたリクエストおよびレスポンスをキューに追加する。また、受付部１３１は、優先度制御部１３５による制御に従って、リクエストおよびレスポンスをキューに追加する。また、転送部１３２は、キューに従ってリクエストおよびレスポンスを、それぞれサーバ３０および端末２０に転送する。
【００２３】
管理部１３３は、トークンの管理を行う。管理部１３３は、判定部１３４による判定の結果に従って、トークン記憶部１２２へのトークンの登録およびトークン記憶部１２２に記憶されたトークンの更新を行う。
【００２４】
判定部１３４は、順序付けられた複数の処理のうち、受け付けたいずれかの処理の実行要求を受け付けると、複数の処理のうち、実行要求を受け付ける前に実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶するトークン記憶部１２２を参照する。また、判定部１３４は、いずれかの処理と、トークン記憶部１２２に記憶された処理との間の順序関係が特定関係であるか否かの判定を行う。例えば、判定部１３４は、各処理の順序が連続しているか否かの判定を行う。
【００２５】
また、トークン記憶部１２２は、実行に成功した処理についてトークンを記憶するようにしてもよい。その場合、判定部１３４は、実行要求の要求元から受け付けた実行要求に応じて実行された処理であって、実行に成功した処理を記憶するトークン記憶部１２２を参照する。
【００２６】
また、判定部１３４は、実行要求の要求元から受け付けた実行要求に応じて実行された処理および期限を示す日時を記憶するトークン記憶部１２２を参照して、期限を経過しているか否かの判定をさらに行うことができる。
【００２７】
また、判定部１３４は、実行要求の要求元から受け付けた実行要求に応じて実行された処理および当該処理に対応するユーザを識別する情報を記憶するトークン記憶部１２２を参照する。また、判定部１３４は、いずれかの処理に対応するユーザと、トークン記憶部１２２に記憶された処理に対応するユーザとが同一であるか否かの判定をさらに行う。
【００２８】
優先度制御部１３５は、判定の結果に基づき、受け付けたいずれかの処理の実行順序に関する優先度を制御する。また、優先度制御部１３５は、判定部１３４によって、順序関係が特定関係であって、かつ期限を経過していると判定された場合、受け付けたいずれかの処理の実行順序に関する優先度を制御することができる。
【００２９】
また、優先度制御部１３５は、順序関係が特定関係であって、いずれかの処理に対応するユーザとトークン記憶部１２２に記憶された処理に対応するユーザとが同一であると判定された場合、いずれかの処理の実行順序に関する優先度を制御することができる。
【００３０】
優先度制御部１３５は、受け付けたいずれかの処理ごとに定められた回数を上限として、いずれかの処理の実行順序に関する優先度を制御する。優先度制御部１３５は、判定の結果に基づき、受け付けたいずれかの処理を実行するサーバへ、いずれかの処理の実行要求を転送する順序を変更することにより優先度を制御することができる。
【００３１】
ここで、図５を用いて、制御装置１０がトークンを登録する処理について説明する。図５は、トークンの登録を説明するための図である。図５の例では、端末２０は、ユーザＩＤが「１２３」であるユーザによって利用されているものとする。また、初期状態では、トークン記憶部１２２は、ユーザＩＤが「１２３」であるユーザのトークンを記憶していないものとする。なお、本実施形態では、サーバ３０は、ＲＥＳＴ  ＡＰＩを用いてコマンドの受け付けおよび処理の実行を行うものとする。
【００３２】
端末２０は、Ｗｅｂショッピングにおいて、商品をカートに追加するために、「[POST]/cart?item=aaa」というコマンドをリクエストとして送信する。このとき、制御装置１０の受付部１３１は、端末２０によって送信されたリクエストを受け付ける。ここで、転送部１３２は、受付部１３１によって受け付けられたリクエストをサーバ３０に転送する。
【００３３】
その後、受付部１３１は、さらに、転送部１３２によって転送されたリクエストに対する処理が成功したことを示す「200  OK」というレスポンスを、サーバ３０から受け付ける。ここで、管理部１３３は、レスポンスから処理が成功したことを確認できた場合、対応するトークンをトークン記憶部１２２に登録する。具体的には、管理部１３３は、ユーザＩＤが「１２３」、処理進捗が「カート追加:[POST]/cart」、有効期限が「2018/6/12  19:12」であるトークンをトークン記憶部１２２に登録する。
【００３４】
管理部１３３は、処理情報記憶部１２１を参照し、成功した処理のリクエストの処理名およびリクエストを合わせた情報をトークンの処理進捗に設定することができる。また、管理部１３３は、レスポンスが受け付けられた時刻から所定時間後の時刻を、トークン記憶部１２２の有効期限とすることができる。例えば、レスポンスが受け付けられた時刻が「2018/6/12  19:02」であった場合、管理部１３３は、１０分後の「2018/6/12  19:12」を、トークン記憶部１２２の有効期限とすることができる。
【００３５】
次に、図６を用いて、制御装置１０が行う優先制御について説明する。図６は、優先制御を説明するための図である。図６の例では、端末２０ａは、ユーザＩＤが「１２３」であるユーザによって利用されているものとする。また、端末２０ｂは、ユーザＩＤが「４５６」であるユーザによって利用されているものとする。なお、端末２０ａおよび端末２０ｂの構成は、端末２０の構成と同様であるものとする。
【００３６】
また、初期状態では、トークン記憶部１２２は、ユーザＩＤが「１２３」、処理進捗が「カート追加:[POST]/cart」、有効期限が「2018/6/12  19:12」であるトークンを記憶しているものとする。
【００３７】
端末２０ａは、Ｗｅｂショッピングにおいて、商品をカートに追加した後、住所を入力するために、「[POST]/address」というコマンドをリクエストとして送信する。このとき、制御装置１０の受付部１３１は、端末２０ａによって送信されたリクエストを受け付ける。
【００３８】
ここで、判定部１３４は、受付部１３１によって受け付けられたリクエストが、優先制御の対象であるか否かを判定する。判定部１３４は、端末２０ａからリクエストを送信したユーザのユーザＩＤが、トークン記憶部１２２に記憶されているトークンのユーザＩＤと合致しているか否かを判定する。さらに、判定部１３４は、処理情報記憶部１２１を参照し、受付部１３１によって受け付けられたリクエストが、トークン記憶部１２２に記憶されているトークンの処理進捗の次の順序のものであるか否かを判定する。また、判定部１３４は、トークン記憶部１２２に記憶されているトークンの有効期限が経過しているか否かを確認する。
【００３９】
例えば、図６の例では、リクエストを送信したユーザのユーザＩＤは「１２３」であり、トークンのユーザＩＤと合致する。また、図３によれば、処理名が「住所入力」である処理の順序は２であり、処理名が「カート追加」である処理の次の順序である。また、リクエストがあった日時は、「2018/6/12  19:08」であるものとする。このとき、判定部１３４は、当該リクエストが優先制御の対象であると判定する。
【００４０】
優先度制御部１３５は、判定部１３４によって優先制御の対象であると判定されたリクエストが、既にキューにあるリクエストに優先して、キューの先頭に設定されるように制御する。ここで、受付部１３１は、優先度制御部１３５による優先制御に従って、リクエストをキューに追加する。
【００４１】
つまり、優先制御の対象であると判定されたリクエストはキューの先頭に追加されるので、転送部１３２は、キューの先頭に追加された当該リクエストを他のリクエストに優先してサーバ３０に転送する。その結果、優先制御の対象であると判定されたリクエストは、サーバ３０において優先して処理されることになる。
【００４２】
その後、受付部１３１は、さらに、転送部１３２によって転送されたリクエストに対する処理が成功したことを示す「200  OK」というレスポンスを、サーバ３０から受け付ける。ここで、管理部１３３は、レスポンスから処理が成功したことを確認できた場合、トークン記憶部１２２のトークンを更新する。具体的には、管理部１３３は、ユーザＩＤが「１２３」、処理進捗が「カート追加:[POST]/cart」、有効期限が「2018/6/12  19:12」であるトークンの処理進捗を「住所入力:[POST]/address」に更新し、有効期限を「2018/6/12  19:22」に更新する。
【００４３】
一方、ユーザＩＤが「４５６」であるユーザから、「[POST]/cart?item=bbb」というコマンドがリクエストとして送信された場合、当該リクエストに対応するトークンはトークン記憶部１２２に存在しない。このため、判定部１３４は、当該リクエストを優先対象でないものと判定する。この場合、当該リクエストは、キューの最後尾に設定される。
【００４４】
また、優先度制御部１３５は、トークンが登録または更新された後、当該トークンが次に更新されるまでの間、特定の回数だけ優先制御を行うようにしてもよい。例えば、優先度制御部１３５は、トークンが登録または更新された後、１回だけ優先制御を行うようにすることができる。
【００４５】
また、リクエストとトークンの処理進捗の順序が特定の関係にない場合、判定部１３４は、リクエストを優先制御の対象と判定しない。例えば、ユーザが住所入力画面に進んだ後に「back  space」ボタンを押すことで、再度、商品選択画面に戻り、新たに商品をカートに追加する処理を行ったとしても、判定部１３４は、当該カート追加に関する処理を優先制御の対象と判定しない。これは、トークンの処理進捗である「住所入力」の次の処理は、「支払い選択」であることから、「支払い選択」以外の処理は優先対象とならないためである。
【００４６】
次に、実施例の制御装置１０の動作について説明する。図７は、実施例のレスポンス受け付け時の処理の一例を示すフローチャートである。また、図８は、実施例のリクエスト受け付け時の処理の一例を示すフローチャートである。
【００４７】
図７に示すように、制御装置１０は、サーバ３０からレスポンスを受け付ける（ステップＳ１１）。ここで、制御装置１０は、処理情報記憶部１２１を参照し、当該レスポンスに対応するリクエストが一連の処理に含まれていて、かつ処理が成功しているか否かを判定する（ステップＳ１２）。
【００４８】
制御装置１０は、リクエストが一連の処理に含まれていて、かつ処理が成功している場合（ステップＳ１２：肯定）、トークンを登録し（ステップＳ１３）、レスポンス受け付け時の処理を終了する。一方、制御装置１０は、リクエストが一連の処理に含まれていないか、処理が成功していない場合（ステップＳ１２：否定）、トークンを登録せずにステップＳ１１に戻り、次のリクエストを受け付ける。なお、制御装置１０は、処理が成功しているか否かにかかわらずトークンを登録するようにしてもよい。これにより、制御装置１０は、優先制御に使用されるトークンを登録することができる。
【００４９】
次に、図８に示すように、制御装置１０は、端末２０からリクエストを受け付ける（ステップＳ２１）。ここで、制御装置１０は、受け付けたリクエストが一連の処理の２つ目以降の処理であるか否かを判定する（ステップＳ２２）。このとき、制御装置１０は、受け付けたリクエストが一連の処理の２つ目以降の処理でない場合（ステップＳ２２：否定）、ステップＳ２１に戻り、次のリクエストを受け付ける。
【００５０】
一方、制御装置１０は、受け付けた処理が一連の処理の２つ目以降の処理である場合（ステップＳ２２：肯定）、受け付けた処理が優先制御の対象であるか否かを判定する（ステップＳ２３）。つまり、制御装置１０は、受け付けた処理に対応するトークンが存在し、かつ受け付けた処理がトークンに対応する処理の次の順序の処理であるか否かを判定する。
【００５１】
制御装置１０は、受け付けた処理のトークンが存在しない場合、または受け付けた処理がトークンが存在する処理の次の順序の処理でない場合（ステップＳ２３：否定）、ステップＳ２１に戻り、次のリクエストを受け付ける。一方、制御装置１０は、受け付けた処理のトークンが存在し、かつ受け付けた処理がトークンが存在する処理の次の順序の処理である場合（ステップＳ２３：肯定）、優先制御を行う（ステップＳ２４）。
【００５２】
ここで、制御装置１０は、優先制御を行った処理が成功したか否かを判定する（ステップＳ２５）。制御装置１０は、優先制御を行った処理が成功した場合（ステップＳ２５：肯定）、トークンを更新し（ステップＳ２６）、リクエスト受け付け時の処理を終了する。一方、制御装置１０は、優先制御を行った処理が成功しなかった場合（ステップＳ２５：否定）、トークンを更新せず、リクエスト受け付け時の処理を終了する。これにより、制御装置１０は、トークンを使ってリクエストの優先制御を行うことができる。
【００５３】
このように、制御装置１０は、順序付けられた複数の処理のうち、いずれかの処理の実行要求を受け付け、複数の処理のうち、実行要求を受け付ける前に実行要求の要求元から受け付けた実行要求に応じて実行された処理を記憶する記憶部を参照する。また、制御装置１０は、受け付けたいずれかの処理と、記憶部に記憶された処理との間の順序関係が特定関係であるか否かの判定を行う。また、制御装置１０は、判定の結果に基づき、受け付けたいずれかの処理の実行順序に関する優先度を制御する。このように、制御装置１０は、一連の処理に含まれるリクエストが優先制御の対象であるか否かを判定した上で、優先制御を行うことができる。このため、サーバ３０は、優先制御に関する処理を行う必要がない。その結果、制御装置１０は、一連の処理の実行を保証することによるサーバ負荷の軽減をはかることができる。
【００５４】
制御装置１０は、実行要求の要求元から受け付けた実行要求に応じて実行された処理であって、実行に成功した処理を記憶する記憶部を参照する。その結果、制御装置１０は、一連の処理の進行に合わせて優先制御を行うことができる。
【００５５】
制御装置１０は、実行要求の要求元から受け付けた実行要求に応じて実行された処理および期限を示す日時を記憶する記憶部を参照して、期限を経過しているか否かの判定をさらに行う。また、制御装置１０は、順序関係が特定関係であって、かつ期限を経過していると判定した場合、受け付けたいずれかの処理の実行順序に関する優先度を制御する。この結果、制御装置１０は、トークンがいつまでも残り、特定のユーザが優先され続けることを防止し、ユーザ間の不公平感を解消することができる。
【００５６】
制御装置１０は、実行要求の要求元から受け付けた実行要求に応じて実行された処理および当該処理に対応するユーザを識別する情報を記憶する記憶部を参照する。また、制御装置１０は、いずれかの処理に対応するユーザと、記憶部に記憶された処理に対応するユーザとが同一であるか否かの判定をさらに行う。また、制御装置１０は、順序関係が特定関係であって、いずれかの処理に対応するユーザと記憶部に記憶された処理に対応するユーザとが同一であると判定した場合、いずれかの処理の実行順序に関する優先度を制御する。この結果、制御装置１０は、ユーザごとにトークンを管理し、優先制御を行うことができる。
【００５７】
制御装置１０は、受け付けたいずれかの処理ごとに定められた回数を上限として、いずれかの処理の実行順序に関する優先度を制御する。この結果、制御装置１０は、トークンが何度も利用され、特定のユーザが優先され続けることを防止し、ユーザ間の不公平感を解消することができる。
【００５８】
制御装置１０は、判定の結果に基づき、受け付けたいずれかの処理を実行するサーバへ、いずれかの処理の実行要求を転送する順序を変更することにより優先度を制御する。このため、サーバ３０は、転送されてきたリクエストを順に処理していくだけでよい。この結果、制御装置１０は、サーバの負荷を軽減することができる。
【００５９】
なお、上記の実施例では、各順序に１つの処理が対応した一連の処理について説明したが、一連の処理の各処理の順序は重複していてもよい。例えば、「カート追加」の順序が１であり、「住所入力」および「支払い選択」の両方の順序が２であってもよい。この場合、制御装置１０は、カートの追加が行われた後、次のリクエストが住所入力および支払いのいずれであっても、優先制御の対象とする。
【００６０】
図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、制御装置１０の判定部１３４と優先度制御部１３５とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
【００６１】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００６２】
ところで、上記の各実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の各実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図９は、制御プログラムを実行するコンピュータの一例を示す図である。
【００６３】
図９に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線または無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。
【００６４】
ハードディスク装置２０８には、図２に示した受付部１３１、転送部１３２、管理部１３３、判定部１３４および優先度制御部１３５の各処理部と同様の機能を有する制御プログラムが記憶される。また、ハードディスク装置２０８には、処理情報記憶部１２１、トークン記憶部１２２および記憶部１２を実現するための各種データが記憶される。
【００６５】
入力装置２０２は、例えば、コンピュータ２００の管理者から操作情報等の各種情報の入力を受け付ける。モニタ２０３は、例えば、コンピュータ２００の管理者に対して出力画面等の各種画面を表示する。インタフェース装置２０５は、例えば印刷装置等が接続される。通信装置２０６は、ネットワークを介して端末２０、サーバ３０および他の装置と接続され、各種情報をやりとりする。
【００６６】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を図２に示した受付部１３１、転送部１３２、管理部１３３、判定部１３４および優先度制御部１３５として機能させることができる。
【００６７】
なお、上記の制御プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤ（Digital  Versatile  Disc）、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの制御プログラムを記憶させておき、コンピュータ２００がこれらから制御プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００６８】
１  制御システム
１０  制御装置
１１  通信部
１２  記憶部
１３  制御部
２０、２０ａ、２０ｂ  端末
３０  サーバ
１２１  処理情報記憶部
１２２  トークン記憶部
１３１  受付部
１３２  転送部
１３３  管理部
１３４  判定部
１３５  優先度制御部
【図１】
2020004000.tif 000003
【図２】
2020004000.tif 000004
【図３】
2020004000.tif 000005
【図４】
2020004000.tif 000006
【図５】
2020004000.tif 000007
【図６】
2020004000.tif 000008
【図７】
2020004000.tif 000009
【図８】
2020004000.tif 000010
【図９】
2020004000.tif 000011