特許第6943336号(P6943336)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許6943336連携処理再開装置、および、連携処理再開方法
<>
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000002
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000003
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000004
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000005
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000006
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000007
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000008
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000009
  • 特許6943336-連携処理再開装置、および、連携処理再開方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6943336
(24)【登録日】2021年9月13日
(45)【発行日】2021年9月29日
(54)【発明の名称】連携処理再開装置、および、連携処理再開方法
(51)【国際特許分類】
   G06F 11/14 20060101AFI20210916BHJP
   G06F 9/48 20060101ALI20210916BHJP
【FI】
   G06F11/14 602A
   G06F9/48 370
【請求項の数】3
【全頁数】15
(21)【出願番号】特願2020-516142(P2020-516142)
(86)(22)【出願日】2019年3月28日
(86)【国際出願番号】JP2019013806
(87)【国際公開番号】WO2019208098
(87)【国際公開日】20191031
【審査請求日】2020年3月31日
(31)【優先権主張番号】特願2018-81960(P2018-81960)
(32)【優先日】2018年4月23日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001807
【氏名又は名称】特許業務法人磯野国際特許商標事務所
(72)【発明者】
【氏名】田中 宏幸
(72)【発明者】
【氏名】高橋 謙輔
(72)【発明者】
【氏名】丹治 直幸
(72)【発明者】
【氏名】武 直樹
(72)【発明者】
【氏名】小内 伸夫
(72)【発明者】
【氏名】加藤 浩
(72)【発明者】
【氏名】矢崎 啓之
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2005−63160(JP,A)
【文献】 特開2018−32897(JP,A)
【文献】 国際公開第2016/150524(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/14
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
複数の卸サービスを連携させるための指示である連携オーダの要求を受け付ける要求受付部と、
前記連携オーダを実行することにより呼び出される卸サービスの個別の命令ごとに、その実行成否を記録するリソース管理部と、
前記実行成否が実行否であることで中断された前記連携オーダを再開するときに、前記リソース管理部から既に実行された前記卸サービスの個別の命令の前記実行成否を参照し、実行に成功した前記個別の命令の再実行をスキップしつつ、実行否または未実行である前記個別の命令を実行するオーダ再開部とを有しており、
前記リソース管理部は、さらに、前記連携オーダを実行することにより呼び出される卸サービスの個別の命令ごとに、その実行結果を再開情報として記録し、
前記オーダ再開部は、再実行をスキップした前記個別の命令について、前記個別の命令が変数の取得処理であるときは、前回取得した変数を前記再開情報から読み出すことを特徴とする
連携処理再開装置。
【請求項2】
前記オーダ再開部は、前記要求受付部が前記連携オーダの再開要求を受け付けるのを待ってから、中断された前記連携オーダを再開することを特徴とする
請求項1に記載の連携処理再開装置。
【請求項3】
連携処理再開装置は、要求受付部と、リソース管理部と、オーダ再開部とを有しており、
前記要求受付部は、複数の卸サービスを連携させるための指示である連携オーダの要求を受け付け、
前記リソース管理部は、前記連携オーダを実行することにより呼び出される卸サービスの個別の命令ごとに、その実行成否を記録し、さらに、前記連携オーダを実行することにより呼び出される卸サービスの個別の命令ごとに、その実行結果を再開情報として記録し、
前記オーダ再開部は、前記実行成否が実行否であることで中断された前記連携オーダを再開するときに、前記リソース管理部から既に実行された前記卸サービスの個別の命令の前記実行成否を参照し、実行に成功した前記個別の命令の再実行をスキップしつつ、実行否または未実行である前記個別の命令を実行し、再実行をスキップした前記個別の命令について、前記個別の命令が変数の取得処理であるときは、前回取得した変数を前記再開情報から読み出すことを特徴とする
連携処理再開方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、連携処理再開装置、および、連携処理再開方法に関する。
【背景技術】
【0002】
各サービス事業者がそれぞれ提供する卸サービスを連携させて、1つの統合したサービスを提供する連携サービスが提案されている。それぞれの卸サービスは提供される品質や安定性などが異なるため、卸サービスの利用者である連携サービスの側で、卸サービスが提供するサービス内容を管理する必要がある。
【0003】
例えば、特許文献1には、ネットワークサービスの予約時の使用可能性の低いリソースの占有やNW事業者のオペレーションシステムの処理負荷の増大を回避して、サービスリソースの予約を可能とするサービス予約装置が記載されている。これにより、卸サービスのリソースを過剰に予約しなくなり、リソースの利用効率が高まる。
【0004】
また、非特許文献1には、提案されているサービスの仕様をカタログとして記述し、そのカタログを解釈して実行するサービス非依存部と、サービスごとのAPI(Application Programming Interface)を呼び出して実行するサービス依存部と、を疎結合とするシステムが記載されている。これにより、連携サービスに対して、新たな卸サービスやAPIへの柔軟な対応が可能になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2017−143426号公報
【非特許文献】
【0006】
【非特許文献1】高橋謙輔、他著「複数事業者間サービス連携を柔軟にするアーキテクチャ」、2017年 電子情報通信学会通信ソサイエティ大会、2017年9月12日、B-14-8
【発明の概要】
【発明が解決しようとする課題】
【0007】
連携サービスを構成する複数の卸サービスのうち、1つの卸サービスでも停止してしまうと、連携サービス全体としてサービスを提供できなくなってしまう。なお、連携オーダとして複数の卸サービスへそれぞれサービスオーダを実行させており、途中までの連携オーダが成功していたときに障害が発生したとする。その場合でも、ロールバックをするために、途中までの連携オーダを一旦全て削除した後に、最初から連携オーダをやり直す必要がある。よって、ロールバック処理に伴い、リソースコストの増大や、処理時間の増大が発生していた。
【0008】
なお、前記した特許文献1や、非特許文献1などの従来の手法は、連携オーダについて、そのオーダ実行処理が正常に完了する場合を想定しており、連携オーダ実行中の不具合発生に起因したオーダ実行処理停止時の対処方法については言及されていない。
【0009】
そこで、本発明は、複数のサービスオーダを連携させた連携オーダについて、中断状態から効率的に再開させることを、主な課題とする。
【課題を解決するための手段】
【0010】
前記課題を解決するために、本発明の連携処理再開装置は、以下の特徴を有する。
本発明は、複数の卸サービスを連携させるための指示である連携オーダの要求を受け付ける要求受付部と、
前記連携オーダを実行することにより呼び出される卸サービスの個別の命令ごとに、その実行成否を記録するリソース管理部と、
前記実行成否が実行否であることで中断された前記連携オーダを再開するときに、前記リソース管理部から既に実行された前記卸サービスの個別の命令の前記実行成否を参照し、実行に成功した前記個別の命令の再実行をスキップしつつ、実行否または未実行である前記個別の命令を実行するオーダ再開部とを有することを特徴とする。
前記リソース管理部が、さらに、前記連携オーダを実行することにより呼び出される卸サービスの個別の命令ごとに、その実行結果を再開情報として記録し、
前記オーダ再開部が、再実行をスキップした前記個別の命令について、前記個別の命令が変数の取得処理であるときは、前回取得した変数を前記再開情報から読み出すことを特徴とする。
【0011】
これにより、複数の卸サービスを連携させた連携オーダについて、個別の命令単位で管理した実行成否をもとに、前回の実行に成功した個別の命令が適切にスキップされるので、中断状態から効率的に再開させることができる。
さらに、変数の取得処理に続いて取得した変数の利用処理が行われるような連携オーダについて、変数の取得処理の後に中断した場合でも、変数の取得処理を再実行するような無駄を削減できる。
【0014】
本発明は、前記オーダ再開部が、前記要求受付部が前記連携オーダの再開要求を受け付けるのを待ってから、中断された前記連携オーダを再開することを特徴とする。
【0015】
これにより、要求受付部に投入される連携オーダの入力値誤りなどの連携オーダの中断原因を適切に取り除いてから、連携オーダが再開することができる。よって、何度も同じ中断原因により連携オーダが中断してしまうような無駄を削減できる。
【発明の効果】
【0016】
本発明によれば、複数のサービスオーダを連携させた連携オーダについて、中断状態から効率的に再開させることができる。
【図面の簡単な説明】
【0017】
図1】本実施形態に係わる通信システムの構成図である。
図2】本実施形態に係わる通信システムの処理概要を示すフローチャートである。
図3】本実施形態に係わる連携オーダが実行中断するまでのリソース管理部が保持する情報の一例を示すテーブルである。
図4】本実施形態に係わる連携オーダが実行中断した後から再開するまでのリソース管理部が保持する情報の一例を示すテーブルである。
図5】本実施形態に係わるアダプタ共通部によるAPI処理の失敗時の動作を示すシーケンス図である。
図6】本実施形態に係わる図5の処理に続き、要求受付部が上位装置からの再開信号を受信し、ワークフロー部に通知する動作を示すシーケンス図である。
図7】本実施形態に係わる図6の処理に続き、ワークフロー部が受信した再開信号を、アダプタ共通部に通知する動作を示すシーケンス図である。
図8】本実施形態に係わる図7の処理に続き、通知された再開信号をもとに、アダプタ共通部が卸サービスを再開する動作を示すシーケンス図である。
図9】本実施形態に係わる図8の処理に続き、アダプタ共通部が卸サービスを再開する動作を示すシーケンス図である。
【発明を実施するための形態】
【0018】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【0019】
図1は、通信システムの構成図である。
通信システムは、上位装置50と、サービス連携装置10と、卸サービス30とがネットワークで接続されて構成される。サービス連携装置10と卸サービス30とは連携サービスシステムを形成し、上位装置50は、その連携サービスシステムを呼び出すための装置である。
サービス連携装置10は、CPU(Central Processing Unit)と、メモリと、ハードディスクなどの記憶手段(記憶部)と、ネットワークインタフェースとを有するコンピュータとして構成される。
このコンピュータは、CPUが、メモリ上に読み込んだプログラム(アプリケーションや、その略のアプリとも呼ばれる)を実行することにより、各処理部により構成される制御部(制御手段)を動作させる。
【0020】
NWサービス30a、Cloudサービス30b、および、APLサービス30cは、各卸サービス事業者からそれぞれ自身で管理する設備を用いて提供される。以下では、これらのNWサービス30a、Cloudサービス30b、および、APLサービス30cを、「卸サービス30」と総称する。
サービス連携装置10は、複数の卸サービス30を連携させて、1つの統合した連携サービスを上位装置50に提供する。つまり、サービス連携装置10は、卸サービス事業者間を連携させて、サービス連携装置10にとってのエンドユーザが利用する上位装置50に対して、連携サービスを提供する。
サービス連携装置10から卸サービス30を利用するときには、連携サービスを実行するための連携オーダから、卸サービス30が公開するサービスオーダ(卸オーダ)のAPI(個別の命令)が呼び出されて実行される。
【0021】
以下、3種類の連携オーダを例示する。これらの3種類の連携オーダはいずれも本実施形態の連携サービスシステムが扱う対象となる。
(1)新設時オーダ(add)は、各卸サービスリソースを組合わせた連携サービスをAPI連携によりインスタンス化する連携オーダである。例えば、NWサービス30a、Cloudサービス30b、APLサービス30cという3種類の卸サービス30それぞれに対して、新設の卸オーダを順番に指示するような新設時オーダが例示される。
(2)更新オーダ(modify)は、新設時オーダによりインスタンス化された連携サービスに対して、APIを介して変更を行う連携オーダである。変更内容は、例えば、NWサービス30aの帯域変更や、APLサービス30cが動作するサーバスペックの変更などである。
(3)削除オーダ(delete)は、新設時オーダによりインスタンス化された連携サービスを卸サービス30から削除する連携オーダである。
【0022】
サービス連携装置10は、卸サービス30の種類や数に依存せずに、複数の卸サービス30にまたがる連携オーダを管理する。そのために、サービス連携装置10は、要求受付部11と、ワークフロー部12と、オーダ再開部13と、リソース管理部14と、APIアダプタ部20とを有する。
要求受付部11は、上位装置50から受け付けた連携オーダの初回実行要求および中断後の再開要求を受け、それぞれワークフロー部12に実行させる。
ワークフロー部12は、卸サービス30の種類に応じたAPIアダプタ部20の各アダプタを介して、APIを実行する。各アダプタとは、NWサービス30aの場合はNWサービスアダプタ20a、Cloudサービス30bの場合はCloudサービスアダプタ20b、APLサービス30cの場合はAPLサービスアダプタ20cである。
APIアダプタ部20の各アダプタは、アダプタの種類に特化したアダプタ個別部23(23a,23b,23c)に加え、アダプタの種類に依存せずに共通処理を行うためのアダプタ共通部22(22a,22b,22c)を備えている。
【0023】
オーダ再開部13は、ワークフロー部12の実行結果をリソース管理部14に反映させる。リソース管理部14は、卸サービス30ごとに用意するAPIアダプタ部20のアダプタ単位、および、各アダプタ内部で実行するAPI単位で、連携オーダの状態(state)を自身の記憶部にて管理する。
これにより、サービス連携装置10を用いるサービス提供事業者は、連携オーダを構成するサービス個々の進捗状況を確認し、その中断サービスや、中断APIを調査する煩雑さがなくなる。
さらに、リソース管理部14には、卸サービス30のAPIを実行した結果が再開情報14a(resumeInfo)として記憶される。
【0024】
図2は、通信システムの処理概要を示すフローチャートである。
S11は、ワークフロー部12が連携オーダを実行することで、各APIアダプタ部20が卸サービス30のAPIを実行する処理である。
【0025】
S12は、リソース管理部14内の再開情報14aの更新処理である。各APIアダプタ部20のアダプタ共通部22は、実行されたAPIごとに卸サービス30からの実行結果をリソース管理部14に通知して、再開情報14aとして記録させる。これにより、API実行ごとの履歴管理を行うことで、この後において連携オーダが停止したときに、その原因を追跡することができる。なお、再開情報14aは、APIの実行履歴がリストで保存されており、API実行ごとにリストの末尾に履歴が追加されていく。
【0026】
再開情報14aは、例えば、以下に列挙した各項目(Attribute)を含む。
・String型の「API名」
・Boolean型の「APIの実行結果」は、成功時Trueまたは失敗時Falseという実行成否である。
・Integer型の「失敗分類」は、APIの実行結果がTrueの場合は記載不要。Falseの場合はエラー分類として、「0:(レスポンスなし)」または「1:(ユーザ入力値誤り)」または「2:(外部サービス障害)」または「3:(その他)」となる。
・String型の「その他失敗理由」は、失敗分類で「3:(その他)」の選択時に失敗原因を記載し、それ以外は記載不要である。
・String型の「API実行時のレスポンス」
・String型の「API実行時のパラメータ」
・String型の「アダプタ拡張領域」は、アダプタ毎に必要に応じて再開に必要な情報を書き込む。
・String型の「APIの実行日時」は、再開情報14a(resumeInfo)への更新日時をyyyy-MM-ddHH:mm:ss:SSS形式で記載する。
【0027】
S13は、アダプタ共通部22が卸サービス30からの障害通知などにより、連携サービスシステムに障害が発生したか否かを判定する処理である。S13でNoなら(つまり、障害が発生していないなら)S11に進み、YesならS14に進む。
この障害の発生により、連携オーダを構成する複数の卸オーダのうちの1つの卸オーダだけでなく、連携オーダ全体が中断してしまい、エンドユーザへの連携サービスの提供が一時的にできなくなってしまう。
【0028】
なお、以下に3種類の障害原因を例示する。
(原因1)上位装置50からサービス連携装置10に投入される連携オーダの入力値誤り。
(原因2)APIアダプタ部20から卸サービス30にデータを送受信するためのネットワーク上の障害などの、卸サービス30との接続不可による処理中断。
(原因3)卸サービス30内での処理中断といった外部事業者によるサービス障害。なお、卸サービス30内でタイムアウトなどの処理遅延によるエラーが発生したとしてもリトライにより回復可能な場合もある。その場合には、卸サービス30内でリトライを実行させることで(つまり、卸サービス30内で自己解決させることで)、サービス連携装置10が認識する障害を減らしてもよい。
【0029】
このような障害発生により、連携オーダの失敗結果を受けたアダプタ共通部22は、失敗結果をワークフロー部12に通知することで、リソース管理部14で管理している連携オーダの状態を中断状態(Held)に変更する(詳細は図4)。
なお、アダプタ共通部22は、S11の成功の実行結果と同様に、前記した「失敗分類」、「その他失敗理由」についても再開情報14aに記録する。
【0030】
「その他失敗理由」は、例えば、Cloudサービス30bとして、クラウドサービスでVMを構築するオーダの場合、「get server details」などの管理コマンドを実施したが、同じ管理コマンドを複数回発行しても応答が無く、その発行回数が上限の超過により失敗した旨の失敗理由が挙げられる。
また、「0:(レスポンスなし)」という失敗分類は、サービス連携装置10からみて、卸サービス30からのレスポンスが到着しない原因として、(原因2)のネットワーク障害か、(原因3)のサービス障害かを特定できないときに記録される。
一方、サービス連携装置10側での処理中断は、ワークフロー部12のアプリケーション不具合や、リソース管理部14のデータベース障害などが想定され、正常な状態管理が保証されていないことから、連携オーダの再開処理の対象外とする。
【0031】
S14は、障害により中断していた連携サービスシステムの再開契機かを判定する処理である。S14でYesになるまで待ち、YesになったらS15に進む。再開契機は、例えば、システム管理者が原因となる障害の解消を確認した旨の入力をサービス連携装置10の要求受付部11が受け付け、かつ、要求受付部11が上位装置50から連携オーダの再開要求を受信したときである。
【0032】
S15は、連携オーダの再開処理である。オーダ再開部13は、再開対象となる連携オーダを中断状態から実行状態に更新し、途中停止した各APIアダプタ部20へAPI実行の再開処理を指示する。一方、実行完了済みのAPIは、再度実行されずスキップされる。
また、前回失敗したAPIを再実行する場合は、アダプタ共通部22は、前回の実行結果の再開情報14aを、今回の再実行した結果で上書き更新する。なお、再開情報14aには、実行履歴がログとして記録されており、そのログ内容である各属性(Attribute)に関して、何をどこまで記載するかはアダプタやAPI(SDK)などに依存する。
【0033】
図3は、連携オーダが実行中断するまで(S12)のリソース管理部14が保持する情報の一例を示すテーブルである。リソース管理部14には、連携オーダから順番に実行されるAPIごとに、そのAPIの内容である連携内容と、そのAPIごとの状態(State)とが対応付けられている。図3では説明をわかりやすくするために、APIごとの状態を、実行前状態と、実行結果と、実行後状態とに分けて記載したが、実際は現在の状態だけリソース管理部14で管理すればよい。
【0034】
第1順番のAPI1は、変数Aの取得処理であり、例えば、連携オーダ(ProductOrder)からカタログ(ProductOffering)を取得する処理である。第1順番のAPI1の実行は成功したため、API1の状態が「受付状態」から「実行完了状態」に遷移する。
第3順番のAPI3は、変数Xの取得処理であり、例えば、カタログ(ProductOffering)からカタログ仕様(ProductSpecification ID)を抽出する処理である。第3順番のAPI3の実行は失敗したため、API1の状態が「受付状態」から「中断状態」に遷移する。
【0035】
なお、リソース管理部14で管理される状態として取り得る値は、以下の通りである。
・受付状態(Acknowledged)は、連携オーダの発行を受け付けた状態である。
・実行状態(InProgress)は、受付状態の連携オーダの実行を開始した状態である。
・中断状態(Held)は、実行状態の連携オーダに対して障害が発生することにより、処理が中断されてしまった状態である。そして、問題が解決したら、中断状態から実行状態に復帰する。
・実行完了状態(Completed)は、実行状態の連携オーダについて、その連携オーダの処理内容が完了した状態(正常終了の状態)である。
【0036】
図4は、連携オーダが実行中断した後から再開するまで(S15)のリソース管理部14が保持する情報の一例を示すテーブルである。
オーダ再開部13は、リソース管理部14のAPIごとの状態を参照することで、中断した箇所から連携オーダを再開する。つまり、以下の各処理により、再開処理が実行される。
オーダ再開部13は、リソース管理部14の順番の先頭から再開処理を開始する。そして、オーダ再開部13は、第1順番、第2順番という前回成功したAPIはスキップしつつ、スキップしたAPIが変数の取得処理であるときは、前回の実行結果を再開情報14aから代わりに取得する。
そして、第3順番である失敗したAPIについては、前回の実行結果を破棄して再度実行する。今回の第3順番は成功したため、オーダ再開部13は、後続の第4順番、第5順番などの前回失敗したAPI以降の全ての処理(前回未実行の処理も)を実行する。
【0037】
このように、オーダ再開部13は、前回実行した実行結果をリソース管理部14の状態情報から読み取り、前回実行した実行内容を再開情報14aから読み取ることで、連携オーダを再開するときに、前回成功したAPIを重複して実行することなく、中断した箇所から円滑に再開することができる。
【0038】
以上、図1図4を参照して、本実施形態の通信システムの概要について説明した。以下、図5図9の各シーケンス図を順に参照し、通信システムの装置間でやりとりされるメッセージに着目して、処理の詳細を説明する。この詳細の説明では、上位装置50とサービス連携装置10とのやりとりにREST(REpresentational State Transfer) APIが使用される。REST APIでは、データの処理要求として、登録要求(POST)、取得要求(GET)、更新要求(PUT)、削除要求(DELETE)が用いられる。
【0039】
また、これらの要求メッセージへの応答としては、以下に示すHTTP(Hypertext Transfer Protocol)ステータスコードが用いられる。
・「200 OK(成功応答)」は、要求が正常に処理されたことを示す。
・「201 Created(作成応答)」は、要求が正常に処理され、新規リソースが作成されたことを示す。
・「400 Bad Request(無効応答)」は、サーバが理解できない無効な要求であることを示す。
・「404 Not Found(存在なし応答)」は、要求されたリソースはサーバに存在しないことを示す。
【0040】
また、各シーケンス図の説明では、リソース管理部14内で進捗状況を管理するための情報であるCOS(Complement Order State)として、以下に列挙する各項目(Attribute)を適宜参照する。
・String型の「id」は、本リソースの識別子である。
・String型の「href」は、本リソースのURLである。
・String型の「type」は、連携サービスを示す「fp:FederateProduct」、卸サービスを示す「sp:SourceProduct」、APIアダプタ部20が生成したものを示す「med」のいずれかである。
・String型の「sourceStateChangeId」には、StateChange通知受信契機で本リソースを生成した場合の契機となったProductOrderに対応するComplementOrderStateのidを設定する。
・String型の「productOrderId」は、type=fp,spの場合、分解前のProductOrderリソースのidを設定する。type=medの場合、設定しない。
・String型の「parentId」は、type=spの場合、親ProductOrderを格納するComplementOrderStateリソースのidを設定する。type=fp,medの場合、設定しない。
【0041】
・String型の「productId」は、type=fp,spの場合、本ProductOrderリソースの実行で生成するカタログ/リソース管理部(TMF APIsリソース)のProductリソースのidを設定する。type=medの場合、設定しないcomplementOrderJsonへの、Productリソースのidの挿入は不要である。
・String型の「mediatorProductId」は、type=medの場合、本ProductOrderリソースの実行で生成する共通リソース管理部のMediatorProductリソースのidを設定する。Type=fp,spの場合、設定しない。complementOrderJsonへの、Productリソースのidの挿入は不要である。
・String型の「state」は、ProductOrderの実行状態である。
・String型の「execSourceOffering」は、Bundle Ruleにより、子ProductOrder処理を順次実行している場合、処理中のsourceOfferingの情報である。
・Json型の「complementOrderJson」は、このProductのProductOrderリソース情報である。
・String型の「externalProductOrderId」は、type=fp,spの場合に、APIアダプタ部やSB-IFで生成されたProductOrderのidを設定する。type=medの場合、設定しない。
・String型の「productOfferingHref」は、type=fp,spの場合に、ProductOfferingのhrefを設定する。type=med,tmfの場合、設定しない。
・ResumeInfo[]型の「resumeInfo」は、再開情報14aである。type=medの場合、ProductOrderの再開に必要な情報を格納する。type=fp,spの場合、設定しない。
【0042】
図5は、アダプタ共通部22によるAPI処理の失敗時の動作を示すシーケンス図である。
ワークフロー部12は、各APIアダプタ部20の卸サービスのインスタンス化を指示(add)する旨の登録要求(POST)をアダプタ共通部22に送信する(S101)。アダプタ共通部22は、S101に対する作成応答をワークフロー部12に返信する(S102)。
アダプタ共通部22は、S101で指示された内容に従い、各卸サービス30のAPIを起動する(S103)処理を非同期処理として起動する(S102b)。なお、非同期処理とは、第1処理、第2処理、第3処理…と続けて処理を実行するときに、第1処理の応答を待たずに第2処理や第3処理を起動してもよいことを示す。
【0043】
ここで、図3の順番3のように、ある卸サービス30でAPI処理が失敗したとする(S103b)。アダプタ共通部22は、その失敗を検知する(S104)。
そして、アダプタ共通部22は、APIごとの状態を実行状態(InProgress)から中断状態(Held)に更新するように、更新要求(PUT)をリソース管理部14に通知する(S105)。この更新要求には、実行に失敗したAPIの再開情報14aが含まれる。リソース管理部14は、S105に対する作成応答をアダプタ共通部22に返信する(S106)。
アダプタ共通部22は、連携オーダの実行が中断(Failed)されたことをワークフロー部12に通知する(S107)。ワークフロー部12は、連携オーダ全体を中断状態(Held)として上位装置50などに通知し、S107に対する作成応答をアダプタ共通部22に返信する(S108)。
以上説明した図5のシーケンスは、図2ではS11〜S13に該当する。
【0044】
図6は、図5の処理に続き、要求受付部11が上位装置50からの再開信号を受信し、ワークフロー部12に通知する動作を示すシーケンス図である。
上位装置50は、要求受付部11に、連携オーダの再開信号を通知する(S211)。この再開信号は、例えば「PUT /orderManagement/v1/productOrder/XXX」であり、XXXは連携オーダ(ProductOrder)のIDを意味する。
要求受付部11は、S211の再開信号で指定されたIDが存在するか否かを判定する(S212a)。要求受付部11は、S212aでNoなら無効応答を上位装置50に返答して(S212)処理を終了し、YesならS213に進む。
【0045】
要求受付部11は、S211の再開信号をリソース管理部14に転送する(S213)。リソース管理部14は、S213の再開信号で指定されたIDの連携オーダが存在するか否かを判定する(S214a)。リソース管理部14は、S214aでNoなら存在なし応答を、要求受付部11を介して上位装置50に返答して(S214d,S214e)処理を終了し、YesならS215aに進む。
【0046】
リソース管理部14は、再開信号で指定された連携オーダの状態が中断状態(Held)かつ、再開信号の更新要求(PUT)に含まれるパラメータが連携オーダのIDだけであるか否かを判定する(S215a)。
S215aでYesなら、リソース管理部14は成功応答を要求受付部11に送信し(S215d)、要求受付部11は作成応答を上位装置50に送信する(S215e)。
S215aでNoなら、リソース管理部14は、無効応答を要求受付部11経由で上位装置50に送信する(S221d,S221e)。なお、S215aでNoとは、例えば、Id=XXXに該当する連携オーダは存在し、state=中断状態(Held)で、actionが指定されていた場合である。
【0047】
図7は、図6の処理に続き、ワークフロー部12が受信した再開信号を、アダプタ共通部22に通知する動作を示すシーケンス図である。
上位装置50は、連携オーダのIDが指定された更新要求(PUT)である再開オーダ申込みを、ワークフロー部12に通知する(S311)。
ワークフロー部12は、S311のIDで指定された中断状態(Held)の連携オーダの取得要求(GET)を、リソース管理部14に通知する(S312)。
リソース管理部14は、S312で指定された条件に合致する連携オーダが存在するか否かを判定する(S313a)。
S313aでNoなら、リソース管理部14は、ワークフロー部12、要求受付部11を経由して、上位装置50に、存在なし応答を通知して(S313d,S313e,S313f)、処理を終了する。
S313aでYesなら、リソース管理部14は、ワークフロー部12、要求受付部11を経由して、上位装置50に、成功応答を通知する(S314d,S314e,S314f)。
【0048】
ワークフロー部12は、S313aで該当する連携オーダを実行状態(InProgress)に更新する更新要求(PUT)を、リソース管理部14に通知する処理(S321)を、非同期処理として起動する(S315)。リソース管理部14は、作成応答をワークフロー部12に返答する(S322)。
リソース管理部14は、要求受付部11を経由して、上位装置50にリソース変更(連携オーダの状態変更)を通知する(S323d,S323e)。
【0049】
ワークフロー部12は、S311のIDで指定された中断状態(Held)の連携オーダの取得要求(GET)を、リソース管理部14に通知する(S324)。この取得要求は、例えば「GET /commonResourceMng/orderManagement/v1/complementOrderState」である。リソース管理部14は、成功応答をワークフロー部12に通知する(S325)。
ワークフロー部12は、S324の取得要求(GET)への成功応答(S325)として取得した連携オーダのCOSのIDを用いて、そのCOSを実行状態(InProgress)に更新するための更新要求(PUT)を、リソース管理部14に通知する(S331)。この更新要求は、例えば「PUT /commonResourceMng/orderManagement/v1/complementOrderState」である。リソース管理部14は、作成応答をワークフロー部12に通知する(S332)。
なお、S321の状態更新処理は、S311で指定された連携オーダ(ProductOrder)のオーダ状態の更新処理である。一方、S331の状態更新処理は、S321の連携オーダを基に内部で補完した情報であるCOSの状態の更新処理である。
【0050】
図8は、図7の処理に続き、通知された再開信号をもとに、アダプタ共通部22が卸サービス30を再開する動作を示すシーケンス図である。ワークフロー部12は、COSの項目であるid(externalProductOrderId)のみ指定した再開処理をアダプタ共通部22に通知する(S411)。この再開処理は、例えば「PUT /mediation/xxx/orderManagement/v1/productOrder」である。
なお、「externalProductOrderId」は、上位装置50から連携オーダ(ProductOrder)をリクエストされた時にリソース管理部14で生成するProductOrderIDと、APIアダプタ部20にProductOrderをリクエストした時に生成されるProductOrderIDを紐付けるために用いられる。
アダプタ共通部22は、S411の該当IDについてのCOS上の状態の取得要求(GET)をリソース管理部14に通知する(S412)。この取得要求は、例えば「GET /commonResourceMng/orderManagement/v1/complementOrderState」である。リソース管理部14は、成功応答をアダプタ共通部22に通知する(S413)。
【0051】
アダプタ共通部22は、S412のGETで取得した状態が中断状態(Held)であるか否かを判定する(S414a)。
S414aでNoなら、アダプタ共通部22は、無効応答をワークフロー部12に通知する(S414)。なお、S414以降の処理はAPIアダプタ部20内でのエラー処理という既存処理であるので、説明を省略する。既存処理は、例えば、該当COSの状態を中断状態(Held)にしてリソース管理部14に通知する処理である。
S414aでYesなら、アダプタ共通部22は、作成応答をワークフロー部12に通知する(S415)。
【0052】
リソース管理部14は、COSの状態を実行状態(InProgress)にする更新要求(PUT)をアダプタ共通部22に通知する(S421)処理を、非同期処理として起動する(S416)。更新要求は、例えば「PUT /commonResourceMng/orderManagement/v1/complementOrderState state=InProgress」である。アダプタ共通部22は、作成応答をリソース管理部14に通知する(S422)。
アダプタ共通部22は、実行状態(InProgress)を通知する登録要求(POST)を、ワークフロー部12に通知する(S423)。この登録要求は、例えば、「POST /client/listenreventType=orderStateChangeNotification」である。ワークフロー部12は、作成応答をアダプタ共通部22に通知する(S424)。
【0053】
図9は、図8の処理に続き、アダプタ共通部22が卸サービス30を再開する動作を示すシーケンス図である。
S431〜S436は、アダプタ共通部22がリソース管理部14から、サービスの再開に必要な情報(再開情報)を取得する処理である。
S431では、連携オーダ(ProductOrder)からの情報を取得する取得要求(GET)として、「GET /commonResourceMng/orderManagement/v1/complementOrderState/productOrder」が送信される。S432は、S431への成功応答である。
S433では、mediatorProductからの情報を取得する取得要求(GET)として、「GET /commonResourceMng/productInventoryManagement/v1/mediatorProduct」が送信される。S434は、S433への成功応答である。
S435では、再開情報14a(resumeInfo)からの情報を取得する取得要求(GET)として、「GET /commonResourceMng/orderManagement/v1/complementOrderState/resumeInfo」が送信される。S436は、S435への成功応答である。
【0054】
アダプタ共通部22は、S431〜S436で取得した情報を元に、障害が発生したAPIを起動する指示を卸サービス30に通知する(S441)。
卸サービス30は、障害が発生したAPI以降の全てのAPIが成功したか否かを判定する(S442a)。
S442aでYesなら、卸サービス30は、成功応答をアダプタ共通部22に送信し(S442)、再開情報14a(resumeInfo)を空に更新する旨の指示をリソース管理部14に通知する(S443)。この指示は、例えば「PUT /commonResourceMng/orderManagement/v1/complementOrderState/resumeInfo」である。S444は、S443への成功応答である。
S442aでNoなら、失敗したAPI(S445)について、卸サービス30からアダプタ共通部22に通知され(S446)、以降の処理は既存のAPIアダプタ実行処理と共通のため省略する。
【0055】
以上説明した本実施形態では、連携オーダから実行される個々のAPI単位での状態管理をリソース管理部14にて実行しておく。そして、所定のAPIが失敗したことで、連携オーダ全体が中断してしまったときには、所定のAPIより前のAPIについては、前回成功した結果を流用することで、再度の実行をスキップする。
これにより、円滑なロールフォワードで連携オーダを再開させることができるため、ロールバックが不要となる。つまり、ロールバックでは、中断前の実行結果を全部削除して、連携オーダを最初からやり直ししていたのだが、それでは卸サービス30に対してインスタンスを一旦削除してから再作成するなどの無駄なコストを発生させてしまう。一方、本実施形態のロールフォワードでは、そのような無駄なコストを抑制できる。
【0056】
なお、本実施形態においては、本発明に係るサービス連携装置10の構成として、図1に示すように、3種類の卸サービス30(NWサービス30a、Cloudサービス30b、APLサービス30c)を扱う装置としたが、これらの個数や構成に限定されない。また、本発明では、一般的なコンピュータのハードウェア資源を、サービス連携装置10の各手段として動作させるプログラムによって実現することができる。そして、このプログラムは、通信回線を介して配布したり、CD−ROM等の記録媒体に記録して配布したりすることも可能である。
【符号の説明】
【0057】
10 サービス連携装置
11 要求受付部
12 ワークフロー部
13 オーダ再開部
14 リソース管理部
14a 再開情報
20 APIアダプタ部(アダプタ部)
22 アダプタ共通部
23 アダプタ個別部
30 卸サービス
30a NWサービス
30b Cloudサービス
30c APLサービス
50 上位装置
図1
図2
図3
図4
図5
図6
図7
図8
図9