(57)【要約】【課題】ＥＳＢで使用するコンポーネントのメモリ消費量増加を抑制する手段を提供する。【解決手段】サービス連携装置１０１は、サービスと連結するコンポーネントＸ等と、実行するサービスの順に、エンドポイントの種類とパーツが記載されたルーティング定義１２１１と、エンドポイントを使用できるコンポーネントが記載されたエンドポイント管理情報１５１と、サービスリクエスタ２からリクエストを受信すると、ルーティング定義１２１１を参照し、実行するサービス順に、エンドポイントの種類とそのエンドポイントのパーツを特定するルーティングエンドポイント１２１と、特定されたエンドポイントとパーツを生成し、エンドポイント管理情報１５１を参照し、生成されたエンドポイントを使用できるコンポーネントを特定し、このコンポーネントが利用するメモリ領域に、生成したエンドポイントとパーツとを格納するエンドポイントマネージャ１５とを備えた。【選択図】図１
2014032543.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのサービスと連結する少なくとも一つのサービス連結部と、
前記サービス連結部が利用する情報を格納するメモリ領域を有する情報格納部と、
実行するサービスの順に、サービスを実行するサービス実行プログラムの種類であり、実行するサービスを示す種類であるサービス実行プログラム種類が前記サービス実行プログラムの動作を制御する制御情報と共に記載されたサービス実行順序情報を格納するサービス実行順序情報格納部と、
複数のサービス実行プログラムの各サービス実行プログラムに対して、前記サービス実行プログラムを使用できる前記サービス連結部との対応関係が記載されたサービス実行プログラム管理情報を格納するサービス実行プログラム管理情報格納部と、
サービス実行のリクエストを受信する受信部と、
前記受信部が前記リクエストを受信すると前記サービス実行順序情報格納部のサービス実行順序情報を参照することにより、実行するサービスの順に、実行すべきサービス実行プログラムの種類と、実行すべきサービス実行プログラムの種類に対応する制御情報とを特定するサービス実行プログラム特定部と、
前記サービス実行プログラム特定部が特定した種類のサービス実行プログラムと制御情報とを生成し、前記サービス実行プログラム管理情報格納部の前記サービス実行プログラム管理情報を参照することにより、生成した種類の前記サービス実行プログラムを使用できる前記サービス連結部を特定し、特定した前記サービス連結部が利用する前記情報格納部の前記メモリ領域に、生成した前記サービス実行プログラムと前記制御情報とを格納する格納実行部と、
前記格納実行部によって前記情報格納部に格納された前記サービス実行プログラムに前記サービス実行プログラムの種類の示すサービスを実行させて、実行させた前記サービス実行プログラムから前記サービスの実行結果を取得する実行結果取得部と
を備えたことを特徴とするサービス連携装置。
【請求項２】
前記サービス連携装置は、さらに、
前記格納実行部が生成した前記サービス実行プログラムを格納するサービス実行プログラム格納部を備え、
前記格納実行部は、
前記サービス実行プログラム特定部がサービス実行プログラムの種類と制御情報とを特定すると、特定された種類のサービス実行プログラムとして使用できるサービス実行プログラムが前記サービス実行プログラム格納部に格納されているかどうか判定し、格納されていると判定すると、サービス実行プログラムを生成することなく、格納されていると判定したサービス実行プログラムを使用することを特徴とする請求項１記載のサービス連携装置。
【請求項３】
前記サービス連携装置は、さらに、
前記格納実行部が生成した前記制御情報を格納する制御情報格納部を備え、
前記格納実行部は、
前記サービス実行プログラム特定部がサービス実行プログラムの種類と制御情報とを特定すると、特定された制御情報として使用できる制御情報が前記制御情報格納部に格納されているかどうか判定し、格納されていると判定すると、前記制御情報を生成することなく、格納されていると判定した制御情報を使用することを特徴とする請求項２記載のサービス連携装置。
【請求項４】
前記サービス連携装置は、
前記実行結果取得部が前記実行結果を取得すると、前記実行結果の取得元の前記サービス実行プログラムと、このサービス実行プログラムの前記制御情報とを前記情報格納部の前記メモリ領域から削除する削除部を備えたことを特徴とする請求項１記載のサービス連携装置。
【請求項５】
コンピュータを、
少なくとも一つのサービスと連結する少なくとも一つのサービス連結部、
前記サービス連結部が利用する情報を格納するメモリ領域を有する情報格納部、
実行するサービスの順に、サービスを実行するサービス実行プログラムの種類であり、実行するサービスを示す種類であるサービス実行プログラム種類が前記サービス実行プログラムの動作を制御する制御情報と共に記載されたサービス実行順序情報を格納するサービス実行順序情報格納部、
複数のサービス実行プログラムの各サービス実行プログラムに対して、前記サービス実行プログラムを使用できる前記サービス連結部との対応関係が記載されたサービス実行プログラム管理情報を格納するサービス実行プログラム管理情報格納部、
サービス実行のリクエストを受信する受信部、
前記受信部が前記リクエストを受信すると前記サービス実行順序情報格納部のサービス実行順序情報を参照することにより、実行するサービスの順に、実行すべきサービス実行プログラムの種類と、実行すべきサービス実行プログラムの種類に対応する制御情報とを特定するサービス実行プログラム特定部、
前記サービス実行プログラム特定部が特定した種類のサービス実行プログラムと制御情報とを生成し、前記サービス実行プログラム管理情報格納部の前記サービス実行プログラム管理情報を参照することにより、生成した種類の前記サービス実行プログラムを使用できる前記サービス連結部を特定し、特定した前記サービス連結部が利用する前記情報格納部の前記メモリ領域に、生成した前記サービス実行プログラムと前記制御情報とを格納する格納実行部、
前記格納実行部によって前記情報格納部に格納された前記サービス実行プログラムに前記サービス実行プログラムの種類の示すサービスを実行させて、実行させた前記サービス実行プログラムから前記サービスの実行結果を取得する実行結果取得部
として機能させるためのサービス連携プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、サービスを連携するサービス連携装置及びサービス連携プログラムに関する。
【背景技術】
【０００２】
複数のシステムのデータや機能を利用して新しい機能を作成する方法としては、それぞれのシステムのデータや機能をＷｅｂサービスのようなサービスとして公開し、公開したサービスを連携させるＳＯＡ（Ｓｅｒｖｉｃｅ  Ｏｒｉｅｎｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ：サービス指向アーキテクチャ）  という方法がある。このＳＯＡにおいて複数のサービスを連携させるためのミドルウェアとしてＥＳＢ（Ｅｎｔｅｒｐｒｉｓｅ  Ｓｅｒｖｉｃｅ  Ｂｕｓ）というソフトウェアが存在する。このＥＳＢは、コンポーネントと呼ばれる部品群を持っている（非特許文献１「４．３  Ｈｉｇｈ−Ｌｅｖｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ」）。コンポーネントは、起動するサービスを呼出したり、コード変換のような処理を行うための部品群であり、サービスを連携させるときは、コンポーネント間でデータの受け渡しが行われる。コンポーネント間で受け渡されるデータは、ノーマライズメッセージと呼ばれるメッセージに格納される。例えば、サービス連携のために、サービスから取得したデータをあるコンポーネントから別のコンポーネントに渡す場合、取得したデータをノーマライズメッセージの中に格納して、そのメッセージを送信する。メッセージを受信したコンポーネントは、格納されているデータを使用して処理を行う。メッセージの受信や処理は、コンポーネントの中のエンドポイントと呼ばれる部品で処理を行う。
【０００３】
コンポーネントやエンドポイントは、それぞれメモリ上に確保された領域を使用しており、コンポーネントやエンドポイントが増えた場合、メモリの消費量が増える。コンポーネントやその中のエンドポイントは、同じ種類のものであっても、呼出すサービスごとに異なる設定が必要になることがあり、それぞれの設定にあわせてコンポーネントやエンドポイントが用意される。すなわち、それぞれにメモリを消費する。サービス連携においては、ルーティングコンポーネントと呼ばれるコンポーネントが使用される。ルーティングコンポーネントは、他のコンポーネントの起動順番を制御するために使用され、設定された順番に従って、このルーティングコンポーネントが必要なコンポーネントに対してメッセージを送信することでサービスの起動順番が制御される。この制御の流れをルーティングという。ルーティングを定義することにより、複数のシステムのデータや機能が連携させた新しい機能が作成される。ルーティングの定義の中には、使用するサービスのためのエンドポイントを直接指定する方法や、特許文献１のように、ルーティングの中で使用するサービスの種類を指定する方法がある。特許文献１では、同じ処理が行えるサービスが複数あった場合に、それらの中から適切なサービスを選ぶための技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１６９７９３号公報
【非特許文献】
【０００５】
【非特許文献１】Ｊａｖａ  Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｇｒａｔｉｏｎ  １．０＜ｈｔｔｐ：／／ｊｃｐ．ｏｒｇ／ａｂｏｕｔＪａｖａ／ｃｏｍｍｕｎｉｔｙｐｒｏｃｅｓｓ／ｆｉｎａｌ／ｊｓｒ２０８／ｉｎｄｅｘ．ｈｔｍｌ＞（２０１２年７月１７日現在、アクセス可能）（Ｊａｖａは登録商標）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１においては、同一の処理を行うサービスが複数ある場合は、一つのサービスが停止していても代替となるサービスを自動で選ぶ方法が開示されている。そのため、同一の処理を行うサービスが多い場合、耐障害性を高くすることができる。しかし、サービスとの連結部であるコンポーネントがそれぞれのサービスごとに必要となり、ＥＳＢのメモリ消費量が増えてしまうという課題がある。
【０００７】
この発明は、ＥＳＢで使用するコンポーネントが増えた場合にも、コンポーネントやエンドポイントを共通的に使用することでメモリ消費量の増加を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
この発明のサービス連携装置は、
少なくとも一つのサービスと連結する少なくとも一つのサービス連結部と、
前記サービス連結部が利用する情報を格納するメモリ領域を有する情報格納部と、
実行するサービスの順に、サービスを実行するサービス実行プログラムの種類であり、実行するサービスを示す種類であるサービス実行プログラム種類が前記サービス実行プログラムの動作を制御する制御情報と共に記載されたサービス実行順序情報を格納するサービス実行順序情報格納部と、
複数のサービス実行プログラムの各サービス実行プログラムに対して、前記サービス実行プログラムを使用できる前記サービス連結部との対応関係が記載されたサービス実行プログラム管理情報を格納するサービス実行プログラム管理情報格納部と、
サービス実行のリクエストを受信する受信部と、
前記受信部が前記リクエストを受信すると前記サービス実行順序情報格納部のサービス実行順序情報を参照することにより、実行するサービスの順に、実行すべきサービス実行プログラムの種類と、実行すべきサービス実行プログラムの種類に対応する制御情報とを特定するサービス実行プログラム特定部と、
前記サービス実行プログラム特定部が特定した種類のサービス実行プログラムと制御情報とを生成し、前記サービス実行プログラム管理情報格納部の前記サービス実行プログラム管理情報を参照することにより、生成した種類の前記サービス実行プログラムを使用できる前記サービス連結部を特定し、特定した前記サービス連結部が利用する前記情報格納部の前記メモリ領域に、生成した前記サービス実行プログラムと前記制御情報とを格納する格納実行部と、
前記格納実行部によって前記情報格納部に格納された前記サービス実行プログラムに前記サービス実行プログラムの種類の示すサービスを実行させて、実行させた前記サービス実行プログラムから前記サービスの実行結果を取得する実行結果取得部と
を備えたことを特徴とする。
【発明の効果】
【０００９】
この発明によれば、ＥＳＢで使用するコンポーネントのメモリ消費量の増加を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１のサービス連携装置１０１のブロック構成図。
【図２】実施の形態１のルーティング定義１２１１を示す図。
【図３】実施の形態１のエンドポイント管理情報１５１を示す図。
【図４】実施の形態１のサービス連携装置１０１の動作を示すフローチャート。
【図５】実施の形態２のサービス連携装置１０２のブロック構成図。
【図６】実施の形態２のエンドポイント状態情報１５２を示す図。
【図７】実施の形態２のサービス連携装置１０２の動作を示すフローチャート。
【図８】実施の形態２のエンドポイント確保の動作を表すフローチャート。
【図９】実施の形態２のエンドポイント解放の動作を表すフローチャート。
【図１０】実施の形態３のサービス連携装置１０３のブロック構成図。
【図１１】実施の形態３のパーツ状態情報１５３を示す図。
【図１２】実施の形態３のエンドポイント確保の処理を示すフローチャート。
【図１３】実施の形態３のエンドポイントへのパーツセットの動作を示すフローチャート。
【図１４】実施の形態３のエンドポイント解放の処理を示すフローチャート。
【図１５】実施の形態３のパーツをパーツプール１７に返却する動作を示すフローチャート。
【図１６】実施の形態４のサービス連携装置１０１等の外観を示す図。
【図１７】実施の形態４のサービス連携装置１０１等のハードウェア構成を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、実施の形態１のサービス連携装置１０１のブロック構成図である。図１において、サービス連携装置１０１は、複数のサービスを連携するためのソフトウェアである。サービス連携装置１０１におけるそれぞれの「〜部」は、実施の形態４で後述するように、記憶装置に格納される。実施の形態２，３で述べるサービス連携装置１０２，１０３も同様である。サービス連携装置１０１は、パーソナルコンピュータやサーバ装置のような計算機上のソフトウェア（例えばＥＳＢ）として実現されることが多いが、専用の装置を使用してもかまわない。
【００１２】
サービスリクエスタ２は、サービス連携装置１０１が公開しているサービスを利用する装置やアプリケーション（アプリケーションプログラム）である。
【００１３】
サービスＡ３１、サービスＢ３２、サービスＣ３３、サービスＤ３４は、サービス連携装置１０１が呼出すサービスである。
【００１４】
サービス連携装置１０１は、これらのサービスを連携させて新しい機能を作成する。サービスリクエスタ２は、その機能を使用する。
【００１５】
（通信コンポーネント１１）
サービス連携装置１０１の中にある通信コンポーネント１１は、サービス連携装置１０１の中にあって、外部からのサービス実行要求を受け付けるための部品である。通信エンドポイント１１１（受信部）は、通信コンポーネント１１の部品であり、ＨＴＴＰ（Ｈｙｐｅｒ  ＴｅｘＴ  Ｐｒｏｔｏｃｏｌ）などのきめられた手順で、サービスリクエスタ２からのリクエストを受け付ける。
【００１６】
（ルーティングコンポーネント１２）
ルーティングコンポーネント１２は、サービス連携を行うためにサービスの起動順番を制御するための部品である。ルーティングコンポーネント１２は、通信コンポーネント１１から送られたメッセージを受信し、ルーティングを行う。メッセージは、ルーティングエンドポイント１２１（サービス実行プログラム特定部、実行結果取得部）によって受信する。ルーティングエンドポイント１２１では、図２の説明で後述するルーティング定義１２１１（サービス実行順序情報）に従って、必要なコンポーネントにメッセージを送信する。
【００１７】
（コンポーネントＸ１３等）
コンポーネントＸ１３、コンポーネントＹ１４は、サービスを実行するための部品（サービス連結部）である。それぞれ、エンドポイント（サービス実行プログラム）を持ち、それらのエンドポイントによってサービスを実行する。エンドポイントでは、受信したメッセージからサービスを実行するためのリクエストを作成したり、サービスのレスポンスからデータを抽出し、メッセージに格納したりする。エンドポイントＡ１３１、エンドポイントＢ１３２は、コンポーネントＸ１３の部品であり、それぞれパーツａ１３１１（制御情報）、パーツｂ１３２１（制御情報）を使用して、サービスＡ３１、サービスＢ３２を実行する。
【００１８】
（パーツａ等）
パーツａ１３１１、パーツｂ１３２１は、動作設定などを保持しており、エンドポイントＡ１３１とエンドポイントＢ１３２の動作を制御する制御情報である。すなわち、エンドポイントの動作は、エンドポイントの種類とその中で使用されるパーツとによって決定される。例えば、エンドポイントＡ１３１とエンドポイントＢ１３２が同じ種類の部品の場合でも、パーツを変更することで処理を変更することが可能である。
【００１９】
（コンポーネントＹ１４等）
コンポーネントＹ１４、エンドポイントＣ１４１、エンドポイントＤ１４２、パーツｃ１４１１、パーツｄ１４２１も、コンポーネントＸ１３等と同様である。図１においては、コンポーネントＸ，Ｙの２個のコンポーネントを記載しているが、実際のサービス連携装置１０１においてはコンポーネントが２個に限定されるわけではない。コンポーネントは１個以上あればよい。エンドポイント、パーツも同様であり、１個以上あればよい。
【００２０】
（エンドポイントマネージャ１５）
エンドポイントマネージャ１５（格納実行部、削除部）は、サービスの実行に使用されるエンドポイントを管理する部品であり、そのコンポーネントに使用できるエンドポイント種類を管理するエンドポイント管理情報１５１（サービス実行プログラム管理情報）を保持する。
【００２１】
（ルーティング定義１２１１、エンドポイント管理情報１５１）
図２は、ルーティングコンポーネント１２の有するルーティング定義１２１１の例を示す図である。ルーティング定義１２１１は、実行するサービスの順に、サービスを実行するためのエンドポイントの種類（サービス実行プログラム種類）とその実行設定を記述される。エンドポイントの「種類」とは、サービスを実行するエンドポイント自体の種類であり、かつ、実行するサービスを示すものである。エンドポイントが種類Ａであるとは、このエンドポイントの実行するサービスが「サービスＡ」であることを示している。
図３は、エンドポイント管理情報１５１の例を示す図である。エンドポイント管理情報１５１は、サービス連携装置１０１上で使用されるエンドポイントの種類と、そのエンドポイントを使用することができるコンポーネントとの対応情報が記述される。
【００２２】
次に、図４に基づいて、実施の形態１のサービス連携装置１０１の動作を説明する。
図４は、サービス連携装置１０１の動作を示すフローチャートである。ここでは、ルーティング定義１２１１とエンドポイント管理情報１５１が、それぞれ図２、図３のように設定されている場合を考える。また、エンドポイントＡ１３１、エンドポイントＤ１４２の種類がそれぞれ、Ａ、Ｄであるとする。
【００２３】
ここでエンドポイントの種類がそれぞれＡ、Ｄであるとは、種類ＡのエンドポイントはサービスＡを実行し、種類ＤのエンドポイントはサービスＤを実行することを意味する。なお、例えば、種類ＡのエンドポイントがサービスＡを実行する際の処理内容は、種類Ａのエンドポイントに設定されるパーツによって異なるのは前述したとおりである。
【００２４】
図４のＳＴＡＲＴのステップＳ１００１は、サービス連携装置１０１の処理の開始を表す。この処理では、サービスリクエスタ２からサービス連携装置１０１に対して「サービス実行のリクエスト」が送信される。
【００２５】
リクエスト受付のステップＳ１００２では、通信エンドポイント１１１がサービスリクエスタ２から送信されたリクエストを受信し、そのリクエストをもとにノーマライズメッセージを作成する。そして、作成したノーマライズメッセージをルーティングエンドポイント１２１に送信する。
【００２６】
ルーティングエンドポイントのステップＳ１００３では、ノーマライズメッセージを受信したルーティングエンドポイント１２１は、ルーティング定義１２１１を参照して、最初に実行するエンドポイントの種類がＡであることと、その設定としてパーツａが使用されるという情報を取得（特定）する。なお、ルーティングエンドポイント１２１は、サービスリクエスタ２からの「サービス実行のリクエスト」に応答する形でルーティング定義１２１１を参照する。この場合、例えば、サービスリクエスタ２からの「サービス実行のリクエスト」と、ルーティング定義１２１１とには対応関係があり、ルーティングエンドポイント１２１は、「サービス実行のリクエスト」に対応するルーティング定義１２１１を参照する。
【００２７】
（エンドポイントＡの作成：Ｓ１００４）
エンドポイントＡ作成のステップＳ１００４では、ルーティングエンドポイント１２１が、エンドポイントマネージャ１５に対して種類がＡであり、設定としてパーツａを使用するエンドポイントの作成を依頼する。
（１）依頼されたエンドポイントマネージャ１５は、種類がＡであるエンドポイントとして、エンドポイントＡ１３１を作成する。
（２）また、エンドポイントマネージャ１５はパーツａ１３１１を作成し、エンドポイントＡ１３１にセットする。
（３）次に、エンドポイントマネージャ１５はエンドポイント管理情報１５１を参照して、作成したそのエンドポイントＡ１３１（パーツａが設定済）を、コンポーネントＸ１３に格納する。つまり、エンドポイントマネージャ１５は、エンドポイント管理情報１５１を参照し、パーツａがセットされたエンドポイントＡ１３１を、コンポーネントＸ１３がエンドポイントを使用するための「記憶装置のメモリ領域」に格納する。ここで記憶装置とは、実施の形態４で後述する不揮発性メモリ及び揮発性メモリの両者を含む。また後に後述のＳ１００６で、このエンドポイントＡ１３１を削除する際には、エンドポイントマネージャ１５が、このメモリ領域からエンドポイントＡ１３１を削除する。そして、エンドポイントマネージャ１５は、エンドポイントＡ１３１のアドレス情報をルーティングエンドポイント１２１に伝える。
【００２８】
（エンドポイントＡの実行：Ｓ１００５）
エンドポイントＡ実行のステップＳ１００５では、ルーティングコンポーネント１２は、エンドポイントマネージャ１５から取得したアドレス情報をもとに、エンドポイントＡ１３１に対してメッセージを送信する。エンドポイントＡ１３１はメッセージを受信すると、受信したメッセージをもとにサービスＡ３１を実行するためのリクエストメッセージを作成し、サービスＡ３１を起動する。次に、エンドポイントＡ１３１は、サービスＡ３１のレスポンスからデータを取り出し、メッセージに格納し、そのメッセージを「返信」としてルーティングエンドポイント１２１に送信する。このように、ルーティングエンドポイント１２１は、エンドポイントＡ１３１を介してサービスＡを実行し、サービスＡからサービスＡの実行結果（レスポンスデータを含む返信）を取得する。
【００２９】
（エンドポイントＡの削除：Ｓ１００６）
エンドポイントＡ削除のステップＳ１００６では、ルーティングエンドポイント１２１は、エンドポイントＡ１３１から返信を受け取ると、エンドポイントマネージャ１５に対してエンドポイントＡ１３１の削除を依頼する。エンドポイントマネージャ１５は依頼があると、エンドポイントＡ１３１を削除する。
【００３０】
（エンドポイントＤの作成、実行、削除：Ｓ１００７〜Ｓ１００９）
エンドポイントＤ作成のステップＳ１００７では、ルーティングエンドポイント１２１は、ルーティング定義１２１１を参照し、次に起動するエンドポイントの情報を取得し、Ｓ１００４と同様にエンドポイントＤ１４２を作成する。また、エンドポイントＤ実行のステップＳ１００８、エンドポイントＤ削除のステップＳ１００９では、エンドポイントＡ実行のステップＳ１００５、エンドポイントＡ削除のステップＳ１００６と同様に、エンドポイントＤの実行と削除を行う。
【００３１】
ルーティングエンドポイント終了のステップＳ１０１０では、実行すべきエンドポイントの実行が完了したので、ルーティングエンドポイント１２１は、通信エンドポイント１１１に返信を行う。
【００３２】
レスポンス送信のステップＳ１０１１では、ルーティングエンドポイント１２１からの返信を受け取った通信エンドポイント１１１は、サービスリクエスタ２に返信するためのレスポンスを作成し、そのレスポンスを送信する。
【００３３】
ＥＮＤのステップＳ１０１２では、サービスリクエスタ２がレスポンスを受信し、サービス連携装置１０１によるサービス実行が終了する。
【００３４】
以上のように、実施の形態１によればルーティングエンドポイント１２１が、エンドポイントマネージャ１５を使用して、サービス実行時に必要なエンドポイントのみを作成し、サービスの終了時にエンドポイントを削除する。これにより、サービス連携装置１０１の中でエンドポイントが消費するメモリを減らすことが可能となる。
【００３５】
実施の形態２．
図５〜図９を参照して実施の形態２のサービス連携装置１０２を説明する。実施の形態２のサービス連携装置１０２は、エンドポイントをサービス実行ごとに作成、削除をせず、作成したエンドポイントを使いまわす。
【００３６】
図５は、サービス連携装置１０２の構成図である。実施の形態２のサービス連携装置１０２では、実施の形態１のサービス連携装置１０１に加えてエンドポイントプール１６を設けている。エンドポイントプール１６は、エンドポイントマネージャ１５によって作成されたエンドポイントを保持しておくための部品である。当然ではあるが、エンドポイントプール１６は、記憶装置において、コンポーネントに格納されているエンドポイントとは異なるメモリ領域に格納されている。
【００３７】
エンドポイントプール１６は、例えば図５に示すように、エンドポイントマネージャ１５によって作成されたエンドポイントＥ１６１、エンドポイントＦ１６２を保持している。また、エンドポイントを管理するために、エンドポイントマネージャ１５には、エンドポイント状態情報１５２を設けられる。
図６は、エンドポイント状態情報１５２で管理している情報の例である。エンドポイント状態情報１５２では、作成済みのエンドポイントに対して、エンドポイントの種類（そのエンドポイントの実行の対象となるサービスを示す情報）と使用中の有無とを管理する。
【００３８】
図７は、サービス連携装置１０２の動作を表す図である。実施の形態１のサービス連携装置１０１の処理フローである図４との違いは、図７ではエンドポイント実行（Ｓ２００５とＳ２００８）の前後が、エンドポイント確保とエンドポイント解放とになっている点である。このエンドポイント確保とエンドポイント解放の動作について説明する。
【００３９】
（エンドポイント確保：Ｓ２００４）
Ｓ２００４のエンドポイントの確保では、エンドポイントマネージャ１５は、新たなエンドポイントの作成し、もしくは未使用のエンドポイントを使用してルーティングエンドポイント１２１が要求したエンドポイントを確保する。
【００４０】
図８は、エンドポイントマネージャ１５によるエンドポイント確保の動作を表す図である。
（１）まず、未使用エンドポイント有無確認Ｓ３００１にて、エンドポイントマネージャ１５がエンドポイント状態情報１５２を参照し、ルーティングエンドポイント１２１が要求した種類のエンドポイントで未使用のものがあるかを確認する。その確認結果にもとづいて、エンドポイントマネージャ１５は、エンドポイントの作成Ｓ３００２もしくは未使用エンドポイントの状態更新Ｓ３００３を行い、エンドポイントを確保する。
（２）エンドポイントの作成Ｓ３００２は、未使用のものが無い場合の動作である。エンドポイントの作成では、エンドポイントマネージャ１５はルーティングエンドポイント１２１から要求された種類のエンドポイントを作成し、そのエンドポイントの情報を使用中としてエンドポイント状態情報１５２に追加する。
（３）未使用のエンドポイントが存在する場合は、未使用エンドポイントの状態更新Ｓ３００３にて、エンドポイントマネージャ１５は、見つかったエンドポイントに対応するエンドポイント状態情報１５２の情報を「使用中」に更新する。
【００４１】
次に、エンドポイントの設定変更Ｓ３００４にて、エンドポイントマネージャ１５は、確保されたエンドポイントに対してルーティングエンドポイント１２１から要求された設定を行う。例えば、図２の例でエンドポイントＡを使用する場合は、エンドポイントマネージャ１５は設定に従ってパーツａを作成し、エンドポイントＡにセットする。最後に、エンドポイントのアドレス伝達Ｓ３００５で、エンドポイントマネージャ１５はエンドポイントをコンポーネントに格納し（該当するメモリ領域にコンポーネントを格納し）、ルーティングエンドポイント１２１が、その確保されたエンドポイント使用できるように、ルーティングエンドポイント１２１にアドレスを伝えて終了する。
【００４２】
図９は、エンドポイント解放の動作を表す図である。エンドポイント解放では、使用済みのエンドポイントをエンドポイントプール１６に返却する。
【００４３】
まず、エンドポイントをエンドポイントプール返却のステップＳ４００１にて、エンドポイントマネージャ１５が、ルーティングエンドポイント１２１から使用済みのエンドポイントの解放依頼を受ける。エンドポイントマネージャ１５は、対象のエンドポイントをコンポーネントから取り出し、エンドポイントの中のパーツを削除してからエンドポイントプール１６に格納する。
【００４４】
次に、エンドポイント状態情報１５２の更新Ｓ４００２にて、エンドポイント状態情報１５２は、エンドポイント状態情報１５２の中の対象のエンドポイント（プールに格納したエンドポイント）に関する情報を、「未使用」に変更して終了する。
【００４５】
以上のように、実施の形態２のサービス連携装置１０２によれば、サービスに対してエンドポイントを固定して割り当てるのではなく、エンドポイントを使いまわし、必要なときにエンドポイントを割り当ることで、作成されるエンドポイントの数を減らすことができ、メモリの消費量を減らすことができる。また、作成されているエンドポイントを使用することで、実施の形態１のサービス連携装置１０１ように都度エンドポイントを作成する場合に比べ、エンドポイント作成による処理時間のオーバーヘッドを減らすことができる。
【００４６】
実施の形態３．
図１０〜図１５を参照して実施の形態３のサービス連携装置１０３を説明する。実施の形態３のサービス連携装置１０３は、実施の形態２のサービス連携装置１０２に対して、エンドポイントの中で使用されるパーツも実行ごとに作成、削除をせず、作成したエンドポイントに加え（実施の形態２）、パーツを使いまわす。
【００４７】
図１０は、実施の形態３のサービス連携装置１０３を示す構成図である。実施の形態３のサービス連携装置１０３では、実施の形態２のサービス連携装置１０２に加えて、パーツプール１７を設けている。パーツプール１７はエンドポイントマネージャ１５によって作成されたパーツを保持しておくための部品である。パーツプール１７はエンドポイントプール１６と同様、記憶装置において、コンポーネントに格納されているエンドポイントとは異なるメモリ領域に格納されている。
【００４８】
また、エンドポイントを管理するために、エンドポイントマネージャ１５には、パーツ状態情報１５３を設けられている。
図１１は、パーツ状態情報１５３で管理している情報の例である。パーツ状態情報１５３では、作成済みのパーツに対して、パーツの種類と使用中の有無を管理する。
【００４９】
実施の形態３は実施の形態２に対して、実施の形態２で行ったエンドポイント確保（Ｓ２００４とエンドポイント解放（Ｓ２００６、Ｓ２００９）が異なる。
【００５０】
図１２は、サービス連携装置１０３におけるエンドポイント確保の処理を示す図である。実施の形態２のサービス連携装置１０２におけるエンドポイント確保との違いは、エンドポイントの設定変更をＳ３００４をエンドポイントへのパーツセットＳ５００４に変更し、エンドポイントの設定に使用する部品をエンドポイントの確保時に作成しないで、パーツプール１７を使用して確保したパーツを使用するようにした点である。
【００５１】
エンドポイントへのパーツセットでは、エンドポイントマネージャ１５は、パーツプール１７にパーツがすでに存在するかを確認してから、パーツを確保し、エンドポイントに格納する。
図１３は、エンドポイントマネージャ１５によるエンドポイントへのパーツセットの動作を示す図である。
【００５２】
まず、未使用パーツ有無確認Ｓ６００１にて、エンドポイントマネージャ１５はパーツ状態情報１５３を参照し、ルーティングエンドポイント１２１が要求した設定のパーツで未使用のものがあるかを確認する。その確認結果にもとづいて、エンドポイントマネージャ１５はパーツの作成Ｓ６００２もしくは未使用パーツの状態更新Ｓ６００３を行い、パーツを確保する。パーツの作成Ｓ６００２は未使用のパーツが無い場合の動作である。パーツの作成では、エンドポイントマネージャ１５は、ルーティングエンドポイント１２１から要求された設定を実現するためのパーツを作成し、そのパーツの情報を「使用中」としてパーツ状態情報１５３に追加する。未使用のパーツが存在する場合は、エンドポイントマネージャ１５は、未使用パーツの状態更新Ｓ６００３にて、見つかったパーツに対応するパーツ状態情報１５３の情報を使用中に更新する。
【００５３】
次に、パーツのエンドポイントへの格納Ｓ６００４にて、エンドポイントマネージャ１５は、確保されたパーツをエンドポイントにセットする。エンドポイントマネージャ１５は、例えば、図２の例でエンドポイントＡを使用する場合は、設定に従ってパーツａを確保し、エンドポイントＡにセットする。
【００５４】
図１４は、実施の形態３のサービス連携装置１０３におけるエンドポイント解放の処理を示す図である。実施の形態２におけるエンドポイント解放との違いは、エンドポイントをエンドポイントプール１６に返却する前に、パーツをパーツプール１７に返却（Ｓ７００１）する点である。パーツプール１７への返却では、エンドポイントをプールに返却し、状態情報を更新する。
図１５は、パーツをパーツプール１７に返却する動作を示す図である。
【００５５】
パーツをパーツプール１７に格納Ｓ８００１では、エンドポイントマネージャ１５は、エンドポイントからパーツを取り出し、パーツプール１７に格納する。パーツ状態情報１５３の更新Ｓ８００２では、エンドポイントマネージャ１５は、パーツ状態情報１５３を更新し、返却したパーツの状態を未使用にする。
【００５６】
以上のように、実施の形態３のサービス連携装置１０３によれば、サービスに対してエンドポイントを固定して割り当てるのではなく、エンドポイントを使いまわし、必要なときにエンドポイントを割り当る。よって、作成されるエンドポイントの数を減らすことができ、メモリの消費量を減らすことができる。また、作成されているエンドポイントを使用することで、実施の形態１のように都度エンドポイントを作成する場合に比べ、エンドポイント作成による処理時間のオーバーヘッドを減らすことができる。さらに、エンドポイントの確保時に作成されているパーツを使用することで、パーツ作成による処理時間のオーバーヘッドを減らすことができる。
【００５７】
以上、実施の形態１〜３を説明したが、これらの実施の形態のうち、整合性のある範囲で２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態１〜３のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態１〜３のうち、整合性のある範囲で２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明はこれらの実施の形態に限定されるものではなく、必要に応じて種々の変形が可能である。
【００５８】
実施の形態４．
図１６、図１７を参照して実施の形態４を説明する。実施の形態４は、コンピュータであるサービス連携装置１０１〜１０３のハードウェア構成を説明する。
図１６は、コンピュータであるサービス連携装置１０１〜１０３の外観の一例を示す図である。
図１７は、サービス連携装置１０１〜１０３のハードウェア資源の一例を示す図である。
【００５９】
外観を示す図０１６において、サービス連携装置１０１等は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのハードウェア資源を備える。これらのハードウェア資源はケーブルや信号線で接続されている。システムユニット８３０はネットワークに接続している。
【００６０】
またハードウェア資源を示す図１７において、サービス連携装置１０１等は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＣＤＤ８１８、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００６１】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶部、格納部、バッファ（これらを総称で、記憶装置と呼ぶ）の一例である。記憶装置（情報格納部、サービス実行順序情報格納部、サービス実行プログラム管理情報格納部、サービス実行プログラム格納部、制御情報格納部等の一例）である記憶部、格納部、バッファ等には、エンドポイントマネージャ１５の作成した、エンドポイントやパーツが格納される。このとき、実施の形態１〜３に示したように、使用後にはエンドポイントやパーツが削除され（実施の形態１）、あるいは未使用状態のエンドポイントやパーツを使いまわす（実施の形態２，３）ので、メモリ使用量を低減できる。また、これらの記憶装置には、ルーティング定義１２１１、エンドポイント管理情報１５１、エンドポイント状態情報１５２、パーツ状態情報１５３等が格納される。
【００６２】
通信ボード８１６、キーボード８１４などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３などは、出力部、出力装置の一例である。通信ボード８１６は、ネッワークに接続されている。
【００６３】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００６４】
上記プログラム群８２３には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００６５】
ファイル群８２４には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００６６】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６７】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【００６８】
以上の実施の形態では、サービス連携装置を説明したが、サービス連携装置はサービス連携プログラム、あるいはサービス連携装置が行うサービス連携方法としても把握できることは以上の説明から明らかである。
【００６９】
以上の実施の形態では以下を特徴とするサービス連携装置を説明した。
ルーティングの定義にしたがって動的にサービス連携部品の確保・解放する機能を持つサービス連携装置。
【００７０】
以上の実施の形態では以下を特徴とするサービス連携装置を説明した。
処理が完了したサービス連携部品を破棄しないで保持しておく機能と、サービス連携部品の状態を管理する機能とを有するサービス連携装置。
【００７１】
以上の実施の形態では以下を特徴とするサービス連携装置を説明した。
サービス連携部品の処理を変更するための部品を保持しておく機能と、サービス連携部品の処理を変更するための部品を使用してサービス連携部品の処理を変更する機能とを有するサービス連携装置。
【符号の説明】
【００７２】
１０１，１０２，１０３  サービス連携装置、２  サービスリクエスタ、３１  サービスＡ、３２  サービスＢ、３３  サービスＣ、３４  サービスＤ、１１  通信コンポーネント、１１１  通信エンドポイント、１２  ルーティングコンポーネント、１２１  ルーティングエンドポイント、１２１１  ルーティング定義、１３  コンポーネントＸ、１３１  エンドポイントＡ、１３１１  パーツａ、１３２  エンドポイントＢ、１３２１  パーツｂ、１４  コンポーネントＹ、１４１  エンドポイントＣ、１４１１  パーツｃ、１４２  エンドポイントＤ、１４２１  パーツｄ、１５  エンドポイントマネージャ、１５１  エンドポイント管理情報、１５２  エンドポイント状態情報、１５３  パーツ状態情報、１６  エンドポイントプール、１６１  エンドポイントＥ、１６２  エンドポイントＦ、１７  パーツプール、１９  記憶部。
【図１】
2014032543.tif 000003
【図２】
2014032543.tif 000004
【図３】
2014032543.tif 000005
【図４】
2014032543.tif 000006
【図５】
2014032543.tif 000007
【図６】
2014032543.tif 000008
【図７】
2014032543.tif 000009
【図８】
2014032543.tif 000010
【図９】
2014032543.tif 000011
【図１０】
2014032543.tif 000012
【図１１】
2014032543.tif 000013
【図１２】
2014032543.tif 000014
【図１３】
2014032543.tif 000015
【図１４】
2014032543.tif 000016
【図１５】
2014032543.tif 000017
【図１６】
2014032543.tif 000018
【図１７】
2014032543.tif 000019