(57)【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、アプリケーションについてのメッセージ処理パイプラインを構成する方法であって、
前記アプリケーションについての現在のパイプライン仕様にアクセスする動作であって、前記現在のパイプライン仕様は、前記アプリケーションについてのメッセージ処理パイプラインを構築する方法を特定し、当該構築する方法は、前記アプリケーションについての前記メッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含む動作と、
前記アプリケーションについての追加のメッセージ処理要件にアクセスする動作と、
前記現在のパイプライン仕様に適用して前記追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定することができる変換内容を特定する動作であって、前記変換内容は、前記メッセージ処理パイプラインに含めるようすでに特定された前記メッセージングコンポーネントに基づいてかつ前記追加のメッセージ処理要件に基づいて特定される動作と、
前記特定された変換内容を前記現在のパイプライン仕様に適用して前記アプリケーションについての変換されたパイプライン仕様を作成する動作であって、前記変換されたパイプライン仕様は、前記追加のメッセージ処理要件を満たす前記アプリケーションについてのメッセージ処理パイプラインを構築する方法を特定し、当該構築する方法は、前記追加のメッセージ処理要件を満たすために前記メッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントの構成を特定することを含む動作と、
前記変換されたパイプライン仕様を解釈して前記アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する動作であって、前記インスタンスを作成されたメッセージ処理パイプラインは、前記アプリケーションについての前記追加のメッセージ処理要件を満たすように構成されている動作と
を含むことを特徴とする方法。
【請求項２】
前記メッセージ処理パイプラインに含めるための前記コンピュータシステムに利用可能なコンポーネントを特定する動作を更に含み、
前記現在のパイプライン仕様に適用することができる変換内容を特定する動作は、前記特定された利用可能なコンポーネントに基づいて前記現在のパイプラインに適用することができる変換内容を特定する動作を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記変換されたパイプライン仕様を解釈して前記アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する動作は、前記特定された利用可能なコンポーネントのうちの１つまたは複数を前記メッセージ処理パイプラインに挿入して前記追加のメッセージ処理要件を満たす動作を含むことを特徴とする請求項２記載の方法。
【請求項４】
前記アプリケーションについての追加のメッセージ処理要件にアクセスする動作は、第２のパイプライン仕様にアクセスする動作を含むことを特徴とする請求項１記載の方法。
【請求項５】
前記アプリケーションについての追加のメッセージ処理要件にアクセスする動作は、前記現在のパイプライン仕様を前記第２のパイプライン仕様と比較した結果から、前記追加の処理要件を推定する動作を含むことを特徴とする請求項１記載の方法。
【請求項６】
前記現在のパイプライン仕様に適用して前記追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定することができる変換内容を特定する動作は、前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項１記載の方法。
【請求項７】
前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、前記メッセージ処理パイプライン内の他のパイプラインコンポーネント同士の間でプロトコルをブリッジングするパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項６記載の方法。
【請求項８】
前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、前記メッセージを１つのフォーマットから別のフォーマットに変換するパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項６記載の方法。
【請求項９】
前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、他のパイプラインコンポーネントを物理的に分離するパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項６記載の方法。
【請求項１０】
前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、他のパイプラインコンポーネントを一時的に切り離すパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項６記載の方法。
【請求項１１】
前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、他のパイプラインコンポーネント同士の間で分岐するパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項６記載の方法。
【請求項１２】
コンピュータシステムであって、
１つまたは複数のプロセッサと、
システムメモリと、
パイプライン変換モジュール及び利用可能なメッセージングパイプラインコンポーネントの集合を示すコンピュータ実行可能命令が格納されている１つまたは複数のコンピュータ記憶媒体と、
を含み、
前記利用可能なメッセージングパイプラインコンポーネントの各々は、異なったメッセージパイプライン処理機能を提供し、前記パイプライン変換モジュールは、
メッセージ処理パイプラインが満たすことになっているアプリケーションの要件のセットを受信し、
前記要件のセットを満たすために相互に作用することができる前記利用可能なメッセージングパイプラインコンポーネントの構成を特定し、
メッセージ処理パイプライン仕様を変換するように構成され、
前記変換は、利用可能なメッセージングパイプラインコンポーネントの構成の間の前記相互作用が、前記メッセージ処理パイプライン仕様からインスタンスを作成されるメッセージ処理パイプライン内に含まれる他のパイプラインコンポーネント同士の間のパイプライン内通信リンク内に含まれることになっていることを特定することを特徴とするコンピュータシステム。
【請求項１３】
前記メッセージ処理パイプライン仕様を変換するよう構成されている前記パイプライン変換モジュールは、前記メッセージ処理パイプラインに含まれる他のパイプラインコンポーネントを物理的に分離するパイプライン内通信リンクを特定するよう構成されているパイプライン変換モジュールを含むことを特徴とする請求項１２記載のシステム。
【請求項１４】
前記メッセージ処理パイプライン仕様を変換するよう構成されている前記パイプライン変換モジュールは、前記メッセージ処理パイプラインに含まれる他のパイプラインコンポーネントを一時的に分離するパイプライン内通信リンクを特定するよう構成されている前記パイプライン変換モジュールを含むことを特徴とする請求項１２記載のシステム。
【請求項１５】
１つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、アプリケーションについてのメッセージ処理パイプラインを構成する方法であって、
前記アプリケーションについての第１のパイプライン仕様にアクセスする動作であって、前記第１のパイプライン仕様は、第１のパイプラインコンポーネントが前記アプリケーションについてのメッセージ処理パイプラインに含まれることになっていることを特定し、前記第１のパイプラインコンポーネントは、第１のコードライブラリによって決まる動作と、
前記アプリケーションについての第２のパイプライン仕様にアクセスする動作であって、前記第２のパイプライン仕様は、第２のパイプラインコンポーネントが、前記第１のパイプラインコンポーネントの後の、前記アプリケーションについての前記メッセージ処理パイプラインに含まれることになっていることを特定し、前記第２のパイプラインコンポーネントは、第２のコードライブラリによって決まる動作と、
前記第１のライブラリが第１のコンピュータシステムで利用可能であると判断する動作と、
前記第２のライブラリが第２の異なるコンピュータシステムで利用可能であると判断する動作と、
前記第１の仕様を変換して、前記第１のパイプラインコンポーネントを前記第２のパイプラインコンポーネントに接続するためのパイプライン内通信リンクを含める動作であって、前記パイプライン内通信リンクは、前記第１のパイプラインコンポーネントからメッセージを受信するための着信通信媒体、前記第２のパイプラインコンポーネントに前記着信通信媒体からのメッセージを送信するための発信通信媒体を含む動作と、
前記第１のパイプラインコンポーネントを前記第１のコンピュータシステムに配置し、前記第２のパイプラインコンポーネントを前記第２のコンピュータシステムに配置し、パイプライン内通信リンクを利用して前記第１のパイプラインコンポーネントから前記第２のパイプラインコンポーネントにメッセージを転送する、前記アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する動作と
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ処理パイプラインの構成（composing）に関する。
【背景技術】
【０００２】
１．背景及び関連技術
コンピュータシステム及び関連技術は、社会の多くの側面に影響を与えている。実際、情報を処理するコンピュータシステムの能力は、我々が生活し仕事をする方法を変えた。コンピュータシステムは、現在では一般に、コンピュータシステムの出現前に手作業で行なわれた多くの作業（例えば、文書処理、スケジューリング、会計等）を行なう。最近では、コンピュータシステムは、互いにかつ他の電子装置に接続されていて、コンピュータシステム及び他の電子装置が電子データを転送することができる無線及び有線のコンピュータネットワークを形成する。従って、多くのコンピュータ作業は、多くの異なるコンピュータシステム及び／または多くの異なるコンピュータ環境に分散されて実行される。
【０００３】
分散コンピュータ環境では、サービスを接続するプロトコル実行を、アプリケーション処理論理（logic）から切り離すことが望ましいことが多い。この組合せについての確立したパターンは、各層が下層のプロトコルの特徴を構築する階層化されたプロトコルスタックを実施することである。例えば、ベース層は未処理データの接続性（raw data connectivity）を提供し、一方、上位層はセキュリティを高めるかまたは配信を保証してもよい。メッセージの抽象化（message abstractions）を用いて、プロトコル層はまた、ある程度の構成の独立性を有することができる。例えば、セキュリティプロトコルは、多くの異なるトランスポートプロトコルで利用可能であるかもしれない。
【０００４】
階層化されたプロトコルスタックは、メッセージ処理パイプラインとして抽象化されることが多い。そのとき、アプリケーション論理は、プロトコルの独自のやり方で書き込まれ、その後、パイプラインのうちの１つまたは複数と組み合わされる。しかしながら、いくつかの技術についてのメッセージ処理パイプラインは現在、多くの異なる制限を伴って実現されている。例えば、メッセージ処理パイプラインのコンポーネントは、典型的には、一時的かつ物理的に結合したやり方で構成される。
【０００５】
プロトコルスタックにおける一時的な結合（temporal coupling）は、例えば、メッセージ処理パイプラインが先に進む前にオペレーションを完了するのをアプリケーションに待たせるといった、アプリケーションのビヘイビアを制限する。一時的な結合の１つの例は、プロトコルが、次のプロトコルが実行可能になる前に、メッセージについての確認を必要とする場合である。第２の例は、プロトコルが、いくつかのメッセージを、次のプロトコルが送信するための単一のメッセージへまとめる場合である。これらの例は、プロトコル同士の間の同期を必要としていて、アプリケーションがこの同期に参加して特定のメッセージ交換パターンを実施することを必要とするかもしれない。
【０００６】
プロトコルスタックがその実行環境によって決まる場合に、物理的な結合（physical coupling）が生じる。例えば、プロトコルは、ローカルのマシンにインストールされた特定のソフトウェアライブラリを備えていることによって決まってもよい。いくつかのプロトコルは、各々かかる依存関係を有することができる。プロトコルスタックは、かかる依存関係の全てを同時に満たす実行環境にだけ配置することができる。配置されたパイプラインの各々が異なる依存関係の要件を定めているので、会社はかかる実行環境を構築するために追加のソフトウェアまたはハードウェアを購入しなければならないかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的とするところは、メッセージ処理パイプラインの構成（composing）を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、メッセージ処理パイプラインを構成するための方法、システム及びコンピュータプログラム製品に及ぶ。コンピュータシステムは、アプリケーションについての現在のパイプライン仕様（pipeline specification）にアクセスする。現在のパイプライン仕様は、アプリケーションについてのメッセージ処理パイプラインを構成する方法を特定しており、該方法は、アプリケーションについてのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含んでいる。コンピュータシステムは、アプリケーションについての追加のメッセージ処理要件にアクセスする。追加のメッセージ処理要件は、例えば、コンフィギュレーションファイル、ユーザ命令または第２のパイプライン仕様に明示的に含むことができる。追加のメッセージ処理要件はまた、例えばコンフィギュレーションファイル、ユーザ命令または第２のパイプライン仕様のコンテンツに関連して現在の仕様のコンテンツから推定することができる。
【０００９】
コンピュータシステムは、現在のパイプライン仕様に適用することができる変換内容（transforms）を特定して、追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定する。変換内容は、メッセージ処理パイプラインへ含めるようすでに特定されたメッセージングコンポーネントに基づいてかつ追加のメッセージ処理要件に基づいて特定される。変換内容はまた、どんなメッセージングコンポーネントをコンピュータシステムに利用可能かに基づいて特定することができる。
【００１０】
コンピュータシステムは、特定された変換内容を現在のパイプライン仕様に適用して、アプリケーションについての変換されたパイプライン仕様を作成する。変換されたパイプライン仕様は、追加のメッセージ要件を満たすアプリケーションについてのメッセージ処理パイプラインを構築する方法を特定する。変換されたパイプライン仕様は、メッセージ処理パイプラインに含まれて追加のメッセージ処理要件を満たすことになっているメッセージングコンポーネントの構成を特定する。コンピュータシステムは、変換されたパイプライン仕様を解釈して、アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する。インスタンスを作成されたメッセージ処理パイプラインは、アプリケーションについての追加のメッセージ処理要件を満たすように構成される。
【００１１】
この概要は、詳細な説明で更に後述される簡略化された形式の概念の選択を導くために提供される。この概要は、請求された本発明の重要な特徴または基本的な特徴を特定することを意図していないし、請求された本発明の範囲を決定する際の助けとして用いられることも意図していない。
【００１２】
本発明の追加の特徴及び利点は、あとに続く詳細な説明に記載されており、該詳細な説明から一部が明らかになるかまたは本発明の実施によって理解することができる。本発明の特徴及び利点は、添付の特許請求の範囲において特に指摘される機器及び該機器の組み合わせを用いて実現しかつ得ることができる。本発明のこれらの特徴及び他の特徴は、以下の詳細な説明及び添付の特許請求の範囲からさらに十分に明らかになるか、または以後に記載されるような本発明の実施例で理解することができる。
【００１３】
本発明の上記の利点及び特徴並びに他の利点及び特徴を得ることができる方法を説明するために、上記に簡単に説明された本発明のより具体的な説明は、添付の図面に示されるこれらの特定の実施形態を参照して示される。これらの図面は本発明の代表的な実施形態だけを表していて、従って、その範囲を限定すると見なされるべきではないということを理解されたい。本発明は、添付の図面を用いて追加の特異性及び詳細によって述べられかつ説明することができる。
【図面の簡単な説明】
【００１４】
【図１】メッセージ処理パイプラインを構成するのを容易にする例示的なコンピュータアーキテクチャを示す図である。
【図２】メッセージ処理パイプラインを構成する例示的な方法のフローチャートである。
【図３】例示的なメッセージ処理パイプラインを示す図である。
【図４】論理パイプライン及び該論理パイプラインに対応する物理的配置を含むコンピュータアーキテクチャを示す図である。
【図５】持続的キューで隔てられたメッセージ処理パイプラインコンポーネントを備えたコンピュータアーキテクチャを示す図である。
【発明を実施するための形態】
【００１５】
本発明は、メッセージ処理パイプラインを構成するための方法、システム及びコンピュータプログラム製品に及ぶ。コンピュータシステムは、アプリケーションについての現在のパイプライン仕様にアクセスする。現在のパイプライン仕様は、アプリケーションについてのメッセージ処理パイプラインを構成する方法を特定しており、該方法は、アプリケーションについてのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含んでいる。コンピュータシステムは、アプリケーションについての追加のメッセージ処理要件にアクセスする。追加のメッセージ処理要件は、例えば、コンフィギュレーションファイル、ユーザ命令または第２のパイプライン仕様に明示的に含むことができる。追加のメッセージ処理要件はまた、例えばコンフィギュレーションファイル、ユーザ命令または第２のパイプライン仕様のコンテンツに関連して現在の仕様のコンテンツから推定することができる。
【００１６】
コンピュータシステムは、現在のパイプライン仕様に適用することができる変換内容を特定して、追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定する。変換内容は、メッセージ処理パイプラインを含めるようすでに特定されたメッセージングコンポーネントに基づいてかつ追加のメッセージ処理要件に基づいて特定される。変換内容はまた、どんなメッセージングコンポーネントがコンピュータシステムに利用可能かに基づいて特定することができる。
【００１７】
コンピュータシステムは、特定された変換内容を現在のパイプライン仕様に適用して、アプリケーションについての変換されたパイプライン仕様を作成する。変換されたパイプライン仕様は、追加のメッセージ要件を満たすアプリケーションについてのメッセージ処理パイプラインを構築する方法を特定する。変換されたパイプライン仕様は、メッセージ処理パイプラインに含まれて追加のメッセージ処理要件を満たすことになっているメッセージングコンポーネントの構成を特定する。コンピュータシステムは、変換されたパイプライン仕様を解釈して、アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する。インスタンスを作成されたメッセージ処理パイプラインは、アプリケーションについての追加のメッセージ処理要件を満たすように構成される。
【００１８】
本発明の実施形態は、更に詳細に以下で説明されるように、コンピュータハードウェアを有する専用コンピュータまたは汎用コンピュータを含むかまたは利用することができる。本発明の範囲内にある実施形態はまた、コンピュータ実行可能命令及び／またはコンピュータ実行可能データ構造を送信または格納するための物理的コンピュータ可読媒体及び他のコンピュータ可読媒体を含む。かかるコンピュータ可読媒体は、汎用コンピュータシステムまたは専用コンピュータシステムがアクセスすることができるいかなる利用可能な媒体であってもよい。コンピュータ実行可能命令を格納するコンピュータ可読媒体は、物理的記憶媒体である。コンピュータ実行可能命令を送信するコンピュータ可読媒体は、伝送媒体である。よって、例であって限定ではないが、本発明の実施形態は、少なくとも２つの明らかに異なった種類のコンピュータ可読媒体を含むことができる。即ち、物理的記憶媒体及び伝送媒体である。
【００１９】
物理的記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、またはコンピュータ可読命令またはコンピュータ可読データ構造の形で所望のプログラムコード手段を格納するために用いることができるあらゆる他の媒体もしくは汎用コンピュータもしくは専用コンピュータがアクセスすることができるあらゆる他の媒体を含む。
【００２０】
「ネットワーク」は、コンピュータシステム及び／またはモジュール及び／または他の電子デバイスの間で電子データの送信を可能にする１つまたは複数のデータリンクと定義される。情報がネットワークまたは別の通信接続（有線、無線、または、有線もしくは無線の組合せのいずれか）を介してコンピュータに転送されるかまたは提供されると、コンピュータは、伝送媒体として適切に接続を表示する。伝送媒体は、ネットワーク及び／またはデータリンクを含むことができ、ネットワーク及び／またはデータリンクは、コンピュータ実行可能命令またはコンピュータ実行可能データ構造の形で所望のプログラムコード化手段を搬送するために用いることができるかまたは汎用コンピュータまたは専用コンピュータがアクセスすることができる。上記の組合せも、コンピュータ可読媒体の範囲内に含まれなければならない。
【００２１】
更に、様々なコンピュータシステムコンポーネントに至ると、コンピュータ実行可能命令またはコンピュータ実行可能データ構造の形のプログラムコード手段は、伝送媒体から物理的記憶媒体に（またはその逆に）自動的に転送されてもよい。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータ実行可能命令またはコンピュータ実行可能データ構造は、ネットワークインタフェースモジュール（例えば、「ＮＩＣ」）内のＲＡＭにバッファリングすることができ、次にコンピュータシステムのＲＡＭにかつ／またはコンピュータシステムのより不安定でない物理的記憶媒体に最終的に転送することができる。よって、物理的な記憶媒体は、伝送媒体をも利用する（または主としても利用する）コンピュータシステムコンポーネントに含まれ得ると理解されなければならない。
【００２２】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータまたは専用処理デバイスに一定の機能または一定の機能グループを実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令またはソースコードでもよい。本発明は、構造上の特徴及び／または方法論的動作に特有の言語で説明されているが、添付の特許請求の範囲において定義される本発明は、必ずしも上記に説明された特徴または説明された動作に限定されるものではないと理解されなければならない。むしろ、説明された特徴及び動作は、特許請求の範囲を実施する例示的な形式として開示される。
【００２３】
当業者は、本発明を多くのタイプのコンピュータシステム構成を備えたネットワークコンピュータ環境で実施することができると認めることができる。多くのタイプのコンピュータシステム構成には、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品もしくはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ポケットベル、ルータ、スイッチなどが含まれる。本発明はまた、ネットワークを介して（有線データリンクによって、無線データリンクによって、または、有線データリンク及び無線データリンクの組み合わせによってのいずれかで）接続されたローカルのコンピュータシステム及びリモートのコンピュータシステムの両方がタスクを実行する分散処理システム環境において実施することができる。分散システム環境において、プログラムモジュールは、ローカルのメモリ記憶装置及びリモートのメモリ記憶装置の両方に配されてもよい。
【００２４】
図１は、メッセージ処理パイプラインを構成するのを容易にする例示的なコンピュータアーキテクチャ１００を示す。図１を参照すると、コンピュータアーキテクチャ１００は、パイプライン仕様リファインメントモジュール（pipeline specification refinement module）１０１、パイプライン仕様インタプリタ（pipeline specification interpreter）１０６及びアプリケーション１０７を含む。示したコンピュータシステムの各々は、例えばローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、及びインターネットなどのネットワークを介して互いに接続されている（または、これらの一部である）。従って、示したコンピュータシステム及びあらゆる他の接続されたコンピュータシステムの各々、並びにこれらのコンポーネントは、メッセージ関連データを生成することができ、ネットワークを介してメッセージ関連データ（例えば、インターネットプロトコル（「ＩＰ」）データグラム及び、例えば、伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等を利用する他の上位層プロトコルなど）を交換することができる。
【００２５】
通常、パイプライン仕様リファインメントモジュール１０１は、追加のメッセージ処理要件を考慮して、パイプライン仕様を、追加のメッセージ処理要件を満たすメッセージ処理パイプラインを特定するパイプライン仕様に変換するよう構成されている。パイプライン仕様リファインメントモジュール１０１は、要件特定モジュール（requirements identification module）１０２、変換特定モジュール（transform identification module）１０３及び変換アプリケーションモジュール（transform application module）１０４を含む。
【００２６】
要件特定モジュール１０２は、メッセージ処理パイプラインについての追加の処理要件を特定するよう構成されている。追加の要件は、パイプライン仕様リファインメントモジュール１０１に与えられた、例えばコンフィギュレーションファイル、ユーザ命令または第２のパイプライン仕様などの追加の情報に明示的に含むことができる。例えば、コンフィギュレーションファイルは、プロトコルスタックの異なる層同士の間で暗号化または信頼性が必要であること示すことができる。要件特定モジュール１０２は、追加の情報にアクセスすることができて、追加の情報に含まれる追加の処理要件を特定することができる。
【００２７】
要件特定モジュール１０２はまた、追加の情報のコンテンツを考慮してパイプライン仕様のコンテンツに基づいて、追加の処理要件を推定することができる。よって、要件特定モジュール１０２は、例えば、コンフィギュレーションファイル、ユーザ命令または第２のパイプライン仕様を考慮して、パイプライン仕様のコンテンツに基づいて追加のメッセージ処理要件を推定することができる。例えば、１つのパイプライン仕様は第１のトランスポート層プロトコルを特定し、別のパイプライン仕様は第２の異なるトランスポートプロトコルを特定するかもしれない。従って、要件特定モジュール１０２は、第１のトランスポートプロトコルと第２のトランスポートプロトコルとの間のプロトコルブリッジを使用することが追加のメッセージ処理要件であると推定することができる。
【００２８】
変換特定モジュール１０３は、パイプライン仕様を変換するためにパイプライン仕様に適用されて、追加のメッセージ処理要件を満たすメッセージ処理パイプラインを特定することができる変換内容を特定するよう構成されている。例えば、現在のパイプライン仕様及び追加の要件に基づいて、変換特定モジュール１０３は、現在のパイプライン仕様を変換されたパイプライン仕様に変換するための変換内容を特定することができる。変換されたパイプライン仕様は、例えば、追加のメッセージ処理要件を満たすメッセージ処理コンポーネントの構成を有するパイプライン内通信リンクを特定することができる。
【００２９】
変換内容を特定する場合、変換特定モジュール１０３はまた、利用可能なパイプラインコンポーネントの機能を考慮することができる。利用可能なパイプラインコンポーネントの機能は、例えば、メッセージ処理パイプラインに含めるために利用可能な、メッセージポンプ、メッセージトランスフォーマ、持続的ストア、通信媒体、ライブラリ等である。利用可能なパイプラインコンポーネントは、パイプライン仕様リファインメントモデル１０１と一緒に用いることができかつ／またはパイプライン仕様リファインメントモジュール１０１に関連して遠隔に位置することができる。よって、メッセージ処理パイプラインに含めるために特定された利用可能なコンポーネントは、ローカルでかつ／またはリモートでアクセスすることができる。
【００３０】
利用可能なパイプラインコンポーネントに応じて、変換特定モジュール１０３は、異なる変換内容を特定して、仕様に適用することができる。しかしながら、パイプラインコンポーネントの異なる組合せによっても同じ結果を得ることができるので、パイプライン仕様に対する異なる変換内容は、追加のメッセージ処理要件を満たすメッセージ処理パイプラインをやはり定義することができる。即ち、利用可能なパイプラインコンポーネントの機能に応じて、パイプラインコンポーネントの異なる組合せを、追加のメッセージ処理要件を満たすよう特定することができる。
【００３１】
変換アプリケーションモジュール１０４は、特定された変換内容をパイプライン仕様に適用して、仕様を、追加のメッセージ処理要件を満たす変換された仕様へと変換するよう構成されている。例えば、変換アプリケーションモジュール１０４は、パイプライン仕様及び変換内容を受信し、当該変換内容をパイプライン仕様に適用して変換されたパイプライン仕様を作成することができる。得られる変換された仕様は、パイプライン仕様インタプリタの構文制約及び意味制約に対応することができる。例えば、パイプライン仕様がパイプライン仕様インタプリタへの入力用に構成されている場合、該パイプライン仕様に基づいて変換されたパイプライン仕様も、同じパイプライン仕様インタプリタへの入力用に構成することができる。しかしながら、変換内容によって、異なるパイプライン仕様インタプリタへの入力用のパイプライン仕様の構成が変更されることもあり得る。パイプライン仕様を変換することは、例えば、テキスト編集を行うかまたは他の変更を加えることなどの、パイプライン仕様のコンテンツを変更して、メッセージ処理パイプライン機能及び／またはメッセージ処理パイプラインコンポーネントを特定できることを含む。
【００３２】
パイプライン仕様インタプリタ１０６は、パイプライン仕様を解釈して、パイプライン仕様からメッセージ処理パイプラインのインスタンスを作成するよう構成されている。例えば、パイプライン仕様インタプリタ１０６は、適切に構成されたパイプライン仕様を受信することができる。パイプライン仕様を受信するのに応じて、パイプライン仕様インタプリタ１０６は、パイプライン仕様で特定されるメッセージ処理パイプラインのインスタンスを作成するためのメッセージ処理コンポーネントを特定することができる。次に、パイプライン仕様インタプリタ１０６は、メッセージ処理パイプラインのインスタンスを作成することができ、これは、例えば、あらゆる追加の要件を満たすことを含む所望のメッセージ処理機能を提供するやり方で配された特定されたメッセージ処理コンポーネントとのパイプライン内通信リンクを含む。
【００３３】
メッセージ処理パイプラインの異なる部分は、異なるマシンまたは同じマシンの異なる部分でインスタンスを作成することができる。パイプライン内（intra-pipeline）通信リンクは、１つのマシン（またはプロセス）のメッセージ処理パイプラインの一部を、別のマシン（またはプロセス）のメッセージ処理パイプラインの一部に接続するために用いることができる。メッセージ処理パイプラインを介したメッセージフローも、例えば、メッセージ特性、プロトコル特性、マシン特性等に基づいてなど、異なるパイプラインコンポーネント同士の間で分岐することができる。パイプライン内通信リンクは、例えば、持続的メッセージキューイング製品などの持続的ストアを抽出して持続的通信リンクを提供することができる。（他の技術の）通信リンクが、続けるために他のパイプラインコンポーネントからの応答を待たなければならない場合に、持続的通信リンクはパイプラインコンポーネントがメッセージを処理し続けることができるようにする。メッセージ処理パイプラインはまた、パイプラインコンポーネント同士の間でプロトコルのブリッジング及び他の変換サービスを容易にするパイプラインコンポーネントを含むことができる。
【００３４】
コンピュータアーキテクチャ１００に示されているように、アプリケーション１０７はメッセージ処理パイプライン１０８とは別個になっている。しかしながら、本発明の実施形態は、メッセージ処理パイプライン内のパイプラインコンポーネントとしてアプリケーションを含むメッセージ処理パイプラインも含む。
【００３５】
図２は、メッセージ処理パイプラインを構成する例示的な方法２００のフローチャートを示す。方法２００は、コンピュータアーキテクチャ１００のコンポーネント及びデータに関して説明される。
【００３６】
方法２００は、アプリケーションについての現在のパイプライン仕様にアクセスする動作を含み、現在のパイプライン仕様は、アプリケーションについてのメッセージ処理パイプラインを構築する方法を特定し、これは、アプリケーションについてのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含む（動作２０１）。例えば、パイプライン仕様リファインメントモジュールは、パイプライン仕様１２１にアクセスすることができる。パイプライン仕様１２１は、アプリケーション１０７についてのメッセージ処理パイプラインを構築する方法を特定することができる。パイプライン仕様１２１は、アプリケーション１０７についてのメッセージ処理パイプラインに含まれることになっているパイプラインコンポーネントを、利用可能なパイプラインコンポーネント１４２から特定することができる。
【００３７】
利用可能なパイプラインコンポーネント１４２は、パイプライン仕様モジュール１０１に対してローカルにかつ／またはリモートに（例えば、ネットワーク通信を介してアクセスされる他のマシンに）位置するパイプラインコンポーネントを含むことができる。利用可能なパイプラインコンポーネント１４２は、例えば、メッセージポンプ（例えば、符号１４３）、メッセージトランスフォーマ（例えば、符号１４４）、持続可能な通信リンクを提供するための持続可能なストア（例えば、符号１４６）の抽出、通信媒体（例えば、符号１４７）及びライブラリ（例えば、符号１４８）などの様々な異なる機能を実装するよう構成することができる。利用可能なパイプラインコンポーネント１４２のパイプラインコンポーネントは、例えば、パイプライン内通信リンクのメッセージ処理パイプライン内でまとめられて、パイプライン仕様において特定されるメッセージ処理機能（例えば、暗号化、署名、信頼性、プロトコルブリッジング、メッセージ変換、パイプライン分岐等）を提供することができる。
【００３８】
要件特定モジュール１０２は、パイプライン仕様１２１についての追加の要件を特定することができる。例えば、要件特定モジュール１０２は、追加の情報１２２及び／またはパイプライン仕様１２１のコンテンツに基づいて、追加の要件１３１を特定することができる。いくつかの実施形態では、追加の情報１２２のコンテンツは、追加の要件を明示的に示す。例えば、追加の情報１２２は、追加の要件１３１を明示的に示す、（例えば、アプリケーション１０７と通信することになっているアプリケーションについての）別のパイプライン仕様、コンフィギュレーションファイル、ユーザ命令等を示してもよい。要件特定モジュール１０２は、追加の情報１２２から明示的に示された追加の要求を特定することができる。
【００３９】
あるいは、または明示的に示された追加の要件を特定することと組み合わせて、要件特定モジュール１０２はまた、追加の要件を推定することができる。例えば、要件特定モジュール１０２は、追加の情報１２２及びパイプライン仕様１２１にアクセスすることができる。追加の情報１２２及びパイプライン仕様１２１のコンテンツから、要件特定モジュール１０２は、追加の要件１３１を推定することができる。
【００４０】
要件特定モジュール１０２は、追加の情報１２２のコンテンツをパイプライン仕様１２１のコンテンツと比較して、当該比較に基づく推論を行うことができる。例えば、追加の情報１２２は、（特定されたメッセージ機能を含めることが要件であることを明示的に示すことなしに）通信しているときに、別のアプリケーションが特定されたメッセージング機能（例えば、暗号化、信頼できるメッセージング等）を使用することを示すことができる。他方、パイプライン仕様１２１は、メッセージ処理パイプラインアプリケーション１０７に含めるために特定されたメッセージ機能を特定することができない。
【００４１】
追加の情報１２２とパイプライン仕様１２１との間の比較から、要件特定モジュール１０２は、他のアプリケーションが特定されたメッセージング機能を使用するが、パイプライン仕様１２１は特定されたメッセージング機能を特定しないということを判断することができる。よって、要件特定モジュール１０２は、アプリケーション１０７についてのメッセージ処理パイプラインが他のアプリケーションと通信するための特定されたメッセージング機能を含むことになっていると推定することができる。従って、要件特定モジュール１０２は、パイプライン仕様１２１が特定されたメッセージング機能を特定するという追加の要件を特定することができる。
【００４２】
要件特定モジュール１０２は、追加の要件１３１を送信して特定モジュール１０３を変換することができる。従って、方法２００は、アプリケーションについての追加のメッセージ処理要件にアクセスする動作を含む（動作２０２）。例えば、変換特定モジュール１０３は、追加の要件１３１を受信することができる。
【００４３】
方法２００は、現在のパイプライン仕様に適用することができる変換内容を特定して、追加のメッセージ処理要件を満たす追加の処理機能を特定できる動作を含む。該変換内容は、メッセージ処理パイプラインに含めるためにすでに特定されたメッセージコンポーネントに基づいてかつ追加のメッセージ処理要件に基づいて特定される(動作２０３)。例えば、変換特定モジュール１０３は、変換内容１３２を特定することができる。変換内容１３２を、パイプライン仕様１２１に適用して、例えば、追加の要件１３１を満たすパイプライン内通信リンクなどの追加のメッセージ処理機能を特定することができる。変換内容１３２は、パイプライン仕様１２１及び追加の要件１３１においてすでに特定されたパイプラインコンポーネントに基づいて特定することができる。
【００４４】
変換内容１３２はまた、利用可能なパイプラインコンポーネント１４２に含まれるコンポーネントに基づいていてもよい。例えば、リスト１５１は利用可能なパイプラインコンポーネント１４２に含まれるコンポーネント及びこれらの機能を特定することができる。リスト１５１から、変換特定モジュール１０３は、仕様１２１に適用される変換内容１３２は何かを特定することができる。特定された変換内容１３２は、パイプライン仕様１２１の一部を変換するために用いて、追加の要件１３１を満たすメッセージ処理機能を実施するためのコンポーネントを（利用可能なパイプラインコンポーネント１４２から）特定することができる。
【００４５】
どのパイプラインコンポーネントが仕様１２１においてすでに特定されているかに応じて、異なる変換内容を特定して、追加の要件１３１を満たすためにメッセージ処理機能を特定することができる。変換特定モジュール１０３は、変換内容１３２を送信して、アプリケーションモジュール１０４を変換することができる。変換アプリケーションモジュール１０４は、変換特定モジュール１０３から変換内容１３２を受信することができる。
【００４６】
方法２００は、特定された変換内容を現在のパイプライン仕様に適用して、アプリケーションについての変換されたパイプライン仕様を作成する動作を含む。変換されたパイプライン仕様は、追加のメッセージ処理要件を満たすアプリケーションについてのアプリケーションについてのメッセージ処理パイプライン構築する方法を特定し、当該方法は、追加のメッセージ処理要件を満たすためのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントの構成を特定することを含む（動作２０４）。例えば、変換アプリケーションモジュール１０４は、変換内容１３２をパイプライン仕様１２１に適用して、変換されたパイプライン仕様１２１Ｔを作成することができる。変換されたパイプライン仕様１２１Ｔは、追加の要件１３１を満たすメッセージ処理パイプラインを構築する方法を特定する。変換されたパイプライン仕様１２１Ｔは、（例えば、利用可能なパイプラインコンポーネント１４２から）パイプラインコンポーネントの構成を特定することができる。該構成は、追加の要件１３１を満たすために、例えば通信リンク１１３に含まれるような、メッセージ処理パイプラインに含まれることになっている。
【００４７】
方法２００は、変換されたパイプライン仕様を解釈して、アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する動作を含み、インスタンスを作成されたメッセージ処理パイプラインは、アプリケーションについての追加のメッセージ処理要件を満たすよう構成されている（動作２０５）。例えば、パイプライン仕様インタプリタ１０６は、変換されたパイプライン仕様１２１Ｔを解釈してメッセージ処理パイプライン１０８のインスタンスを作成することができる。パイプライン仕様インタプリタ１０６は、コンポーネント１５２にアクセスしてメッセージ処理パイプライン１０８のインスタンスを作成することができる。パイプライン仕様インタプリタ１０６は、変換されたパイプライン仕様１２１Ｔで特定される様にコンポーネント１５２を構成することができる。従って、仕様インタプリタ１０６は、通信リンク１１３が追加の要件１３１を満たすようなやり方で、メッセージ処理パイプライン１０８のインスタンスを作成することができる。
【００４８】
メッセージ処理パイプライン１０８は、通信媒体１１１、パイプラインコンポーネント１１２、通信リンク論理１１４との通信リンク１１３、並びにパイプラインコンポーネント１１６Ａ及びパイプラインコンポーネント１１６Ｂを含む。図１に示したように、メッセージ処理パイプライン１０８は、論理的に表される。メッセージ処理パイプラインの異なるコンポーネントは、異なるマシンに物理的に存在してもよい。例えば、パイプラインコンポーネント１１２、パイプラインコンポーネント１１６Ａ、パイプラインコンポーネント１１６Ｂ及びアプリケーション１０７は、全て異なるマシンに物理的に存在できる可能性がある。パイプラインコンポーネント１１６Ａ及びパイプラインコンポーネント１１６Ｂは、メッセージ処理パイプライン１０８におけるメッセージ処理が、メッセージ特性、プロトコル特性、マシン特性等に基づいて分岐できることを表す。
【００４９】
通信リンク１１３は、パイプラインコンポーネント１１２からメッセージを受信することができる。通信リンク論理１１４は、追加の要件１３１を満たすやり方でパイプラインコンポーネント１１２から受信したメッセージの配置を決定することができる。通信リンク１１３は、パイプラインコンポーネント１１６Ａ及び／またはパイプラインコンポーネント１１６Ｂにメッセージを送信することができる。
【００５０】
通常、パイプライン内通信リンクは、あらゆる下層の通信媒体を使用することができる。通信媒体を、パイプライン内通信リンクに先行しておりかつ後続するパイプラインコンポーネントの位置に基づいて使用してもよい。例えば、パイプラインコンポーネントが同じマシンの異なるプロセスに配置される場合、システムバスを通信媒体として用いることができる。他方、パイプラインコンポーネントが異なるマシンに配置される場合、ネットワーク媒体（有線及び／または無線）を通信媒体として用いることができる。
【００５１】
よって、より具体的には、パイプライン内通信リンクは、パイプラインコンポーネントを先行するパイプラインコンポーネントに接続する着信通信媒体（incoming communication medium）を含むことができる。パイプライン内通信リンクはまた、着信通信媒体からのメッセージを処理するための受信メッセージ処理パイプラインを含むことができる。パイプライン内通信リンクはまた、メッセージを処理してこれらの配置を決定する通信リンクアプリケーションを含むことができる。パイプライン内通信リンクはまた、パイプラインコンポーネントを後続するパイプラインコンポーネントに接続している１つまたは複数の発信通信媒体（outgoing communication medium）を含むことができる。パイプライン内通信リンクはまた、対応する発信通信媒体にメッセージを送信するための１つまたは複数の送信メッセージ処理パイプラインを含むことができる。
【００５２】
図３は、パイプライン内通信リンク３２１を含む例示的なメッセージ処理パイプライン３００を示す。メッセージ処理パイプライン３００は、通信媒体３０１、パイプラインコンポーネント３０２、パイプライン内通信リンク３２１、パイプラインコンポーネント３０９Ａ及びパイプラインコンポーネント３０９Ｂ並びにアプリケーション３１１を含む。示したように、パイプライン内通信リンク３２１は、パイプラインコンポーネント３０２をパイプラインコンポーネント３０９Ａ及びパイプラインコンポーネント３０９Ｂに接続する。
【００５３】
パイプライン内通信リンク３２１は、着信通信媒体３０３、受信メッセージ処理パイプライン３０４、通信リンク論理３０６、送信メッセージ処理パイプライン３０７Ａ及び送信メッセージ処理パイプライン３０７Ｂ、発信通信媒体３０８Ａ及び発信通信媒体３０８Ｂを含む。着信通信媒体３０３は、パイプライン内通信リンク３２１をパイプラインコンポーネント３０２に接続する。受信メッセージ処理パイプライン３０４は、着信通信媒体３０３を介してパイプラインコンポーネント３０２からメッセージを受信する。
【００５４】
通信リンク論理３０６は、メッセージを処理して、メッセージを配置する方法を決定する。例えば、メッセージのコンテンツまたはメッセージに付随するプロトコルのコンテンツに基づいて、通信リンク論理３０６は、メッセージが処理パイプライン３０７Ａに送信されることになっているかどうかまたはメッセージ処理パイプライン３０７Ｂに送信されることになっているかどうかを判断することができる。
【００５５】
発信通信媒体３０８Ａ及び発信通信媒体３０８Ｂは、それぞれパイプライン内通信リンク３２１をパイプラインコンポーネント３０９Ａ及びパイプラインコンポーネント３０９Ｂに接続する。送信メッセージ処理パイプライン３０７Ａ及び送信メッセージ処理パイプライン３０７Ｂは、それぞれ発信通信媒体３０８Ａ及び発信通信媒体３０８Ｂにメッセージを送信する。
【００５６】
よって、メッセージ処理パイプライン内の通信リンクを用いることによって、実行の流れを、複数のパイプラインコンポーネントの中で分岐できるようになる。このように、各々が異なったメッセージタイプを処理することができるパイプラインコンポーネントのいくつかの異なるインスタンスが存在してもよい。通信リンクは、受信したメッセージのタイプに応じてパイプラインコンポーネントの特定のインスタンスに分岐することができる。その後、パイプラインは、分岐が起こったことにアプリケーションが気付かないように、メッセージがアプリケーションに達する前に、再結合することができる。あるいは、アプリケーション論理は、メッセージタイプに従って同様に分割することができるので、分岐されたパイプラインがアプリケーションまでずっと続くことが望ましいかもしれない。
【００５７】
例えば、パイプラインコンポーネント３０９Ａ及びパイプラインコンポーネント３０９Ｂの両方は、アプリケーション３１１にメッセージを送信する。しかしながら、パイプライン内通信リンク３００の分岐は、同じアプリケーションへと統合される必要はない。例えば、パイプラインコンポーネント３０９Ａは、アプリケーション３１１にメッセージを送信することができ、パイプラインコンポーネント３０９Ｂはいくつかの異なるアプリケーションにメッセージを送信することができる。
【００５８】
本発明の実施形態は、異なるマシンに、おそらくその特定のマシンで利用可能なリソースに応じて、パイプラインコンポーネントを配置することを含む。各パイプラインコンポーネントを別個の適切に構成されたマシンに配置することができるように、パイプライン内通信リンクは、マシン同士の間で接続をブリッジングをするために用いることができる。
【００５９】
前述のように、パイプラインコンポーネントが異なるマシンに配置されている場合、パイプライン内通信リンクは、ネットワーク媒体を使用してパイプラインコンポーネント同士の間で通信することができる。図４を参照すると、図４は、論理パイプライン４２０及びその対応する物理的配置４４０を含むコンピュータアーキテクチャ４００を示す。示したように、論理パイプライン４２０は、通信媒体４２６、パイプラインコンポーネント４２４、パイプラインコンポーネント４２３、パイプラインコンポーネント４２２及びアプリケーション４２１を含む。通信媒体４２６及びパイプラインコンポーネント４２４は、マシン４４６に配置される。１つまたは複数の通信媒体４２６及びパイプラインコンポーネント４２４は、ライブラリ４５３を利用することができる（かつ要求しさえすることができるかもしれない）。
【００６０】
パイプラインコンポーネント４２３は、マシン４４３に配置される。パイプラインコンポーネント４２３は、ライブラリ４５２を利用することができる（かつ要求しさえすることができるかもしれない）。パイプラインコンポーネント４２２及びアプリケーション４２１は、マシン４４１に配置される。パイプラインコンポーネント４２２及びアプリケーション４２１は、ライブラリ４５１を利用することができる（かつ要求しさえすることができるかもしれない）。
【００６１】
パイプライン内通信リンクは、１つのマシンに配置されたパイプラインコンポーネントを別のマシンに配置されたパイプラインコンポーネントに接続するために用いることができる。例えば、通信リンク４４４は、パイプラインコンポーネント４２４をパイプラインコンポーネント４２３にかつその逆に接続する。同様に、通信リンク４４２は、パイプラインコンポーネント４２３をパイプラインコンポーネント４２２にかつその逆に接続する。
【００６２】
しかしながら、マシンの分離境界を用いてパイプラインコンポーネントを分離することは、唯一の考えられる詳細レベルではない。例えば、同じマシンの別個のプロセスに配置するような他の種類の分離境界も用いることができる。
【００６３】
他の実施形態では、パイプラインコンポーネントの物理的配置は、持続的メッセージキューで分離することができる。パイプラインコンポーネント同士の間に持続的ストアを配することによって、持続的ストアが一時的に独立したやり方で実行できるようになる。図５は、持続的キューによって分離されたメッセージ処理パイプラインコンポーネントを備えたコンピュータアーキテクチャ５００を示す。
【００６４】
図５に示すように、例えば、要求メッセージ５３１などの要求メッセージは、プロセス５０２で入力される。同様に、例えば、応答メッセージ５３２などの応答メッセージは、プロセス５０２で発信される。マシン５０１は、プロセス５０２及び５０３を含む。プロセス５０２はコンポーネント５０３を含み、プロセス５０６はコンポーネント５０７及びコンポーネント５０８を含む。持続的キュー５０４は、マシン５０１のローカルの通信媒体を介して、コンポーネント５０３をコンポーネント５０７及びコンポーネント５０８から分離している。マシン５２１は、プロセス５２２及びプロセス５２６を含む。プロセス５２２はコンポーネント５２３を含み、プロセス５２６はアプリケーション５２７（例えば、別のパイプラインコンポーネント）を含む。持続的キュー５２４は、マシン５２１のローカルの通信媒体を介して、コンポーネント５２３をアプリケーション５２７から分離している。持続的キュー５１１は、マシン５０１とマシン５０２との間のネットワーク通信媒体を介して、コンポーネント５０７及びコンポーネント５０８をコンポーネント５２３から分離している。
【００６５】
コンピュータアーキテクチャ５００内で、コンポーネント５０７またはコンポーネント５０８が帯域外メカニズム（out of band mechanism）（例えば、送信メッセージの確認）を用いて要求メッセージ５３１の発信者に応答することになっている場合、発信者は、コンポーネント５０３によって送信された転送確認とは関係なくかつ後のパイプライン実行及びアプリケーションと関係なく自由に応答することができる。要求メッセージ５３１が持続的キュー５０４に配されるとすぐに、パイプラインコンポーネント５０３はまた、要求メッセージ５３１への応答を送信することができる。パイプラインコンポーネント５０７は、確認を送信することができないために一時的な障害を引き起こすかもしれないが、これはパイプラインコンポーネント５０３がより多くの要求を処理し続けるのを防げない。同様に、持続的キュー５１１によって、後のパイプラインコンポーネント及びアプリケーション５２７がすでに確認された処理要求を続けることができるようになる。
【００６６】
よって、通信リンクの仕様は、パイプラインについての全体的な仕様の一部と考えることができる。各通信リンクは、単一のパイプライン仕様内のインラインと特定されてもよいしまたは他の仕様への参照を用いて接続されてもよい。場合によっては、通信リンクの仕様を自動的に推定することが可能である。２つの隣接するパイプラインコンポーネントは、第１のパイプラインコンポーネントが第１のメッセージフォーマットを用いてメッセージを出力しかつ第２のパイプラインコンポーネントが第２のメッセージフォーマットを用いてメッセージを消費するように構成されている場合、第１のメッセージフォーマットと第２のメッセージフォーマットとの間で翻訳する通信の存在は、特定の仕様を要求するよりむしろシステムによって推定することができる。
【００６７】
従って、本発明の実施形態は、構成可能なメッセージ処理パイプラインを促進する。実施形態は、パイプライン内通信リンクを利用して、パイプラインステージを切り離す。パイプライン内通信リンクを使用することによって、パイプラインコンポーネントまたはアプリケーションを変更する必要なしにメッセージ処理パイプラインを構成するのを可能にする。各通信リンクは、それ自体、入力メッセージ処理パイプライン及び出力メッセージ処理パイプラインを備えたアプリケーションであり、入力メッセージ処理パイプライン及び出力メッセージ処理パイプラインは、例えば、接続されているパイプラインコンポーネントが、アプリケーション開発者が除去することを望む一時的な接続または物理的な接続を有するかどうかに応じて、時間及び／または空間にわたってメッセージをブリッジングする。
【００６８】
例えば、アプリケーション開発者は、通信リンクに、次のパイプラインコンポーネントが存在する異なるマシンへメッセージを送信させることによって、物理的な接続を除去することができる。アプリケーション開発者は、通信リンクにメッセージを持続的なストアから読み出しかつそこに書き込ませることによって一時的な接続を除去することができ、次のパイプラインコンポーネントを後で実行することができる。従って、通信リンクアプリケーション、通信リンクパイプライン及びメッセージ処理パイプラインに通信リンクを挿入するための対応する接続を、アプリケーション開発者が個々に通信リンクをプログラムする必要なしにパイプライン仕様から構築することができる。
【００６９】
本発明は、本発明の趣旨または本質的な特徴から逸脱することなく、他の特定の形態で具体化することができる。説明された実施形態は、例示的であって限定的でないと、あらゆる点で見なされるべきである。従って、本発明の範囲は、前述の詳細な説明によってよりはむしろ添付の特許請求の範囲によって示される。特許請求の範囲内の同等の意味及び範囲内で生じる全ての変更は、これらの範囲内に含まれることになっている。
【図１】
0005362011.tif 000002
【図２】
0005362011.tif 000003
【図３】
0005362011.tif 000004
【図４】
0005362011.tif 000005
【図５】
0005362011.tif 000006