(57)【特許請求の範囲】
【請求項１】
記憶装置に記憶されたデータを１つまたは複数のメソッドのグループによる処理用にディスパッチできるコンピューティングシステムにおいて、前記コンピューティングシステムが、さらなる処理用に前記データを１つまたは複数のメソッドのグループへルールに基づいて決定的なディスパッチを実行する方法であって、前記データのディスパッチ先に関して競合する複数のルールが存在するにもかかわらず、前記ディスパッチは決定的に行われ、前記方法は、前記コンピュータシステムのプロセッサが、
処理対象であるデータにアクセスする動作と、
ルールのリストを評価して、前記データのディスパッチに適用する複数のルールを特定する動作であって、前記複数のルールのそれぞれは、条件と、前記データのディスパッチ先となる１つまたは複数のメソッドの異なるグループとを指定する動作と、
前記複数のルールを解釈して、前記データのディスパッチに適用される優勢なルールを特定する動作であって、
２つのルールを共に適用する場合にどちらのルールが他方のルールに優先するかを指定する前記２つのルールに含まれた条件の間に示された関係に基づく第１の優先順位付けメカニズムを適用する動作と、
前記第１の優先順位付けメカニズムを適用した結果、依然として複数のルールが残ることを判断し、当該判断に対して、固有識別子比較メカニズムである第２の優先順位付けメカニズムを適用する動作であって、各ルールは追加のフィールドとして固有識別子が事前に割り当てられており、適用するといかなる状況下でも前記複数のルールから唯一のルールが優勢になることを保証する第２の優先順位付けメカニズムを適用する動作と
を含む、優勢なルールを特定する動作と、
前記優勢なルールによって指定される１つまたは複数のメソッドのグループへ前記データをディスパッチする動作とを備えることを特徴とする方法。
【請求項２】
前記データはメッセージであり、前記データにアクセスする動作は、ネットワークを介して前記メッセージを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記１つまたは複数のメソッドのグループは単一のメソッドを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記データはシンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）エンベロープであることを特徴とする請求項１に記載の方法。
【請求項５】
前記リストまたはルールはＸＰＡＴＨステートメントを用いて表されることを特徴とする請求項４に記載の方法。
【請求項６】
前記リストまたはルールはＸＰＡＴＨステートメントを用いて表されることを特徴とする請求項１に記載の方法。
【請求項７】
前記ルールのリストを修正する命令にアクセスする動作と、
前記命令に応答して前記ルールのリストを自動的に修正する動作とをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
記憶装置に記憶されたデータを１つまたは複数のメソッドのグループによる処理用にディスパッチできるコンピューティングシステムのプロセッサに対し、さらなる処理用に前記データを１つまたは複数のメソッドのグループへルールに基づいて決定的にディスパッチする方法であって、前記データのディスパッチ先に関して競合する複数のルールが存在するにもかかわらず、前記ディスパッチは決定的に行われ、
処理対象であるデータにアクセスする動作と、
ルールのリストを評価して、前記データのディスパッチに適用する複数のルールを特定する動作であって、前記複数のルールのそれぞれは、条件と、前記データをディスパッチすべき１つまたは複数のメソッドの異なるグループを指定する動作と、
前記複数のルールを解釈して、前記データのディスパッチに適用される優勢なルールを特定する動作であって、
２つのルールの両方を適用する場合にどちらのルールが他方のルールに対して優勢であるかを指定する前記２つのルールに含まれた条件の間に示された関係に基づく第１の優先順位付けメカニズムを適用する動作と、
前記第１の優先順位付けメカニズムを適用した結果、依然として複数のルールが残ることを判断し、当該判断に対して、固有識別子比較メカニズムである第２の優先順位付けメカニズムを適用する動作であって、各ルールは追加のフィールドとして固有識別子が事前に割り当てられており、適用するといかなる状況下でも前記複数のルールから唯一のルールが優勢になることを保証する第２の優先順位付けメカニズムを適用する動作と
を含む、優勢なルールを特定する動作と、
前記優勢なルールによって指定される１つまたは複数のメソッドの前記グループへ前記データをディスパッチする動作とを含む方法を実行させることを特徴とするコンピュータプログラム。
【請求項９】
前記データはメッセージであり、前記データにアクセスする動作は、ネットワークを介して前記メッセージを受信する動作を含むことを特徴とする請求項８に記載のコンピュータプログラム。
【請求項１０】
プロセッサと、
システムメモリと、
ルールのリストを記憶したコンピュータ可読メディアとを含むコンピューティングシステムであって、
各ルールは、条件と、前記条件が満たされた場合に記憶装置に記憶されたデータをディスパッチすべき１つまたは複数のメソッドのグループとを指定し、前記１つまたは複数のコンピュータ可読メディアは、前記１つまたは複数のプロセッサによって実行されると、前記システムメモリ内で前記プロセッサを、
データにアクセスし、前記ルールのリストを評価して、前記データのディスパッチに適用される複数のルールを特定するように構成された比較モジュール、
競合するルールのどれが優先するかを特定するように構成された複数の優先順位付けメカニズムであって、
２つのルールの両方を適用する場合にどちらのルールが他方のルールに対して優勢であるかを指定するように、前記２つのルールに含まれた条件の間に示された関係に基づく第１の優先順位付けメカニズムと、
前記第１の優先順位付けメカニズムを適用した結果、依然として複数のルールが残る場合に適用される固有識別子比較メカニズムである第２の優先順位付けメカニズムであって、各ルールは追加のフィールドとして固有識別子が事前に割り当てられており、適用するといかなる状況下でも前記複数のルールから唯一のルールが優勢になることを保証する第２の優先順位付けメカニズムと
を含む優先順位付けメカニズム、
前記複数の優先順位付けメカニズムを使用して、前記データのディスパッチに適用される前記優勢なルールを特定するように構成されたレゾリューションモジュール、および
前記優勢なルールによって指定された前記１つまたは複数のメソッドのグループへ前記データをディスパッチするように構成されたディスパッチングメカニズムとして機能させる、コンピュータで実行可能な命令をさらに記憶したことを特徴とするコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピューティング技術に関し、より詳細にはオブジェクトを特定のコードへルールに基づいて決定的にディスパッチするためのメカニズムに関する。
【背景技術】
【０００２】
コンピューティング技術は、我々の仕事と娯楽のあり方に変化をもたらしてきた。今日のコンピューティングシステムは、デスクトップコンピュータ、ラップトップコンピュータ、タブレットＰＣ、携帯情報端末（ＰＤＡ）、家電装置など、多様な形態をとっている。コンピューティングシステムは、その最も基本的な形態において、システムメモリと１つまたは複数のプロセッサとを含む。システムメモリ内のソフトウェアはプロセッサによって実行され、コンピューティングシステムの他のハードウェアに指示して希望の機能を実行させることができる。
【０００３】
ソフトウェアはきわめて複雑になる場合があり、何千、あるいは何百万行ものソースコードからコンパイルまたはインタープリットされることも多い。ソフトウェア開発プロセスに何らかの秩序を与えるため、タスクを、より具体的なアクションを実行する管理可能なサブルーチンやメソッドに分割することができる。次いでメソッドは、ソフトウェアのより複雑な機能を実行するために全体として相互に関連付けられている。これらのメソッドは、しばしば処理用の１つまたは複数のデータ構造を受け取る。
【０００４】
さらなる処理用にデータ構造をどのメソッドが受け取るべきかを決定することは、ソフトウェアの複雑さによって、軽視できないタスクとなる場合が多い。たとえばネットワークサービスは、メッセージを受信する際、そのメッセージのディスパッチ先となる可能性のある多数のメソッドから１つを選択しなければならないことが多い。
【０００５】
従来のシステムでは、こうした状況下でルールに基づいたディスパッチを採用する場合が多い。具体的には、条件とデータ構造のディスパッチ先となるメソッドとのマッピングを提供するルールのリストが保持される。こうした環境下で当てはまる条件とルールは複数存在する場合が多い。したがって、最終的にどのメソッドがデータ構造を処理することになるか（または処理しているか）を決定的な方法で予測することは困難である。データ構造の処理中に万一システムのパフォーマンスに狂いが生じた場合、パフォーマンスの狂いを引き起こしているコードを容易に特定できない可能性があるため、システムをデバッグすることは困難であろう。
【０００６】
さらに従来のシステムでは、ルールのリストは、実行可能なディスパッチコード内に統合される。したがってリストまたはルールの修正は、ソースコードの修正、再コンパイル、およびディスパッチコードの再配布を伴う。これは、相当な時間とリソースを必要とする場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、ルールに基づいてディスパッチを行うためのメカニズムが実現し、複数のディスパッチルールが当てはまる場合にどのコードがデータ構造を処理するかが予測しやすくなり、ルールをより動的に変更できるようになれば、有利であろう。
【課題を解決するための手段】
【０００８】
従来技術に関する前述の問題は本発明の原理によって克服され、本発明の原理は、１つまたは複数のメソッドのグループによる処理用にデータ構造（メッセージ内に存在する情報を含むデータ構造など）をディスパッチできるコンピューティングシステム内で実施することができる。コンピューティングシステムは、さらなる処理用にデータ構造を１つまたは複数のメソッドのグループへルールに基づいて決定的にディスパッチする。データ構造のディスパッチ先に関して競合する複数のルールが存在するにもかかわらず、このディスパッチは決定的に行われる。
【０００９】
コンピューティングシステムは、処理対象であるデータ構造にアクセスすると、ルールのリストを評価して、データ構造のディスパッチに適用する複数のルールを特定する。これら複数のルールのそれぞれは、データ構造のディスパッチ先となる１つまたは複数のメソッドの異なるグループを指定する。コンピューティングシステムは、これらのルールを、データ構造のディスパッチに適用される単一の優勢なルールに解決する。次いでコンピューティングシステムは、優勢なルールによって指定される１つまたは複数のメソッドのグループへデータ構造をディスパッチする。
【００１０】
ルールの評価および優先順位付けが決定的に行われるため、１つまたは複数のメソッドのどのグループがデータ構造を処理するかを再構成することができる。次いでメソッドが分かっているため、万一データ構造の処理中にパフォーマンスに狂いが生じた場合でも、デバッグが大いに単純化される。さらにルールのリストは、実際のディスパッチコードから独立して保持することができる。たとえばルールのリストは、ＸＰＡＴＨステートメントを用いるか、または他の任意の構造化された方法で表すことができる。ルールの変更は、リストへのルールの追加または削除、あるいはリスト内のルールの修正を伴うだけである。これによって、絶え間なく変化するリアルタイムな環境に対応してルールをより動的に更新することができる。
【００１１】
本発明のさらなる特徴および利点については、以降の記述において説明する。一部はその記述から明らかとなり、また一部は本発明を実施することによって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘された手段およびその組合せによって実現および享受することができる。本発明のこれらの特徴および他の特徴については、以降の記述および添付の特許請求の範囲からよりいっそう明らかになり、あるいは以降で説明するように本発明を実施することによって知ることができる。
【００１２】
本発明の前述の利点および特徴ならびに他の利点および特徴を享受できる方法について説明するため、添付の図面に示される特定の実施形態を参照することによって、簡単に前述した本発明に関してより具体的な説明を行う。これらの図面は本発明の典型的な実施形態のみを示しており、したがってその範囲を限定するものとみなすべきではないことを理解しつつ、添付の図面を使用して本発明についてさらに具体的かつ詳細に記載および説明する。
【発明を実施するための最良の形態】
【００１３】
本発明の原理は、さらなる処理用にデータ構造を１つまたは複数のメソッドのグループへルールに基づいて決定的にディスパッチするためのメカニズムに関する。コンピューティングシステムは、処理対象であるデータ構造にアクセスすると、ルールのリストを評価して、データ構造のディスパッチに適用する複数のルールを特定する。これら複数のルールのそれぞれは、データ構造のディスパッチ先となる１つまたは複数のメソッドの異なるグループを指定する。コンピューティングシステムは、これらのルールを、データ構造のディスパッチに適用される単一の優勢なルールに帰着させる。次いでコンピューティングシステムは、優勢なルールによって指定される１つまたは複数のメソッドのグループへデータ構造をディスパッチする。ルールの評価および優先順位付けが決定的に行われるため、１つまたは複数のメソッドのどのグループがデータ構造を処理するかを再構成することができる。次いでメソッドを把握することができるため、データ構造の処理中に万一パフォーマンスに狂いが生じた場合でも、デバッグが大いに単純化され、これによって、絶え間なく変化するリアルタイムな環境に対応してルールをより動的に更新することができる。
【００１４】
図面に目を転じると、同様の参照番号は同様の要素を指し、本発明は、適切なコンピューティング環境内に実装されるものとして図示されている。以降の説明は、本発明の図示された実施形態に基づくものであり、本明細書では明示していない代替実施形態に関して本発明を限定するものとみなすべきではない。
【００１５】
以降の説明では、特段の記載がない限り、１つまたは複数のコンピュータによって実行される動作および動作を記号として表記し、本発明について説明する。そのようなものとして、「コンピュータ実行可能」と呼ばれることもあるこうした動作および動作は、構造化された形式でデータを表す電気信号に対するコンピュータの処理装置による処理を含むことは理解できるであろう。この操作によって、データは変換されるか、またはコンピュータのメモリシステム内のロケーションに保持され、これによって、コンピュータの動作は当業者に周知の方法で再構成されるか、またはその他の形で変更される。データが保持されるデータ構造は、データのフォーマットによって定義される特定のプロパティを有するメモリの物理ロケーションである。しかしながら、前述の環境において本発明の説明を行ってはいるが、当業者が理解できるように、これは本発明を限定するものではなく、以降で説明する動作および動作のいくつかはハードウェア内で実施することもできる。図１は、これらの装置用に使用できるコンピュータアーキテクチャの例を示す概略図である。
【００１６】
説明上の目的から、示したアーキテクチャは適切な環境の一例にすぎず、本発明の使用または機能性の範囲に関して何らかの限定を意図するものではない。コンピューティングシステムも、図１に示すコンポーネントのいずれか１つまたはその組合せに関して何らかの依存性または必要性を有するものと解釈すべきではない。
【００１７】
本発明は、他の多くの汎用または専用のコンピューティング環境または構成あるいは通信環境または構成で使用することができる。本発明と共に使用するのに適したコンピューティングシステム、環境、および構成のよく知られた例としては、携帯電話、ポケットコンピュータ、パーソナルコンピュータ、サーバ、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、ミニコンピュータ、メインフレームコンピュータ、およびこれらのシステムまたは装置のいずれかを含む分散コンピューティング環境などがあるが、これらには限定されない。
【００１８】
その最も基本的な構成において、コンピューティングシステム１００は通常、少なくとも１つの処理装置１０２およびメモリ１０４を含む。メモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこの両者の何らかの組合せとすることができる。この最も基本的な構成は、破線１０６によって図１に示されている。
【００１９】
ストレージメディア装置は、さらなる特徴および機能性を有することができる。たとえば、ストレージメディア装置は追加のストレージ（リムーバブルおよび固定）を含むことができ、これにはＰＣＭＣＩＡカード、磁気ディスクおよび光ディスク、ならびに磁気テープなどが含まれるが、これらには限定されない。こうした追加のストレージは、リムーバブルストレージ１０８および固定ストレージ１１０によって図１に示されている。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報記憶用の何らかの方法または技術によって実装される揮発性および不揮発性の、リムーバブルおよび固定のメディアを含む。メモリ１０４、リムーバブルストレージ１０８、および固定ストレージ１１０は、すべてコンピュータストレージメディアの例である。コンピュータストレージメディアには、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、他のメモリテクノロジ、ＣＤ−ＲＯＭ、デジタル多用途ディスク、他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、他の磁気ストレージ装置、および所望の情報を記憶するために使用可能でコンピューティングシステムによってアクセス可能な他の任意のメディアなどが含まれるが、これらには限定されない。
【００２０】
本明細書で使用するように、用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行するソフトウェアオブジェクトまたはルーチンを指す場合がある。本明細書に記載する異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で実行するオブジェクトまたはプロセスとして（たとえば、別個のスレッドとして）実装することができる。本明細書に記載するシステムおよびメソッドはソフトウェアに実装することが好ましいが、ソフトウェアとハードウェアの組合せへの実装やハードウェア単体への実装も可能であり考えられる。
【００２１】
コンピューティングシステム１００は通信チャネル１１２を含むこともでき、これによってホストはネットワーク１２０を介して他のシステムおよび装置と通信することができる。通信チャネル１１２は通信メディアの例である。通信メディアは通常、搬送波や他のトランスポートメカニズムなどの変調されたデータ信号でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実施し、何らかの情報伝達メディアを含む。通信メディアは、たとえば有線ネットワークおよび直接の有線接続などの有線メディアと、音響メディア、電波メディア、赤外線メディア、および他の無線メディアなどの無線メディアとを含むが、これらには限定されない。本明細書で使用するコンピュータ可読メディアという用語は、ストレージメディアと通信メディアの両方を含む。
【００２２】
コンピューティングシステム１００は、キーボード、マウス、ペン、音声入力コンポーネント、タッチ入力装置などの入力コンポーネント１１４を有することもできる。出力コンポーネント１１６は、スクリーンディスプレイ、スピーカ、プリンタ等と、それらを駆動するレンダリングモジュール（しばしば「アダプタ」とも呼ばれる）を含む。コンピューティングシステム１００は、電源装置１１８を含む。これらのコンポーネントは、すべて当技術分野でよく知られたものであり、ここで詳細に解説する必要はない。
【００２３】
図２は、本発明の原理によってルールに基づいて決定的にディスパッチを行うために協調的に対話できるさまざまなコンポーネント２００を示す。さまざまなコンポーネントは、図１のコンピューティングシステム１００の環境で実装された場合、メモリ１０４内でインスタンス化する（ｉｎｓｔａｎｔｉａｔｅ）ことができ、ならびに／または、たとえばリムーバブルストレージ１０８および／または固定ストレージ１１０などの永続メモリ内で維持することができる。
【００２４】
さまざまなコンポーネント２００は、ディスパッチルールのリスト２０３を含む。リスト２０３は、任意の数のディスパッチルールを含むことができる。しかし、図示した実施形態では、リスト２０３はルール２０３Ａ、２０３Ｂ、および２０３Ｃを含み、可能性のあるその他のルールが、縦に並んだ楕円２０３Ｄによって示されている。各ルールは、条件と、その条件が満たされた場合にデータ構造のディスパッチ先となる１つまたは複数のメソッドのグループとを指定する。たとえば、ルール２０３Ａは条件２０３ＡＡおよびメソッド２０３ＡＢを指定し、ルール２０３Ｂは条件２０３ＢＡおよびメソッド２０３ＢＢを指定し、ルール２０３Ｃは条件２０３ＣＡおよびメソッド２０３ＣＢを指定する。指定されるこれらのメソッドは、単一のメソッドとすることもできるし、特定の順序で実行されるメソッドのグループとすることもできる。
【００２５】
比較モジュール２０２はデータ構造２０１にアクセスし、ルールのリスト２０３を評価して、データ構造のディスパッチに適用される複数のルール２０４を特定する。次いで、適用可能なルール２０４は、レゾリューションモジュール２０５に対して特定される。データ構造２０１は、たとえば受信されたメッセージ（ＳＯＡＰメッセージなど）とすることもできるし、あるいは比較モジュール２０２によってアクセスできる他の任意のデータ構造とすることもできる。比較モジュール２０２は、あるルールに対応する条件が満たされれば、そのルールを適用可能と識別する。条件は、データ構造２０１の構造的な特徴、データ構造２０１の内容、環境条件（時間やコンピュータワークロードなど）、または他の任意の要因に基づくことができる。
【００２６】
レゾリューションモジュール２０５は、任意の数の優先順位付けメカニズム２０６を含み、この優先順位付けメカニズム２０６は、競合する多数のルールがある場合に、優先すべきより少数のルールを特定するように構成されている。図示した実施形態では、優先順位付けメカニズム２０６は、優先順位付けメカニズム２０６Ａ、２０６Ｂ、および２０６Ｃを含むものとして図示され、可能性のあるその他の優先順位付けメカニズムが、縦に並んだ楕円２０６Ｄによって示されている。優先順位付けメカニズムの少なくとも１つは、複数の競合するルールがある場合に唯一のルールが優勢になることを保証するように構成される。このことを保証する優先順位付けメカニズムは、右側にアステリスクを有する優先順位付けモジュール２０６Ｃによって図２に示されている。
【００２７】
レゾリューションモジュール２０５は優先順位付けメカニズム２０６を使用して、データ構造２０１のディスパッチに適用される優勢なルール２０７を特定する。次いでディスパッチングメカニズム２０８は、優勢なルール２０７を使用して、少なくともデータ構造の修正版２０１’を、実行対象となる対応する１つまたは複数のメソッド２０９へ決定的にディスパッチする。この例では、データ構造は単一のメソッドへディスパッチされるのではなく、メソッド２０９Ａから２０９Ｄによる処理用にディスパッチされる。
【００２８】
これらのメソッドの中には、必ずしもその必要はないが、他のルールによる処理用に指定できるものもある。たとえば、ルール２０３Ａが優勢なルール２０７であり、データ構造はメソッド２０９へディスパッチされるべきであると指定する。メソッド２０９Ａは、他のルール２０３Ｂ、２０３Ｃ、および２０３Ｄ用に同様に実行されるディスパッチメソッドのグループの一部として実行されるメソッドとすることができる。したがってディスパッチメソッドは、複数のルール用の１つまたは複数のディスパッチメソッドのグループが異なっていても、これらのルールの間で共用することができる。ディスパッチされるデータ構造２０１’は、必要に応じて何らかの修正を加えることはできるが、比較モジュール２０２によってアクセスされるデータ構造２０１と同じ構造にすることができる。
【００２９】
ルールの評価および優先順位付けが決定的に行われるため、１つまたは複数のメソッドのどのグループがデータ構造を処理したかを再構成することができる。次いでメソッドを把握することができるため、データ構造の処理中に万一パフォーマンスにずれが生じた場合でも、デバッグが大いに単純化される。
【００３０】
図３は、コンピューティングシステムがさらなる処理用にデータ構造を１つまたは複数のメソッドのグループへルールに基づいて決定的にディスパッチする方法３００を示すフローチャートである。処理対象であるデータ構造にアクセスすると（たとえば、メッセージを受信すると）（動作３０１）、ルールのリストを使用してデータ構造を１つまたは複数のメソッドのグループへ決定的にディスパッチするための機能的で結果指向のステップ（ステップ３１０）が実行される。これは、この結果を達成する対応する任意の動作を含むことができる。しかし図示した実施形態では、ステップ３１０は、対応する動作３１１、３１２、３１３を含む。
【００３１】
具体的には、ディスパッチルールのリストを評価して、データ構造のディスパッチに適用される複数のルールを特定する（動作３１１）。前述のように、複数のルールのそれぞれが、条件が一致した場合にデータ構造のディスパッチ先となる１つまたは複数のメソッドの異なるグループを指定する。一実施形態では、条件はＸＰＡＴＨステートメントを用いて表すことができる。このことは、もしもデータ構造がＳＯＡＰエンベロープであった場合に特に有用になることがある。
【００３２】
次いで複数のルールが解釈（ｒｅｓｏｌｖｅ）されて、データ構造のディスパッチに適用される優勢なルールが特定される（動作３１２）。次いで、優勢なルールによって指定されるようにデータ構造をディスパッチすることができる（動作３１３）。一実施形態では、必ずしもその必要はないが、データ構造上で処理されるメソッドをディスパッチングメカニズムと同一のコンピューティングシステム上に置くことができる。たとえば、ディスパッチングメカニズム２０８はコンピューティングシステム１００上に置くことができ、その一方でメソッド２０９はネットワーク１２０上の別のコンピューティングシステム上で実行することができる。もしもメソッド２０９が別のコンピューティングシステム上に置かれていた場合、データ構造２０１’をディスパッチするステップは、ネットワーク１２０を介してデータ構造２０１’を他のコンピューティングシステムへ送信するステップを含むことができる。図３の方法は、データ構造がアクセスされるたびに繰り返すことができる。
【００３３】
図４は、複数のルールを単一の優勢なルール４００に帰着させる方法を示すフローチャートであり、図３の動作３１２をより詳細に示す例である。まず、優先順位付けメカニズムを複数の適用可能なルールに適用する（動作４０１）。次いで、優先順位付けメカニズムを適用した結果が単一の優勢なルールに帰着したかどうかを判定する（判定ブロック４０２）。単一の優勢なルールに帰着した場合（判定ブロック４０２で「はい」の場合）、方法４００は終了する。そうでない場合（判定ブロック４０２で「いいえ」の場合）は、このプロセスを繰り返し、最終的に唯一の優勢なルールに至るまで、異なる優先順位付けメカニズムを適用し続ける。最後の優先順位付けメカニズムは、最終的に唯一の優勢なルールに至ることを保証するため、単一の優勢なルールを保証するアルゴリズムを適用することができる。
【００３４】
優先順位付けメカニズムの例としては優勢明示（ｅｘｐｒｅｓｓ  ｄｏｍｉｎａｎｃｅ）メカニズムがあり、このメカニズムでは２つの条件の間に明示された関係があるため、この関係によって、２つのルールを共に適用する場合にどちらのルールが他方のルールに優先するかが指定される。
【００３５】
別の例としては優先順位付けレベルメカニズムがあり、このメカニズムではルールに優先順位レベルを割り当てるため、そのルールが優先順位の低い他のいかなるルールにも優先する。
【００３６】
さらに別の例としては固有識別子比較メカニズムがあり、このメカニズムでは条件用に固有識別子を使用する。この固有識別子は、優先順位の序列を示すリストに記憶することができ、リスト上でより高い固有識別子を有する条件は、リスト上でより低い固有識別子を有する条件に優先する。固有識別子比較メカニズムの一例は、ルールの表現をアルファベット順に並べるステップを含むことができる。別の例では、各ルールは追加のフィールドとして固有識別子を割り当てられる。この固有識別子比較メカニズムは、優勢なルールを保証する優先順位付けメカニズムの一例である。
【００３７】
したがって本発明の原理によって、ルールに基づいた決定的なディスパッチが可能となる。さらにディスパッチルールのリスト２０３は、実際のディスパッチコードとは独立して保持することができる（たとえば比較モジュール２０３、レゾリューションモジュール２０５、優先順位付けメカニズム２０７、およびディスパッチングメカニズム２０８）。たとえばルールのリストは、ＸＰＡＴＨステートメントまたは他の任意の構造化された方法を用いて表すことができる。ルールの変更は、リストへのルールの追加や、リストからのルールの削除、またはリスト内のルールの修正を伴うにすぎない。
【００３８】
本発明は、その趣旨や本質的特徴から逸脱することなく他の特定の形態で具体化することができる。説明した実施形態は、すべての点において、限定的なものではなく例示的なものとみなされるべきである。したがって本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および均等の範囲に収まるすべての変更は、特許請求の範囲に包含される。
【図面の簡単な説明】
【００３９】
【図１】本発明の特徴を実施できる適切なコンピューティングシステムを示す図である。
【図２】本発明の原理によってルールに基づいて決定的にディスパッチを行うために協調的に対話できるさまざまなコンポーネントを示す図である。
【図３】コンピューティングシステムが本発明の原理によってルールに基づいて決定的にデータ構造をディスパッチする方法を示すフローチャートである。
【図４】複数のルールを単一の優勢なルールに帰着させる方法を示すフローチャートである。
【符号の説明】
【００４０】
１０２  処理装置
１０４  システムメモリ
１０８  リムーバブルストレージ
１１０  固定ストレージ
１１２  通信チャネル
１１４  入力コンポーネント
１１６  出力コンポーネント
１１８  電源装置
１２０  ネットワーク
２０１    データ構造
２０１’  データ構造
２０２    比較モジュール
２０３    ディスパッチルール
２０４    適用可能なルール
２０５    レゾリューションモジュール
２０６    優先順位付けメカニズム
２０７    優勢なルール
２０８    ディスパッチングメカニズム
２０９    １つまたは複数のメソッド
【図１】
0004820553.tif 000002
【図２】
0004820553.tif 000003
【図３】
0004820553.tif 000004
【図４】
0004820553.tif 000005