(57)【特許請求の範囲】
【請求項１】
いずれかのサービスアプリケーションにより実施される２つ以上のサービスを連携させるサービス連携装置であって、
複数のサービスアプリケーションのいずれかに対応し、サービスの連携時に、対応するサービスアプリケーションとの間で変数値を送受信する複数のサービス接続部と、
サービスの連携が開始する前に、サービスの連携手順が示される連携シナリオを解析して、サービスの連携に用いられる変数ごとに、前記複数のサービス接続部の中から、サービスの連携時に変数値を出力する出力サービス接続部と変数値を入力する入力サービス接続部とを指定し、指定した出力サービス接続部と入力サービス接続部とが変数ごとに示される入出力定義情報を生成する定義解析部と、
サービスの連携が開始する前に、前記定義解析部により生成された入出力定義情報を記憶する記憶部と、
サービスの連携時に、前記入出力定義情報に基づき、変数値が保持されるパイプと、出力サービス接続部から変数値を入力してパイプに書き込むパイプ書き込み手段と、パイプから変数値を読み出して入力サービス接続部に出力するパイプ読み出し手段とを、変数ごとに生成するパイプ管理部とを有し、
各サービス接続部は、
サービスの連携時に、対応するサービスアプリケーションから受信した変数値を当該変数値に対応するパイプ書き込み手段に出力し、パイプ読み出し手段から入力した変数値を対応するサービスアプリケーションに送信し、
前記定義解析部は、
前記連携シナリオを解析した結果、いずれかの変数に対して１つの出力サービス接続部と２つ以上の入力サービス接続部とを指定する場合に、当該変数に対して、
出力サービス接続部から入力した変数値を複製して２つ以上の入力サービス接続部への２つ以上のパイプに並行して書き込む複製書込み処理と、
１つのパイプから変数値を読み出し、読み出した変数値を複製し、変数値を当該パイプの入力サービス接続部に出力するとともに他の入力サービス接続部へのパイプに書き込む読出し複製処理とのいずれかを指定し、
当該変数に対して複製書込み処理及び読出し複製処理のいずれかが示される入出力定義情報を生成し、
前記パイプ管理部は、
複製書込み処理及び読出し複製処理のいずれかが示されている変数に対して、１つのパイプ書き込み手段を生成するとともに、入力サービス接続部ごとにパイプとパイプ読み出し手段とを生成し、
複製書込み処理が示されている変数に対しては、生成したパイプ書き込み手段に複製書込み処理を実行させ、
読出し複製処理が示されている変数に対しては、生成したパイプ読出し手段に読出し複製処理を実行させることを特徴とするサービス連携装置。
【請求項２】
前記定義解析部は、
前記連携シナリオを解析した結果、いずれかの変数について、当該変数の変数値を入力するサービス接続部が存在しない場合に、
当該変数に対して、入力サービス接続部を指定せずに出力サービス接続部のみを指定し、更に、出力サービス接続部から当該変数の変数値を入力するとともに、入力した当該変数の変数値を削除する削除処理を指定し、
当該変数に対して出力サービス接続部と削除処理とが示される入出力定義情報を生成し、
前記パイプ管理部は、
削除処理が示されている変数に対して、１つのパイプ書き込み手段を生成するとともに、生成したパイプ書き込み手段に削除処理を実行させることを特徴とする請求項１に記載のサービス連携装置。
【請求項３】
前記サービス連携装置は、更に、
サービスを利用するサービス利用システムから、サービスの提供を要求するサービス提供要求を受信するサービス提供要求受信部を有し、
前記定義解析部は、
前記サービス提供要求受信部がサービス提供要求を受信する度に、サービス提供要求に基づいて行われるサービスの連携が開始する前に、
前記連携シナリオを解析して、前記サービス提供要求に基づいて行われるサービスの連携に用いられる変数ごとに、出力サービス接続部と入力サービス接続部とを指定し、指定した出力サービス接続部と入力サービス接続部とが変数ごとに示される入出力定義情報を生成することを特徴とする請求項１又は２に記載のサービス連携装置。
【請求項４】
各サービス接続部は、
対応するサービスアプリケーションから変数値が含まれるレスポンスデータストリームを受信し、受信したレスポンスデータストリームを、レスポンスデータストリームに含まれる変数値に対応するパイプ書き込み手段に出力し、
前記パイプ管理部は、
出力サービス接続部から入力したレスポンスデータストリームから該当する変数値を抽出し、抽出した変数値をパイプに書き込むパイプ書き込み手段を、変数ごとに生成することを特徴とする請求項１〜３のいずれかに記載のサービス連携装置。
【請求項５】
前記パイプ管理部は、
出力サービス接続部から入力したレスポンスデータストリームから該当する変数値を抽出し、抽出した変数値が含まれるＥＳＢ（Ｅｎｔｅｒｐｒｉｓｅ  ｓｅｒｖｉｃｅ  ｂｕｓ）のメッセージをメモリに書き込む機能を併有するパイプ書き込み手段を、変数ごとに生成し、
メモリからＥＳＢのメッセージを読み出し、読み出したＥＳＢのメッセージから該当する変数値を抽出し、抽出した変数値を入力サービス接続部に出力する機能を併有するパイプ読み出し手段を、変数ごとに生成することを特徴とする請求項４に記載のサービス連携装置。
【請求項６】
前記パイプ管理部は、
出力サービス接続部からのレスポンスデータストリームに含まれる該当する変数値のデータサイズが所定の閾値未満であれば、出力サービス接続部から入力したレスポンスデータストリームから該当する変数値を抽出し、抽出した変数値が含まれるＥＳＢのメッセージをメモリに書き込むパイプ書き込み手段を、生成し、
出力サービス接続部からのレスポンスデータストリームに含まれる該当する変数値のデータサイズが閾値以上であれば、出力サービス接続部から入力したレスポンスデータストリームから該当する変数値を抽出し、抽出した変数値をパイプに書き込むパイプ書き込み手段を、生成することを特徴とする請求項５に記載のサービス連携装置。
【請求項７】
複数のサービスアプリケーションのいずれかに対応し、サービスの連携時に、対応するサービスアプリケーションとの間で変数値を送受信する複数のサービス接続部を有するコンピュータが、
いずれかのサービスアプリケーションにより実施される２つ以上のサービスを連携させるサービス連携方法であって、
サービスの連携が開始する前に、前記コンピュータが、サービスの連携手順が示される連携シナリオを解析して、サービスの連携に用いられる変数ごとに、前記複数のサービス接続部の中から、サービスの連携時に変数値を出力する出力サービス接続部と変数値を入力する入力サービス接続部とを指定し、指定した出力サービス接続部と入力サービス接続部とが変数ごとに示される入出力定義情報を生成する定義解析ステップと、
サービスの連携が開始する前に、前記コンピュータが、前記定義解析ステップにより生成された入出力定義情報を記憶する記憶ステップと、
サービスの連携時に、前記コンピュータが、前記入出力定義情報に基づき、変数値が保持されるパイプと、出力サービス接続部から変数値を入力してパイプに書き込むパイプ書き込み手段と、パイプから変数値を読み出して入力サービス接続部に出力するパイプ読み出し手段とを、変数ごとに生成するパイプ管理ステップとを有し、
各サービス接続部は、
サービスの連携時に、対応するサービスアプリケーションから受信した変数値を当該変数値に対応するパイプ書き込み手段に出力し、パイプ読み出し手段から入力した変数値を対応するサービスアプリケーションに送信し、
前記定義解析ステップでは、
前記連携シナリオを解析した結果、いずれかの変数に対して１つの出力サービス接続部と２つ以上の入力サービス接続部とを指定する場合に、前記コンピュータは、当該変数に対して、
出力サービス接続部から入力した変数値を複製して２つ以上の入力サービス接続部への２つ以上のパイプに並行して書き込む複製書込み処理と、
１つのパイプから変数値を読み出し、読み出した変数値を複製し、変数値を当該パイプの入力サービス接続部に出力するとともに他の入力サービス接続部へのパイプに書き込む読出し複製処理とのいずれかを指定し、
当該変数に対して複製書込み処理及び読出し複製処理のいずれかが示される入出力定義情報を生成し、
前記パイプ管理ステップでは、
前記コンピュータは、
複製書込み処理及び読出し複製処理のいずれかが示されている変数に対して、１つのパイプ書き込み手段を生成するとともに、入力サービス接続部ごとにパイプとパイプ読み出し手段とを生成し、
複製書込み処理が示されている変数に対しては、生成したパイプ書き込み手段に複製書込み処理を実行させ、
読出し複製処理が示されている変数に対しては、生成したパイプ読出し手段に読出し複製処理を実行させることを特徴とするサービス連携方法。
【請求項８】
複数のサービスアプリケーションのいずれかに対応し、サービスの連携時に、対応するサービスアプリケーションとの間で変数値を送受信する複数のサービス接続部を有し、
いずれかのサービスアプリケーションにより実施される２つ以上のサービスを連携させるコンピュータに、
サービスの連携が開始する前に、サービスの連携手順が示される連携シナリオを解析して、サービスの連携に用いられる変数ごとに、前記複数のサービス接続部の中から、サービスの連携時に変数値を出力する出力サービス接続部と変数値を入力する入力サービス接続部とを指定し、指定した出力サービス接続部と入力サービス接続部とが変数ごとに示される入出力定義情報を生成する定義解析ステップと、
サービスの連携が開始する前に、前記定義解析ステップにより生成された入出力定義情報を記憶する記憶ステップと、
サービスの連携時に、前記入出力定義情報に基づき、変数値が保持されるパイプと、出力サービス接続部から変数値を入力してパイプに書き込むパイプ書き込み手段と、パイプから変数値を読み出して入力サービス接続部に出力するパイプ読み出し手段とを、変数ごとに生成するパイプ管理ステップとを実行させ、
各サービス接続部は、
サービスの連携時に、対応するサービスアプリケーションから受信した変数値を当該変数値に対応するパイプ書き込み手段に出力し、パイプ読み出し手段から入力した変数値を対応するサービスアプリケーションに送信し、
前記定義解析ステップでは、
前記連携シナリオを解析した結果、いずれかの変数に対して１つの出力サービス接続部と２つ以上の入力サービス接続部とを指定する場合に、前記コンピュータに、当該変数に対して、
出力サービス接続部から入力した変数値を複製して２つ以上の入力サービス接続部への２つ以上のパイプに並行して書き込む複製書込み処理と、
１つのパイプから変数値を読み出し、読み出した変数値を複製し、変数値を当該パイプの入力サービス接続部に出力するとともに他の入力サービス接続部へのパイプに書き込む読出し複製処理とのいずれかを指定させ、
当該変数に対して複製書込み処理及び読出し複製処理のいずれかが示される入出力定義情報を生成させ、
前記パイプ管理ステップでは、
前記コンピュータに、
複製書込み処理及び読出し複製処理のいずれかが示されている変数に対して、１つのパイプ書き込み手段を生成させるとともに、入力サービス接続部ごとにパイプとパイプ読み出し手段とを生成させ、
複製書込み処理が示されている変数に対しては、生成されたパイプ書き込み手段により複製書込み処理を実行させ、
読出し複製処理が示されている変数に対しては、生成されたパイプ読出し手段により読出し複製処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つ以上のサービスを連携させるサービス連携装置等に関する。
【背景技術】
【０００２】
複数のシステムのデータや機能を利用して新しい機能を作成する方法としては、ＳＯＡ（Ｓｅｒｖｉｃｅ  Ｏｒｉｅｎｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ：サービス指向アーキテクチャ）のように、それぞれのシステムのデータや機能をＷｅｂサービスのようなサービスとして公開し、公開されたサービスを順次起動するという方法がある。
このとき、順次起動したサービスを連携させるために、先に起動したサービスの出力を次に起動するサービスの入力にするという処理が行われる。
【０００３】
従来のＥＳＢ（Ｅｎｔｅｒｐｒｉｓｅ  Ｓｅｒｖｉｃｅ  Ｂｕｓ）というサービス連携を行うミドルウェアでは、サービスの起動をメッセージのフローによって制御しており、サービスで入出力されるデータはそのメッセージによって運ばれている（例えば、非特許文献１の第１５ページ  「４．４  Ｎｏｒｍａｌｉｚｅｄ  Ｍｅｓｓａｇｅ  Ｅｘｃｈａｎｇｅ」を参照）。
サービスを連携させる場合は、ＥＳＢは先に起動されたサービスの出力データをメッセージに格納する。
次に、ＥＳＢはメッセージからデータを取り出し、後に起動するサービスへの入力とする。
ＥＳＢはこれを繰り返すことでサービス連携を行う。
【０００４】
また、サービスの呼出しは通信によって行われることが多く、通信をデータストリームと見なした場合、データストリームを連携させるという方法も提案されている（例えば、特許文献１）。
特許文献１では、あるデータストリームから取得できるデータをパイプ（特許文献１ではキューとして記載されている）に溜め込み、パイプに溜め込まれたデータをリレーショナルデータベースの表と見なして、そこからデータを抽出（ＳＥＬＥＣＴ）する。
抽出したデータは、文字コードの変換や、別の表との結合などを行いながら、仮想的な表に格納する。
この仮想的な表に格納されたデータを別のサービスの入力となるストリームに書き出すことでサービス連携が行われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１３９８９号公報
【非特許文献】
【０００６】
【非特許文献１】Ｊａｖａ  Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｇｒａｔｉｏｎ  １．０（Ｊａｖａは登録商標）  ＜ｈｔｔｐ：／／ｊｃｐ．ｏｒｇ／ａｂｏｕｔＪａｖａ／ｃｏｍｍｕｎｉｔｙｐｒｏｃｅｓｓ／ｆｉｎａｌ／ｊｓｒ２０８／ｉｎｄｅｘ．ｈｔｍｌ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１に記載の従来のＥＳＢでは、サービスとの入出力で使用するデータが大量になった場合に、以下のような課題がある。
【０００８】
１）サービスの入出力データをメッセージに格納したり、取り出したりする処理がボトルネックになるという課題がある。
メッセージにデータを格納する方式では、あるサービスから出力されたデータをメッセージに格納する処理や、格納されたデータを取り出す処理が終了しなければ、次のサービスを起動することが出来ない。
そのため、データが大量にある場合などは、複数のサービスを連携させる処理の中で、データをメッセージに格納したり、取り出したりする処理がボトルネックとなる可能性がある。
特に、サービスをそれぞれ外部の計算機で実行しているような場合、メッセージにデータを格納したりする処理の間は、計算機が待ち状態となってしまう。
【０００９】
２）メッセージは実質的にメモリ上に格納されているため、メッセージ上にデータを格納するということはサービスの出力（メッセージの全体）を一度にメモリに格納することになり、メモリを大量に消費する可能性がある。
【００１０】
これに対して特許文献１に書かれているストリーム統合のように、データストリームから取得されたデータを随時、連携先のデータストリームに書きだすという方法を採った場合、非特許文献１の２つの課題は解決される。
しかし、この場合でも、以下のような課題がある。
【００１１】
１つのデータストリームから取得されたデータを単純にパイプに溜めておく方法では、複数のデータストリームに書くことが出来ないという課題がある。
通常のパイプでは読み取ったデータは、読み取った時点で捨てられてしまうため、同一のデータを複数のサービスで使用するようなサービス連携が実現できない。
パイプからデータを読み取る際にデータを捨てないようにすることも考えられるが、そのようにした場合、パイプに溜められたデータを捨てるタイミングについて制御を行う必要がある。
【００１２】
この発明は上記のような課題を解決することを主な目的としており、パイプを使用してサービス連携を行う場合に、複数のサービスに対しても同じデータを利用できるようにすることを主な目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るサービス連携装置は、
いずれかのサービスアプリケーションにより実施される２つ以上のサービスを連携させるサービス連携装置であって、
複数のサービスアプリケーションのいずれかに対応し、サービスの連携時に、対応するサービスアプリケーションとの間で変数値を送受信する複数のサービス接続部と、
サービスの連携が開始する前に、サービスの連携手順が示される連携シナリオを解析して、サービスの連携に用いられる変数ごとに、前記複数のサービス接続部の中から、サービスの連携時に変数値を出力する出力サービス接続部と変数値を入力する入力サービス接続部とを指定し、指定した出力サービス接続部と入力サービス接続部とが変数ごとに示される入出力定義情報を生成する定義解析部と、
サービスの連携が開始する前に、前記定義解析部により生成された入出力定義情報を記憶する記憶部と、
サービスの連携時に、前記入出力定義情報に基づき、変数値が保持されるパイプと、出力サービス接続部から変数値を入力してパイプに書き込むパイプ書き込み手段と、パイプから変数値を読み出して入力サービス接続部に出力するパイプ読み出し手段とを、変数ごとに生成するパイプ管理部とを有し、
各サービス接続部は、
サービスの連携時に、対応するサービスアプリケーションから受信した変数値を当該変数値に対応するパイプ書き込み手段に出力し、パイプ読み出し手段から入力した変数値を対応するサービスアプリケーションに送信し、
前記定義解析部は、
前記連携シナリオを解析した結果、いずれかの変数に対して１つの出力サービス接続部と２つ以上の入力サービス接続部とを指定する場合に、当該変数に対して、
出力サービス接続部から入力した変数値を複製して２つ以上の入力サービス接続部への２つ以上のパイプに並行して書き込む複製書込み処理と、
１つのパイプから変数値を読み出し、読み出した変数値を複製し、変数値を当該パイプの入力サービス接続部に出力するとともに他の入力サービス接続部へのパイプに書き込む読出し複製処理とのいずれかを指定し、
当該変数に対して複製書込み処理及び読出し複製処理のいずれかが示される入出力定義情報を生成し、
前記パイプ管理部は、
複製書込み処理及び読出し複製処理のいずれかが示されている変数に対して、１つのパイプ書き込み手段を生成するとともに、入力サービス接続部ごとにパイプとパイプ読み出し手段とを生成し、
複製書込み処理が示されている変数に対しては、生成したパイプ書き込み手段に複製書込み処理を実行させ、
読出し複製処理が示されている変数に対しては、生成したパイプ読出し手段に読出し複製処理を実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、変数値を複製して２つ以上のパイプに並行して書き込む複製書込み処理及び１つのパイプから読み出した変数値を複製して別のパイプに書き込む読み出し複製処理が可能なので、複数のサービスの実行に同じ変数値を利用することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係るシステム構成例を示す図。
【図２】実施の形態１に係るサービス連携装置の構成例を示す図。
【図３】実施の形態１に係るパイプ書き込み手段とパイプ読出し手段の構成例を示す図。
【図４】実施の形態１に係るシナリオ定義例を示す図。
【図５】実施の形態１に係るインターフェース定義例を示す図。
【図６】実施の形態１に係るアクセス経路例を示す図。
【図７】実施の形態１に係るパイプ割り当て定義例を示す図。
【図８】実施の形態１に係るシナリオ定義例の処理フローを示す図。
【図９】実施の形態１に係る解析処理フロー図。
【図１０】実施の形態１に係る処理実行フロー図。
【図１１】実施の形態１に係るサービス接続部の処理フロー図。
【図１２】実施の形態１に係るパイプ書き込み手段とパイプ読出し手段の処理例を示す図。
【図１３】実施の形態１に係るパイプ書き込み手段とパイプ読出し手段の処理例を示す図。
【図１４】実施の形態１に係るパイプ書き込み手段の処理例を示す図。
【図１５】実施の形態２に係るサービス連携装置の構成例を示す図。
【図１６】実施の形態２に係る処理実行フロー図。
【図１７】実施の形態３に係るパイプ書き込み手段とパイプ読出し手段の構成例を示す図。
【図１８】実施の形態３に係るインターフェース定義例を示す図。
【図１９】実施の形態３に係るパイプ割り当て定義例を示す図。
【図２０】実施の形態４に係るサービス連携装置の構成例を示す図。
【図２１】実施の形態４に係るサービス接続部の処理例を示すフロー図。
【図２２】実施の形態１〜６に係るサービス連携装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１６】
実施の形態１．
本実施の形態では、サービスの入出力に使用するデータが大量の場合にも、パイプを使用して随時サービスを実行させながら複数のサービスに対しても同じデータを利用できるようにする構成を説明する。
なお、本明細書におけるパイプとは、ＵＮＩＸ（登録商標）におけるパイプと同様の概念であり、プロセス（またはスレッド）間で変数値を送受信させるために、変数値を保持する手段である。
【００１７】
また、本実施の形態では、パイプを使用してサービスを連携する場合に、後のサービスの処理では使用されないデータはパイプに書き込まないようにして無駄を排除する構成も説明する。
例えば、特許文献１のようにデータストリームの出力が複数の項目（表でのカラム）から構成されている場合、パイプには後の処理では使用されないデータも格納されることがあり、無駄がある。
本実施の形態では、このような後の処理で使用されないデータはパイプに書き込まないようにする。
【００１８】
図１は、実施の形態１に係るシステム構成例を示す図である。
【００１９】
図１において、サービス連携装置１０００は、複数のサービスを連携するための装置である。
サービス連携装置１０００は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やサーバ装置のような計算機上にプログラムを用いて実現されることが多い（例えばＥＳＢ）が、専用の装置であってもかまわない。
【００２０】
サービス連携装置１０００は、サービスを利用するサービス利用システム４０００と接続され、サービス利用システム４０００からサービスの提供を要求するサービス提供要求を受信し、サービス提供要求に基づいて複数のサービスの連携を行う。
【００２１】
また、サービス連携装置１０００は、それぞれサービスを実施するアプリケーションプログラムであるサービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４と通信を行い、複数のサービスを連携する。
サービスアプリケーションＡ２００１により実施されるサービスをサービスＡ、サービスアプリケーションＢ２００２により実施されるサービスをサービスＢ、サービスアプリケーションＣ２００３により実施されるサービスをサービスＣ、サービスアプリケーションＤ２００４により実施されるサービスをサービスＤとよぶ。
サービスＡ〜サービスＤは、サービス利用システム４０００に提供されるサービスである。
なお、サービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４は、それぞれ、コンピュータにより実行される。
つまり、サービス連携装置１０００は、物理的には、サービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４を実現するコンピュータと通信を行って、複数のサービスを連携するが、本明細書では便宜的に、サービス連携装置１０００は、サービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４と通信すると表記する。
【００２２】
サービス連携装置１０００は、サービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４に対してリクエストデータストリームを送信し、リクエストデータストリームの応答であるレスポンスデータストリームをサービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４から受信する。
サービス連携にあたっては、サービス連携装置１０００は、あるサービスアプリケーションからのレスポンスデータストリームに含まれる変数値を他のサービスアプリケーションへのリクエストデータストリームに含ませる場合がある。
この場合に、サービス連携装置１０００は、１つのサービスアプリケーション（例えば、サービスアプリケーションＡ２００１）からのレスポンスデータストリームに含まれる変数値を他の２つ以上のサービスアプリケーション（例えば、サービスアプリケーションＢ２００２とサービスアプリケーションＣ２００３）へのリクエストデータストリームに含ませる場合もある。
【００２３】
図２は、本実施の形態に係るサービス連携装置１０００の内部構成例を示す。
【００２４】
図２において、定義解析部１００１は、シナリオ定義１１０１とインターフェース定義１１０２を解析し、パイプ割り当て定義１１０３を生成する機能である。
【００２５】
シナリオ定義１１０１は、サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１を起動する順番を定義した情報であり、図４はシナリオ定義１１０１の例である。
また、図８は、このシナリオ例の処理フローを表した図である。
図４の例では、サービス接続部Ａ１００８を実行した後に、並列に実行する２つの処理に分かれる。
一つ目の処理はサービス接続部Ｂ１００９を実行する処理であり、もう一つはサービス接続部Ｃ１０１０とサービス接続部Ｄ１０１１を実行する処理である。
なお、後述するように、サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１は、サービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４と通信を行う機能である。
【００２６】
インターフェース定義１１０２は、サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１の入出力を定義したものである。
インターフェース定義１１０２には、サービス接続部間でデータを受け渡すために、サービス接続部で取得する変数とその変数を使用するサービス接続部を記述する。
図５はインターフェース定義１１０２の例である。
図５の例では、サービス接続部Ａ１００８（図５ではｎａと表記）が出力する変数ｐ１の変数値を、サービス接続部Ｂ１００９（図５ではｎｂと表記）が入力することが示され、また、サービス接続部Ａ１００８（ｎａ）が出力する変数ｐ２の変数値を、サービス接続部Ｂ１００９（ｎｂ）とサービス接続部Ｃ１０１０（図５ではｎｃと表記）が入力することが示されている。
また、サービス接続部Ａ１００８（ｎａ）が出力する変数ｐ３の変数値を、サービス接続部Ｃ１０１０（ｎｃ）とサービス接続部Ｄ１０１１（図５ではｎｄと表記）が入力することが示され、また、サービス接続部Ｂ１００９（ｎｂ）が出力する変数ｐ４の変数値はどのサービス接続部でも入力しないことが示されている。
【００２７】
シナリオ定義１１０１とインターフェース定義１１０２では、図４、図５及び図８に示すように、サービスの連携手順が示されており、シナリオ定義１１０１とインターフェース定義１１０２は連携シナリオの例に相当する。
【００２８】
パイプ割り当て定義１１０３は、各サービス接続部で適用するパイプ処理を定義したものである。
パイプ割り当て定義１１０３は、例えば図７に示す情報である。
【００２９】
なお、図７の詳細は後述するが、パイプ割り当て定義１１０３では、サービスの連携に用いられる変数（図７の例では、ｐ１、ｐ２、ｐ３、ｐ４）ごとに、サービスの連携時に変数値を出力する出力サービス接続部（図７の例では、ｎａ（ｐ１〜ｐ３）、ｎｂ（ｐ４））と変数値を入力する入力サービス接続部（図７の例では、ｎｂ（ｐ１）、ｎｂとｎｃ（ｐ２）、ｎｃとｎｄ（ｐ３））とが示されており、パイプ割り当て定義１１０３は入出力定義情報の例に相当する。
【００３０】
パイプ管理部１００２は、パイプ割り当て定義１１０３に基づいてサービス接続部の動作時に必要なパイプ１００６の作成やパイプ書込み手段１００４とパイプ読出し手段１００５の割り当てを行う機能である。
より具体的には、パイプ管理部１００２は、パイプ書込み手段１００４とパイプ読出し手段１００５のスレッド（プロセス）を起動し、また、メモリの所定の領域をパイプ１００６に割り当てる。
【００３１】
サービス公開部１００３は、サービス連携装置１０００がサービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４を連携させて新たに作成した機能を装置の外部から利用できるように、サービス連携装置１０００に対する外部からの処理要求を受け付けるための機能である。
例えば、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）で機能を呼出すＷｅｂサービスなどの形で公開する。
サービス利用システム４０００は、サービス公開部１００３によって公開されたサービスを呼出すことができる。
サービス公開部１００３は、サービス利用システム４０００からの処理要求（サービス提供要求）を受け付けると、ＥＳＢのメッセージをシナリオ制御部１００７に送信する。
サービス公開部１００３は、サービス提供要求受信部の例に相当する。
【００３２】
シナリオ制御部１００７は、シナリオ定義１１０１にもとづいて、サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１にＥＳＢのメッセージを送信する機能である。
【００３３】
サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１は、サービスアプリケーションＡ２００１〜サービスアプリケーションＤ２００４に対応し、対応するサービスアプリケーションにおけるサービスの呼出し処理を行う。
サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１は、シナリオ制御部１００７からＥＳＢのメッセージを受信することで動作する。
サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１は、サービスアプリケーションを呼出す前に、パイプ管理部１００２からサービスアプリケーションに入力するデータを取得するためのパイプ読出し手段１００５への参照と、サービスアプリケーションからの出力を格納するためのパイプ書込み手段１００４への参照を取得する。
そして、サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１は、パイプ１００６への変数値の入出力を行いながら、対応するサービスアプリケーションとの間で変数値を含むリクエストデータストリームとレスポンスデータストリームを送受信する。
なお、図１では、例としてサービス接続部とサービスをそれぞれ４個としているが、実際にはサービスは１個以上あればよく、４個に限定されるものではない。
【００３４】
リクエストデータストリームＡ３００１〜リクエストデータストリームＤ３００４とレスポンスデータストリームＡ３１０１〜レスポンスデータストリームＤ３１０４は、それぞれサービスアプリケーションへの入力のデータとサービスアプリケーションから出力されたデータを表す。
【００３５】
ここで、サービスアプリケーションにより提供されるサービスとは、ＷｅｂサービスやＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）のような通信によって利用できる機能や、ファイルシステムのような計算機上の機能であり、データストリームはサービス接続部がサービスを利用する際に作成される。
例えば、Ｗｅｂサービスの場合は、サービス接続部はサービスアプリケーションとの間にＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のコネクションを確立し、ＨＴＴＰリクエストを送信し、サービスアプリケーションからのＨＴＴＰレスポンスを取得する。
これらのＨＴＴＰリクエストとＨＴＴＰレスポンスが、それぞれリクエストデータストリームとレスポンスデータストリームに該当する。
また、例えばサービスアプリケーションがファイルシステムであり、サービスアプリケーションで実行する動作がファイルを作成し、シーケンシャルにデータを書込むことである場合を考える。
このとき、サービス接続部はｆｏｐｅｎなどのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）によりファイルを開き、ファイルシステムに対してシーケンシャルにデータを渡す。
このときファイルに書込むデータがリクエストデータストリームにあたる。
また、この場合はファイルからデータを取得することは無いので、レスポンスデータストリームの中にはデータが存在しない。
【００３６】
パイプ１００６は、サービス接続部によって取得されたデータ（変数値）を別のサービス接続部に渡すために使用するデータ（変数値）の入れ物（通信路）である。
パイプ書込み手段１００４は、サービス接続部によって取得されたデータ（変数値）をパイプ１００６に書込む処理を行う機能であり、パイプ読出し手段１００５は、パイプに書込まれているデータ（変数値）をサービス接続部で使用するためにパイプからデータ（変数値）を読み出す機能である。
【００３７】
図３は、パイプ書込み手段１００４、パイプ１００６、パイプ読出し手段１００５の詳細な構成を示す図である。
【００３８】
パイプ書込み手段１００４は、書込みデータコピー機能１００４１と読捨て機能１００４２を持つ。
書込みデータコピー機能１００４１は、同一のデータ（変数値）を複数のパイプ読出し手段１００５で使用できるように、データ（変数値）をコピーして複数のパイプ１００６に同じデータ（変数値）を書込む機能である。
読捨て機能１００４２は、パイプ読出し手段１００５によって使用されないデータ（変数値）をパイプ１００６に書込まずに、捨てるための機能である。
パイプ読出し手段１００５は、読出しデータコピー機能１００５１を持つ。
読出しデータコピー機能１００５１は、一度読み取ったデータを再度パイプ読出し手段１００５で使用できるように、読み取ったデータをコピーし、パイプ１００６に書き込む機能である。
【００３９】
パイプ書込み手段１００４、パイプ１００６、パイプ読出し手段１００５は、各変数について、変数値のアクセス経路ごとに生成される。
例えば、図７のパイプ割り当て定義１１０３の符号７０１１〜７０１３では、変数ｐ２の変数値について、サービス接続部Ａ１００８（ｎａ）からサービス接続部Ｂ１００９（ｎｂ）へのアクセス経路と、サービス接続部Ａ１００８（ｎａ）からサービス接続部Ｃ１０１０（ｎｃ）へのアクセス経路が示されている。
そして、符号７０１１〜７０１３の記述を実行する場合は、パイプ書込み手段１００４として、サービス接続部Ａ１００８（ｎａ）から変数ｐ２の変数値を入力し、パイプ１００６に変数値を書き込むパイプ書込み手段１００４ａが生成される。
また、パイプ１００６として、サービス接続部Ｂ１００９（ｎｂ）へ変数値を伝達するためのパイプ１００６ｂと、サービス接続部Ｃ１０１０（ｎｃ）へ変数値を伝達するためのパイプ１００６ｃが生成される。
また、パイプ読出し手段１００５として、パイプ１００６ｂから変数値を読み出してサービス接続部Ｂ１００９（ｎｂ）に変数値を出力するパイプ読出し手段１００５ｂと、パイプ１００６ｃから変数値を読み出してサービス接続部Ｃ１０１０（ｎｃ）に変数値を出力するパイプ読出し手段１００５ｃが生成される。
なお、以降、パイプ書込み手段１００４、パイプ１００６、パイプ読出し手段１００５の末尾に付記されるａ〜ｄは、サービス接続部Ａ１００８〜サービス接続部Ｄ１０１１を意味するものとする。
【００４０】
記憶部１０２０は、シナリオ定義１１０１、インターフェース定義１１０２及びパイプ割り当て定義１１０３を記憶する。
【００４１】
次に、動作について説明する。
実施の形態１の動作は２段階の処理に分かれる。
１つ目の処理は、インターフェース定義１１０２とシナリオ定義１１０１を解析し、パイプ割り当て定義１１０３を作成する解析処理である。
２つ目の処理は、パイプ割り当て定義１１０３を使用しながらサービス利用システム４０００からの要求にしたがって、サービスを実行する実行処理である。
【００４２】
図９に基づいて解析処理について説明する。
【００４３】
解析開始Ｓ０００１は、解析処理の開始を表す。
変数アクセスの競合判定Ｓ０００２では、定義解析部１００１が、インターフェース定義１１０２とシナリオ定義１１０１を解析し、変数へのアクセスについての競合判定を行う。
例えば、フォークにより分割された先のそれぞれの処理で同じ変数を更新している場合に競合ありとなる。
競合がある場合は、解析失敗として解析失敗Ｓ０００６に移行する。
競合がない場合は、変数アクセス経路の作成Ｓ０００３に移行する。
変数アクセス経路の出力Ｓ０００３では、定義解析部１００１は、変数ごとに何処で値を更新し、何処でその値を使用するかを解析し図６のようなアクセス経路を出力する。
【００４４】
図６のアクセス経路は、図４のシナリオ定義１１０１と図５のインターフェース定義１１０２に基づいて生成されたものである。
図６の例では、変数ｐ１の変数値は、サービス接続部Ａ１００８（図６ではｎａと表記）から出力され、サービス接続部Ｂ１００９（図６ではｎｂと表記）に入力されるのみであるため、パス（アクセス経路）は１つである。
一方、変数ｐ２の変数値は、サービス接続部Ａ１００８（ｎａ）から出力され、サービス接続部Ｂ１００９（ｎｂ）とサービス接続部Ｃ１０１０（図６ではｎｃと表記）に入力されるので、パス（アクセス経路）は２つとなる。
同様に、変数ｐ３の変数値は、サービス接続部Ａ１００８（ｎａ）から出力され、サービス接続部Ｃ１０１０（ｎｃ）とサービス接続部Ｄ１０１１（図６ではｎｄと表記）に入力されるので、パス（アクセス経路）は２つとなる。
また、変数ｐ４の変数値は、サービス接続部Ｂ１００９（ｎｂ）から出力されるが、どのサービス接続部にも入力されないことから、パス（アクセス経路）は１つである。
【００４５】
次のパイプ割り当て定義の出力Ｓ０００４では、アクセス経路をもとに図７のようなパイプ割り当て定義１１０３を生成し、生成したパイプ割り当て定義１１０３を記憶部１０２０に出力し、記憶部１０２０にパイプ割り当て定義１１０３を記憶させる。
パイプ割り当て定義１１０３は、変数を読み書きするパイプをどのノードでどのように使用するかの定義である。
パイプ割り当て定義１１０３の出力によって解析終了Ｓ０００５となる。
【００４６】
なお、図９に例示した解析処理は、サービス連携装置１０００の起動時などのように、サービス公開部１００３がサービス利用システム４０００から呼出されるようになる前に実行しておく。
【００４７】
次に、図１０に基づいて実行処理について説明する。
【００４８】
ＳＴＡＲＴ  Ｓ１００１は処理の開始を表す。
要求受付Ｓ１００２では、サービス公開部１００３が、サービス利用システム４０００からのサービス提供要求を受け付ける。
サービス公開部１００３は、サービス提供要求を受け付けるとシナリオ制御部１００７に対してサービスの実行要求を行う。
【００４９】
シナリオ制御Ｓ１００３では、サービスの実行要求を受け付けたシナリオ制御部１００７が、シナリオ定義１１０１に基づいて、実行するサービスに対応したサービス接続部を呼出す。
サービス処理Ｓ１００４では、呼出されたサービス接続部が外部のサービスアプリケーションと通信を行ってサービスを実行させる。サービス処理Ｓ１００４の詳細は後述する。
サービス接続部からシナリオ制御部１００７に応答が返るとシナリオ終了判定Ｓ１００５で、シナリオ制御部１００７はシナリオ定義１１０１に定義されたサービスを全て実行したかが判定される。
まだ実行していないサービスが残っている場合には、シナリオ制御Ｓ１００３に戻りサービスを実行する。
全てのサービスを実行している場合は、次のサービス終了待ちＳ１００６にて全てのサービスが終了するまで待機する。
サービスの終了後は、要求回答Ｓ１００７にてサービス公開部１００３はサービス利用システム４０００に対して実行結果の回答を返し、処理の終了であるＥＮＤ  Ｓ１００８に移行する。
なお、サービス利用システム４０００がサービス提供要求を出す場合に、非同期的な動作を行うこともでき、その場合は要求回答Ｓ１００７が実行されず、処理結果をサービス利用システム４０００に通知しない。
【００５０】
サービス処理Ｓ１００４の処理フローを説明する前に、サービス処理の中で使用するパイプ書込み手段１００４、パイプ１００６、パイプ読出し手段１００５の動作について説明する。
【００５１】
図１２〜１４は、パイプ書込み手段１００４、パイプ１００６、パイプ読出し手段１００５の処理を示す図である。
通常、パイプ１００６に書込まれた変数値は、読み取られることによって廃棄される。
しかし、サービスの実行順序によっては、パイプ１００６に書込まれた変数値を複数のサービス接続部で使用する場合がある。
そこで、同じ変数値を複数のサービス接続部で読み取る必要がある場合、パイプ書込み手段１００４やパイプ読出し手段１００５によって、複数箇所で同じ変数値を使用できるように、変数値の複製処理を行う。
同じ変数値を複数個所で読み取る場合の読み取り方は２つあり、１つはフォークによって複数のサービス接続部で同時に変数値が使用される場合であり、もう１つは変数値の読み取りを行った箇所よりも後の箇所で再度変数値を使用している場合である。
【００５２】
前者に対しては、図１２のように、パイプ書込み手段１００４内の書込みデータコピー機能１００４１が同じ変数値を複数のパイプ１００６に対して書き込むことで変数の複製処理を行う（複製書込み処理）。
後者に対しては、図１３のようにパイプ読出し手段１００５内の読出しデータコピー機能１００５１が、読み取った変数値を再度別のパイプ１００６に対して書き込むことで変数値の複製処理を行う（読み出し複製処理）。
【００５３】
図１２は、図７のパイプ割り当て定義１１０３の符号７０１１〜７０１３の記述を実行している状態を示している。
つまり、図７のパイプ割り当て定義１１０３では、符号７０１１〜７０１３において変数ｐ２に対して複製書込み処理が記述されている。
そして、符号７０１１〜７０１３の記述を実行すると、サービス接続部Ａ１００８（ｎａ）に対応するパイプ書込み手段１００４ａが、サービス接続部Ａ１００８（ｎａ）から変数ｐ２の変数値を入力し、変数ｐ２の変数値を複製し、２つの同じ変数値をサービス接続部Ｂ１００９（ｎｂ）へのパイプ１００６ｂとサービス接続部Ｃ１０１０（ｎｃ）へのパイプ１００６ｃに書き込む。
更に、サービス接続部Ｂ１００９（ｎｂ）に対応するパイプ読出し手段１００５ｂがパイプ１００６ｂから変数ｐ２の変数値を読み出し、サービス接続部Ｂ１００９（ｎｂ）に出力すること、サービス接続部Ｃ１０１０（ｎｃ）に対応するパイプ読出し手段１００５ｃがパイプ１００６ｃから変数ｐ２の変数値を読み出し、サービス接続部Ｃ１０１０（ｎｃ）に出力する。
【００５４】
また、図１３は、図７のパイプ割り当て定義１１０３の符号７０２１〜７０２３の記述を実行している状態を示している。
つまり、図７のパイプ割り当て定義１１０３では、符号７０２１〜７０２３において変数ｐ３に対して読み出し複製処理が記述されている。
そして、符号７０２１〜７０２３の記述を実行すると、サービス接続部Ａ１００８（ｎａ）に対応するパイプ書込み手段１００４ａが、サービス接続部Ａ１００８（ｎａ）から変数ｐ３の変数値を入力し、入力した変数値をサービス接続部Ｃ１０１０（ｎｃ）へのパイプ１００６ｃに書き込む。
更に、サービス接続部Ｃ１０１０（ｎｃ）に対応するパイプ読出し手段１００５ｃがパイプ１００６ｃから変数ｐ３の変数値を読み出し、読み出した変数ｐ３の変数値を複製し、一方の変数値をサービス接続部Ｃ１０１０（ｎｃ）に出力するとともに、他方の変数値をサービス接続部Ｄ１０１１（ｎｄ）へのパイプ１００６ｄに書き込み、サービス接続部Ｄ１０１１（ｎｄ）に対応するパイプ読出し手段１００５ｄがパイプ１００６ｄから変数ｐ３の変数値を読み出し、サービス接続部Ｄ１０１１（ｎｄ）に出力する。
【００５５】
また、サービス接続部が取得した変数値が以降の処理で使用されない場合、変数値をパイプ１００６に書込むことは無駄である。
そのような場合は、図１４のようにパイプ書込み手段１００４内の読み捨て機能１００４２が、パイプ１００６に変数値を書き込まずに変数値の読み捨てを行う（削除処理）。
【００５６】
図１４は、図７のパイプ割り当て定義１１０３の符号７０３１の記述を実行している状態を示している。
つまり、図７のパイプ割り当て定義１１０３では、符号７０３１において変数４に対して削除処理が記述されている。
そして、符号７０３１の記述を実行すると、サービス接続部Ｂ１００９（ｎｂ）に対応するパイプ書込み手段１００４ｂが、サービス接続部Ｂ１００９（ｎｂ）から変数ｐ４の変数値を入力するが、パイプ書込み手段１００４ｂにおいて変数値を読み捨てる。
【００５７】
このように、パイプ書込み手段１００４とパイプ読出し手段１００５がどのような処理を行うかは、パイプ割り当て定義１１０３に従って、パイプ管理部１００２が制御する。
【００５８】
次に、図１１に基づいて実行処理の中のサービス処理について説明する。
【００５９】
Ｓ２００１は、サービス処理の開始を表し、シナリオ制御部１００７からサービス接続部の呼出しが行われることで処理が開始される。
【００６０】
パイプ書込み手段とパイプ読出し手段への参照の取得Ｓ２００２では、呼出されたサービス接続部が、パイプ管理部１００２に対してパイプ読出し手段１００５とパイプ書込み手段１００４への参照を要求する。
要求を受けたパイプ管理部１００２は、パイプ割り当て定義１１０３に基づいて、パイプ読出し手段１００５に関しては既に作成されているパイプ読出し手段１００５の参照を、パイプ書込み手段１００４に関しては、パイプ書込み手段１００４、パイプ読出し手段１００５の組を新たに作成し、その中のパイプ書込み手段１００４の参照をサービス接続部に返す。
つまり、サービス接続部が変数値を出力する場合には、サービス接続部はパイプ管理部１００２にパイプ書込み手段１００４の参照を要求し、パイプ管理部１００２は、パイプ割り当て定義１１０３に基づいて、パイプ書込み手段１００４、パイプ読出し手段１００５を生成し、生成したパイプ書込み手段１００４への参照（例えば、ポインタ）をサービス接続部に返す。
例えば、サービス接続部Ａ１００８（ｎａ）が変数ｐ２の変数値を出力する場合は、パイプ管理部１００２は、図７のパイプ割り当て定義１１０３の符号７０１１〜７０１３の記述に基づき、図１２に示すように、サービス接続部Ａ１００８（ｎａ）に対応するパイプ書込み手段１００４ａと、サービス接続部Ｂ１００９（ｎｂ）に対応するパイプ読出し手段１００５ｂと、サービス接続部Ｃ１０１０（ｎｃ）に対応するパイプ読出し手段１００５ｃの組を新たに作成し、サービス接続部Ａ１００８（ｎａ）に、パイプ書込み手段１００４ａへの参照を通知する。
なお、パイプ１００６ｂ、１００６ｃは、このときにパイプ管理部１００２が作成しておいてもよいし、パイプ書込み手段１００４ａが実際に変数値をパイプに書き込む際に作成してもよい。
パイプ１００６を生成する際には、パイプ管理部１００２は、所定のメモリ領域を、生成するパイプ１００６に割り当てる。
また、サービス接続部が変数値を入力する場合、例えば、サービス接続部Ｂ１００９（ｎｂ）が変数ｐ２の変数値を入力する場合には、サービス接続部Ｂ１００９（ｎｂ）はパイプ管理部１００２にパイプ読出し手段１００５への参照を要求し、パイプ管理部１００２は、既に作成されているパイプ読出し手段１００５ｂへの参照をサービス接続部Ｂ１００９（ｎｂ）に通知する。
【００６１】
リクエストデータストリームの作成Ｓ２００３では、パイプ読出し手段１００５への参照を取得したサービス接続部が、サービスを利用するためのリクエストデータストリームを作成する。
つまり、サービス接続部は、リクエストデータストリームの構成要素のうち変数値以外の部分を生成する。
【００６２】
リクエストデータストリームのパイプ読出し手段への割当てＳ２００４では、サービス接続部は、スレッド（もしくはプロセス）を起動し、作成したスレッドに対して、パイプ読出し手段１００５からリクエストに使用するデータ（変数値）を取得して、リクエストデータストリームにリクエストを書込む処理を割り当てる。
そして、サービス接続部は、変数値が書き込まれたリクエストデータストリームを、対応するサービスアプリケーションに送信する。
【００６３】
レスポンスデータストリームの作成Ｓ２００５では、サービスアプリケーションからの応答を取得するためのレスポンスデータストリームが作成される。
レスポンスデータストリームは、通信プロトコルによって、サービス接続部が生成する場合とサービスアプリケーションが生成する場合がある。
【００６４】
レスポンスデータストリームのパイプ書込み手段への割当てＳ２００６では、サービス接続部はスレッド（もしくはプロセス）を起動し、作成したスレッドに対して、レスポンスデータストリームからレスポンスデータ（変数値）を取得して、パイプ書込み手段１００４にレスポンスデータ（変数値）を書込む処理を割り当てる。
ここで、書き込み先となるパイプ書込み手段１００４は、Ｓ２００２で参照を取得したパイプ書込み手段１００４である。
【００６５】
ＥＮＤ  Ｓ２００７では、サービス接続部がシナリオ制御部１００７に制御を返す。
【００６６】
以上のように、実施の形態１によればパイプ管理部１００２がパイプ割り当て定義１１０３に従って、パイプ書込み手段１００４とパイプ読出し手段１００５での変数のコピーを制御することで、データの削除を制御することなく複数のサービスで同じデータを使用することが出来るようになる。
また、パイプに無駄なデータが書込まれるのを防ぐことが出来るようになる。
また、外部で実行されるサービスの種類が追加された場合に、追加されたサービスに応じて、新たにサービス接続部を作成する必要があるが、データのコピー処理を、パイプ書込み手段１００４とパイプ読出し手段１００５で行うようにしたので、コピー処理部分を作りなおす必要がなくなる。
さらに、パイプ割り当て定義１１０３を生成する定義解析部１００１を設けたことで、設計者がパイプ割り当て定義１１０３を直接作成する必要が無くなり設計者の手間を減らすことが出来る。
【００６７】
本実施の形態では、以下の機能を持つサービス連携装置を説明した。
サービス連携装置がサービス公開部を使用してサービスを公開する前に、サービスのＩ／Ｆ定義とサービスの実行順番の書かれたシナリオ定義を解析し、各サービスの実行で必要となるパイプを決定するためのパイプ割り当て定義を作成する定義解析部、
パイプ割り当て定義に従って、パイプ書込み手段、パイプ、パイプ読出し手段を作成するパイプ管理部、
パイプ書込み手段、パイプ、パイプ読出し手段を使用してサービスを実行するサービス接続部。
【００６８】
実施の形態２．
図１５は、実施の形態２に係るサービス連携装置１０００の内部構成例を示す図である。
実施の形態２では、実施の形態１に加えて定義更新部１０１２を設けている。
定義更新部１０１２は、定義解析部１００１を呼出してパイプ割り当て定義１１０３を作成し直すための機能であり、サービス公開部１００３がサービス利用システム４０００から呼出されたときに、サービス公開部１００３から呼出される。
【００６９】
図１６は、実施の形態２の動作例を表すフロー図である。
【００７０】
実施の形態１の処理フローである図１０との違いは、要求受付Ｓ３００２の後に、解析処理Ｓ３００３が追加されている点である。
解析処理Ｓ３００３では、上記のように定義更新部１０１２により定義解析部１００１を呼出してパイプ割り当て定義１１０３を更新する。
つまり、本実施の形態では、サービス公開部１００３がサービス提供要求を受信する度に、当該サービス提供要求に基づいて行われるサービスの連携が開始する前に、定義解析部１００１が、シナリオ定義１１０１及びインターフェース定義１１０２を解析して、当該サービス提供要求に基づいて行われるサービスの連携に用いられる変数に対して、パイプ割り当て定義１１０３を更新する。
【００７１】
このように、実施の形態２では、定義更新機能を設け、処理実行の最中にパイプ割り当て定義１１０３を更新することができるようにしたので、サービス連携装置１０００の稼働中にシナリオ定義１１０１が更新された場合にも、正しくパイプの割り当てを行うことができるようになる。
【００７２】
以上、本実施の形態では、実施の形態１の構成に加えて、
サービス公開部によって公開されているサービスが実行されるときに定義解析部を実行し、パイプ割り当て定義を更新させる定義更新部
を持つサービス連携装置を説明した。
【００７３】
実施の形態３．
実施の形態３では、実施の形態１に加えて、パイプ書込み手段１００４の中にメッセージ書込み機能を設け、パイプ読出し手段１００５の中にメッセージ読出し機能を設ける。
【００７４】
図１７は、実施の形態３におけるパイプ書込み手段１００４とパイプ読出し手段１００５の詳細な構成を表す図である。
メッセージ１０１３は、従来の技術（非特許文献１）にあるサービスの起動を制御するためのメッセージ（ＥＳＢのメッセージ）である。
メッセージ書込み機能１００４３は、パイプ１００６の代わりにメッセージ１０１３の中のデータ領域にデータを書き込む。
また、メッセージ読出し機能１００５２はメッセージのデータ領域からデータを読出す。
【００７５】
このように、実施の形態３では、図１８の符号１８０１で示すように、ユーザーがインターフェース定義１１０２を作成するときに、所定のパラメータ（図１８では、ｐ１）に対してパイプを使用しないことを定義しておき、定義解析処理の結果が図１９のようにパイプ書込み手段１００４とパイプ読出し手段１００５においてメッセージ書込み（符号１９０１）とメッセージ読出し（符号１９０２）が指定されるようにする。
【００７６】
以上のように実施の形態３では、メッセージ書込み機能とメッセージ読出し機能を設けることで、メッセージのデータ領域を使用してサービス間でデータを運ぶことができるようになる。
サービスを連携させるために必要なデータが小さい場合は、パイプを使用してデータをメモリ上に溜め込まないようにするメリットは小さく、パイプを作成するデメリットが大きくなるが、これを回避することができる。
【００７７】
以上、本実施の形態では、実施の形態１の構成に加えて、
メッセージにデータを格納できるようにするためのメッセージ書込み機能とメッセージ読出し機能
を持つサービス連携装置を説明した。
【００７８】
実施の形態４．
実施の形態４では、実施の形態３に加えて、レスポンスデータサイズ判定機能を設ける。
【００７９】
実施の形態４に係るサービス連携装置１０００の内部構成例を図２０に示す。
実施の形態３との違いは、レスポンスデータサイズ判定機能Ａ１００８１〜レスポンスデータサイズ判定機能Ｄ１０１１１を設けていることである。
【００８０】
実施の形態４では、レスポンスのデータを取得する前にレスポンスデータのサイズを確認できる場合に、データサイズを取得し、レスポンスデータサイズ判定機能によって、データを運ぶのにパイプを使用するか、メッセージを使用するかの判定と、判定結果に合わせてパイプを作成したり、パイプ書込み手段１００４やパイプ読出し手段１００５でメッセージ書込み機能１００４３やメッセージ読出し機能１００５２を使用するかを制御する。
データの取得前にデータサイズを取得できる例としては、サービスを利用するための通信プロトコルのヘッダにデータサイズが書かれている場合や、ファイルを取得するようなサービスでｆｓｉｚｅ（）などを利用してあらかじめファイルサイズを取得する場合がある。
【００８１】
実施の形態４におけるサービス処理の処理フローを図２１に示す。
【００８２】
実施の形態１のサービス処理の違いは、パイプ書込み手段とパイプ読出し手段への参照の取得Ｓ４００２の処理内容と、レスポンスデータサイズの取得可否判定Ｓ４００６以降の処理である。
パイプ書込み手段とパイプ読出し手段への参照の取得Ｓ４００２では、パイプ管理部１００２はパイプ書込み手段１００４とパイプ読出し手段１００５の作成だけを行い、書込みデータコピー機能１００４１などの有効化やパイプ１００６の作成を行わない。
書込みデータコピー機能１００４１などの有効化やパイプ１００６の作成は、レスポンスデータサイズの取得可否判定Ｓ４００６以降で行う。
レスポンスデータサイズの取得可否判定Ｓ４００６では、実行中のサービスのレスポンスデータを取得する前に、レスポンスデータサイズ判定機能がレスポンスデータのデータサイズを取得可能かを判定する。
データサイズを取得できない場合は、パイプの作成Ｓ４００７にて、パイプ管理部１００２が、データ格納用のパイプ１００６を作成し、パイプ割り当て定義１１０３に従って、書込みデータコピー機能１００４１などの有効化を行う。
レスポンスデータサイズの取得可否判定Ｓ４００６でデータサイズの取得が可能と判定した場合は、レスポンスデータサイズ判定機能が、レスポンスデータサイズの閾値判定Ｓ４００８でレスポンスデータサイズを取得し、閾値判定を行う。
データサイズが閾値以上の場合は、パイプの作成Ｓ４０１０にて、パイプ管理部１００２が、データ格納用のパイプ１００６を作成し、パイプ割り当て定義１１０３に従って、書込みデータコピー機能１００４１などの有効化を行う。
閾値未満の場合は、メッセージ書込み機能１００４３とメッセージ読出し機能の有効化Ｓ４００９にて、パイプ管理部１００２は、レスポンスデータをメッセージに格納する準備処理を行う。
【００８３】
以上のように、実施の形態４では、レスポンスデータサイズ判定機能を設けることで、実行時のレスポンスのデータサイズに合わせて、データの処理方法を選択することができるようになる。
【００８４】
以上、本実施の形態では、実施の形態３の構成に加えて、
レスポンスのサイズを判定し、サイズに合わせたデータの処理方法を実行するレスポンスデータサイズ判定機能
を持つサービス連携装置を説明した。
【００８５】
実施の形態５．
実施の形態５に係るサービス連携装置１０００は、実施の形態２と実施の形態３の組み合わせとして、実施の形態２の構成に、実施の形態３のメッセージ書込み機能１００４３とメッセージ読出し機能１００５２を加えた構成とする。
【００８６】
実施の形態６．
実施の形態６に係るサービス連携装置１０００は、実施の形態２と実施の形態４の組み合わせとして、実施の形態２の構成に、実施の形態４のメッセージ書込み機能１００４３、メッセージ読出し機能１００５２とレスポンスデータサイズ判定機能を加えた構成とする。
【００８７】
最後に、実施の形態１〜６に示したサービス連携装置１０００のハードウェア構成例について説明する。
図２２は、実施の形態１〜６に示すサービス連携装置１０００のハードウェア資源の一例を示す図である。
なお、図２２の構成は、あくまでもサービス連携装置１０００のハードウェア構成の一例を示すものであり、サービス連携装置１０００のハードウェア構成は図２２に記載の構成に限らず、他の構成であってもよい。
【００８８】
図２２において、サービス連携装置１０００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１〜６で説明した「記憶部１０２０」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００８９】
通信ボード９１５は、ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００９０】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００９１】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００９２】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
サービス連携装置１０００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００９３】
上記プログラム群９２３には、実施の形態１〜６の説明において「〜部」（「記憶部１０２０」以外、以下同様）、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００９４】
ファイル群９２４には、実施の形態１〜６の説明において、「〜の判断」、「〜の判定」「〜の解析」、「〜の指定」、「〜の生成」、「〜の作成」、「〜の複製」、「〜の割当て」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値や暗号鍵・復号鍵や乱数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜６で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００９５】
また、実施の形態１〜６の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜６で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「サービス連携方法」を実現することができる。
また、「〜部」、「〜手段」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜６の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態１〜６の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【００９６】
このように、実施の形態１〜６に示すサービス連携装置１０００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００９７】
１０００  サービス連携装置、１００１  定義解析部、１００２  パイプ管理部、１００３  サービス公開部、１００４  パイプ書込み手段、１００５  パイプ読出し手段、１００６  パイプ、１００８  サービス接続部Ａ、１００９  サービス接続部Ｂ、１０１０  サービス接続部Ｃ、１０１１  サービス接続部Ｄ、１０２０  記憶部、１１０１  シナリオ定義、１１０２  インターフェース定義、１１０３  パイプ割り当て定義。
【図１】
0005752009.tif 000002
【図２】
0005752009.tif 000003
【図３】
0005752009.tif 000004
【図４】
0005752009.tif 000005
【図５】
0005752009.tif 000006
【図６】
0005752009.tif 000007
【図７】
0005752009.tif 000008
【図８】
0005752009.tif 000009
【図９】
0005752009.tif 000010
【図１０】
0005752009.tif 000011
【図１１】
0005752009.tif 000012
【図１２】
0005752009.tif 000013
【図１３】
0005752009.tif 000014
【図１４】
0005752009.tif 000015
【図１５】
0005752009.tif 000016
【図１６】
0005752009.tif 000017
【図１７】
0005752009.tif 000018
【図１８】
0005752009.tif 000019
【図１９】
0005752009.tif 000020
【図２０】
0005752009.tif 000021
【図２１】
0005752009.tif 000022
【図２２】
0005752009.tif 000023