(57)【要約】【課題】  ネットワーク・アクセス可能なサービスが提供される方法を改善する。【解決手段】  プランの構築および選択の決定段階が、プラン割り当て段階から分離して処理される。それに加えて、ランタイム変数の評価がサービス・インスタンスの割り当てから分離される。さらに、各段階においてフィードバックが提供されてプランの組み立てが継続的に改良されることが可能になる。ランタイム・メトリクスの最適化もまた、ウェブ・サービスの選択ならびに組み立て、あるいは任意のそのほかの、あらかじめ決定済みの記述言語を使用してアプリケーションが記述されるサービス指向アーキテクチャ・テクノロジに関してモデリングが可能である。【選択図】      図１
2005166040.tif 000002
【特許請求の範囲】
【請求項１】
複合サービスを構築するための方法であって、
あらかじめ決定済みの形式で論理プロセスの集合を指定する抽象的プランをストアするステップと、
前記抽象的プランの前記論理プロセスのそれぞれを遂行することのできる１ないしは複数の特定のサービスを指定するインスタンシエートされたプランを決定するステップ、および、
前記インスタンシエートされたプランの実行に関係するあらかじめ決定済みの制約の侵害について、インスタンシエートされたプランの評価を行うステップと、
を包含する方法。
【請求項２】
さらに、評価の行われた前記インスタンシエートされたプランがあらかじめ決定済みの前記制約の少なくとも１つを侵害している場合に前記インスタンシエートされたプランを拒否するステップを包含する、請求項１に記載の方法。
【請求項３】
さらに、前記インスタンシエートされたプランに関するパラメータおよび前記パラメータの適切な範囲の集合を決定するステップを包含する、請求項１に記載の方法。
【請求項４】
さらに、評価の行われた前記インスタンシエートされたプランがあらかじめ決定済みの前記制約の少なくとも１つを侵害している場合に、代替抽象的プランを組み立てるステップを包含する、請求項１に記載の方法。
【請求項５】
前記抽象的プランは、前記論理プロセスの順序集合を指定する、請求項１に記載の方法。
【請求項６】
前記抽象的プランは、ウェブ・サービス組み立て言語を使用するあらかじめ決定済みの形式で表現される、請求項１に記載の方法。
【請求項７】
複合サービスを構築するためのコンピュータ・プログラムであって、
あらかじめ決定済みの形式で論理プロセスの集合を指定する抽象的プランをストアするステップと、
前記抽象的プランの前記論理プロセスのそれぞれを遂行することのできる１ないしは複数の特定のサービスを指定するインスタンシエートされたプランを決定するステップ、および、
前記インスタンシエートされたプランの実行に関係するあらかじめ決定済みの制約の侵害について、インスタンシエートされたプランの評価を行うステップと、
を行うための、コンピュータ可読メディア上に記録されたコンピュータ・ソフトウエアを包含するコンピュータ・プログラム。
【請求項８】
複合サービスを構築するためのコンピュータ・システムであって、
あらかじめ決定済みの形式で論理プロセスの集合を指定する抽象的プランをストアするステップと、
前記抽象的プランの前記論理プロセスのそれぞれを遂行することのできる１ないしは複数の特定のサービスを指定するインスタンシエートされたプランを決定するステップ、および、
前記インスタンシエートされたプランの実行に関係するあらかじめ決定済みの制約の侵害について、インスタンシエートされたプランの評価を行うステップと、
を行うための、コンピュータ可読メディア上に記録されたコンピュータ・ソフトウエアを実行するコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネントから構築されるネットワーク・アクセス可能なサービス等の複合サービスの構築に関する。
【背景技術】
【０００２】
ウェブ・サービス等の複合的なネットワーク・アクセス可能なサービスは、再使用可能なソフトウエア・コンポーネントを使用して構築することができる。その種のコンポーネントを、分配されたアプリケーションが見つけ出し、呼び出し、それらのサブ機能を代理させることが可能である。ウェブ・サービスの仕様は、ディレクトリに対して公開されており、アプリケーション・サーバ上においてサービスを展開することによってオンライン・アクセスのために利用可能となる。アプリケーションは、ウェブ・サービス・ディレクトリから関心のあるウェブ・サービスをサーチし、公開されたアクセス情報を使用して適切な候補を呼び出す。
【０００３】
複合サービスは、いくつかのよりシンプルなコンポーネント・サービスを通ってデータがどのようにルーティングされるかということをはじめ、中間出力データがどのように（ウェブ・サービス呼び出しの間において）処理されるかということをコントロールする作業の流れを定義することによって作成が可能である。その種の複合サービスを作成するために、標準言語を使用して作業の流れをマニュアルで定義し、現存するウェブ・サービスをまとめることができる。このようにして定義された複合サービスは、ディレクトリに対して公開され、それによってそのサービスをアプリケーションが利用できるようになるだけでなく、開発者にとっては、さらに複雑なサービスのコンポーネントとして役立てることができる。
【０００４】
ウェブ・サービスの組み立てを表現する多数の言語が存在する。例を挙げれば、ＰＤＤＬ（プランニング・ドメイン記述言語）、ＢＰＥＬ４ＷＳ（ウェブ・サービス用ビジネス・プロセス実行言語）、およびＷＳＦＬ（ウェブ・サービス・フロー言語）がある。
【０００５】
ユーザがプランまたは作業の流れを指定し、方法（ウェブ・サービス・オーケストレーション方法と呼ばれる）が、データ・フローおよびコントロール・フロー分析を使用してローカルにウェブ・サービスの実行を最適化するために利用可能となる。１つの適切な例が、非特許文献１に記述されている。
【０００６】
オーケストレーション方法においては、ウェブ・サービスの選択がほとんどマニュアルである。つまり開発者が、代用可能なサービスのインスタンスをリストしている。サービスの自動選択についてもいくつかのプラニング・ベースの方法が利用可能であり、それらは、サービス記述があらかじめ決定済みであることを前提とする。その種の方法の１つが、非特許文献２に記述されている。
【０００７】
【非特許文献１】マンガラ・ゴウリ（Ｇｏｗｒｉ，  Ｍａｎｇａｌａ）およびネエラン・カルニック（Ｋａｒｎｉｋ，  Ｎｅｅｒａｎ）著『コーディネーティング・コンポーネンツ・イン・ディセントラライズド・ウェブ・サービス（Ｃｏｏｒｄｉｎａｔｉｎｇ  Ｃｏｍｐｏｎｅｎｔｓ  ｉｎ  Ｄｅｃｅｎｔｒａｌｉｚｅｄ  Ｃｏｍｐｏｓｉｔｅ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ）』（２００３年）、アソシエーション・オブ・コンピューティング・マシナリ・インターナショナル・シンポジウム（Ａｓｓｏｃｉａｔｉｏｎ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ  Ｍａｃｈｉｎｅｒｙ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ）会報、フロリダ州メルボルン、２００３年３月
【非特許文献２】Ｂ．スリバスタバ（Ｓｒｉｖａｓｔａｖａ，  Ｂ）著『オートマティック・ウェブ・サービス・コンポジション・ユージング・プラニング（Ａｕｔｏｍａｔｉｃ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｃｏｍｐｏｓｉｔｉｏｎ  Ｕｓｉｎｇ  Ｐｌａｎｎｉｎｇ）』ナレッジ・ベースド・コンピュータ・システム（Ｋｎｏｗｌｅｄｇｅ  Ｂａｓｅｄ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ）（ＫＢＣＳ）会報、ムンバイ、２００２年、ｐ．４６７‐４７７、ＩＳＢＮ  ８１‐２５９‐１４２８‐５
【非特許文献３】ダニエル  Ｓ．ウェルド（Ｄａｎｉｅｌ  Ｓ．  Ｗｅｌｄ）著『リーセント・アドバンセズ・イン・エーアイ・プラニング（Ｒｅｃｅｎｔ  Ａｄｖａｎｃｅｓ  ｉｎ  ＡＩ  Ｐｌａｎｎｉｎｇ）』エーアイ・マガジン（ＡＩ  Ｍａｇａｚｉｎｅ）、第２０巻、第２号、１９９９年  ｐ．９３‐１２３
【非特許文献４】クマール（Ｋｕｍａｒ）著『アルゴリズムズ・フォア・コンストレイント‐サティスファクション・プロブレムズ、ア・サーベイ（Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｃｏｎｓｔｒａｉｎｔ‐Ｓａｔｉｓｆａｃｔｉｏｎ  Ｐｒｏｂｌｅｍｓ、  Ａ  Ｓｕｒｖｅｙ）』エーアイ・マガジン（ＡＩ  Ｍａｇａｚｉｎｅ）、第１３巻、第１号、１９９２年、ｐ．３２‐４４
【非特許文献５】クマール（Ｋｕｍａｒ）著『アルゴリズムズ・フォア・コンストレイント‐サティスファクション・プロブレムズ、ア・サーベイ（Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｃｏｎｓｔｒａｉｎｔ‐Ｓａｔｉｓｆａｃｔｉｏｎ  Ｐｒｏｂｌｅｍｓ、  Ａ  Ｓｕｒｖｅｙ）』［ｏｎｌｉｎｅ］インターネット＜ＵＲＬ、ｈｔｔｐ、／／ｃｉｔｅｓｅｅｒ．ｎｊ．ｎｅｃ．ｃｏｍ／ｋｕｍａｒ９２ａｌｇｏｒｉｔｈｍｓ．ｈｔｍｌ＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記のテクニックは、多くの意味でそれぞれの意図する目的に充分であるが、ネットワーク・アクセス可能なサービスが提供される方法を改善することができる。
【課題を解決するための手段】
【０００９】
プランの構築および選択の決定段階が、プラン割り当て段階から分離して処理される。それに加えて、ランタイム変数の評価がサービス・インスタンスの割り当てから分離される。さらに、各段階においてフィードバックが提供されてプランの組み立てが継続的に改良されることが可能になる。ランタイム・メトリクスの最適化もまた、ウェブ・サービスの選択ならびに組み立て、あるいは任意のそのほかの、あらかじめ決定済みの記述言語を使用してアプリケーションが記述されるサービス指向アーキテクチャ（ＳＯＡ）テクノロジに関してモデリングが可能である。
【００１０】
抽象的プランは、ＰＤＤＬ（プランニング・ドメイン記述言語）もしくは任意のそのほかの適切な、ＢＰＥＬ４ＷＳまたはＷＳＦＬ等の作業の流れを記述する言語で表現することができる。インスタンシエートされたプランもまた、抽象的プランと同じ態様で表現することができる。
【００１１】
プラン・セレクタは、たとえばウェブ・サービスの論理的目標を満たす抽象的プランの選択の第１段階を行う。出力は、使用するサービスのタイプおよびその順序を識別する抽象的プランである。続いてプラン・アサイナがプラン・セレクタから抽象的プランを受け取り、プラン・セレクタによって生成された抽象的プラン内のノードに対するウェブ・サービスの特定のインスタンスの割り当てを、したがってインスタンシエートされたプランの生成を行う。最初のインスタンスにおいては、この割り当てをあらかじめ決定済みとすること、あるいはランダムとすることができる。ランタイム・エバリュエータは、プラン・アサイナによって生成されたインスタンシエートされたプランが応答時間、スループット、コスト等のランタイム制約を侵害しているか否かをチェックする。
【００１２】
インスタンシエートされたプランは、制約を侵害していなければ実行することができる。侵害している場合には、フィードバックが提供されてプランの組み立ての改良が可能になる。ランダムな『試行錯誤』またはサーチ空間にわたる『強引な』サーチではなく、フィードバックが使用されて、実際のランタイム制約を基礎として許容可能な作業の流れに到達する。
【発明を実施するための最良の形態】
【００１３】
図１は、複合サービスを組み立てるために使用されるコンポーネントを略図的に表している。これらのコンポーネントは、プラン・セレクタ１１０、それがインタラクションするプラン・アサイナ１４０、およびそれがインタラクションするランタイム・エバリュエータ１６０である。
【００１４】
作業の流れプランは、組み立てられたウェブ・サービスの表現であり、任意の適切な作業の流れを記述する言語を使用して指定することができる。作業の流れを記述する言語は、たとえばウェブ・サービス組み立て言語とすることができる。作業の流れプランは、複合サービスの目標を基礎として自動的に作成され、実行／マネージが自動的に行われる。
【００１５】
作業の流れプランは、次のように作成することができる。人工知能（ＡＩ）プラニングは、形式ドメイン理論の記述ならびに設定済みの目標を基礎としてプランを合成するテクニックを開発してきたコンピュータ・サイエンスの分野である。プラニングの研究に関するさらに詳しい情報は、非特許文献３から得ることができる。
【００１６】
まず、いくつかの用語を定義する。「オブジェクト」は、ドメイン内の項（定数または変数）によって表されるエンティティとする。「述語」は、ドメイン内のオブジェクト間の関係を参照する論理的な構成である。「状態Ｔ」は、状態内の述語に対応する情報が成立する（すなわち、真となる）セマンティクスを伴う事実の単なる集合である。「アクションＡ＿ｉ」は、「Ａ＿ｉ」の「プレコンディション」が状態「Ｔ」内において満たされ、かつ結果として得られる状態「Ｔ’」が「Ａ＿ｉ」の「結果」を組み込むことによって獲得される場合に状態「Ｔ」内において適用可能となる。アクションのシーケンス「Ｓ」（「プラン」）は、「Ｉ」から「Ｓ」の実行が可能であり、かつ結果として得られる世界の状態が「Ｇ」を含むとき、「Ｐ」に対する解である。
【００１７】
プラニング問題「Ｐ」は、３‐タプル＜Ｉ，Ｇ，Ａ＞であり、それにおいて「Ｉ」は初期状態の完全な記述、「Ｇ」は目標状態の部分的な記述、「Ａ」は実行可能（プリミティブ）アクションの集合である。ウェブ・サービスを組み立てるためのプランを作成するときには、ウェブ・サービスがアクションとしてモデリングされる。したがって、ウェブ・サービスのコンポーネントに関する情報は、そのプレコンディション（従属または入力）ならびに結果（相関関係または出力）を含めて、述語によって表現される。次に、集合体サービスの仕様（または目的）の場合のプラニング問題を公式化し、現存するアルゴリズムを使用して解く。
【００１８】
状態空間プランナは、プラニング・アルゴリズムのタイプであり、可能プラン（すなわち、アクションのシーケンス）の空間をサーチする。次の表１は、述語として表現されたコンポーネント（アクション）の情報を用いて推論できる標準的な状態空間プラニング・アルゴリズムの擬似コード・テンプレートを表している。ソフトウエア・コンポーネント「ＦｉｎｄＳｅｑｕｅｎｃｅ」は、情報が述語として表現されている問題を受け入れることができる。「ＦｉｎｄＳｅｑｕｅｎｃｅ」は、１つの特定の例を説明する基本プランナとして使用されている。このほかのタイプのプランナ、たとえばプラン空間プランナ（すなわち、ワールド（情報）状態の空間内において推論するプランナ）を使用することもできる。
【００１９】
表１
ＦｉｎｄＳｅｑｕｅｎｃｅ（Ｉ，Ｇ，Ａ）
１．  Ｉｆ  Ｉ  ⊃  Ｇ
２．      Ｒｅｔｕｒｎ｛｝
３．  Ｅｎｄ‐ｉｆ
４．  Ｎｉｎｉｔ．ｓｅｑｕｅｎｃｅ  ＝  ｛｝、  Ｎｉｎｉｔ．ｓｔａｔｅ  ＝  Ｉ
５．  Ｑ  ＝  ｛Ｎｉｎｉｔ｝
６．  Ｗｈｉｌｅ  Ｑ  ｉｓ  ｎｏｔ  ｅｍｐｔｙ
７．      Ｎ  ＝  Ｒｅｍｏｖｅ  ａｎ  ｅｌｅｍｅｎｔ  ｆｒｏｍ  Ｑ    （ヒューリスティックな選択）
８．      Ｌｅｔ  Ｓ  ＝  Ｎ．ｓｅｑｕｅｎｃｅ、  Ｔ  ＝  Ｎ．ｓｔａｔｅ
９．      Ｆｏｒ  ｅａｃｈ  ｃｏｍｐｏｎｅｎｔ  Ａｉ  ｉｎ  Ａ
１０．        Ｉｆ  ｐｒｅｃｏｎｄｉｔｉｏｎ  ｏｆ  Ａｉ  ｉｓ  ｓａｔｉｓｆｉｅｄ  ｉｎ  ｓｔａｔｅ  Ｓ
１１．            Ｃｒｅａｔｅ  ｎｅｗ  ｎｏｄｅ  Ｎ’  ｗｉｔｈ、
Ｎ’．ｓｔａｔｅ  ＝  Ｕｐｄａｔｅ  Ｓ  ｗｉｔｈ  ｒｅｓｕｌｔ  ｏｆ  ｅｆｆｅｃｔ  ｏｆ  Ａｉ  ａｎｄ
Ｎ’．ｓｅｑｕｅｎｃｅ  ＝  Ａｐｐｅｎｄ（Ｎ．ｓｅｑｕｅｎｃｅ，  Ａ＿Ｉ）
１２．        Ｅｎｄ‐ｉｆ
１３．        Ｉｆ  Ｎ’．ｓｔａｔｅ  ⊃  Ｇ
１４．            Ｒｅｔｕｒｎ  Ｎ’    、、プランを返す
１５．        Ｅｎｄ‐ｉｆ
１６．        Ｑ  ＝  Ｑ  ∪  Ｎ’
１７．    Ｅｎｄ‐ｆｏｒ
１８．Ｅｎｄ‐ｗｈｉｌｅ
１９．Ｒｅｔｕｒｎ  ＦＡＩＬ      、、プランが見つからない
【００２０】
図２は、図１のコンポーネントをさらに詳細に示している。プラン・セレクタ１１０は、たとえばウェブ・サービスの論理的目標を満足する抽象的プランの選択の第１段階を行う。プラン・セレクタ１２０の出力は、使用するサービスのタイプならびにその順序を識別する抽象的プランである。
【００２１】
プラン・アサイナ１４０は、プラン・セレクタ１１０から抽象的プランを受け取り、プラン・セレクタ１２０によって生成された抽象的プラン内のノードに対するウェブ・サービスの特定のインスタンスの割り当てを、したがってインスタンシエートされたプランの生成を行う。最初のインスタンスにおいては、この割り当てをあらかじめ決定済みとすること、あるいはランダムとすることができる。その後に続く割り当ては、実行可能な割り当ての選択に関係するランタイム・エンジンによって提供される情報を基礎として行われる。
【００２２】
ランタイム・エバリュエータ１６０は、プラン・アサイナ１４０によって生成されたインスタンシエートされたプランがランタイム制約を侵害しているか否かをチェックする。さらに詳しくは後述するが、この種の制約には、応答時間、スループット、コスト、可用性、関心の衝突等を含めることができる。これらの制約は、一般にサービス・レベル合意（ＳＬＡ）書類内に定義されており、通常それが、その種の制約に関する基礎になる。
【００２３】
インスタンシエートされたプランは、制約を侵害していなければ実行することができる。フィードバックが提供されて、プランの組み立ての改良が可能になる。最初のインスタンスにおいて割り当てが許容可能であれば、フィードバックは提供されない。許容可能でなければ、フィードバックが使用されて、ランダムな『試行錯誤』またはサーチ空間にわたる『強引な』サーチではなく、実際のランタイム制約を基礎として許容可能な作業の流れに到達する。
【００２４】
プラン選択
プラン・セレクタ１２０は、ウェブ・サービスの組み立てが目指す論理的目標を満足するプランをサーチすることができる。この目的のために現存する人工知能（ＡＩ）プランニング・テクニックを使用することができる。例として示せば、適切なテクニックが非特許文献３に記述されている。
【００２５】
このプランニング・テクニックおよびそのほかのプランニング・テクニックは、特に、目標および状態遷移仕様（ここでのサービス・タイプ記述）を入力として取り、プランを合成して目標を達成する。出力は、使用するサービスのタイプおよびその順序を識別する抽象的プラン（ＡＰｉとして表記）である。正確なサービス・インスタンスについての確約はまったく行われない。
【００２６】
プランの評価
出力は、ノードの選択に関する可能な代替案を伴うインスタンシエートされたプランＰｉである。いずれかのランタイム制約が侵害されている場合には、ランタイム・エバリュエータ１６０がプラン・アサイナ１４０を代替案に導くことができる。
【００２７】
変数に対する値の割り当ておよび制約の侵害の検出のために制約満足問題（ＣＳＰ）テクニックを使用することが可能である。その種のテクニックの適切な例が非特許文献４に記述されている。この参考文献のコピーは、非特許文献５から入手できる。
【００２８】
プラン・アサイナ１４０は、２つの情報をランタイム・エバリュエータ１６０へ与える。一方はプラン・アサイナ１４０の変数およびそれらの現在の実行可能な範囲のリストである。他方の情報は、プラン・アサイナ１４０およびランタイム・エバリュエータ１６０の変数の間のマッピングである。
【００２９】
代替抽象的プラン
プラン・アサイナ１４０の変数のいずれかの範囲（可能な値の集合）が空になると、プラン・アサイナ１４０はそれ以降の割り当てを行うことができなるが、その場合にプラン・アサイナ１４０は、プラン・セレクタ１２０に対して代替プランの提供を求めることができる。また問題を惹起したプラン・アサイナ１４０の変数（すなわち、プラン内のノード）についてプラン・セレクタ１２０へ伝えることも可能であり、その結果プラン・セレクタ１２０モジュールは、この成功しなかった割り当て失敗を『避ける』ことができる。つまり、可能性のある実行不能な解が度外視されて、割り当て失敗のレポートを防止する。最上位の代替案の方が、より許容可能となりやすい。
【００３０】
初期プランはマニュアルで作成されるが、ランタイム・エバリュエータ１６０とプラン・アサイナ１４０の間、およびプラン・アサイナ１４０とプラン・セレクタ１２０の間におけるフィードバックによって自動的にマネージされる。プラン・セレクタ１２０は、初期プランの作成に使用されないが、ランタイム制約の侵害がある場合には、代替プランの作成のために呼び出すことができる。
【００３１】
変数マッピング
変数マッパー１４５は、プラン・アサイナ１４０の変数と、その結果として影響を受けるランタイム・エバリュエータ１６０の変数の間の対応を追跡する。変数マッパー１４５は、変数をマップするが、これら２つの変数の集合の間の関数関係を指定しない。
【００３２】
ランタイム・エバリュエータ１６０は、インスタンシエートされたプランＰｉを受け取り、ランタイム変数の値を計算する。その後ランタイム・エバリュエータ１６０は、そのプランがシステムのランタイム制約を侵害しているか否かをチェックする。インスタンシエートされたプランＰｉは、侵害がまったくなければ組み立てられたサービスとして許容可能となる。侵害があれば、ランタイム・エバリュエータ１６０がフィードバック・ジェネレータ１５０とインタラクションを行ってプラン・アサイナ１２０へフィードバックを提供する。
【００３３】
フィードバック
フィードバック・ジェネレータ１５０は、侵害の可能性があるとき、インスタンシエートされたプランＰｉに掛かり合う。フィードバック・ジェネレータ１５０は、フィードバック・ジェネレータ１５０がモニタしているランタイム変数の評価値を参照し、プラン・アサイナ１４０の変数のそれぞれに関する代替値の間における非実行可能性に関してプラン・アサイナ１４０用のフィードバックを用意する。フィードバック・ジェネレータ１５０には、代替プランの値を考察することが期待されていない。その種の考察は、本質的にプラン・アサイナ１４０の役割である。プラン・セレクタ１２０とプラン・アサイナ１４０の間には、仕事の分配がある。フィードバック・ジェネレータ１５０は、プラン・アサイナ１４０と連係して働くが、プラン・セレクタ１２０へはフィードバックを与えない。プラン・アサイナ１４０が、プラン・セレクタ１２０へフィードバックを与える。
【００３４】
ランタイム・エバリュエータ１６０からプラン・アサイナ１４０へのフィードバックは、プラン・アサイナ１４０の変数１、２、．．．ｋを巻き込む実行可能性の制約の項とすることが可能であり、それにおいてｋは、プラン内のプラン・アサイナ１４０の変数の総数とする。
【００３５】
例
個別のサービス・インスタンスおよび応答時間の評価を伴うサービス呼び出しコストのランタイム・メトリックを使用して例を示すが、これはサービスの任意の２つのインスタンスの間における遅延の評価に関する。ランタイム・メトリクスは、最大でｋ個の値まで拡張することができる。このほかの、上記のランタイム・メトリクスの何らかの正規化が行われた関数へマップ可能なメトリクスを使用することもできる。
【００３６】
この例においては、名前が入力として提供される者の個々のアドレスの間をナビゲーションするドライビング方向のリストを生成できるようするために、アプリケーション（複合サービスとして構築）が必要とされている。
【００３７】
図３は、説明している例に関係する３つのタイプのウェブを略図的に表現している。ここには、名前が与えられた者のアドレスを返すことのできるアドレス・ブック・サービス３１０、入力された２つのアドレス間のドライビング方向を返すことのできるディレクション・サービス３２０、名前が与えられた２人の者の場所の間のドライビング方向を返すことのできるＧＰＳディレクション・サービス３３０が含まれている。
【００３８】
次に、これらのサービスを利用可能なサービス・インスタンスとともに表にまとめる。
【００３９】
表２
サービス・タイプ                  サービス・インスタンス
アドレス・ブック・サービス        ＡＤ１，ＡＤ２，ＡＤ３，ＡＤ４
ディレクション・サービス          ＤＤ１，ＤＤ２
ＧＰＳディレクション・サービス    ＧＰＳ１，ＧＰＳ２
【００４０】
図４は、プランＰ１  ４００およびプランＰ２  ４００’として、プラン・セレクタ１２０の可能な選択を略図的に表現している。プランＰ１  ４００の場合のプラン・アサイナ１４０の選択肢は、Ｌ＝｛ＧＰＳ１，ＧＰＳ２｝である。プランＰ２  ４００’の場合のプラン・アサイナ１４０の選択肢は、Ａ１，Ａ２＝｛ＡＤ１，ＡＤ２，ＡＤ３，ＡＤ４｝およびＤ＝｛ＤＤ１．ＤＤ２｝である。
【００４１】
コストのランタイム値は、可能な値Ｃ＝｛２５，５０，１００，２００｝を有する。すなわちコストは、ドルで２５、５０、１００、２００のいずれかになる。それぞれのサービスについてのコスト評価Ｃを次の表３に示す。
【００４２】
表３
ＡＤ１      ←→      ２５
ＡＤ２      ←→      ２５
ＡＤ３      ←→      ２５
ＡＤ４      ←→      ５０
ＧＰＳ１    ←→      ２００
ＧＰＳ２    ←→      ２００
ＤＤ１      ←→      ２５
ＤＤ２      ←→      ５０
【００４３】
上記の表３から明らかな唯一の制約は、コストＣが１００単位より少ないということである。このマッピングは、コストＣに寄与することのできるインスタンシエートされたプラン内のすべてのサービスである。ランタイム・エバリュエータ１６０は、各サービス・インスタンスのコストを評価し、必要に応じてサービス・インスタンスならびにそれに関連付けされたコストを更新することによって、上記の表３を維持する。
【００４４】
次の表４は、プランの繰り返しの結果としてもたらされるシステム・トレースである。
【００４５】
表４
繰り返し１
プラン・セレクタ１２０の出力  Ｐ１
プラン・アサイナ１４０の出力  Ｌ＝ＧＰＳ１
プラン・アサイナ１４０の変数およびそれらの可能な範囲
マッピング、（Ｌ→Ｃ）
変数ＬがＣに寄与する
ランタイム・エバリュエータ１６０の出力
分析、Ｃ＞１００（侵害）
フィードバック、Ｃ＜１００
プラン・アサイナ１４０のフィードバック
Ｌは可能な（より低い）割り当てを有していない
フィードバック、Ｌ＝ＮＩＬ
繰り返し２
プラン・セレクタ１２０の出力  Ｐ２
プラン・アサイナ１４０の出力  Ａ１＝ＡＤ１
Ａ２＝ＡＤ４
Ｄ＝ＤＤ１
プラン・アサイナ１４０の変数およびそれらの可能な範囲
マッピング、（Ａ１，Ａ２，Ｄ→Ｃ）
変数Ａ１，Ａ２，ＤがＣに寄与する
ランタイム・エバリュエータ１６０の出力
分析、Ｃ＝１００（侵害）
フィードバック、Ｃ＜１００
プラン・アサイナ１４０のフィードバック
Ａ１はより低い割り当てを有していない
Ａ２はより低い割り当てを有している
Ｄはより低い割り当てを有していない
故に
Ａ１，Ｄにおける変更は可能でない
Ａ２は実行可能な代替案を有している
繰り返し３
プラン・セレクタ１２０の出力  Ｐ２
プラン・アサイナ１４０の出力  Ａ１＝ＡＤ１
Ａ２＝ＡＤ２
Ｄ＝ＤＤ１
プラン・アサイナ１４０の変数およびそれらの可能な範囲
マッピング、（Ａ１，Ａ２，Ｄ→Ｃ）
変数Ａ１，Ａ２，ＤがＣに寄与する
ランタイム・エバリュエータ１６０の出力
分析、Ｃ＝７５（侵害なし）
【００４６】
応答時間変数の最適化
ランタイム変数、Ｒ＝｛２５，５０，１００，２００｝。応答時間Ｒは、２５、５０、１００、２００のうちのいずれかになる。次に示す表５は、４０より低いとする応答時間Ｒの制約を受けるサービスの各ペアについて、応答時間の評価を表にまとめている。
【００４７】
表５
ＡＤ１‐ＤＤ１    ←→    ５０
ＡＤ２‐ＤＤ１    ←→    ３０
ＡＤ３‐ＤＤ１    ←→    ２５
ＡＤ４‐ＤＤ１    ←→    ４０
ＡＤ１‐ＤＤ２    ←→    ６０
ＡＤ２‐ＤＤ２    ←→    ６０
ＡＤ３‐ＤＤ２    ←→    ６０
ＡＤ４‐ＤＤ２    ←→    ６０
ＧＰＳ１          ←→    １００
（往復）         ←→    ２００
ＧＰＳ２
（往復）
【００４８】
プラン内にあるいずれかの（クリティカル）パス上にマップされたすべてのサービスは、応答時間Ｒに寄与することができる。作業の流れプランの応答時間は、プラン内の任意のパスに沿った最小応答時間の最大値である。対応するパスは、そのプランのクリティカル・パスと呼ばれる。次の表６は、プランの繰り返しの結果としてもたらされるシステム・トレースである。
【００４９】
表６
繰り返し１
プラン・セレクタ１２０の出力  Ｐ１
プラン・アサイナ１４０の出力  Ｌ＝ＧＰＳ１
プラン・アサイナ１４０の変数およびそれらの可能な範囲
マッピング、（Ｌ→Ｒ）
変数ＬがＲに寄与する
ランタイム・エバリュエータ１６０の出力
分析、Ｒ＝１００（侵害）
フィードバック、Ｒ＜４０
プラン・アサイナ１４０のフィードバック
Ｌは可能な（より低い）割り当てを有していない
フィードバック、Ｌ＝ＮＩＬ
繰り返し２
プラン・セレクタ１２０の出力  Ｐ２
プラン・アサイナ１４０の出力  Ａ１＝ＡＤ１
Ａ２＝ＡＤ４
Ｄ＝ＤＤ１
プラン・アサイナ１４０の変数およびそれらの可能な範囲
マッピング、（Ａ１，Ｄ）または（Ａ２，Ｄ）→Ｒ）
変数Ａ１およびＤまたはＡ２およびＤがＲに寄与する
ランタイム・エバリュエータ１６０
分析、Ｒ＝４０（侵害）
フィードバック、Ｒ＜４０
Ｄ＝ＤＤ１の場合の可能な割り当ては、
Ａ１はＡＤ２／ＡＤ３を有する
Ａ２はＡＤ２／ＡＤ３を有する
プラン・アサイナ１４０のフィードバック
Ｄの値における変更はない
Ａ１は代替案ＡＤ２およびＡＤ３を有し、Ａ２についても同じ
繰り返し３
プラン・セレクタ１２０の出力  Ｐ２
プラン・アサイナ１４０の出力  Ａ１＝ＡＤ２
Ａ２＝ＡＤ３
Ｄ＝ＤＤ１
プラン・アサイナ１４０の変数およびそれらの可能な範囲
マッピング、（Ａ１，Ｄ）または（Ａ２，Ｄ）→Ｒ）
変数Ａ１およびＤまたはＡ２およびＤがＲに寄与する
ランタイム・エバリュエータ１６０
分析、Ｒ＝３０（侵害なし）
【００５０】
コンピュータ・ソフトウエア
次の表７は、ここに説明されているようなサービスの組み立てに使用できる擬似コードのアルゴリズムを表している。このアルゴリズムは、ＣまたはＪａｖａ（Ｒ）プログラミング言語等の標準的なプログラミング言語を使用して具体化することができる。
【００５１】
表７
１．  ＡＰ＝プラン・セレクタを使用して見つける抽象的プラン
２．  ＡＰが空であれば、
ａ．  失敗（作業の流れが存在しない）
３．  ＡＰ内の各変数に対するサービス・インスタンスの割り当てを行い、具体的なプランＰを作る
４．  完全な割り当てが見つからなかった場合（Ｐがヌル）
ａ．  ステップ１へ戻る（プラン・セレクタ）
５．  プラン変数とランタイム変数の間のマッピングを定義する
６．  ランタイム・エバリュエータへ送る
７．  Ｐがランタイム制約を侵害していなければ
ａ．  Ｐを実行する
ｂ．  終了
８．  侵害しているときは
ａ．  フィードバックを生成する
ｂ．  ステップ３へ戻る
【００５２】
コンピュータ・ハードウエア
図５は、ここで説明したような複合サービスの組み立てに適したタイプのコンピュータ・システム５００を略図的に示している。コンピュータ・ソフトウエアは、コンピュータ・システム５００上にインストールされた適切なオペレーティング・システムの下に実行され、ここで説明したテクニックの実行を援助する。このコンピュータ・ソフトウエアは、任意の適切なコンピュータ・プログラミング言語を使用してプログラムされる。
【００５３】
コンピュータ・システム５００のコンポーネントには、コンピュータ５２０、キーボード５１０ならびにマウス５１５、およびビデオ・ディスプレイ５９０が含まれる。コンピュータ５２０は、プロセッサ５４０、メモリ５５０、入力／出力（Ｉ／Ｏ）インターフェース５６０、５６５、ビデオ・インターフェース５４５、およびストレージ・デバイス５５５を含む。
【００５４】
プロセッサ５４０は、オペレーティング・システムならびにオペレーティング・システムの下に実行されるコンピュータ・ソフトウエアを実行する中央処理ユニット（ＣＰＵ）である。メモリ５５０は、ランダム・アクセス・メモリ（ＲＡＭ）および読み出し専用メモリ（ＲＯＭ）を含み、プロセッサ５４０の管理の下に使用される。
【００５５】
ビデオ・インターフェース５４５は、ビデオ・ディスプレイ５９０に接続されており、ビデオ・ディスプレイ５９０上における表示のためのビデオ信号を提供する。コンピュータ５２０を操作するためのユーザ入力は、キーボード５１０ならびにマウス５１５から提供される。ストレージ・デバイス５５５は、ディスク・ドライブまたはそのほかの任意の適切なストレージ・メディアを含むことができる。
【００５６】
コンピュータ５２０のコンポーネントのそれぞれは、データ・バス、アドレス・バス、およびコントロール・バスを含む内部バス５３０に接続されており、コンピュータ５２０のコンポーネントは、バス５３０を介して相互に通信することができる。
【００５７】
コンピュータ・システム５００は、入力／出力（Ｉ／Ｏ）インターフェース５６５を介し、インターネット５８０として示されているネットワークへ向かう通信チャンネル５８５を使用して、１ないしは複数のほかの類似のコンピュータへ接続することができる。
【００５８】
コンピュータ・ソフトウエアは、ポータブル・ストレージ・メディア上への記録が可能であり、その場合には、コンピュータ・ソフトウエアがストレージ・デバイス５５５からコンピュータ・システム５００によってアクセスされる。それに代えてコンピュータ・ソフトウエアが、インターネット５８０からコンピュータ５２０によって直接アクセスされるようにすることも可能である。いずれの場合においてもユーザは、キーボード５１０ならびにマウス５１５を使用してコンピュータ・システム５００とインタラクションを行い、コンピュータ５２０上において実行中のプログラムされたコンピュータ・ソフトウエアを操作することができる。
【００５９】
このほかの構成もしくはタイプのコンピュータ・システムについても、同様にネットワーク・サービスの組み立ての演算側面の遂行に使用することができる。上記のコンピュータ・システム５００は、ここで説明したテクニックの具体化に適している特定タイプのシステムの単なる例として説明されているに過ぎない。
【００６０】
結論
当業者には明らかであろうが、ここで説明したテクニックならびに構成に対して各種の変更および修正を行うことができる。
【図面の簡単な説明】
【００６１】
【図１】複合サービスを構築するためのシステムのコンポーネントの略図表現である。
【図２】複合ネットワーク・サービスを組み立てるための第１および第２の構成のコンポーネントを、図１より詳細に示した略図表現である。
【図３】ウェブ・アプリケーションによる使用が可能な３つの異なるサービスの略図表現である。
【図４】図３に示されている例において使用できる２つの代替プランの略図表現である。
【図５】ネットワーク・サービスの組み立てに適したコンピュータ・システムの略図表現である。
【符号の説明】
【００６２】
１１０  プラン・セレクタ
１２０  プラン・セレクタ
１４０  プラン・アサイナ
１４５  変数マッパー
１５０  フィードバック・ジェネレータ
１６０  ランタイム・エバリュエータ
３１０  アドレス・ブック・サービス
３２０  ディレクション・サービス
３３０  ＧＰＳディレクション・サービス
４００  プランＰ１
４００’プランＰ２
５００  コンピュータ・システム
５１０  キーボード
５１５  マウス
５２０  コンピュータ
５３０  内部バス
５４０  プロセッサ
５４５  ビデオ・インターフェース
５５０  メモリ
５５５  ストレージ・デバイス
５６０  入力／出力（Ｉ／Ｏ）インターフェース
５６５  入力／出力（Ｉ／Ｏ）インターフェース
５８０  インターネット
５８５  通信チャンネル
５９０  ビデオ・ディスプレイ
【図１】
2005166040.tif 000003
【図２】
2005166040.tif 000004
【図３】
2005166040.tif 000005
【図４】
2005166040.tif 000006
【図５】
2005166040.tif 000007