(57)【要約】複数の処理ノード（８１０）を含むことが可能な環境内でソフトウェアコンポーネント（８１７、８１８）に動的にアクセスする方法、システム、およびコンピュータプログラム製品。各ノード（８１０）は、１つまたは複数のソフトウェアコンポーネントオブジェクト（８１７、８１８１）（仮想プロセッサ）、コントローラオブジェクト（８１２）、データベースオブジェクト（８１４）、追跡オブジェクト（８１６）、およびエージェントオブジェクトなどの１つまたは複数のソフトウェアオブジェクトを含む。特定のソフトウェアコンポーネント（８１７、８１８）によって実施される機能に対する要求は、利用可能なインスタンスに負荷分散される。利用できるソフトウェアコンポーネントがない場合は、スケジューラに要求を提出することができる。ソフトウェアコンポーネント（８１７、８１８）は、将来の処理のために確保しておくことができる。ソフトウェアコンポーネント（８１７、８１８）間の関係は、データベースオブジェクト（８１４）を通じてアクセスでき、コントローラオブジェクト（８１２）によって処理される、プラットフォームに依存しないロジックによって定義する。エージェントオブジェクトは、そのエージェントが担当する１つまたは複数のノード（８１０）で利用可能なソフトウェアコンポーネント（８１７、８１８）を追跡する。
2005501307.tif 000002
【特許請求の範囲】
【請求項１】
各々が１つまたは複数の機能を備える１つまたは複数のソフトウェアコンポーネントオブジェクトを含む複数のソフトウェアオブジェクトを備えるコンピュータ化されたシステムにおいて、前記１つまたは複数のソフトウェアコンポーネントオブジェクトおよび対応する１つまたは複数の機能にアクセスするためのインタフェースはパラメータおよび戻り値に基づき、タスクまたは目標を達成する際に前記１つまたは複数のソフトウェアコンポーネントオブジェクトに動的にアクセスする方法であって、
少なくとも１つのノードを作成する動作であって、前記少なくとも１つのノードは、（ｉ）所定の機能を実施する１つまたは複数の機能をそれぞれが備える１つまたは複数のソフトウェアコンポーネントオブジェクトと、（ｉｉ）前記１つまたは複数のソフトウェアコンポーネントオブジェクトとの対話を管理するコントローラオブジェクトとを含む動作と、
前記１つまたは複数のソフトウェアコンポーネントオブジェクトの前記１つまたは複数の機能の少なくとも１つの前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第１のソフトウェアコンポーネントオブジェクトを動的に識別する動作であって、前記第１のソフトウェアコンポーネントオブジェクトの識別は、いずれの所定の要求者にも独立して前記要求についてのみ持続することができ、後の要求が前の要求者からのものである場合でも、前記後の要求に対して別のソフトウェアコンポーネントオブジェクトを動的に識別することを可能にする動作と、
前記第１のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を備えたことを特徴とする方法。
【請求項２】
複数のソフトウェアコンポーネントオブジェクトが前記所定の機能に対する要求を満たすことができ、前記方法はさらに、
続いて前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第２のソフトウェアコンポーネントオブジェクトを動的に識別する動作と、
前記第２のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記少なくとも１つのノードは、複数のソフトウェアコンポーネントオブジェクトを含み、前記複数のソフトウェアコンポーネントオブジェクトはそれら自体、相互に完全に独立し、互いを認識しないことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数のソフトウェアコンポーネントオブジェクトの少なくとも２つの間の関係を定義する、プラットフォームに独立のロジックを設計する動作であって、前記ロジックは、処理フローおよび１つまたは複数の分岐条件の少なくとも１つを含む動作をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
複数のソフトウェアコンポーネントオブジェクトが前記所定の機能に対する要求を満たすことができ、前記方法はさらに、前記所定の機能に対する複数の要求を前記複数のソフトウェアコンポーネントオブジェクトに負荷分散する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記少なくとも１つのノードはさらに、（ｉ）プラットフォームに独立のロジック、（ｉｉ）１つまたは複数のソフトウェアコンポーネントオブジェクトの状態情報、および（ｉｉｉ）プラットフォームに独立のデータ、の少なくとも１つへのアクセスを提供するデータベースオブジェクトを備え、前記方法はさらに、前記データベースオブジェクトを通じて、前記プラットフォームに独立のロジック、前記状態情報、または前記プラットフォームに独立のデータのいずれかにアクセスする動作を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記少なくとも１つのノードの前記データベースオブジェクトは、プラットフォームに独立のロジックにアクセスし、前記方法はさらに、
前記プラットフォームに独立のロジックを実行する動作、および
前記所定の機能に対する要求を作成する動作
を行うコントローラを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記少なくとも１つのノードはさらに、前記少なくとも１つのノードで行われる処理を追跡することができる追跡オブジェクトを備え、前記方法はさらに、前記第１のソフトウェアコンポーネントオブジェクトの少なくとも１つの機能の動作を記録する動作を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記少なくとも１つのノードは複数のノードを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記複数のノードの少なくとも２つは相互に遠隔にあり、前記少なくとも２つの複数のノードの１つがローカルノードであり、もう一方がリモートノードであることを特徴とする請求項９に記載の方法。
【請求項１１】
１つまたは複数のノードは、そのエージェントが担当するいくつかのノードのそれぞれで利用可能なソフトウェアコンポーネントオブジェクトを追跡するエージェントオブジェクトを含み、所与のノードは、前記所定の機能に対する要求を満たすことができるローカルのソフトウェアコンポーネントオブジェクトを識別することができず、前記エージェントが動的に前記第１のソフトウェアコンポーネントを識別することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数のノードは、単一のハードウェアノードに位置することを特徴とする請求項９に記載の方法。
【請求項１３】
前記複数のノードが、プラットフォームに独立のメッセージを通じて相互と通信する動作をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１４】
当初利用可能なソフトウェアコンポーネントオブジェクトがなく、前記方法はさらに、前記第１のソフトウェアコンポーネントオブジェクトが利用可能になるまで前記所定の機能に対する要求をスケジュールする動作を含むことを特徴とする請求項１に記載の方法。
【請求項１５】
複数のソフトウェアオブジェクトを可能にし、それぞれが１つまたは複数の機能を備える１つまたは複数のソフトウェアコンポーネントオブジェクトを含むことができ、前記１つまたは複数のソフトウェアコンポーネントオブジェクトとの対話を管理するコントローラオブジェクトを含むことができるコンピュータ化されたシステムにおいて、前記１つまたは複数のソフトウェアコンポーネントオブジェクトに動的にアクセスする方法であって、
少なくとも２つのソフトウェアコンポーネントオブジェクトのインタフェースを定義する動作であって、前記インタフェースは、（ｉ）前記１つまたは複数のソフトウェアオブジェクトの各機能、（ｉｉ）各機能に関連する任意のパラメータ、および（ｉｉｉ）各機能に関連する任意の戻り値、を指定する動作と、
前記少なくとも２つのソフトウェアコンポーネント間の１つまたは複数の関係を定義する動作であって、前記関係または関連付けは、前記少なくとも２つのソフトウェアコンポーネントオブジェクトのどの実装からも分離し、独立しており、前記関係または関連付けは、コントローラオブジェクトによって処理されるプラットフォームに独立のロジックとして格納される動作と、
前記少なくとも２つのソフトウェアコンポーネントオブジェクトの位置を指定する環境を定義する動作であって、前記少なくとも２つのソフトウェアコンポーネントオブジェクトは、１つまたは複数の処理ノードに分散させることができる動作と
を含むことを特徴とする方法。
【請求項１６】
所定の機能に対する要求を満たすことができる第１のソフトウェアコンポーネントオブジェクトを動的に識別する動作をさらに含み、前記所定の機能に対する後の要求に対して別のソフトウェアコンポーネントを動的に識別できることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記１つまたは複数の処理ノードは、（ｉ）そのエージェントが担当するいくつかのノードのそれぞれで利用可能なソフトウェアコンポーネントを追跡するエージェントオブジェクトであって、動的に第１のソフトウェアコンポーネントを識別するエージェントオブジェクト、（ｉｉ）プラットフォームに独立のロジック、状態情報、およびプラットフォームに独立のデータ、の少なくとも１つへのアクセスを提供するデータベースオブジェクト、および（ｉｉｉ）少なくとも１つの処理ノードで行われる処理を追跡することができる追跡オブジェクト、の少なくとも１つを備えることを特徴とする請求項１５に記載の方法。
【請求項１８】
複数のソフトウェアコンポーネントオブジェクトが所定の機能に対する要求を満たすことができ、前記方法はさらに、前記所定の機能に対する複数の要求を前記複数のソフトウェアコンポーネントに負荷分散する動作を含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
それぞれが１つまたは複数の機能を備える１つまたは複数のソフトウェアコンポーネントオブジェクトを含む複数のソフトウェアオブジェクトを備えるコンピュータ化されたシステムにおいて、前記１つまたは複数のソフトウェアコンポーネントオブジェクトおよび対応する１つまたは複数の機能にアクセスするためのインタフェースはパラメータおよび戻り値に基づき、タスクまたは目標を達成する際に前記１つまたは複数のソフトウェアコンポーネントオブジェクトに動的にアクセスする方法を実施するコンピュータプログラム製品であって、
少なくとも１つのノードを作成する動作であって、前記少なくとも１つのノードは、（ｉ）所定の機能を実施する１つまたは複数の機能をそれぞれが備える１つまたは複数のソフトウェアコンポーネントオブジェクトと、（ｉｉ）前記１つまたは複数のソフトウェアコンポーネントオブジェクトとの対話を管理するコントローラオブジェクトとを含む動作と、
前記１つまたは複数のソフトウェアコンポーネントオブジェクトの１つまたは複数の機能の少なくとも１つの前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第１のソフトウェアコンポーネントオブジェクトを動的に識別する動作であって、前記第１のソフトウェアコンポーネントオブジェクトの識別は、どの特定の要求者にも関係なく前記要求についてのみ持続することができ、後の要求が前の要求者からのものである場合でも、前記後の要求に対して別のソフトウェアコンポーネントオブジェクトを動的に識別することを可能にする動作と、
前記第１のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を備えた前記方法を実施する機械実行可能命令を搬送するコンピュータ読取可能な媒体を備えたことを特徴とするコンピュータプログラム製品。
【請求項２０】
複数のソフトウェアコンポーネントオブジェクトが前記所定の機能に対する要求を満たすことができ、前記方法はさらに、
続いて前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第２のソフトウェアコンポーネントオブジェクトを動的に識別する動作と、
前記第２のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を含むことを特徴とする請求項１９に記載のコンピュータプログラム製品。
【請求項２１】
前記少なくとも１つのノードは、複数のソフトウェアコンポーネントオブジェクトを含み、前記複数のソフトウェアコンポーネントオブジェクト自体は、相互に完全に独立し、互いを認識せず、前記方法はさらに、前記複数のソフトウェアコンポーネントオブジェクトの少なくとも２つの間の関係を定義する、プラットフォームに独立のロジックを設計する動作であって、前記ロジックは、処理フローおよび１つまたは複数の分岐条件の少なくとも１つを含む動作を含むことを特徴とする請求項１９に記載のコンピュータプログラム製品。
【請求項２２】
前記少なくとも１つのノードはさらに、（ｉ）プラットフォームに独立のロジック、（ｉｉ）１つまたは複数のソフトウェアコンポーネントオブジェクトの状態情報、および（ｉｉｉ）プラットフォームに独立のデータ、の少なくとも１つへのアクセスを提供するデータベースオブジェクトを備え、前記方法はさらに、前記データベースオブジェクトを通じて、前記プラットフォームに独立のロジック、前記状態情報、または前記プラットフォームに独立のデータのいずれかにアクセスする動作を含むことを特徴とする請求項２０に記載のコンピュータプログラム製品。
【請求項２３】
前記少なくとも１つのノードの前記データベースオブジェクトは、プラットフォームに独立のロジックにアクセスし、前記方法はさらに、
前記プラットフォームに独立のロジックを実行する動作、および
前記所定の機能に対する要求を作成する動作
を含むことを特徴とする請求項２２に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアコンポーネントに関し、より詳細には、１つまたは複数のソフトウェアオブジェクトを潜在的に含む複数の処理ノードを含むことができる環境においてソフトウェアコンポーネントに動的にアクセスする方法、システム、およびコンピュータプログラム製品に関する。
【背景技術】
【０００２】
競争力を維持するために、事業者は常に新しい製品とサービスを提供しており、その結果事業経営に変化が生じ、対処すべき問題がほぼ無限に次々と生じている。時間の経過とともに、多くの事業は発展して常に変化し、動的なカスタマイズされたビジネスプロセスの集合体となる可能性がある。変化する要求によりほとんどの事業の経営が複雑化する一方、発展する技術によりさらに大きな問題が生じる可能性がある。例えば、技術が、約束するものを供給することができないかもしれず、あるいはその変化が速すぎて、事業の問題点の解決を当初の予想より難しくする可能性がある。さらに、所与の組織にとって、いずれか所定の技術に特有の利点は、新たに登場する製品およびサービスとの関係で評価するのが難しい可能性がある。したがって、各自の経営を支援するために事業者が技術を使用する場合には、変化するビジネス要件を満たすようにその技術をかなり頻繁に修正し、強化する必要がある可能性がある。その結果、技術によって事業問題を解決するには、一般に、ソフトウェア、ハードウェア、エンジニアリング、およびハイプの複雑な混合が必要とされる。事業者によっては、単に、ほぼ無限にある利用可能な技術から常に選択を行う作業で手一杯になってしまう。したがって、システム全体に対する不利益な影響を最小に抑えながら追加的な修正を可能にする技術に基づいた柔軟な解決策により、今日のビジネス環境において競争上の優位を得ることができる。
【０００３】
ＣＯＭ、ＤＣＯＭ、ＯＬＥ、ＣＯＲＢＡ、ＲＰＣなどのコンポーネント技術は、ビジネスプロセスを実現するための柔軟な技術を提供する試みの１つである。コンポーネント技術を使用すると、複数の製品に開発労力を再利用することにより、比較的短い時間で様々なソフトウェア製品を実装することができる。ソフトウェアコンポーネントは、インタフェースを通じてそれらのコンポーネントが提供するサービスへのアクセスを提供する独立した機能を提供することにより、再利用を容易にする。明確に定義されたインタフェースは、より大規模のシステムを作成する場合にコンポーネントをつなぎ合わせる際に個々のコンポーネントがどのように互いと調和するかを定義するので、コンポーネントの重要な特性である。理想的には、修正を行わずに複数の目的のために個々のコンポーネントを適合できるとよい。しかし、競合するコンポーネント技術によって提供される基本的な用語体系、設計の構成、およびインタフェースには著しく混乱し、および相違する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
コンポーネント間の関係には、複雑な通信と同期コードが必要である。しかし、コンポーネントはそのコンポーネントの機能だけを公開すべきであり、他のコンポーネントの存在から独立している方がよい。独立させることによりコンポーネントが相互から隔離され、あるコンポーネントの変化がすべてのコンポーネントに伝播しない。したがって、再利用性を可能な限り高めるために、コンポーネントは、そのコンポーネントを他のコンポーネントに依存させる属性を除くべきである。コンポーネント間の依存関係や関連付けなどの関係は、インフラストラクチャの一部となるべきである。
【０００５】
急速に変化するビジネス環境によって課される要求を満たすために、コンポーネント技術と規格は常に改良されており、コンポーネントの開発と使用のためのモデル、方法、およびプロセスが各種の規格団体および共同体によって継続的に定義され、承認されている。それぞれのコンポーネント技術、仕様、あるいは製品は、一般に、ある企業の特定のニーズに関していくらかの利益をもたらすが、その特定の技術を使用するには費用がかかり維持費の高い多量のインフラストラクチャコードを書かなければならないことが多い。
【０００６】
コンポーネント技術の進歩は能力と機能において利益となるが、ビジネス要件とコンポーネント技術とは基本的に結び対が強いことから、基礎となるコンポーネントインフラストラクチャの変更が必要となる場合がある。さらに、各技術が備える最良の特性を使用しようとして技術を組み合わせる開発者は、別個の互換性のないインフラストラクチャサービスが相互に通信するための機構を作成しなければならない可能性がある。共通のインフラストラクチャがないと、インタフェースだけでは広く再利用できるコンポーネントを生み出せる見込みは低い。さらに、分散環境中に配置されたコンポーネントは、各種タイプの分散した障害、場所、およびフォーマットを管理する役割を担う。分散したインフラストラクチャが存在しないと、開発サイクルが長くなる可能性がある。
【０００７】
本発明は、複数の処理ノードを含むことができる環境においてソフトウェアコンポーネントに動的にアクセスするためのインフラストラクチャを提供することにより上述の問題に対処する。
【課題を解決するための手段】
【０００８】
各ノードは、１つまたは複数のソフトウェアコンポーネントオブジェクト、コントローラオブジェクト、データベースオブジェクト、追跡オブジェクト、エージェントオブジェクトなどの１つまたは複数のソフトウェアオブジェクトを含む。各ソフトウェアコンポーネントは、特定の目標またはタスクを実行するために使用できる機能を実施する。ソフトウェアコンポーネントは、それが実施する機能を実行する仮想プロセッサと考えることができる。特定の機能に対して高い需要が存在する場合は、あるソフトウェアコンポーネントの複数のインスタンスを作成することができ、利用可能なインスタンスに要求を負荷分散する。
【０００９】
ソフトウェアコンポーネント間の関係は、プラットフォームに独立のロジックによって定義される。コントローラオブジェクトは、別のノードのデータベースオブジェクトまたはコントローラオブジェクトからロジックを受け取り、そのロジックを実行してプロセスフローと分岐を判定する。あるノードのソフトウェアオブジェクトの機能に対する要求は、初期化手順の一部として、実行されるロジック、リモートノード、スケジューラなどを含むいくつかのソースから生じる場合がある。機能に対する要求を受け取ると、コントローラは、その要求を満たすためにローカルのソフトウェアコンポーネントを利用できるかどうか、または別のノードに接触すべきかどうかを判定する。
【００１０】
エージェントオブジェクトは、そのエージェントが担当する１つまたは複数のノードで利用可能なソフトウェアコンポーネントを追跡する。エージェントは、様々な精密度でソフトウェアコンポーネントの状態またはステータスも追跡する。例えば、機能に対する要求を受け取った場合、エージェントは、（ｉ）所定のソフトウェアコンポーネントがどこに位置するか、および（ｉｉ）その所定のソフトウェアコンポーネントが他の要求の処理で使用中であるかどうか、を知っていると、より好適なルーティングの決定を行うことができる。利用可能なソフトウェアコンポーネントがない場合は要求をスケジューラに渡し、そうでない場合は、その要求を満たすかあるいは処理することができるソフトウェアコンポーネントを有するリモートノードに要求を送信する。
【００１１】
ローカルの要求に対しては適切なソフトウェアコンポーネントが識別され、コントローラは、識別されたソフトウェアコンポーネントを適宜確保し、ブロッキングを設定する。コントローラは、そのノードのエージェントによって追跡される、識別されたコントローラのステータス情報を更新する。この時点で、コントローラは、要求をもって処理のためにそのコンポーネントを呼び出す。コンポーネントは、要求される機能を実施する対応機能を実行することによって要求を処理し、ステータス情報を更新できるようにエージェントに通知する。他の要求は同様の方式で処理される。
【００１２】
プラットフォームに独立のロジックによって処理するのが最良である相互依存を最少にするために、個々のソフトウェアコンポーネントは、互いから完全に独立させ、互いを認識しないようにすることができる。負荷分散を強化するために、単一のソースによる同一機能に対する複数の要求は、異なるソフトウェアコンポーネントによって処理することができる。以前の要求と無関係に機能要求を処理することが原因でいくらかのオーバーヘッドが生じる可能性があるが、負荷分散の利益はそれを上回る可能性がある。さらに、状況により要求される場合には、将来の使用のためにソフトウェアコンポーネントを確保しておくことができる。
【００１３】
本発明のこの他の特徴および利点は以下の説明で述べ、また一部はその説明から明らかになるか、あるいは本発明の実施から理解することができよう。本発明の特徴および利点は、特許請求の範囲で詳細に指摘する手段および組合せによって実現し、得ることができる。本発明の上記およびその他の特徴は、以下の説明および特許請求の範囲からより完全に明らかになり、あるいは以下に述べる本発明の実施によって理解することができる。
【００１４】
本発明の上述およびその他の利点および特徴を得ることができる方式を説明するために、上記で簡単に述べた本発明のより詳細な説明を、添付図面に図示するその具体的な実施形態を参照して提供する。これらの図面は、本発明の典型的な実施形態だけを表すものであり、したがって本発明の範囲を限定するものと解されないことを理解した上で、本発明について添付図面を使用してさらに具体的かつ詳細に述べ、説明する。
【発明を実施するための最良の形態】
【００１５】
本発明は、複数の処理ノードを含むことができる環境内でソフトウェアコンポーネントに動的にアクセスするための方法、システム、およびコンピュータプログラム製品に適用され、個々の処理ノードは、１つまたは複数のソフトウェアコンポーネントオブジェクト、コントローラオブジェクト、データベースオブジェクト、追跡オブジェクト、エージェントオブジェクトなど、１つまたは複数のソフトウェアオブジェクトを含む。ソフトウェアコンポーネントは、特定の目標またはタスクを遂行するために使用できる機能を提供することから、それが実施する機能を行う仮想プロセッサと呼ばれる場合がある。しばしば要求される機能については、負荷分散を可能にするために、あるソフトウェアコンポーネントの複数のインスタンスを作成することができる。
【００１６】
ソフトウェアコンポーネント間の関係は、コントローラオブジェクトによって実行される、プラットフォームに依存しないロジックによって定義される。あるローカルノードのソフトウェアコンポーネントが特定の要求を満たすことができない場合は、エージェントオブジェクトに接触して、処理のためにその要求をリモートノードに送信すべきかどうかを判定することができる。利用可能なソフトウェアコンポーネントがない場合は、後に実行するために要求をスケジュールすることができる。依存関係を最少にしてプラットフォームに依存しないロジックによって処理するために、個々のソフトウェアコンポーネントは互いから完全に独立させ、互いを認識しないようにすることができる。単一のソースによる同一機能に対する複数の要求は、負荷分散を高めるために異なるソフトウェアコンポーネントによって処理することができる。必要な場合には、後に行う処理のためにソフトウェアコンポーネントを確保しておくことができる。本発明の実施形態は、下記でより詳細に述べるように各種のコンピュータハードウェアを含む専用または汎用のコンピュータを含むことができる。
【００１７】
本発明の範囲内にある実施形態は、コンピュータ実行可能命令またはデータ構造を搬送するか、またはそれらが格納されたコンピュータ読取可能な媒体も含む。そのようなコンピュータ読取可能な媒体は、汎用または専用コンピュータによってアクセスできる任意の利用可能な媒体でよい。これらに限定しないが、例として、そのようなコンピュータ読取可能な媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態で搬送または格納するのに使用することができ、汎用または専用コンピュータによるアクセスが可能な任意の他の媒体からなることができる。ネットワークまたは別の通信接続（配線式、無線式、あるいは配線式と無線式の組合せ）を通じてコンピュータに情報を転送または提供する場合、コンピュータはその接続を正確にコンピュータ読取可能な媒体とみなす。したがって、そのような接続はいずれも厳密にコンピュータ読取可能な媒体と称する。上記の媒体の組合せもコンピュータ読取可能な媒体の範囲に含めるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に特定の機能または機能の群を行わせる命令とデータを含む。
【００１８】
図１および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単で概略的な説明を提供する。必須ではないが、本発明は、ネットワーク環境内のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明する。一般に、プログラムモジュールは、特定タスクを行うか、特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、ここに開示する方法のステップを実行するプログラムコード手段の例に相当する。そのような実行可能命令や関連するデータ構造の特定のシーケンスは、それらのステップに記載する機能を実施するための対応する動作の例に相当する。
【００１９】
当業者は、本発明は、パーソナルコンピュータ、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む多種のコンピュータシステム構成を備えるネットワークコンピューティング環境で実施できることを認識されよう。本発明は、通信ネットワークを通じて（配線リンク、無線リンク、または配線リンクと無線リンクの組合せにより）リンクされたローカルおよびリモートの処理装置によってタスクを行う分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールはローカルおよびリモート両方のメモリ記憶装置に配置することができる。
【００２０】
図１を参照すると、本発明を実施する例示的システムは、従来のコンピュータ２０の形態の汎用コンピューティングデバイスを含み、コンピュータ２０は、処理装置２１、システムメモリ２２、およびシステムメモリ２２を含む各種のシステムコンポーネントを処理装置２１に結合するシステムバス２３を含む。システムバス２３は、各種のバスアーキテクチャのうち任意のものを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数種のバス構造のいずれでもよい。システムメモリは、読み取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。起動時などにコンピュータ２０内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２６は、ＲＯＭ２４に格納することができる。
【００２１】
コンピュータ２０は、磁気ハードディスク３９の読み書きを行う磁気ハードディスクドライブ２７、取り外し可能の磁気ディスク２９の読み書きを行う磁気ディスクドライブ２８、およびＣＤ−ＲＯＭやその他の光媒体などの取り外し可能光ディスク３１の読み書きを行う光ディスクドライブ３０も含むことができる。磁気ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれ、ハードディスクドライブインタフェース３２、磁気ディスクドライブインタフェース３３、および光ドライブインタフェース３４によってシステムバス２３に接続される。これらのドライブとそれに関連付けられたコンピュータ読取可能な媒体は、コンピュータ２０のコンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性の記憶を提供する。ここに記載する例示的環境では、磁気ハードディスク３９、取り外し可能磁気ディスク２９、および取り外し可能光ディスク３１を用いているが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含む、データを格納する他タイプのコンピュータ読取可能な媒体を使用することができる。
【００２２】
オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７、およびプログラムデータ３８を含む、１つまたは複数のプログラムモジュールからなるプログラムコード手段は、ハードディスク３９、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５に格納することができる。ユーザは、キーボード４０、ポインティングデバイス４２、あるいはマイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなど他の入力装置（図示せず）を通じてコンピュータ２０にコマンドと情報を入力することができる。これらおよびその他の入力装置は、システムバス２３に結合されたシリアルポートインタフェース４６を通じて処理装置２１に接続することが多い。あるいは、これらの入力装置は、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースによって接続してもよい。モニタ４７または別の表示装置も、ビデオアダプタ４８などのインタフェースを介してシステムバス２３に接続される。パーソナルコンピュータは通例、モニタに加えてスピーカやプリンタなど他の周辺出力装置（図示せず）を含む。
【００２３】
コンピュータ２０は、リモートコンピュータ４９ａおよび４９ｂなど１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ４９ａおよび４９ｂはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、あるいはその他の一般的なネットワークノードでよく、図１にはメモリ記憶装置５０ａおよび５０ｂとそれらに関連付けられたアプリケーションプログラム３６ａおよび３６ｂしか示していないが、通例はコンピュータ２０との関連で上述した要素の多くまたはすべてを含む。図１に示す論理接続には、ここに例として提示し、限定ではない、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２が含まれる。このようなネットワーキング環境は、オフィス内または企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【００２４】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ２０は、ネットワークインタフェースまたはアダプタ５３を通じてローカルネットワーク５１に接続する。ＷＡＮネットワーキング環境で使用する場合、コンピュータ２０は、インターネットなどのワイドエリアネットワーク５２を通じて通信を確立するためのモデム５４、無線リンク、あるいはその他の手段を含むことができる。モデム５４は内蔵型でも外付け型でもよく、シリアルポートインタフェース４６を介してシステムバス２３に接続する。ネットワーク環境では、コンピュータ２０との関連で図に示すプログラムモジュール、またはその一部は、遠隔のメモリ記憶装置に格納することができる。図に示すネットワーク環境は例示的なものであり、ワイドエリアネットワーク５２を通じて通信を確立する他の手段を使用できることは理解されよう。
【００２５】
図２に、本発明を説明する際に考慮することのできる各種のドメインを示す。コンポーネントドメイン２１０は、抽象化を通じて複雑なシステムを単純なものにすることができる。個々のコンポーネントは、提供される機能、必要に可能性のあるパラメータまたはデータ、および戻り条件の点から定義される。コンポーネントは、共通オブジェクト要求ブローカアーキテクチャ（「ＣＯＲＢＡ」）、コンポーネントオブジェクトモデル／分散コンポーネントオブジェクトモデル（「ＣＯＭ／ＤＣＯＭ」）、エンタープライズＪａｖａ（登録商標）Ｂｅａｎｓ（「ＥＪＢ」）などの標準的な技術と併せて各種のオブジェクト指向の手法を使用して開発することができる。各コンポーネントは、他のコンポーネントを考慮せずに単独で開発する。個々のコンポーネントは、オブジェクト指向クラスを介してすべてのコンポーネントに共通の機能を継承することができる。要件の収集、分析、および設計と密接に結びつく開始から仕上げまでの諸段階は、コンポーネントドメインに直接マッピングする。コンポーネントドメインはほぼ同期しており、１度に１つずつ行われるタスクの根拠となる。各コンポーネントは、それ自体の単一のインスタンスだけを知っており、所与の時間に１つのコンポーネントインスタンスにつき１つのメソッドがアクティブになっている。
【００２６】
コンポーネント間の関係はプロセスドメイン２２０で扱われるインフラストラクチャで考慮される事項なので、分散ネットワークでは、任意のプラットフォームのコンポーネントを異種間で混合することができる。コンポーネントドメインと異なり、プロセスドメイン２２０は、プロセスを定義する非同期コンテクストである。プロセスを定義するために、要求されるワークフローおよび分岐条件に基づいて論理的順序で機能をグループ化する。プロセスドメイン２２０は、実行コンポーネントの位置（環境ドメイン２３０）や特定の実装問題（コンポーネントドメイン２１０）を扱わない。実装と動作環境を分離することにより、プロセスドメイン２２０は、ビジネスプロセスをターゲット技術から分離することを可能にする。この結果、基礎となる実装を修正する際でも、プロセスドメイン２２０で開発される解決法が引き続き有効になる。プロセスドメイン２２０は、標準的な統一モデリング言語（「ＵＭＬ」）によるアクティビティ図、ツリー階層、およびＢｕｉｌｄｅｒ  Ｌｉｎｅａｒを含む各種のフォーマットでとらえることができる。
【００２７】
環境ドメイン２３０は、ネットワーク情報と、各コンポーネントの具体的な位置を含む。機能（コンポーネントドメイン２１０）およびプロセス知識（プロセスドメイン２２０）は、このドメインでは必要とされない。環境は、エンタープライズネットワーク中のノードにあるコンポーネントの集合的な配置である。各ノードは、ネットワークに対するリソースまたはサービスとしてメモリに常駐するコンポーネントを識別する。これらの実行時構成を使用して、実行プロセスによって定義されるタスクまたは目標を達成する。ネットワーク構成全体に基づいた計算を通じて動的なスケーリングを達成することができる。例えば、ノードまたはハードウェアデバイスをネットワークに追加する際には構成に修正を行い、その新しいリソースを利用できる状態にする。これに対して、従来の環境におけるスケーリングでは、通常は新しいリソースに対応するようにコードを書き直す必要がある。
【００２８】
実行ドメイン２４０は、プロセスドメインの指示に従ってある手順から次の手順へと実行を導き、要求される機能を実行するためにローカルノードおよびリモートノードのコンポーネントを見つける。実行ドメイン２４０は、ネットワーク中で発生するあらゆるイベントを記録することも可能にする。データおよびネットワーク中のデータの移動は、後に検討するために保存しておくことができる。イベント情報を記録し、フォーマットするいくつかのビューを通じて、柔軟性のある管理オプションのために実行時監視が提供される。イベント情報を保存することにより履歴の監視が可能になり、多くの種類の問題を解決するためにあるシステムの正確な複製をシミュレートすることができる。記録されたイベントおよびデータは、各種の報告要件を満たすためにも使用することができる。
【００２９】
図３〜７は、実際のビジネス状況で本発明を使用する例に関連する。各ドメインを使用して、あるアプリケーションを要件から実行まで説明する。汎用的な開発プロセスにより、最も組織化された開発方法論に本発明をマッピングできる仕組みを例証する。詳細には、この例では、きわめて競争の激しい市場にあり、自動化された情報センターへの電話およびＷｅｂによるアクセスを提供することにより購入者と販売者へのアクセスを拡大しようとしている不動産会社を考察する。可能な限り大きな市場をつかむためには、可能な限り人間に似た対話を含め、サービスは使用が容易なものでなければならない。さらに、潜在的な購入者のサービスの閲覧を促進するために、ニュース、スポーツ、天気、および株価などの無料コンテンツサービスを提供する。この会社は、ＨＰ９０００、Ｓｏｌａｒｉｓウェブサーバ、およびＬｉｎｕｘ電子メールサーバを含むハードウェアへの過去の投資を維持することを希望している。図３に示すように、次の要件が集められる。
【００３０】
販売者３１２は、自社の不動産物件をリストに載せるためにサインアップ３２２することが出来なくてはならない。
【００３１】
販売者３１２には、音声メール３２６、ファックスメール３３４、および電子メール３３８を送受信することが可能な個々の電子通信ボックスを提供しなくてはならない。
【００３２】
販売者３１２は、要求される展示会の予約のステータスを確認する３４２ことができなくてはならない。
【００３３】
購入者３１４は、フィルタオプションを選択することにより、または各物件に表示されるＩＤ番号により、一覧を閲覧３６２することができなくてはならない。
【００３４】
購入者３１４は、住宅を見学するために予約３６６を設定することができなくてはならない。
【００３５】
購入者３１４は、購入者が要求した場合にはただちに代理人３１６に転送３７４しなくてはならない。
【００３６】
購入者３１４は、音声またはファックスを介して物件までの案内３７８を得ることができる。
【００３７】
購入者３１４は、任意選択で、天気予報、ニュース、スポーツ、株、および地域の映画上映時間などの特定の内容を聞くことができる。
【００３８】
購入者は、音声またはファックスにより住宅に関する情報を受け取ることができなくてはならない。電話の代替として、ウェブページを介した同等の機能を提供すべきである。各使用事例に基づいてコンポーネントを定義する際には、「要求される動作を行うのは何か」と「一度に１つずつ行えるのは何か」を検討すると、個々のコンポーネントの境界を明確にする助けとなる。例えば、使用事例の多くでは電話線を通じた接続性が必要とされる可能性がある。したがって、１つの線における呼を待機し、呼に応答し、呼を切り、記録し、再生し、ファックスを送信するなどの、テレフォニーと呼ばれるコンポーネントを備えることがふさわしい。ここでも、コンポーネントドメインで、あるコンポーネントが同期して行えることを考えることが通例は最も有用である。ポストオフィスバージョン３（「ＰＯＰ３」）サーバまたはシンプルメール転送プロトコル（「ＳＴＭＰ」）サーバに接続し、電子メールを送信し、電子メールを受け取り、電子メールを転送し、電子メールに返信する、単純な電子メールコンポーネントを定義することができる。
【００３９】
反復的に分析を行うと、図４に示すコンポーネントおよびそれに対応する機能を定義する。テレフォニー４１２は、呼の待機、呼の終了、テキストの読み上げ、コマンドの認識、録音、再生、削除、転送、ファックス受信、ファックス送信、メニューオプションの一覧表示を行う諸機能を含む。サインアップ４１６は、ウェルカム、一覧表示のオプション、販売者を追加する機能、および情報収集を提供する。一覧４２４は、ＩＤによる閲覧、場所による閲覧、エージェントによる閲覧、カテゴリによる閲覧、価格帯による閲覧、および選択された基準による閲覧を含む各種の閲覧オプションを可能にする。住所による案内は、案内４３６を通じて得ることができる。予約４５２は、予約の検索、予約の設定、およびスケジュールの確認を行う機能を含む。電子メール４４８は、電子メールサーバに接続し、接続を閉じ、電子メールを送信し、電子メールを転送し、電子メールに返信し、電子メールを取り出す諸機能を定義する。コールセンター４６４は、呼への応答と転送を提供する。残りのコンポーネントは、他の情報にアクセスする。ニュース４５６は主要なニュースを入手し、株４６８はチッカーシンボルにより株価を入手し、天気４２８は郵便番号または都市単位で天気を入手し、スポーツ４４４はＮＦＬ、ＮＢＡ、あるいはＮＨＬのスコアをチームごとに、あるいはゴルフのスコアを選手ごとに入手する。
【００４０】
本発明を不明瞭にしないために、図５Ａ〜５Ｆでは、電子メール４４８のみについての具体的な実装の詳細を提供する。コンポーネントドメインでは、機能、パラメータ、および戻り条件の点からコンポーネントを定義する。依存関係、関連付け、通信、同期、およびその他のインフラストラクチャ関連の問題などの関係は、コンポーネントドメインでは考慮しない。図５Ａ〜５Ｆに示すインタフェースは、電子メールコンポーネント５００によって提供される機能と対話するために必要な情報を公開する。
【００４１】
コンポーネントまたは仮想プロセッサの名前５０２は「電子メール」であり、仮想プロセスＩＤ５０３は３００１である。この特定の例では使用しないが、初期化５０４、停止５０５、およびクリーンアップ５０６は、電子メールコンポーネントを初期化する、電子メールコンポーネントを停止する、そして終了時に電子メールコンポーネントをクリーンアップするために呼び出すことのできるルーチンである。第１の機能５１０の名前５１２は「Ｃｏｎｎｅｃｔ」であり、ＩＤ５１３は３００１０５１である。３つのパラメータを入力５１４とすることができ、これには「サーバ名」ストリング、「メッセージ送信元」ストリング、およびオプションの「メッセージ返信先」ストリングが含まれる。出力パラメータ５１５は指定されない。プロセスドメインは、ワークフローと分岐に戻り５１６を使用する。例えば、「成功」の戻り値は処理を継続することを可能にし、それに対して「見つからない」、「失敗」、および「無効な入力」は何らかのタイプのエラー処理を必要とする可能性がある。説明５１７はその機能が実行することを記述し、注記５１８はその機能の使用法についての情報を提供する。
【００４２】
図５Ｂ〜５Ｆに示すように、電子メールコンポーネント５００は、機能５２０、５３０、５４０、５５０、および５６０も実施し、それぞれ（ｉ）名前：Ｃｌｏｓｅ５２２、Ｓｅｎｄ５３２、Ｆｏｒｗａｒｄ５４２、Ｒｅｐｌｙ  ｔｏ５５２、およびＧｅｔ５６２、（ｉｉ）機能ＩＤ：３００１０５２（５２３）、３００１０５３（５３３）、３００１０６１（５４３）、３００１０６２（５５３）、および３００１０２５（５６３）、（ｉｉｉ）入力５２４、５３４、５４４、５５４、および５６４、（ｉｖ）出力５２５、５３５、５４５、５５５、および５６５、（ｖ）戻り５２６、５３６、５４６、５５６、および５６６、（ｖｉ）説明５２７、５３７、５４７、５５７、および５６７、（ｖｉｉ）注記５２８、５３８、５４８、５５８、および５６８、を備える。
【００４３】
図６に示すように、プロセスドメインに関する作業は、コンポーネントのインタフェースを定義すると開始することができる。コンポーネント自体の開発は、このワークフローと、プロセスドメインで行われる個々のコンポーネント間の関係および関連付けを識別する分岐ロジックに沿って進めることができる。図６に、ここで必要とされるビジネスプロセスを実施するためのＵＭＬアクティビティ図を示すが、この他の適切な方法論も使用することができる。図４に示すコンポーネントによって提供される機能を使用して、行われるアクティビティを定義する。図を分かりやすくするために、図６には、プロセスドメインの十分な理解を伝えるのに必要なだけの購入者側のプロセスを示している。コンポーネントドメインと異なり、プロセスドメインは、同期したイベントではなく非同期のイベントを伴う。図６のアクティビティ図の欠点の１つは、データの移動を明示的に示していないことである。しかし、図５Ａ〜５Ｆの例示的な電子メールコンポーネントなど個々のコンポーネントのインタフェース定義を参照することにより、あるコンポーネントから別のコンポーネントへのデータフローを示す。
【００４４】
呼の待機６１６は、テレフォニーコンポーネント４１２（図４）の一機能である。呼を受信すると、メニュー６２４により販売者６１２にオプションのリストを提供する。販売者６１２は、音声／ファックスメール６２８のオプション、電子メール６３２のオプション、あるいは予約６３４のオプションを選ぶことができる。予約の検索６３６を選択すると、最初の予約要求が選択され、音声読み上げ６４４はオーディオバージョンを提供する。（購入者は、ウェブを通じて予約要求を提出している可能性がある。）メニュー６４８は、販売者６１２が利用できる現在のオプションを列挙する。メニュー６２４およびメニュー６４８は、電話コンポーネント４１２の機能であるが、ビジネスプロセス中の異なる時点で異なるオプションを利用できることを示すために別個に符号をつけていることに留意されたい。一実施形態では、メニューコンポーネントはオプションのリストを取り出し、それを販売者６１２に提示して、対応する番号を入力するか、オプションを口で言うことにより特定のオプションを選択できるようにする。電子メールを断る６５２は返信６６４ａを呼び出し、電子メール受諾６５６は返信６６４ｂを呼び出して、要求される時間に販売者が都合がよいか否かを購入者（または他の者）に通知する。どちらの場合も、処理は続いて次の予約要求を求めて予約の検索６３６に進む。確認および終了６６８により、販売者は、受諾した予約要求を検討することによりスケジュールを確認し６７６、メニュー６２４に戻ることができる。テキスト読み上げ６７２は、それぞれの予約のオーディオバージョンを提供する。
【００４５】
先に指摘したように、プロセスドメインは、コンポーネントの完全な分離と独立を可能にする。従来のコンポーネント開発では、あるコンポーネントが別のコンポーネントを呼び出せるようにすると、しばしば、呼び出し元のコンポーネントが、呼び出されるコンポーネントのインタフェース定義を含むことが必要となる。インタフェース定義を含めることは、あるソフトウェアコンポーネントの機能を別のソフトウェアコンポーネントに複製するより好ましいが、その結果、他のコンポーネントのインタフェースを組み込むコンポーネントが、相互との関連付けと関係を有することになる。それらの関連付けおよび／または関係は、あるコンポーネントの変化が他のコンポーネントに伝播するときにメンテナンス上の問題につながる。一方、プロセスドメインで関係および関連付けを定義することにより、あるコンポーネントの変化が他のどのコンポーネントにも影響を与える必要がないようにコンポーネントを互いから分離することができる。
【００４６】
図７に示す環境ドメインは、本発明により動作する例示的ネットワークを示す。環境ドメインは、基本的に、ネットワーク７１０とコンポーネント位置の記述である。異種のプラットフォームの統合と、ネットワークの分散的な性質に注目されたい。例えば、このネットワークは、ＨＰ９０００データベースサーバ７２０、Ｗｉｎｄｏｗｓ（登録商標）ＮＴテレフォニーサーバ７３０、Ｃｉｔｒｉｘ  Ｍｅｔａｆｒａｍｅターミナルサーバ７５０、Ｓｏｌａｒｉｓ  Ｗｅｂサーバ７６０、Ｌｉｎｕｘ電子メールサーバ７８０、およびＷｉｎｄｏｗｓ（登録商標）クライアント７９０ａ、７９０ｂ、７９０ｃ、および７９０ｄを含む。コンポーネントドメインとプロセスドメインはともに、ネットワークにリソースを提供するために使用するこの特定のプラットフォームに依存しないことに留意されたい。
【００４７】
ＨＰ９０００データベースサーバ７２０は、サインアップコンポーネント７２２、一覧コンポーネント７２４、予約コンポーネント７２６、および案内コンポーネント７２８を含む。Ｗｉｎｄｏｗｓ（登録商標）ＮＴテレフォニーサーバ７３０は、公衆交換電話網７４０に接続され、テレフォニーコンポーネント７３２を含む。Ｓｏｌａｒｉｓ  Ｗｅｂサーバ７６０は、インターネット７７０に接続され、ニュースコンポーネント７６２、スポーツコンポーネント７６４、天気コンポーネント７６６、および株コンポーネント７６８を含む。Ｌｉｎｕｘ電子メールサーバ７８０は電子メールコンポーネント７８２を含む。Ｗｉｎｄｏｗｓ（登録商標）クライアント７９０ａ、７９０ｂ、７９０ｃ、および７９０ｄは、コールセンターコンポーネント７９２ａ、７９２ｂ、７９２ｃ、および７９２ｄを含む。
【００４８】
図８に、本発明による処理ノードの一部とすることができる各種のソフトウェアオブジェクトと、それに対応する相互接続を示す。図９は、本発明の一実施形態による例示的なフローチャートであり、下記で図８と併せて説明する。図９には「９」で始まる参照符号を記載し、図８には「８」で始まる参照符号を記載する。処理ノードは必ずしも単一のハードウェアノードに対応するとは限らないことに留意されたい。単一のハードウェアノードは複数の処理ノードを含むことができ、単一の処理ノードを複数のハードウェアノードに分散することができる。したがって、本出願を通じて使用する場合、用語「処理ノード」あるいは単に「ノード」は、実質的にどのハードウェア構成も包含するものと広く解釈されたい。
【００４９】
ノード８１０は、コントローラオブジェクト８１２、データベースオブジェクト８１４、追跡オブジェクト８１６、およびコンポーネントオブジェクト８１７と８１８を含む。ノード８２０は、コントローラオブジェクト８２２、データベースオブジェクト８２４、追跡オブジェクト８２６、およびコンポーネントオブジェクト８２７を含む。ノード８３０は、コントローラオブジェクト８３２、データベースオブジェクト８３４、追跡オブジェクト８３６、およびコンポーネントオブジェクト８３７および８３８を含む。ノード８４０は、コントローラオブジェクト８４２、追跡オブジェクト８４６、およびコンポーネントオブジェクト８４７、８４８、および８４９を含む。各ノードの各種コンポーネントオブジェクトは、分散処理と負荷分散のために同じソフトウェアコンポーネントの別個のインスタンスであっても、あるいは完全に異なるソフトウェアコンポーネントであってもよい。
【００５０】
図９のコントローラ９２０などのコントローラオブジェクトは、ワークフローと分岐条件を定義する、プラットフォームに依存しないロジックを処理する。プラットフォームに依存しないロジックの処理の一部として、コントローラ９２０は、ＸＰｋｔＦｕｎｃｔｉｏｎ９２２を受け取る。ＸＰｋｔＦｕｎｃｔｉｏｎ９２２は、特定の機能を要求するメッセージであり、パラメータと、要求される機能に関連する他のデータを含む。ＸＰｋｔＦｕｎｃｔｉｏｎ９２２は、初期手順機能９１２、リモートノード９１４、アカウント９１６、およびスケジューラ９１８を含む、いくつかのソース９１０のいずれかから発生することができる。アカウント９１６は、初期手順機能と対応するデータの集合である。アカウントを実行すると、その初期手順機能がすべて実行される。起動時、あるいはあるオブジェクトでブロッキング機能が終了する際、あるいは明示的な呼出しに応答して、アカウントを実行してオブジェクトを初期化する。
【００５１】
判定ブロック９２４で、コントローラ９２０は、要求される機能を提供するために利用できるローカルコンポーネントがあるかチェックする。「ローカル」および「リモート」などの修飾語の使用は、完全に視点に依存する。ローカルコンポーネントとは、特定のコントローラが実行されているノードに存在するコンポーネントであり、すべての他のコンポーネントはリモートになる。同様に、あるローカルコンポーネントはすべての他のノードにとってリモートである。したがって、「ローカル」および「リモート」の使用は、単に、複数のノードが存在することを示唆するに過ぎず、必ずしも近接性を意味するものと解釈すべきでない。
【００５２】
利用可能なローカルコンポーネントがない場合は、エージェント９４０に接触する。エージェント９４０は、コンポーネントと、いくつかのノードそれぞれで利用可能な対応する機能を追跡する。判定ブロック９４２で、エージェント９４０は、要求される機能を提供するために利用できるリモートコンポーネントを探す。リモートノードが見つかった場合は、そのリモートノードに要求を送信する９４６。そうでない場合は、適切なコンポーネントが利用できる後の時間に処理するために要求をスケジュールする９４４。
【００５３】
判定ブロック９２４に戻り、あるローカルコンポーネントが利用できる場合、コントローラ９２０は、適宜、確保し９２６、ブロッキングを設定し９２８、特定のノードにおけるコンポーネントの可用性を追跡する役割を担うエージェントを更新する９３２。コンポーネント９５０は、機能を実行し９５２、エージェントを更新し９５４、他のＸＰｋｔＦｕｎｃｔｉｏｎがそのコンポーネントにスケジュールされているかどうかを判定する９５６。スケジュールされていない場合、コンポーネントの処理は終了する９６２。そうでない場合は、次のＸＰｋｔＦｕｎｃｔｉｏｎを識別し９６４、処理はコントローラ９２０に進行して別のＸＰｋｔＦｕｎｃｔｉｏｎを受け取る９２２。
【００５４】
本発明では必ずしも、２つ以上の要求に対して同じコンポーネントを識別するとは限らないことを指摘したい。それに対して、従来のインフラストラクチャが特定のコンポーネントを識別すると、それ以降の要求が同じコンポーネントに導かれるように、機能の要求者とそのコンポーネントとの間に接続を確立することができる。最初のコンポーネントを識別すると利用可能なリソースの評価はそれ以上行われないので、この種の接続は、いくつかの利用可能なリソースに要求を負荷分散する労力を回避することができる。本発明は、最初に識別されたソフトウェアコンポーネント以外のソフトウェアコンポーネントが、以降の要求を満たすことを可能にする。
【００５５】
ここで再度図８を参照すると、コントローラ８１２、コントローラ８２２、コントローラ８３２、およびコントローラ８４２がすべて相互に接続されていることに留意されたい。図８の実施形態では、どのコントローラも他のコントローラに直接到達することができるが、あるコントローラが中間コントローラを通じて間接的に別のコントローラに到達することも可能である。追跡オブジェクト８１６、８２６、８３６、および８４６は、各自のノードにあるコンポーネントの動作を監視するために使用する。追跡オブジェクトは、検討、実行時の監視、追跡トランザクション、および問題解決のために、イベント、データ、およびデータの移動を捕捉することができる。
【００５６】
図８の各ノードは、ノード８４０を除いてデータベースオブジェクトを含むことに留意されたい。データベースオブジェクトは、各ノードに、プラットフォームに依存しないデータアクセスを提供する。（これは、基礎となる記憶機構が必ずしもプラットフォームに依存しないことを意味するのではなく、データへのアクセスがプラットフォームに依存しないことを意味する。多くの状況では、プラットフォーム固有のデータフォーマットを備える商業的なデータベースベンダを使用することが望ましい場合がある。）プロセスドメインで定義されるプラットフォームに依存しないロジックおよび他のデータへのアクセスは、通例はデータベースオブジェクトを通じて行われる。ただし、特定の状況では、ノード８４０などのノードが各種の理由によりデータベースオブジェクトを含まない場合がある。ノードまたはノードハードウェア自体にアクセスするためのネットワークは、特定データベースへのアクセスをサポートしない可能性がある。あるいは、設計上の考慮事項により、ノードがデータベースオブジェクトを含むことが望ましくない場合もある。動機に関係なく、特定のノードがデータベースオブジェクトをサポートしない、または含まない場合は、別のノードを使用してそのノードにデータアクセスを提供することができる。例えば、データベースオブジェクトを備えるあるノードを使用して、データベースオブジェクトを持たない別のノードを初期化することができる。本出願で使用する場合、別のノードを初期化するとは、そのノードの動作に関連する可能性のあるデータをそのノードに供給することを包含するものと広く解釈されたい。
【００５７】
図１０Ａ〜１０Ｂに、本発明による１つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す。少なくとも１つのノードを含む環境を提供するステップ（１０１０）は、次の動作を含むことができる。１つまたは複数のソフトウェアコンポーネントを作成する動作（１０１２）、コントローラオブジェクトを作成する動作（１０１４）、データベースオブジェクトを作成する動作（１０１６）、追跡オブジェクトを作成する動作（１０１８）、エージェントオブジェクトを作成する動作（１０２２）、プラットフォームに依存しないプロセスロジック、状態情報、あるいはその他のプラットフォームに依存しないデータを求めてデータベースオブジェクトにアクセスする動作（１０２４）、および１つまたは複数のソフトウェアコンポーネントの動作を記録する動作（１０２６）。特定のノードがデータベースオブジェクトを含まない場合、本発明は、あるノードが別のノードを初期化する動作（１０３０）を含むことができる。
【００５８】
あるソフトウェアコンポーネントによって提供される特定の機能に対する要求を生成するステップ（１０４０）は次の動作を含むことができる。ソフトウェアコンポーネント間の関係を定義する、プラットフォームに依存しないロジックを設計する動作（１０４２）、プラットフォームに依存しないロジックを実行する動作（１０４４）、特定の機能に対する要求を作成する動作（１０４６）、および特定の機能を要求する動作（１０４８）。
【００５９】
ソフトウェアコンポーネントを動的に見つけるステップ（１０５０）は次の動作を含むことができる。ある要求の特定の機能を満たすことができるソフトウェアコンポーネントを識別する動作（１０５２）、特定の機能に対する複数の要求を、利用可能なソフトウェアコンポーネントに負荷分散する動作（１０５４）、およびあるソフトウェアコンポーネントが利用可能になるまで、特定の機能に対する要求をスケジュールする動作（１０５６）。複数のノードが利用できる場合、本発明は、他のノードと通信する動作（１０６０）も含むことができる。
【００６０】
ソフトウェアコンポーネントを実行するステップ（１０７０）は次の動作を含むことができる。ソフトウェアコンポーネントの機能を要求する前にそのソフトウェアコンポーネントを確保する動作（１０７２）、ソフトウェアコンポーネントを呼び出す動作（１０７４）、ソフトウェアコンポーネントを実行する動作（１０７６）、および、ソフトウェアコンポーネントから結果またはステータスを戻す動作（１０７８）。当業者は、本発明は必ずしも前述のステップ及び動作のどの特定の順序にも依存せず、さらに、一部のステップおよび／または動作を省略するか、他のステップおよび／または動作に置き換えてもよく、なお本発明の範囲内に該当することを認識されよう。
【００６１】
本発明は、その精神または基本的な特性から逸脱することなく、他の特定の形態に実施することができる。ここに記載する実施形態は、あらゆる点で例証的なものに過ぎず、限定的なものではないとみなすべきである。したがって、本発明の範囲は、前述の説明ではなく特許請求の範囲によって示す。特許請求の範囲と等価な意味および範囲に該当する変更はすべて特許請求の範囲に包含される。
【図面の簡単な説明】
【００６２】
【図１】本発明に適した動作環境を提供する例示的システムの図である。
【図２】本発明を説明する際に考慮することができる各種ドメインの図である。
【図３】例示的なビジネス上の問題を解決する際に必要とされる可能性がある可能なコンポーネントを識別するための単純な統一モデリング言語による使用事例の図である。
【図４】例示的なビジネスプロセスのために実施することができるコンポーネントとそれに対応する機能の図である。
【図５Ａ】図４に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図５Ｂ】図４に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図５Ｃ】図４に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図５Ｄ】図４に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図５Ｅ】図４に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図５Ｆ】図４に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図６】例示的な事業問題に対応するビジネスプロセスの統一モデリング言語によるアクティビティ図の一部である。
【図７】本発明による処理環境のネットワークおよびコンポーネント位置の図である。
【図８】本発明によるノードおよび対応する相互接続の一部とすることができる各種のソフトウェアオブジェクトの図である。
【図９】本発明の一実施形態による例示的なフローチャートである。
【図１０Ａ】本発明による１つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す図である。
【図１０Ｂ】本発明による１つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す図である。
【図１】
2005501307.tif 000003
【図２】
2005501307.tif 000004
【図３】
2005501307.tif 000005
【図４】
2005501307.tif 000006
【図５Ａ】
2005501307.tif 000007
【図５Ｂ】
2005501307.tif 000008
【図５Ｃ】
2005501307.tif 000009
【図５Ｄ】
2005501307.tif 000010
【図５Ｅ】
2005501307.tif 000011
【図５Ｆ】
2005501307.tif 000012
【図６】
2005501307.tif 000013
【図７】
2005501307.tif 000014
【図８】
2005501307.tif 000015
【図９】
2005501307.tif 000016
【図１０Ａ】
2005501307.tif 000017
【図１０Ｂ】
2005501307.tif 000018
【国際公開パンフレット】
2005501307.tif 000019
2005501307.tif 000020
2005501307.tif 000021
2005501307.tif 000022
2005501307.tif 000023
2005501307.tif 000024
2005501307.tif 000025
2005501307.tif 000026
2005501307.tif 000027
2005501307.tif 000028
2005501307.tif 000029
2005501307.tif 000030
2005501307.tif 000031
2005501307.tif 000032
2005501307.tif 000033
2005501307.tif 000034
2005501307.tif 000035
2005501307.tif 000036
2005501307.tif 000037
2005501307.tif 000038
2005501307.tif 000039
2005501307.tif 000040
2005501307.tif 000041
2005501307.tif 000042
2005501307.tif 000043
2005501307.tif 000044
2005501307.tif 000045
2005501307.tif 000046
2005501307.tif 000047
2005501307.tif 000048
2005501307.tif 000049
2005501307.tif 000050
2005501307.tif 000051
2005501307.tif 000052
2005501307.tif 000053
2005501307.tif 000054
2005501307.tif 000055
2005501307.tif 000056
2005501307.tif 000057
2005501307.tif 000058
2005501307.tif 000059
【国際公開パンフレット（コレクトバージョン）】
2005501307.tif 000060
2005501307.tif 000061
【国際調査報告】
2005501307.tif 000062