(57)【要約】【課題】連携サービスを実行する複数の計算機間の通信回数の増大を抑制する。【解決手段】連携サービスを実行する計算機は、連携サービスの実行のために連携させたサービスとこのサービスを実行する前に実行を終了していなければならない依存サービスとの対応関係を保持する連携順序制約情報テーブルと、連携順序制約情報テーブルを参照して、依存サービスとの対応関係がないサービスと、対応する依存サービスが実行を終了しているサービスとを選択する選択手段と、選択したサービスが複数あるときに、選択した複数のサービスを連続して実行する実行手段と、連携順序制約情報テーブルを参照して、実行したサービスが他の計算機により実行されるサービスの依存サービスであるとき、実行を終了したサービスに関する情報を途中状態情報として、他の計算機へ送信する送信手段とを有する。【選択図】図１
2011118587.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機の各々により実行が制御されるサービスを連携させた連携サービスを実行する連携サービス実行システムであって、前記計算機は、
前記連携サービスの実行のために連携させた前記サービスと前記サービスを実行する前に実行を終了していなければならない依存サービスとの対応関係を保持する連携順序制約情報テーブルと、
前記連携順序制約情報テーブルを参照して、前記依存サービスとの対応関係がない前記サービスと、対応する前記依存サービスが実行を終了している前記サービスとを選択する選択手段と、
選択した前記サービスが複数あるときに、複数の前記サービスを連続して実行する実行手段と、
前記連携順序制約情報テーブルを参照して、実行した前記サービスが他の計算機により実行されるサービスの依存サービスであるとき、実行を終了した前記サービスに関する情報を途中状態情報として、前記他の計算機へ送信する送信手段とを有することを特徴とする連携サービス実行システム。
【請求項２】
前記実行手段により実行すべき、選択した前記サービスがないときに、前記送信手段は、実行を終了した前記サービスに関する情報を途中状態情報として、前記他の計算機へ送信することを特徴とする請求項１記載の連携サービス実行システム。
【請求項３】
さらに、前記他の計算機により実行を終了したサービスに関する情報を前記途中状態情報として、前記他の計算機から受信する受信手段を有し、
前記受信手段による、前記他の計算機により実行を終了したサービスに関する情報の前記他の計算機からの受信に応答して、前記選択手段は、
前記他の計算機により実行を終了したサービスを前記依存サービスとしている前記サービスを選択することを特徴とする請求項２記載の連携サービス実行システム。
【請求項４】
さらに、前記連携サービスの実行のために連携させた前記サービスと前記サービスの実行状態との対応関係を保持するサービス配備状態テーブルを有し、
前記実行手段は、前記サービス配備状態テーブルの前記サービスの実行状態を参照して、選択した前記サービスの実行の可否を判定することを特徴とする請求項３記載の連携サービス実行システム。
【請求項５】
前記途中状態情報に、前記他の計算機により実行されるサービスの実行状態を含み、前記受信手段による前記途中状態情報の受信に応答して、前記サービス配備状態テーブルの、前記他の計算機により実行されるサービスの実行状態が、受信した前記途中状態情報に含まれる、前記他の計算機により実行されるサービスの実行状態で更新されることを特徴とする請求項４記載の連携サービス実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサービスにより構成される連携サービスを、複数のサーバで分散して実行する技術に関する。
【背景技術】
【０００２】
近年、Ｗｅｂサービスを利用した分散コンピューティングが普及してきている。Ｗｅｂサービスはモジュール間の通信に、Ｗｅｂの一般的なプロトコルであるＨＴＴＰ（Hypertext Transfer Protocol）の上でＸＭＬ（Extensible Markup Language）技術を応用したＳＯＡＰ（Simple Object Access Protocol）を用いるアプリケーションサービスの一形態である。高い信頼性と通信品質を実現するＮＧＮ(Next Generation Network)の出現などもあり、Ｗｅｂサービスによる分散コンピューティングは従来のように企業内といった比較的閉じたネットワーク内だけでなく、広く開かれたネットワーク上でも利用されると見込まれている。
【０００３】
Ｗｅｂサービスの普及に伴い、複数のＷｅｂサービスを連携させた連携サービスを構成するためのプロセス記述言語の開発が進められている。その主なものとして、ＯＡＳＩＳの定めるＷＳ−ＢＰＥＬ（Web Services Business Process Execution Language）や、ＯＭＧのＢＰＭＮ（Business Process Modeling Notation）がある。これらのプロセス記述言語を用い、Ｗｅｂサービスの実行順序をシナリオとして記述することで、連携サービスは定義される。サービスの連携を制御するサービス連携制御装置は、ユーザからの連携サービスの実行要求（連携サービス実行要求）を受けると、シナリオを解釈してＷｅｂサービスを順次実行し、連携サービスをユーザへ提供する。連携サービスを構成する各Ｗｅｂサービスとして自ら提供するＷｅｂサービスだけではなく、他の事業者が提供するＷｅｂサービスも組み合わせることにより、より高機能な連携サービスを安価に実現することができる。
【０００４】
近年、サービス提供者がユーザへサービスを提供する際、サービスの機能だけでなく、可用性の確保やサービスの提供までに掛かる時間の保証といったサービスの品質保証についても重要視されるようになってきている。従って、異なる事業者が提供する多数のサービスを組み合わせる連携サービスであっても、クライアントからのリクエストに対して連携サービスを提供するまでに掛かる時間を増大させないための仕組みが重要となる。
【０００５】
連携サービスのサービス提供までの時間を短縮させる技術として、例えば、特許文献１に記載の技術が存在している。特許文献１では、異なる複数のＳＯＡ（Service Oriented Architecture）システムを利用したシナリオの中で、あるＳＯＡシステムから異なる一つのあるＳＯＡシステムへ複数のサービスの実行要求が連続して送信される場合において、その連続するサービスの呼び出しをまとめた一つのサービスをあらかじめ開発し、呼び出し側、及び被呼び出し側の両ＳＯＡシステムに配備しておくことで、一つのサービス実行要求の送信によって複数の連続したサービスの呼び出しを可能にして通信回数を削減する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２０４４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術においては、あらかじめシステム管理者が、登録されているシナリオの中に、他のＳＯＡシステムへ連続して呼び出しが行われる部分がないかを分析した上で、連続して呼び出しが行われる部分を新たなサービスとして開発し、呼び出し側と被呼び出し側のＳＯＡシステムに配備しなおすことで呼び出し回数の削減を図るものである。しかしながら、複数の計算機で実行される多数のサービスを、互いに呼び出して連携させた連携サービスの場合，シナリオそのものが複雑になるため、新たに開発するサービスも膨大な数となる。この結果、システム管理者がシナリオを分析して新たなサービスを開発する場合にコストと時間が必要となり、複数の計算機間の通信回数(呼出回数)の抑制には限界がある。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、開示する連携サービス実行システムは次のような構成を有する。連携サービスを実行する連携サービス実行計算機は、連携サービスの実行のために連携させたサービスと、このサービスを実行する前に実行を終了していなければならない依存サービスとの対応関係を保持する連携順序制約情報テーブルと、連携順序制約情報テーブルを参照して、依存サービスとの対応関係がないサービスと、対応する依存サービスが実行を終了しているサービスとを選択する選択手段と、選択したサービスが複数あるときに、選択した複数のサービスを連続して実行する実行手段と、連携順序制約情報テーブルを参照して、実行したサービスが、他の計算機により実行されるサービスの依存サービスであるとき、実行を終了したサービスに関する情報を途中状態情報として、他の計算機へ送信する送信手段とを有する。
【０００９】
連携サービス実行システムのさらに望ましい態様は、実行手段により実行すべき、選択したサービスがないときに、送信手段は、実行を終了したサービスに関する情報を途中状態情報として、他の計算機へ送信する。
【００１０】
連携サービス実行システムのさらに他の望ましい態様は、他の計算機により実行を終了したサービスに関する情報を途中状態情報として他の計算機から受信する受信手段を有し、受信手段による、他の計算機により実行を終了したサービスに関する情報の他の計算機からの受信に応答して、選択手段は、他の計算機により実行を終了したサービスを依存サービスとしているサービスを選択する。
【００１１】
連携サービス実行システムのさらに他の望ましい態様は、さらに、連携サービスの実行のために連携させたサービスとサービスの実行状態との対応関係を保持するサービス配備状態テーブルを有し、実行手段は、サービス配備状態テーブルのサービスの実行状態を参照して、選択したサービスの実行の可否を判定する。
【００１２】
連携サービス実行システムのさらに他の望ましい態様は、途中状態情報に、他の計算機により実行されるサービスの実行状態を含み、受信手段による途中状態情報の受信に応答して、サービス配備状態テーブルの、他の計算機により実行されるサービスの実行状態が、受信した途中状態情報に含まれる、他の計算機により実行されるサービスの実行状態で更新される。
【発明の効果】
【００１３】
本発明によれば、連携サービスを実行する複数の連携サービス実行計算機間の通信回数の増大を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】連携サービス実行システムの構成図である。
【図２】計算機のハードウェア構成を例示する図である。
【図３】連携サービス実行計算機の機能構成を示す図である。
【図４】シナリオ設定情報テーブルの例を示す図である。
【図５】サービス呼び出しテーブルの例を示す図である。
【図６】連携順序制約情報テーブルの例を示す図である。
【図７】連携サービス実行計算機Ａのサービス配備状態テーブルの例を示す図である。
【図８】連携サービス実行計算機Ｂのサービス配備状態テーブルの例を示す図である。
【図９】連携サービス実行計算機情報テーブルの例を示す図である。
【図１０】逐次的に連携サービスを実行する処理のフローチャートである。
【図１１】連携サービスの実行要求を受け付ける処理フローチャートである。
【図１２】並列的に連携サービスを実行する処理のフローチャートである。
【図１３】並列的な連携サービスの実行結果をクライアントへ送信する処理のフローチャートである。
【発明を実施するための形態】
【００１５】
本実施形態の連携サービス実行システムの概要を説明する。クライアントから実行要求される連携サービス(プログラム)は、複数の連携サービス実行計算機の各々により実行が制御されるサービス(プログラム)を連携させたものである。換言すると、複数の連携サービス実行計算機の各々により実行が制御されるサービスを所定の順序で実行することによって、クライアントに連携サービス結果が出力される。所定の順序は、サービスの実行順序を入れ替えて実行しても、連携サービス結果に影響を与えない自由度の高い実行順序を含む。一方、あるサービスの実行前に実行を終了していなければならない他のサービス、すなわち他のサービスの実行が終了しないと、あるサービスを実行できないという制約（依存関係）のある実行順序もある。制約の有無や制約がある場合の実行順序はサービス間の依存関係を保持する連携順序制約情報テーブルとして、連携サービス実行計算機の各々に設ける。
【００１６】
連携サービス実行計算機は連携順序制約情報テーブルを参照すると、前述の依存するサービスがないサービスと、依存するサービスが実行を終了しているサービスとを選択することができる。選択したサービスが複数あるときに、複数のサービスを連続して実行する。
【００１７】
このようにして、実行したサービスに、他の連携サービス実行計算機により実行されるサービスが依存しているとき、実行を終了したサービスに関する情報（具体的には、サービスに対応する呼出ＩＤ）を途中状態情報として、他の連携サービス実行計算機へ送信する。他の連携サービス実行計算機は、自らが実行すべきサービスの実行が依存するサービスが終了したことを判別できる。
【００１８】
以上により、連携サービス実行計算機は実行可能な複数のサービスを連続して実行することにより、他の連携サービス実行計算機への途中状態情報を纏めて送信するので、連携サービス実行計算機間の通信回数の増大を抑制できる。実行可能なサービスがなくなったとき（実行可能なサービスの実行を終了したとき）、他の連携サービス実行計算機へ途中状態情報を送信すれば、連携サービス実行計算機間の通信回数の増大の抑制効果は大きくなる。
【００１９】
逆に、途中状態情報として他の連携サービス実行計算機により実行を終了したサービスに関する情報を受信すれば、その情報により依存関係が解消したサービスを選択し、実行することができる。
【００２０】
さらに、各サービスとそのサービスの実行状態との対応関係を保持しておく。実行状態とは対応するサービスを実行するためのリソース（計算機、ＣＰＵ、メモリ、データベースなど）の負荷状態や故障状態である。この実行状態を参照して、サービスの実行の可否を判定することにより、良好な（例えば、低負荷の）実行状態のサービスを優先して実行することができるので、連携サービス全体としての処理時間を短縮できる。なぜならば、優先したサービスの実行中に、例えば高負荷であったサービスの実行状態が低負荷に変化する可能性があるからである。
【００２１】
他の連携サービス実行計算機により実行されるサービスの実行状態を管理する場合は、受信する途中状態情報に他の連携サービス実行計算機により実行されるサービスの実行状態を含み、それにより管理しているサービスの実行状態を更新する。これにより、他の連携サービス実行計算機により実行されるサービスの実行状態が、例えば高負荷を表している場合に、途中状態情報の送信を、低負荷になるまで待たせることができる。待たせることにより、その間に、他の連携サービス実行計算機から途中状態情報として実行を終了したサービスに関する情報を受信すれば、その情報により依存関係が解消したサービスを実行できる可能性が高くなり、さらに連続して実行するサービスの数が多くなることになり、連携サービス実行計算機間の通信回数の増大の抑制効果はさらに大きくなる。
【００２２】
以下、連携サービス実行システムを図面を用いて具体的に説明する。図１は、連携サービス実行システムの構成図である。図示するように、連携サービス実行システムは、連携サービス実行計算機Ａ１０１と連携サービス実行計算機Ｂ１１１とを含む。連携サービス実行計算機Ａ１０１は、サービスＡ−１実行計算機１３０、サービスＡ−２実行計算機１３１およびサービスＡ−３実行計算機１３２によるサービスの実行を要求する。連携サービス実行計算機Ｂ１１１は、サービスＢ−１実行計算機１４０およびサービスＢ−２実行計算機１４１によるサービスの実行を要求する。
【００２３】
クライアント用計算機（以下、クライアント）１２０は、連携サービス実行計算機Ａ１０１または連携サービス実行計算機Ｂ１１１に、サービスＡ−１実行計算機１３０、サービスＡ−２実行計算機１３１、サービスＡ−３実行計算機１３２、サービスＢ−１実行計算機１４０およびサービスＢ−２実行計算機１４１が実行する少なくとも二つのサービスの連携した実行を要求する。これらの計算機は、ネットワーク１６０を介して接続されている。
【００２４】
図1に示す連携サービス実行システムにおいて、クライアント１２０は、連携サービス（各連携サービスは、複数のサービス実行計算機の実行によるサービスであって、クライアント１２０からは一つのサービスに見えてもよい。）の一つを選択して、選択した連携サービスの実行要求を一つの連携サービス実行計算機（連携サービス実行計算機Ａ１０１または連携サービス実行計算機Ｂ１１１）に送信する。
【００２５】
連携サービス実行計算機は、クライアント１２０から実行要求された連携サービスを実行するシナリオを有し、そのシナリオに沿って連携すべき複数のサービスに展開する。各連携サービスに対応させてシナリオを設け、シナリオ名を付しておく。展開される複数のサービスには、各々を識別する呼出ＩＤが付してある。呼出ＩＤに対応して、サービス実行計算機が用意されている。連携サービスを各サービス実行計算機で実行するサービスの範囲に展開して、そのサービスの範囲に対応して呼出ＩＤを付しているので、呼出ＩＤとサービス実行計算機とは、１対１又はｎ（複数）対１の対応関係にある。なお、後述するように、同じサービス(名)であっても、このサービスを実行するために用いる引数名(変数名)やサービス実行結果を格納する変数名が異なれば、異なる呼出ＩＤを付してある。
【００２６】
サービス実行計算機は、ここでは連携サービス実行計算機とネットワーク１６０を介して接続する計算機として説明するが、後述するように連携サービス実行計算機と同じ計算機上で実行されるプロセスとして構成してもよい。また、サービス実行計算機を連携サービス実行計算機と同じ又は異なる計算機上の仮想計算機により構成してもよい。
【００２７】
連携サービス実行計算機Ａ１０１は、シナリオ実行途中状態情報生成・復元機能１０３、シナリオ実行途中状態情報送受信機能１０４、呼出サービス決定機能１０５、連携順序制約情報管理機能１０６、サービス配備状態情報管理機能１０７を有する。これらの機能の詳細については後述する。
【００２８】
また、連携サービス実行計算機Ｂ１１１は、シナリオ実行途中状態情報生成・復元機能１１３、シナリオ実行途中状態情報送受信機能１１４、呼出サービス決定機能１１５、連携順序制約情報管理機能１１６、サービス配備状態情報管理機能１１７を有する。これらの機能の詳細については後述する。
【００２９】
連携サービス実行計算機は２台に限定されるものではなく３台以上存在してもよい。また、それぞれの連携サービス実行計算機が呼び出すサービスの数は図１に示したような数に限定されるものではなく１つであったり、２つ以上の数であってもよい。連携サービス実行計算機およびサービス実行計算機の各々の台数が多く、連携して提供するサービスの数が多いほど、連携サービス実行計算機間の通信回数の増加を抑制できる。
【００３０】
図２は、図１の連携サービス実行システムの構成要素である、連携サービス実行計算機、サービス実行計算機およびクライアント１２０の情報処理装置(計算機)としてのハードウェア構成を例示する図である。これらの計算機は、ＣＰＵ２０１と、メモリ２０２と、インターネットやＬＡＮを介して他の装置と通信を行うための通信装置２０４と、キーボードやマウス等の入力装置２０５と、モニタやプリンタ等の出力装置２０６と、読取装置２０７と、ハードディスク等の外部記憶装置２０３とが、バス２０８を介して接続されている。また、読取装置２０７にはＩＣカードやＵＳＢメモリのような、可搬性を有する記憶媒体２０９を接続することができる。
【００３１】
連携サービス実行システムの各情報処理装置は、各々の機能を実現するプログラムがメモリ２０２上にロードされ、ＣＰＵ２０１により実行されることにより具現化される。これらのプログラムは、あらかじめ、図２の情報処理装置の外部記憶装置２０３に格納されていても良いし、必要なときに、読取装置２０７や通信装置２０４と情報処理装置が利用可能な媒体を介して、他の装置から外部記憶装置２０３に格納されてもよい。
【００３２】
情報処理装置が利用可能な媒体とは、たとえば、読取装置２０７に着脱可能な記憶媒体２０９、または通信装置２０４に接続可能なネットワークまたはネットワークを伝搬する搬送波やディジタル信号を指す。そして、プログラムは一旦外部記憶装置２０３に格納された後、そこからメモリ２０２上にロードされてＣＰＵ２０１に実行されてもよいし、あるいは外部記憶装置２０３に格納されることなく、直接メモリ２０２上にロードされて、ＣＰＵ２０１に実行されてもよい。
【００３３】
図３は連携サービス実行計算機の機能構成を示す図であり、図１の連携サービス実行計算機Ａ１０１及びサービス実行計算機Ｂ１１１の機能構成は連携サービス実行計算機３０１の機能構成と同様である。すなわち、図１のシナリオ実行途中状態情報生成・復元機能１０３とシナリオ実行途中状態情報生成・復元機能１１３は、図３のシナリオ実行途中状態情報生成・復元機能３０３に対応する。シナリオ実行途中状態情報生成・復元機能３０３については後述する。
【００３４】
同様に、図１のシナリオ実行途中状態情報送受信機能１０４とシナリオ実行途中状態情報送受信機能１１４は、図３のシナリオ実行途中状態情報送受信機能３０４に対応する。シナリオ実行途中状態情報送受信機能３０４については後述する。図１の呼出サービス決定機能１０５と呼出サービス決定機能１１５は、図３の呼出サービス決定機能３０５に対応する。呼出サービス決定機能３０５については後述する。図１の連携順序制約情報管理機能１０６と連携順序制約情報管理機能１１６は、図３の連携順序制約情報管理機能３０６に対応する。連携順序制約情報管理機能３０６については後述する。図１のサービス配備状態情報管理機能１０７とサービス配備状態情報管理機能１１７は、図３のサービス配備状態情報管理機能３０７に対応する。サービス配備状態情報管理機能３０７については後述する。
【００３５】
連携サービス実行計算機３０１は、この情報処理装置が利用可能な記憶媒体に、シナリオ設定テーブル３０９、サービス呼出テーブル３１０、連携順序制約情報テーブル３１１サービス配備状態テーブル３１２、連携サービス実行計算機情報テーブル３１３をデータベースとして保持する。各テーブルについては後述する。なお、連携サービス実行計算機３０１が保持する情報は、テーブルの形式のみに限るものではない。
【００３６】
シナリオ実行途中状態情報生成・復元機能３０３は、連携サービスの実行途中で中断し、中断したときの状態を他の連携サービス実行計算機上で再現するために必要となる情報を保持するシナリオ実行途中状態情報を生成する機能と、生成したシナリオ実行途中状態情報が示す連携サービスの実行処理途中の状態を連携サービス実行計算機３０１のメモリ２０２上に復元する機能を有する。連携サービスの実行の中断のタイミングは、サービス実行計算機が呼出ＩＤに対応するサービスの実行を終了し、他の呼出ＩＤに対応するサービスの実行を開始するまで（連携サービス実行計算機３０１がサービス実行計算機を呼び出すまで（サービスの実行を要求するまで）である。
【００３７】
シナリオ実行途中状態情報は、他の連携サービス実行計算機に連携すべきサービスを実行（サービスを実行するサービス実行計算機の呼び出し）させるための引継ぎ情報であって、具体的には、クライアント１２０からの連携サービスのリクエスト（サービスの実行要求）を受信した連携サービス実行計算機３０１を識別する情報と、すでにどのサービスの実行が終了したかを表す情報（呼出ＩＤ）と、クライアント１２０から受信したリクエストに含まれるパラメータと、すでに実行が終了したサービスの結果(情報)を含む。
【００３８】
これらの情報の中で、サービスの実行が終了したかを表す情報（呼出ＩＤ）及びその呼出ＩＤに対応したサービスの結果は必須の情報としてシナリオ実行途中状態情報に含まれる。連携サービスのリクエストを受信した連携サービス実行計算機３０１を識別する情報は、リクエストを受信した連携サービス実行計算機がクライアント１２０に連携サービスの結果情報を送信する場合に必要であり、連携サービスのシナリオに沿った一連のサービスの実行終了を判定した連携サービス実行計算機３０１がクライアント１２０に連携サービスの結果情報を送信する場合は不要である。この場合は、リクエストを受信した連携サービス実行計算機３０１を識別する情報の代わりに、連携サービスのリクエストを送信したクライアント１２０を識別する情報とし、クライアント１２０を識別する情報を参照して、連携サービスの結果情報を送信する。クライアント１２０から受信したリクエストに含まれるパラメータは、シナリオに沿って実行する初期の段階のサービスでは必要とすることが多いが、その後は、既に終了したサービスの結果を用いて新たなサービスを実行する場合が多くなるので、シナリオ実行途中状態情報に含まれなくてもよい場合が生じる。
【００３９】
また、シナリオ実行途中状態情報には、各サービス実行計算機の負荷状態や故障状態を表す情報などのリアルタイムの配備状態を表す情報（サービス実行計算機の状態情報）を含むこともできる。
【００４０】
シナリオ実行途中状態情報送受信機能３０４は、シナリオ実行途中状態情報を複数の連携サービス実行計算機間でネットワーク１６０を介して送受信する機能である。
【００４１】
呼出サービス決定機能３０５は、連携サービスの実行中に、あるサービスの呼び出しが終了した場合（あるサービス実行計算機によるサービスの実行が終了した場合）に、次にどのサービスを呼び出すかを、シナリオの設定情報と、どのサービスがすでに終了したかを表す情報から選択・決定する機能である。また、次にどのサービスを呼び出すか決定するために、連携サービスのシナリオの情報とサービス実行計算機によるシナリオの実行の途中状態を示す情報（シナリオ実行途中状態情報）だけでなく、呼び出すサービスの実行に関する制約条件を表す情報や、各サービスのリアルタイムの配備状態を表す情報も利用してもよい。次にどのサービスを呼び出すか決定する処理の詳細については後述する。
【００４２】
連携順序制約情報管理機能３０６は、連携順序制約情報テーブル３１１に保持する連携サービス毎に定義されるサービスの実行順序に関する制約条件と、シナリオ実行途中状態情報に含まれる既に実行が終了したサービスの一覧をもとに、次に実行が可能なサービスの一覧を取得するための機能である。連携サービス毎に定義されるサービスの実行順序に関する制約条件の詳細については後述する。また、次に実行が可能なサービスの一覧を取得する処理の詳細についても後述する。
【００４３】
サービス配備状態情報管理機能３０７は、この機能を保持する連携サービス実行計算機３０１が直接呼び出すことが可能な各サービス（サービス実行計算機）について、これらのサービスのリアルタイムの配備状態を計測する機能と、計測した各サービスのリアルタイムの配備状態を表す情報をもとに、各サービスが現在呼出可能かどうかを判断する機能を保持する。各サービスのリアルタイムの配備状態を表す情報としては、前述のように例えば各サービスについての負荷状態を表す情報などであり、サービス（サービス実行計算機）が高負荷状態であれば呼び出し不可能、低負荷状態であれば呼び出し可能というように判定する。サービス実行計算機の高負荷状態は、１台のサービス実行計算機に、複数種別のサービスの実行を割当てた場合や、複数種類の連携サービスに共通して含まれたり、頻繁に呼び出されるサービス割当てた場合に生じやすい。
【００４４】
連携サービス実行計算機３０１が有する各テーブルについて説明する。以下では、図１に示したサービスＡ−１実行計算機１３０が提供するサービスＡ−１、サービスＡ−２実行計算機１３１が提供するサービスＡ−２、サービスＡ−３実行計算機１３２が提供するサービスＡ−３、サービスＢ−１実行計算機が提供するサービスＢ−１、サービスＢ−２実行計算機が提供するサービスＢ−２の５つのサービスを連携させて構成される連携サービス“シナリオα”を例にして説明する。
【００４５】
図４は、シナリオ設定情報テーブル３０９の例を示す図である。シナリオ設定情報テーブル３０９は連携サービスを定義するシナリオを保持する。具体的には、シナリオの識別名である“シナリオα”を保持するシナリオ名４０１、シナリオαに沿って連携サービスを提供するための各サービスの基本的な連携順序（複数のサービスが実行可能であり、それらの実行順序が制約されない場合の実行順序決定に用い、必ずしもこの連携順序に従わなくてもよいことを後述する。）を表す情報を保持する基本連携順序４０２、及び連携サービスの実行において連携サービス実行計算機３０１内部で一時的に保持する必要がある変数を定義する情報を保持する変数宣言情報４０３、及び、クライアント１２０からの連携サービスの実行要求を受け付けるためのＩＦ（インタフェース）を定義する情報として、要求を待ち受ける連携サービス実行計算機３０１のロケーションやこの連携サービスのパラメータと結果情報の型（数値、テキスト、画像、など）などを含む情報（例えばＷＳＤＬ（Web Service Description Language）ファイルを指定するパスなど）を保持する受付ＩＦ４０４である。基本連携順序４０２は呼出ＩＤを用いて記述する。
【００４６】
なお、シナリオ設定情報テーブル３０９に保持する情報は、上記に限るものではなく、例えば、連携サービスの実行中において後述する待機処理が発生した場合、待機の発生回数を制限する値や待機する最大時間をシナリオ毎に設定したり、また、連携サービスの実行処理方法を後述する逐次的な処理方式か並列処理方式のどちらを選択するかを記述してもよい。
【００４７】
なお、図４のシナリオ設定情報テーブルは、各サービス実行計算機（サービス実行計算機Ａ１０１およびサービス実行計算機Ｂ１１１）に設けられ、同じシナリオ（例えば、シナリオα）に関しては同一内容を保持する。
【００４８】
図５は、サービス呼出テーブル３１０の例を示す図である。サービス呼出テーブル３１０は、シナリオ名５０１に対応する連携サービスの実行時に、サービス名５０３のサービスを呼び出すために、シナリオ設定情報テーブル３０９の変数宣言情報４０３に記述されているどの内部変数を引数(パラメータ)として呼び出すかを示す使用引数名５０４と、各サービスの結果をシナリオ設定情報テーブル３０９の変数宣言情報４０３に記述されているどの内部変数に格納するかを示す結果格納先変数名５０５を保持し、さらに、シナリオ名５０１、サービス名５０３、使用引数名５０４、結果格納先変数名５０５の値の組を一意に識別するた呼出ＩＤ５０２を有する。
【００４９】
呼出ＩＤは、一つの連携サービスの中で同一のサービスを、引数を変えて複数回呼び出す際に、それぞれの呼び出し処理を区別してシナリオ設定情報を記述するために用いる。例えば、図５のサービス呼出テーブル３１０においては、３行目においてサービスＢ−１を引数in1を用いて呼び出すときに呼出ＩＤ５０２の値「３」として定義され、同様に４行目においてサービスＢ−１を引数in3用いて呼び出すときに呼出ＩＤ５０２の値「４」として定義されている。呼出ＩＤを用いることで、図４のシナリオ設定情報テーブル３０９の基本連携順序４０２において、呼出ＩＤの値「３」の後に呼出ＩＤの値「４」があるように記述することで、まず引数in1を用いてサービスＢ−１を実行して、その結果を変数in3に格納し、次にサービスＢ−１の結果を格納した変数であるin3を引数として再度サービスＢ−１を呼び出すといったシナリオを記述できる。シナリオ設定情報テーブル３０９に保持する情報は、上記に限るものではない。
【００５０】
なお、図５のサービス呼出テーブルは、各連携サービス実行計算機（連携サービス実行計算機Ａ１０１および連携サービス実行計算機Ｂ１１１）設けられ、同じシナリオ（例えば、シナリオα）に関しては同一内容を保持する。
【００５１】
図６は、連携順序制約情報テーブル３１１の例を示す図である。連携順序制約情報テーブル３１１は、連携サービスごとに、各サービスを呼び出す前に満足されていなければならない条件を記述する。具体的には、例えば、図６に示すように、シナリオ名６０１に対応する連携サービスにおいて、呼出ＩＤ６０２のサービスに関して、依存呼出ＩＤ名６０３を格納する。依存呼出ＩＤ名６０３は、呼出ＩＤ６０２のサービスを実行するために、すでに実行済みでなければならない他のサービスの呼出ＩＤである。換言すると、呼出ＩＤ６０２のサービスの実行は、依存呼出ＩＤ名６０３のサービスの終了に依存している。連携順序制約情報テーブル３１１に保持する情報は、上記に限るものではない。
【００５２】
なお、図６の連携順序制約情報テーブル３１１は、各サービス実行計算機（サービス実行計算機Ａ１０１およびサービス実行計算機Ｂ１１１）に設けられ、同じシナリオ（例えば、シナリオα）に関しては同一内容を保持する。
【００５３】
図７は、サービス配備状態テーブル３１２の例を示す図である。サービス配備状態テーブル３１２は、各サービス７０１のＩＦ（インタフェース）７０２とサービス７０１のリアルタイムの配備状態を表す状態種別７０３及びその状態値７０４を保持する。各サービスのＩＦ７０２は、各サービスのロケーションや、引数と結果の型などを含む必要があり、例えばＷＳＤＬ（Web Service Description Language）ファイルを指定するパスなどをサービスＩＦ情報７０２として指定する。各サービスのリアルタイムの配備状態を表す情報としては、例えば各サービスについての負荷状態を表す情報などを保持し、例えば、状態種別７０３に“latency”という文字列を保持することで、負荷状態の測定対象がネットワーク遅延であることを表し、状態値７０４に遅延が所定の閾地より大きければ(高負荷であれば)値「０」を、そうでなければ(低負荷であれば)「１」を保持することで、サービス名７０１のサービスのネットワーク負荷が高いか低いかを保持することができる。サービス配備状態テーブル３１２に保持する情報は、上記に限るものではない。
【００５４】
図７のサービス配備状態テーブル３１２は、シナリオαの例において、連携サービス実行計算機Ａ１０１が有する例である。
【００５５】
図８も、サービス配備状態テーブル３１２の例を示す図であり、シナリオαの例において、連携サービス実行計算機Ｂ１１１に係るサービス配備状態を表すものであり、連携サービス実行計算機Ａ１０１が有する。連携サービス実行計算機Ａ１０１が有する、連携サービス実行計算機Ｂ１１１に係るサービス配備状態の更新（サービス配備状態テーブルＢ３１２の更新）については後述する。同様に、連携サービス実行計算機Ｂ１１１も、連携サービス実行計算機Ａ１０１に係るサービス配備状態を示すサービス配備状態テーブルＡ３１２と連携サービス実行計算機Ｂ１１１に係るサービス配備状態を示すサービス配備状態テーブルＢ３１２とを有する。
【００５６】
図９は、連携サービス実行計算機情報テーブル３１３の例を示す図である。連携サービス実行計算機情報テーブル３１３は、連携サービス実行計算機名９０１の連携サービス実行計算機のロケーション９０２と、この連携サービス実行計算機が呼び出すサービス名９０３を保持する。連携サービス実行計算機情報テーブル３１３に保持する情報は上記に限るものではない。
【００５７】
なお、図９の連携サービス実行計算機情報テーブル３１３は、各サービス実行計算機（サービス実行計算機Ａ１０１およびサービス実行計算機Ｂ１１１）設けられ、同じシナリオ（例えば、シナリオα）に関しては同一内容を保持する。
【００５８】
以下、本実施形態の連携サービスの実行について説明する。本実施形態の連携サービスの実行方法には、連携サービスを構成するサービスを一つずつ順に(逐次的に)処理する逐次処理方式と、実行可能なサービスを並列的に実行する並列処理方式の２方式がある。逐次処理方式と並列処理方式のどちらで実行するかは、例えばシナリオ設定情報テーブル３０９に、各連携サービスごとにどちらの処理方式を用いるかを記述することで指定する。
【００５９】
図１０は、逐次処理方式で連携サービスを実行する連携サービス実行計算機による処理のフローチャートである。シナリオαの連携サービスの実行を例にとり、逐次処理方式を説明する。
【００６０】
クライアント１２０はシナリオ設定情報テーブル３０９の受付ＩＦ４０４に指定されている、実行要求を待ち受ける連携サービス実行計算機へ、連携サービスの実行要求を送信する。ここでは、この連携サービス実行要求の待ち受ける連携サービス実行計算機計算機は、連携サービス実行計算機Ａ１０１であり、シナリオαに従って連携サービスを実行するものとする（処理１００２）。
【００６１】
現在から過去の一定時間内に高負荷状態であると判定されたサービスの一覧を表した情報である現在高負荷状態サービス名について、一定時間以上古い情報を削除する（処理１００３）。一定時間、すなわちどれだけ古い情報までを保持するかについてはシナリオの設定情報として記述してもよいし、サービスの特性ごとに決めるためにサービス配備状態テーブル３１２に記述してもよい。
【００６２】
現在、高負荷状態サービス名は空として、ここでは何も行わず処理１００４に進む。なお、処理１００３が持つ意味については後述する。
【００６３】
クライアント１２０から実行要求された連携サービスにおいて、連携サービス実行計算機１０１から呼び出されるサービスの中で、連携順序制約情報テーブル３１１に記述された条件をすでに満たしている呼出ＩＤの一覧を取得する（処理１００４）。処理１００４の結果、一つでも該当する呼出ＩＤが存在すれば処理１００５に進み、一つも存在しなければ処理１００９に進む。
【００６４】
この段階では、どの呼出ＩＤのサービスも実行されていないため、制約条件を満たしている呼出ＩＤは、連携順序制約情報テーブル３１１の依存呼出ＩＤ名６０３がnullの呼出ＩＤ６０２である「１」と「３」と「５」のサービスである。サービス呼出テーブル３１０が保持する呼出ＩＤ５０２とサービス名５０３、及び連携サービス実行計算機情報テーブル３１３が保持するサービス名９０３から、呼出ＩＤが「１」と「３」と「５」の３つのサービスのうち、連携サービス実行計算機Ａ１０１が呼び出すことができるサービスとして、呼出ＩＤが「１」と「５」のサービスを取得する。
【００６５】
呼出ＩＤが「１」および「５」のサービスはいずれも未実行であるため、処理１００４の結果として呼出ＩＤ「１」、呼出ＩＤ「５」を保持し、処理１００５へ進む。
【００６６】
処理１００４で取得した呼出ＩＤ「１」及び「５」に対応するサービスを実行するサービスＡ−1実行計算機１３０及びサービスＡ−３実行計算機１３２の現在の配備状態を調べ、呼び出し可能かどうかを判定する（処理１００５）。本処理１００５は、サービス呼出テーブル３１０を調べ、各呼出ＩＤ５０２に対応するサービス名５０３を取得し、サービス配備状態テーブルＡ３１２の、取得したサービス名７０１の状態値７０４を調べる。状態値７０４の値から呼出の負荷を決定する処理については既に述べた通りである。また、本処理１００５において、高負荷のために呼出不可能と判定されたサービスについては、現在高負荷状態サービス名として、取得したサービス名と現在時刻を組にして保持する。なお、現在高負荷状態サービス名の持つ意味については後述する。
【００６７】
シナリオαの連携サービスの現在の段階においては、図７に示したサービス配備状態テーブルＡ３１２を調べると、サービスＡ−１は高負荷であり、サービス呼出テーブル３１０のサービス名５０３に示すサービスＡ−３を呼び出すための呼出ＩＤ５のみが実行可能なサービスと判定される。また、現在高負荷状態サービス名として、サービスＡ−１が現在時刻と組にして保持される。次に処理１００６に進む。
【００６８】
処理１００５の結果、実行可能とされた呼出ＩＤのサービスを一つ選択して実行する（処理１００６）。実行可能なサービスが複数存在した場合は、シナリオ設定情報テーブル３０９の基本連携順序４０２に記述された順序に従って選択する。また、実行が終了した呼出ＩＤは、シナリオ実行途中状態情報の実行終了した呼出ＩＤの一覧に加える。本処理１００６を実行後、処理１００３へ戻る。
【００６９】
シナリオαの処理の現段階においては、呼出ＩＤ５に対応するサービスを、サービスＡ−３実行計算機１３２を呼び出して実行させ、実行終了した呼出ＩＤの一覧として呼出ＩＤ５を保持し、処理１００３へ戻る。
【００７０】
処理１００３に戻り、現在高負荷状態サービス名を更新する。処理１００６における呼出ＩＤ５に対応するサービスの実行時間が長く掛かったなどにより、すでに呼出ＩＤ「１」に関する情報が古い（現在から一定時間以上過去である）と判断された場合はその情報を削除する。そうでなければ、現在高負荷状態サービス名を更新せずに、処理１００４へ進む。ここでは、本処理１００３において、現在高負荷状態サービス名から呼出ＩＤ「１」は削除されたとする。
【００７１】
再度、処理１００４の処理を行う。ここで、終了している呼出ＩＤは「５」であり、依存呼出ＩＤ名６０３がnullまたは呼出ＩＤ「５」である呼出ＩＤは「１」、「３」、「５」である。呼出ＩＤ「５」はすでに終了し、呼出ＩＤ「３」は連携サービス実行計算機Ａ１０１が呼び出すことがないので、本処理の結果は、呼出ＩＤ「１」である。処理１００５に進む。
【００７２】
処理１００５において、呼出ＩＤ「１」に対応するサービスＡ−１が実行可能あれば、処理１００６に進む。再度、サービスＡ−１が実行不可能であれば、現在高負荷状態サービス名を再度更新し、処理１００７に進む。
【００７３】
連携順序制約情報テーブル３１１と、既に終了している呼出ＩＤの一覧と、連携サービス実行計算機情報テーブル３１３から、他の連携サービス実行計算機で実行可能な呼出ＩＤの一覧を求める（処理１００７）。
【００７４】
処理１００７の結果、一つの呼出ＩＤも存在しなかった場合は、処理１００８に進み、所定時間待機した上で、処理１００３に戻る。待機する時間は、例えばシナリオ設定情報テーブル３０９に値を記述することで指定してもよい。また、あらかじめ待機の発生する許容回数を設定しておき、連携サービスの実行途中において許容回数以上の待機処理が発生した場合は、クライアント１２０へエラーメッセージを送信するようにしてもよい。
【００７５】
シナリオαの処理の現在の段階においては、処理１００７の結果は呼出ＩＤ「３」となり、処理１０１２へ進む。
【００７６】
呼出ＩＤ「３」に対応するサービスＢ−１が現在高負荷状態サービス名に含まれているかをサービス配備状態テーブルＢ３１２を参照して判定する（処理１０１２）。含まれていれば処理１００８に進み、含まれていなければ処理１０１３に進む。
【００７７】
シナリオαの処理の現在の段階においては、サービスＢ−１は現在高負荷状態サービス名に含まれていないため、処理１０１３へ進むこととなる。
【００７８】
処理１０１２において現在高負荷状態サービス名に含まれるか否かを判定する目的は、シナリオαの連携サービスの現在の段階においては、サービスＢ−１が実行可能かどうかを、連携サービス実行計算機Ａ１０１において判定することである。本処理１０１２がなければ、後述の処理１０１３を経て、連携サービス実行計算機Ｂ１１１へシナリオ実行途中状態情報が送信され、さらに、同様の処理の中でサービスＢ−１も高負荷状態のため実行不可能であれば、直ちに連携サービス実行計算機Ａ１０１へシナリオ実行途中状態情報が送信されることとなる。連携サービス実行計算機Ａ１０１は再度同様の処理を行い、サービスＡ−１が実行不可能であれば、再度連携サービス実行計算機Ｂ１１１へシナリオ実行途中状態情報を送信する。このように、シナリオ実行途中状態情報が何度も送信されてネットワーク１６０および各連携サービス実行計算機が輻輳に陥ることを防ぐために、本処理１０１２によってサービスの実行を処理１００８によって待機させる。これによっても、連携サービス実行計算機間の通信回数の増大を抑制することができる。
【００７９】
処理１０１２の結果、現在高負荷状態サービス名に含まれていないサービスを一つ選択し、選択したサービスを呼び出す連携先サービス実行計算機へ、シナリオ実行途中状態情報を送信する（処理１０１３）。現在高負荷状態サービス名に含まれていないサービスが複数存在する場合は、シナリオ設定情報テーブル３０９の基本連携順序４０２に記述された順序に従って選択する。
【００８０】
シナリオαの処理の現在の段階においては、連携先サービス実行計算機Ａ１０１がサービスＢ−１を呼び出す連携先サービス実行計算機Ｂ１１１へ、シナリオ実行途中状態情報として、既に実行が終了した呼出ＩＤ「５」、クライアント１２０からの連携サービス実行要求とともに受信したパラメータ、呼出ＩＤ「５」に対応するサービスの結果、現在高負荷状態情報として、サービスＡ−１と判定時の時刻を送信する。処理１０１３の後、連携サービス実行計算機Ａ１０１での処理は、終了する。
【００８１】
シナリオ実行途中状態情報を受信した連携サービス実行計算機Ｂ１１１は、連携サービス実行計算機Ａ１０１の処理として説明した図１０に示す処理フローに従って、連携サービスの実行を進める。
【００８２】
シナリオ実行途中状態情報を受信した連携サービス実行計算機Ｂ１１１は、現在高負荷状態情報として送信された、サービスＡ−１と判定時の時刻を基にして、連携サービス実行計算機Ａ１０１に係るサービス配備状態テーブルＡ３１２のサービス名７０１がサービスＡ−１に対応する状態値７０４を高負荷を示す「０」に更新する。
【００８３】
上述の処理に従って連携サービスの実行を進め、例えば、呼出ＩＤ「１」、呼出ＩＤ「２」、呼出ＩＤ「３」、呼出ＩＤ「５」の各々に対応するサービスの実行が終了した状態で、連携サービス実行計算機Ｂ１１１において処理１００４に進んだ場合、次に実行可能なサービスは呼出ＩＤ「４」に対応したサービスＢ−１であるため、連携サービス実行計算機Ｂ１１１の処理は処理１００９に進む。
【００８４】
処理１００９は、連携サービスの実行が終了したかどうかを判定する処理である。連携先サービス実行計算機Ｂ１１１の状態は、シナリオαの連携サービスの全ての呼出ＩＤに対応するサービスの実行が終了していないため、処理１０１２へ進む。
【００８５】
全ての呼出ＩＤが終了していれば、処理１０１０に進み、シナリオ設定情報テーブル４００の受付ＩＦ４０４が定義するＩＦに従い、クライアント１２０へ連携サービスの実行結果を送信し（処理１０１０）、連携サービスの実行を終了する。クライアント１２０へ連携サービスの実行結果を送信するのは、連携サービスの実行要求を受け付けた連携サービス実行計算機Ａ１０１である場合は、連携サービス実行計算機Ｂ１１１はシナリオ実行途中状態情報として連携サービスの実行結果を連携サービス実行計算機Ａ１０１へ送信する。
【００８６】
以上のように連携サービスを実行することで、優先的に同一の連携サービス実行計算機から連続したサービスの呼出ができ、連携サービスの実行に伴う連携サービス実行計算機間の通信回数の発生を抑制することができる。
【００８７】
連携サービスを構成するサービスの中で、実行のための事前の制約条件を満たしているサービスを並列して実行する並列処理方式によって連携サービスを実行することもできる。以下、シナリオαを用いて並列処理方式の概略を説明する。
【００８８】
図１１は、クライアント１２０からの連携サービスの実行要求を受け付ける連携先サービス実行計算機３０１の処理フローチャートである。クライアント１２０からの連携サービスの実行要求は、シナリオ設定情報テーブル３０９の受付ＩＦ４０４によって指定された連携サービス実行計算機３０１が受信する（処理１１０２）。シナリオαの例においては、連携サービス実行計算機Ａ１０１が実行要求を受信するものとする。
【００８９】
クライアントからの連携サービスの実行要求を受信した連携サービス実行計算機３０１が、連携順序制約情報テーブル３１１を調べ、最初に実行可能な全ての呼出ＩＤを取得する（処理１１０３）最初に実行可能な呼出ＩＤとはすなわち、実行要求された連携サービスのシナリオ名６０１について、依存呼出ＩＤ名６０３の値がnullである呼出ＩＤ６０２である。シナリオαの処理においては、呼出ＩＤ「１」、呼出ＩＤ「３」、呼出ＩＤ「５」が取得される。
【００９０】
処理１１０３で取得された呼出ＩＤに対応するサービスの全てを一覧として取得し、これらの各サービスを呼び出す連携サービス実行計算機３０１へ、シナリオ実行途中状態情報を送信する（処理１１０４）。シナリオαの処理においては、呼出ＩＤ「１」、呼出ＩＤ「３」、呼出ＩＤ「５」に対応して呼び出されるサービスは、サービスＡ−１、サービスＡ−３、サービスＢ−２であり、これらを呼び出す連携サービス実行計算機は、連携サービス実行計算機Ａ１０１と連携サービス実行計算機Ｂ１１１である。よって、自らである連携サービス実行計算機Ａ１０１は、シナリオ実行途中状態情報を基に連携サービスの実行を開始すると共に、連携サービス実行計算機Ｂ１１１へシナリオ実行途中状態情報を送信する。この場合、連携サービス実行計算機Ａ１０１にはシナリオ実行途中状態情報として呼出ＩＤ「１」と呼出ＩＤ「５」とを残し、連携サービス実行計算機Ｂ１１１へシナリオ実行途中状態情報として呼出ＩＤ「３」を送信してもよい。以上で、並列処理方式におけるクライアントからの連携サービス実行要求の受信処理は終わる。
【００９１】
図１２は、並列処理方式における、連携サービスを構成する各サービスを実行する処理のフローチャートである。図１０の逐次処理方式では、図１に示すサービス実行計算機が各サービスを実行するように説明したが、ここでは、連携サービス実行計算機が実行すべき呼出ＩＤに対応するサービスを実行する実行プロセスを生成し、生成した実行プロセスの実行により各サービスを実行するように説明する。各サービスをいずれの方法で実行するように連携サービス実行システムを構成しても、連携サービス実行計算機の処理手順の本質に変わりはない。
【００９２】
本処理は、シナリオ実行途中状態情報を受信した連携サービス実行計算機、もしくは、図１１の処理１１０４において、自らが対象に含まれていた連携サービス実行計算機が行う(処理１２０２)。シナリオαの処理においては、処理１１０４の後、連携サービス実行計算機Ａ１０１、連携サービス実行計算機Ｂ１１１の両計算機が独立して並列に処理を開始することとなる。
【００９３】
シナリオ実行途中状態情報に含まれる各呼出ＩＤに対し、それぞれに対応した実行プロセスが存在しているかを調べる(処理１２０３)。存在していれば処理１２０５に進む。実行プロセスが存在していなければ、処理１２０４に進み、存在していない呼出ＩＤに対応した実行プロセスを生成して（処理１２０４）から処理１２０５に進む。シナリオαの処理においては、連携サービス実行計算機Ａ１０１は、処理１２０４に進み、呼出ＩＤ「１」と呼出ＩＤ「５」のそれぞれに対応した２つの実行プロセスを生成する。同様に、連携サービス実行計算機Ｂ１１１も、処理１２０４に進み、呼出ＩＤ「３」に対応した実行プロセスを生成する。以降は、各実行プロセスが独立に並列で処理を進める。
【００９４】
連携順序制約情報テーブル３１１を参照して、実行プロセスが実行すべきサービスと対応している呼出ＩＤが連携順序制約情報をクリアしているかを判定する（処理１２０５）。クリアしていなければ、連携順序制約がクリアされるまで待機する（処理１２０６）。クリアしているか、又は処理１２０６の結果としてクリアすれば、処理１２０７へ進む。シナリオαの現段階の処理においては、全ての実行プロセスは制約条件をクリアしているので処理１２０７へ進む。
【００９５】
実行プロセスが、自らが実行すべきサービスと対応している呼出ＩＤが、サービス配備状態テーブル３１２が保持するリアルタイムの配備状態（例えば、負荷状態）を調べることで呼び出し可能かどうかを判定する（処理１２０７）。判定の結果、呼出不可能であれば、呼出が可能になるまで処理を待機する（処理１２０８）。呼出が可能になれば処理１２０９へ進む。
【００９６】
処理１２０９では、実行プロセスが実行すべきサービスと対応している実行可能な呼出ＩＤに対応する実行プロセスを実行し（処理１２０９）、実行プロセスの終了に応じてシナリオ実行途中状態情報を更新する。シナリオ実行途中状態情報の更新とは、前述のように、既に実行が終了した呼出ＩＤとして、終了した実行プロセスに対応する呼出ＩＤに変更する。
【００９７】
連携順序制約情報テーブル３１１を調べ、処理１２０９において実行したサービスが他の呼出ＩＤの依存呼出ＩＤ６０３に含まれていたかどうかを判定する（処理１２１０）。終了した実行プロセスに対応する呼出ＩＤを依存呼出ＩＤ６０３に含む呼出ＩＤが一つでも存在する場合は処理１２１１に進み、一つも存在しなければ処理１２１３へ進む。シナリオαの処理において、例えば、連携サービス実行計算機Ａ１０１による処理１２０９において呼出ＩＤ「１」に対応した実行プロセスが終了した場合は、呼出ＩＤ「１」を依存呼出ＩＤ６０３に含む呼出ＩＤは呼出ＩＤ「２」である。例えば、処理１２０９において呼出ＩＤ「２」に対応した実行プロセスが終了した場合は、呼出ＩＤ「２」を依存処理ＩＤ６０３に含む呼出ＩＤは存在しない。
【００９８】
実行プロセスが終了したサービスに対応する呼出ＩＤを依存呼出ＩＤ６０３に含む呼出ＩＤを実行する連携サービス実行計算機にシナリオ実行途中状態情報を送信する（処理１２１１）。その後、終了した実行プロセスを破棄して処理を終了する。シナリオ実行途中状態情報に含まれる呼出ＩＤを依存呼出ＩＤ６０３に含む呼出ＩＤに対応するサービスを、自らが実行すべき連携サービス実行計算機である場合は、このシナリオ実行途中状態情報を基に、処理１２０２からの処理を実行する。
【００９９】
クライアント１２０から連携サービス実行要求を受信した連携サービス実行計算機へシナリオ実行途中状態情報を送信する（処理１２１３）。その後、終了した実行プロセスを破棄して処理を終了する。
【０１００】
図１３は、並列処理方式における、クライアントへ連携サービスの実行結果を送信する処理のフローチャートである。クライアント１２０から連携サービス実行要求を受信した連携サービス実行計算機が、シナリオ実行途中状態情報を受信する（処理１３０２）。
【０１０１】
連携サービスの呼出ＩＤに対応するサービス（実行プロセス）を終了しているかを判定し、終了していなければ、処理１３０２に戻り、再度シナリオ実行途中状態情報を受信するまで待機する（処理１３０３）。再度、シナリオ実行途中状態情報を受信すると、シナリオ実行途中状態情報をマージし、再度、全ての呼出ＩＤを終了しているかを判定する。
【０１０２】
実行すべき連携サービスの全ての呼出ＩＤが終了すれば、シナリオ設定情報テーブル３０９の受付ＩＦ４０４に従って、シナリオ実行途中状態情報に含まれる各サービスの実行結果を纏めて、連携サービスの実行結果としてクライアント１２０へ送信する（処理１３０４）。
【０１０３】
上述した処理フローに従って連携サービスを実行することで、シナリオを再開発することなく、呼出可能なサービスを独立して並列に呼び出すこともでき、連携サービスの実行時間を短縮することもできる。
【０１０４】
本実施形態によれば、連携サービス実行計算機が実行すべきサービスを連続して実行できるので（連続して実行したサービスに対応する呼出ＩＤなどを纏めて送信するので）、連携サービス実行計算機間の通信回数の増加を抑制できる。特に、連携サービス実行計算機およびサービス実行計算機の各々の台数が多く、連携して提供するサービスの数が多いほど、連携サービス実行計算機間の通信回数の増加を抑制できる。
【符号の説明】
【０１０５】
１０１、１１１、３０１：連携サービス実行計算機、１２０：クライアント用計算機、１３０〜１３２、１４０，１４１：サービス実行計算機、１６０：ネットワーク、２００：計算機。
【図１】
2011118587.tif 000003
【図２】
2011118587.tif 000004
【図３】
2011118587.tif 000005
【図４】
2011118587.tif 000006
【図５】
2011118587.tif 000007
【図６】
2011118587.tif 000008
【図７】
2011118587.tif 000009
【図８】
2011118587.tif 000010
【図９】
2011118587.tif 000011
【図１０】
2011118587.tif 000012
【図１１】
2011118587.tif 000013
【図１２】
2011118587.tif 000014
【図１３】
2011118587.tif 000015