JP7332950B2 - サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム - Google Patents

サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム Download PDF

Info

Publication number
JP7332950B2
JP7332950B2 JP2021575172A JP2021575172A JP7332950B2 JP 7332950 B2 JP7332950 B2 JP 7332950B2 JP 2021575172 A JP2021575172 A JP 2021575172A JP 2021575172 A JP2021575172 A JP 2021575172A JP 7332950 B2 JP7332950 B2 JP 7332950B2
Authority
JP
Japan
Prior art keywords
api
service
definition information
cooperation support
support device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021575172A
Other languages
English (en)
Other versions
JPWO2021156992A1 (ja
Inventor
亮太 片柳
謙輔 高橋
悟 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2021156992A1 publication Critical patent/JPWO2021156992A1/ja
Application granted granted Critical
Publication of JP7332950B2 publication Critical patent/JP7332950B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラムに関する。
通信サービスの多様化に伴い、複数種類のサービスが連携された連携サービスの重要性が高まっており、連携サービスに関係する新規サービスの登場や既存サービス仕様の変更に対し、短期間・低コストでの対応が求められている。
このような変更に対応するために、サービス仕様及びAPI仕様を定義するカタログ管理部と、これらの仕様に基づいてAPIを実行するアダプタとを疎結合化し、新規サービスまたは既存サービスの仕様変更への対応コストを抑制する技術がある(特許文献1)。
また、このようなアダプタの開発容易化については、GUIを用いてアダプタを生成する技術が存在する(非特許文献1)。また、APIの特性に依存しないサービス間の連携についても検討されている(非特許文献2)。
特開2018-206050号公報
武直樹, 他5名, "GUIを用いたAPIアダプタ開発容易化方式に関する一検討" 電子情報通信学会ソサイエティ大会講演, B-14-13, 電子情報通信学会, 2018年9月11日~14日 片柳亮太, 他2名, " APIの特性に依存しないサービス間連携の実現方式に関する一検討", 電子情報通信学会 ネットワークソフトウェア研究会, 2019年10月25日
複数サービスの連携において、上位装置側のステートレスなAPIと下位装置側のステートフルなAPIとの間を対応付ける技術は存在しない。そのため、上位装置側のAPIのリクエストをトリガに、どの下位装置側のAPIをどのような順序で実行するか、というマッピング処理は、連携サービスの提供事業者などにより手動で設計する必要がある。そのため、マッピング処理の実装は容易ではなく、コストおよび時間を要する。
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、上位装置側のステートレスなAPIと下位装置側のステートフルなAPIとの間のマッピングを容易化するサービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラムを提供することにある。
上記目的を達成するため、本発明の一態様は、サービス連携支援装置であって、複数のサービスを連携させる上位装置に公開するステートレスな上位APIの定義情報と、下位装置が公開するステートフルな複数の下位APIの定義情報と、を受け付ける受付部と、前記上位APIの定義情報および前記下位APIの定義情報を用いて、前記上位APIに対応する少なくとも1つの下位APIを抽出し、抽出した下位APIの実行順序を設定したAPI対応表を生成する解釈部と、を有する。
本発明の一態様は、サービス連携支援装置が行うサービス連携支援方法であって、複数のサービスを連携させる上位装置に公開するステートレスな上位APIの定義情報と、下位装置が公開するステートフルな複数の下位APIの定義情報と、を受け付ける受付ステップと、前記上位APIの定義情報および前記下位APIの定義情報を用いて、前記上位APIに対応する少なくとも1つの下位APIを抽出し、抽出した下位APIの実行順序を設定したAPI対応表を生成する生成ステップと、を行う。
本発明の一態様は、上記サービス連携支援装置として、コンピュータを機能させるサービス連携支援プログラムである。
本発明によれば、上位装置側のステートレスなAPIと下位装置側のステートフルなAPIとの間のマッピングを容易化するサービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラムを提供することができる。
本発明の実施形態のサービス連携システムの構成例を示す図である。 連携支援装置の構成を示すブロック図である。 サービス連携システムの前提条件を説明する説明図である。 定義情報のデータ構造例である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の具体的な生成手順を説明するための説明図である。 API対応表の生成を示すシーケンス図である。 API対応表の生成を詳細に示すフローチャートである。 サービス連携システムの動作を示すシーケンス図である。 ハードウェア構成例である。
以下、本発明の実施の形態について、図面を参照して説明する。
(サービス連携システムの構成)
図1は、本実施形態のサービス連携システムの構成図である。図示するサービス連携システムは、サービス連携装置1と、複数のサービス2A、2Bと、2Cと、連携支援装置5(サービス連携支援装置)とを備える。
サービス連携装置1は、複数種類のサービスを連携させた連携サービスを実行する装置である。複数の種類のサービスとして、図1では、3つのサービス2A、2B、2Cを示す。サービス2Aは、A社(サービス事業者)が提供するネットワークサービスである。サービス2Bは、B社(サービス事業者)が提供するサービスであって、IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)等のクラウドサービスである。サービス2Cは、C社(サービス事業者)が提供するWebアプリケーション ( 以下、「アプリ」とする)のサービスである。なお、本発明で取り扱うサービスの数および種類は、これらに限定されない。
ここでは、サービス2A、2Bは、ステートレスなAPIを有し、公開(提供)するサービス(以下、「ステートレスサービス」ともいう)である。一方、サービス2Cは、ステートフルなAPIを有し、公開するサービス(以下、「ステートフルサービス」ともいう)である。
ステートレス(RESTful)は、サーバがクライアントとのセッション情報などの内部状態(動的情報)を保持しない通信方式である。そのため、ステートレスな通信方式は、クライアントのリクエストに、APIの実行(処理)に必要な全ての情報が含まれる自己完結型の方式である。ステートフルな通信方式は、サーバがクライアントとのセッション情報などの内部状態を保持し、APIの実行時に適宜参照する通信方式である。
本実施形態では、ステートフルAPIを公開するサービス2Cと、ステートレスAPIを公開するサービス2A、2Bとが連携して1つの連携サービスを構成するものとする。すなわち、本実施形態では、サービス連携装置1は、ステートフルAPIを公開するサービス2Cを含む複数のサービスを連携させた連携サービスを実行する。
本実施形態のサービス連携装置1は、連携するサービスのAPIの通信方式(ステートレス、ステートフル)によらず、複数のサービスを連携した連携サービスを実現する。ここでは、サービス連携装置1は、ステートフルAPIを公開するアプリサービス2Cを含む複数のサービスを連携させた連携サービスを実行する。図示するサービス連携装置1は、カタログ解釈実行部10と、アダプタ部21-23と、カタログ管理部30と、を備える。
カタログ管理部30は、サービスの仕様を定義したカタログ(Productカタログ)を管理する。カタログは、例えば、カタログ管理部30が備える記憶部(不図示)に記憶されている。図1は、複数のサービス2A、2B、2Cの各々について、A社カタログ31と、B社カタログ32と、アプリカタログ33とを示す。本発明で取り扱うカタログはこれらに限定されない。カタログは、サービスごとに用意され、新たなサービスが追加された場合には、当該サービスに対応するカタログが用意され、カタログ管理部30は当該カタログを記憶部に登録し、管理する。
カタログ管理部30は、連携サービスを構成する複数のサービスの複数のカタログを組み合わせることで、連携サービス用のカタログとなる連携カタログを作成し、記憶部に記憶する。図1では、カタログ管理部30は、A社カタログ31、B社カタログ32、および、アプリカタログ33を組み合わせた連携カタログ41を作成し、記憶部に記憶する。連携カタログ41は、3つのサービス2A、2B、2Cを含む連携サービスの仕様を定義する。また、連携カタログ41は、ルール411を含む。ルール411は、連携サービスを構成する各サービス間の連係動作に関する規定である。
カタログ解釈実行部10は、サービス事業者の顧客のクライアント(不図示)から、連携サービスに対する要求があった場合に、当該連携サービスの連携カタログ内のカタログの内容を解釈して要求を処理する。カタログ解釈実行部10は、連携カタログに含まれる全てのカタログを解釈して要求を処理する。カタログ解釈実行部10は、カタログに対応するサービスの各々に依存しない、サービス間連携における共通の処理を実行する機能部といえる。
アダプタ部21~23は、連携サービスを構成する各サービスのAPIを実行し、クライアントからの要求を処理する。アダプタ部21~23は、サービス毎に備えられ、新たなサービスが追加された場合には、サービス連携装置1は、新たなアダプタ部を追加する。アダプタ部21~23は、各サービスのAPI仕様に依存する要求を処理する機能部といえる。
本実施形態のサービス連携装置1では、新たなサービスを連携サービスの連携対象にする場合、新たなサービスに対応するカタログおよびアダプタ部を用意するだけでよい。したがって、サービス連携装置1全体の追加開発を必要とせず、連携サービスに新サービスおよび新APIを追加する際の追従コストを低減させることができる。
また、本実施形態のサービス連携装置1では、カタログを用いることで、連携サービスを構成するサービス群を、カタログドリブンな疎結合アーキテクチャとして構成することができる。
連携支援装置5は、ステートフルなAPIを公開するステートフルサービスを、他のサービスと容易に連携させるための装置である。なお、サービス連携システムは、ステートフルなサービス毎に別々の連携支援装置5を備えていてもよい。あるいは、サービス連携システムは、複数のステートフルなサービスに対して1つの連携支援装置5を備え、当該連携支援装置5はサービス毎にステートレスなAPIを公開してもよい。
(連携支援装置の構成)
図2は、本実施形態の連携支援装置5の構成を示すブロック図である。本実施形態の連携支援装置5は、上位装置のステートレスな上位APIと、下位装置のステートフルな下位APIとの対応関係(マッピング)を示すAPI対応表を自動生成し、API対応表に基づいてステートフルな下位APIの実行を制御する。具体的には、連携支援装置5は、定義情報の入力を契機に、上位APIと下位APIとのマッピング処理を実施してAPI対応表を生成する。そして、連携支援装置5は、上位装置からのステートレスな上位APIのリクエストに対し、自動生成したAPI対応表を用いて、対応するステートフルな下位APIを選択し、設定された順序で下位APIを実行する。
これにより、本実施形態の連携支援装置5は、ステートレスな下位APIを公開するサービスだけでなく、ステートフルな下位APIを公開するサービスも含む連携サービスを、短期間かつ低コストで実現することを支援することができる。
図示する連携支援装置5は、実行部51と、UI部52(ユーザインタフェース部)と、API解析部53と、管理部54と、記憶部55と、API対応表を格納するDB(データベース)56とを備える。
実行部51は、サービス連携装置1(上位装置)からのリクエストに応じて、上位APIに対応するステートフルな下位APIをAPI対応表を用いて特定し、特定した下位APIをAPI対応表で指定された順序で実行する。具体的には、実行部51は、ステートフルサービスを含む複数のサービスを連携させた連携サービスを実行するサービス連携装置1から、ステートフルサービスに対するステートレスな上位APIのリクエストを受け付け、当該リクエストをAPI対応表を用いて下位APIにマッピングし、下位APIを実行する。上位APIは、連携支援装置5がサービス連携装置1に公開するステートレスなAPIである。
実行部51は、サービス連携装置1に下位APIの実行完了を通知し、サービス連携装置1に下位APIの実行結果の取得を促してもよい。実行部51は、下位APIへの2回目以降のリクエストに、記憶部55に記憶された内部状態を含めてもよい。
UI部52は、上位API定義情報91と、下位API定義情報92と、内部状態定義情報93との入力を受け付ける。上位API定義情報91は、複数のサービスを連携させるサービス連携装置1(上位装置)に公開するステートレスな上位APIの定義情報である。下位API定義情報92は、アプリサービス2C(下位装置)が公開するステートフルな複数の下位APIの定義情報である。内部状態定義情報93は、下位APIの実行時に参照するアプリサービス2Cの内部状態の定義情報である。
API解析部53は、上位API定義情報91および下位API定義情報92を用いて、上位APIに対応する少なくとも1つの下位APIを抽出し、抽出した下位APIの実行順序を設定したAPI対応表を生成する。すなわち、API解析部53は、ステートレスな上位APIと、ステートフルな下位APIとの対応関係を解析し、マッピングする。また、API解析部53は、内部状態定義情報93を用いてAPI対応表を生成してもよい。
API解析部53は、上位APIの出力情報を出力する下位APIを抽出し、抽出した下位APIの入力情報が上位APIの入力情報のみの場合、当該下位APIの実行順序を他の下位APIより優先してもよい。
管理部54は、記憶部55およびDB56を管理する。記憶部55には、ステートフルな下位APIの応答に含まれる内部状態が記憶される。内部状態は、下位APIの実行に必要な情報であって、サービス側の下位装置(ここではアプリサービス2Cのサーバ)から下位APIの実行時に通知される情報である。内部状態には、連携支援装置5と、ステートフルサービスを提供する下位装置とのセッション情報(例えば、Cookie)が含まれていてもよい。また、記憶部55には、下位APIの実行結果が記憶される。DB56には、API解析部53が生成したAPI対応表が格納される。
(連携支援装置5の動作概要)
連携支援装置5は、サービス連携装置1のメリットを失うことなく、ステートフルな下位APIを公開するサービス2Cと、他のサービスとの連携を支援する。第1のメリットは、カタログ管理部30と、アダプタ部23との疎結合化による新規サービスの追加、または既存サービス仕様変更への適応コストを削減可能なことである。第2のメリットは、ステートフルな下位APIを公開するサービス2Cであっても、サービス連携装置1では非特許文献1の開発容易化技術を適用したステートレスな上位API用のアダプタ部23を実装可能とし、アダプタ部23の開発コストを削減可能なことである。
そのため、連携支援装置5は、上位側(Northbound)のステートレスな上位APIを公開し、サービス連携装置1からのリクエストを受け付ける。上位APIは、連携支援装置5からみて、自装置5を管理・操作するサービス連携装置1(上位装置)に対して公開するAPIである。
サービス連携装置1がステートフルなサービスを連携支援装置5を介して間接的に操作することを目的として、連携支援装置5は、ステートフルなサービス毎に上位APIを実装し、サービス連携装置1に公開する。上位APIは、サービス側のステートフルAPIおよびカタログの仕様に従って予め生成され、連携支援装置5の実行部51に実装される。
連携支援装置5は、サービス連携装置1から送信される上位APIのリクエストを、API対応表を用いて下位側(Southbound)のステートフルな下位APIにマッピングして、下位APIを実行する。下位APIは、連携支援装置5からみて操作の対象となる下位装置が公開するAPIである。
図3は、サービス連携システムの動作概要を示す図である。図示する例では、連携支援装置5が公開するステートレスな上位APIには、ステートフルな下位APIの実行を指示するためのAPIと、実行結果を取得するためのAPIとが含まれる。したがって、図示するアダプタ部23は、ステートフルAPIの実行指示リクエストと、実行結果を取得する結果取得リクエストとを連携支援装置5に送信する。
連携支援装置5は、アダプタ部23からの上位APIのリクエストを契機に、当該リクエストに対応する下位装置のステートフルAPIを実行し、実行結果をアダプタ部23に返却する。このとき、連携支援装置5は、アダプタ部23のリクエストに対する下位APIを、API対応表で設定された上位APIと下位APIとの対応関係に基づいて決定する。
図示するように、アダプタ部23は、上位APIを介して、アプリサービス2Cの下位APIの実行を指示するリクエスト(POSTメソッド)を連携支援装置5に送信する(S11)。連携支援装置5は、当該リクエストに対応するアプリサービス2Cの下位APIを、API対応表に従って順次実行する(S12-S14)。連携支援装置5は、実行結果を記憶部55に保持する。連携支援装置5は、下位APIの実行完了後に、実行結果を保持している旨をサービス連携装置1に通知する(S15)。具体的には、連携支援装置5は、リクエストが成功してリソースの作成が完了したことを示す「201 Created」(正常応答)をサービス連携装置1に送信する。
サービス連携装置1のアダプタ部23は、S15の応答を受信すると、実行結果を取得するためのリクエスト(GETメソッド)を連携支援装置5に送信する(S16)。連携支援装置5は、記憶部55に保持した実行結果を200OK(正常応答)とともにサービス連携装置1に送信する(S17)。アダプタ部23は、取得した実行結果をカタログのcharacteristicに格納する。
なお、サービス連携装置1のステートフルなサービスのカタログには、連携支援装置5の実行結果を格納するcharacteristic(属性)が必要となる。サービス連携装置1は、ステートフルなアプリサービス2CのProductカタログに、実行結果を格納するcharacteristicを定義する。
図3では、上位APIには、2つのAPI(下位APIの実行を指示するAPIと、実行結果を取得するAPI)が含まれる場合について説明したが、これに限定されない。連携支援装置5の管理部54が下位APIの実行結果を記憶部55で管理する目的は、上位API定義情報91に含まれる「出力情報」が、対応する全ての下位APIの実行完了により全て揃うまでの一時保存と、ある下位APIが他の下位APIの実行結果を入力情報として必要とするような依存関係にあるときに当該下位APIの実行に要する入力情報(他の下位APIの実行結果)が全て揃うまでの一時保存である。
そのため、下位APIの実行を指示する上位API定義情報91に含まれる出力情報が管理部54配下に全て揃ったタイミング(または、任意のタイミング)で、該当する下位APIの実行結果が上位APIの出力情報に含まれるように設計することも可能である。例えば、下位APIの実行指示による実行結果は、上位API(POSTメソッド)へのレスポンスに含ませることもできる。
(定義情報)
図4は、本実施形態の定義情報のデータ構造例である。ここでは、連携支援装置5に入力される上位API定義情報91と、下位API定義情報92と、内部状態定義情報93との構成イメージを説明する。
上位API定義情報91は、連携支援装置5が上位装置に提供するステートレスな上位APIの定義情報である。上位API定義情報91は、公開されるAPIとメソッドとの組合せ毎に、API名と、メソッドと、入力情報と、出力情報とを保持する。上位API定義情報91の入力情報および出力情報は、下位API定義情報92との関連を特定するため、下位APIの命名規則に合わせて設定される。
下位API定義情報92は、下位装置が提供するステートフルな下位APIの定義情報である。下位API定義情報92は、公開されるAPIとメソッドとの組合せ毎に、API名と、メソッドと、内部状態と、入力情報と、出力情報とを保持する。なお、内部状態を参照しない下位APIでは、内部状態の欄は空欄となる。
内部状態定義情報93は、ステートフルな下位API実行時における、下位装置の内部状態(例えば、セッション情報など)の定義情報である。内部状態定義情報93は、変数名とデータ形式の組で保持される。変数名は、下位API定義情報92との関連を特定するため、下位APIの命名規則に合わせて設定される。
(API対応表の生成)
図5から図11は、API対応表の具体的な生成手順を説明するための説明図である。図5に示すように、連携支援装置5(API解析部53)は、UI部52を介して入力された定義情報61(上位API定義情報91、下位API定義情報92、内部状態定義情報93)を用いてAPI対応表62を生成する。入出力対応イメージ63は、上位API(ここでは、「/rest01」)と下位APIとの関係を便宜的に示すイメージ図である。
図6に示すように、連携支援装置5は、定義情報61を用いて、上位API71の出力情報の一部または全部を出力する下位APIを抽出する。連携支援装置5は、該当しない下位APIに確認済FLG(chkFLG=1)を設定する。図6では、下位API72、75が抽出され、下位API73、74に確認済FLGが設定される。図6のAPI対応表62は、初期状態であって、上位APIに処理対象の上位API名が設定され、下位APIは空白である。
次に図7に示すように、連携支援装置5は、抽出した下位API72、75の集合のうち、最も多く出力情報を返す下位API75が実行可能な否かを判定する。具体的には、連携支援装置5は、下位API75が、上位API定義情報の入力情報および内部状態定義情報だけで実行可能か否かを判定する。下位API75は上位API71の入力情報および内部状態ではない「paramG」を入力とし、現時点では下位API75を実行するための入力情報が不足している。このため、連携支援装置5は、下位API75を現時点では実行できないと判定し、下位API75に確認済FLGを設定する。
次に、連携支援装置5は、抽出した下位API72が実行可能な否かを判定する。下位API72の入力情報は、上位API71の入力情報「paramA」である。このため、連携支援装置5は、下位API72が、上位API71の入力情報および内部状態定義情報だけで実行可能であると判定し、下位API72の実行を確定する。そして、連携支援装置5は、API対応表62の下位APIに実行を確定した下位API72のAPI名「/stateful01」を設定する。下位API72は、最初に実行が確定された下位APIであるため、連携支援装置5は下位API72を下位API欄の1番目に設定する。
このように、連携支援装置5は、上位API71の出力情報を出力する下位API72を抽出し、抽出した下位API72の入力情報が上位API71の入力情報のみの場合、当該下位API72の実行順序を他の下位APIより優先する。
連携支援装置5は、残りの下位APIは、全て確認済FLG が設定されているため、次に下位API間の連携での要件充足を検証する。
図8に示すように、連携支援装置5は、上位API71の出力情報81(「paramE」、「paramF」)を出力する下位API75の入力情報(「paramG」)に着目し、当該入力情報を出力する下位API74を抽出する。連携支援装置5は、抽出した下位API74の入力情報(「paramC」、「paramH」)を取得する。「paramC」は、上位API71の入力情報に含まれるが、「paramH」は、上位API71の入力情報、内部状態定義情報、およびAPI対応表に登録した下位APIの出力情報のいずれにも含まれない。そこで、連携支援装置5は、定義情報61のうち下位API定義情報を参照し、「paramH」を出力情報とする下位API73を取得し、下位API73が実行可能な否かを判定する。
図9に示すように、下位API73の入力情報(「paramB」、「paramJ」)は、上位API71の入力情報および内部状態定義情報である。すなわち、下位API73の入力情報は、上位API71の入力情報、内部状態定義情報、およびAPI対応表に登録した下位APIの出力情報のいずれかに含まれる。このため、連携支援装置5は、下位API73が実行可能であると判定し、下位API73の実行を確定する。そして、連携支援装置5は、下位API74の実行に先立ち、下位API73の実行を確定する。そして、連携支援装置5は、API対応表62の下位APIに実行を確定した下位API73のAPI名を設定する。ここでは、下位API73は2番目に実行が確定された下位APIであるため、連携支援装置5は下位API73を下位API欄の2番目に設定する。
図10に示すように、連携支援装置5は、下位API74の判定に戻り、下位API74の入力情報(「paramC」、「paramH」)を再度検証する。具体的には、連携支援装置5は、上位API71の入力情報(「paramC」)と、API対応表62に登録された下位API73の出力情報(「paramH」)とを用いて下位API74は実行可能であると判定する。そして、連携支援装置5は、下位API75の実行に先立ち、下位API74の実行を確定する。そして、連携支援装置5は、API対応表62の下位APIに実行を確定した下位API74のAPI名を設定する。ここでは、下位API74は3番目に実行が確定された下位APIであるため、連携支援装置5は下位API74を下位API欄の3番目に設定する。
図11に示すように、次に連携支援装置5は、下位API75の判定に戻り、下位API75の入力情報(「paramG」)を再度検証する。具体的には、連携支援装置5は、入力情報(「paramG」)はAPI対応表62に登録された下位API74の実行結果であるため実行可能であると判定し、下位API75の実行を確定する。そして、連携支援装置5は、API対応表62の下位API欄に実行を確定した下位API75のAPI名を設定する。ここでは、下位API75は4番目に実行が確定された下位APIであるため、連携支援装置5は下位API75を下位API情報欄の4番目に設定する。連携支援装置5は、上位API71の出力情報を参照し、全ての出力情報を出力可能であるため、処理対象の上位API71(「/rest01」)のAPI対応表の生成(マッピング処理)を完了する。
(サービス連携システムの動作)
図12は、連携支援装置5が行うAPI対応表の生成処理を示すシーケンス図である。API対応表の生成処理は、ユーザによる定義情報の入力をトリガとして行われる。
UI部52は、ユーザが入力した定義情報を受け付け(S21)、受け付けた定義情報をAPI解析部53に送出する(S22)。定義情報は、上位API定義情報と、下位API定義情報と、内部状態定義情報である。
API解析部53は、上位API定義情報からいずれか1つの上位APIを選択する(S23)。API解析部53は、選択した上位APIに対応する上位API定義情報、下位API定義情報、および内部状態定義情報を解析して、当該上位APIのAPI対応表を生成する(S24)。API対応表の生成処理については後述する。
API解析部53は、S23で選択した上位APIのAPI対応表の登録要求を管理部54に送出する(S25)。管理部54は、例えばクエリなどを用いてAPI対応表をDB56に登録する(S26)。DB56は、登録完了応答を管理部54に送出する(S27)。管理部54は、登録完了応答をAPI解析部53に送出する(S28)。
API解析部53は、API対応表を生成していない上位APIが上位API定義情報にある場合、S23に戻り次の上位APIを選択して以降の処理を行う(S29)。上位API定義情報の全ての上位APIのAPI対応表を生成した場合は、API解析部53は、登録完了通知をUI部52に送出する(S30)。UI部52は、登録完了通知をディスプレイに表示し、API対応表の登録が完了したことをユーザに通知する。
なお、UI部52によるディスプレイ表示は、グラフィカル(GUI:Graphical User Interface)であっても、テキストベース(CLI:Command Line Interface)であってもよく、表示デバイスに表示方式は依存しない。
図13は、図12のS24の詳細な処理を示すフローチャートである。API解析部53は、S22でUI部52から入力された上位API定義情報、下位API定義情報および内部状態定義情報を参照して以下の処理を行う。
API解析部53は、選択した上位APIの出力情報(一部または全部)を出力する下位APIを抽出する(S31)。API解析部53は、抽出した下位APIのうち、上位APIの入力情報および内部状態定義情報だけで実行可能な下位APIを抽出し、抽出した下位APIをAPI対応表に登録する(S32)。
API解析部53は、API対応表に登録された全ての下位APIを実行することで、上位APIの全ての出力情報が出力されるか(すなわち、上位APIの全ての出力情報を充足しているか)否かを判定する(S33)。上位APIの全ての出力情報が出力される場合、API解析部53は選択した上位APIのAPI対応表の生成を終了する。上位APIの全ての出力情報が出力されない場合、API解析部53はS34に進み、下位API間の依存関係を検証する。
API解析部53は、S32でAPI対応表に登録されない下位APIのうち、上位APIの出力情報を少なくとも1つ以上出力する下位APIを抽出し、抽出した下位APIの入力情報を取得する(S34)。API解析部53は、S34で抽出された下位APIの入力情報を出力情報に含む下位APIを抽出する(S35)。
API解析部53は、S35で抽出した下位API毎に、当該下位APIの全ての入力情報が、上位APIの入力情報、内部状態定義情報、およびAPI対応表に登録された下位APIの出力情報に含まれるか否かを判定する。API解析部53は、全ての入力情報が上位APIの入力情報、内部状態定義情報、およびAPI対応表に登録された下位APIの出力情報に含まれる場合は、当該下位APIは実行可能と判定し、そうでない場合は、当該下位APIは実行不可能と判定する(S36)。
実行不可能と判定した下位APIについて、API解析部53は、上位APIの入力情報、内部状態定義情報、およびAPI対応表に登録された下位APIの出力情報に含まれない入力情報を出力情報に含む下位APIを抽出し、抽出された下位APIの全ての入力情報が、上位APIの入力情報、内部状態定義情報、およびAPI対応表に登録された下位APIの出力情報に含まれる場合、当該下位APIは実行可能であると判定する。
API解析部53は、S34~S36で確認した下位APIの実行の依存関係に基づいて、実行可能と判定された下位APIを、実行可能と判定された順番でAPI対応表に登録する(S37)。API解析部53は、API対応表に下位APIを登録する度に、上位APIの全ての出力情報がAPI対応表に登録された下位APIの出力情報で出力されたか否かを判別する。API解析部53は、上位APIの全ての出力情報が出力されるまで、S34~S36の処理を繰り返し行い、上位APIの全ての出力情報が出力されると処理を終了する。
図14は、本実施形態のサービス連携システムのサービス実行時の動作を示すシーケンス図である。
サービス連携装置(上位装置)1は、クライアントから連携サービスに対するオーダー(ProductOrder)で指定された連携カタログをカタログ管理部に要求し、連携カタログを取得する。そして、サービス連携装置1は、連携カタログに含まれる複数のサービスの各アダプタ部に、各サービスが公開する下位APIの実行を指示する。
図示する例では、アプリサービス2Cのアダプタ部は、連携支援装置5がアプリサービス(下位装置)2C用に公開するステートレスな下位APIを実行する。すなわち、アダプタ部は、アプリサービス2CのステートフルAPIの実行を指示するリクエスト(例えば、POSTメソッド)を、ステートレスな上位APIを介して連携支援装置5に送信する(S51)。この下位APIの実行指示リクエストは、アプリサービス2Cを操作するためのリクエストである。
連携支援装置5の実行部51は、サービス連携装置1からリクエストを受信し、当該リクエストに含まれる上位API名、メソッドに対応する下位APIリストを、管理部54に要求する(S52)。管理部54は、上位API名およびメソッドを検索キーとして、DB56に格納されたAPI対応表の対応する下位APIリストを取得する(S53、S54)。管理部54は、取得した下位APIリストを実行部51に送出する(S55)。下位APIリストは、具体的には、図5のAPI対応表62の下位API欄の下位APIが実行順に設定されたリストである。
実行部51は、取得した下位APIリストを用いて、アプリサービス2Cが公開するステートフルな下位APIを実行する。すなわち、実行部51は、下位APIリストの記載順で、下位APIを順次実行する(S56)。具体的には、実行部51は、下位APIの実行指示リクエストを送信する際に、記憶部55に記憶した内部状態を付加したリクエストをアプリサービス2Cに送信し、下位APIを実行する。(S561)。アプリサービス2Cは、当該リクエストで指示された下位APIを実行し(S562)、実行結果(応答)を実行部51に送信する(S563)。実行部51は、下位APIから受信した実行結果を記憶部55に記憶する。
なお、アプリサービス2Cは、連携支援装置5との初回の通信時には、セッション情報などの内部状態を実行結果に付加して実行部51に送信する。実行部51は、内部状態を取得すると、記憶部55に内部状態を登録する。実行部51は、初回通信時など、内部状態が記憶部55に記憶されていない場合は、内部状態を付加しないリクエストをアプリサービス2Cに送信し、下位APIを実行してもよい。
実行部51は、下位APIリストの全ての下位APIの実行を完了した後に、上位APIの仕様に従って、記憶部55に一時保存していた実行結果をサービス連携装置1に送信する。図示する例では、実行部51は、下位APIの実行結果を保持している旨をサービス連携装置1に通知する(S57)。具体的には、実行部51は、リクエストが成功してリソースの作成が完了したことを示す「201 Created」(正常応答)をサービス連携装置1に送信する。
サービス連携装置1のアダプタ部23は、S57の応答を受信すると、実行結果を取得するためのリクエスト(GETメソッド)を、連携支援装置5に送信する(S58)。連携支援装置5の実行部51は、記憶部55に保持した実行結果を200OK(正常応答)とともにサービス連携装置1に送信する(S59)。サービス連携装置1は、アプリカタログのcharacteristicに実行結果を格納し、連携カタログのルールに従って、取得した実行結果を連携サービスを構成する各サービスに反映させる補完処理を実行する。なお、サービス連携装置1への実行結果の送信は、S57~S59の処理に限定されない。
(本実施形態の効果)
以上説明した本実施形態のサービス連携支援装置は、複数のサービスを連携させるサービス連携装置(上位装置)に公開するステートレスな上位APIの定義情報と、下位装置が公開するステートフルな複数の下位APIの定義情報と、を受け付けるUI部52と、上位APIの定義情報および前記下位APIの定義情報を用いて、上位APIに対応する少なくとも1つの下位APIを抽出し、抽出した下位APIの実行順序を設定したAPI対応表を生成する解釈部53とを有する。
このように本実施形態では、入力された定義情報を用いてステートレスな上位APIとステートフルな下位APIとを対応付けたAPI対応表を生成する。これにより、本実施形態では、ステートレスな上位APIとステートフルな下位APIとの間のマッピングを容易に行うことができる。すなわち、本実施形態では、ステートフルAPIを公開するサービスを、他のサービスと容易に連携させることができる。したがって、本実施形態では、ステートフルな下位APIのサービスを含む複数のサービスを、短期間に低コストで連携させることができる。
(ハードウェア構成)
上記説明した連携支援装置5およびサービス連携装置1は、例えば、図15に示すような汎用的なコンピュータシステムを用いることができる。図示するコンピュータシステムは、CPU(Central Processing Unit、プロセッサ)901と、メモリ902と、ストレージ903(HDD:Hard Disk Drive、SSD:Solid State Drive)と、通信装置904と、入力装置905と、出力装置906とを備える。メモリ902およびストレージ903は、記憶装置である。このコンピュータシステムにおいて、CPU901がメモリ902上にロードされた所定のプログラムを実行することにより、各装置の各機能が実現される。例えば、連携支援装置5およびサービス連携装置1の各機能は、連携支援装置5用のプログラムの場合は連携支援装置5のCPUが、サービス連携装置1用のプログラムの場合はサービス連携装置1のCPUが、それぞれ実行することにより実現される。
また、連携支援装置5およびサービス連携装置1は、1つのコンピュータで実装されてもよく、あるいは複数のコンピュータで実装されても良い。また、連携支援装置5およびサービス連携装置1は、コンピュータに実装される仮想マシンであっても良い。
連携支援装置5用のプログラムおよびサービス連携装置1用のプログラムは、HDD、SSD、USB(Universal Serial Bus)メモリ、CD (Compact Disc)、DVD (Digital Versatile Disc)などのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
なお、本発明は上記実施形態および変形例に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
1 :サービス連携装置(上位装置)
10:カタログ解釈実行部
21、22、23:アダプタ部
30:カタログ管理部
2A、2B、2C:サービス
5 :連携支援装置(サービス連携支援装置)
51:実行部
52:UI部(受付部)
53:API解析部(解釈部)
54:管理部
55:記憶部
56:DB

Claims (8)

  1. サービス連携支援装置であって、
    複数のサービスを連携させる上位装置に公開するステートレスな上位APIの定義情報と、下位装置が公開するステートフルな複数の下位APIの定義情報と、を受け付ける受付部と、
    前記上位APIの定義情報および前記下位APIの定義情報を用いて、前記上位APIに対応する少なくとも1つの下位APIを抽出し、抽出した下位APIの実行順序を設定したAPI対応表を生成する解釈部と、を有する
    サービス連携支援装置。
  2. 請求項1に記載のサービス連携支援装置であって、
    前記解釈部は、前記上位APIの出力情報を出力する下位APIを抽出し、抽出した下位APIの入力情報が前記上位APIの入力情報のみの場合、当該下位APIの実行順序を他の下位APIより優先する
    サービス連携支援装置。
  3. 請求項1または2に記載のサービス連携支援装置であって、
    前記受付部は、前記下位APIの実行時に通知される内部状態の定義情報を受け付け、
    前記解釈部は、前記内部状態の定義情報を用いて前記API対応表を生成する
    サービス連携支援装置。
  4. 請求項1から3のいずれか1項に記載のサービス連携支援装置であって、
    前記上位装置からのリクエストに応じて、上位APIに対応するステートフルな下位APIを前記API対応表を用いて特定し、特定した下位APIを前記API対応表で指定された順序で実行する実行部と、
    前記下位APIの応答に含まれる内部状態を記憶する記憶部と、を備える
    サービス連携支援装置。
  5. サービス連携支援装置が行うサービス連携支援方法であって、
    複数のサービスを連携させる上位装置に公開するステートレスな上位APIの定義情報と、下位装置が公開するステートフルな複数の下位APIの定義情報と、を受け付ける受付ステップと、
    前記上位APIの定義情報および前記下位APIの定義情報を用いて、前記上位APIに対応する少なくとも1つの下位APIを抽出し、抽出した下位APIの実行順序を設定したAPI対応表を生成する生成ステップと、を行う
    サービス連携支援方法。
  6. 請求項5に記載のサービス連携支援方法であって、
    前記上位装置からのリクエストに応じて、上位APIに対応するステートフルな下位APIを前記API対応表を用いて特定し、特定した下位APIを前記API対応表で指定された順序で実行する実行ステップと、
    前記下位APIの応答に含まれる内部状態を記憶する記憶ステップと、を行う
    サービス連携支援方法。
  7. 請求項5または6に記載のサービス連携支援方法であって、
    前記受付ステップは、前記下位APIの実行時に通知される内部状態の定義情報を受け付け、
    前記生成ステップは、前記内部状態の定義情報を用いて前記API対応表を生成する
    サービス連携支援方法。
  8. 請求項1から4のいずれか1項に記載のサービス連携支援装置として、コンピュータを機能させるサービス連携支援プログラム。
JP2021575172A 2020-02-06 2020-02-06 サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム Active JP7332950B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/004477 WO2021156992A1 (ja) 2020-02-06 2020-02-06 サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム

Publications (2)

Publication Number Publication Date
JPWO2021156992A1 JPWO2021156992A1 (ja) 2021-08-12
JP7332950B2 true JP7332950B2 (ja) 2023-08-24

Family

ID=77200818

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021575172A Active JP7332950B2 (ja) 2020-02-06 2020-02-06 サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム

Country Status (3)

Country Link
US (1) US20230068545A1 (ja)
JP (1) JP7332950B2 (ja)
WO (1) WO2021156992A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001265747A (ja) 2000-03-16 2001-09-28 Hitachi Ltd 分散オブジェクト連携装置
US20020174194A1 (en) 2001-05-18 2002-11-21 Eoin Mooney Providing access to a plurality of message accounts from a single web-based interface
JP2004348435A (ja) 2003-05-22 2004-12-09 Nippon Telegr & Teleph Corp <Ntt> 統合Webサービス方法、装置、プログラムおよび記録媒体

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5199719B2 (ja) * 2008-04-07 2013-05-15 キヤノン株式会社 ネットワークシステム
JP2012213144A (ja) * 2011-03-18 2012-11-01 Ricoh Co Ltd 情報処理装置、情報処理システム、機器連携方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001265747A (ja) 2000-03-16 2001-09-28 Hitachi Ltd 分散オブジェクト連携装置
US20020174194A1 (en) 2001-05-18 2002-11-21 Eoin Mooney Providing access to a plurality of message accounts from a single web-based interface
JP2004348435A (ja) 2003-05-22 2004-12-09 Nippon Telegr & Teleph Corp <Ntt> 統合Webサービス方法、装置、プログラムおよび記録媒体

Also Published As

Publication number Publication date
US20230068545A1 (en) 2023-03-02
JPWO2021156992A1 (ja) 2021-08-12
WO2021156992A1 (ja) 2021-08-12

Similar Documents

Publication Publication Date Title
US10360025B2 (en) Infrastructure instantiation, collaboration, and validation architecture for serverless execution frameworks
US10158701B2 (en) Method and system for providing a state model of an application program
US9329858B2 (en) Managing access to resource versions in shared computing environments
JP7097958B2 (ja) 自動ユニバーサルコネクタパッケージを使用してクラウドアプリケーションをクラウドサービスブローカプラットフォームに統合するためのシステムおよび方法
JP2011204228A (ja) 学習メカニズムを用いたマッシュアップインフラストラクチャ
US20130232470A1 (en) Launching an application stack on a cloud platform environment
JP2008204430A (ja) ビジネスプロセス再構成方法、そのプログラム及び計算機
RU2580079C2 (ru) Инфраструктура активации приложений
US20180196647A1 (en) Application Programming Interface Discovery Using Pattern Recognition
JP2011203894A (ja) 情報処理装置、帳票データ作成方法、及びコンピュータプログラム
JP5936224B2 (ja) サービス・プロバイダを動的に選択する方法、コンピュータ・システム、コンピュータおよびプログラム
US11726800B2 (en) Remote component loader
US20180329692A1 (en) Information processing apparatus and method
US11843674B2 (en) Virtual workspace experience visualization and optimization
CN110740118B (zh) 与合作伙伴站点发起会话的协议
CN113360160A (zh) 部署应用的方法、装置、电子设备和存储介质
US11349961B2 (en) Chained adapters for multiple versions of application programming interface
JP7332950B2 (ja) サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム
JP7103083B2 (ja) 通信システム、登録仲介サーバのためのコンピュータプログラム、及び、サービス提供サーバのためのコンピュータプログラム
US20160308991A1 (en) Analytics system architecture
US9542171B2 (en) Managing an application modification process
US20230153723A1 (en) Workflow manager
US20190213003A1 (en) Method, system and software application for developing mobile applications
JP7201087B2 (ja) Api変換装置、api変換方法、およびプログラム
JPWO2020188779A1 (ja) 情報処理装置、情報処理システムおよび情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220704

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230724

R150 Certificate of patent or registration of utility model

Ref document number: 7332950

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150