以下に図面を参照して、本発明にかかる実行制御プログラム、実行制御方法および情報処理装置の実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかる実行制御方法の一実施例を示す説明図である。図1において、情報処理装置101は、クラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御用のジョブを実行するコンピュータである。クラウドサービスとは、クラウドコンピューティングを利用したサービスである。
クラウドサービスにより基幹業務と連携した新業務サービスを提供するにあたり、異なる複数のクラウドベンダー上に業務をそれぞれ構築する場合がある。この場合、マルチクラウド環境でのジョブ制御が必要となる。基幹業務と新業務サービスとの連携は、例えば、HTTP(Hypertext Transfer Protocol)リクエストを通して行われる。
ここで、基幹業務と新業務サービス(クラウドサービス上のジョブ)との連携を行う際に、1ジョブ1リクエストで連携を実現する技術がある(以下、「従来技術1」という)。従来技術1では、クラウド上のジョブに対して、異なる複数の処理を行う場合、基幹業務フローにおいて、それぞれの処理に対応するジョブを作成する。
例えば、クラウド上のジョブに対して、実行依頼、監視、強制終了を行う場合、実行ジョブ、監視ジョブ、強制終了ジョブを作成する。実行ジョブは、サービスを起動するリクエストを投げるジョブである。監視ジョブは、サービスを監視するリクエストを投げるジョブである。強制終了ジョブは、サービスを強制終了するリクエストを投げるジョブである。
しかし、従来技術1では、ジョブ間で情報を引き継ぐための作り込みが必要となる。例えば、実行ジョブの情報を、監視ジョブ、強制終了ジョブ、後続ジョブなどに引き継ぐ場合がある。この場合、新業務サービスの利用者(例えば、システム部門の担当者など)によって、基幹業務フローに手を加えて、ジョブ間で情報を引き継ぐための仕組みを作り込む必要がある。
また、監視ジョブの場合、クラウド上のジョブが終了するまでポーリングを行うための作り込みが必要となる。例えば、基幹業務フローにおいて、監視ジョブとスリープジョブとの間を一定間隔で遷移して、クラウド上のジョブに対して監視中に複数回リクエストを投げる仕組みの作り込みが必要となる。
また、監視ジョブで監視中にクラウド上のジョブが異常終了した場合、実行ジョブからの再実行が必要となる。この際、どのジョブを再実行すればよいかを特定する必要があるが、基幹業務フローが複雑になると、再実行するジョブの特定が困難なものとなり、運用に負担がかかる。
さらに、監視中にクラウド上のジョブの異常を検知したときなどに、クラウド上のジョブを強制終了させる場合、監視ジョブを強制終了しても、クラウド上のジョブは終了しない。このため、クラウド上のジョブを強制終了させるための作り込みが必要となる。また、利用者が強制終了操作を別途行う必要があり、運用に負担がかかる。
また、クラウド上のジョブの実行依頼、監視、強制終了の操作を、基幹業務フローとAPI(Application Programming Interface)にまとめてワークフローオーケストレータとして提供することで実行可能とする技術がある(以下、「従来技術2」という)。
しかし、従来技術2は、特定のクラウドサービス(クラウドベンダー)上のジョブに特化したものであるため、クラウドサービスの仕様の差を吸収できず、様々なクラウドサービス上のジョブの汎用的な制御には使うことができない。例えば、各クラウドサービスにおいてリクエスト時の接続情報や認証情報が異なる。
すなわち、クラウドサービスによって認証形式(例えば、BASIC認証、ベアラートークン認証など)が異なったり、リクエストの形式が異なったりする。そのため、各ジョブフロー(基幹業務フロー)に対して、クラウドサービスごとの作り込みが必要となり、ジョブを制御するための仕組みの構築に工数がかかる。
そこで、本実施の形態では、各種クラウドサービス上のジョブに対する複数の処理を一つのジョブで汎用的に制御可能にして、ジョブ運用の効率化を図る実行制御方法について説明する。ここで、情報処理装置101の処理例について説明する。
(1)情報処理装置101は、第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御ジョブ102の実行指示に応じて、第1の記憶部110を参照して、第1のクラウドサービス上のジョブの制御に関する接続情報を取得する。ここで、第1のクラウドサービス上のジョブは、制御対象となるジョブであり、例えば、基幹業務と連携した新業務サービスを提供するジョブである。
第1の記憶部110は、各クラウドサービス上のジョブの制御にかかる複数の処理のそれぞれの処理について、当該処理に用いられるパラメータの情報と、処理間で引き継ぎ可能なパラメータの情報とを含む接続情報を記憶する。ジョブの制御にかかる複数の処理は、例えば、実行依頼、監視、強制終了などの処理である。
処理に用いられるパラメータの情報は、クラウドサービス上のジョブ(API)に接続して制御するための情報であり、例えば、接続URL(Uniform Resource Locator)、HTTPメソッドなどの情報を含む。また、複数の処理のうち最初に行われる処理、例えば、ジョブの実行依頼に用いられるパラメータの情報には、認証識別子が含まれる。
認証識別子は、クラウドサービス上のジョブに接続するための認証情報を識別する情報である。ただし、接続情報には、パスワードなどの認証に直接関わる情報は含まれない。処理間で引き継ぎ可能なパラメータの情報は、例えば、クラウドサービス上のジョブを識別するジョブ識別子である。すなわち、制御対象のジョブを識別するジョブidなどを処理間で引き継ぎ可能である。
(2)情報処理装置101は、第2の記憶部120を参照して、取得した接続情報で指定された認証識別子に対応する認証情報を取得する。ここで、第2の記憶部120は、各クラウドサービスに接続するための認証情報を、当該認証情報を識別する認証識別子と対応付けて記憶する。
認証情報は、認証種別によって認証に必要となる情報が異なるため、各クラウドサービスで採用されている認証種別に応じて作成される。認証種別としては、例えば、BASIC認証、ベアラートークン認証、AWS_SigV4認証、AzureAD認証、SCP(SAP Cloud Platform)認証などがある。
例えば、認証種別がBASIC認証の場合、認証情報には、クラウドサービスに接続するための認証に用いられるユーザ名、パスワードが含まれる。ここで、認証識別子「BASIC認証1」が接続情報に指定されているとする。この場合、情報処理装置101は、第2の記憶部120を参照して、認証識別子「BASIC認証1」に対応する認証情報を取得する。
(3)情報処理装置101は、取得した認証情報と接続情報とに基づいて、実行制御ジョブ102を実行する。具体的には、例えば、情報処理装置101は、実行制御ジョブ102により、取得した認証情報を参照して、第1のクラウドサービスに接続するための認証処理を行う。
また、情報処理装置101は、実行制御ジョブ102により、取得した接続情報を参照して、第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う。例えば、情報処理装置101は、接続情報で指定された接続URLを用いて第1のクラウドサービス上のジョブ(API)に接続して、実行依頼、監視、強制終了などの処理を行う。
このように、情報処理装置101によれば、クラウドサービス上のジョブに対する複数の処理を、一つのジョブ(実行制御ジョブ102)で実施することが可能となる。また、クラウドサービスに接続するために必要となる情報を予め作成しておくことで、ジョブ実行時のユーザ設定が不要となり、ユーザの操作負荷を減らして使用性を向上させることができる。また、他の処理に情報を引き継ぎ可能なパラメータを設けることで、実行制御ジョブ102内の処理間で情報の引き継ぎを行うことができる。このため、1ジョブ1リクエストで連携を実現する場合に比べて、ジョブ間で情報を引き継ぐための作り込みが容易となり、運用にかかる負荷を軽減することができる。また、認証情報を接続情報と分けて持つことで、認証に直接関わる情報を接続情報に記述する場合に比べて、認証情報をセキュアに管理することができる。
(情報処理システム200のシステム構成例)
つぎに、実施の形態にかかる情報処理システム200のシステム構成例について説明する。ここでは、図1に示した情報処理装置101を、情報処理システム200の実行制御サーバ201に適用した場合について説明する。情報処理システム200は、例えば、クラウドサービスを利用して基幹業務と連携した新業務サービスを提供するコンピュータシステムに適用される。
図2は、情報処理システム200のシステム構成例を示す説明図である。図2において、情報処理システム200は、実行制御サーバ201と、複数のクラウドサーバ202と、管理者端末203と、運用者端末204と、を含む。情報処理システム200において、実行制御サーバ201、クラウドサーバ202、管理者端末203および運用者端末204は、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
ここで、実行制御サーバ201は、認証情報DB(Database)220および接続情報DB230を有し、基幹業務システムを実現するコンピュータである。基幹業務システムは、企業等の主要業務を処理するために用いられるシステムである。実行制御サーバ201(基幹業務システム)は、例えば、オンプレミスにより運用してもよく、また、クラウドにより運用してもよい。
認証情報DB220は、異なる複数のクラウドサービスの各クラウドサービスについて、各クラウドサービスに接続するための認証に用いる認証情報ファイルを記憶する。接続情報DB230は、異なる複数のクラウドサービスの各クラウドサービスについて、各クラウドサービスのジョブの制御に関する接続情報ファイルを記憶する。
なお、認証情報DB220の記憶内容については、図4A~図4Cを用いて後述する。接続情報DB230の記憶内容については、図5Aおよび図5Bを用いて後述する。図1に示した第1の記憶部110は、例えば、接続情報DB230に相当する。図1に示した第2の記憶部120は、例えば、認証情報DB220に相当する。
クラウドサーバ202は、クラウドサービスを提供するコンピュータである。複数のクラウドサーバ202は、例えば、それぞれ異なるクラウドベンダーにより運用され、それぞれ異なるクラウドサービスを提供する。例えば、クラウドサーバ202は、実行制御サーバ201の基幹業務システムと連携する新業務サービスを提供する。
管理者端末203は、基幹業務システムの管理者が使用するコンピュータである。運用者端末204は、基幹業務システムの運用者が使用するコンピュータである。例えば、管理者は、運用者が属する部署のシステム管理者である。また、運用者は、基幹業務システムや新業務サービスを実際に利用するユーザである。管理者端末203および運用者端末204は、例えば、PC(Personal Computer)、タブレットPCなどである。
情報処理システム200において、実行制御サーバ201は、REST実行ジョブを実行する。REST実行ジョブは、クラウドサービス上のジョブの制御にかかる異なる複数の処理を行う実行制御用のジョブである。例えば、REST実行ジョブは、基幹業務のジョブフロー(基幹業務フロー)に配置される新業務サービス向けのジョブである。
クラウドサービス上のジョブは、基幹業務システムと連携する新業務サービスである。すなわち、実行制御サーバ201は、基幹業務フローに配置された、新業務サービス向けのREST実行ジョブによりクラウドサービス上のジョブと連携することで、基幹業務と連携した新業務サービスを提供する。図1に示した実行制御ジョブ102は、例えば、REST実行ジョブに対応する。
なお、図2では、管理者端末203および運用者端末204をそれぞれ1台のみ表示したが、情報処理システム200には、複数の管理者端末203および複数の運用者端末204が含まれていてもよい。また、実行制御サーバ201およびクラウドサーバ202は、複数のコンピュータにより実現されることにしてもよい。
(実行制御サーバ201のハードウェア構成例)
つぎに、実行制御サーバ201のハードウェア構成例について説明する。
図3は、実行制御サーバ201のハードウェア構成例を示すブロック図である。図3において、実行制御サーバ201は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、実行制御サーバ201の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、図2に示したクラウドサーバ202、管理者端末203、運用者端末204)に接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、実行制御サーバ201は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、図2に示したクラウドサーバ202、管理者端末203、運用者端末204についても、実行制御サーバ201と同様のハードウェア構成により実現することができる。ただし、管理者端末203および運用者端末204は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有する。
(認証情報DB220の記憶内容)
つぎに、図4A、図4Bおよび図4Cを用いて、認証情報DB220に記憶される認証情報のパラメータ設定ファイルについて説明する。認証情報のパラメータ設定ファイルは、例えば、JSON(JavaScript Object Notation)形式で記述される。また、認証情報DB220は、例えば、図3に示したメモリ302、ディスク304などの記憶装置により実現される。
図4Aは、認証情報のパラメータ設定ファイルの具体例を示す説明図(その1)である。図4Aにおいて、認証情報ファイル401は、認証種別が「BASIC認証」の場合のパラメータ設定ファイルである。認証情報ファイル401は、name、authType、basicUserおよびbasicPasswdのパラメータの情報を含む。
nameは、認証情報名を示すパラメータである。この認証情報名は、REST実行ジョブの接続情報ファイルの認証情報名パラメータで指定される。authTypeは、認証種別を示すパラメータである。basicUserは、BASIC認証のユーザ名を示すパラメータである。basicPasswdは、BASIC認証のパスワードを示すパラメータである。
認証情報ファイル401では、name「test1」、authType「basic」、basicUser「testuser1」およびbasicPasswd「testpassword」が設定されている。
図4Bは、認証情報のパラメータ設定ファイルの具体例を示す説明図(その2)である。図4Bにおいて、認証情報ファイル402は、認証種別が「ベアラートークン認証」の場合のパラメータ設定ファイルである。認証情報ファイル402は、name、authTypeおよびtokenのパラメータの情報を含む。
nameは、認証情報名を示すパラメータである。authTypeは、認証種別を示すパラメータである。tokenは、認証トークンを示すパラメータである。ただし、認証情報ファイル402では、各パラメータの値を「***」で表現している。
図4Cは、認証情報のパラメータ設定ファイルの具体例を示す説明図(その3)である。図4Cにおいて、認証情報ファイル403は、プロキシサーバ経由でHTTPリクエストを行う場合のプロキシ認証情報のパラメータ設定ファイルである。認証情報ファイル403は、name、authType、proxyAddress proxyPort proxyUserおよびproxyPasswdのパラメータの情報を含む。
nameは、認証情報名を示すパラメータである。この認証情報名は、REST実行ジョブの接続情報ファイルのプロキシサーバの認証情報名パラメータで指定される。authTypeは、認証種別を示すパラメータである。authTypeには、「proxy」が設定される。
proxyAddressは、プロキシサーバのアドレスを示すパラメータである。proxyPortは、プロキシサーバのポート番号を示すパラメータである。proxyUserは、プロキシサーバの認証ユーザ名を示すパラメータである。proxyPasswdは、プロキシサーバの認証パスワードを示すパラメータである。ただし、認証情報ファイル403では、各パラメータの値を「***」で表現している。
(接続情報DB230の記憶内容)
つぎに、図5Aを用いて、接続情報DB230に記憶される接続情報のパラメータ設定ファイルについて説明する。接続情報のパラメータ設定ファイルは、例えば、JSON形式で記述される。また、接続情報DB230は、例えば、図3に示したメモリ302、ディスク304などの記憶装置により実現される。
図5Aは、接続情報のパラメータ設定ファイルの具体例を示す説明図である。図5において、接続情報ファイル500は、requestオブジェクト501と、monitoringオブジェクト502と、terminationオブジェクト503とを含む。
ここで、requestオブジェクト501は、クラウドサービス上のジョブの実行依頼を行う処理に用いられるパラメータの情報を示す。また、monitoringオブジェクト502は、クラウドサービス上のジョブの実行状態を監視する処理に用いられるパラメータの情報を示す。
また、terminationオブジェクト503は、クラウドサービス上のジョブを強制終了する処理に用いられるパラメータの情報を示す。接続情報ファイル500では、3つの処理(実行依頼、監視、強制終了)それぞれで必要なパラメータが異なるため、各処理で必要なパラメータの情報が階層化して記述されている。
まず、requestオブジェクト501は、url、method、authName、proxyAuthName、body、resHeader、resBody、timeout、takeoverKeysおよびjobnetValKeysのパラメータの情報を含む。
urlは、接続URLを示すパラメータである。methodは、HTTPメソッドを示すパラメータである。methodには、例えば、GET/PUT/POST/DELETEのいずれかが設定される。authNameは、認証情報名を示すパラメータである。認証処理を行わない場合は、省略することができる。
proxyAuthNameは、プロキシサーバの認証情報名を示すパラメータである。プロキシサーバを利用しない場合は、省略することができる。bodyは、HTTPリクエストボディを示すパラメータである。HTTPリクエストボディとして指定するファイルをフルパスで指定する。なお、HTTPリクエストボディの一例については、図5Bを用いて後述する。
resHeaderは、HTTPレスポンスヘッダを示すパラメータである。HTTPレスポンスのヘッダ情報を保存するファイルをフルパスで指定する。resBodyは、HTTPレスポンスボディを示すパラメータである。HTTPレスポンスのボディ情報を保存するファイルをフルパスで指定する。timeoutは、接続タイムアウト時間を示すパラメータである。HTTPリクエストの接続タイムアウト時間を、例えば、1~600秒の範囲で指定する。
takeoverKeysは、監視、強制終了リクエストに引き継ぐキーを示すパラメータである。monitoringオブジェクト502で指定する監視リクエストや、terminationオブジェクト503で指定する強制終了リクエストのURLやリクエストボディに本HTTPリクエストの結果を引継ぎたい場合、引き継ぐレスポンス結果のキーを指定することで、そのキーの値を引き継ぐことができる。監視リクエストの場合、監視の終了判定キーおよび正常終了判定キーにも引き継ぐことができる。引継ぎ先のURLやリクエストボディには、本パラメータで指定した置き換え変数名を、<置き換え変数名>の形式で記述しておくことで、抽出したキーの値に変換される。本パラメータは、置き換え変数名:抽出するキーの形式で指定する。
jobnetValKeysは、ジョブネット変数に設定するキーを示すパラメータである。ジョブネット変数は、ジョブ間で使用されるパラメータである。本HTTPレスポンスの結果をジョブネット変数に設定して後続ジョブと連携したい場合には、本パラメータでレスポンスのキーを指定することで、そのキーの値をジョブネット変数に設定することができる。本パラメータで指定したキーは、ジョブネット変数名=キーの値の形式で標準出力に出力される。本パラメータは、ジョブネット変数名:抽出するキーの形式で指定する。
つぎに、monitoringオブジェクト502は、url、method、body、resHeader、resBody、pollingInterval、pollingCount、pollingEndKey、pollingEndVal、checkResultKey、checkResultValおよびjobnetValKeysのパラメータの情報を含む。
urlは、接続URLを示すパラメータである。同じ名称でも、requestオブジェクト501やterminationオブジェクト503と値が異なる。requestオブジェクト501において、”監視、強制終了リクエストに引き継ぐキー”のパラメータで指定したキーの値を本URLに設定する場合、<置き換え変数名>の形式で記述することで、リクエスト時に置き換わる。
methodは、HTTPメソッドを示すパラメータである。methodには、例えば、GET/PUT/POST/DELETEのいずれかが設定される。bodyは、HTTPリクエストボディを示すパラメータである。HTTPリクエストボディとして指定するファイルをフルパスで指定する。resHeaderは、HTTPレスポンスヘッダを示すパラメータである。HTTPレスポンスのヘッダ情報を保存するファイルをフルパスで指定する。
resBodyは、HTTPレスポンスボディを示すパラメータである。HTTPレスポンスのボディ情報を保存するファイルをフルパスで指定する。pollingIntervalは、監視のポーリング間隔を示すパラメータである。リクエストのポーリング間隔を、例えば、1~600秒の範囲内で指定する。pollingCountは、監視のポーリング回数を示すパラメータである。リクエストのポーリング回数を指定する。
pollingEndKeyは、監視の終了判定キーを示すパラメータである。実行APIが完了したことを判定するためのレスポンス結果のキーを指定する。requestオブジェクト501において、”監視、強制終了リクエストに引き継ぐキー”のパラメータで指定したキーの値を監視の終了判定キーに設定する場合、<置き換え変数名>の形式で記述することで、リクエスト時に置き換わる。pollingEndValは、監視の終了判定の値を示すパラメータである。実行APIが完了したことを判定するためのレスポンス結果のキーの値を指定する。
checkResultKeyは、正常終了判定キーを示すパラメータである。実行APIが終了した後に、APIが正常終了したかどうかを判定するためのレスポンス結果のキーを指定する。ジョブの待ち合わせが完了した時に正常終了判定キーで指定した値と合致しなければ、REST実行ジョブは異常終了となる。requestオブジェクト501において、”監視、強制終了リクエストに引き継ぐキー”のパラメータで指定したキーの値を正常終了判定キーに設定する場合、<置き換え変数名>の形式で記述することで、リクエスト時に置き換わる。
checkResultValは、正常終了判定の値を示すパラメータである。実行APIが終了した後に、APIが正常終了したかどうかを判定するためのレスポンス結果のキーの値を指定する。jobnetValKeysは、ジョブネット変数に設定するキーを示すパラメータである。本HTTPレスポンスの結果をジョブネット変数に設定して後続ジョブと連携したい場合、本パラメータでレスポンスのキーを指定することで、そのキーの値をジョブネット変数に設定することができる。本パラメータで指定したキーは、ジョブネット変数名=キーの値の形式で標準出力(標準の出力先)に出力される。本パラメータは、ジョブネット変数名:抽出するキーの形式で指定する。
つぎに、terminationオブジェクト503は、url、method、body、resHeaderおよびresBodyのパラメータの情報を含む。
urlは、接続URLを示すパラメータである。同じ名称でも、requestオブジェクト501やmonitoringオブジェクト502と値が異なる。requestオブジェクト501において、”監視、強制終了リクエストに引き継ぐキー”のパラメータで指定したキーの値を本URLに設定する場合、<置き換え変数名>の形式で記述することで、リクエスト時に置き換わる。
methodは、HTTPメソッドを示すパラメータである。methodには、例えば、GET/PUT/POST/DELETEのいずれかが設定される。bodyは、HTTPリクエストボディを示すパラメータである。HTTPリクエストボディとして指定するファイルをフルパスで指定する。requestオブジェクト501において、”監視、強制終了リクエストに引き継ぐキー”のパラメータで指定したキーの値をリクエストボディに設定する場合、<置き換え変数名>の形式で記述することで、リクエスト時に置き換わる。
resHeaderは、HTTPレスポンスヘッダを示すパラメータである。HTTPレスポンスのヘッダ情報を保存するファイルをフルパスで指定する。resBodyは、HTTPレスポンスボディを示すパラメータである。HTTPレスポンスのボディ情報を保存するファイルをフルパスで指定する。
なお、各オブジェクト501~503には、上述したパラメータの情報の他に、例えば、query、headerなどのパラメータの情報が含まれていてもよい。queryは、クエリパラメータを示す。接続先URLにクエリパラメータを指定する場合、パラメータ名:値の形式で指定する。headerは、HTTPリクエストヘッダを示すパラメータである。追加のHTTPリクエストヘッダを指定する場合、ヘッダ名:値の形式で指定する。
ここで、図5Bを用いて、HTTPリクエストボディの一例について説明する。
図5Bは、HTTPリクエストボディの一例を示す説明図である。図5Bにおいて、ファイル511(xxx_batch_main_body.json)は、requestオブジェクト501で指定されるHTTPリクエストボディの一例である。
ファイル512(xxx_batch_moni_body.json)は、monitoringオブジェクト502で指定されるHTTPリクエストボディの一例である。ファイル513(xxx_batch_term_body.json)は、terminationオブジェクト503で指定されるHTTPリクエストボディの一例である。
各オブジェクト501~503のbodyでは、ファイル511~513のような、HTTPリクエストボディとして指定するファイルをフルパスで指定する。
(各種情報登録時の情報処理システム200の動作例)
つぎに、図6を用いて、各種情報登録時(認証情報、接続情報、REST実行ジョブ)の情報処理システム200の動作例について説明する。
図6は、各種情報登録時の情報処理システム200の動作例を示すシーケンス図である。図6のシーケンス図において、まず、管理者端末203は、ユーザの操作入力により、認証情報ファイルを作成する(ステップS601)。認証情報ファイルは、REST実行ジョブが接続するクラウドサービスへの認証情報(認証情報のパラメータ設定ファイル)である。ユーザは、例えば、基幹業務システムの管理者である。
つぎに、管理者端末203は、ユーザの操作入力により、認証情報設定コマンドを用いて、作成した認証情報ファイルを実行制御サーバ201に送信する(ステップS602)。実行制御サーバ201は、管理者端末203から認証情報ファイルを受信すると、受信した認証情報ファイルを認証情報DB220に登録する(ステップS603)。
これにより、REST実行ジョブが接続するクラウドサービスへの認証情報(認証情報のパラメータ設定ファイル)を認証情報DB220に登録することができる。
つぎに、運用者端末204は、ユーザの操作入力により、接続情報ファイルを作成する(ステップS604)。接続情報ファイルは、REST実行ジョブがクラウドサービス(API)へ接続して制御するための接続情報(接続情報のパラメータ設定ファイル)である。ユーザは、例えば、基幹業務システムの運用者である。
そして、運用者端末204は、ユーザの操作入力により、接続情報設定コマンドを用いて、作成した接続情報ファイルを実行制御サーバ201に送信する(ステップS605)。実行制御サーバ201は、運用者端末204から接続情報ファイルを受信すると、受信した接続情報ファイルを接続情報DB230に登録する(ステップS606)。
これにより、REST実行ジョブがクラウドサービスへ接続するための接続情報(接続情報のパラメータ設定ファイル)を接続情報DB230に登録することができる。この際、運用者は、例えば、パスワードなどの認証に直接関わる情報を知らなくても、接続情報の中で認証情報名を指定するだけで、クラウドサービスへ接続するための認証に必要な情報を設定することができる。
運用者端末204は、ジョブフローにREST実行ジョブを登録する(ステップS607)。REST実行ジョブは、実行制御サーバ201によって管理されて実行される。REST実行ジョブのパラメータには、例えば、ステップS604において作成された接続情報ファイルがフルパスで指定される。
これにより、クラウドサービス上のジョブごとに、当該クラウドサービス上のジョブの制御にかかる異なる複数の処理(例えば、実行依頼、監視、強制終了)を行うREST実行ジョブをジョブフローに登録することができる。なお、ステップS604~S607の処理は、例えば、管理者端末203において行われることにしてもよい。
(実行制御サーバ201の機能的構成例)
図7は、実行制御サーバ201の機能的構成例を示すブロック図である。図7において、実行制御サーバ201は、受付部701と実行制御部702とを含む。具体的には、例えば、受付部701および実行制御部702は、図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
受付部701は、REST実行ジョブの実行指示を受け付ける。ここで、REST実行ジョブは、第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御用のジョブである。第1のクラウドサービス上のジョブは、例えば、基幹業務と連携した新業務サービスを提供するジョブであり、運用者によって指定される。
REST実行ジョブの実行依頼には、第1のクラウドサービス上のジョブの制御に関する接続情報を特定する情報、例えば、接続情報ファイルのフルパスが含まれる。具体的には、例えば、受付部701は、運用者端末204からREST実行ジョブの実行指示を受信することにより、REST実行ジョブの実行指示を受け付ける。
なお、REST実行ジョブの実行指示は、例えば、運用者端末204において、ユーザ(運用者)の操作入力により、複数のクラウドサービスのうち、利用するクラウドサービス(第1のクラウドサービス)に対応するREST実行ジョブのアイコン等を選択することで、実行制御サーバ201に送信される。
実行制御部702は、REST実行ジョブを実行する。具体的には、例えば、実行制御部702は、受付部701が受け付けた実行指示に応じて、REST実行ジョブを実行する。ここで、実行制御部702は、第1の取得部711と、第2の取得部712と、実行部713とを含む。
第1の取得部711は、第1のクラウドサービス上のジョブの制御に関する接続情報を取得する。ここで、接続情報は、クラウドサービス(例えば、第1のクラウドサービス)上のジョブの制御にかかる複数の処理のそれぞれの処理について、当該処理に用いられるパラメータの情報と、処理間で引き継ぎ可能なパラメータの情報とを含む。
ジョブの制御にかかる処理に用いられるパラメータの情報は、クラウドサービス上のジョブ(API)に接続して制御するための情報であり、例えば、接続URL、HTTPメソッド、クエリパラメータ、HTTPリクエストヘッダ/ボディ、HTTPレスポンスヘッダ/ボディなどの情報を含む。
また、処理間で引き継ぎ可能なパラメータの情報は、例えば、クラウドサービス上のジョブを識別するジョブ識別子である。また、接続情報には、REST実行ジョブに後続する他のジョブに引き継ぎ可能なパラメータの情報が含まれていてもよい。他のジョブに引き継ぎ可能なパラメータの情報は、例えば、処理の実行結果である。処理の実行結果は、例えば、ステータスコード、データ、演算結果などである。
ここで、ジョブの制御にかかる複数の処理は、例えば、クラウドサービス上のジョブの実行依頼を行う処理と、クラウドサービス上のジョブの実行状態を監視する処理とを含む。実行依頼する処理は、クラウドサービス上のジョブの実行を要求する処理である。監視する処理は、実行依頼したクラウドサービス上のジョブの処理が完了したかどうかを監視する処理である。
また、複数の処理は、クラウドサービス上のジョブの実行依頼を行う処理と、クラウドサービス上のジョブを強制終了する処理とを含むものであってもよい。強制終了する処理は、REST実行ジョブの強制終了に合わせて、実行中のクラウドサービス上のジョブを強制終了する処理である。
ジョブの実行依頼を行う処理に用いられるパラメータには、クラウドサービスに接続するための認証に用いられる認証情報を識別する認証識別子が含まれる。また、ジョブの実行依頼を行う処理に用いられるパラメータには、プロキシサーバに接続するためのプロキシ認証情報を識別するプロキシ認証識別子が含まれていてもよい。
より詳細に説明すると、例えば、ジョブの実行依頼を行う処理に用いられるパラメータの情報は、図5Aに示したrequestオブジェクト501に相当する。また、ジョブの実行状態を監視する処理に用いられるパラメータの情報は、図5Aに示したmonitoringオブジェクト502に相当する。また、ジョブを強制終了する処理に用いられるパラメータの情報は、図5Aに示したterminationオブジェクト503に相当する。
すなわち、クラウドサービス上のジョブの制御に関する接続情報には、REST実行ジョブで呼び出されるコマンドに指定するパラメータの情報が記述される。これにより、RESTインターフェースが提供されているクラウドサービス上のジョブ(API)の実行/監視/強制終了を行うことが可能となる。
具体的には、例えば、第1の取得部711は、REST実行ジョブの実行指示に応じて、当該実行指示に含まれるフルパスで指定される接続情報ファイルを、接続情報DB230から取得する。接続情報ファイルには、クラウドサービスに接続するための認証に用いられる認証情報名が指定されている。
第2の取得部712は、取得された接続情報で指定された認証識別子に対応する認証情報を取得する。認証識別子は、認証情報を一意に識別する情報であり、例えば、認証情報名(authName)である。認証情報は、各クラウドサービスに接続するための認証に用いられる情報である。
認証情報は、認証種別によって認証に必要となる情報が異なるため、各クラウドサービスで採用されている認証種別に応じて作成される。認証種別としては、例えば、BASIC認証、ベアラートークン認証、AWS_SigV4認証、AzureAD認証、SCP認証などがある。
具体的には、例えば、第2の取得部712は、取得された接続情報ファイルで指定された認証情報名(authName)の認証情報ファイルを、認証情報DB220から取得する。この認証情報ファイルは、第1のクラウドサービスに接続するための認証に必要となる情報を含む。
また、接続情報ファイルにプロキシ認証情報名(proxyAuthName)が指定されている場合、第2の取得部712は、指定されたプロキシ認証情報名の認証情報ファイル(プロキシ認証情報)を、認証情報DB220から取得する。この認証情報ファイルは、プロキシサーバを介してクラウドサービスに接続するにあたり、プロキシサーバに接続するための認証に必要となる情報を含む。
実行部713は、取得された認証情報と接続情報とに基づいて、第1のクラウドサービス上のジョブの制御にかかる複数の処理を行うREST実行ジョブを実行する。具体的には、例えば、実行部713は、REST実行ジョブにより、取得された認証情報ファイルを参照して、第1のクラウドサービスに接続するための認証処理を行う。また、実行部713は、REST実行ジョブにより、取得された接続情報ファイルを参照して、第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う。
より詳細に説明すると、例えば、実行部713は、認証情報ファイル(例えば、図4Aに示した認証情報ファイル401、図4Bに示した認証情報ファイル402)のauthTypeを参照して、認証種別を特定する。そして、実行部713は、特定した認証種別に応じて、認証情報ファイルを参照して、第1のクラウドサービスに接続するための認証処理を行う。
例えば、認証種別がBASIC認証の場合、実行部713は、認証情報ファイル(例えば、認証情報ファイル401)を参照して、ユーザ名、パスワードをHTTPリクエストのインスタンスに設定して認証処理を行う。また、認証種別がベアラートークン認証の場合、実行部713は、認証情報ファイル(例えば、認証情報ファイル402)を参照して、アクセストークンをHTTPリクエストヘッダに設定して認証処理を行う。
また、認証種別がAWS_SigV4認証の場合、レスポンス結果によって認証情報が変わるため、実行部713は、REST実行ジョブの実行処理内で認証処理を行う。また、認証種別がAzureAD認証/SCP認証(Oauth2.0認証)の場合、アクセストークン取得用のHTTPリクエストのインスタンスを生成し、REST実行ジョブの実行処理内で認証処理を行う。
また、実行部713は、プロキシ認証情報(例えば、図4Cに示した認証情報ファイル403)が取得された場合、プロキシ認証情報ファイルに基づいて、プロキシサーバに接続するための認証処理を行う。より詳細に説明すると、例えば、実行部713は、認証情報ファイルのauthTypeを参照して、認証種別を特定する。そして、実行部713は、特定した認証種別が「proxy」の場合、認証情報ファイルを参照して、プロキシサーバに接続するための認証処理を行う。
また、実行部713は、例えば、REST実行ジョブにより、取得された接続情報ファイル(例えば、図5Aに示した接続情報ファイル500)のリクエスト情報(例えば、図5Aに示したrequestオブジェクト501)を参照して、第1のクラウドサービス上のジョブの実行依頼を行う。
また、実行部713は、例えば、REST実行ジョブにより、取得された接続情報ファイル(例えば、接続情報ファイル500)の監視用リクエスト情報(例えば、図5Aに示したmonitoringオブジェクト502)を参照して、第1のクラウドサービス上のジョブの実行状態を監視する。
また、実行部713は、例えば、REST実行ジョブにより、取得された接続情報ファイル(例えば、接続情報ファイル500)の強制終了用リクエスト情報(例えば、図5Aに示したterminationオブジェクト503)を参照して、第1のクラウドサービス上のジョブを強制終了する。
(ジョブ実行時の実行制御サーバ201の動作例)
つぎに、図8を用いて、ジョブ実行時の実行制御サーバ201の動作例について説明する。
図8は、ジョブ実行時の実行制御サーバ201の動作例を示す説明図である。実行制御サーバ201は、認証情報DB220と接続情報DB230とを有し、クラウドサービスに接続するための認証に必要となる情報(認証情報ファイル)と、クラウドサービス上のジョブの制御にかかる処理に必要となる情報(接続情報ファイル)とを分けて持つ。
また、実行制御サーバ201は、接続情報ファイルにおいて、クラウドサービス上のジョブの制御にかかる複数の処理の処理ごとに、当該処理に必要となる情報を分類して持つ。複数の処理は、例えば、実行依頼、監視、強制終了などの処理である。
また、接続情報ファイルは、処理間で引き継ぎ可能なパラメータの情報や、後続処理である他のジョブとの間で引き継ぎ可能なパラメータの情報を含む。これにより、REST実行ジョブ内の処理間でリクエスト結果の情報を引き継いだり、他のジョブへ処理の実行結果を引き継いだりすることができる。
ここでは、クラウドサービスA,B,CのうちのクラウドサービスA上のジョブJ(a)の制御にかかる複数の処理(実行依頼、監視、強制終了)を行うREST実行ジョブCJ(a)の実行指示を受け付けた場合を想定する。REST実行ジョブCJ(a)は、基幹業務フロー内のジョブである。クラウドサービスA上のジョブJ(a)は、新業務サービスを提供するジョブである。
この場合、実行制御サーバ201は、REST実行ジョブCJ(a)の実行指示に応じて、当該実行指示に含まれるフルパスで指定される接続情報ファイルを、接続情報DB230から取得する。また、実行制御サーバ201は、取得した接続情報ファイルで指定された認証情報名の認証情報ファイルを、認証情報DB220から取得する。
そして、実行制御サーバ201は、取得した認証情報ファイルと接続情報ファイルとに基づいて、REST実行ジョブCJ(a)を実行する。例えば、実行制御サーバ201は、REST実行ジョブCJ(a)により、認証情報ファイルを参照して、クラウドサービスAに接続するための認証処理を行う。
また、実行制御サーバ201は、REST実行ジョブCJ(a)により、接続情報ファイルを参照して、クラウドサービスA上のジョブJ(a)に対する各処理(実行依頼、監視、強制終了)を行う。例えば、実行制御サーバ201は、RESTインターフェースが提供されているクラウドサービスA上のジョブJ(a)に対して、HTTPプロトコルで実行等のリクエストの送信およびレスポンスの受信を行うことができる。
この際、REST実行ジョブCJ(a)により、例えば、実行依頼のHTTPリクエストに対するHTTPレスポンスボディの値を、処理間の引き継ぎ用キー(処理間で引き継ぎ可能なパラメータ)へ格納する。これにより、監視や強制終了のHTTPリクエストのパラメータへ情報(例えば、ジョブJ(a)のジョブID)を引き継ぐことができる。
また、REST実行ジョブCJ(a)により、例えば、実行依頼、監視リクエストの結果を、ジョブ間の引き継ぎ用キー(他のジョブとの間で引き継ぎ可能なパラメータ)へ格納する。これにより、実行依頼、監視リクエストの結果を、後続処理である他のジョブOJへ引き継ぐことができる。
このように、REST実行ジョブCJ(a)によれば、処理間での情報の受け渡しが可能なため、一つのジョブ内で実行依頼、監視、強制終了が実施可能となる。このため、1ジョブ1リクエストで連携を実現する場合に比べて、ジョブ間で情報を引き継ぐための作り込みが容易となり、運用にかかる負荷を軽減することができる。また、認証情報を接続情報と分けて持つことで、セキュアに管理することができる。
また、クラウドサービスA上のジョブJ(a)が異常終了したときは、REST実行ジョブCJ(a)の再起動を行うことでリカバリ可能である。このため、1ジョブ1リクエストで連携を実現する場合に比べて、どのジョブを再実行すればよいかの特定作業が不要となり、運用にかかる負荷を軽減することができる。
(実行制御サーバ201の実行制御処理手順)
つぎに、図9を用いて、実行制御サーバ201の実行制御処理手順について説明する。実行制御サーバ201の実行制御処理は、REST実行ジョブの実行指示に応じて開始される。また、実行制御サーバ201の実行制御処理内の各処理は、REST実行ジョブにより行われる。
図9は、実行制御サーバ201の実行制御処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、実行制御サーバ201は、接続情報ファイルの読み込み処理を実行する(ステップS901)。接続情報ファイルの読み込み処理の具体的な処理手順については、図10を用いて後述する。
そして、実行制御サーバ201は、HTTPリクエスト実行処理を実行して(ステップS902)、本フローチャートによる一連の処理を終了する。HTTPリクエスト実行処理の具体的な処理手順については、図11および図12を用いて後述する。
つぎに、図10を用いて、図9に示したステップS901の接続情報ファイルの読み込み処理の具体的な処理手順について説明する。
図10は、接続情報ファイルの読み込み処理の具体的処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、実行制御サーバ201は、接続情報DB230を参照して、指定された接続情報ファイルをオープンする(ステップS1001)。なお、接続情報ファイルの指定は、例えば、REST実行ジョブの実行指示においてフルパスを指定することにより行われる。
つぎに、実行制御サーバ201は、接続情報ファイルの”request”内の情報を読み込むことにより、リクエスト情報を読み込む(ステップS1002)。そして、実行制御サーバ201は、認証情報DB220を参照して、リクエスト情報で指定された認証情報名の認証情報ファイルを読み込む(ステップS1003)。
つぎに、実行制御サーバ201は、認証情報ファイルを参照して、クラウドサービスの認証処理を行う(ステップS1004)。例えば、認証種別がBASIC認証の場合、実行制御サーバ201は、認証情報ファイルを参照して、ユーザ名、パスワードをHTTPリクエストのインスタンスに設定する。また、認証種別がベアラートークン認証の場合、実行制御サーバ201は、認証情報ファイルを参照して、アクセストークンをHTTPリクエストヘッダに設定する。認証の成否は、例えば、クラウドサービスを実現するクラウドサーバ202(図2参照)、あるいは、クラウドサーバ202に対応する不図示の認証サーバで判断される。
なお、認証種別がAWS_SigV4認証の場合、レスポンス結果によって認証情報が変わるため、実行制御サーバ201は、REST実行ジョブの実行処理内で認証処理を行う。また、認証種別がAzureAD認証/SCP認証(Oauth2.0認証)の場合、実行制御サーバ201は、アクセストークン取得用のHTTPリクエストのインスタンスを生成し、REST実行ジョブの実行処理内で認証処理を行う。
つぎに、実行制御サーバ201は、リクエスト情報でプロキシ認証情報名が指定されている場合、プロキシ認証情報の設定を行う(ステップS1005)。具体的には、例えば、実行制御サーバ201は、認証情報DB220を参照して、リクエスト情報で指定されたプロキシ認証情報名の認証情報ファイルを読み込む。そして、実行制御サーバ201は、認証情報ファイルを参照して、プロキシサーバ認証用の情報を設定する。
つぎに、実行制御サーバ201は、接続情報ファイルの”monitoring”内の情報を読み込むことにより、監視用リクエスト情報を読み込む(ステップS1006)。そして、実行制御サーバ201は、接続情報ファイルの”termination”内の情報を読み込むことにより、強制終了用リクエスト情報を読み込んで(ステップS1007)、接続情報ファイルの読み込み処理を呼び出したステップに戻る。
これにより、クラウドサービスに接続するための認証に必要な情報や、クラウドサービスに接続するために必要な情報を、クラウドサービス上のジョブに対する処理(実行依頼、監視、強制終了)ごとに取得することができる。接続情報ファイルは、クラウドサービス上のジョブ固有の情報である。一方、認証情報ファイルは、クラウドサービスで採用されている認証種別に応じた情報である。このため、例えば、同一の認証種別を採用しているクラウドサービスでは、同じ認証情報ファイルが用いられる場合がある。
なお、接続情報ファイルにmonitoringオブジェクトが存在しない場合には、実行制御サーバ201は、ステップS1006をスキップする。また、接続情報ファイルにterminationオブジェクトが存在しない場合には、実行制御サーバ201は、ステップS1007をスキップする。
つぎに、図11および図12を用いて、図9に示したステップS902のHTTPリクエスト実行処理の具体的な処理手順について説明する。
図11および図12は、HTTPリクエスト実行処理の具体的処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、実行制御サーバ201は、HTTPリクエストインスタンスやアクセストークンを用いて認証情報を設定することにより、REST実行ジョブの処理時の認証処理を行う(ステップS1101)。
例えば、認証種別がAWS_SigV4認証の場合、実行制御サーバ201は、認証情報ファイルとHTTPリクエスト情報から署名用のリクエストヘッダを作成し、HTTPリクエストインスタンスに設定する。また、認証種別がAzureAD認証/SCP認証(Oauth2.0認証)の場合、実行制御サーバ201は、アクセストークンを取得し、認証処理対象のHTTPリクエストインスタンスに設定する。ただし、認証種別がBASIC認証やベアラートークン認証の場合、実行制御サーバ201は、ステップS1101の処理をスキップする。
そして、実行制御サーバ201は、設定されたリクエスト情報をもとにHTTPリクエストを発行することにより、クラウドサービス上のジョブに対する実行依頼リクエストを実行する(ステップS1102)。つぎに、実行制御サーバ201は、レスポンスヘッダ/ボディのファイル出力先が設定されている場合、指定の出力先にレスポンスヘッダ/ボディの内容をファイル出力する(ステップS1103)。
そして、実行制御サーバ201は、接続情報ファイルを参照して、ジョブネット変数に設定するキー(jobnetValKeys)が指定されているか否かを判断する(ステップS1104)。ここで、キーが指定されていない場合(ステップS1104:No)、実行制御サーバ201は、ステップS1106に移行する。
一方、キーが指定されている場合(ステップS1104:Yes)、実行制御サーバ201は、レスポンスボディから指定されたキーにある値を抽出することにより、ジョブネット変数に引き継ぐキーの値を取得する(ステップS1105)。つぎに、実行制御サーバ201は、監視リクエストの指定があるか否かを判断する(ステップS1106)。
ここで、監視リクエストの指定がある場合(ステップS1106:Yes)、実行制御サーバ201は、図12に示すステップS1201に移行する。一方、監視リクエストの指定がない場合(ステップS1106:No)、実行制御サーバ201は、ジョブネット変数へ引き継ぐ値のデータを標準出力して(ステップS1107)、HTTPリクエスト実行処理を呼び出したステップに戻る。
図12のフローチャートにおいて、まず、実行制御サーバ201は、監視、強制終了リクエストに引き継ぐキー(takeOverKeys)が指定されているか否かを判断する(ステップS1201)。ここで、キーが指定されていない場合(ステップS1201:No)、実行制御サーバ201は、ステップS1204に移行する。
一方、キーが指定されている場合(ステップS1201:Yes)、実行制御サーバ201は、レスポンスボディから指定されたキーの値を抽出することにより、監視、強制終了リクエストに引き継ぐキーの値を取得する(ステップS1202)。そして、実行制御サーバ201は、監視、強制終了リクエストのURLとボディに設定されている置き換え変数を、取得した値に置き換えることにより、監視、強制終了リクエストに値を設定する(ステップS1203)。
つぎに、実行制御サーバ201は、クラウドサービス上のジョブの実行状態を監視する監視処理を実行する(ステップS1204)。監視処理の具体的な処理手順については、図13および図14を用いて後述する。そして、実行制御サーバ201は、ジョブネット変数へ引き継ぐ値のデータを標準出力して(ステップS1205)、HTTPリクエスト実行処理を呼び出したステップに戻る。
これにより、クラウドサービス上のジョブに対して実行依頼することができる。また、クラウドサービス上のジョブに対する実行依頼リクエストの結果を、REST実行ジョブ内の他の処理や、他のジョブに引き継ぐことができる。
つぎに、図13および図14を用いて、図12に示したステップS1204の監視処理の具体的な処理手順について説明する。
図13および図14は、監視処理の具体的処理手順の一例を示すフローチャートである。図13のフローチャートにおいて、まず、実行制御サーバ201は、監視中にSIGTERMを受信したときに強制終了処理に移行するためのシグナルハンドラを設定する(ステップS1301)。SIGTERMは、REST実行ジョブの強制終了操作が行われると送られる。
なお、強制終了処理の具体的な処理手順については、図15を用いて後述する。
つぎに、実行制御サーバ201は、設定された監視リクエスト情報をもとに監視リクエストを発行することにより、クラウドサービス上のジョブに対する監視リクエストを実行する(ステップS1302)。監視リクエストが実行されると、監視回数がインクリメントされる。
そして、実行制御サーバ201は、終了判定キーの情報をもとに、レスポンス結果からジョブの実行状態を取得する(ステップS1303)。つぎに、実行制御サーバ201は、取得したジョブの実行状態の値を、監視の終了判定の値と比較して(ステップS1304)、一致するか否かを判断する(ステップS1305)。
ここで、一致する場合(ステップS1305:Yes)、実行制御サーバ201は、図14に示すステップS1401に移行する。一方、一致しない場合(ステップS1305:No)、実行制御サーバ201は、現在の監視回数を監視のポーリング回数と比較し(ステップS1306)、一致するか否かを判断する(ステップS1307)。
ここで、一致しない場合(ステップS1307:No)、実行制御サーバ201は、監視のポーリング間隔時間スリープして(ステップS1308)、ステップS1302に戻る。一方、一致する場合(ステップS1307:Yes)、実行制御サーバ201は、監視処理をタイムアウトして、REST実行ジョブを異常終了する。
図14のフローチャートにおいて、まず、実行制御サーバ201は、レスポンス結果からクラウドサービス上のジョブの実行結果を取得する(ステップS1401)。そして、実行制御サーバ201は、取得したジョブの実行結果を、監視の正常終了判定の値と比較する(ステップS1402)。
つぎに、実行制御サーバ201は、レスポンスヘッダ/ボディのファイル出力先が設定されている場合、指定の出力先にレスポンスヘッダ/ボディの内容をファイル出力する(ステップS1403)。そして、実行制御サーバ201は、ジョブの実行結果が、監視の正常終了判定の値と一致するか否かを判断する(ステップS1404)。
ここで、一致しない場合(ステップS1404:No)、実行制御サーバ201は、REST実行ジョブを異常終了する。一方、一致する場合(ステップS1404:Yes)、監視リクエストにジョブネット変数に設定するキー(jobnetValKeys)が指定されているか否かを判断する(ステップS1405)。
ここで、キーが指定されていない場合(ステップS1405:No)、実行制御サーバ201は、監視処理を呼び出したステップに戻る。一方、キーが指定されている場合(ステップS1405:Yes)、実行制御サーバ201は、レスポンスボディから指定されたキーにある値を抽出することにより、ジョブネット変数に引き継ぐキーの値を取得して(ステップS1406)、監視処理を呼び出したステップに戻る。
これにより、クラウドサービス上のジョブの実行状態を一定時間間隔で監視することができる。また、クラウドサービス上のジョブに対する監視リクエストの結果を、他のジョブに引き継ぐことができる。
つぎに、図15を用いて、クラウドサービス上のジョブを監視中にSIGTERMを受信したときに実行される強制終了処理の具体的な処理手順について説明する。
図15は、強制終了処理の具体的処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、実行制御サーバ201は、設定された強制終了リクエスト情報をもとに強制終了リクエストを発行することにより、クラウドサービス上のジョブに対する強制終了リクエストを実行する(ステップS1501)。
そして、実行制御サーバ201は、レスポンスヘッダ/ボディのファイル出力先が設定されている場合、指定の出力先にレスポンスヘッダ/ボディの内容をファイル出力して(ステップS1502)、本フローチャートによる一連の処理を終了する。
これにより、REST実行ジョブの強制終了に合わせて、実行中のクラウドサービス上のジョブを強制終了することができる。
以上説明したように、実施の形態にかかる実行制御サーバ201によれば、REST実行ジョブの実行指示に応じて、接続情報DB230を参照して、指定された第1のクラウドサービス上のジョブの制御に関する接続情報を取得し、認証情報DB220を参照して、取得した接続情報で指定された認証識別子に対応する認証情報を取得することができる。REST実行ジョブは、第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御用のジョブである。接続情報は、第1のクラウドサービス上のジョブの制御にかかる複数の処理のそれぞれの処理について、当該処理に用いられるパラメータの情報と、処理間で引き継ぎ可能なパラメータの情報とを含む。また、認証情報は、第1のクラウドサービスに接続するための認証に用いる情報である。そして、実行制御サーバ201によれば、取得した認証情報と接続情報とに基づいて、REST実行ジョブを実行することができる。
これにより、クラウドサービス上のジョブに対する複数の処理を、一つのジョブ(REST実行ジョブ)で実施することが可能となる。また、各種クラウドサービスに接続するために必要となる情報を、設定ファイルとして予め作成しておくことで、ジョブ実行時のユーザ設定が不要となり、ユーザの操作負荷を減らして使用性を向上させることができる。また、他の処理に情報を引き継ぎ可能なパラメータを設けることで、REST実行ジョブ内の処理間で情報の引き継ぎを行うことができる。このため、1ジョブ1リクエストで連携を実現する場合に比べて、ジョブ間で情報を引き継ぐための作り込みが容易となり、運用にかかる負荷を軽減することができる。また、認証情報を接続情報と分けて持つことで、認証に直接関わる情報を接続情報に記述する場合に比べて、認証情報をセキュアに管理することができる。
また、実行制御サーバ201によれば、クラウドサービス上のジョブの制御にかかる複数の処理として、ジョブの実行依頼を行う処理と、ジョブの実行状態を監視する処理とを行うことができる。
これにより、クラウドサービス上のジョブに対して実行依頼することができる。また、実行依頼したクラウドサービス上のジョブが非同期で実行される場合でも、処理が完了したかどうかを監視し、処理の完了を待ち合わせることが可能となる。
また、実行制御サーバ201によれば、クラウドサービス上のジョブの制御にかかる複数の処理として、ジョブの実行依頼を行う処理と、ジョブを強制終了する処理とを行うことができる。
これにより、クラウドサービス上のジョブに対して実行依頼することができる。また、クラウドサービス側にジョブの強制終了のAPIが提供されている場合に、例えば、REST実行ジョブの強制終了に合わせて、実行中のクラウドサービス上のジョブを強制終了することが可能となる。
また、実行制御サーバ201によれば、処理間で引き継ぎ可能なパラメータの情報として、クラウドサービス上のジョブを識別するジョブ識別子を含めることができる。
これにより、REST実行ジョブ内の処理間でジョブidなどを引き継いで、制御対象となるクラウドサービス上のジョブを各処理で認識することができる。
また、実行制御サーバ201によれば、REST実行ジョブに後続する他のジョブに引き継ぎ可能なパラメータの情報を接続情報に含めることができる。他のジョブに引き継ぎ可能なパラメータの情報は、例えば、処理の実行結果を含む。
これにより、例えば、実行依頼したジョブの指定したレスポンス結果のキーの値をジョブネット変数に設定して、後続ジョブと連携することが可能となる。
また、実行制御サーバ201によれば、認証情報DB220を参照して、取得した接続情報で指定されたプロキシ認証識別子に対応するプロキシ認証情報を取得し、取得した認証情報とプロキシ認証情報と接続情報とに基づいて、REST実行ジョブを実行することができる。
これにより、プロキシサーバ経由でクラウドサービス上のジョブに対するHTTPリクエストを行う場合に、予め作成されたプロキシ認証用の設定ファイルを用いて、プロキシサーバの認証を行うことができる。このため、ジョブ実行時のユーザ設定が不要となり、ユーザの操作負荷を減らして使用性を向上させることができる。
これらのことから、実施の形態にかかる実行制御サーバ201(情報処理装置101)によれば、各種クラウドサービス上のジョブへの複数の処理を一つのジョブで汎用的に制御可能となり、ジョブ運用の効率化を図ることができる。例えば、クラウドサービスごとのREST実行ジョブを起動(実行)する際に、REST実行ジョブに与えるファイルを変えるだけで、基幹業務と新業務サービスとを簡単に連携させることができ、基幹業務から新業務サービスを一元的に監視・管理することが可能となる。
なお、本実施の形態で説明した実行制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実行制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実行制御プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した実行制御サーバ201(情報処理装置101)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御ジョブの実行指示に応じて、各クラウドサービス上のジョブの制御にかかる複数の処理のそれぞれの処理について、当該処理に用いられるパラメータの情報と、処理間で引き継ぎ可能なパラメータの情報とを含む接続情報を記憶する第1の記憶部を参照して、前記第1のクラウドサービス上のジョブの制御に関する接続情報を取得し、
前記各クラウドサービスに接続するための認証情報を、当該認証情報を識別する認証識別子と対応付けて記憶する第2の記憶部を参照して、取得した前記接続情報で指定された認証識別子に対応する認証情報を取得し、
取得した前記認証情報と前記接続情報とに基づいて、前記実行制御ジョブを実行する、
処理をコンピュータに実行させることを特徴とする実行制御プログラム。
(付記2)前記ジョブの制御にかかる複数の処理は、前記ジョブの実行依頼を行う処理と、前記ジョブの実行状態を監視する処理とを含む、ことを特徴とする付記1に記載の実行制御プログラム。
(付記3)前記ジョブの制御にかかる複数の処理は、前記ジョブの実行依頼を行う処理と、前記ジョブを強制終了する処理とを含む、ことを特徴とする付記1または2に記載の実行制御プログラム。
(付記4)前記処理間で引き継ぎ可能なパラメータの情報は、前記各クラウドサービス上のジョブを識別するジョブ識別子を含む、ことを特徴とする付記2または3に記載の実行制御プログラム。
(付記5)前記接続情報は、前記実行制御ジョブに後続する他のジョブに引き継ぎ可能なパラメータの情報を含む、ことを特徴とする付記1~4のいずれか一つに記載の実行制御プログラム。
(付記6)前記他のジョブに引き継ぎ可能なパラメータの情報は、前記処理の実行結果を含む、ことを特徴とする付記5に記載の実行制御プログラム。
(付記7)前記第2の記憶部は、さらに、プロキシサーバに接続するためのプロキシ認証情報を、当該プロキシ認証情報を識別するプロキシ認証識別子と対応付けて記憶しており、
前記第2の記憶部を参照して、取得した前記接続情報で指定されたプロキシ認証識別子に対応するプロキシ認証情報を取得し、
取得した前記認証情報と前記プロキシ認証情報と前記接続情報とに基づいて、前記実行制御ジョブを実行する、
処理を前記コンピュータに実行させることを特徴とする付記1~6のいずれか一つに記載の実行制御プログラム。
(付記8)第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御ジョブの実行指示に応じて、各クラウドサービス上のジョブの制御にかかる複数の処理のそれぞれの処理について、当該処理に用いられるパラメータの情報と、処理間で引き継ぎ可能なパラメータの情報とを含む接続情報を記憶する第1の記憶部を参照して、前記第1のクラウドサービス上のジョブの制御に関する接続情報を取得し、
前記各クラウドサービスに接続するための認証情報を、当該認証情報を識別する認証識別子と対応付けて記憶する第2の記憶部を参照して、取得した前記接続情報で指定された認証識別子に対応する認証情報を取得し、
取得した前記認証情報と前記接続情報とに基づいて、前記実行制御ジョブを実行する、
処理をコンピュータが実行することを特徴とする実行制御方法。
(付記9)第1のクラウドサービス上のジョブの制御にかかる複数の処理を行う実行制御ジョブの実行指示に応じて、各クラウドサービス上のジョブの制御にかかる複数の処理のそれぞれの処理について、当該処理に用いられるパラメータの情報と、処理間で引き継ぎ可能なパラメータの情報とを含む接続情報を記憶する第1の記憶部を参照して、前記第1のクラウドサービス上のジョブの制御に関する接続情報を取得し、
前記各クラウドサービスに接続するための認証情報を、当該認証情報を識別する認証識別子と対応付けて記憶する第2の記憶部を参照して、取得した前記接続情報で指定された認証識別子に対応する認証情報を取得し、
取得した前記認証情報と前記接続情報とに基づいて、前記実行制御ジョブを実行する、
実行制御部を有することを特徴とする情報処理装置。