(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-03
(45)【発行日】2024-10-11
(54)【発明の名称】API提供システム
(51)【国際特許分類】
G06F 9/48 20060101AFI20241004BHJP
【FI】
G06F9/48 300B
(21)【出願番号】P 2020082372
(22)【出願日】2020-05-08
【審査請求日】2022-11-21
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002941
【氏名又は名称】弁理士法人ぱるも特許事務所
(72)【発明者】
【氏名】梅澤 和大
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2017-016408(JP,A)
【文献】特許第3745820(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
API要求を時系列に受け付けるAPIメッセージ受付部と、前記APIメッセージ受付部で受け付けた順番に前記API要求を蓄積する処理蓄積部と、前記処理蓄積部が蓄積した前記API要求を受け付けた順番から処理する順序として格納するAPI要求格納部と、前記APIメッセージ受付部で受け付けた前記API要求の処理の順位を変更する優先度変更部と、前記API要求を受け付けると順次、前記API要求格納部に記憶した処理の優先順位に従って前記API要求を実行する処理実行部とを備え、
前記処理蓄積部は、前記API要求を新たに前記API要求格納部に格納する際、前記API要求格納部に既に同じ要求元からの
同じ前記API要求が存在する場合は、前記API要求を新たに格納する代わりに前記優先度変更部を呼び出して、
前記優先度変更部は、前記API要求格納部に既に存在する前記API要求の処理順序を一つ繰り上げることを特徴としたAPI提供システム。
【請求項2】
前記処理蓄積部は、前記API要求を新たに前記API要求格納部に格納する際、新たに格納する前記API要求の処理順序の直後に、当該API要求に対応した仮想の要求を生成して前記API要求格納部に格納することにより、
前記優先度変更部は、前記API要求の処理順序を一つ繰り上げる際、前記API要求格納部に既に対応する前記仮想の要求が存在する場合、前記仮想の要求を超えて前記API要求の処理順序を繰り上げないことを特徴とした請求項1に記載のAPI提供システム。
【請求項3】
前記処理蓄積部は、前記API要求を新たに前記API要求格納部に格納する際、新たに格納する前記API要求の処理順序の直後に、当該API要求に対応した仮想の要求を生成して前記API要求格納部に格納する一方、当該API要求に対応した仮想の要求が前記API要求格納部に既に存在する場合、新たに前記仮想の要求を生成しないことを特徴とした請求項2に記載のAPI提供システム。
【請求項4】
前記優先度変更部は、前記API要求の処理順序を一つ繰り上げる際、前記API要求格納部に既に存在する前記API要求の処理順序が最も早い場合、前記API要求の処理順序を変更しないことを特徴とした請求項1から請求項3のいずれか1項に記載のAPI提供システム。
【請求項5】
前記優先度変更部は、前記API要求格納部に新たに格納される前記API要求が前記API要求格納部に既に格納され一つ早い処理順序の前記API要求と同じ要求元からの
同じ前記API要求である場合、既に格納されている前記API要求の処理順序を変更しないことを特徴とした請求項1から請求項4のいずれか1項に記載のAPI提供システム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、API提供システムに関するものである。
【背景技術】
【0002】
従来のAPI提供システムは、API(Application Programming Interface)要求に対して要求順に処理を行うが、API要求の優先度が考慮されない場合、過多なAPI要求の後に優先度の高い要求があった場合でも過多な要求をすべて処理するまで高優先度の要求を処理することができず問題がある。
このため、要求者または要求元システムを示す固有の識別子と優先度との組合せを予め登録しておき、この登録情報に基づいてAPI要求を優先処理するものが知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に開示されているAPI提供システムにおいては、予め要求者または要求元システムを示す固有の識別子と優先度との組合せを登録する必要があり、一般的なユーザに対して汎用性に欠けるものであった。
本願は、上述のような課題を解決するための技術を開示するものであり、要求者または要求元システムを示す固有の識別子と優先度との組合せを登録する必要がなく、優先度の高い要求を優先処理することが可能なAPI提供システムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本願に係るAPI提供システムは、API要求を時系列に受け付けるAPIメッセージ受付部と、前記APIメッセージ受付部で受け付けた順番に前記API要求を蓄積する処理蓄積部と、前記処理蓄積部が蓄積した前記API要求を受け付けた順番から処理する順序として格納するAPI要求格納部と、前記APIメッセージ受付部で受け付けた前記API要求の処理の順位を変更する優先度変更部と、前記API要求を受け付けると順次、前記API要求格納部に記憶した処理の優先順位に従って前記API要求を実行する処理実行部とを備え、前記処理蓄積部は、前記API要求を新たに前記API要求格納部に格納する際、前記API要求格納部に既に同じ要求元からの同じ前記API要求が存在する場合は、前記API要求を新たに格納する代わりに前記優先度変更部を呼び出して、前記優先度変更部は、前記API要求格納部に既に存在する前記API要求の処理順序を一つ繰り上げることを特徴としたものである。
【発明の効果】
【0006】
本願に係るAPI提供システムによれば、API要求頻度が多い場合に優先的に処理を実行させることができる汎用性の高いシステムとすることができる。
【図面の簡単な説明】
【0007】
【
図1】実施の形態1に係るAPI提供システムの全体構成を示すブロック図である。
【
図2】実施の形態1に係るAPI提供システムのハードウエア構成を示すブロック図である。
【
図3】実施の形態1に係るAPI提供システムの動作を説明するためのフローチャートである。
【
図4】実施の形態1に係るAPI提供システムの処理データの時系列遷移を説明する概念図である。
【
図5】実施の形態1に係るAPI提供システムの処理データの時系列遷移を説明する概念図である。
【
図6】実施の形態1に係るAPI提供システムの処理データの時系列遷移を説明する概念図である。
【発明を実施するための形態】
【0008】
実施の形態1.
図1は、実施の形態1に係るAPI提供システムの全体構成を示すブロック図である。
図において、API提供システム1は、一般的なユーザ(要求元)であるAPI要求部A、API要求部B、API要求部C、API要求部D、API要求部Eなどから要求されるAPI要求に基づいて順次アプリケーションを提供するように構成されたもので、API要求を受付けるAPIメッセージ受付部10と、APIメッセージ受付部10で受付けたAPI要求を蓄積する処理蓄積部11と、処理蓄積部11が蓄積した新規API要求を格納するAPI要求格納部12と、API要求の処理の優先順位を変更する優先度変更部13と、API要求格納部12に記憶した処理の優先順位に従ってAPI要求を実行する処理実行部14とから構成されている。
【0009】
ここで、API提供システム1における各構成部分は、例えば、
図2に示すようにマイクロプロセッサ20とプログラムおよび各種情報を記憶するメモリ21とによって形成されるものである。
【0010】
次に、上述のように構成されたAPI提供システムの動作について、
図3に示すフローチャートに基づいて説明する。
まず、ステップS101において、APIメッセージ受付部10に新規に受け付けたAPI要求があるか判断し、API要求がある場合、処理蓄積部11は、このAPI要求を蓄積する(ステップS102)。
【0011】
次に、ステップS103において、ステップS102で蓄積したAPI要求がAPI要求格納部12に格納されているか否かを判断する。ここで、API要求が格納されていない場合(N)、ステップS104へ移行してAPI要求格納部12に仮想のAPI要求が格納されているかを判断し、格納されていない場合(N)、API要求格納部12は、実際のAPI要求を格納し、実際のAPI要求に対応する仮想のAPI要求を生成して追加格納する(ステップS105)。
また、ステップS104で仮想のAPI要求が格納されている場合(Y)、ステップS106に移行して実際のAPI要求のみを格納する。
【0012】
一方、ステップS103において、実際のAPI要求が既に格納されている場合(Y)、ステップS107へ移行し、API要求格納部12に仮想のAPI要求が直前に格納されているか否かを判断する。ここで、仮想のAPI要求が直前に格納されていない場合(N)、優先度変更部13によりAPI要求格納部12は、実際のAPI要求の処理順位を一つ繰上げる処理のみを行い、新たなAPI要求を格納しない。また、仮想のAPI要求が直前に格納されている場合(Y)、優先度変更部13による繰上げ処理を行わない。
以上のような処理ステップを経てステップS101に戻り、次の新規受け付けメッセージがあるか判断し、新規受け付けメッセージがなくなるまで同様の処理を繰り返すことになる。
なお、処理実行部14は、上述のステップを経てAPI要求格納部12に格納されたAPI要求の処理順位に従って処理を実行して行くことになる。
【0013】
次に、API提供システムにおける具体的な処理データの時系列遷移について
図4~
図6を用いて説明する。
各図において、上欄は、APIメッセージ受付部10において受け付けた新規API要求を表す新規リクエストの表を示し、下欄は、API要求格納部12において格納されたAPI要求の処理の順序を示している。また、左側から右側へ時間の推移を示し、要求順序は、新規API要求を受け付けた順番を、要求内容は、処理実行部14にて実行する処理の種類を、要求元は、API要求部A~Eのいずれかからの要求であるかを示している。さらに、ここでは要求内容として処理1および処理1’のみが要求されているものとして説明し、処理1は、実際に要求された実処理要求であり、処理1’は、実処理要求に伴って形成される仮想処理要求を示している。
【0014】
図4において、初期の時刻t1にはAPI要求格納部12に処理要求が蓄積されていない状態にあり、APIメッセージ受付部10が6件の新規リクエストを受け付けたものとする。
まず、時刻t1に受付けた新規リクエストの表の要求順序1である要求元Aからの処理1を処理蓄積部11は、時刻t2時においてAPI要求格納部12に格納するとともに仮想要求である要求元Aからの処理1’を生成して処理1の直後に追加する。このとき、APIメッセージ受付部10には新規リクエストが入力されていないものとし、5件の新規リクエストが残存していることになる。
【0015】
次に、時刻t3において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Bからの処理1をAPI要求格納部12に格納し、仮想要求である要求元Bからの処理1’を生成して直後に追加する。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、4件の新規リクエストが残存していることになる。
【0016】
次に、時刻t4において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Cからの処理1をAPI要求格納部12に格納し、仮想要求である要求元Cからの処理1’を生成して直後に追加する。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、3件の新規リクエストが残存していることになる。
【0017】
次に、時刻t5において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納し、仮想要求である要求元Dからの処理1’を生成して直後に追加する。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、2件の新規リクエストが残存していることになる。
【0018】
次に、時刻t6において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出し、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる処理を行うことになる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、1件の新規リクエストが残存していることになる。
【0019】
次に、時刻t7において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出し、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる処理を行うことになる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、残存した新規リクエストが0件になる。
【0020】
次に、
図5に示すように、時刻t8において、新たに6件のリクエストをAPIメッセージ受付部10が受付けたとする。
時刻t8に受付けた新規リクエストの表の要求順序1である要求元Dからの処理1を処理蓄積部11は、時刻t9において、API要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出し、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる処理を行うことになる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、5件の新規リクエストが残存していることになる。
【0021】
次に、時刻t10において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、上記と同様に、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる処理を行うことになる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、4件の新規リクエストが残存していることになる。
【0022】
次に、時刻t11において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、上記と同様に、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる処理を行うことになる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、3件の新規リクエストが残存していることになる。
【0023】
次に、時刻t12において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、上記と同様に、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる処理を行うことになる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、2件の新規リクエストが残存していることになる。
【0024】
次に、時刻t13において、処理蓄積部11は、新規リクエストの表に残存している要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出す。ここで、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げようとするが、要求元Dからの処理1の処理順序は、既に「1」であるため、処理順序を変更しないことにする。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、1件の新規リクエストが残存していることになる。
【0025】
次に、時刻t14において、新規リクエストの表に残存している要求順序1である要求元Eからの処理1を処理蓄積部11は、API要求格納部12に格納し、仮想要求である要求元Eからの処理1’を生成して処理1の直後に追加する。このとき、残存している新規リクエストが0件となる。また、ここで処理実行部14が要求順序1の要求元Dからの処理1を実行したとすると、API要求格納部12の処理順序は、1繰り上がり、
図6における時刻t15に示すものとなる。
【0026】
次に、
図6に示すように、時刻t15において、APIメッセージ受付部10が新たに4件のリクエストを受付けたとする。
時刻t15に受付けた新規リクエストの表の要求順序1である要求元Dからの処理1を処理蓄積部11は、時刻t16において、新規リクエストの表の要求順序1である要求元Dからの処理1をAPI要求格納部12に格納し、仮想要求である要求元Dからの処理1’を生成しようとするが、API要求格納部12には既に要求元Dからの処理1の仮想要求である処理1’が存在するため、要求元Dからの処理1’を新たに生成しない。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、3件の新規リクエストが残存していることになる。
【0027】
次に、時刻t17において、処理蓄積部11は、新規リクエストの表の要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出し、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、2件の新規リクエストが残存していることになる。
【0028】
次に、時刻t18において、処理蓄積部11は、新規リクエストの表の要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出し、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げる。このとき、APIメッセージ受付部10には、新規リクエストが入力されていないものとし、1件の新規リクエストが残存していることになる。
【0029】
次に、時刻t19において、処理蓄積部11は、新規リクエストの表の要求順序1である要求元Dからの処理1をAPI要求格納部12に格納しようとするが、API要求格納部12には既に要求元Dからの処理1が存在するため、要求元Dからの処理1をAPI要求格納部12に格納する代わりに優先度変更部13を呼び出し、優先度変更部13は、要求元Dからの処理1の処理順序を一つ繰り上げようとする。しかし、要求元Dからの処理1よりも処理順序が1つ早い要求が要求元Dからの処理1の仮想要求である処理1’であるため、処理順序を変更しない。
なお、上述の実施の形態においては、APIメッセージ受付部10の新規のAPI要求を6件として説明したが、これに限られるものでもなく、また、API要求格納部12の格納件数も必要に応じて設定することが可能である。
【0030】
以上のように、本願に係るAPI提供システムは、API要求を受けた際、この実際の要求に対応する仮想の要求を生成して実要求の処理順序の直後に格納し、同じ要求元から全く同じ要求があった場合、要求数に応じて要求の処理順序を繰り上げ、かつ、仮想の要求の処理順序は繰り上げず、実際の要求の処理後、仮想の要求が処理待機中の要求に残存している場合は、仮想の要求を新たに生成せず、加えて、実際の要求は、自身の仮想の要求を超えて処理順序を繰り上げることはできないように構成することによって、API要求頻度が多い場合に優先的に処理を実行させることができるとともに、複数回の実処理要求については、優先処理を阻止することができ、過負荷を防止した優先処理を可能とすることができる。
【0031】
なお、上述の実施の形態に記載された様々な特徴、態様、及び機能は、特定の実施の形態の適用に限られるのではなく、本願は、単独で、または様々な組み合わせで実施の形態に適用可能である。
【符号の説明】
【0032】
1:API提供システム、 A~E:API要求部、
10:APIメッセージ受付部、 11:処理蓄積部、 12:API要求格納部、
13:優先度変更部、 14:処理実行部