以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、図面において、同一または類似の部分には同一の参照番号を付して、重複する説明を省く場合がある。
図1は、一実施形態におけるシステム10の構成の一例を概略的に示す。本実施形態において、システム10は、サーバ装置30と、クライアント装置20a、クライアント装置20b、クライアント装置20c及びクライアント装置20dと、管理装置40とを備える。本実施形態において、クライアント装置20a、クライアント装置20b、クライアント装置20c、及びクライアント装置20dを「クライアント装置20」と総称する場合がある。
サーバ装置30、クライアント装置20、及び管理装置40は、ネットワーク12を介して接続される。ネットワーク12は、任意の通信回線を含んでよい。例えば、ネットワーク12は、専用線、公衆回線、ローカル回線の少なくともいずれかを含んでよい。公衆回線は、インターネット、移動体通信回線、及び電話回線等の少なくともいずれかを含んでよい。移動体通信網は、いわゆる3G(3rd Generation)、LTE(Long Term Evolution)、4G(4th Generation)及び5G(5th Generation)等を含んでよい。
サーバ装置30は、クライアント装置20からのサービス要求に応じて、クライアント装置20にサービス提供する。サーバ装置30は、例えば、クライアント装置20から要求された処理を行って、処理結果を示すレスポンスをクライアント装置20に返す。サーバ装置30は、例えば、ウエブサーバやアプリケーションサーバ等であってよい。
システム10の利用形態の一例として、システム10が金融機関において用いられる場合を説明する。サーバ装置30は、例えば金融機関のセンターサーバである。サーバ装置30は、金融機関の顧客に関する顧客データを格納する。例えば、サーバ装置30は、金融機関と顧客との間で過去に行われた取引データや、顧客が所有する金融口座情報、顧客の信用情報等を、顧客データとして格納する。
クライアント装置20a、クライアント装置20b、クライアント装置20c及びクライアント装置20dは、金融機関の店舗に設けられる。クライアント装置20a、クライアント装置20b、クライアント装置20c、及びクライアント装置20dは、サーバ装置30に格納されている顧客データを取得する。
クライアント装置20aは、ロボティック・プロセス・オートメーション(RPA)機能により、サーバ装置30から顧客データを自動的に収集する。クライアント装置20aは、店舗業務で用いられる顧客データをサーバ装置30から自動的にダウンロードする。例えば、クライアント装置20aは、渉外担当者の翌日のスケジュールデータを参照して、渉外担当者が翌日に出向く取引先の顧客データをサーバ装置30からダウンロードする。クライアント装置20aは、サーバ装置30からダウンロードした顧客データを、渉外担当者の電子メールアドレス宛に送信する。
クライアント装置20bは、渉外担当者が利用する端末である。渉外担当者は、クライアント装置20bを用いて、渉外担当者の電子メールアドレスに届いた顧客データを参照することができる。また、渉外担当者は、クライアント装置20bを操作してサーバ装置30にアクセスして、サーバ装置30から直接に顧客データをダウンロードすることもできる。
クライアント装置20cは、金融機関の店舗において窓口業務を行う窓口担当者が操作するテラー端末である。クライアント装置20cは、いわゆる一線端末である。クライアント装置20dは、窓口業務の後方業務を行う後方業務者が操作する後方端末である。クライアント装置20dは、いわゆる二線端末である。クライアント装置20c及びクライアント装置20dは、例えば口座の新規開設依頼を顧客から受け付けた場合に、顧客が開設済みの口座情報の一覧をサーバ装置30からダウンロードする。これにより、窓口担当者や後方業務者は、顧客が既に同種の口座を開設していないことを確認することができる。
ここで、仮に、クライアント装置20a、クライアント装置20b、クライアント装置20c、及びクライアント装置20dが一斉にサーバ装置30にアクセスすると、サーバ装置30が処理可能なアクセス数を超えてしまい、サーバ装置30がサービス提供することができない可能性がある。例えば、複数の店舗において、クライアント装置20aが銀行業務の終了時刻に一斉にサーバ装置30にアクセスして顧客データをダウンロードしようとすると、サーバ装置30がクライアント装置20にサービス提供することができない場合がある。
管理装置40は、クライアント装置20からサーバ装置30に大量のサービス要求が送信されることを抑制する。具体的には、管理装置40は、クライアント装置20がサーバ装置30にアクセスすることを許可するアクセスチケットを管理する。例えば、管理装置40は、サーバ装置30においてクライアント装置20からのサービス要求の応答に使用することができる処理能力に応じた数のアクセスチケットを管理する。
クライアント装置20は、サーバ装置30に顧客データの送信要求を送信する前に、管理装置40にアクセスチケットを要求する。管理装置40は、クライアント装置20に既に送信したアクセスチケット数が、管理装置40が管理しているアクセスチケットの上限値未満である場合に、クライアント装置20にアクセスチケットを送信する。
クライアント装置20は、サーバ装置30からアクセスチケットを受信した後に、サーバ装置30に顧客データのサービス要求を送信する。クライアント装置20は、サーバ装置30から顧客データを含むレスポンスを受信すると、管理装置40にアクセスチケットを返却するとともに、サーバ装置30から受信した顧客データを用いた処理を行う。
システム10によれば、クライアント装置20からサーバ装置30に到来するサービス要求の数を、サーバ装置30の処理能力に応じた適切な数に抑制することができる。これにより、過負荷によりサーバ装置30がクライアント装置20にサービス提供できなくなることを抑制することができる。
図2は、管理装置40の機能構成を示すブロック図である。管理装置40は、処理部42と、記憶部48と、格納部44とを備える。処理部42は、プロセッサを含む処理装置により実現される。記憶部48は、揮発性の記憶装置により実現される。格納部44は、不揮発性の記憶装置により実現される。
処理部42は、要求受信部210と、判断部220と、送信部230と、管理部240と、終了通知受信部250と、許容量受信部260とを備える。
管理部240は、サーバ装置30へサービス要求を送信することをクライアント装置20に許可した数を管理する。例えば、管理部240は、クライアント装置20にアクセスチケットを送信した数を管理する。なお、本実施形態においてクライアント装置20がサーバ装置30に送信するリクエストは、サービス要求の一例である。
要求受信部210は、クライアント装置20から、サービス要求の送信許可を要求する要求情報を受信する。本実施形態におけるアクセスチケット要求は、要求情報の一例である。
判断部220は、要求受信部210が要求情報を受信した場合に、管理部240により管理されている数が予め定められた上限値未満であることを条件として、クライアント装置20にサービス要求の送信を許可すると判断する。送信部230は、判断部220がクライアント装置20にサービス要求の送信を許可すると判断した場合に、クライアント装置20に許可情報を送信する。例えば、管理部240は、複数の許可情報のそれぞれがクライアント装置20に送信されたか否かを示す情報を管理する。判断部220は、管理部240が管理している情報に基づいて、複数の許可情報の中にクライアント装置20に送信されていない許可情報が存在する場合に、クライアント装置20にサービス要求の送信を許可すると判断してよい。これにより、クライアント装置20からサーバ装置30に大量のサービス要求が一斉に送信されることを抑制することが出来る。なお、本実施形態において管理装置40からクライアント装置20に送信されるアクセスチケットは、許可情報の一例である。
終了通知受信部250は、サービス要求に応じてクライアント装置20がサーバ装置30から応答を受信した後にクライアント装置20から送信される終了通知を受信する。本実施形態におけるアクセスチケット返却情報は、終了通知の一例である。管理部240は、許可情報の送信に応じて、サービス要求を送信することをクライアント装置20に許可した数を示す第1の許可発行数を増加させ、終了通知の受信に応じて、第1の許可発行数を減少させる。
管理部240はさらに、要求受信部210が要求情報を受信した場合において、管理部240により管理されている数が上限値に達している場合に、クライアント装置20の識別情報を待ち行列に追加する。送信部230は、終了通知受信部250が終了通知を受信した場合に、待ち行列に含まれる識別情報で識別されるクライアント装置20に、許可情報を送信する。これにより、アクセスチケットが返却され次第、他のクライアント装置20にサービス要求の送信を許可することができる。
送信部230は、要求受信部210が要求情報を受信した場合において、管理部240により管理されている数が上限値に達している場合に、クライアント装置20がサービス要求をサーバ装置30に送信するまでの待ち時間を含む許可情報を送信してもよい。待ち時間を含む許可情報については、図7等に関連して説明する。
許容量受信部260は、サーバ装置30から、サーバ装置30がサービス要求を受け付けることができる許容量を示す情報を受信する。本実施形態の許容アクセス数情報は、許容量を示す情報の一例である。管理部240は、サーバ装置30から受信した許容量に応じて、サービス要求の送信を許可する数の上限値を調整する。これにより、サーバ装置30の現在の負荷に応じて、クライアント装置20がサーバ装置30にアクセスすることを許可する許容アクセス数を動的に調整することができる。例えば、サーバ装置30の負荷が高まった場合に許容アクセス数を低下させ、サーバ装置30の負荷が低くなった場合に、許容アクセス数を増加させることができる。これにより、サーバ装置30のリソース逼迫時に、クライアント装置20からサーバ装置30に到来するサービス要求を抑制することができる。
上限値は、複数の優先度のそれぞれに対して定められていてよい。管理部240は、複数の優先度のそれぞれに対応づけて、サービス要求を送信することをクライアント装置20に許可した数を示す第1の許可発行数を管理してよい。判断部220は、要求受信部210が要求情報を受信した場合に、クライアント装置20に対するサービス提供の優先度に対応づけて管理部240で管理されている第1の許可発行数が、当該優先度に対して定められている上限値未満の場合に、クライアント装置20にサービス要求の送信を許可すると判断してよい。
管理部240は、複数のクライアント装置20に対する優先度を管理してよい。判断部220は、要求情報の送信元のクライアント装置20に対する優先度に対応づけて管理部240で管理されている第1の許可発行数が、当該優先度に対して定められている上限値未満の場合に、クライアント装置20にサービス要求の送信を許可すると判断してよい。
なお、クライアント装置20から送信される要求情報には、サービス要求に対する優先度を示す優先度情報が含まれていてよい。判断部220は、要求情報に含まれる優先度情報で示される優先度に対応づけて管理部240で管理されている第1の許可発行数が、当該優先度に対して定められている上限値未満の場合に、クライアント装置20にサービス要求の送信を許可すると判断してよい。これにより、同一のクライアント装置20からのサービス要求についても、サービス要求の種別に応じて、異なる優先度を設定することが出来る。これにより、クライアント装置20は、優先度の高い種別のサービス要求を、優先度が低い種別のサービス要求より優先してサーバ装置30に送信することができる。
管理部240は、複数の優先度のそれぞれに対応づけて、それぞれの優先度よりサービス提供に対する優先度が高いクライアント装置20にサービス要求の送信を許可した数を示す第2の許可発行数を管理してよい。判断部220は、要求情報の送信元のクライアント装置20に対するサービス提供の優先度が第1の優先度である場合において、第1の優先度に対応づけて管理部240で管理されている第1の許可発行数が第1の優先度に対して定められている上限値に達している場合であっても、第1の優先度より低い第2の優先度に対応づけて管理部240で管理されている第2の許可発行数が、第2の優先度に対して定められた上限値未満の予め定められた閾値未満であることを条件として、クライアント装置20にサービス要求の送信を許可すると判断してよい。これにより、優先度が低いサービス要求について最低限のアクセスチケット枠を確保しつつ、優先度が低いサービス要求が少ない場合には、アクセスチケット枠を優先度が高いサービス要求に振り向けることができる。これにより、サーバ装置30の処理能力を有効に利用することができる。
図3は、クライアント装置20、サーバ装置30及び管理装置40における処理の全体シーケンスを示す。図3は、クライアント装置20a及びクライアント装置20cがサーバ装置30にアクセスする場合の全体シーケンスを示す。
サーバ装置30は、サーバ装置30の現在の負荷量に応じて、クライアント装置20からのサービス要求に応答することができるアクセス数を示す許容アクセス数情報を送信する(S302)。管理装置40において、許容量受信部260が許容アクセス数情報を受信すると、管理部240は、許容アクセス数情報が示すアクセス数に基づいて、管理装置40が発行することができるアクセスチケット数(発行可能チケット数)の上限値を調整する(S304)。S306及びS308において、クライアント装置20c及びクライアント装置20aは、アクセスチケット要求を管理装置40に送信する。
ここで、管理装置40の管理部240において管理している発行可能チケット数とクライアント装置20に発行済みのチケット数との差が1であったとする。管理装置40において、要求受信部210がクライアント装置20a及びクライアント装置20cからのアクセスチケット要求を受信すると、送信部230は、クライアント装置20cに対してのみ、アクセスチケットを送信する(S310)。管理部240は、クライアント装置20aからのアクセス要求を、アクセスチケットの待ち行列に追加する(S312)。
クライアント装置20cは、アクセスチケットを受信すると、顧客指定情報を含む顧客データのリクエストを生成して(S320)、サーバ装置30に送信する(S322)。サーバ装置30は、クライアント装置20cからリクエストを受信すると、顧客指定情報で指定された顧客の顧客データを含むレスポンスを、クライアント装置20cに送信する(S324)。
クライアント装置20cは、サーバ装置30からレスポンスを受信すると、受信したアクセスチケットの返却通知を、管理装置40に送信する(S330)。管理装置40において、終了通知受信部250はクライアント装置20cから返却通知を受信すると、クライアント装置20aにアクセスチケットを送信する(S332)。これにより、クライアント装置20aは、S332のアクセスチケットの受信に応じて、サーバ装置30に顧客データのリクエストを送信する(S336)。
クライアント装置20cは、S330でアクセスチケットの返却通知を管理装置40に送信した後、S324で受信したレスポンスに含まれる顧客データを用いた処理を行う(S334)。
図4は、管理部240が管理する情報の一例をテーブル形式で示す。図4の(A)は、管理部240が管理するチケット管理テーブルの一例である。チケット管理テーブルは、格納部44に格納される。
チケット管理テーブルは、チケットIDと、優先度と、発行済みフラグと、発行日時と、発行先優先度と、使用可能フラグとを対応づける。「チケットID」には、アクセスチケットを識別する情報が格納される。「優先度」には、アクセスチケットの優先度を示す情報が格納される。本実施形態において、優先度1は、優先度2より優先度が高いことを意味する。
「発行済みフラグ」には、クライアント装置20にアクセスチケットを送信済みであるか否かを示す情報が格納される。図4において、TRUEは、クライアント装置20にアクセスチケットを送信済みであることを示し、FALSEは、クライアント装置20にアクセスチケットが送信されていないことを示す。
「発行日時」には、アクセスチケットが発行された日時を示す情報が格納される。アクセスチケットが発行された日時は、アクセスチケットをクライアント装置20に送信した日時であってよい。管理部240は、チケット管理テーブルに格納されているチケットIDの中から、「発行日時」からの経過時間がが予め定められた時間を越えたチケットIDを選択して、選択したチケットIDのアクセスチケットを無効化して、新たなチケットIDのアクセスチケットを生成してもよい。この場合、管理部240は、無効化したアクセスチケットと同数のアクセスチケットを新たに生成してよい。これにより、クライアント装置20からアクセスチケットが長時間返却されない場合でも、適切に対処することができる。
「発行先優先度」には、アクセスチケット要求に対するサービス提供の優先度を示す情報が格納される。アクセスチケット要求に対するサービス提供の優先度は、クライアント装置20毎に定められてよい。なお、サービス提供の優先度が1のアクセスチケット要求を送信したクライアント装置20には、チケット管理テーブルにおいて優先度1に対応づけられたアクセスチケットの他に、優先度2が対応づけられたアクセスチケットの少なくとも一部のアクセスチケットを発行することができる。したがって、優先度2のアクセスチケットのうちの一部のアクセスチケットの「発行先優先度」には、優先度1が格納され得る。
「使用可能フラグ」には、アクセスチケットが使用可能であるか否かを示す情報が格納される。図4において、TRUEはアクセスチケットが使用可能であることを示し、FALSEはアクセスチケットが使用可能でないことを示す。管理部240は、許容量受信部260が管理装置40から許容アクセス数情報を受信した場合に、許容アクセス数情報が示す許容アクセス数に応じた数のアクセスチケットを使用可能とする。例えば、管理部240は、許容アクセス数を上限として、使用可能フラグをTRUEに設定する。
図4の(B)は、管理部240が管理する優先度テーブルの一例である。優先度テーブルは、格納部44に格納される。
優先度テーブルは、クライアントIDと、優先度とを対応づける。「クライアントID」には、クライアント装置20を識別する情報が格納される。「優先度」には、クライアント装置20へのサービス提供の優先度を示す情報が格納される。
判断部220は、優先度テーブルを参照して、要求受信部210が受信したアクセスチケット要求の送信元のクライアント装置20のクライアントIDに対応づけられた優先度を特定する。判断部220は、特定した優先度と、アクセスチケット要求に含まれる優先度情報が示す優先度とに基づいて、アクセスチケット要求に対するサービス提供の優先度を決定する。
例えば、判断部220は、アクセスチケット要求に優先度情報が含まれない場合に、アクセスチケット要求の送信元のクライアント装置20のクライアントIDに対応づけられた優先度を、アクセスチケット要求に対するサービス提供の優先度として決定する。アクセスチケット要求に優先度情報が含まれる場合、判断部220は、当該優先度情報が示す優先度を、アクセスチケット要求に対するサービス提供の優先度として決定する。アクセスチケット要求に優先度情報が含まれる場合、判断部220は、アクセスチケット要求に含まれる優先度情報が示す優先度と、アクセスチケット要求の送信元のクライアント装置20のクライアントIDに対応づけられた優先度との積により、サービス提供の優先度を決定してもよい。
判断部220は、アクセスチケット管理テーブルを参照して、決定した優先度に対応づけられたチケットIDのうち、発行済みフラグがFALSであり、かつ、使用可能フラグがTRUEのチケットIDが存在する場合に、クライアント装置20にサービス要求の送信を許可すると判断する。なお、本実施形態において「発行済みフラグがFALSであり、かつ、使用可能フラグがTRUEのチケットIDにより識別されるアクセスチケット」のことを、「未発行のアクセスチケット」等と呼ぶ場合がある。
ここで、図4の(A)の「発行先優先度」について説明する。上述したように、判断部220は、サービス要求の優先度に対応する未発行のアクセスチケットが存在する場合に、アクセスチケット要求の送信元のクライアント装置20にサービス要求の送信を許可すると判断する。ここで、管理装置40は、サービス提供の優先度が1のアクセスチケット要求に対して、優先度2が対応づけられたアクセスチケットのうち一部のアクセスチケットを送信することができる。例えば、判断部220は、チケット管理テーブルを参照して、優先度1が対応づけられた未発行のアクセスチケットが存在しない場合であっても、優先度2が対応づけられた未発行のアクセスチケットが存在し、かつ、発行先優先度1が対応づけられたアクセスチケットの数が予め定められた閾値M未満である場合には、サービス要求の送信を許可してよい。この場合、管理部240は、チケット管理テーブルにおいて、優先度2が対応づけられた未発行のアクセスチケットのうち1つのアクセスチケットを選択して、発行済みフラグとしてTRUEを格納し、発行日時に現在日時を格納し、発行先優先度に1を格納する。このように、チケット管理テーブルにおいて発行済みフラグ、発行日時及び発行先優先度を設定することを、「アクセスチケットを発行済みにする」等と呼ぶ場合がある。
なお、チケット管理テーブルにおいて優先度2が対応づけられたアクセスチケットの数がNである場合、M<Nであるとする。すなわち、優先度2のサービス要求に対して、少なくとも1以上の(N-M)個のアクセスチケット枠が確保されているものとする。
図4の(B)において、「A」、「B」、「C」、及び「D」は、それぞれクライアント装置20a、クライアント装置20b、クライアント装置20c、及びクライアント装置20dを示す。クライアント装置20c及びクライアント装置20dへのサービス提供の優先度は、クライアント装置20a及びクライアント装置20bへのサービス提供の優先度より高い。このように優先度を設定することで、クライアント装置20aやクライアント装置20bから大量のアクセスチケット要求が送信された場合でも、1線端末又は2線端末であるクライアント装置20cやクライアント装置20dにアクセスチケットを送信することが可能になる。そのため、クライアント装置20c及びクライアント装置20dは、クライアント装置20aやクライアント装置20bから大量のアクセスチケット要求が一斉に送信された場合でも、サーバ装置30から顧客データをダウンロードすることができる。これにより、窓口で顧客を待たせる時間を削減することができる。
図4の(C)は、管理部240が管理する待ち行列の一例である。待ち行列は、管理装置40の揮発性メモリに格納されてよい。待ち行列は、格納部44に格納されてもよい。
待ち行列は、クライアントIDと、優先度と、発行先優先度と、要求優先度と、発行順位とを対応づける。「クライアントID」には、クライアント装置20を識別する情報が格納される。「優先度」は、発行するべきアクセスチケットの優先度を示す情報が格納される。上述したように、「優先度」は、アクセスチケット要求の送信元のクライアント装置20のクライアントIDに対応づけられた優先度と、アクセスチケット要求に含まれる優先度情報が示す優先度とに基づいて決定される。「優先度」は、クライアントIDで識別されるクライアント装置20に対するサービス提供の優先度を示す情報の一例である。
「発行先優先度」には、アクセスチケット要求を発行したクライアント装置20のクライアントIDに対応づけられた優先度が格納される。「要求優先度」には、アクセスチケット要求に含まれる優先度情報が示す優先度が格納される。「発行順位」には、待ち行列に「優先度」が同一のクライアント装置20からのアクセスチケット要求が複数格納されている場合において、アクセスチケットの発行対象として選択されるべき順位が格納される。管理部240は、発行先優先度に基づいて「発行順位」を決定する。例えば、管理部240は、発行先優先度1のアクセスチケット要求に対して発行順位1を決定し、発行先優先度2のアクセスチケット要求に対して発行順位2を決定してよい。このように、管理部240は、発行先優先度が高いほど、高い発行順位を決定してよい。
判断部220は、終了通知受信部250がクライアント装置20からアクセスチケット返却情報を受信した場合に、待ち行列の「優先度」のを参照して、受信したアクセスチケット返却情報に含まれるアクセスチケットIDに対応づけられた優先度に適合する「優先度」に対応づけられたクライアントIDが存在する場合に、当該クライアントIDで識別されるクライアント装置20にアクセスチケットを送信すると判断する。なお、アクセスチケット返却情報に含まれるアクセスチケットIDに対応づけられた優先度と同一の「優先度」に対応づけられたクライアントIDが複数存在する場合、判断部220は、「発行順位」に従って、アクセスチケットの送信対象となるクライアント装置20を選択する。具体的には、判断部220は、より高い「発行順位」に対応づけられたクライアントIDで識別されるクライアント装置20を、アクセスチケットの送信対象となるクライアント装置20として、より優先して選択する。
このように、サーバ装置30が待ち行列でアクセスチケットを管理するので、クライアント装置20は、アクセスチケットの再送を要求する必要がない。また、クライアント装置20は、管理装置40にアクセスチケットが返却され次第、速やかにアクセスチケットを取得することができる。
図5は、管理装置40における処理を示すフローチャートである。本フローチャートは、管理装置40がクライアント装置20又はサーバ装置30からデータを受信した場合に開始される。
S502において、管理装置40の処理部42は受信したデータの種別を判断する。受信データの種別がアクセスチケット要求である場合、要求受信部210に受信データが提供される。この場合、S504において、判断部220は、受信したアクセスチケット要求の送信元のクライアント装置20に対するサービス提供の優先度を決定する。例えば、判断部220は、アクセスチケット要求の送信元のクライアント装置20のクライアントIDに対応づけて優先度テーブルに格納されている優先度に基づいて、サービス提供の優先度を決定する。
上述したように、クライアント装置20は、優先度を示す優先度情報を含むアクセスチケット要求を管理装置40に送信してもよい。アクセスチケット要求に優先度情報が含まれる場合、判断部220は、アクセスチケット要求に含まれる優先度情報が示す優先度を、クライアント装置20に対するサービス提供の優先度として決定してよい。また、判断部220は、アクセスチケット要求に含まれる優先度と、アクセスチケット要求の送信元のクライアント装置20のクライアントIDに対応づけて優先度テーブルに格納されている優先度との積に基づいて、サービス提供の優先度を決定してもよい。
S506において、判断部220は、優先度に適合する未発行のアクセスチケットがあるか否かを判断する。例えば、判断部220は、S504で決定した優先度に対応づけられたアクセスチケットのうち、発行済みフラグがFALSであり、かつ、使用可能フラグがTRUEであるアクセスチケットが存在するか否かを判断する。なお、判断部220は、上述したように、S504で決定したサービス提供の優先度より低い優先度に対応づけられたアクセスチケットに未発行のアクセスチケットがあり、かつ、より高い優先度のサービス要求に対して発行されたアクセスチケットの数が閾値M未満の場合に、優先度に適合する未発行のアクセスチケットが存在すると判断してよい。
S506において優先度に適合する未発行のアクセスチケットがあると判断した場合、管理部240は、未発行のアクセスチケットを1つ選択し(S508)、S510において、アクセスチケットを発行済みに設定する。
S512において、送信部230は、クライアント装置20にアクセスチケットを送信する。具体的には、送信部230は、S508で選択したアクセスチケットIDを含むアクセスチケットとして送信する。
S506において、優先度に適合する未発行のアクセスチケットがないと判断した場合、S514において、アクセスチケット要求の送信元のクライアント装置20のクライアントIDと、サービス提供の優先度とを、待ち行列に追加する。
S502において、受信データの種別がアクセスチケット返却通知である場合、終了通知受信部250に受信データが提供される。アクセスチケット返却通知には、アクセスチケットのチケットIDが含まれる。管理部240は、アクセスチケット返却通知に含まれるチケットIDで識別されるアクセスチケットを、未発行に設定する。例えば、管理部240は、チケット管理テーブルにおいて、チケットIDに対応づけて発行済みフラグにFALSを格納し、発行日時にNULL値を格納する。
S522において、判断部220は、管理部240により管理されている待ち行列において、返却されたアクセスチケットの優先度に適合する優先度に対応するクライアントIDが格納されているか否かを判断する。「返却されたアクセスチケットの優先度に適合する優先度」とは、S506等で説明したように、返却されたアクセスチケットの優先度と同じ優先度の他に、返却されたアクセスチケットの優先度未満の優先度を含み得る。例えば、判断部220は、返却されたアクセスチケットの優先度より低い優先度に対応づけられたアクセスチケットに未発行のアクセスチケットがあり、かつ、より高い優先度のサービス要求に対して発行されたアクセスチケットの数が閾値M未満の場合に、返却されたアクセスチケットの優先度に適合する優先度に対応するクライアントIDが待ち行列に格納されていると判断してよい。
返却されたアクセスチケットの優先度に適合する優先度に対応するクライアントIDが待ち行列に格納されている場合に、S524において、返却されたアクセスチケットを発行済みに設定する。S526において、送信部230は、返却されたアクセスチケットの優先度に適合する優先度に対応するクライアントIDで識別されるクライアント装置20に、アクセスチケットを送信する。上述したように、返却されたアクセスチケットの優先度に適合する優先度に対応するクライアントIDが待ち行列に複数存在する場合、アクセスチケットの送信対象となるクライアント装置20は、待ち行列の「発行順位」に従って選択される。なお、S522において、返却されたアクセスチケットの優先度に適合する優先度に対応するクライアントIDが待ち行列に格納されていない場合は、本フローチャートの処理を終了する。
S502において、受信データの種別がサーバ装置30からの許容アクセス数情報である場合、許容量受信部260に受信データが提供される。この場合、S530において、管理部240は、許容量受信部260が受信した許容アクセス数情報により示されるアクセス数を超えないように、「使用可能フラグ」がTRUEのアクセスチケットの数を調整する。
図6は、クライアント装置20における処理を示すフローチャートである。本フローチャートは、クライアント装置20において、サーバ装置30にサービス要求を送信する操作が行われた場合に、開始される。例えば、クライアント装置20において、ウエブブラウザに表示されている顧客データダウンロードボタンがクリックされた後に、開始される。
S602において、クライアント装置20は、管理装置40にアクセスチケット要求を送信する。例えば、クライアント装置20で動作するウエブブラウザに表示される顧客データダウンロードボタンには、ボタンのクリックに応じて管理装置40にアクセスチケット要求を送信する動作を行うJavaScript(登録商標)関数が対応づけられており、ダウンロードボタンがクリックされることによって当該関数が実行されることで、アクセスチケット要求が管理装置40に送信されてよい。その他、ダウンロードボタンのクリックに応じて、管理装置40にアクセスチケット要求を送信する操作を受け付けるボタンが表示され、当該ボタンがクリックされることによって、アクセスチケット要求が管理装置40に送信されてよい。
S604において、クライアント装置20は、管理装置40からのアクセスチケットの受信を待つ。S606において、クライアント装置20は、受信したアクセスチケットを利用するか否かを判断する。例えば、クライアント装置20は、S604でアクセスチケットの受信を待っている期間内にダウンロードのキャンセルボタンがクリックされなかった場合に、アクセスチケットを利用すると判断し、ダウンロードのキャンセルボタンがクリックされた場合に、アクセスチケットを利用しないと判断してよい。
クライアント装置20は、管理装置40から受信したアクセスチケットを利用すると判断した場合に、S608において、サーバ装置30へのリクエストを生成する。例えば、クライアント装置20aがRPA機能によりサーバ装置30にアクセスする場合、渉外担当者のスケジュール情報を収集して、渉外担当者が翌日に出掛ける取引先の顧客を示す顧客指定情報を含むリクエストを生成する。S610において、S608で生成したリクエストを、サーバ装置30に送信する。なお、クライアント装置20は、アクセスチケットをサーバ装置30には送信しない。アクセスチケットは、サーバ装置30にサービス要求を送信することをクライアント装置20に許可することをクライアント装置20に通知するために、クライアント装置20とサーバ装置30との間でのみやりとりされる情報である。
S612において、クライアント装置20は、サーバ装置30からのレスポンスが正常レスポンスか異常レスポンスかを判断する。正常レスポンスである場合、S614において、クライアント装置20は、正常レスポンスによってサーバ装置30から提供されるデータを、不揮発性の記録媒体に格納する。続いて、S616において、クライアント装置20は、S604で受信したアクセスチケットを管理装置40に返却する。具体的には、クライアント装置20は、S604で受信したチケットIDを含むアクセスチケット返却情報を管理装置40に送信する。続いて、クライアント装置20は、S618において、サーバ装置30からのレスポンスで提供されたデータを用いて処理を行う。例えば、クライアント装置20aがサーバ装置30から受信したレスポンスに含まれる顧客データを、渉外担当者の電子メールアドレス宛に送信する。
S612において、サーバ装置30からのレスポンスが異常レスポンスである場合、クライアント装置20は、S620においてアクセスチケット返却情報を管理装置40に送信する。また、S606において、管理装置40から受信したアクセスチケットを利用しないと判断した場合も、クライアント装置20は、S620においてアクセスチケット返却情報を管理装置40に送信する。
図6等に関連して説明したように、クライアント装置20は、管理装置40から送信されるアクセスチケットの受信を待って、サービス要求を生成するための情報を収集して、サービス要求を生成する。サーバ装置30へのアクセス数は管理装置40により管理されているので、クライアント装置20はリクエストの送信後、サーバ装置30からすぐにレスポンスを受信することができる。そのため、リクエストのために確保したリソースを維持する時間を短縮することができる。また、仮にアクセスチケットを長時間受信できずにリクエストをキャンセルすることになったとしても、クライアント装置20がアクセスチケットを取得せずにサーバ装置30にリクエストを送信する方式に比べると、リクエストの生成に消費する時間やリソースが無駄になることがない。また、クライアント装置20は、管理装置40からアクセスチケットを受信した後、サーバ装置30にリクエストを送信する段階において、サーバ装置30からのレスポンスを処理するためのリソースを確保すればよい。そのため、クライアント装置20がレスポンスにかかるリソースを維持する時間を短縮することができる。
なお、以上に説明した実施形態では、管理部240は、アクセスチケット要求をクライアント装置20から受信した場合において、未発行のアクセスチケットがない場合には、アクセスチケット要求の送信元のクライアント装置20のクライアントIDを待ち行列に追加することによって、クライアント装置20へのアクセス要求の送信許可を管理する。管理部240は、待ち行列によってアクセス要求の送信許可を管理することに加えて、又は、待ち行列によってアクセス要求の送信許可を管理することに代えて、クライアント装置20がサーバ装置30にサービス要求を送信するまでの待ち時間を管理することによって、アクセス要求の送信許可を管理してもよい。例えば、図5のS514に加えて、又は、S514に代えて、管理部240は、クライアント装置20がサーバ装置30にサービス要求を送信するまでの待ち時間を決定して、管理部240が決定した待ち時間を含むアクセスチケットを、送信部230がクライアント装置20に送信してもよい。
図7は、待ち時間を含むアクセスチケットをクライアント装置20に送信するタイムチャートを示す。図7において、時刻t=0において、未発行のアクセスチケット数がX個であり、時刻t=0において、クライアント装置20から短時間でZ個のアクセスチケット要求が管理装置40に送信された状況を示す。なお、ここでは、管理部240が待ち行列で管理するアクセスチケット要求の数がY個であるとする。また、Z>X+Yであるとする。
管理部240は、X個のアクセスチケット要求のそれぞれに対して、未発行のアクセスチケットの中から1つずつアクセスチケットを選択する。これにより、送信部230は、X個のアクセスチケット要求のそれぞれに対応するアクセスチケットをクライアント装置20に送信する。また、管理部240は、Y個のアクセスチケット要求を、待ち行列に格納する。
管理部240は、残りのZ-X-Y個のアクセスチケット要求については、待ち時間Tを含むアクセスチケットをクライアント装置20に送信する。クライアント装置20は、待ち時間Tを含むアクセスチケットを受信した場合、当該アクセスチケットを受信してから待ち時間Tが経過したことを条件として、サーバ装置30にサービス要求を送信する。
ここで、待ち時間Tは、T0以上の時間であってよい。T0は、例えば、サーバ装置30がX+Y個のサービス要求への応答に要する最大時間であってよい。例えば、サーバ装置30において1つのサービス要求を受信してからレスポンスを返すまでの時間Tmaxが定められている場合、T0=(X+Y)Tmaxであってよい。なお、管理部240は、待ち時間Tとして、クライアント装置20毎に異なる値を設定してよい。管理部240は、ランダムな待ち時間Tを含むアクセスチケットをクライアント装置20に送信してよい。これにより、クライアント装置20からサーバ装置30に送信されるサービス要求を分散させることができる。
なお、管理部240は、サービス提供の優先度がより高いアクセスチケット要求を送信したクライアント装置20のクライアントIDを、より優先して待ち行列に格納してよい。例えば、クライアント装置20cやクライアント装置20dからアクセスチケット要求の受信した場合に、クライアント装置20cやクライアント装置20dのクライアントIDを待ち行列に格納し、優先度がより低いクライアント装置20a及びクライアント装置20bからアクセスチケット要求を受信した場合に、待ち時間Tを含むアクセスチケットを送信してもよい。
以上に説明したシステム10によれば、クライアント装置20からサーバ装置30に一斉にサービス要求が送信されることを抑制することができる。また、システム10によれば、クライアント装置20のアクセスチケット要求に対して優先度を割り当てることができる。そのため、1線端末であるクライアント装置20cや2線端末等であるクライアント装置20dによるサーバ装置30へのアクセスと、RPA機能により顧客データを収集するクライアント装置20aや、翌日の出張先の顧客データを収集するクライアント装置20bからのアクセスとを分離して、サービス提供することができる。そのため、サーバ装置30におけるアクセス制御プログラムを改修することなく、クライアント装置20cやクライアント装置20dが優先的にサーバ装置30にサービス要求を行わせることが可能になる。そのため、クライアント装置20aやクライアント装置20bのサービス要求によって、クライアント装置20cやクライアント装置20dからのサービス要求に対して応答遅延が生じる可能性を低減することができる。
以上に説明したシステム10において、管理部240は、チケット管理テーブルでアクセスチケットの発行を管理する。管理部240は、テーブルによってアクセスチケットの発行を管理する方式の他に、様々な方式でアクセスチケットの発行を管理できる。例えば、管理部240は、連結リスト方式により、アクセスチケットの発行を管理してよい。また、管理部240は、未発行のアクセスチケット数のみを管理してもよい。例えば、管理部240は、アクセスチケットを発行する毎に、未発行のアクセスチケット数をデクリメントし、アクセスチケット返却情報を受信する毎に、未発行のアクセスチケット数をインクリメントしてよい。
また、システム10において、クライアント装置20の全てが、サーバ装置30にサービス要求を送信する前にアクセスチケット要求を管理装置40に送信するものとした。しかし、クライアント装置20のうち一部のクライアント装置20のみが、サーバ装置30にサービス要求を送信する前にアクセスチケット要求を管理装置40に送信し、クライアント装置20のうち他のクライアント装置20は、管理装置40にアクセスチケット要求を送信することなくサービス要求をサーバ装置30に送信してもよい。例えば、クライアント装置20a及びクライアント装置20bがサーバ装置30にサービス要求を送信する前にアクセスチケット要求を管理装置40に送信し、クライアント装置20c及びクライアント装置20dは、アクセスチケット要求を管理装置40に送信することなくサービス要求をサーバ装置30に送信してもよい。
上記の説明においては、主として、クライアント装置20のそれぞれに優先度が割り当てられる場合を具体的に説明したが、クライアント装置20に優先度が割り当てられていなくてもよい。クライアント装置20に優先度が割り当てられていない場合、判断部220は、サーバ装置30にアクセスする予め定められた権限を示す情報が要求情報に含まれる場合に、当該要求情報を送信したクライアント装置20に、サーバ装置30へのサービス要求の送信を許可してよい。例えば、サーバ装置30にアクセスする権限を示す情報として、アクセスチケット要求に含まれる優先度情報を適用してよい。この場合、判断部220は、要求受信部210が受信したアクセスチケット要求に含まれる優先度情報が示す優先度に適合する未発行のアクセスチケットがチケット管理テーブルに存在する場合に、アクセスチケットを送信すると判断してよい。
なお、管理装置40の各部は、ハードウエアにより実現されてもよく、ソフトウエアにより実現されてもよく、ハードウエア及びソフトウエアにより実現されてもよい。管理装置40の各部は、その少なくとも一部が、単一のサーバによって実現されてもよく、複数のサーバによって実現されてもよい。管理装置40の各部は、その少なくとも一部が、仮想マシン上又はクラウドシステム上で実現されてもよい。管理装置40の各部は、その少なくとも一部が、パーソナルコンピュータ又は携帯端末によって実現されてもよい。携帯端末としては、携帯電話、スマートフォン、PDA、タブレット、ノートブック・コンピュータ又はラップトップ・コンピュータ、ウエアラブル・コンピュータなどを例示することができる。管理装置40は、ブロックチェーンなどの分散型台帳技術又は分散型ネットワークを利用して、情報を格納してもよい。
管理装置40を構成する構成要素の少なくとも一部がソフトウエアにより実現される場合、当該ソフトウエアにより実現される構成要素は、一般的な構成の情報処理装置において、当該構成要素に関する動作を規定したソフトウエア又はプログラムを起動することにより実現されてよい。上記の一般的な構成の情報処理装置は、(i)CPU、GPUなどのプロセッサ、ROM、RAM、通信インタフェースなどを有するデータ処理装置と、(ii)キーボード、ポインティングデバイス、タッチパネル、カメラ、音声入力装置、ジェスチャ入力装置、各種センサ、GPS受信機などの入力装置と、(iii)表示装置、音声出力装置、振動装置などの出力装置と、(iv)メモリ、HDD、SSDなどの記憶装置(外部記憶装置を含む。)とを備えてよい。
上記の一般的な構成の情報処理装置において、上記のデータ処理装置又は記憶装置は、上記のソフトウエア又はプログラムを記憶してよい。上記のソフトウエア又はプログラムは、プロセッサによって実行されることにより、上記の情報処理装置に、当該ソフトウエア又はプログラムによって規定された動作を実行させる。上記のソフトウエア又はプログラムは、非一時的なコンピュータ可読記録媒体に格納されていてもよい。上記のソフトウエア又はプログラムは、コンピュータを、管理装置40又はその一部として機能させるためのプログラムであってよい。上記のソフトウエア又はプログラムは、コンピュータに、管理装置40又はその一部における情報処理を実行させるためのプログラムであってよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。また、技術的に矛盾しない範囲において、特定の実施形態について説明した事項を、他の実施形態に適用することができる。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。