JP2005501307A - 仮想プロセッサとしてのソフトウェアコンポーネント - Google Patents
仮想プロセッサとしてのソフトウェアコンポーネント Download PDFInfo
- Publication number
- JP2005501307A JP2005501307A JP2002558104A JP2002558104A JP2005501307A JP 2005501307 A JP2005501307 A JP 2005501307A JP 2002558104 A JP2002558104 A JP 2002558104A JP 2002558104 A JP2002558104 A JP 2002558104A JP 2005501307 A JP2005501307 A JP 2005501307A
- Authority
- JP
- Japan
- Prior art keywords
- software component
- objects
- node
- software
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
複数の処理ノード(810)を含むことが可能な環境内でソフトウェアコンポーネント(817、818)に動的にアクセスする方法、システム、およびコンピュータプログラム製品。各ノード(810)は、1つまたは複数のソフトウェアコンポーネントオブジェクト(817、8181)(仮想プロセッサ)、コントローラオブジェクト(812)、データベースオブジェクト(814)、追跡オブジェクト(816)、およびエージェントオブジェクトなどの1つまたは複数のソフトウェアオブジェクトを含む。特定のソフトウェアコンポーネント(817、818)によって実施される機能に対する要求は、利用可能なインスタンスに負荷分散される。利用できるソフトウェアコンポーネントがない場合は、スケジューラに要求を提出することができる。ソフトウェアコンポーネント(817、818)は、将来の処理のために確保しておくことができる。ソフトウェアコンポーネント(817、818)間の関係は、データベースオブジェクト(814)を通じてアクセスでき、コントローラオブジェクト(812)によって処理される、プラットフォームに依存しないロジックによって定義する。エージェントオブジェクトは、そのエージェントが担当する1つまたは複数のノード(810)で利用可能なソフトウェアコンポーネント(817、818)を追跡する。
Description
【技術分野】
【0001】
本発明は、ソフトウェアコンポーネントに関し、より詳細には、1つまたは複数のソフトウェアオブジェクトを潜在的に含む複数の処理ノードを含むことができる環境においてソフトウェアコンポーネントに動的にアクセスする方法、システム、およびコンピュータプログラム製品に関する。
【背景技術】
【0002】
競争力を維持するために、事業者は常に新しい製品とサービスを提供しており、その結果事業経営に変化が生じ、対処すべき問題がほぼ無限に次々と生じている。時間の経過とともに、多くの事業は発展して常に変化し、動的なカスタマイズされたビジネスプロセスの集合体となる可能性がある。変化する要求によりほとんどの事業の経営が複雑化する一方、発展する技術によりさらに大きな問題が生じる可能性がある。例えば、技術が、約束するものを供給することができないかもしれず、あるいはその変化が速すぎて、事業の問題点の解決を当初の予想より難しくする可能性がある。さらに、所与の組織にとって、いずれか所定の技術に特有の利点は、新たに登場する製品およびサービスとの関係で評価するのが難しい可能性がある。したがって、各自の経営を支援するために事業者が技術を使用する場合には、変化するビジネス要件を満たすようにその技術をかなり頻繁に修正し、強化する必要がある可能性がある。その結果、技術によって事業問題を解決するには、一般に、ソフトウェア、ハードウェア、エンジニアリング、およびハイプの複雑な混合が必要とされる。事業者によっては、単に、ほぼ無限にある利用可能な技術から常に選択を行う作業で手一杯になってしまう。したがって、システム全体に対する不利益な影響を最小に抑えながら追加的な修正を可能にする技術に基づいた柔軟な解決策により、今日のビジネス環境において競争上の優位を得ることができる。
【0003】
COM、DCOM、OLE、CORBA、RPCなどのコンポーネント技術は、ビジネスプロセスを実現するための柔軟な技術を提供する試みの1つである。コンポーネント技術を使用すると、複数の製品に開発労力を再利用することにより、比較的短い時間で様々なソフトウェア製品を実装することができる。ソフトウェアコンポーネントは、インタフェースを通じてそれらのコンポーネントが提供するサービスへのアクセスを提供する独立した機能を提供することにより、再利用を容易にする。明確に定義されたインタフェースは、より大規模のシステムを作成する場合にコンポーネントをつなぎ合わせる際に個々のコンポーネントがどのように互いと調和するかを定義するので、コンポーネントの重要な特性である。理想的には、修正を行わずに複数の目的のために個々のコンポーネントを適合できるとよい。しかし、競合するコンポーネント技術によって提供される基本的な用語体系、設計の構成、およびインタフェースには著しく混乱し、および相違する。
【発明の開示】
【発明が解決しようとする課題】
【0004】
コンポーネント間の関係には、複雑な通信と同期コードが必要である。しかし、コンポーネントはそのコンポーネントの機能だけを公開すべきであり、他のコンポーネントの存在から独立している方がよい。独立させることによりコンポーネントが相互から隔離され、あるコンポーネントの変化がすべてのコンポーネントに伝播しない。したがって、再利用性を可能な限り高めるために、コンポーネントは、そのコンポーネントを他のコンポーネントに依存させる属性を除くべきである。コンポーネント間の依存関係や関連付けなどの関係は、インフラストラクチャの一部となるべきである。
【0005】
急速に変化するビジネス環境によって課される要求を満たすために、コンポーネント技術と規格は常に改良されており、コンポーネントの開発と使用のためのモデル、方法、およびプロセスが各種の規格団体および共同体によって継続的に定義され、承認されている。それぞれのコンポーネント技術、仕様、あるいは製品は、一般に、ある企業の特定のニーズに関していくらかの利益をもたらすが、その特定の技術を使用するには費用がかかり維持費の高い多量のインフラストラクチャコードを書かなければならないことが多い。
【0006】
コンポーネント技術の進歩は能力と機能において利益となるが、ビジネス要件とコンポーネント技術とは基本的に結び対が強いことから、基礎となるコンポーネントインフラストラクチャの変更が必要となる場合がある。さらに、各技術が備える最良の特性を使用しようとして技術を組み合わせる開発者は、別個の互換性のないインフラストラクチャサービスが相互に通信するための機構を作成しなければならない可能性がある。共通のインフラストラクチャがないと、インタフェースだけでは広く再利用できるコンポーネントを生み出せる見込みは低い。さらに、分散環境中に配置されたコンポーネントは、各種タイプの分散した障害、場所、およびフォーマットを管理する役割を担う。分散したインフラストラクチャが存在しないと、開発サイクルが長くなる可能性がある。
【0007】
本発明は、複数の処理ノードを含むことができる環境においてソフトウェアコンポーネントに動的にアクセスするためのインフラストラクチャを提供することにより上述の問題に対処する。
【課題を解決するための手段】
【0008】
各ノードは、1つまたは複数のソフトウェアコンポーネントオブジェクト、コントローラオブジェクト、データベースオブジェクト、追跡オブジェクト、エージェントオブジェクトなどの1つまたは複数のソフトウェアオブジェクトを含む。各ソフトウェアコンポーネントは、特定の目標またはタスクを実行するために使用できる機能を実施する。ソフトウェアコンポーネントは、それが実施する機能を実行する仮想プロセッサと考えることができる。特定の機能に対して高い需要が存在する場合は、あるソフトウェアコンポーネントの複数のインスタンスを作成することができ、利用可能なインスタンスに要求を負荷分散する。
【0009】
ソフトウェアコンポーネント間の関係は、プラットフォームに独立のロジックによって定義される。コントローラオブジェクトは、別のノードのデータベースオブジェクトまたはコントローラオブジェクトからロジックを受け取り、そのロジックを実行してプロセスフローと分岐を判定する。あるノードのソフトウェアオブジェクトの機能に対する要求は、初期化手順の一部として、実行されるロジック、リモートノード、スケジューラなどを含むいくつかのソースから生じる場合がある。機能に対する要求を受け取ると、コントローラは、その要求を満たすためにローカルのソフトウェアコンポーネントを利用できるかどうか、または別のノードに接触すべきかどうかを判定する。
【0010】
エージェントオブジェクトは、そのエージェントが担当する1つまたは複数のノードで利用可能なソフトウェアコンポーネントを追跡する。エージェントは、様々な精密度でソフトウェアコンポーネントの状態またはステータスも追跡する。例えば、機能に対する要求を受け取った場合、エージェントは、(i)所定のソフトウェアコンポーネントがどこに位置するか、および(ii)その所定のソフトウェアコンポーネントが他の要求の処理で使用中であるかどうか、を知っていると、より好適なルーティングの決定を行うことができる。利用可能なソフトウェアコンポーネントがない場合は要求をスケジューラに渡し、そうでない場合は、その要求を満たすかあるいは処理することができるソフトウェアコンポーネントを有するリモートノードに要求を送信する。
【0011】
ローカルの要求に対しては適切なソフトウェアコンポーネントが識別され、コントローラは、識別されたソフトウェアコンポーネントを適宜確保し、ブロッキングを設定する。コントローラは、そのノードのエージェントによって追跡される、識別されたコントローラのステータス情報を更新する。この時点で、コントローラは、要求をもって処理のためにそのコンポーネントを呼び出す。コンポーネントは、要求される機能を実施する対応機能を実行することによって要求を処理し、ステータス情報を更新できるようにエージェントに通知する。他の要求は同様の方式で処理される。
【0012】
プラットフォームに独立のロジックによって処理するのが最良である相互依存を最少にするために、個々のソフトウェアコンポーネントは、互いから完全に独立させ、互いを認識しないようにすることができる。負荷分散を強化するために、単一のソースによる同一機能に対する複数の要求は、異なるソフトウェアコンポーネントによって処理することができる。以前の要求と無関係に機能要求を処理することが原因でいくらかのオーバーヘッドが生じる可能性があるが、負荷分散の利益はそれを上回る可能性がある。さらに、状況により要求される場合には、将来の使用のためにソフトウェアコンポーネントを確保しておくことができる。
【0013】
本発明のこの他の特徴および利点は以下の説明で述べ、また一部はその説明から明らかになるか、あるいは本発明の実施から理解することができよう。本発明の特徴および利点は、特許請求の範囲で詳細に指摘する手段および組合せによって実現し、得ることができる。本発明の上記およびその他の特徴は、以下の説明および特許請求の範囲からより完全に明らかになり、あるいは以下に述べる本発明の実施によって理解することができる。
【0014】
本発明の上述およびその他の利点および特徴を得ることができる方式を説明するために、上記で簡単に述べた本発明のより詳細な説明を、添付図面に図示するその具体的な実施形態を参照して提供する。これらの図面は、本発明の典型的な実施形態だけを表すものであり、したがって本発明の範囲を限定するものと解されないことを理解した上で、本発明について添付図面を使用してさらに具体的かつ詳細に述べ、説明する。
【発明を実施するための最良の形態】
【0015】
本発明は、複数の処理ノードを含むことができる環境内でソフトウェアコンポーネントに動的にアクセスするための方法、システム、およびコンピュータプログラム製品に適用され、個々の処理ノードは、1つまたは複数のソフトウェアコンポーネントオブジェクト、コントローラオブジェクト、データベースオブジェクト、追跡オブジェクト、エージェントオブジェクトなど、1つまたは複数のソフトウェアオブジェクトを含む。ソフトウェアコンポーネントは、特定の目標またはタスクを遂行するために使用できる機能を提供することから、それが実施する機能を行う仮想プロセッサと呼ばれる場合がある。しばしば要求される機能については、負荷分散を可能にするために、あるソフトウェアコンポーネントの複数のインスタンスを作成することができる。
【0016】
ソフトウェアコンポーネント間の関係は、コントローラオブジェクトによって実行される、プラットフォームに依存しないロジックによって定義される。あるローカルノードのソフトウェアコンポーネントが特定の要求を満たすことができない場合は、エージェントオブジェクトに接触して、処理のためにその要求をリモートノードに送信すべきかどうかを判定することができる。利用可能なソフトウェアコンポーネントがない場合は、後に実行するために要求をスケジュールすることができる。依存関係を最少にしてプラットフォームに依存しないロジックによって処理するために、個々のソフトウェアコンポーネントは互いから完全に独立させ、互いを認識しないようにすることができる。単一のソースによる同一機能に対する複数の要求は、負荷分散を高めるために異なるソフトウェアコンポーネントによって処理することができる。必要な場合には、後に行う処理のためにソフトウェアコンポーネントを確保しておくことができる。本発明の実施形態は、下記でより詳細に述べるように各種のコンピュータハードウェアを含む専用または汎用のコンピュータを含むことができる。
【0017】
本発明の範囲内にある実施形態は、コンピュータ実行可能命令またはデータ構造を搬送するか、またはそれらが格納されたコンピュータ読取可能な媒体も含む。そのようなコンピュータ読取可能な媒体は、汎用または専用コンピュータによってアクセスできる任意の利用可能な媒体でよい。これらに限定しないが、例として、そのようなコンピュータ読取可能な媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態で搬送または格納するのに使用することができ、汎用または専用コンピュータによるアクセスが可能な任意の他の媒体からなることができる。ネットワークまたは別の通信接続(配線式、無線式、あるいは配線式と無線式の組合せ)を通じてコンピュータに情報を転送または提供する場合、コンピュータはその接続を正確にコンピュータ読取可能な媒体とみなす。したがって、そのような接続はいずれも厳密にコンピュータ読取可能な媒体と称する。上記の媒体の組合せもコンピュータ読取可能な媒体の範囲に含めるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に特定の機能または機能の群を行わせる命令とデータを含む。
【0018】
図1および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単で概略的な説明を提供する。必須ではないが、本発明は、ネットワーク環境内のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明する。一般に、プログラムモジュールは、特定タスクを行うか、特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、ここに開示する方法のステップを実行するプログラムコード手段の例に相当する。そのような実行可能命令や関連するデータ構造の特定のシーケンスは、それらのステップに記載する機能を実施するための対応する動作の例に相当する。
【0019】
当業者は、本発明は、パーソナルコンピュータ、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む多種のコンピュータシステム構成を備えるネットワークコンピューティング環境で実施できることを認識されよう。本発明は、通信ネットワークを通じて(配線リンク、無線リンク、または配線リンクと無線リンクの組合せにより)リンクされたローカルおよびリモートの処理装置によってタスクを行う分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールはローカルおよびリモート両方のメモリ記憶装置に配置することができる。
【0020】
図1を参照すると、本発明を実施する例示的システムは、従来のコンピュータ20の形態の汎用コンピューティングデバイスを含み、コンピュータ20は、処理装置21、システムメモリ22、およびシステムメモリ22を含む各種のシステムコンポーネントを処理装置21に結合するシステムバス23を含む。システムバス23は、各種のバスアーキテクチャのうち任意のものを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数種のバス構造のいずれでもよい。システムメモリは、読み取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などにコンピュータ20内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム(BIOS)26は、ROM24に格納することができる。
【0021】
コンピュータ20は、磁気ハードディスク39の読み書きを行う磁気ハードディスクドライブ27、取り外し可能の磁気ディスク29の読み書きを行う磁気ディスクドライブ28、およびCD−ROMやその他の光媒体などの取り外し可能光ディスク31の読み書きを行う光ディスクドライブ30も含むことができる。磁気ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれ、ハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33、および光ドライブインタフェース34によってシステムバス23に接続される。これらのドライブとそれに関連付けられたコンピュータ読取可能な媒体は、コンピュータ20のコンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性の記憶を提供する。ここに記載する例示的環境では、磁気ハードディスク39、取り外し可能磁気ディスク29、および取り外し可能光ディスク31を用いているが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROMなどを含む、データを格納する他タイプのコンピュータ読取可能な媒体を使用することができる。
【0022】
オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含む、1つまたは複数のプログラムモジュールからなるプログラムコード手段は、ハードディスク39、磁気ディスク29、光ディスク31、ROM24、またはRAM25に格納することができる。ユーザは、キーボード40、ポインティングデバイス42、あるいはマイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなど他の入力装置(図示せず)を通じてコンピュータ20にコマンドと情報を入力することができる。これらおよびその他の入力装置は、システムバス23に結合されたシリアルポートインタフェース46を通じて処理装置21に接続することが多い。あるいは、これらの入力装置は、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)などの他のインタフェースによって接続してもよい。モニタ47または別の表示装置も、ビデオアダプタ48などのインタフェースを介してシステムバス23に接続される。パーソナルコンピュータは通例、モニタに加えてスピーカやプリンタなど他の周辺出力装置(図示せず)を含む。
【0023】
コンピュータ20は、リモートコンピュータ49aおよび49bなど1つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ49aおよび49bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいはその他の一般的なネットワークノードでよく、図1にはメモリ記憶装置50aおよび50bとそれらに関連付けられたアプリケーションプログラム36aおよび36bしか示していないが、通例はコンピュータ20との関連で上述した要素の多くまたはすべてを含む。図1に示す論理接続には、ここに例として提示し、限定ではない、ローカルエリアネットワーク(LAN)51およびワイドエリアネットワーク(WAN)52が含まれる。このようなネットワーキング環境は、オフィス内または企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【0024】
LANネットワーキング環境で使用する場合、コンピュータ20は、ネットワークインタフェースまたはアダプタ53を通じてローカルネットワーク51に接続する。WANネットワーキング環境で使用する場合、コンピュータ20は、インターネットなどのワイドエリアネットワーク52を通じて通信を確立するためのモデム54、無線リンク、あるいはその他の手段を含むことができる。モデム54は内蔵型でも外付け型でもよく、シリアルポートインタフェース46を介してシステムバス23に接続する。ネットワーク環境では、コンピュータ20との関連で図に示すプログラムモジュール、またはその一部は、遠隔のメモリ記憶装置に格納することができる。図に示すネットワーク環境は例示的なものであり、ワイドエリアネットワーク52を通じて通信を確立する他の手段を使用できることは理解されよう。
【0025】
図2に、本発明を説明する際に考慮することのできる各種のドメインを示す。コンポーネントドメイン210は、抽象化を通じて複雑なシステムを単純なものにすることができる。個々のコンポーネントは、提供される機能、必要に可能性のあるパラメータまたはデータ、および戻り条件の点から定義される。コンポーネントは、共通オブジェクト要求ブローカアーキテクチャ(「CORBA」)、コンポーネントオブジェクトモデル/分散コンポーネントオブジェクトモデル(「COM/DCOM」)、エンタープライズJava(登録商標)Beans(「EJB」)などの標準的な技術と併せて各種のオブジェクト指向の手法を使用して開発することができる。各コンポーネントは、他のコンポーネントを考慮せずに単独で開発する。個々のコンポーネントは、オブジェクト指向クラスを介してすべてのコンポーネントに共通の機能を継承することができる。要件の収集、分析、および設計と密接に結びつく開始から仕上げまでの諸段階は、コンポーネントドメインに直接マッピングする。コンポーネントドメインはほぼ同期しており、1度に1つずつ行われるタスクの根拠となる。各コンポーネントは、それ自体の単一のインスタンスだけを知っており、所与の時間に1つのコンポーネントインスタンスにつき1つのメソッドがアクティブになっている。
【0026】
コンポーネント間の関係はプロセスドメイン220で扱われるインフラストラクチャで考慮される事項なので、分散ネットワークでは、任意のプラットフォームのコンポーネントを異種間で混合することができる。コンポーネントドメインと異なり、プロセスドメイン220は、プロセスを定義する非同期コンテクストである。プロセスを定義するために、要求されるワークフローおよび分岐条件に基づいて論理的順序で機能をグループ化する。プロセスドメイン220は、実行コンポーネントの位置(環境ドメイン230)や特定の実装問題(コンポーネントドメイン210)を扱わない。実装と動作環境を分離することにより、プロセスドメイン220は、ビジネスプロセスをターゲット技術から分離することを可能にする。この結果、基礎となる実装を修正する際でも、プロセスドメイン220で開発される解決法が引き続き有効になる。プロセスドメイン220は、標準的な統一モデリング言語(「UML」)によるアクティビティ図、ツリー階層、およびBuilder Linearを含む各種のフォーマットでとらえることができる。
【0027】
環境ドメイン230は、ネットワーク情報と、各コンポーネントの具体的な位置を含む。機能(コンポーネントドメイン210)およびプロセス知識(プロセスドメイン220)は、このドメインでは必要とされない。環境は、エンタープライズネットワーク中のノードにあるコンポーネントの集合的な配置である。各ノードは、ネットワークに対するリソースまたはサービスとしてメモリに常駐するコンポーネントを識別する。これらの実行時構成を使用して、実行プロセスによって定義されるタスクまたは目標を達成する。ネットワーク構成全体に基づいた計算を通じて動的なスケーリングを達成することができる。例えば、ノードまたはハードウェアデバイスをネットワークに追加する際には構成に修正を行い、その新しいリソースを利用できる状態にする。これに対して、従来の環境におけるスケーリングでは、通常は新しいリソースに対応するようにコードを書き直す必要がある。
【0028】
実行ドメイン240は、プロセスドメインの指示に従ってある手順から次の手順へと実行を導き、要求される機能を実行するためにローカルノードおよびリモートノードのコンポーネントを見つける。実行ドメイン240は、ネットワーク中で発生するあらゆるイベントを記録することも可能にする。データおよびネットワーク中のデータの移動は、後に検討するために保存しておくことができる。イベント情報を記録し、フォーマットするいくつかのビューを通じて、柔軟性のある管理オプションのために実行時監視が提供される。イベント情報を保存することにより履歴の監視が可能になり、多くの種類の問題を解決するためにあるシステムの正確な複製をシミュレートすることができる。記録されたイベントおよびデータは、各種の報告要件を満たすためにも使用することができる。
【0029】
図3〜7は、実際のビジネス状況で本発明を使用する例に関連する。各ドメインを使用して、あるアプリケーションを要件から実行まで説明する。汎用的な開発プロセスにより、最も組織化された開発方法論に本発明をマッピングできる仕組みを例証する。詳細には、この例では、きわめて競争の激しい市場にあり、自動化された情報センターへの電話およびWebによるアクセスを提供することにより購入者と販売者へのアクセスを拡大しようとしている不動産会社を考察する。可能な限り大きな市場をつかむためには、可能な限り人間に似た対話を含め、サービスは使用が容易なものでなければならない。さらに、潜在的な購入者のサービスの閲覧を促進するために、ニュース、スポーツ、天気、および株価などの無料コンテンツサービスを提供する。この会社は、HP9000、Solarisウェブサーバ、およびLinux電子メールサーバを含むハードウェアへの過去の投資を維持することを希望している。図3に示すように、次の要件が集められる。
【0030】
販売者312は、自社の不動産物件をリストに載せるためにサインアップ322することが出来なくてはならない。
【0031】
販売者312には、音声メール326、ファックスメール334、および電子メール338を送受信することが可能な個々の電子通信ボックスを提供しなくてはならない。
【0032】
販売者312は、要求される展示会の予約のステータスを確認する342ことができなくてはならない。
【0033】
購入者314は、フィルタオプションを選択することにより、または各物件に表示されるID番号により、一覧を閲覧362することができなくてはならない。
【0034】
購入者314は、住宅を見学するために予約366を設定することができなくてはならない。
【0035】
購入者314は、購入者が要求した場合にはただちに代理人316に転送374しなくてはならない。
【0036】
購入者314は、音声またはファックスを介して物件までの案内378を得ることができる。
【0037】
購入者314は、任意選択で、天気予報、ニュース、スポーツ、株、および地域の映画上映時間などの特定の内容を聞くことができる。
【0038】
購入者は、音声またはファックスにより住宅に関する情報を受け取ることができなくてはならない。電話の代替として、ウェブページを介した同等の機能を提供すべきである。各使用事例に基づいてコンポーネントを定義する際には、「要求される動作を行うのは何か」と「一度に1つずつ行えるのは何か」を検討すると、個々のコンポーネントの境界を明確にする助けとなる。例えば、使用事例の多くでは電話線を通じた接続性が必要とされる可能性がある。したがって、1つの線における呼を待機し、呼に応答し、呼を切り、記録し、再生し、ファックスを送信するなどの、テレフォニーと呼ばれるコンポーネントを備えることがふさわしい。ここでも、コンポーネントドメインで、あるコンポーネントが同期して行えることを考えることが通例は最も有用である。ポストオフィスバージョン3(「POP3」)サーバまたはシンプルメール転送プロトコル(「STMP」)サーバに接続し、電子メールを送信し、電子メールを受け取り、電子メールを転送し、電子メールに返信する、単純な電子メールコンポーネントを定義することができる。
【0039】
反復的に分析を行うと、図4に示すコンポーネントおよびそれに対応する機能を定義する。テレフォニー412は、呼の待機、呼の終了、テキストの読み上げ、コマンドの認識、録音、再生、削除、転送、ファックス受信、ファックス送信、メニューオプションの一覧表示を行う諸機能を含む。サインアップ416は、ウェルカム、一覧表示のオプション、販売者を追加する機能、および情報収集を提供する。一覧424は、IDによる閲覧、場所による閲覧、エージェントによる閲覧、カテゴリによる閲覧、価格帯による閲覧、および選択された基準による閲覧を含む各種の閲覧オプションを可能にする。住所による案内は、案内436を通じて得ることができる。予約452は、予約の検索、予約の設定、およびスケジュールの確認を行う機能を含む。電子メール448は、電子メールサーバに接続し、接続を閉じ、電子メールを送信し、電子メールを転送し、電子メールに返信し、電子メールを取り出す諸機能を定義する。コールセンター464は、呼への応答と転送を提供する。残りのコンポーネントは、他の情報にアクセスする。ニュース456は主要なニュースを入手し、株468はチッカーシンボルにより株価を入手し、天気428は郵便番号または都市単位で天気を入手し、スポーツ444はNFL、NBA、あるいはNHLのスコアをチームごとに、あるいはゴルフのスコアを選手ごとに入手する。
【0040】
本発明を不明瞭にしないために、図5A〜5Fでは、電子メール448のみについての具体的な実装の詳細を提供する。コンポーネントドメインでは、機能、パラメータ、および戻り条件の点からコンポーネントを定義する。依存関係、関連付け、通信、同期、およびその他のインフラストラクチャ関連の問題などの関係は、コンポーネントドメインでは考慮しない。図5A〜5Fに示すインタフェースは、電子メールコンポーネント500によって提供される機能と対話するために必要な情報を公開する。
【0041】
コンポーネントまたは仮想プロセッサの名前502は「電子メール」であり、仮想プロセスID503は3001である。この特定の例では使用しないが、初期化504、停止505、およびクリーンアップ506は、電子メールコンポーネントを初期化する、電子メールコンポーネントを停止する、そして終了時に電子メールコンポーネントをクリーンアップするために呼び出すことのできるルーチンである。第1の機能510の名前512は「Connect」であり、ID513は3001051である。3つのパラメータを入力514とすることができ、これには「サーバ名」ストリング、「メッセージ送信元」ストリング、およびオプションの「メッセージ返信先」ストリングが含まれる。出力パラメータ515は指定されない。プロセスドメインは、ワークフローと分岐に戻り516を使用する。例えば、「成功」の戻り値は処理を継続することを可能にし、それに対して「見つからない」、「失敗」、および「無効な入力」は何らかのタイプのエラー処理を必要とする可能性がある。説明517はその機能が実行することを記述し、注記518はその機能の使用法についての情報を提供する。
【0042】
図5B〜5Fに示すように、電子メールコンポーネント500は、機能520、530、540、550、および560も実施し、それぞれ(i)名前:Close522、Send532、Forward542、Reply to552、およびGet562、(ii)機能ID:3001052(523)、3001053(533)、3001061(543)、3001062(553)、および3001025(563)、(iii)入力524、534、544、554、および564、(iv)出力525、535、545、555、および565、(v)戻り526、536、546、556、および566、(vi)説明527、537、547、557、および567、(vii)注記528、538、548、558、および568、を備える。
【0043】
図6に示すように、プロセスドメインに関する作業は、コンポーネントのインタフェースを定義すると開始することができる。コンポーネント自体の開発は、このワークフローと、プロセスドメインで行われる個々のコンポーネント間の関係および関連付けを識別する分岐ロジックに沿って進めることができる。図6に、ここで必要とされるビジネスプロセスを実施するためのUMLアクティビティ図を示すが、この他の適切な方法論も使用することができる。図4に示すコンポーネントによって提供される機能を使用して、行われるアクティビティを定義する。図を分かりやすくするために、図6には、プロセスドメインの十分な理解を伝えるのに必要なだけの購入者側のプロセスを示している。コンポーネントドメインと異なり、プロセスドメインは、同期したイベントではなく非同期のイベントを伴う。図6のアクティビティ図の欠点の1つは、データの移動を明示的に示していないことである。しかし、図5A〜5Fの例示的な電子メールコンポーネントなど個々のコンポーネントのインタフェース定義を参照することにより、あるコンポーネントから別のコンポーネントへのデータフローを示す。
【0044】
呼の待機616は、テレフォニーコンポーネント412(図4)の一機能である。呼を受信すると、メニュー624により販売者612にオプションのリストを提供する。販売者612は、音声/ファックスメール628のオプション、電子メール632のオプション、あるいは予約634のオプションを選ぶことができる。予約の検索636を選択すると、最初の予約要求が選択され、音声読み上げ644はオーディオバージョンを提供する。(購入者は、ウェブを通じて予約要求を提出している可能性がある。)メニュー648は、販売者612が利用できる現在のオプションを列挙する。メニュー624およびメニュー648は、電話コンポーネント412の機能であるが、ビジネスプロセス中の異なる時点で異なるオプションを利用できることを示すために別個に符号をつけていることに留意されたい。一実施形態では、メニューコンポーネントはオプションのリストを取り出し、それを販売者612に提示して、対応する番号を入力するか、オプションを口で言うことにより特定のオプションを選択できるようにする。電子メールを断る652は返信664aを呼び出し、電子メール受諾656は返信664bを呼び出して、要求される時間に販売者が都合がよいか否かを購入者(または他の者)に通知する。どちらの場合も、処理は続いて次の予約要求を求めて予約の検索636に進む。確認および終了668により、販売者は、受諾した予約要求を検討することによりスケジュールを確認し676、メニュー624に戻ることができる。テキスト読み上げ672は、それぞれの予約のオーディオバージョンを提供する。
【0045】
先に指摘したように、プロセスドメインは、コンポーネントの完全な分離と独立を可能にする。従来のコンポーネント開発では、あるコンポーネントが別のコンポーネントを呼び出せるようにすると、しばしば、呼び出し元のコンポーネントが、呼び出されるコンポーネントのインタフェース定義を含むことが必要となる。インタフェース定義を含めることは、あるソフトウェアコンポーネントの機能を別のソフトウェアコンポーネントに複製するより好ましいが、その結果、他のコンポーネントのインタフェースを組み込むコンポーネントが、相互との関連付けと関係を有することになる。それらの関連付けおよび/または関係は、あるコンポーネントの変化が他のコンポーネントに伝播するときにメンテナンス上の問題につながる。一方、プロセスドメインで関係および関連付けを定義することにより、あるコンポーネントの変化が他のどのコンポーネントにも影響を与える必要がないようにコンポーネントを互いから分離することができる。
【0046】
図7に示す環境ドメインは、本発明により動作する例示的ネットワークを示す。環境ドメインは、基本的に、ネットワーク710とコンポーネント位置の記述である。異種のプラットフォームの統合と、ネットワークの分散的な性質に注目されたい。例えば、このネットワークは、HP9000データベースサーバ720、Windows(登録商標)NTテレフォニーサーバ730、Citrix Metaframeターミナルサーバ750、Solaris Webサーバ760、Linux電子メールサーバ780、およびWindows(登録商標)クライアント790a、790b、790c、および790dを含む。コンポーネントドメインとプロセスドメインはともに、ネットワークにリソースを提供するために使用するこの特定のプラットフォームに依存しないことに留意されたい。
【0047】
HP9000データベースサーバ720は、サインアップコンポーネント722、一覧コンポーネント724、予約コンポーネント726、および案内コンポーネント728を含む。Windows(登録商標)NTテレフォニーサーバ730は、公衆交換電話網740に接続され、テレフォニーコンポーネント732を含む。Solaris Webサーバ760は、インターネット770に接続され、ニュースコンポーネント762、スポーツコンポーネント764、天気コンポーネント766、および株コンポーネント768を含む。Linux電子メールサーバ780は電子メールコンポーネント782を含む。Windows(登録商標)クライアント790a、790b、790c、および790dは、コールセンターコンポーネント792a、792b、792c、および792dを含む。
【0048】
図8に、本発明による処理ノードの一部とすることができる各種のソフトウェアオブジェクトと、それに対応する相互接続を示す。図9は、本発明の一実施形態による例示的なフローチャートであり、下記で図8と併せて説明する。図9には「9」で始まる参照符号を記載し、図8には「8」で始まる参照符号を記載する。処理ノードは必ずしも単一のハードウェアノードに対応するとは限らないことに留意されたい。単一のハードウェアノードは複数の処理ノードを含むことができ、単一の処理ノードを複数のハードウェアノードに分散することができる。したがって、本出願を通じて使用する場合、用語「処理ノード」あるいは単に「ノード」は、実質的にどのハードウェア構成も包含するものと広く解釈されたい。
【0049】
ノード810は、コントローラオブジェクト812、データベースオブジェクト814、追跡オブジェクト816、およびコンポーネントオブジェクト817と818を含む。ノード820は、コントローラオブジェクト822、データベースオブジェクト824、追跡オブジェクト826、およびコンポーネントオブジェクト827を含む。ノード830は、コントローラオブジェクト832、データベースオブジェクト834、追跡オブジェクト836、およびコンポーネントオブジェクト837および838を含む。ノード840は、コントローラオブジェクト842、追跡オブジェクト846、およびコンポーネントオブジェクト847、848、および849を含む。各ノードの各種コンポーネントオブジェクトは、分散処理と負荷分散のために同じソフトウェアコンポーネントの別個のインスタンスであっても、あるいは完全に異なるソフトウェアコンポーネントであってもよい。
【0050】
図9のコントローラ920などのコントローラオブジェクトは、ワークフローと分岐条件を定義する、プラットフォームに依存しないロジックを処理する。プラットフォームに依存しないロジックの処理の一部として、コントローラ920は、XPktFunction922を受け取る。XPktFunction922は、特定の機能を要求するメッセージであり、パラメータと、要求される機能に関連する他のデータを含む。XPktFunction922は、初期手順機能912、リモートノード914、アカウント916、およびスケジューラ918を含む、いくつかのソース910のいずれかから発生することができる。アカウント916は、初期手順機能と対応するデータの集合である。アカウントを実行すると、その初期手順機能がすべて実行される。起動時、あるいはあるオブジェクトでブロッキング機能が終了する際、あるいは明示的な呼出しに応答して、アカウントを実行してオブジェクトを初期化する。
【0051】
判定ブロック924で、コントローラ920は、要求される機能を提供するために利用できるローカルコンポーネントがあるかチェックする。「ローカル」および「リモート」などの修飾語の使用は、完全に視点に依存する。ローカルコンポーネントとは、特定のコントローラが実行されているノードに存在するコンポーネントであり、すべての他のコンポーネントはリモートになる。同様に、あるローカルコンポーネントはすべての他のノードにとってリモートである。したがって、「ローカル」および「リモート」の使用は、単に、複数のノードが存在することを示唆するに過ぎず、必ずしも近接性を意味するものと解釈すべきでない。
【0052】
利用可能なローカルコンポーネントがない場合は、エージェント940に接触する。エージェント940は、コンポーネントと、いくつかのノードそれぞれで利用可能な対応する機能を追跡する。判定ブロック942で、エージェント940は、要求される機能を提供するために利用できるリモートコンポーネントを探す。リモートノードが見つかった場合は、そのリモートノードに要求を送信する946。そうでない場合は、適切なコンポーネントが利用できる後の時間に処理するために要求をスケジュールする944。
【0053】
判定ブロック924に戻り、あるローカルコンポーネントが利用できる場合、コントローラ920は、適宜、確保し926、ブロッキングを設定し928、特定のノードにおけるコンポーネントの可用性を追跡する役割を担うエージェントを更新する932。コンポーネント950は、機能を実行し952、エージェントを更新し954、他のXPktFunctionがそのコンポーネントにスケジュールされているかどうかを判定する956。スケジュールされていない場合、コンポーネントの処理は終了する962。そうでない場合は、次のXPktFunctionを識別し964、処理はコントローラ920に進行して別のXPktFunctionを受け取る922。
【0054】
本発明では必ずしも、2つ以上の要求に対して同じコンポーネントを識別するとは限らないことを指摘したい。それに対して、従来のインフラストラクチャが特定のコンポーネントを識別すると、それ以降の要求が同じコンポーネントに導かれるように、機能の要求者とそのコンポーネントとの間に接続を確立することができる。最初のコンポーネントを識別すると利用可能なリソースの評価はそれ以上行われないので、この種の接続は、いくつかの利用可能なリソースに要求を負荷分散する労力を回避することができる。本発明は、最初に識別されたソフトウェアコンポーネント以外のソフトウェアコンポーネントが、以降の要求を満たすことを可能にする。
【0055】
ここで再度図8を参照すると、コントローラ812、コントローラ822、コントローラ832、およびコントローラ842がすべて相互に接続されていることに留意されたい。図8の実施形態では、どのコントローラも他のコントローラに直接到達することができるが、あるコントローラが中間コントローラを通じて間接的に別のコントローラに到達することも可能である。追跡オブジェクト816、826、836、および846は、各自のノードにあるコンポーネントの動作を監視するために使用する。追跡オブジェクトは、検討、実行時の監視、追跡トランザクション、および問題解決のために、イベント、データ、およびデータの移動を捕捉することができる。
【0056】
図8の各ノードは、ノード840を除いてデータベースオブジェクトを含むことに留意されたい。データベースオブジェクトは、各ノードに、プラットフォームに依存しないデータアクセスを提供する。(これは、基礎となる記憶機構が必ずしもプラットフォームに依存しないことを意味するのではなく、データへのアクセスがプラットフォームに依存しないことを意味する。多くの状況では、プラットフォーム固有のデータフォーマットを備える商業的なデータベースベンダを使用することが望ましい場合がある。)プロセスドメインで定義されるプラットフォームに依存しないロジックおよび他のデータへのアクセスは、通例はデータベースオブジェクトを通じて行われる。ただし、特定の状況では、ノード840などのノードが各種の理由によりデータベースオブジェクトを含まない場合がある。ノードまたはノードハードウェア自体にアクセスするためのネットワークは、特定データベースへのアクセスをサポートしない可能性がある。あるいは、設計上の考慮事項により、ノードがデータベースオブジェクトを含むことが望ましくない場合もある。動機に関係なく、特定のノードがデータベースオブジェクトをサポートしない、または含まない場合は、別のノードを使用してそのノードにデータアクセスを提供することができる。例えば、データベースオブジェクトを備えるあるノードを使用して、データベースオブジェクトを持たない別のノードを初期化することができる。本出願で使用する場合、別のノードを初期化するとは、そのノードの動作に関連する可能性のあるデータをそのノードに供給することを包含するものと広く解釈されたい。
【0057】
図10A〜10Bに、本発明による1つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す。少なくとも1つのノードを含む環境を提供するステップ(1010)は、次の動作を含むことができる。1つまたは複数のソフトウェアコンポーネントを作成する動作(1012)、コントローラオブジェクトを作成する動作(1014)、データベースオブジェクトを作成する動作(1016)、追跡オブジェクトを作成する動作(1018)、エージェントオブジェクトを作成する動作(1022)、プラットフォームに依存しないプロセスロジック、状態情報、あるいはその他のプラットフォームに依存しないデータを求めてデータベースオブジェクトにアクセスする動作(1024)、および1つまたは複数のソフトウェアコンポーネントの動作を記録する動作(1026)。特定のノードがデータベースオブジェクトを含まない場合、本発明は、あるノードが別のノードを初期化する動作(1030)を含むことができる。
【0058】
あるソフトウェアコンポーネントによって提供される特定の機能に対する要求を生成するステップ(1040)は次の動作を含むことができる。ソフトウェアコンポーネント間の関係を定義する、プラットフォームに依存しないロジックを設計する動作(1042)、プラットフォームに依存しないロジックを実行する動作(1044)、特定の機能に対する要求を作成する動作(1046)、および特定の機能を要求する動作(1048)。
【0059】
ソフトウェアコンポーネントを動的に見つけるステップ(1050)は次の動作を含むことができる。ある要求の特定の機能を満たすことができるソフトウェアコンポーネントを識別する動作(1052)、特定の機能に対する複数の要求を、利用可能なソフトウェアコンポーネントに負荷分散する動作(1054)、およびあるソフトウェアコンポーネントが利用可能になるまで、特定の機能に対する要求をスケジュールする動作(1056)。複数のノードが利用できる場合、本発明は、他のノードと通信する動作(1060)も含むことができる。
【0060】
ソフトウェアコンポーネントを実行するステップ(1070)は次の動作を含むことができる。ソフトウェアコンポーネントの機能を要求する前にそのソフトウェアコンポーネントを確保する動作(1072)、ソフトウェアコンポーネントを呼び出す動作(1074)、ソフトウェアコンポーネントを実行する動作(1076)、および、ソフトウェアコンポーネントから結果またはステータスを戻す動作(1078)。当業者は、本発明は必ずしも前述のステップ及び動作のどの特定の順序にも依存せず、さらに、一部のステップおよび/または動作を省略するか、他のステップおよび/または動作に置き換えてもよく、なお本発明の範囲内に該当することを認識されよう。
【0061】
本発明は、その精神または基本的な特性から逸脱することなく、他の特定の形態に実施することができる。ここに記載する実施形態は、あらゆる点で例証的なものに過ぎず、限定的なものではないとみなすべきである。したがって、本発明の範囲は、前述の説明ではなく特許請求の範囲によって示す。特許請求の範囲と等価な意味および範囲に該当する変更はすべて特許請求の範囲に包含される。
【図面の簡単な説明】
【0062】
【図1】本発明に適した動作環境を提供する例示的システムの図である。
【図2】本発明を説明する際に考慮することができる各種ドメインの図である。
【図3】例示的なビジネス上の問題を解決する際に必要とされる可能性がある可能なコンポーネントを識別するための単純な統一モデリング言語による使用事例の図である。
【図4】例示的なビジネスプロセスのために実施することができるコンポーネントとそれに対応する機能の図である。
【図5A】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5B】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5C】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5D】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5E】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5F】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図6】例示的な事業問題に対応するビジネスプロセスの統一モデリング言語によるアクティビティ図の一部である。
【図7】本発明による処理環境のネットワークおよびコンポーネント位置の図である。
【図8】本発明によるノードおよび対応する相互接続の一部とすることができる各種のソフトウェアオブジェクトの図である。
【図9】本発明の一実施形態による例示的なフローチャートである。
【図10A】本発明による1つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す図である。
【図10B】本発明による1つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す図である。
【0001】
本発明は、ソフトウェアコンポーネントに関し、より詳細には、1つまたは複数のソフトウェアオブジェクトを潜在的に含む複数の処理ノードを含むことができる環境においてソフトウェアコンポーネントに動的にアクセスする方法、システム、およびコンピュータプログラム製品に関する。
【背景技術】
【0002】
競争力を維持するために、事業者は常に新しい製品とサービスを提供しており、その結果事業経営に変化が生じ、対処すべき問題がほぼ無限に次々と生じている。時間の経過とともに、多くの事業は発展して常に変化し、動的なカスタマイズされたビジネスプロセスの集合体となる可能性がある。変化する要求によりほとんどの事業の経営が複雑化する一方、発展する技術によりさらに大きな問題が生じる可能性がある。例えば、技術が、約束するものを供給することができないかもしれず、あるいはその変化が速すぎて、事業の問題点の解決を当初の予想より難しくする可能性がある。さらに、所与の組織にとって、いずれか所定の技術に特有の利点は、新たに登場する製品およびサービスとの関係で評価するのが難しい可能性がある。したがって、各自の経営を支援するために事業者が技術を使用する場合には、変化するビジネス要件を満たすようにその技術をかなり頻繁に修正し、強化する必要がある可能性がある。その結果、技術によって事業問題を解決するには、一般に、ソフトウェア、ハードウェア、エンジニアリング、およびハイプの複雑な混合が必要とされる。事業者によっては、単に、ほぼ無限にある利用可能な技術から常に選択を行う作業で手一杯になってしまう。したがって、システム全体に対する不利益な影響を最小に抑えながら追加的な修正を可能にする技術に基づいた柔軟な解決策により、今日のビジネス環境において競争上の優位を得ることができる。
【0003】
COM、DCOM、OLE、CORBA、RPCなどのコンポーネント技術は、ビジネスプロセスを実現するための柔軟な技術を提供する試みの1つである。コンポーネント技術を使用すると、複数の製品に開発労力を再利用することにより、比較的短い時間で様々なソフトウェア製品を実装することができる。ソフトウェアコンポーネントは、インタフェースを通じてそれらのコンポーネントが提供するサービスへのアクセスを提供する独立した機能を提供することにより、再利用を容易にする。明確に定義されたインタフェースは、より大規模のシステムを作成する場合にコンポーネントをつなぎ合わせる際に個々のコンポーネントがどのように互いと調和するかを定義するので、コンポーネントの重要な特性である。理想的には、修正を行わずに複数の目的のために個々のコンポーネントを適合できるとよい。しかし、競合するコンポーネント技術によって提供される基本的な用語体系、設計の構成、およびインタフェースには著しく混乱し、および相違する。
【発明の開示】
【発明が解決しようとする課題】
【0004】
コンポーネント間の関係には、複雑な通信と同期コードが必要である。しかし、コンポーネントはそのコンポーネントの機能だけを公開すべきであり、他のコンポーネントの存在から独立している方がよい。独立させることによりコンポーネントが相互から隔離され、あるコンポーネントの変化がすべてのコンポーネントに伝播しない。したがって、再利用性を可能な限り高めるために、コンポーネントは、そのコンポーネントを他のコンポーネントに依存させる属性を除くべきである。コンポーネント間の依存関係や関連付けなどの関係は、インフラストラクチャの一部となるべきである。
【0005】
急速に変化するビジネス環境によって課される要求を満たすために、コンポーネント技術と規格は常に改良されており、コンポーネントの開発と使用のためのモデル、方法、およびプロセスが各種の規格団体および共同体によって継続的に定義され、承認されている。それぞれのコンポーネント技術、仕様、あるいは製品は、一般に、ある企業の特定のニーズに関していくらかの利益をもたらすが、その特定の技術を使用するには費用がかかり維持費の高い多量のインフラストラクチャコードを書かなければならないことが多い。
【0006】
コンポーネント技術の進歩は能力と機能において利益となるが、ビジネス要件とコンポーネント技術とは基本的に結び対が強いことから、基礎となるコンポーネントインフラストラクチャの変更が必要となる場合がある。さらに、各技術が備える最良の特性を使用しようとして技術を組み合わせる開発者は、別個の互換性のないインフラストラクチャサービスが相互に通信するための機構を作成しなければならない可能性がある。共通のインフラストラクチャがないと、インタフェースだけでは広く再利用できるコンポーネントを生み出せる見込みは低い。さらに、分散環境中に配置されたコンポーネントは、各種タイプの分散した障害、場所、およびフォーマットを管理する役割を担う。分散したインフラストラクチャが存在しないと、開発サイクルが長くなる可能性がある。
【0007】
本発明は、複数の処理ノードを含むことができる環境においてソフトウェアコンポーネントに動的にアクセスするためのインフラストラクチャを提供することにより上述の問題に対処する。
【課題を解決するための手段】
【0008】
各ノードは、1つまたは複数のソフトウェアコンポーネントオブジェクト、コントローラオブジェクト、データベースオブジェクト、追跡オブジェクト、エージェントオブジェクトなどの1つまたは複数のソフトウェアオブジェクトを含む。各ソフトウェアコンポーネントは、特定の目標またはタスクを実行するために使用できる機能を実施する。ソフトウェアコンポーネントは、それが実施する機能を実行する仮想プロセッサと考えることができる。特定の機能に対して高い需要が存在する場合は、あるソフトウェアコンポーネントの複数のインスタンスを作成することができ、利用可能なインスタンスに要求を負荷分散する。
【0009】
ソフトウェアコンポーネント間の関係は、プラットフォームに独立のロジックによって定義される。コントローラオブジェクトは、別のノードのデータベースオブジェクトまたはコントローラオブジェクトからロジックを受け取り、そのロジックを実行してプロセスフローと分岐を判定する。あるノードのソフトウェアオブジェクトの機能に対する要求は、初期化手順の一部として、実行されるロジック、リモートノード、スケジューラなどを含むいくつかのソースから生じる場合がある。機能に対する要求を受け取ると、コントローラは、その要求を満たすためにローカルのソフトウェアコンポーネントを利用できるかどうか、または別のノードに接触すべきかどうかを判定する。
【0010】
エージェントオブジェクトは、そのエージェントが担当する1つまたは複数のノードで利用可能なソフトウェアコンポーネントを追跡する。エージェントは、様々な精密度でソフトウェアコンポーネントの状態またはステータスも追跡する。例えば、機能に対する要求を受け取った場合、エージェントは、(i)所定のソフトウェアコンポーネントがどこに位置するか、および(ii)その所定のソフトウェアコンポーネントが他の要求の処理で使用中であるかどうか、を知っていると、より好適なルーティングの決定を行うことができる。利用可能なソフトウェアコンポーネントがない場合は要求をスケジューラに渡し、そうでない場合は、その要求を満たすかあるいは処理することができるソフトウェアコンポーネントを有するリモートノードに要求を送信する。
【0011】
ローカルの要求に対しては適切なソフトウェアコンポーネントが識別され、コントローラは、識別されたソフトウェアコンポーネントを適宜確保し、ブロッキングを設定する。コントローラは、そのノードのエージェントによって追跡される、識別されたコントローラのステータス情報を更新する。この時点で、コントローラは、要求をもって処理のためにそのコンポーネントを呼び出す。コンポーネントは、要求される機能を実施する対応機能を実行することによって要求を処理し、ステータス情報を更新できるようにエージェントに通知する。他の要求は同様の方式で処理される。
【0012】
プラットフォームに独立のロジックによって処理するのが最良である相互依存を最少にするために、個々のソフトウェアコンポーネントは、互いから完全に独立させ、互いを認識しないようにすることができる。負荷分散を強化するために、単一のソースによる同一機能に対する複数の要求は、異なるソフトウェアコンポーネントによって処理することができる。以前の要求と無関係に機能要求を処理することが原因でいくらかのオーバーヘッドが生じる可能性があるが、負荷分散の利益はそれを上回る可能性がある。さらに、状況により要求される場合には、将来の使用のためにソフトウェアコンポーネントを確保しておくことができる。
【0013】
本発明のこの他の特徴および利点は以下の説明で述べ、また一部はその説明から明らかになるか、あるいは本発明の実施から理解することができよう。本発明の特徴および利点は、特許請求の範囲で詳細に指摘する手段および組合せによって実現し、得ることができる。本発明の上記およびその他の特徴は、以下の説明および特許請求の範囲からより完全に明らかになり、あるいは以下に述べる本発明の実施によって理解することができる。
【0014】
本発明の上述およびその他の利点および特徴を得ることができる方式を説明するために、上記で簡単に述べた本発明のより詳細な説明を、添付図面に図示するその具体的な実施形態を参照して提供する。これらの図面は、本発明の典型的な実施形態だけを表すものであり、したがって本発明の範囲を限定するものと解されないことを理解した上で、本発明について添付図面を使用してさらに具体的かつ詳細に述べ、説明する。
【発明を実施するための最良の形態】
【0015】
本発明は、複数の処理ノードを含むことができる環境内でソフトウェアコンポーネントに動的にアクセスするための方法、システム、およびコンピュータプログラム製品に適用され、個々の処理ノードは、1つまたは複数のソフトウェアコンポーネントオブジェクト、コントローラオブジェクト、データベースオブジェクト、追跡オブジェクト、エージェントオブジェクトなど、1つまたは複数のソフトウェアオブジェクトを含む。ソフトウェアコンポーネントは、特定の目標またはタスクを遂行するために使用できる機能を提供することから、それが実施する機能を行う仮想プロセッサと呼ばれる場合がある。しばしば要求される機能については、負荷分散を可能にするために、あるソフトウェアコンポーネントの複数のインスタンスを作成することができる。
【0016】
ソフトウェアコンポーネント間の関係は、コントローラオブジェクトによって実行される、プラットフォームに依存しないロジックによって定義される。あるローカルノードのソフトウェアコンポーネントが特定の要求を満たすことができない場合は、エージェントオブジェクトに接触して、処理のためにその要求をリモートノードに送信すべきかどうかを判定することができる。利用可能なソフトウェアコンポーネントがない場合は、後に実行するために要求をスケジュールすることができる。依存関係を最少にしてプラットフォームに依存しないロジックによって処理するために、個々のソフトウェアコンポーネントは互いから完全に独立させ、互いを認識しないようにすることができる。単一のソースによる同一機能に対する複数の要求は、負荷分散を高めるために異なるソフトウェアコンポーネントによって処理することができる。必要な場合には、後に行う処理のためにソフトウェアコンポーネントを確保しておくことができる。本発明の実施形態は、下記でより詳細に述べるように各種のコンピュータハードウェアを含む専用または汎用のコンピュータを含むことができる。
【0017】
本発明の範囲内にある実施形態は、コンピュータ実行可能命令またはデータ構造を搬送するか、またはそれらが格納されたコンピュータ読取可能な媒体も含む。そのようなコンピュータ読取可能な媒体は、汎用または専用コンピュータによってアクセスできる任意の利用可能な媒体でよい。これらに限定しないが、例として、そのようなコンピュータ読取可能な媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態で搬送または格納するのに使用することができ、汎用または専用コンピュータによるアクセスが可能な任意の他の媒体からなることができる。ネットワークまたは別の通信接続(配線式、無線式、あるいは配線式と無線式の組合せ)を通じてコンピュータに情報を転送または提供する場合、コンピュータはその接続を正確にコンピュータ読取可能な媒体とみなす。したがって、そのような接続はいずれも厳密にコンピュータ読取可能な媒体と称する。上記の媒体の組合せもコンピュータ読取可能な媒体の範囲に含めるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に特定の機能または機能の群を行わせる命令とデータを含む。
【0018】
図1および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単で概略的な説明を提供する。必須ではないが、本発明は、ネットワーク環境内のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明する。一般に、プログラムモジュールは、特定タスクを行うか、特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、ここに開示する方法のステップを実行するプログラムコード手段の例に相当する。そのような実行可能命令や関連するデータ構造の特定のシーケンスは、それらのステップに記載する機能を実施するための対応する動作の例に相当する。
【0019】
当業者は、本発明は、パーソナルコンピュータ、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む多種のコンピュータシステム構成を備えるネットワークコンピューティング環境で実施できることを認識されよう。本発明は、通信ネットワークを通じて(配線リンク、無線リンク、または配線リンクと無線リンクの組合せにより)リンクされたローカルおよびリモートの処理装置によってタスクを行う分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールはローカルおよびリモート両方のメモリ記憶装置に配置することができる。
【0020】
図1を参照すると、本発明を実施する例示的システムは、従来のコンピュータ20の形態の汎用コンピューティングデバイスを含み、コンピュータ20は、処理装置21、システムメモリ22、およびシステムメモリ22を含む各種のシステムコンポーネントを処理装置21に結合するシステムバス23を含む。システムバス23は、各種のバスアーキテクチャのうち任意のものを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数種のバス構造のいずれでもよい。システムメモリは、読み取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などにコンピュータ20内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム(BIOS)26は、ROM24に格納することができる。
【0021】
コンピュータ20は、磁気ハードディスク39の読み書きを行う磁気ハードディスクドライブ27、取り外し可能の磁気ディスク29の読み書きを行う磁気ディスクドライブ28、およびCD−ROMやその他の光媒体などの取り外し可能光ディスク31の読み書きを行う光ディスクドライブ30も含むことができる。磁気ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれ、ハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33、および光ドライブインタフェース34によってシステムバス23に接続される。これらのドライブとそれに関連付けられたコンピュータ読取可能な媒体は、コンピュータ20のコンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性の記憶を提供する。ここに記載する例示的環境では、磁気ハードディスク39、取り外し可能磁気ディスク29、および取り外し可能光ディスク31を用いているが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROMなどを含む、データを格納する他タイプのコンピュータ読取可能な媒体を使用することができる。
【0022】
オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含む、1つまたは複数のプログラムモジュールからなるプログラムコード手段は、ハードディスク39、磁気ディスク29、光ディスク31、ROM24、またはRAM25に格納することができる。ユーザは、キーボード40、ポインティングデバイス42、あるいはマイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなど他の入力装置(図示せず)を通じてコンピュータ20にコマンドと情報を入力することができる。これらおよびその他の入力装置は、システムバス23に結合されたシリアルポートインタフェース46を通じて処理装置21に接続することが多い。あるいは、これらの入力装置は、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)などの他のインタフェースによって接続してもよい。モニタ47または別の表示装置も、ビデオアダプタ48などのインタフェースを介してシステムバス23に接続される。パーソナルコンピュータは通例、モニタに加えてスピーカやプリンタなど他の周辺出力装置(図示せず)を含む。
【0023】
コンピュータ20は、リモートコンピュータ49aおよび49bなど1つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ49aおよび49bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいはその他の一般的なネットワークノードでよく、図1にはメモリ記憶装置50aおよび50bとそれらに関連付けられたアプリケーションプログラム36aおよび36bしか示していないが、通例はコンピュータ20との関連で上述した要素の多くまたはすべてを含む。図1に示す論理接続には、ここに例として提示し、限定ではない、ローカルエリアネットワーク(LAN)51およびワイドエリアネットワーク(WAN)52が含まれる。このようなネットワーキング環境は、オフィス内または企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【0024】
LANネットワーキング環境で使用する場合、コンピュータ20は、ネットワークインタフェースまたはアダプタ53を通じてローカルネットワーク51に接続する。WANネットワーキング環境で使用する場合、コンピュータ20は、インターネットなどのワイドエリアネットワーク52を通じて通信を確立するためのモデム54、無線リンク、あるいはその他の手段を含むことができる。モデム54は内蔵型でも外付け型でもよく、シリアルポートインタフェース46を介してシステムバス23に接続する。ネットワーク環境では、コンピュータ20との関連で図に示すプログラムモジュール、またはその一部は、遠隔のメモリ記憶装置に格納することができる。図に示すネットワーク環境は例示的なものであり、ワイドエリアネットワーク52を通じて通信を確立する他の手段を使用できることは理解されよう。
【0025】
図2に、本発明を説明する際に考慮することのできる各種のドメインを示す。コンポーネントドメイン210は、抽象化を通じて複雑なシステムを単純なものにすることができる。個々のコンポーネントは、提供される機能、必要に可能性のあるパラメータまたはデータ、および戻り条件の点から定義される。コンポーネントは、共通オブジェクト要求ブローカアーキテクチャ(「CORBA」)、コンポーネントオブジェクトモデル/分散コンポーネントオブジェクトモデル(「COM/DCOM」)、エンタープライズJava(登録商標)Beans(「EJB」)などの標準的な技術と併せて各種のオブジェクト指向の手法を使用して開発することができる。各コンポーネントは、他のコンポーネントを考慮せずに単独で開発する。個々のコンポーネントは、オブジェクト指向クラスを介してすべてのコンポーネントに共通の機能を継承することができる。要件の収集、分析、および設計と密接に結びつく開始から仕上げまでの諸段階は、コンポーネントドメインに直接マッピングする。コンポーネントドメインはほぼ同期しており、1度に1つずつ行われるタスクの根拠となる。各コンポーネントは、それ自体の単一のインスタンスだけを知っており、所与の時間に1つのコンポーネントインスタンスにつき1つのメソッドがアクティブになっている。
【0026】
コンポーネント間の関係はプロセスドメイン220で扱われるインフラストラクチャで考慮される事項なので、分散ネットワークでは、任意のプラットフォームのコンポーネントを異種間で混合することができる。コンポーネントドメインと異なり、プロセスドメイン220は、プロセスを定義する非同期コンテクストである。プロセスを定義するために、要求されるワークフローおよび分岐条件に基づいて論理的順序で機能をグループ化する。プロセスドメイン220は、実行コンポーネントの位置(環境ドメイン230)や特定の実装問題(コンポーネントドメイン210)を扱わない。実装と動作環境を分離することにより、プロセスドメイン220は、ビジネスプロセスをターゲット技術から分離することを可能にする。この結果、基礎となる実装を修正する際でも、プロセスドメイン220で開発される解決法が引き続き有効になる。プロセスドメイン220は、標準的な統一モデリング言語(「UML」)によるアクティビティ図、ツリー階層、およびBuilder Linearを含む各種のフォーマットでとらえることができる。
【0027】
環境ドメイン230は、ネットワーク情報と、各コンポーネントの具体的な位置を含む。機能(コンポーネントドメイン210)およびプロセス知識(プロセスドメイン220)は、このドメインでは必要とされない。環境は、エンタープライズネットワーク中のノードにあるコンポーネントの集合的な配置である。各ノードは、ネットワークに対するリソースまたはサービスとしてメモリに常駐するコンポーネントを識別する。これらの実行時構成を使用して、実行プロセスによって定義されるタスクまたは目標を達成する。ネットワーク構成全体に基づいた計算を通じて動的なスケーリングを達成することができる。例えば、ノードまたはハードウェアデバイスをネットワークに追加する際には構成に修正を行い、その新しいリソースを利用できる状態にする。これに対して、従来の環境におけるスケーリングでは、通常は新しいリソースに対応するようにコードを書き直す必要がある。
【0028】
実行ドメイン240は、プロセスドメインの指示に従ってある手順から次の手順へと実行を導き、要求される機能を実行するためにローカルノードおよびリモートノードのコンポーネントを見つける。実行ドメイン240は、ネットワーク中で発生するあらゆるイベントを記録することも可能にする。データおよびネットワーク中のデータの移動は、後に検討するために保存しておくことができる。イベント情報を記録し、フォーマットするいくつかのビューを通じて、柔軟性のある管理オプションのために実行時監視が提供される。イベント情報を保存することにより履歴の監視が可能になり、多くの種類の問題を解決するためにあるシステムの正確な複製をシミュレートすることができる。記録されたイベントおよびデータは、各種の報告要件を満たすためにも使用することができる。
【0029】
図3〜7は、実際のビジネス状況で本発明を使用する例に関連する。各ドメインを使用して、あるアプリケーションを要件から実行まで説明する。汎用的な開発プロセスにより、最も組織化された開発方法論に本発明をマッピングできる仕組みを例証する。詳細には、この例では、きわめて競争の激しい市場にあり、自動化された情報センターへの電話およびWebによるアクセスを提供することにより購入者と販売者へのアクセスを拡大しようとしている不動産会社を考察する。可能な限り大きな市場をつかむためには、可能な限り人間に似た対話を含め、サービスは使用が容易なものでなければならない。さらに、潜在的な購入者のサービスの閲覧を促進するために、ニュース、スポーツ、天気、および株価などの無料コンテンツサービスを提供する。この会社は、HP9000、Solarisウェブサーバ、およびLinux電子メールサーバを含むハードウェアへの過去の投資を維持することを希望している。図3に示すように、次の要件が集められる。
【0030】
販売者312は、自社の不動産物件をリストに載せるためにサインアップ322することが出来なくてはならない。
【0031】
販売者312には、音声メール326、ファックスメール334、および電子メール338を送受信することが可能な個々の電子通信ボックスを提供しなくてはならない。
【0032】
販売者312は、要求される展示会の予約のステータスを確認する342ことができなくてはならない。
【0033】
購入者314は、フィルタオプションを選択することにより、または各物件に表示されるID番号により、一覧を閲覧362することができなくてはならない。
【0034】
購入者314は、住宅を見学するために予約366を設定することができなくてはならない。
【0035】
購入者314は、購入者が要求した場合にはただちに代理人316に転送374しなくてはならない。
【0036】
購入者314は、音声またはファックスを介して物件までの案内378を得ることができる。
【0037】
購入者314は、任意選択で、天気予報、ニュース、スポーツ、株、および地域の映画上映時間などの特定の内容を聞くことができる。
【0038】
購入者は、音声またはファックスにより住宅に関する情報を受け取ることができなくてはならない。電話の代替として、ウェブページを介した同等の機能を提供すべきである。各使用事例に基づいてコンポーネントを定義する際には、「要求される動作を行うのは何か」と「一度に1つずつ行えるのは何か」を検討すると、個々のコンポーネントの境界を明確にする助けとなる。例えば、使用事例の多くでは電話線を通じた接続性が必要とされる可能性がある。したがって、1つの線における呼を待機し、呼に応答し、呼を切り、記録し、再生し、ファックスを送信するなどの、テレフォニーと呼ばれるコンポーネントを備えることがふさわしい。ここでも、コンポーネントドメインで、あるコンポーネントが同期して行えることを考えることが通例は最も有用である。ポストオフィスバージョン3(「POP3」)サーバまたはシンプルメール転送プロトコル(「STMP」)サーバに接続し、電子メールを送信し、電子メールを受け取り、電子メールを転送し、電子メールに返信する、単純な電子メールコンポーネントを定義することができる。
【0039】
反復的に分析を行うと、図4に示すコンポーネントおよびそれに対応する機能を定義する。テレフォニー412は、呼の待機、呼の終了、テキストの読み上げ、コマンドの認識、録音、再生、削除、転送、ファックス受信、ファックス送信、メニューオプションの一覧表示を行う諸機能を含む。サインアップ416は、ウェルカム、一覧表示のオプション、販売者を追加する機能、および情報収集を提供する。一覧424は、IDによる閲覧、場所による閲覧、エージェントによる閲覧、カテゴリによる閲覧、価格帯による閲覧、および選択された基準による閲覧を含む各種の閲覧オプションを可能にする。住所による案内は、案内436を通じて得ることができる。予約452は、予約の検索、予約の設定、およびスケジュールの確認を行う機能を含む。電子メール448は、電子メールサーバに接続し、接続を閉じ、電子メールを送信し、電子メールを転送し、電子メールに返信し、電子メールを取り出す諸機能を定義する。コールセンター464は、呼への応答と転送を提供する。残りのコンポーネントは、他の情報にアクセスする。ニュース456は主要なニュースを入手し、株468はチッカーシンボルにより株価を入手し、天気428は郵便番号または都市単位で天気を入手し、スポーツ444はNFL、NBA、あるいはNHLのスコアをチームごとに、あるいはゴルフのスコアを選手ごとに入手する。
【0040】
本発明を不明瞭にしないために、図5A〜5Fでは、電子メール448のみについての具体的な実装の詳細を提供する。コンポーネントドメインでは、機能、パラメータ、および戻り条件の点からコンポーネントを定義する。依存関係、関連付け、通信、同期、およびその他のインフラストラクチャ関連の問題などの関係は、コンポーネントドメインでは考慮しない。図5A〜5Fに示すインタフェースは、電子メールコンポーネント500によって提供される機能と対話するために必要な情報を公開する。
【0041】
コンポーネントまたは仮想プロセッサの名前502は「電子メール」であり、仮想プロセスID503は3001である。この特定の例では使用しないが、初期化504、停止505、およびクリーンアップ506は、電子メールコンポーネントを初期化する、電子メールコンポーネントを停止する、そして終了時に電子メールコンポーネントをクリーンアップするために呼び出すことのできるルーチンである。第1の機能510の名前512は「Connect」であり、ID513は3001051である。3つのパラメータを入力514とすることができ、これには「サーバ名」ストリング、「メッセージ送信元」ストリング、およびオプションの「メッセージ返信先」ストリングが含まれる。出力パラメータ515は指定されない。プロセスドメインは、ワークフローと分岐に戻り516を使用する。例えば、「成功」の戻り値は処理を継続することを可能にし、それに対して「見つからない」、「失敗」、および「無効な入力」は何らかのタイプのエラー処理を必要とする可能性がある。説明517はその機能が実行することを記述し、注記518はその機能の使用法についての情報を提供する。
【0042】
図5B〜5Fに示すように、電子メールコンポーネント500は、機能520、530、540、550、および560も実施し、それぞれ(i)名前:Close522、Send532、Forward542、Reply to552、およびGet562、(ii)機能ID:3001052(523)、3001053(533)、3001061(543)、3001062(553)、および3001025(563)、(iii)入力524、534、544、554、および564、(iv)出力525、535、545、555、および565、(v)戻り526、536、546、556、および566、(vi)説明527、537、547、557、および567、(vii)注記528、538、548、558、および568、を備える。
【0043】
図6に示すように、プロセスドメインに関する作業は、コンポーネントのインタフェースを定義すると開始することができる。コンポーネント自体の開発は、このワークフローと、プロセスドメインで行われる個々のコンポーネント間の関係および関連付けを識別する分岐ロジックに沿って進めることができる。図6に、ここで必要とされるビジネスプロセスを実施するためのUMLアクティビティ図を示すが、この他の適切な方法論も使用することができる。図4に示すコンポーネントによって提供される機能を使用して、行われるアクティビティを定義する。図を分かりやすくするために、図6には、プロセスドメインの十分な理解を伝えるのに必要なだけの購入者側のプロセスを示している。コンポーネントドメインと異なり、プロセスドメインは、同期したイベントではなく非同期のイベントを伴う。図6のアクティビティ図の欠点の1つは、データの移動を明示的に示していないことである。しかし、図5A〜5Fの例示的な電子メールコンポーネントなど個々のコンポーネントのインタフェース定義を参照することにより、あるコンポーネントから別のコンポーネントへのデータフローを示す。
【0044】
呼の待機616は、テレフォニーコンポーネント412(図4)の一機能である。呼を受信すると、メニュー624により販売者612にオプションのリストを提供する。販売者612は、音声/ファックスメール628のオプション、電子メール632のオプション、あるいは予約634のオプションを選ぶことができる。予約の検索636を選択すると、最初の予約要求が選択され、音声読み上げ644はオーディオバージョンを提供する。(購入者は、ウェブを通じて予約要求を提出している可能性がある。)メニュー648は、販売者612が利用できる現在のオプションを列挙する。メニュー624およびメニュー648は、電話コンポーネント412の機能であるが、ビジネスプロセス中の異なる時点で異なるオプションを利用できることを示すために別個に符号をつけていることに留意されたい。一実施形態では、メニューコンポーネントはオプションのリストを取り出し、それを販売者612に提示して、対応する番号を入力するか、オプションを口で言うことにより特定のオプションを選択できるようにする。電子メールを断る652は返信664aを呼び出し、電子メール受諾656は返信664bを呼び出して、要求される時間に販売者が都合がよいか否かを購入者(または他の者)に通知する。どちらの場合も、処理は続いて次の予約要求を求めて予約の検索636に進む。確認および終了668により、販売者は、受諾した予約要求を検討することによりスケジュールを確認し676、メニュー624に戻ることができる。テキスト読み上げ672は、それぞれの予約のオーディオバージョンを提供する。
【0045】
先に指摘したように、プロセスドメインは、コンポーネントの完全な分離と独立を可能にする。従来のコンポーネント開発では、あるコンポーネントが別のコンポーネントを呼び出せるようにすると、しばしば、呼び出し元のコンポーネントが、呼び出されるコンポーネントのインタフェース定義を含むことが必要となる。インタフェース定義を含めることは、あるソフトウェアコンポーネントの機能を別のソフトウェアコンポーネントに複製するより好ましいが、その結果、他のコンポーネントのインタフェースを組み込むコンポーネントが、相互との関連付けと関係を有することになる。それらの関連付けおよび/または関係は、あるコンポーネントの変化が他のコンポーネントに伝播するときにメンテナンス上の問題につながる。一方、プロセスドメインで関係および関連付けを定義することにより、あるコンポーネントの変化が他のどのコンポーネントにも影響を与える必要がないようにコンポーネントを互いから分離することができる。
【0046】
図7に示す環境ドメインは、本発明により動作する例示的ネットワークを示す。環境ドメインは、基本的に、ネットワーク710とコンポーネント位置の記述である。異種のプラットフォームの統合と、ネットワークの分散的な性質に注目されたい。例えば、このネットワークは、HP9000データベースサーバ720、Windows(登録商標)NTテレフォニーサーバ730、Citrix Metaframeターミナルサーバ750、Solaris Webサーバ760、Linux電子メールサーバ780、およびWindows(登録商標)クライアント790a、790b、790c、および790dを含む。コンポーネントドメインとプロセスドメインはともに、ネットワークにリソースを提供するために使用するこの特定のプラットフォームに依存しないことに留意されたい。
【0047】
HP9000データベースサーバ720は、サインアップコンポーネント722、一覧コンポーネント724、予約コンポーネント726、および案内コンポーネント728を含む。Windows(登録商標)NTテレフォニーサーバ730は、公衆交換電話網740に接続され、テレフォニーコンポーネント732を含む。Solaris Webサーバ760は、インターネット770に接続され、ニュースコンポーネント762、スポーツコンポーネント764、天気コンポーネント766、および株コンポーネント768を含む。Linux電子メールサーバ780は電子メールコンポーネント782を含む。Windows(登録商標)クライアント790a、790b、790c、および790dは、コールセンターコンポーネント792a、792b、792c、および792dを含む。
【0048】
図8に、本発明による処理ノードの一部とすることができる各種のソフトウェアオブジェクトと、それに対応する相互接続を示す。図9は、本発明の一実施形態による例示的なフローチャートであり、下記で図8と併せて説明する。図9には「9」で始まる参照符号を記載し、図8には「8」で始まる参照符号を記載する。処理ノードは必ずしも単一のハードウェアノードに対応するとは限らないことに留意されたい。単一のハードウェアノードは複数の処理ノードを含むことができ、単一の処理ノードを複数のハードウェアノードに分散することができる。したがって、本出願を通じて使用する場合、用語「処理ノード」あるいは単に「ノード」は、実質的にどのハードウェア構成も包含するものと広く解釈されたい。
【0049】
ノード810は、コントローラオブジェクト812、データベースオブジェクト814、追跡オブジェクト816、およびコンポーネントオブジェクト817と818を含む。ノード820は、コントローラオブジェクト822、データベースオブジェクト824、追跡オブジェクト826、およびコンポーネントオブジェクト827を含む。ノード830は、コントローラオブジェクト832、データベースオブジェクト834、追跡オブジェクト836、およびコンポーネントオブジェクト837および838を含む。ノード840は、コントローラオブジェクト842、追跡オブジェクト846、およびコンポーネントオブジェクト847、848、および849を含む。各ノードの各種コンポーネントオブジェクトは、分散処理と負荷分散のために同じソフトウェアコンポーネントの別個のインスタンスであっても、あるいは完全に異なるソフトウェアコンポーネントであってもよい。
【0050】
図9のコントローラ920などのコントローラオブジェクトは、ワークフローと分岐条件を定義する、プラットフォームに依存しないロジックを処理する。プラットフォームに依存しないロジックの処理の一部として、コントローラ920は、XPktFunction922を受け取る。XPktFunction922は、特定の機能を要求するメッセージであり、パラメータと、要求される機能に関連する他のデータを含む。XPktFunction922は、初期手順機能912、リモートノード914、アカウント916、およびスケジューラ918を含む、いくつかのソース910のいずれかから発生することができる。アカウント916は、初期手順機能と対応するデータの集合である。アカウントを実行すると、その初期手順機能がすべて実行される。起動時、あるいはあるオブジェクトでブロッキング機能が終了する際、あるいは明示的な呼出しに応答して、アカウントを実行してオブジェクトを初期化する。
【0051】
判定ブロック924で、コントローラ920は、要求される機能を提供するために利用できるローカルコンポーネントがあるかチェックする。「ローカル」および「リモート」などの修飾語の使用は、完全に視点に依存する。ローカルコンポーネントとは、特定のコントローラが実行されているノードに存在するコンポーネントであり、すべての他のコンポーネントはリモートになる。同様に、あるローカルコンポーネントはすべての他のノードにとってリモートである。したがって、「ローカル」および「リモート」の使用は、単に、複数のノードが存在することを示唆するに過ぎず、必ずしも近接性を意味するものと解釈すべきでない。
【0052】
利用可能なローカルコンポーネントがない場合は、エージェント940に接触する。エージェント940は、コンポーネントと、いくつかのノードそれぞれで利用可能な対応する機能を追跡する。判定ブロック942で、エージェント940は、要求される機能を提供するために利用できるリモートコンポーネントを探す。リモートノードが見つかった場合は、そのリモートノードに要求を送信する946。そうでない場合は、適切なコンポーネントが利用できる後の時間に処理するために要求をスケジュールする944。
【0053】
判定ブロック924に戻り、あるローカルコンポーネントが利用できる場合、コントローラ920は、適宜、確保し926、ブロッキングを設定し928、特定のノードにおけるコンポーネントの可用性を追跡する役割を担うエージェントを更新する932。コンポーネント950は、機能を実行し952、エージェントを更新し954、他のXPktFunctionがそのコンポーネントにスケジュールされているかどうかを判定する956。スケジュールされていない場合、コンポーネントの処理は終了する962。そうでない場合は、次のXPktFunctionを識別し964、処理はコントローラ920に進行して別のXPktFunctionを受け取る922。
【0054】
本発明では必ずしも、2つ以上の要求に対して同じコンポーネントを識別するとは限らないことを指摘したい。それに対して、従来のインフラストラクチャが特定のコンポーネントを識別すると、それ以降の要求が同じコンポーネントに導かれるように、機能の要求者とそのコンポーネントとの間に接続を確立することができる。最初のコンポーネントを識別すると利用可能なリソースの評価はそれ以上行われないので、この種の接続は、いくつかの利用可能なリソースに要求を負荷分散する労力を回避することができる。本発明は、最初に識別されたソフトウェアコンポーネント以外のソフトウェアコンポーネントが、以降の要求を満たすことを可能にする。
【0055】
ここで再度図8を参照すると、コントローラ812、コントローラ822、コントローラ832、およびコントローラ842がすべて相互に接続されていることに留意されたい。図8の実施形態では、どのコントローラも他のコントローラに直接到達することができるが、あるコントローラが中間コントローラを通じて間接的に別のコントローラに到達することも可能である。追跡オブジェクト816、826、836、および846は、各自のノードにあるコンポーネントの動作を監視するために使用する。追跡オブジェクトは、検討、実行時の監視、追跡トランザクション、および問題解決のために、イベント、データ、およびデータの移動を捕捉することができる。
【0056】
図8の各ノードは、ノード840を除いてデータベースオブジェクトを含むことに留意されたい。データベースオブジェクトは、各ノードに、プラットフォームに依存しないデータアクセスを提供する。(これは、基礎となる記憶機構が必ずしもプラットフォームに依存しないことを意味するのではなく、データへのアクセスがプラットフォームに依存しないことを意味する。多くの状況では、プラットフォーム固有のデータフォーマットを備える商業的なデータベースベンダを使用することが望ましい場合がある。)プロセスドメインで定義されるプラットフォームに依存しないロジックおよび他のデータへのアクセスは、通例はデータベースオブジェクトを通じて行われる。ただし、特定の状況では、ノード840などのノードが各種の理由によりデータベースオブジェクトを含まない場合がある。ノードまたはノードハードウェア自体にアクセスするためのネットワークは、特定データベースへのアクセスをサポートしない可能性がある。あるいは、設計上の考慮事項により、ノードがデータベースオブジェクトを含むことが望ましくない場合もある。動機に関係なく、特定のノードがデータベースオブジェクトをサポートしない、または含まない場合は、別のノードを使用してそのノードにデータアクセスを提供することができる。例えば、データベースオブジェクトを備えるあるノードを使用して、データベースオブジェクトを持たない別のノードを初期化することができる。本出願で使用する場合、別のノードを初期化するとは、そのノードの動作に関連する可能性のあるデータをそのノードに供給することを包含するものと広く解釈されたい。
【0057】
図10A〜10Bに、本発明による1つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す。少なくとも1つのノードを含む環境を提供するステップ(1010)は、次の動作を含むことができる。1つまたは複数のソフトウェアコンポーネントを作成する動作(1012)、コントローラオブジェクトを作成する動作(1014)、データベースオブジェクトを作成する動作(1016)、追跡オブジェクトを作成する動作(1018)、エージェントオブジェクトを作成する動作(1022)、プラットフォームに依存しないプロセスロジック、状態情報、あるいはその他のプラットフォームに依存しないデータを求めてデータベースオブジェクトにアクセスする動作(1024)、および1つまたは複数のソフトウェアコンポーネントの動作を記録する動作(1026)。特定のノードがデータベースオブジェクトを含まない場合、本発明は、あるノードが別のノードを初期化する動作(1030)を含むことができる。
【0058】
あるソフトウェアコンポーネントによって提供される特定の機能に対する要求を生成するステップ(1040)は次の動作を含むことができる。ソフトウェアコンポーネント間の関係を定義する、プラットフォームに依存しないロジックを設計する動作(1042)、プラットフォームに依存しないロジックを実行する動作(1044)、特定の機能に対する要求を作成する動作(1046)、および特定の機能を要求する動作(1048)。
【0059】
ソフトウェアコンポーネントを動的に見つけるステップ(1050)は次の動作を含むことができる。ある要求の特定の機能を満たすことができるソフトウェアコンポーネントを識別する動作(1052)、特定の機能に対する複数の要求を、利用可能なソフトウェアコンポーネントに負荷分散する動作(1054)、およびあるソフトウェアコンポーネントが利用可能になるまで、特定の機能に対する要求をスケジュールする動作(1056)。複数のノードが利用できる場合、本発明は、他のノードと通信する動作(1060)も含むことができる。
【0060】
ソフトウェアコンポーネントを実行するステップ(1070)は次の動作を含むことができる。ソフトウェアコンポーネントの機能を要求する前にそのソフトウェアコンポーネントを確保する動作(1072)、ソフトウェアコンポーネントを呼び出す動作(1074)、ソフトウェアコンポーネントを実行する動作(1076)、および、ソフトウェアコンポーネントから結果またはステータスを戻す動作(1078)。当業者は、本発明は必ずしも前述のステップ及び動作のどの特定の順序にも依存せず、さらに、一部のステップおよび/または動作を省略するか、他のステップおよび/または動作に置き換えてもよく、なお本発明の範囲内に該当することを認識されよう。
【0061】
本発明は、その精神または基本的な特性から逸脱することなく、他の特定の形態に実施することができる。ここに記載する実施形態は、あらゆる点で例証的なものに過ぎず、限定的なものではないとみなすべきである。したがって、本発明の範囲は、前述の説明ではなく特許請求の範囲によって示す。特許請求の範囲と等価な意味および範囲に該当する変更はすべて特許請求の範囲に包含される。
【図面の簡単な説明】
【0062】
【図1】本発明に適した動作環境を提供する例示的システムの図である。
【図2】本発明を説明する際に考慮することができる各種ドメインの図である。
【図3】例示的なビジネス上の問題を解決する際に必要とされる可能性がある可能なコンポーネントを識別するための単純な統一モデリング言語による使用事例の図である。
【図4】例示的なビジネスプロセスのために実施することができるコンポーネントとそれに対応する機能の図である。
【図5A】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5B】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5C】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5D】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5E】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図5F】図4に含まれる電子メールコンポーネントの具体的な実装の詳細を提供する図である。
【図6】例示的な事業問題に対応するビジネスプロセスの統一モデリング言語によるアクティビティ図の一部である。
【図7】本発明による処理環境のネットワークおよびコンポーネント位置の図である。
【図8】本発明によるノードおよび対応する相互接続の一部とすることができる各種のソフトウェアオブジェクトの図である。
【図9】本発明の一実施形態による例示的なフローチャートである。
【図10A】本発明による1つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す図である。
【図10B】本発明による1つまたは複数のソフトウェアコンポーネントにアクセスする例示的方法を示す図である。
Claims (23)
- 各々が1つまたは複数の機能を備える1つまたは複数のソフトウェアコンポーネントオブジェクトを含む複数のソフトウェアオブジェクトを備えるコンピュータ化されたシステムにおいて、前記1つまたは複数のソフトウェアコンポーネントオブジェクトおよび対応する1つまたは複数の機能にアクセスするためのインタフェースはパラメータおよび戻り値に基づき、タスクまたは目標を達成する際に前記1つまたは複数のソフトウェアコンポーネントオブジェクトに動的にアクセスする方法であって、
少なくとも1つのノードを作成する動作であって、前記少なくとも1つのノードは、(i)所定の機能を実施する1つまたは複数の機能をそれぞれが備える1つまたは複数のソフトウェアコンポーネントオブジェクトと、(ii)前記1つまたは複数のソフトウェアコンポーネントオブジェクトとの対話を管理するコントローラオブジェクトとを含む動作と、
前記1つまたは複数のソフトウェアコンポーネントオブジェクトの前記1つまたは複数の機能の少なくとも1つの前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第1のソフトウェアコンポーネントオブジェクトを動的に識別する動作であって、前記第1のソフトウェアコンポーネントオブジェクトの識別は、いずれの所定の要求者にも独立して前記要求についてのみ持続することができ、後の要求が前の要求者からのものである場合でも、前記後の要求に対して別のソフトウェアコンポーネントオブジェクトを動的に識別することを可能にする動作と、
前記第1のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を備えたことを特徴とする方法。 - 複数のソフトウェアコンポーネントオブジェクトが前記所定の機能に対する要求を満たすことができ、前記方法はさらに、
続いて前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第2のソフトウェアコンポーネントオブジェクトを動的に識別する動作と、
前記第2のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を含むことを特徴とする請求項1に記載の方法。 - 前記少なくとも1つのノードは、複数のソフトウェアコンポーネントオブジェクトを含み、前記複数のソフトウェアコンポーネントオブジェクトはそれら自体、相互に完全に独立し、互いを認識しないことを特徴とする請求項1に記載の方法。
- 前記複数のソフトウェアコンポーネントオブジェクトの少なくとも2つの間の関係を定義する、プラットフォームに独立のロジックを設計する動作であって、前記ロジックは、処理フローおよび1つまたは複数の分岐条件の少なくとも1つを含む動作をさらに含むことを特徴とする請求項3に記載の方法。
- 複数のソフトウェアコンポーネントオブジェクトが前記所定の機能に対する要求を満たすことができ、前記方法はさらに、前記所定の機能に対する複数の要求を前記複数のソフトウェアコンポーネントオブジェクトに負荷分散する動作をさらに含むことを特徴とする請求項1に記載の方法。
- 前記少なくとも1つのノードはさらに、(i)プラットフォームに独立のロジック、(ii)1つまたは複数のソフトウェアコンポーネントオブジェクトの状態情報、および(iii)プラットフォームに独立のデータ、の少なくとも1つへのアクセスを提供するデータベースオブジェクトを備え、前記方法はさらに、前記データベースオブジェクトを通じて、前記プラットフォームに独立のロジック、前記状態情報、または前記プラットフォームに独立のデータのいずれかにアクセスする動作を含むことを特徴とする請求項1に記載の方法。
- 前記少なくとも1つのノードの前記データベースオブジェクトは、プラットフォームに独立のロジックにアクセスし、前記方法はさらに、
前記プラットフォームに独立のロジックを実行する動作、および
前記所定の機能に対する要求を作成する動作
を行うコントローラを含むことを特徴とする請求項6に記載の方法。 - 前記少なくとも1つのノードはさらに、前記少なくとも1つのノードで行われる処理を追跡することができる追跡オブジェクトを備え、前記方法はさらに、前記第1のソフトウェアコンポーネントオブジェクトの少なくとも1つの機能の動作を記録する動作を含むことを特徴とする請求項1に記載の方法。
- 前記少なくとも1つのノードは複数のノードを含むことを特徴とする請求項1に記載の方法。
- 前記複数のノードの少なくとも2つは相互に遠隔にあり、前記少なくとも2つの複数のノードの1つがローカルノードであり、もう一方がリモートノードであることを特徴とする請求項9に記載の方法。
- 1つまたは複数のノードは、そのエージェントが担当するいくつかのノードのそれぞれで利用可能なソフトウェアコンポーネントオブジェクトを追跡するエージェントオブジェクトを含み、所与のノードは、前記所定の機能に対する要求を満たすことができるローカルのソフトウェアコンポーネントオブジェクトを識別することができず、前記エージェントが動的に前記第1のソフトウェアコンポーネントを識別することを特徴とする請求項10に記載の方法。
- 前記複数のノードは、単一のハードウェアノードに位置することを特徴とする請求項9に記載の方法。
- 前記複数のノードが、プラットフォームに独立のメッセージを通じて相互と通信する動作をさらに含むことを特徴とする請求項9に記載の方法。
- 当初利用可能なソフトウェアコンポーネントオブジェクトがなく、前記方法はさらに、前記第1のソフトウェアコンポーネントオブジェクトが利用可能になるまで前記所定の機能に対する要求をスケジュールする動作を含むことを特徴とする請求項1に記載の方法。
- 複数のソフトウェアオブジェクトを可能にし、それぞれが1つまたは複数の機能を備える1つまたは複数のソフトウェアコンポーネントオブジェクトを含むことができ、前記1つまたは複数のソフトウェアコンポーネントオブジェクトとの対話を管理するコントローラオブジェクトを含むことができるコンピュータ化されたシステムにおいて、前記1つまたは複数のソフトウェアコンポーネントオブジェクトに動的にアクセスする方法であって、
少なくとも2つのソフトウェアコンポーネントオブジェクトのインタフェースを定義する動作であって、前記インタフェースは、(i)前記1つまたは複数のソフトウェアオブジェクトの各機能、(ii)各機能に関連する任意のパラメータ、および(iii)各機能に関連する任意の戻り値、を指定する動作と、
前記少なくとも2つのソフトウェアコンポーネント間の1つまたは複数の関係を定義する動作であって、前記関係または関連付けは、前記少なくとも2つのソフトウェアコンポーネントオブジェクトのどの実装からも分離し、独立しており、前記関係または関連付けは、コントローラオブジェクトによって処理されるプラットフォームに独立のロジックとして格納される動作と、
前記少なくとも2つのソフトウェアコンポーネントオブジェクトの位置を指定する環境を定義する動作であって、前記少なくとも2つのソフトウェアコンポーネントオブジェクトは、1つまたは複数の処理ノードに分散させることができる動作と
を含むことを特徴とする方法。 - 所定の機能に対する要求を満たすことができる第1のソフトウェアコンポーネントオブジェクトを動的に識別する動作をさらに含み、前記所定の機能に対する後の要求に対して別のソフトウェアコンポーネントを動的に識別できることを特徴とする請求項15に記載の方法。
- 前記1つまたは複数の処理ノードは、(i)そのエージェントが担当するいくつかのノードのそれぞれで利用可能なソフトウェアコンポーネントを追跡するエージェントオブジェクトであって、動的に第1のソフトウェアコンポーネントを識別するエージェントオブジェクト、(ii)プラットフォームに独立のロジック、状態情報、およびプラットフォームに独立のデータ、の少なくとも1つへのアクセスを提供するデータベースオブジェクト、および(iii)少なくとも1つの処理ノードで行われる処理を追跡することができる追跡オブジェクト、の少なくとも1つを備えることを特徴とする請求項15に記載の方法。
- 複数のソフトウェアコンポーネントオブジェクトが所定の機能に対する要求を満たすことができ、前記方法はさらに、前記所定の機能に対する複数の要求を前記複数のソフトウェアコンポーネントに負荷分散する動作を含むことを特徴とする請求項15に記載の方法。
- それぞれが1つまたは複数の機能を備える1つまたは複数のソフトウェアコンポーネントオブジェクトを含む複数のソフトウェアオブジェクトを備えるコンピュータ化されたシステムにおいて、前記1つまたは複数のソフトウェアコンポーネントオブジェクトおよび対応する1つまたは複数の機能にアクセスするためのインタフェースはパラメータおよび戻り値に基づき、タスクまたは目標を達成する際に前記1つまたは複数のソフトウェアコンポーネントオブジェクトに動的にアクセスする方法を実施するコンピュータプログラム製品であって、
少なくとも1つのノードを作成する動作であって、前記少なくとも1つのノードは、(i)所定の機能を実施する1つまたは複数の機能をそれぞれが備える1つまたは複数のソフトウェアコンポーネントオブジェクトと、(ii)前記1つまたは複数のソフトウェアコンポーネントオブジェクトとの対話を管理するコントローラオブジェクトとを含む動作と、
前記1つまたは複数のソフトウェアコンポーネントオブジェクトの1つまたは複数の機能の少なくとも1つの前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第1のソフトウェアコンポーネントオブジェクトを動的に識別する動作であって、前記第1のソフトウェアコンポーネントオブジェクトの識別は、どの特定の要求者にも関係なく前記要求についてのみ持続することができ、後の要求が前の要求者からのものである場合でも、前記後の要求に対して別のソフトウェアコンポーネントオブジェクトを動的に識別することを可能にする動作と、
前記第1のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を備えた前記方法を実施する機械実行可能命令を搬送するコンピュータ読取可能な媒体を備えたことを特徴とするコンピュータプログラム製品。 - 複数のソフトウェアコンポーネントオブジェクトが前記所定の機能に対する要求を満たすことができ、前記方法はさらに、
続いて前記所定の機能を要求する動作と、
前記所定の機能に対する要求を満たすことができる第2のソフトウェアコンポーネントオブジェクトを動的に識別する動作と、
前記第2のソフトウェアコンポーネントオブジェクトを呼び出す動作と
を含むことを特徴とする請求項19に記載のコンピュータプログラム製品。 - 前記少なくとも1つのノードは、複数のソフトウェアコンポーネントオブジェクトを含み、前記複数のソフトウェアコンポーネントオブジェクト自体は、相互に完全に独立し、互いを認識せず、前記方法はさらに、前記複数のソフトウェアコンポーネントオブジェクトの少なくとも2つの間の関係を定義する、プラットフォームに独立のロジックを設計する動作であって、前記ロジックは、処理フローおよび1つまたは複数の分岐条件の少なくとも1つを含む動作を含むことを特徴とする請求項19に記載のコンピュータプログラム製品。
- 前記少なくとも1つのノードはさらに、(i)プラットフォームに独立のロジック、(ii)1つまたは複数のソフトウェアコンポーネントオブジェクトの状態情報、および(iii)プラットフォームに独立のデータ、の少なくとも1つへのアクセスを提供するデータベースオブジェクトを備え、前記方法はさらに、前記データベースオブジェクトを通じて、前記プラットフォームに独立のロジック、前記状態情報、または前記プラットフォームに独立のデータのいずれかにアクセスする動作を含むことを特徴とする請求項20に記載のコンピュータプログラム製品。
- 前記少なくとも1つのノードの前記データベースオブジェクトは、プラットフォームに独立のロジックにアクセスし、前記方法はさらに、
前記プラットフォームに独立のロジックを実行する動作、および
前記所定の機能に対する要求を作成する動作
を含むことを特徴とする請求項22に記載のコンピュータプログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26346201P | 2001-01-22 | 2001-01-22 | |
US09/829,673 US20030208641A1 (en) | 1999-03-09 | 2001-04-10 | Software components as virtual processors |
PCT/US2002/001464 WO2002057886A2 (en) | 2001-01-22 | 2002-01-18 | Software components as virtual processors |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005501307A true JP2005501307A (ja) | 2005-01-13 |
Family
ID=26949870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002558104A Pending JP2005501307A (ja) | 2001-01-22 | 2002-01-18 | 仮想プロセッサとしてのソフトウェアコンポーネント |
Country Status (5)
Country | Link |
---|---|
US (1) | US20030208641A1 (ja) |
EP (1) | EP1354265A2 (ja) |
JP (1) | JP2005501307A (ja) |
CA (1) | CA2435393A1 (ja) |
WO (1) | WO2002057886A2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI113709B (fi) * | 2001-12-10 | 2004-05-31 | Nokia Corp | Menetelmä sulautetussa ympäristössä etälaitteen toiminnallisuuden järjestämiseksi |
US20040045009A1 (en) * | 2002-08-29 | 2004-03-04 | Bae Systems Information Electronic Systems Integration, Inc. | Observation tool for signal processing components |
US7765521B2 (en) * | 2002-08-29 | 2010-07-27 | Jeffrey F Bryant | Configuration engine |
US20040045007A1 (en) * | 2002-08-30 | 2004-03-04 | Bae Systems Information Electronic Systems Integration, Inc. | Object oriented component and framework architecture for signal processing |
JP4876438B2 (ja) * | 2005-05-31 | 2012-02-15 | 株式会社日立製作所 | コンポーネントソフトウェアの運用方法および運用基盤 |
US8171486B2 (en) * | 2005-09-21 | 2012-05-01 | Sap Ag | Conditionally accessing instances of software components from an un-synchronized pool |
US8224955B2 (en) | 2009-05-07 | 2012-07-17 | International Business Machines Corporation | Ensuring affinity at all affinity domains by folding at each affinity level possible for a partition spanning multiple nodes |
JP6273773B2 (ja) * | 2013-10-30 | 2018-02-07 | 富士ゼロックス株式会社 | 情報処理装置、情報処理システムおよびプログラム |
WO2024003583A1 (en) * | 2022-06-28 | 2024-01-04 | Citrix Systems,Inc | Optimizing selection of zero trust network access cloud edge nodes for internal application delivery |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5634122A (en) * | 1994-12-30 | 1997-05-27 | International Business Machines Corporation | System and method for multi-level token management for distributed file systems |
US5987513A (en) * | 1997-02-19 | 1999-11-16 | Wipro Limited | Network management using browser-based technology |
US9197599B1 (en) * | 1997-09-26 | 2015-11-24 | Verizon Patent And Licensing Inc. | Integrated business system for web based telecommunications management |
US6115646A (en) * | 1997-12-18 | 2000-09-05 | Nortel Networks Limited | Dynamic and generic process automation system |
US6363486B1 (en) * | 1998-06-05 | 2002-03-26 | Intel Corporation | Method of controlling usage of software components |
US6108703A (en) * | 1998-07-14 | 2000-08-22 | Massachusetts Institute Of Technology | Global hosting system |
US6408294B1 (en) * | 1999-03-31 | 2002-06-18 | Verizon Laboratories Inc. | Common term optimization |
US6370682B1 (en) * | 1999-09-15 | 2002-04-09 | Siemens Atkiengesellschaft | System and method for developing reusable flexible and platform independent software using components |
US6922832B2 (en) * | 2000-12-12 | 2005-07-26 | Lockheed Martin Corporation | Execution of dynamic services in a flexible architecture for e-commerce |
-
2001
- 2001-04-10 US US09/829,673 patent/US20030208641A1/en not_active Abandoned
-
2002
- 2002-01-18 JP JP2002558104A patent/JP2005501307A/ja active Pending
- 2002-01-18 WO PCT/US2002/001464 patent/WO2002057886A2/en active Search and Examination
- 2002-01-18 EP EP02702018A patent/EP1354265A2/en not_active Withdrawn
- 2002-01-18 CA CA002435393A patent/CA2435393A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CA2435393A1 (en) | 2002-07-25 |
WO2002057886A3 (en) | 2002-12-19 |
US20030208641A1 (en) | 2003-11-06 |
EP1354265A2 (en) | 2003-10-22 |
WO2002057886A2 (en) | 2002-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Weske | Business process management architectures | |
US7711784B2 (en) | Autonomic e-mail processing system and method | |
US6839733B1 (en) | Network system extensible by users | |
US7945671B2 (en) | Method and apparatus for middleware assisted system integration in a federated environment | |
US6816882B1 (en) | System and method for automatically negotiating license agreements and installing arbitrary user-specified applications on application service providers | |
JP4496067B2 (ja) | サービス指向アーキテクチャ向けのサービス・インターフェースを自動的に生成するための方法およびシステム | |
EP2561656B1 (en) | Servlet api and method for xmpp protocol | |
US8117056B2 (en) | Integrating special requests with a calendar application | |
US20030014554A1 (en) | Pluggable JMS providers in a J2EE server | |
US8762933B2 (en) | Converting business process models to component models in a service oriented architecture domain | |
US6816902B1 (en) | Method and system for improving workflow performance in workflow application systems | |
WO2021088641A1 (zh) | 数据发送方法、处理方法、接收方法及其设备、存储介质 | |
US20080091782A1 (en) | Method and system for delegating and managing tasks over instant messenger | |
US20100070553A1 (en) | Dynamic service invocation and service adaptation in bpel soa process | |
US8463852B2 (en) | Groupware portlets for integrating a portal with groupware systems | |
JP2002529994A (ja) | マルチメディア通信センタ内で対話の方向性を決定し起動する方法および装置 | |
WO2003032124A2 (en) | System and method for managing service interactions | |
JPH10513325A (ja) | 情報サービス提供及び管理 | |
JP2002529943A (ja) | マルチメディア通信センタ内で多様な対話パスをサポートするための方法および装置 | |
MXPA04002729A (es) | Transmision y recepcion de mensajes a traves de un canal de comunicacion y modelo de programacion adaptable. | |
JP2002529944A (ja) | マルチメディア通信センタ内で特別マルチメディアスレッドを作成するための方法および装置 | |
JP2005501307A (ja) | 仮想プロセッサとしてのソフトウェアコンポーネント | |
US20130080914A1 (en) | Storage and exposure of unified contacts based on match criteria | |
Montagut et al. | The pervasive workflow: A decentralized workflow system supporting long-running transactions | |
Cabri et al. | Implementing role-based interactions for internet agents |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061128 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070420 |