(57)【要約】  より複雑なタスクを達成する一続きのサービスの各サービスの入力および出力で生じ得る適切な変換を指定するための宣言的なモデル。サービスの各々は、適切な変換宣言へのアクセスを有することができ、宣言を解釈して、それによって変換に関しその入力データおよび／または出力データで生じるよう適切に仕向けることができる。変換を変更するために、変換宣言は変えることができる。
2009530738.tif 000002
【特許請求の範囲】
【請求項１】
データ構造を有する１つまたは複数のコンピュータ可読媒体であって、前記データ構造は、
各々が一続きの２つ以上のサービス中のサービスを識別する複数のサービス識別フィールドと、
前記一続きのサービスに提供されるのに先立って入力データ、前記一続きのサービス中の前記複数のサービスのうちの２つのサービスの間で提供されるサービス間データ、または前記一続きのサービスから出力される出力データのいずれかに対して行われる変換のクラスを指定する変換クラスフィールドと、
前記変換のクラスの１つまたは複数のパラメータを識別して、それによって前記変換をより具体的に定義する１つまたは複数の変換パラメータフィールドと
を含むことを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項２】
前記複数のサービス識別フィールド、前記変換のクラスのクラスフィールド、および前記１つまたは複数の変換パラメータフィールドは、テキストを使用して指定されることを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３】
前記変換クラスフィールドは、前記一続きのサービスに提供されるのに先立って前記入力データに対して行われる変換のクラスを指定し、前記コンピュータ可読媒体は、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドを解釈するためのコンピュータ実行可能命令と、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドの組合せによって指定される前記変換を行なうためのコンピュータ実行可能命令と
をさらに有することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４】
前記変換クラスフィールドは、前記サービス間データに対して行われる変換クラスを指定し、前記コンピュータ可読媒体は、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドを解釈するためのコンピュータ実行可能命令と、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドの組合せによって指定される前記変換を行なうためのコンピュータ実行可能命令と
をさらに有することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項５】
前記変換クラスフィールドは、前記一続きのサービスから出力された前記出力データに対して行われる変換クラスを指定し、前記コンピュータ可読媒体は、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドを解釈するためのコンピュータ実行可能命令と、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドの組合せによって指定される前記変換を行なうためのコンピュータ実行可能命令と
をさらに有することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項６】
前記変換クラスフィールドは、第１の変換クラスフィールドであり、前記変換のクラスは、第１のクラス変換であり、前記変換は、第１の変換であり、前記１つまたは複数の変換パラメータフィールドは、第１の１つまたは複数の変換パラメータフィールドであり、前記第１の変換クラスフィールドは、前記一続きの１つまたは複数のサービスに提供されるのに先立って前記入力データに対して行われる変換クラスを指定し、前記コンピュータ可読媒体は、
前記一続きのサービス中の前記複数のサービスのうちの２つのサービス間で提供される前記サービス間データに対して行われる第２の変換クラスを指定する第２の変換クラスフィールドと、
前記第２の変換のクラスの１つまたは複数のパラメータを識別して、それによって前記第２の変換をより具体的に定義する第２の１つまたは複数の変換パラメータフィールドと
をさらに有することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項７】
前記コンピュータ可読媒体は、
前記一続きのサービスから出力される前記出力データに対して行われる第３の変換のクラスを指定する前記第３の変換クラスフィールドと、
前記第３の変換のクラスの１つまたは複数のパラメータを識別して、それによって前記第３の変換をより具体的に定義する第３の１つまたは複数の変換パラメータフィールドと
をさらに有することを特徴とする請求項６に記載の１つまたは複数のコンピュータ可読媒体。
【請求項８】
前記変換クラスフィールドは、第１の変換クラスフィールドであり、前記変換クラスは、第１のクラス変換であり、前記変換は、第１の変換であり、前記１つまたは複数の変換パラメータフィールドは、第１の１つまたは複数の変換パラメータフィールドであり、前記第１の変換クラスフィールドは、前記一続きの１つまたは複数のサービスに提供されるのに先立って前記入力データに対して行われる変換クラスを指定し、前記コンピュータ可読媒体は、
前記一続きのサービスから出力される前記出力データに対して行われる第２の変換のクラスを指定する第２の変換クラスフィールドと、
前記第２の変換のクラスの１つまたは複数のパラメータを識別して、それによって前記第２の変換をより具体的に定義する第２の１つまたは複数の変換パラメータフィールドと
をさらに有することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項９】
前記変換クラスフィールドは、第１の変換クラスフィールドであり、前記変換のクラスは、第１のクラス変換であり、前記変換は、第１の変換であり、前記１つまたは複数の変換パラメータフィールドは、第１の１つまたは複数の変換パラメータフィールドであり、前記第１の変換クラスフィールドは、前記一続きのサービス中の前記複数のサービスのうちの２つのサービス間で提供される前記サービス間データに対して行われる変換クラスを指定し、前記コンピュータ可読媒体は、
前記一続きのサービスから出力される前記出力データに対して行われる第２の変換のクラスを識別する第２の変換クラスフィールドと、
前記第２の変換のクラスの１つまたは複数のパラメータを識別して、それによって前記第２の変換をより具体的に定義する第２の１つまたは複数の変換パラメータフィールドと
をさらに有することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１０】
前記１つまたは複数のコンピュータ可読媒体は、物理的記憶媒体であることを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１１】
前記１つまたは複数のコンピュータ可読媒体は、物理的メモリ媒体であることを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１２】
前記変換クラスは、パラメータマッピング変換を備えたことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１３】
前記変換のクラスは、フォーマットコンバージョン変換を含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１４】
前記複数のサービスのうちの前記少なくとも１つまたは複数は、前記複数のサービスのうちのその他の少なくとも１つまたは複数と異なるネットワークノードにあることを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１５】
前記複数のサービスは、前記入力データを生成したコンポーネントと比べて、１つまたは複数の異なるネットワークノードにあることを特徴とする請求項１４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１６】
サービスが別のネットワークノードからの入力データを受信および処理するための方法であって、
サービスおよび関連する入力データに関する要求を受信するアクトと、
各々が一続きの２つ以上のサービス中のサービスを識別し、そのうちの少なくとも１つが、前記要求されたサービスを識別する複数のサービス識別フィールドと、前記一続きの２つ以上のサービスに提供されるのに先立って入力データに対して行われる変換クラスを指定する変換クラスフィールドと、前記変換のクラスの１つまたは複数のパラメータを識別して、それによって前記変換をより具体的に定義する１つまたは複数の変換パラメータフィールドとを含むデータ構造にアクセスするアクトと、
前記サービス要求が前記複数のサービスのうちの１つに関することを判定するアクトと、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドを解釈するアクトと、
前記入力データに対して前記変換を行うことによって、前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドの組合せによって指定された前記変換を行なうアクトと
を備えることを特徴とする方法。
【請求項１７】
前記変換クラスフィールドは、第１の変換クラスフィールドであり、前記変換のクラスは、第１のクラス変換であり、前記変換は、第１の変換であり、前記１つまたは複数の変換パラメータフィールドは、第１の１つまたは複数の変換パラメータフィールドであり、前記データ構造は、前記一続きのサービス中の次のサービスに提供されるのに先立って、または前記サービスによって出力されるのに先立って、出力データに対して行われる変換のクラスを指定する第２の変換クラスフィールドと、前記変換のクラスの１つまたは複数のパラメータを識別して、それによって前記変換をより具体的に定義する１つまたは複数の変換パラメータフィールドとをさらに含み、前記方法は、
前記サービス要求を処理して、結果として生じるデータを生成するアクトと、
前記第２の変換クラスフィールドおよび前記第２の１つまたは複数の変換パラメータフィールドを解釈するアクトと、
結果として生じるデータに対して前記変換を行なうことによって、前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドの組合せによって指定される前記第２の変換を行なうアクトと
をさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
コンピューティングシステムの１つまたは複数のプロセッサによって実行されるとき、前記コンピューティングシステムに請求項１６に記載の方法を行わせるコンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読媒体を備えたことを特徴とするコンピュータプログラムプロダクト。
【請求項１９】
サービスが結果として生じるデータを処理するための方法であって、
サービス要求を処理して、結果として生じるデータを生成するアクトと、
前記一続きのサービス中の次のサービスに提供されるのに先立って、または前記サービスによって出力されるのに先立って、結果として生じるデータに対して行われる変換のクラスを指定する変換クラスフィールドと、前記変換クラスの１つまたは複数のパラメータを識別して、それによって前記変換をより具体的に定義する１つまたは複数の変換パラメータフィールドとを含むデータ構造にアクセスするアクトと、
前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドを解釈するアクトと、
結果として生じるデータに対して前記変換を行なうことによって、前記変換クラスフィールドおよび前記１つまたは複数の変換パラメータフィールドの組合せによって指定される前記変換を行なうアクトと
を備えることを特徴とする方法。
【請求項２０】
コンピューティングシステムの１つまたは複数のプロセッサによって実行されるとき、前記コンピューティングシステムに請求項１９に記載の方法を行わせるコンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読媒体を備えたことを特徴とするコンピュータプログラムプロダクト。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティング技術は、人類の進歩に大いに貢献した。コンピューティングシステムは、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末、電話、ならびに、例えば、冷蔵庫や自動車など、通常、コンピューティングシステムと考えられていないデバイスも含めて、様々な物理的形態で提供されている。それゆえ、コンピューティングシステムは、任意のタイプのプロセッサおよびメモリを有するどんなデバイスまたはシステムであってもよい。コンピューティングシステムは、ネットワークシステム内でのように、共に協働する構成要素としてのコンピューティングシステムさえ有する場合がある。それに応じて、コンピューティングシステムは、手のひらに簡単にフィットし得るものもあれば、全世界に分散させることができるものもある。
【０００２】
最も一般に使用されるアプリケーションの多くは、ネットワーク技術に依拠する。かかるアプリケーションは、例えば、電子メール、インスタントメッセージング、ウェブブラウジング、遠隔ネットワークアクセス、電子ホワイトボード、ボイスオーバＩＰ電話通信、ビデオ会議、遠隔同期、およびその他の多くを含む。現在、インターネット上で提供される多くのサービスが存在する。かかるサービスのバラエティは可算的であり、日々増えている。例えば、中でも、サーチエンジンサービス、会社特定サービス、株価サービス、電子メールサービス、遠隔コンピュータアクセスサービス、オンラインオークションサービスが存在する。
【０００３】
時には、より複雑なタスクの実行は、シーケンス中の複数サービスのサービスを伴う。これらサービスのうちの１つからの出力は、別のサービスの入力に提供され、最終結果に達するまで、以下同様に行われる。ユーザ入力は、そのユーザが人であるか、またはコンピューティングシステムおよび／またはコンピューティングシステム上で稼働している１つまたは複数のプロセスであるかを認識する第１のサービスに提供される。そのユーザ入力は、第１のサービスによって認識される形式に変換される必要がある可能性がある。最終サービスは、結果として生じるデータを、エンドユーザに提示される前に変換される必要がある可能性のある形式で提供する。さらに、１つのサービスがシーケンス中の次のサービスと通信するとき、サービス間でデータを適切に変換するために、変換が必要になる場合もある。それゆえ、サービスがユーザと通信したり、互いに通信したりすることを可能にするために、入力データおよび出力データに対して様々な変換が行われることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通常、変換は、変換の各々について特定の専用のコードを使用して行われる。それゆえ、コードを使用して、ユーザデータが第１のサービスに対する入力のために適切な形式に変換されるであろうし、コードをサービスの各々の間で使用して、適切な変換が行われるであろうし、コードを使用して、結果としてのデータが最終サービスからユーザによって理解される形式に変換されるであろう。かかるコードの起草は時間がかかる活動であり、経験を積んだソフトウェアプログラマの能力を必要とする。
【課題を解決するための手段】
【０００５】
必須ではないが、本発明の実施形態は、複雑なサービス要求を満たすために、順次に実行される、一続きの２つ以上のサービスが存在する環境で適用することができる。これらのサービスの各々の入力および出力で適切な変換を達成するために、変換は、行われる変換のクラスを指定する変換クラスフィールド、ならびに変換をより具体的に定義する（１つまたは複数の）変換パラメータフィールドを使用することによって宣言的に指定することができる。変換宣言は、サービスの各々で利用可能にすることができ、それにより、変換を行う際に適切な指示を与える。
【０００６】
この要約は、詳細な説明において、下記でさらに説明される一揃いの概念を、簡素化された形式で紹介するために提供される。この要約は、特許請求の範囲に記載の主題の主要な特徴または本質的な特徴を特定することも、特許請求の範囲に記載の主題の範囲を決定する際の助けとして使用されることも意図されていない。
【０００７】
添付の図面は、本発明の実施形態をより具体的に説明するために使用される。これらの図面が本発明の典型的な実施形態だけを示し、したがって、その範囲を限定すると考えるべきでない点を理解して、実施形態は、添付の図面の使用を通じて追加の具体性および詳細と共に記載および説明されるであろう。
【発明を実施するための最良の形態】
【０００８】
本発明の実施形態は、より複雑なタスクを達成する一続きのサービスの各サービスの入力および出力で生じ得る適切な変換を指定するための宣言的モデルに及ぶ。サービスの各々は、適切な変換宣言へのアクセスを有することができ、それら宣言を解釈して、それによって変換に関しその入力データおよび／または出力データで生じるよう適切に仕向けることができる。変換を変更するために、各変換を達成する、基礎となるコードを変えるのではなく、変換宣言を変えることができる。
【０００９】
本発明の実施形態は、下記でより詳細に論じられるように、様々なコンピュータハードウェアを含む、専用コンピュータまたは汎用コンピュータを備えることができる。図１は、本発明の特徴を実装するために使用することができる例示的なコンピューティングシステム１００の概略図である。説明されるコンピューティングシステムは、かかる適切なコンピューティングシステムの単なる一例であり、本発明の使用または機能の範囲に関して何らの限定を示唆することも意図されない。また、本発明は、図１に例示される構成要素のうちの任意１つまたはそれらの組合せに関して、いかなる依存性または要件を有するものとして解釈するべきではない。
【００１０】
コンピューティングシステムは、現在、ますます、様々な形態をとりつつある。コンピューティングシステムは、例えば、ハンドヘルドデバイス、アプライアンス、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散型コンピューティングシステム、または通常、コンピューティングシステムと見なされないデバイスでさえあり得る。この説明および特許請求の範囲において、用語「コンピューティングシステム」は、少なくとも１つのプロセッサと、プロセッサによって実行することができるコンピュータ実行可能命令を有することが可能なメモリとを含む任意のデバイスまたはシステム（またはその組合せ）を含むものとして広く定義される。メモリは、任意の形態をとることが可能であり、コンピューティングシステムの性質および形態に依存することがある。コンピューティングシステムは、ネットワーク環境上で分散されることがあり、構成要素としての複数のコンピューティングシステムを含み得る。
【００１１】
図１を参照すると、その最も基本的な構成において、コンピューティングシステム１００は、通常、少なくとも１つの処理ユニット１０２とメモリ１０４とを含む。メモリ１０４は、揮発性、不揮発性、またはそれら２つの組合せであり得るシステムメモリであってよい。揮発性メモリの例は、ランダムアクセスメモリ（ＲＡＭ）を含む。不揮発性メモリの例は、読出し専用メモリ（ＲＯＭ）、フラッシュメモリなどを含む。用語「メモリ」はまた、本明細書で、物理的な記憶媒体など、不揮発性の大容量記憶装置を指すために使用することもできる。かかる記憶装置は、リムーバブルまたは非リムーバブルであってよく、ＰＣＭＣＩＡカード、磁気ディスクおよび光ディスク、磁気テープなどを含み得る（しかし、それらに限定されない）。
【００１２】
本明細書で使用されるように、用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行するソフトウェアオブジェクトまたはルーチンを指すことがある。本明細書で説明される異なるコンポーネント、モジュール、エンジン、およびサービスは、（例えば、個別のスレッドとして）コンピューティングシステム上で実行するオブジェクトまたはプロセスとして実装することができる。本明細書で説明されるシステムおよび方法は、ソフトウェアで実装することが可能であるものの、ハードウェア、およびソフトウェアとハードウェアの組合せでの実装も可能であり、また企図されている。
【００１３】
続く説明では、本発明の実施形態は、１つまたは複数のコンピューティングシステムによって行われるアクトを参照して説明される。かかるアクトがソフトウェアで実施される場合、アクトを行う関連するコンピューティングシステムの１つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答して、コンピューティングシステムのオペレーションを方向付ける。かかるオペレーションの例は、データの操作を含む。コンピュータ実行可能命令（および操作されたデータ）は、コンピューティングシステム１００のメモリ１０４に格納することができる。
【００１４】
コンピューティングシステム１００はまた、コンピューティングシステム１００が、例えば、ネットワーク１１０上で、その他のコンピューティングシステムと通信することを可能にする通信チャネル１０８を収容することもできる。通信チャネル１０８は、通信媒体の例である。通信媒体は、通常、搬送波またはその他のトランスポート機構など、変調されたデータ信号に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを具体化し、任意の情報配信媒体を含む。限定ではなく、例として、通信媒体は、有線ネットワークおよび直接配線接続などの有線媒体と、音響媒体、無線媒体、赤外線媒体、およびその他の無線媒体などの無線媒体とを含む。本明細書で使用される用語「コンピュータ可読媒体」は、記憶媒体と通信媒体の両方を含む。
【００１５】
本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を格納するか、または担持するためのコンピュータ可読媒体も含む。かかるコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータによってアクセスすることができる任意の利用可能な媒体であり得る。限定ではなく、例として、かかるコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくはその他の光ディスク記憶装置、磁気ディスク記憶装置もしくはその他の磁気記憶デバイス、またはコンピュータ実行可能命令もしくはデータ構造の形で、所望のプログラムコード手段を担持または格納するために使用することができ、汎用コンピュータまたは専用コンピュータによってアクセスすることができる任意のその他の媒体など、物理的な記憶装置および／またはメモリ媒体を備えることができる。情報が（ハードワイヤード、無線、またはハードワイヤードおよび無線の組合せで）ネットワークまたはその他の通信接続上でコンピュータに転送または提供される場合、コンピュータは、正しくその接続をコンピュータ可読媒体と見なす。それゆえ、任意のかかる接続は、正しくコンピュータ可読媒体と呼ばれる。上記の組合せは、コンピュータ可読媒体の範囲内にも含まれるべきである。
【００１６】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに一定の機能または一群の機能を行わせる命令およびデータを含む。主題について、構造的な特徴および／または方法論的なアクトに特有の言葉で説明されているが、添付の特許請求の範囲に定義される主題は、本明細書で説明される特定の特徴またはアクトに必ずしも限定されない点を理解されたい。むしろ、本明細書で説明される特定の特徴およびアクトは、特許請求の範囲を実装する例示的な形態として開示される。
【００１７】
図２は、本発明の原理を採用することができる環境２００を例示している。環境２００は、例えば、シーケンス中の第１のサービス２１１と、第２のサービス２１２と、最終サービス２１３と含む、一続きのサービス２１０を含む。しかし、第２のサービスおよび最終サービス２１２および２１３の間に置かれた横方向の省略記号２１４によって表されるように追加のサービスが存在し得る。さらに、シーケンス中に２つのサービスだけが存在することもあり、その場合、第２のサービス２１２は、シーケンス２１０中の最終サービス２１３と同じになるかもしれない。環境２００はまた、入力データを一続きのサービス２１０に提供するデータ入力エンティティ２０１および一続きのサービス２１０からの結果として生じる出力データを消費するデータ出力エンティティ２０２も含む。
【００１８】
一続きのサービスは、複雑なタクスが達成されることを可能にするために、順次に行われることができる。例えば、複雑なタクスは所与の地理的地域内のすべての企業に関する株価を得るためであると仮定する。これは、指定されたエリア内の企業のリストを返すことによって緯度および経度の座標範囲に応答するマップサービスの形で第１のサービスを使用することによって達成することができる。財務サービスの形態で第２のサービスは、次いで、第１のサービスによって返された、リストされた企業のすべてに関して株価を取得する。このシナリオは、以下で「マップベースの株価」シナリオと呼ばれるであろう。
【００１９】
必須ではないが、シーケンス中のサービスはネットワークにわたって分散することができる。例えば、第１のサービス２１１は、１つのネットワークノードに位置することができ、第２のサービス２１２は、別のネットワークノードに存在することができる。しかし、サービスのいくつかまたはすべては、同じネットワークノードに存在することもある。サービスは、例えば、ウェブサービスであってよく、またはローカルもしくは遠隔でファンクションコールを行うことができる任意のコンポーネントまたはモジュールであってもよい。データ入力エンティティ２０１およびデータ消費エンティティ２０２は、同じコンピューティングシステムでも、または異なるコンピューティングシステムであってもよく、サービス２１０と比べて、異なるネットワークノードに位置することができ、または、おそらくは１つまたは複数のサービス２１０と同じネットワークノードにあってもよい。この説明および特許請求の範囲において、２つのコンピューティングシステムがネットワークプロトコルを使用して通信する場合、それらは異なるネットアークノードにある。
【００２０】
一連のサービスが通信するために、入力データおよび／または出力データの何らかの変換が有用である可能性がある。例えば、上述のマップベースの株価シナリオでは、マップサービスは企業の名前だけを提供するが、ティッカーシンボル（ｔｉｃｋｅｒ  ｓｙｍｂｏｌ）は提供せず、財務サービスは株価を期待すると仮定する。その場合、企業名がティッカーシンボルにマップされる点でマッピング変換が生じるであろう。あるいは、マップサービスが企業名をＸＭＬ形式で生成し、財務サービスは、特定のその他の種類の非ＸＭＬオブジェクトとして入力を期待すると仮定する。その場合、何らかの形式コンバージョンが生じるかもしれない。変換はまた、マップサービスへのデータ入力に対して生じた可能性もある。例えば、おそらくはデータ入力エンティティは、「緯度」および「経度」と呼ばれるパラメータを生成し、マップサービスは、それぞれ「ｌａｔ」および「ｌｏｎｇ」と呼ばれるパラメータを期待するかもしれない。データ出力エンティティによって消費することができる形式で結果としてのデータを提供するために、変換はまた、財務サービスの出力で生じることもある。
【００２１】
図２を参照すると、例えば、第１のサービス２１１は、入力変換コンポーネント２１１Ａによって表されるように、データ入力エンティティ２０１から受信されたその入力データ２１１に対して１つまたは複数の変換を行うことができ、出力変換コンポーネント２１１Ｂによって表されるように、その出力データ２２２に対して１つまたは複数の変換を行うことができる。また、第２のサービス２１２は、入力変換コンポーネント２１２Ａを使用して、その入力データ２２２に対して（１つまたは複数の）変換を行うことができ、出力変換コンポーネント２１２Ｂを使用して、その出力データ２２３に対して（１つまたは複数の）変換を行うことができ、一続きのサービス２１０内のその他のサービスに対して、以下同様である。最後に、最終サービス２１３は、入力変換コンポーネント２１３Ａを使用して、その入力データ２２４に対して（１つまたは複数の）変換を行うことができ、出力変換コンポーネント２１３Ｂを使用して、その出力データ２２５に対して（１つまたは複数の）変換を行うことができる。
【００２２】
各変換についてカスタムコードを起草することによってかかる変換を行うのではなく、本発明の実施形態は、データ構造を使用して、宣言的に変換を定義する。図３は、データ構造３００の例を示す。データ構造３００は、一続きのサービス内の各サービスのためのサービス識別フィールドを含む。例えば、第１のサービス情報３０１は、第１のサービス（図２の第１のサービス２１１を参照）を識別するサービス識別子フィールド３１１を含む。同様に、第２のサービス情報３０２は、図２の第２のサービス２１２を識別することができ、最終サービス情報３０３は、図２の最終サービス２１３を識別することができる。縦方向の省略記号３０４は、その他のサービスに関してその他の類似の情報が存在し得ることを表している。
【００２３】
各サービスについて、サービスによって処理されるのに先立って入力データに対して行われる変換のクラスを識別する入力変換クラスフィールド３１２Ａ、ならびに、変換のクラスの１つまたは複数のパラメータを識別して、それによってより具体的に変換を定義する１つまたは複数の変換パラメータフィールド３１２Ｂを含む１つまたは複数の入力変換識別フィールド３１２が潜在的に存在し得る。縦方向の省略記号３１２Ｃによって表されるように、任意の所与のサービスに関して１つより多い入力変換が存在し得る。指定された入力変換が存在しないこともある。
【００２４】
変換クラスおよび（１つまたは複数の）変換パラメータの組合せは、より具体的な変換を指定するために使用することができる。変換のクラスの例は、パラメータマッピング変換またはフォーマットコンバージョン変換を含み得る。例えば、変換クラスはパラメータマッピングクラスであると仮定する。パラメータの例は、例えば、どのパラメータ名（例えば、「緯度」または「経度」）がどのパラメータ名（例えば、それぞれ、「ｌａｔ」または「ｌｏｎｇ」）にマップされるべきかの識別を含む可能性もある。
【００２５】
同様に、各サービスについて、サービスによって処理されるのに先立って出力データに対して行われる変換のクラスを識別する出力変換クラスフィールド３１３Ａ、ならびに、変換のクラスの１つまたは複数のパラメータを識別して、それによってより具体的に出力変換を定義する１つまたは複数の変換パラメータフィールド３１３Ｂを含む１つまたは複数の出力変換識別フィールド３１３が潜在的に存在し得る。縦方向の省略記号３１３Ｃによって表されるように、任意の所与のサービスに関して１つより多い出力変換が存在し得る。指定された出力変換が存在しないこともある。変換クラスおよび（１つまたは複数の）変換パラメータの組合せもまた、より具体的な出力変換を識別するために使用することもできる。
【００２６】
先に述べたように、第１のサービス情報３０１に関して上述したフィールドの各々は、対応する第２のサービス２１２および最終サービス２１３に関する第２のサービス情報３０２および最終サービス情報３０３に含めることができる。データ構造３００に関して述べたフィールドのレイアウトは、フィールドに関していかなる位置関係または階層関係も含意しない。例えば、任意の単一の例示されたフィールドは、複数の分散されたフィールドからなることができ、フィールドで説明されたものとして指定された情報だけを含む必要はない。さらに、別のフィールド内に含まれるものとして示されるフィールドは、そのフィールド内にまったく含まれる必要はない。
【００２７】
データ構造３００は、テキストを使用して指定することができる。一実施形態では、拡張マークアップ言語（ＸＭＬ）文書をデータ構造に使用することができるが、これは決して必須ではない。宣言的に変換を指定する直観的テキスト文書の使用は、基礎となるコードを手動で変更するという、時間とコストがかかる課題をやり直すことなく、より複雑な変換を指定および変更することを可能にする。データ構造３００は、サービス要求より前にサービスの各々にデータ構造３００を登録するか、または、サービス要求と共にまたはサービス要求の後でデータ構造３００を提供することによって、一続きのサービスにおける各サービスにとって利用可能なものとすることができる。
【００２８】
図４は、変換を行うために使用することができる変換アーキテクチャ４００を例示している。解釈コンポーネント４０１は、変換クラスフィールドおよび１つまたは複数の変換パラメータフィールドを解釈するためのコンピュータ実行可能命令を表す。具体的には、解釈コンポーネント４０１は、変換クラス宣言４１２Ａと（１つまたは複数の）パラメータ宣言４１２Ｂとを受け取り、クラス識別４１１Ａと（１つまたは複数の）パラメータ識別４１１Ｂとを変換コンポーネント４０２に提供する。
【００２９】
変換コンポーネント４０２は、変換クラスフィールドおよび１つまたは複数の変換パラメータフィールドの組合せによって指定される変換を行うためのコンピュータ実行可能命令を表す。変換コンポーネント４０２は、いくつかの充当（ｐｏｐｕｌａｔｅ）されていないまたは完全に充当されていない変換クラス４０３Ａから４０３Ｃへのアクセスを有する。変換コンポーネント４０２は、クラス識別子４１１Ａを使用して、適切な変換クラス４０３Ａから４０３Ｃを選択する。変換コンポーネント４０２は、次いで、そのクラスから導出される変換オブジェクトをインスタンス化し、そのオブジェクトを（１つまたは複数の）パラメータ４１１Ｂで充当する。結果は、実行されて、それによって入力または出力データ４１１を受け取り、データを変換された入力または出力データ４１３に変換することができるオブジェクトである。
【００３０】
図５は、本発明の原理に従って、サービスが適切な入力および／または出力変換と共にデータを処理するための方法５００のフロー図を例示している。サービスは、データソースエンティティ２０１またはサービスシーケンス２１０中の前のサービスからサービスに関する要求を受信する（アクト５０１）。このサービス要求は、ネットワーク上でまたは同じコンピューティングシステム内の別のプロセスからローカルに受信することができる。
【００３１】
加えて、サービスは、図３に関して上述したデータ構造にアクセスする（アクト５０２）。サービスは、サービス要求が受信される前、その間、またはその後にデータ構造にアクセスすることができるので、データ構造は、サービス要求の受信と平行してアクセスされるものとして示される。しかし、特定の実施形態では、データ構造はサービス要求と共に受信することができる。一実施形態では、サービスは、そのサービスに関係するデータ構造の部分だけにアクセスを有する。例えば、第１のサービス２１１は、第１のサービス情報３０１だけにアクセスを有することができ、その他のサービスに関して、以下同様である。
【００３２】
サービスは、次いで、サービスがデータ構造中で参照されるかどうかを判定する（決定ブロック５０３）。換言すると、サービスは、サービスによって受信されたサービス要求が、サービスシーケンス中のサービスのうちの１つに対するものであることを判定する。サービスがデータ構造中で参照されない場合（決定ブロック５０４の「Ｎｏ」）、要求は、任意の入力および／または出力変換を指定するためにデータ構造に依拠することなく処理される（アクト５０４）。
【００３３】
サービスがデータ構造中で参照される場合（決定ブロック５０３の「Ｙｅｓ」）、サービスは、データ構造中で指定された任意の関連する入力変換が存在するかどうかを識別する（決定ブロック５０５）。何も存在しない場合（決定ブロック５０５の「Ｎｏ」）、要求は入力データを使用して処理される（アクト５０８）。他方で、指定された入力変換が存在する場合（決定ブロック５０５の「Ｙｅｓ」）、入力変換の各々に関して、サービスは変換クラスフィールドおよび１つまたは複数の変換パラメータフィールドを解釈し（アクト５０６）、変換クラスフィールドおよび１つまたは複数の変換パラメータフィールドの組合せによって指定された入力変換を行う（アクト５０７）。これは、図４の変換アーキテクチャ４００を使用して達成することができる。すべての指定された入力変換が指定されたシーケンスにおいて行われた後、サービス要求は、結果としての出力データを生成するために変換された入力データに関して処理される（アクト５０８）。
【００３４】
サービスは、次いで、出力データに対して行われる任意の関連する出力変換が存在するか否かを判定する（決定ブロック５０９）。何も存在しない場合（決定ブロック５０９の「Ｎｏ」）、結果としてのデータは、データ出力エンティティ２０２にまたはサービスシーケンス２１０における次のサービスに提供される（アクト５１２）。他方で、指定された出力変換が存在する場合（決定ブロック５０９の「Ｙｅｓ」）、出力変換の各々に関して、サービスは変換クラスフィールドおよび１つまたは複数の変換パラメータフィールドを解釈し（アクト５１０）、変換クラスフィールドおよび１つまたは複数の変換パラメータフィールドの組合せによって指定された出力変換を行う（アクト５１１）。この場合も、これは図４の変換アーキテクチャ４００を使用して達成することができる。すべての指定された変換が行われた後、結果としての変換されたデータは、データ出力エンティティ２０２にまたはサービスシーケンス２１０における次のサービスに提供される。
【００３５】
方法は図５および関連する図面および説明に関して説明されているが、本発明の原理は、サーバコンピューティングシステムの１つまたは複数のプロセッサによって実行されるとき、コンピューティングシステムにこれらの方法のすべてもしくは部分またはいずれかもしくは両方を行わせる１つまたは複数のコンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読媒体を備えたコンピュータプログラムプロダクトに及ぶ。例えば、図１を参照すると、メモリ１０４および通信チャネル１０８は、かかるコンピュータ可読媒体の例を表すことができる。メモリ１０４は、物理的記憶装置および／またはメモリ媒体の形で物理的なコンピュータ可読媒体の例を表す。本発明の原理は、図５の方法の部分のすべてを行うために、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せを介して構成されるコンピューティングシステム自体にも及ぶ。
【００３６】
ここで若干詳細に本発明の広い原理を説明したので、次に、より具体的な例について説明する。当業者は、この説明を検討した後で、この例の他に本発明のより広い原理を実装するための可算的な方法が存在することを認識するであろう。それに応じて、この例は、限定ではなく、単なる例示である。
【００３７】
一例では、データ構造３００は、明確性のために行番号を加えた以下のＸＭＬ文書とすることができる。
【００３８】
【表１】
2009530738.tif 000003
【００３９】
【表２】
2009530738.tif 000004
【００４０】
このデータ構造では、「ブリッジ」要素は、その属性中のＢｏｏｋＳｅａｒｃｈと呼ばれるサービスを定義する。ＢｏｏｋＳｅａｒｃｈサービスは、図２の一続きのサービス中で例示されたサービスの例である。プロキシタイプも指定することができ、それによってサービスと通信するために使用されることになるプロキシを識別する。プロキシ要素は、第１のサービスと接続するためにプロキシによって使用することができるＵＲＬも含む。ブリッジ要素は、ＢｏｏｋＳｅａｒｃｈ属性に関連する２つの方法、すなわちＳｅａｒｃｈと呼ばれる方法とＲａｗＳｅａｒｃｈと呼ばれる方法とを定義する。
【００４１】
Ｓｅａｒｃｈ方法は、Ｓｅａｒｃｈ方法に対していくつかの入力パラメータを定義する。かかるパラメータは、Ｓｅｒｖｉｃｅ、ＡＷＳＡｃｃｅｓｓＫｅｙＩｄ、Ｋｅｙｗｏｒｄｓ、ＯｐｅｒａｔｉｏｎおよびＳｅａｒｃｈ  Ｉｎｄｅｘを含む。ＳｅｒｖｅｒＮａｍｅ属性は２つの入力パラメータ、すなわち、ＳｅｒｖｉｃｅおよびＫｅｙｗｏｒｄｓのために存在する。ＳｅｒｖｅｒＮａｍｅ属性名は、変換クラス識別の例である。ＳｅｒｖｅｒＮａｍｅ属性の値は変換パラメータの例である。例えば、ｐａｒａｍｅｔｅｒ  ｎａｍｅ＝「Ｓｅｒｖｉｃｅ」要素中のＳｅｒｖｅｒＮａｍｅ属性は、「Ｓｅｒｖｉｃｅ」と名づけられたパラメータが名前「ＢｏｏｋＳｅａｒｃｈ」にマップされることになるパラメータマッピングクラス変換を示している。同様に、「Ｋｅｙｗｏｒｄ」パラメータは「ＳｅａｒｃｈＴｅｒｍｓ」パラメータにマップされる。したがって、「入力」要素は、２つのパラメータマッピング機能を定義する。
【００４２】
「ｔｒａｎｓｆｏｒｍ」要素は、結果として生じるデータから名前値ペアを抽出し、それらをＸＭＬ文書の形態で置く、ＸＰａｔｈＢｒｉｄｇｅＴｒａｎｓｆｏｒｍｅｒと名づけられた出力変換を指定する。ＸＰａｔｈＢｒｉｄｇｅＴｒａｎｓｆｏｒｍｅｒ参照は変換クラス識別の例である。この場合、Ｔｉｔｌｅフィールド、ＰｒｏｄｕｃｔＧｒｏｕｐフィールド、Ａｕｔｈｏｒフィールド、およびＡＳＩＮフィールドは、探索結果から抽出され、ＸＭＬ文書内に置かれる。このように、項目名要素は変換パラメータの例である。ＳｅａｒｃｈＲａｗ方法は、出力変換が指定されないことを除いて、Ｓｅａｒｃｈ方法に類似する。
【００４３】
このように、本発明の原理は、サービスへの入力データおよびサービスからの出力データの両方に関する変換を宣言的に指定するために好都合なメカニズムを提供する。変換を変更するために、基礎となるコードは変更されなくてよく、むしろ高レベルの宣言が変えられるであろう。
【００４４】
本発明は、その精神または本質的な特性から逸脱することなくその他の特定の形態で実施することができる。述べた実施形態は、あらゆる点で、限定的ではなく、例示的としてのみ考慮されるべきである。本発明の範囲は、それゆえ、前述の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等物の意味および範囲に入るすべての変更はそれらの範囲内に包括されるべきである。
【図面の簡単な説明】
【００４５】
【図１】本発明の原理の実施形態が動作し得るコンピューティングシステムを例示する図である。
【図２】本発明の実施形態が動作し得る一続きのサービスを含む環境を例示する図である。
【図３】サービスからの入力変換および出力変換のための対応するクラスおよびパラメータを有するサービスの識別を含むデータ構造を概略的に例示する図である。
【図４】変換を行うためにデータ構造を使用することに関連する論理フローを概略的に例示する図である。
【図５】本発明の原理に従って、サービスがサービス要求を処理する方法のフロー図である。
【図１】
2009530738.tif 000005
【図２】
2009530738.tif 000006
【図３】
2009530738.tif 000007
【図４】
2009530738.tif 000008
【図５】
2009530738.tif 000009
【国際調査報告】
2009530738.tif 000010
2009530738.tif 000011