JP6795531B2 - Apiアダプタ、apiアダプタ作成方法、およびプログラム - Google Patents
Apiアダプタ、apiアダプタ作成方法、およびプログラム Download PDFInfo
- Publication number
- JP6795531B2 JP6795531B2 JP2018028324A JP2018028324A JP6795531B2 JP 6795531 B2 JP6795531 B2 JP 6795531B2 JP 2018028324 A JP2018028324 A JP 2018028324A JP 2018028324 A JP2018028324 A JP 2018028324A JP 6795531 B2 JP6795531 B2 JP 6795531B2
- Authority
- JP
- Japan
- Prior art keywords
- api
- service provider
- execution
- wholesale service
- unit
- 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
Links
- 238000000034 method Methods 0.000 title claims description 146
- 230000008569 process Effects 0.000 claims description 102
- 238000012545 processing Methods 0.000 claims description 56
- 230000004044 response Effects 0.000 claims description 56
- 230000004913 activation Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 18
- 239000008186 active pharmaceutical agent Substances 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 8
- 238000013499 data model Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000010348 incorporation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- General Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Primary Health Care (AREA)
- Marketing (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
B2B2Xの普及に伴って、複数の卸パートナサービスを組み合わせサービス構築・運用するための、複数サービス連携実行装置の重要性が増している。新たな卸サービスの登場、および既存サービス仕様の変更が頻繁に行われるため、サービス事業者は新たな卸サービスおよび既存サービスの仕様変更に対して、低コスト・短期間で追随することが求められる。
複数事業者の卸サービスを連携させ、新サービスやAPIへの追従開発を柔軟に実現させるためのアーキテクチャとして、非特許文献1に記載の技術がある。
APIアダプタおよびAPIアダプタ作成方法は、B2B2Xモデルに適用した例である。B2B2Xモデルは、卸サービス事業者がサービス事業者に対してサービスを卸で売り、サービス事業者が卸されたサービスを使って新たなサービスを創出し、更にその先の客に創出したサービスを提供する。B2B2Xモデルは、一例であり、どのようなサービスモデルのAPIアダプタであってもよい。
図1は、本発明の実施形態に係るAPIアダプタが適用されるネットワークシステムの全体構成図である。図1中、二重線で示される表記は、各APIを示す(以下、各図において同様)。
図1に示すように、サービス事業者1は、サービス4を使いたい旨の連携オーダ3を発行し、複数の卸サービス事業者2−1、卸サービス事業者2−2、卸サービス事業者2−3の卸サービスを組み合わせたサービス4を受け取る。サービス事業者1は、法人・個人がある。なお、卸サービス事業者2−1、卸サービス事業者2−2、卸サービス事業者2−3を総称する場合は、卸サービス事業者2と呼ぶ。
なお、卸サービス事業者2−1のAPI50−1、卸サービス事業者2−2のAPI50−2、卸サービス事業者2−3のAPI50−3を総称する場合は、卸サービス事業者API50と呼ぶ。
なお、APIアダプタ101−1、APIアダプタ101−2、APIアダプタ101−3を総称する場合は、APIアダプタ101と呼ぶ。
なお、単体オーダ31−1,31−2,31−3を総称する場合は、単体オーダ31と呼ぶ。単体オーダ31の具体例については図4で後記する。
図2は、APIアダプタ101の主な役割と機能を説明する図である。図1の各部と対応する部材には同一符号を付している。
連携オーダ3は、連携実行装置本体部20でNW(Network) service用単体オーダ31−1、Cloud service用単体オーダ31−2、APL (Application) service用単体オーダ31−3に分解される。
卸サービス事業者2−1、卸サービス事業者2−2、卸サービス事業者2−3は、順に、Network A21−1、Cloud B21−2、APL C21−3であるとする。
卸サービス事業者2−1用のAPIアダプタ101−1,卸サービス事業者2−2用のAPIアダプタ101−2,卸サービス事業者2−3用のAPIアダプタ101−3は、順に、Network A用のAPIアダプタ101−1,Cloud用のAPIアダプタ101−2,APL用のAPIアダプタ101−3である。
APIアダプタ101は、連携実行装置本体部20からの単体オーダ31(例えば、TMF形式)を解釈し、各卸サービスAPI51の呼び出しに変換、またその応答値を本体部側のデータモデル(例えば、TMF形式)に変換し、連携実行装置本体部20に流通させる機能を持つ。
図3に示すように、APIアダプタ部100は、連携実行装置本体部20からのオーダを連携実行装置本体部API30を通して受付けるとともに、その応答を連携実行装置本体部API30を通して連携実行装置本体部20に返す。なお、連携実行装置本体部20は、非特許文献2のオーケストレータ本体に対応し、連携実行装置本体部API30は、非特許文献2のオーケストレータAPIに対応する。
APIアダプタ部100は、各卸サービス事業者2との間で各卸サービス事業者2のAPI50を通して、個々の卸サービス事業者API50に対応したHTTP(Hypertext Transfer Protocol)リクエスト送信とレスポンス受信を行う。なお、卸サービス事業者2は、非特許文献2の個別サービスに対応し、卸サービス事業者API50は、非特許文献2の個別サービスのAPIに対応する。
APIアダプタ部100は、連携実行装置本体部20(オーケストレータ)側から受信したオーダを解釈し、規定された順番で卸サービス事業者API50(個別サービスのAPI)を呼び出して、その結果を連携実行装置本体部20(オーケストレータ)に流通する。
オーダ受付部110は、連携実行装置本体部20からの単体オーダ31を受付け、オーダ内容を取得する。オーダ受付部110は、連携実行装置本体部20への応答処理を行う。具体的には、オーダ受付部110は、連携オーダ受付/応答処理として、連携実行装置本体部20との間で予め決められた手順に従って、単体オーダ31の受信から単体オーダ31の実行完了までの状態管理および通知、実行結果の流通を行う。
オーダ受付部110は、オーダ内容の取得処理として、API呼出しロジック部120の要請を受け、詳細なオーダ内容(カタログ/オーダパラメータ)を取得する。オーダ受付部110の処理については、図5で後記する。
なお、上記オーケストレータAPI送受信と後記する個別サービスAPI送受信については、定型的なHTTP送受信処理を行うのみであるため、HTTP送受信処理用の市中ライブラリ活用もしくは一度開発したものの再利用が可能である。共通ライブラリ(図6で後記する)の利用により、これらは開発不要になる。
API呼出しロジック部120は、卸サービス事業者API50の起動条件をチェックし、決められた実行順序でAPIを起動する。
API呼出しロジック部120は、連携実行装置本体部20からのオーダ内から卸サービス事業者API50の実行に必要なパラメータを取り出し、卸サービス事業者API実行部130に送信する。また、API呼出しロジック部120は、卸サービス事業者API50の実行結果を卸サービス事業者API実行部130から受け取り、連携実行装置本体部20に流通するための適切なデータ形式に変換する。API呼出しロジック部120の処理については、図7で後記する。
API呼出しロジック部120は、共通ライブラリ化されたテンプレートソースコードおよび自動生成されたIF仕様ドキュメントをもとに、手動実装される。
卸サービス事業者API実行部130は、API呼出しロジック部120から、卸サービス事業者APIの実行に必要なデータを受領(この時のデータ形式を「オブジェクト」と呼ぶ)する。それをHTTPリクエストの形に組み立て直して卸サービス事業者2に送信する。
卸サービス事業者API実行部130は、卸サービス事業者2からHTTPレスポンスを受信後、ステータスコードのチェックおよび例外発出処理、レスポンスヘッダおよびボディの取得を行い、適切な形式に組み立て直してAPI呼出しロジック部120に返却する。卸サービス事業者API実行部130の処理については、図8で後記する。
図4は、単体オーダ31の一例を示す図であり、TMF APIに準拠した場合の例である。なお、単体オーダ31は、必ずしもこの記述形式である必要はない。
図4に示す単体オーダ31は、
オーダ一般情報311(オーダ説明、注文日時、オーダ種別)
“description”: “Set up Cloud A”
“orderDate”: “2018-01-25T10:00:00”
“action”: “add”
を記述する。
“billingAccount”: [
{
“id”: “1”,
“href”: “http://..../bllingAccount/1”
“name”: “Sample Account”
}
],
を記述する。
“productOffering”: {
“id”: “80”,
“href”: “http://..../productOffering/80”
“name”: “Cloud A”
},
を記述する。
“product”: {
“characteristic”: [
{
“name”: “tenantId”,
“value”: “abcde12345”
},
{
“name”: “instanceName”,
“value”: “Web Server”
}
・・・
}
を記述する。
このオーダパラメータの指定については、オーダにより異なる。この例の場合、クラウドのテナントID、インスタンス名等を指定している。
[オーダ受付部110の処理]
まず、オーダ受付部110の処理について説明する。
図5は、オーダ受付部110の処理を示す図である。
オーダ受付部110は、オーダ受付/応答処理と、オーダ内容の取得処理と、を実行する。
<オーダ受付/応答処理>
オーダ受付部110は、連携実行装置本体部20との間で予め決められた手順に従って、単体オーダ31の受信から単体オーダ31の実行完了までの状態管理および通知、実行結果の流通を行う。
なお、連携実行装置本体部20との間のシーケンスは、連携実行装置10(図1参照)によって異なる可能性があるが、それぞれの連携実行装置10については共通化可能である。
オーダ受付部110は、単体オーダ31を受信した場合、まずstate=“acknowledged”とし、連携実行装置本体部20に通知を出すとともに、API呼出しロジック部120を呼出しロジック実行を開始させる。
API呼出しロジック部120が、ロジック実行している中でオーダ受付部110に対し単体オーダ31の内容を取得してほしい要請を出す。オーダ受付部110は、API呼出しロジック部120の要請に応える形で、必要な情報をAPI呼出しロジック部120に送る。
オーダ受付部110は、API呼出しロジック部120でのロジック実行が始まった場合、state=“InProgress”とし、連携実行装置本体部20に通知を出す。なお、本実施形態では、オーダ受付部110が、API呼出しロジック部120を呼出した場合に、API呼出しロジック部120でのロジック実行が始まった場合とみなしている。なお、オーダ受付部110は、API呼出しロジック部120からのロジック実行開始通知を受け取る態様でもよい。
オーダ受付部110は、API呼出しロジック部120でのロジック処理が正常に終わった場合、state=“completed”(オーダのステート完了)を連携実行装置本体部20に通知する。
なお、上記オーダ受付/応答処理は、実装依存にかかるものであり、他の態様も可能である。
オーダ受付部110は、API呼出しロジック部120の要請を受け、詳細なオーダ内容(カタログ/オーダパラメータ)を取得する。
なお、カタログ/オーダパラメータの記述方法は、連携実行装置10(図1参照)によって異なる可能性があるが、それぞれについて共通化可能である。
オーダ受付部110は、API呼出しロジック部120の要請を受けて、オーダ内容を取得する。
オーダ受付部110は、カタログ取得処理を実行する。カタログ取得処理について説明する。図4に示す単体オーダ31の具体例の「使用するカタログ(サービスメニュー)の指定」のように、「使用するカタログの指定」には参照先、例えば
“http://..../productOffering/80”が記載されている場合がある。この場合には、参照先にデータを取りに行き、参照先から取得したデータ(値)をAPI呼出しロジック部120に返す。ちなみに、TMF形式の場合には、図4に示す単体オーダ31の「使用するカタログの指定」では、参照先を指定し、「オーダパラメータの指定」では、オーダパラメータを直接記述することになる。
オーダ受付部110は、オーダパラメータ取得処理を実行する。
ところで、カタログは、オーダによらないものであるのに対し、オーダパラメータは、オーダそれぞれにあるものである。したがって、TMF形式を用いない場合であっても同様のカタログ/オーダパラメータの記述になると考えられる。
次に、図6を参照して共通ライブラリについて説明する。
図6は、共通ライブラリを説明する図であり、共通ライブラリ140の一例を示す図、共通ライブラリ140の「オーダ内容を取得」の呼び出し先141を示す図である。
共通ライブラリ140のメインとなる処理は、図6の符号a、b、cであり、
前処理であるcreateOrFindMediatorProducts();と、
本処理であるinteractWithPartner();と、
後処理であるreflectToMediatorProducts();と、
を記述している。
このうち、
前処理「createOrFindMediatorProducts();」と後処理「reflectToMediatorProducts();」については、共通する処理であるので、共通ライブラリ内で実際の処理を記述している。
productOffering = getProductOffering(id)
を記述することで、図6(b)の符号eに示す「オーダ内容取得処理の詳細」を呼び出した後、図6の符号fに示すように、図6の符号dに示す「オーダ内容を取得」に戻る。
class XXXX {
getProductOffering (id) {
url = …;
header = ….;
pathParams = …;
response = setGetRequest(url, header, pathParams)
return response;
}
getProduct() {
}
getCharacteristic() {
}
}
図6の符号gに示すdoUpdateNotifyStatus(INPROGRESS);では、「状態変更(InProgress)を通知」処理を実行する。実際の処理は共通ライブラリ内で実装する(図6では省略)。
次に、API呼出しロジック部120の処理について説明する。
図7は、API呼出しロジック部120の処理を示す図である。ただし、図7には、API呼出しロジック部120は表記されておらず、API順序制御とパラメータ詰替え処理が示されている。図7の星印マークは、連携実行装置本体部20とAPIアダプタ101間でAPIの形式が変換されることを表し、図7の三角形は、卸サービス事業者API同士であるためAPIの形式が変換されないことを表している。
API呼出しロジック部120(図7には図示せず)は、API順序制御と、パラメータ詰替え処理と、を実行する。
図7の符号h1−h6に示すように、API呼出しロジック部120は、卸サービス事業者API50の起動条件をチェックし、決められた実行順序で卸サービス事業者API50を起動する。上記起動条件とは、下記の通りである。例えばあるパラメータがtrueになっていることを条件に、APIを実行する、というように起動に条件がついている場合がある。API呼出しロジック部120は、このような起動条件の有無をチェックし、起動条件を満たしていれば該当する卸サービス事業者API50を起動する。なお、上記実行順序は、設計段階で定めておく。
API呼出しロジック部120(図7には図示せず)は、連携実行装置本体部20からのオーダ内から卸サービス事業者API50(ここではAuthの卸サービス事業者API50)の実行に必要なパラメータを取り出し、卸サービス事業者API実行部130(図7には図示せず)に送信する。
ここで、卸サービス事業者API50の実行に必要なパラメータについては、APIアダプタの設計段階で、その値をどう設定するかを決定しておくものとする。例えば、予め決めた既定値を使うのか、サービス事業者のオーダから読み取るのか、設定ファイルから読み取るのか、等である。また、「サービス事業者のオーダから読み取る」としたパラメータについては、オーダ内でのデータ構成とパラメータ名を定めておく。例えば“name”: “user.id”, “value”: “100”等となる。
オーダから取り出したパラメータ
“name”: “user.id”
“value”: “100”
を
“userId”: 100
に詰め替える。
すなわち、図7の符号iに示すように、オーダから取り出したパラメータは、パラメータ名「“name”」の値が「“user.id”」、パラメータ名「“value”」の値が「“100”」になっている。一方、卸サービス事業者API50を実行する際には、「“userId”: 100」というように、パラメータ名が「“userId”」、値が「100」という形式に変換する必要がある。API呼出しロジック部120(図7には図示せず)は、このようなパラメータ詰替え(変換)処理を行うことで、適切なデータ形式に変換している。
そして、上記Auth(認証)トークンに関するAuthのAPI50の処理が終わると、API順序制御により、決められた実行順序に従って次の卸サービス事業者API50(ここではCreate Network)の卸サービス事業者API50を起動する(図7の符号h2参照)。
次に、上記API順序制御により、決められた実行順序に従って次の卸サービス事業者API50(ここではShow Networkの卸サービス事業者API50)を起動する(図7の符号h3参照)。以下、上記API順序制御により、同様の処理を繰り返してCreate Networkの卸サービス事業者API50の起動まで行う(図7の符号h2参照)。
Cloud 21−2用のAPIアダプタ101−2が、サブネットの中にサーバを作成するアダプタである場合、このサーバ作成完了で処理が終了する。
Create Networkの卸サービス事業者API50は、非同期のAPIである。このため、Create Networkの卸サービス事業者API50から応答が返ってきても、実際にネットワークが完成するまでには時間がかかる。そこで、Create Networkの卸サービス事業者API50の次の実行順序に、Show Networkの卸サービス事業者API50を置くことで、Create Networkの卸サービス事業者API50によりネットワークが完成したことを確認する。
上記API順序制御による、決められた実行順序の最後の卸サービス事業者API50(ここではCreate Networkの卸サービス事業者API50)の実行では、上記パラメータ詰替え処理を行う。
API呼出しロジック部120(図7には図示せず)は、卸サービス事業者API(Create Networkの卸サービス事業者API50)の実行結果を卸サービス事業者API実行部130(図7には図示せず)から受け取り、連携実行装置本体部20に流通するための適切なデータ形式に変換する。
Create Networkの卸サービス事業者API50のパラメータ
server: {
“id” : “xxx”,
“status”: “active”,
(中略)
}
を
“name”: “server.status”
“value”: “active”
に詰め替える。
図7の符号h6に示すように、この例では、API呼出しロジック部120(図7には図示せず)は、決められた実行順序の最後のCreate Networkの卸サービス事業者API50の実行結果をパラメータ詰替え処理したデータを連携実行装置本体部20に流通させる(図7の星印マーク参照)。なお、この例(図7)では最後のAPIの結果のみを流通しているが、流通するのは必ずしも最後のAPIの結果だけに限らない。
次に、卸サービス事業者API実行部130の処理について説明する。
図8は、卸サービス事業者API実行部130の処理を示す図である。
上述したように、オーダ受付部110は、連携実行装置本体部20(図示省略)からの単体オーダの受付/応答処理を行う。オーダ受付部110は、オーダ内容の取得を行う。API呼出しロジック部120は、API呼出しロジック(実行順序、入出力パラメータ指定等)を記述している。
卸サービス事業者API実行部130は、卸サービス事業者2にHTTPリクエスト62を送信したとしても、正常応答が返ってくるとは限らないので、ステータスコードのチェックを行っている。例えば、卸サービス事業者2から、「Create Networkの生成に成功した旨のステータスコード」または「Create Networkの生成に失敗した旨のステータスコード(エラーコード)」を受け取る。
例外発出処理は、例外的な事態が発生した場合は、発生した例外の種類を示すコードを外部(卸サービス事業者API実行部130の外部)に出力する。また、外部には、発生した例外の処理があらかじめライブラリとして用意されており、この例外(コード)を受け取る機能部(ソフトウェア)が例外処理を実行する。本実施形態では、卸サービス事業者API実行部130が、例外発出を行うことで処理を終える。
次に、API仕様書を基にした自動生成について説明する。
図9は、API仕様書を基にした自動生成を説明する図である。
標準化団体Open API Initiativeでは、Google、Microsoft等が中心となって、マシンリーダブルなWeb API仕様書の記述方法の標準化を目指している。
Web API仕様書が、マシンリーダブルになることにより、クライアント側(アダプタ側)のSDK(Software Development Kit)部およびサーバ側(卸サービス側)のサーバモックが自動生成可能になる。この技術をサポートするOSS(Open-source software)である、Swagger Codegen(後記)を、本実施形態のAPIアダプタ作成へ適用することにより、卸サービス事業者API実行部130を自動生成する。なお、Swagger Codegenはあくまで一例であり、サーバ側API仕様を基にした同様の自動生成技術であれば適用が可能である。
サーバIF仕様71からSwagger Codegenを適用してクライアントIFソースコード72を生成する。Swagger Codegenは、WSDL2Javaに相当する。また、生成されたクライアントIFソースコード72は、クライアントSDK (Webサービスにおけるスタブ)に相当する。
クライアントIFソースコード72からクライアントIF部73を作成し、卸サービス事業者API実行部130に実装する。
クライアントロジック部75と卸サービス事業者API実行部130とを組み合わせてクライアント側(アダプタ側)が完成する。
サーバロジック部79とサーバIF部77とを組み合わせてサーバ側(Southbound)が完成する。
次に、Swagger Codegenについて説明する。
図10は、Swagger Codegenを説明する図である。
Swagger Codegen80は、Swagger Specで記載されたAPI仕様からクライアント/サーバコードを生成するコマンドラインツールである。Swagger Codegen80は、Swagger Spec (REST APIに対して Swagger の仕様に準じたドキュメント)で記載されたAPI仕様からドライバもしくはクライアントSDKを自動生成する。
Swagger Codegen80には、コード自動生成のための変換ルールを定義したテンプレート81と、各卸サービスのAPI仕様を定義したビルドに必要なファイルであるSpecファイル82−1,Specファイル82−2,Specファイル82−3が入力される。Specファイル82−1は、卸サービスAのSpecファイル、Specファイル82−2は、卸サービスBのSpecファイル、Specファイル82−3は、卸サービスCのSpecファイルである。
本実施形態は、APIアダプタ部100の作成方法に特徴がある。
本実施形態のAPIアダプタ作成方法は、オーダ受付部110と、API呼出しロジック部120と、卸サービス事業者API実行部130と、を組み合わせることによって、APIアダプタ部100(図3参照)を作成する。
具体的には、APIアダプタ作成方法は、
・共通ライブラリ化されたオーダ受付部110を用いる方法
・共通ライブラリ化されたテンプレートソースコードおよび自動生成されたIF仕様ドキュメントをもとに、API呼出しロジック部120を実装する方法
・自動生成された卸サービス事業者API実行部130を用いる方法
を有する。
なお、共通ライブラリの例については、前記図6で述べた。
図11は、APIアダプタ作成方法の概要を示す図である。図11は、APIアダプタ作成方法の各工程を示す。
図11に示すように、APIアダプタ作成方法は、下記工程(1)−(3)を有する。
(1)卸サービス事業者API実行部生成工程
卸サービス事業者API実行部生成工程S40では、卸サービス事業者API仕様書をもとに、卸サービス事業者API実行部ソースコードを自動生成する。卸サービスAPI実行部ソースコードの自動生成については、前記図10のSwagger Codegenを用いる。なお、Swagger Codegenは一例であり、同様の技術であればこれに限らない。
卸サービス事業者API実行部生成工程では、自動生成されたソースコードから、卸サービス事業者API実行部仕様ドキュメントを生成する。
共通ライブラリおよび卸サービス事業者API実行部組込み工程S41では、共通ライブラリソースコードおよび生成した卸サービス事業者API実行部ソースコードを、API呼出しロジック部テンプレートソースコードに組み込む。
API呼出しロジック部作成工程S42では、共通ライブラリおよび卸サービスAPI実行部ソースコードを組み込んだテンプレートソースコード、および各種マニュアル・仕様ドキュメントをもとに、アダプタ部ソースコードを手動で実装する。作成したソースコードをビルドすることで、アダプタ部実行ファイルを得る。
以下、卸サービス事業者API実行部生成工程、共通ライブラリおよび卸サービス事業者API実行部組込み工程、およびAPI呼出しロジック部作成工程について順に説明する。
図12は、卸サービス事業者API実行部生成工程S40を説明する工程図である。なお、図12中の白抜きのファイルは、卸サービス事業者により提供される入力ファイルを、図12中の網掛けのファイルは、共通ライブラリにより予め提供されるファイルを、図12中のハッチングのファイルは、ツール等により自動生成されるファイルを、図12中の格子のファイルは、手動で作成するファイルを、それぞれ示している(以下、ファイルについては同様の表記を採る)。
ステップS12において、卸サービス事業者2が提供するAPI仕様書(独自形式)113を、標準形式の卸サービス事業者API仕様書(標準形式)102に直す(変換する)。卸サービス事業者2によって標準形式のAPI仕様書が提供されていれば、本ステップS12は不要である。
卸サービス事業者2のAPI仕様書102は、APIエンドポイント、メソッド、Input/Outputパラメータ一覧等が記載されたファイルである。Open API Specification形式等を想定するが、これに限定するものではない。
生成ルールテンプレートファイル103には、標準形式のAPI仕様書から、卸サービス事業者API実行部ソースコードを自動生成するためのルールが記載されている。また、生成ルールテンプレートファイル103には、HTTPレスポンスにおけるステータスコードに応じた例外発出処理(図8の符号nに示す例外発出処理参照)、またレスポンスからのヘッダ値取得処理(図8の符号oに示すレスポンスヘッダの取得処理参照)がルールとして設定されている。なお、クライアントIF部自動生成部131(後記)は、自動生成ツール自体であり、例えばswagger codegenである。
ステップS15において、クライアントIF部自動生成部131は、卸サービス事業者API仕様書(標準形式)102および生成ルールテンプレートファイル103をもとに、卸サービス事業者API実行部ソースコード104(図9のクライアントIFソースコード72に対応する)を生成する。クライアントIF部自動生成部131は、標準形式のAPI仕様をもとに、卸サービス事業者API実行部ソースコード104を自動生成する機能部であり、具体的にはクライアントIF部自動生成ツールである。このクライアントIF部自動生成ツールは、Swagger Codegen(図10参照)等を想定するが、これに限定するものではない。
卸サービス事業者API実行部ソースコード104をビルドすることにより、卸サービス事業者API実行部仕様ドキュメントおよび、卸サービス事業者API実行部(クライアントIF部73)が生成される。ただし、本実施形態におけるAPIアダプタ作成手順では後でまとめてビルドするため、クライアントIF部73は使用しない(図示を省略している)。
図13は、共通ライブラリおよび卸サービス事業者API実行部組込み工程を説明する工程図である。
ステップS21において、卸サービス事業者API実行部生成工程(図12参照)のステップS15で生成された卸サービス事業者API実行部ソースコード104を入力する。
ステップS22において、共通ライブラリ(図6参照)により共通ライブラリソースコード106を提供する。共通ライブラリソースコード106は、共通ライブラリ化されたソースコードである。共通ライブラリソースコード106には、連携実行装置本体部20(図3参照)からのオーダ受付・応答、オーダ内容取得機能を含む。
図14は、API呼出しロジック部作成工程を説明する工程図である。
ステップS31において、共通ライブラリおよび卸サービス事業者API実行部組込み工程(図12参照)のステップS23で生成されたAPI呼出しロジック部テンプレートソースコード107を入力する。
ステップS32において、共通ライブラリ(図6参照)により予め提供されるファイルであるアダプタ部実装マニュアル108および共通ライブラリ仕様ドキュメント109と、ツール等により自動生成されるファイルである卸サービス事業者API実行部仕様ドキュメント105と、を参照可能にする。
次に、アダプタ登録処理の処理について説明する。
図15は、アダプタ登録処理を示す図である。図1と同一構成部分には同一符号を付している。
アダプタ登録処理は、図14のAPI呼出しロジック部作成工程で作成したアダプタ部実行ファイル111をAPIアダプタ部100に登録する処理である。アダプタ部実行ファイル111をAPIアダプタ部100に登録することで、APIアダプタ部100は、最新の仕様で、各卸サービス事業者が提供するAPI仕様差分を吸収することができる。
連携実行装置本体部20は、本体部configファイル112に、新規追加するアダプタの名前等を指定する。
以上、APIアダプタ部100にアダプタ部実行ファイル111を登録し、かつ、連携実行装置本体部20に本体部configファイル112で、新規追加するアダプタの名前等を指定するconfig設定を行うことでアダプタ登録処理が完了し、APIアダプタ部100を新規卸サービス/仕様変更への追随させることができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
2,2−1,2−2,2−3 卸サービス事業者
3,3−1,3−2,3−3 連携オーダ
4 サービス
10 連携実行装置
20 連携実行装置本体部
30 連携実行装置本体部API
31 単体オーダ
31−1 NW service用単体オーダ
31−2 Cloud service用単体オーダ
31−3 APL service用単体オーダ
40 連携実行装置API
50 卸サービス事業者API
51 卸サービスAPI(仕様差分)
100 APIアダプタ部
101,101−1,101−2,101−3 APIアダプタ
110 オーダ受付部(オーダ受付手段)
120 API呼出しロジック部(API呼出しロジック手段)
130 卸サービス事業者API実行部(卸サービス事業者API実行手段)
Claims (7)
- 複数の卸サービスを組み合わせた連携サービスを一括で構築する連携実行装置に用いられるAPI(Application Program Interface)アダプタであって、
前記連携サービスのオーダを単体オーダに分解する連携実行装置本体部から、前記単体オーダを受付け、かつ、前記連携実行装置本体部への応答処理を行うオーダ受付部と、
卸サービス事業者APIの起動条件をもとに、決められた実行順序で前記卸サービス事業者APIを起動し、
前記単体オーダ内から前記卸サービス事業者APIの実行に必要なパラメータを取り出し、卸サービス事業者API実行部に送信するとともに、前記卸サービス事業者APIの実行結果を、前記連携実行装置本体部が流通可能なデータ形式に変換するAPI呼出しロジック部と、
前記API呼出しロジック部から、卸サービス事業者APIの実行に必要なパラメータを受領し、リクエストの形に組み立て直して前記卸サービス事業者APIに要求するとともに、当該リクエストに対する実行結果としてのレスポンスを受信後、当該レスポンスを所定形式に組み立て直して前記API呼出しロジック部に返却する前記卸サービス事業者API実行部と、を備える
ことを特徴とするAPIアダプタ。 - 複数の卸サービスを組み合わせた連携サービスを一括で構築する連携実行装置に用いられるAPIアダプタを作成する方法であって、
前記APIアダプタは、オーダ受付部、API呼出しロジック部、および卸サービス事業者API実行部を備えており、
前記オーダ受付部が、前記連携サービスのオーダを単体オーダに分解する連携実行装置本体部から、前記単体オーダを受付ける工程と、
前記API呼出しロジック部が、卸サービス事業者APIの起動条件をもとに、決められた実行順序で前記卸サービス事業者APIを起動し、
前記単体オーダ内から前記卸サービス事業者APIの実行に必要なパラメータを取り出し、前記卸サービス事業者API実行部に送信する工程と、
前記卸サービス事業者API実行部が、前記API呼出しロジック部から、前記卸サービス事業者APIの実行に必要なパラメータを受領し、リクエストの形に組み立て直して前記卸サービス事業者APIに要求する工程と、
前記卸サービス事業者API実行部が、当該リクエストに対する実行結果としてのレスポンスを受信後、当該レスポンスを所定形式に組み立て直して前記API呼出しロジック部に返却する工程と、
前記API呼出しロジック部が、前記卸サービス事業者APIの実行結果を、前記連携実行装置本体部が流通可能なデータ形式に変換する工程と、
オーダ受付部が、前記連携実行装置本体部への応答処理を行う工程と、を有する
ことを特徴とするAPIアダプタ作成方法。 - 前記卸サービス事業者API実行部が、卸サービス事業者API仕様書をもとに、卸サービス事業者API実行部ソースコードを自動生成し、自動生成された前記卸サービス事業者API実行部ソースコードから、卸サービス事業者API実行部仕様ドキュメントを生成する工程を、さらに有する
ことを特徴とする請求項2に記載のAPIアダプタ作成方法。 - 前記卸サービス事業者API実行部が、共通ライブラリソースコードおよび生成した前記卸サービス事業者API実行部ソースコードを、API呼出ロジック部テンプレートソースコードに組み込む工程をさらに有する
ことを特徴とする請求項3に記載のAPIアダプタ作成方法。 - 前記API呼出しロジック部が、共通ライブラリおよび卸サービスAPI実行部ソースコードを組み込んだテンプレートソースコード、および各種マニュアル・仕様ドキュメントをもとに、アダプタ部ソースコードを実装し、作成したアダプタ部ソースコードをビルドしてアダプタ部実行ファイルを生成する
ことを特徴とする請求項2に記載のAPIアダプタ作成方法。 - API呼出しロジック部は、作成した前記アダプタ部実行ファイルを前記APIアダプタに登録する工程を有する
ことを特徴とする請求項5に記載のAPIアダプタ作成方法。 - 複数の卸サービスを組み合わせた連携サービスを一括で構築する連携実行装置に用いられるAPIアダプタとしてのコンピュータを、
前記連携サービスのオーダを単体オーダに分解する連携実行装置本体部から、前記単体オーダを受付け、かつ、前記連携実行装置本体部への応答処理を行うオーダ受付手段、
卸サービス事業者APIの起動条件をもとに、決められた実行順序で前記卸サービス事業者APIを起動し、
前記単体オーダ内から前記卸サービス事業者APIの実行に必要なパラメータを取り出し、卸サービス事業者API実行手段に送信するとともに、前記卸サービス事業者APIの実行結果を、前記連携実行装置本体部が流通可能なデータ形式に変換するAPI呼出しロジック手段、
前記API呼出しロジック手段から、前記卸サービス事業者APIの実行に必要なパラメータを受領し、リクエストの形に組み立て直して前記卸サービス事業者APIに要求するとともに、当該リクエストに対する実行結果としてのレスポンスを受信後、当該レスポンスを所定形式に組み立て直して前記API呼出しロジック手段に返却する前記卸サービス事業者API実行手段、として機能させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018028324A JP6795531B2 (ja) | 2018-02-20 | 2018-02-20 | Apiアダプタ、apiアダプタ作成方法、およびプログラム |
US16/971,256 US10977102B2 (en) | 2018-02-20 | 2019-02-19 | API adapter, API adapter creation method, and program |
PCT/JP2019/006171 WO2019163793A1 (ja) | 2018-02-20 | 2019-02-19 | Apiアダプタ、apiアダプタ作成方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018028324A JP6795531B2 (ja) | 2018-02-20 | 2018-02-20 | Apiアダプタ、apiアダプタ作成方法、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019144848A JP2019144848A (ja) | 2019-08-29 |
JP6795531B2 true JP6795531B2 (ja) | 2020-12-02 |
Family
ID=67687800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018028324A Active JP6795531B2 (ja) | 2018-02-20 | 2018-02-20 | Apiアダプタ、apiアダプタ作成方法、およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10977102B2 (ja) |
JP (1) | JP6795531B2 (ja) |
WO (1) | WO2019163793A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7003867B2 (ja) * | 2018-08-02 | 2022-01-21 | 日本電信電話株式会社 | Apiアダプタ作成装置、apiアダプタ作成方法およびapiアダプタ作成プログラム |
US11221896B2 (en) * | 2020-01-22 | 2022-01-11 | Idera, Inc. | Systems and methods for API request conversion |
US11507351B2 (en) * | 2020-05-12 | 2022-11-22 | Vmware, Inc. | Intent compiler |
JPWO2022215194A1 (ja) * | 2021-04-07 | 2022-10-13 | ||
US11567738B2 (en) * | 2021-04-15 | 2023-01-31 | Red Hat, Inc. | Code generator for creating a unified data model for multiple language specifications |
US20230102570A1 (en) * | 2021-09-28 | 2023-03-30 | Arteris, Inc. | System and method for scripting generators |
US11989558B2 (en) * | 2022-02-24 | 2024-05-21 | Sap Se | Automatic generation of a cloud integration adapter from a standard, programming language-agnostic interface specification |
WO2023199414A1 (ja) * | 2022-04-12 | 2023-10-19 | 日本電信電話株式会社 | バーチャルヒューマン開発支援システム、バーチャルヒューマン開発支援方法及びバーチャルヒューマン開発支援プログラム |
KR102528717B1 (ko) * | 2022-10-07 | 2023-05-08 | 이데아텍(주) | 보안 기능을 지원하는 api 통합 처리를 위한 게이트웨이 장치 및 이의 동작 방법 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020128919A1 (en) * | 2001-03-06 | 2002-09-12 | Cedric-Gaya Rime | Order processing system |
JP2008134913A (ja) * | 2006-11-29 | 2008-06-12 | Nippon Telegr & Teleph Corp <Ntt> | 複合サービス提供システムおよび方法 |
JP6169662B2 (ja) * | 2015-09-11 | 2017-07-26 | 西日本電信電話株式会社 | Api変換アダプタ、api変換システム、及びapi変換プログラム |
US10331505B2 (en) * | 2016-06-30 | 2019-06-25 | Microsoft Technology Licensing, Llc. | Application programming interface (API) hub |
US11461843B2 (en) * | 2019-05-23 | 2022-10-04 | Capital One Services, Llc | Multi-lender platform that securely stores proprietary information for pre-qualifying an applicant |
-
2018
- 2018-02-20 JP JP2018028324A patent/JP6795531B2/ja active Active
-
2019
- 2019-02-19 WO PCT/JP2019/006171 patent/WO2019163793A1/ja active Application Filing
- 2019-02-19 US US16/971,256 patent/US10977102B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200387415A1 (en) | 2020-12-10 |
JP2019144848A (ja) | 2019-08-29 |
US10977102B2 (en) | 2021-04-13 |
WO2019163793A1 (ja) | 2019-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6795531B2 (ja) | Apiアダプタ、apiアダプタ作成方法、およびプログラム | |
US10331422B1 (en) | System and method for generating API devlopment code for integrating platforms | |
US9311171B1 (en) | Execution of end-to-end-processes across applications | |
JP5911262B2 (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
US6961760B2 (en) | Transforming data automatically between communications parties in a computing network | |
US8248992B2 (en) | Method and apparatus for providing home network device service to an external device through web service | |
CN107040416B (zh) | 一种基于Cairngorm框架的虚拟数据中心可视化管理方法 | |
US9086935B2 (en) | Accessing business object resources for a machine-to-machine communication environment | |
Nguyen et al. | Ws2jade: Integrating web service with jade agents | |
US20060251125A1 (en) | System and method for producing notification based web services | |
US20070118842A1 (en) | DDS-assisted CORBA discovery | |
AU2023251465A1 (en) | System and method for generating api development code for integrating platforms | |
CN102497451A (zh) | 服务处理系统和服务处理方法 | |
WO2018116933A1 (ja) | Rpc変換処理システムおよびrpc変換方法 | |
CA2543557C (en) | System and method for producing notification based web services | |
CN113778499B (zh) | 发布服务的方法、装置、设备和计算机可读介质 | |
US20170353581A1 (en) | Content based routing architecture system and method | |
JP5517255B2 (ja) | 複数のサービスノードサーバにおけるサービス連結制御方法、制御ノードサーバ及びプログラム | |
US8700737B2 (en) | Automated method for generating a web service composition | |
Marinho et al. | Extending a software component repository to provide services | |
Baranda et al. | Multi-Administrative Domain Service Onboarding in a ZSM-Based Orchestration Architecture | |
JP7332950B2 (ja) | サービス連携支援装置、サービス連携支援方法、および、サービス連携支援プログラム | |
Chiponga et al. | A version-based transformation proxy for service evolution | |
WO2006040991A1 (ja) | 端末装置、サーバ装置、及びWebサービス提供システム | |
Lundblad | Information Logistics Service Router. An ESB for integrating enterprise services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200825 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201021 |
|
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: 20201110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20201112 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6795531 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |