(57)【要約】  アプリケーションのデータ管理を容易にし、エンドユーザによってエンドユーザのためにアプリケーションがパーソナル化されるようにする規則アーキテクチャ。含まれるのは、アプリケーション生成イベントのエンドユーザへの公開を容易にするカスタマイズコンポーネントである。規則コンポーネントは、エンドユーザがそのイベントを処理するために１つまたは複数の規則を作成できるようにし、１つまたは複数の規則は、外部および内部処理のためのイベントに関連付けられたアプリケーションデータの送信を容易にする。
2007537511.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション生成イベントのエンドユーザへの公開を容易にするカスタマイズコンポーネントと、
前記エンドユーザが、前記イベントを処理するための１つまたは複数の規則を作成できるようにする規則コンポーネントであって、前記１つまたは複数の規則は、処理のための、前記イベントに関連付けられたアプリケーションデータの送信を容易にする規則コンポーネントと
を備えることを特徴とするアプリケーションのデータ管理を容易にするシステム。
【請求項２】
前記イベントは規則に基づく決定点と関連付けられることを特徴とする請求項１に記載のシステム。
【請求項３】
前記アプリケーションデータは、前記アプリケーションの挙動を変更する結果を前記アプリケーションに戻すように、少なくとも外部または内部の一方で処理されることを特徴とする請求項１に記載のシステム。
【請求項４】
前記エンドユーザは、前記イベントがどのように処理され、前記アプリケーションがどのようにカスタマイズされるか定義する明示的規則を作成することを特徴とする請求項１に記載のシステム。
【請求項５】
前記アプリケーションのエンドユーザ挙動の学習を円滑化し、規則の形で前記挙動を取り込む学習コンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項６】
前記エンドユーザは、前記１つまたは複数の規則を明示的に変更することができることを特徴とする請求項１に記載のシステム。
【請求項７】
前記アプリケーションは、前記エンドユーザがそこで前記アプリケーションの挙動をカスタマイズすることのできる決定点である項目を公開することを特徴とする請求項１に記載のシステム。
【請求項８】
前記アプリケーションは、前記１つまたは複数の規則がそこで適用される前記決定のコンテキストを識別する名前を公開することを特徴とする請求項７に記載のシステム。
【請求項９】
前記アプリケーションは、入力データ型および期待される結果の種類を記述するシグネチャを公開することを特徴とする請求項７に記載のシステム。
【請求項１０】
前記決定点は、前記アプリケーションがインストールされるときに登録されることを特徴とする請求項７に記載のシステム。
【請求項１１】
前記カスタマイズコンポーネントは、前記アプリケーションのカスタマイズのための、ゆるく束縛されたモデルときつく束縛されたモデルの一方の選択を容易にすることを特徴とする請求項１に記載のシステム。
【請求項１２】
きつく束縛されたアプリケーションは、前記エンドユーザによって作成された前記１つまたは複数の規則のサブセットを選択し、前記サブセットを直接実行してカスタマイズ決定を生成することを特徴とする請求項１に記載のシステム。
【請求項１３】
前記アプリケーションは、行われる決定の性質を識別する名前と、所有アプリケーションを識別するアプリケーション名と、前記決定点に許容される規則の種類を識別する規則制約条件とを提供する決定点を公開することを特徴とする請求項１に記載のシステム。
【請求項１４】
請求項１に記載のシステムを実行するコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
【請求項１５】
請求項１に記載のコンポーネントを格納していることを特徴とするコンピュータ可読媒体。
【請求項１６】
請求項１にシステムを用いることを特徴とするコンピュータ。
【請求項１７】
アプリケーション生成決定点のエンドユーザへの公開によって、前記エンドユーザによるアプリケーションのカスタマイズを容易にするカスタマイズコンポーネントと、
前記決定点と関連付けるための前記エンドユーザによる１つまたは複数の規則の作成を容易にする規則コンポーネントであって、前記１つまたは複数の規則は、外部処理のための、前記決定点に関連付けられたアプリケーションデータの送信を容易にする規則コンポーネントと
を備えることを特徴とするアプリケーションのデータ管理を容易にするシステム。
【請求項１８】
エンドユーザは、前記１つまたは複数の規則を明示的に変更することができることを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記アプリケーションは、前記１つまたは複数の規則がそこで適用される前記決定点のコンテキストを識別する名前と、入力データ型および期待される結果の種類を記述するシグネチャとを公開することを特徴とする請求項１７に記載のシステム。
【請求項２０】
前記アプリケーションは、前記１つまたは複数の規則を直接実行して、カスタマイズ決定を生成することを特徴とする請求項１７に記載のシステム。
【請求項２１】
前記アプリケーションは、１つまたは複数の正しい規則セットを、前記アプリケーションに対応する前記１つまたは複数の正しい規則セットの問い合わせに従って識別することを特徴とする請求項１７に記載のシステム。
【請求項２２】
前記問い合わせは、前記アプリケーション、ユーザ、決定、および前記１つまたは複数の規則に提供される入力に対応することを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記決定点は、呼び出し側アプリケーションによって呼び出される決定点入力メソッドに関連付けられることを特徴とする請求項２１に記載のシステム。
【請求項２４】
前記規則コンポーネントは、所与の呼び出しおよび特定の入力にどの規則を走らせるかフィルタにかける規則制約条件を、前記決定点と関連付けることを容易にすることを特徴とする請求項１７に記載のシステム。
【請求項２５】
アプリケーションのアプリケーション生成決定点を公開すること、
前記決定点のデータ上で動作する１つまたは複数の規則を作成すること、
前記１つまたは複数の規則を前記決定点と関連付けること、および
外部処理のために前記データを公開するように前記１つまたは複数の規則を処理すること
を備えることを特徴とするアプリケーションのエンドユーザカスタマイズを容易にする方法を実行するコンピュータ実行可能命令を備えるコンピュータ可読媒体。
【請求項２６】
前記１つまたは複数の規則を直接実行してカスタマイズ決定を生成することをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記アプリケーションに対応する１つまたは複数の正しい規則を問い合わせすることをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２８】
前記エンドユーザは、前記１つまたは複数の規則を明示的に変更することを特徴とする請求項２５に記載の方法。
【請求項２９】
呼び出し側アプリケーションによって呼び出される決定点入力メソッドを呼び出すことをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項３０】
前記決定点に関連付けられた規則制約条件を処理することによって、所与の呼び出しでどの規則を走らせるかフィルタにかけることをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項３１】
前記１つまたは複数の規則がそこで適用される前記決定点のコンテキストを識別する名前、および入力データ型および期待される結果の種類を記述するシグネチャを公開することをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項３２】
規則制約条件を前記決定点および前記規則の１つまたは複数と関連付けることをさらに備えることを特徴とする請求項２５に記載の方法。
【請求項３３】
前記１つまたは複数の規則上で実行メソッドを直接呼び出す動作と、
前記１つまたは複数の規則への入力である入力項目を渡す動作と、
入力および出力を実施する規則制約条件を渡す動作と
をさらに備えることを特徴とする請求項２５に記載の方法。
【請求項３４】
アプリケーションのアプリケーション生成決定点を公開すること、
エンドユーザにより、前記アプリケーションのデータ上で動作する１つまたは複数の規則を作成すること、
第１のモードでは、前記１つまたは複数の規則を決定点に添付し、処理のために前記データを公開するために前記決定点の項目上でメソッドを呼び出すこと、および
第２のモードでは、前記アプリケーションでの正しい１つまたは複数の規則を識別し、処理のために前記データを公開するように前記正しい１つまたは複数の規則を直接処理すること
を備えることを特徴とするアプリケーションのエンドユーザカスタマイズを容易にする方法。
【請求項３５】
前記決定点に関連付けられた規則制約条件を処理することによって、所与の呼び出しで前記１つまたは複数の規則のどれを走らせるかフィルタにかけることをさらに備えることを特徴とする請求項３４に記載の方法。
【請求項３６】
前記アプリケーションのエンドユーザカスタマイズのために前記第１のモードと前記第２のモードの両方を用いることをさらに備えることを特徴とする請求項３４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションカスタマイズを容易にするソフトウェアに関し、より詳細には、エンドユーザによるアプリケーションカスタマイズを容易にする規則抽象化アーキテクチャに関する。
【背景技術】
【０００２】
コンピュータおよびコンピューティングは、常に、ユーザ界を２つのクラスに分けてきた。すなわち、コンピュータを複雑なやり方で使用し、プログラムを作成し、有益で豊富な挙動を使用可能にする方法を知っている博識な「指導者」と、それらに翻弄され、知識や情報、あるいはコンピュータをその必要に適切に役立たせるための教育への容易な、または安価でのアクセスを拒まれた、初心者とである。しかしながら、技術がこうしたアクセスに対する障壁のいくつかを克服すると、コンピューティングにおける大きな進展が起こった。
【０００３】
メインフレームの世界においては、コンピュータは、最大規模の企業以外のすべてにとってあまりに高価で入手困難であった。ミニコンピュータ、次いでパーソナルコンピュータ（ＰＣ）の到来により、コスト障壁が打破され、コンピュータが小規模企業および個人にも利用可能になった。
【０００４】
１９８０年代に、プログラマらは、グラフィカルユーザインターフェイス（ＧＵＩ）アプリケーションを構築しようと奮闘し、豊富で一貫したＧＵＩなくしては、ＰＣユーザの用の有益なアプリケーションを構築することができなかった。ビジュアルベーシック革命、ならびにコントロールの使用およびイベントベースのＧＵＩ構築は、おびただしい数のアプリケーション開発者が、豊富なアプリケーションを容易に構築することを可能にした。これは、また、これらのアプリケーションを利用し得るさらに多くのエンドユーザを伴った好循環も確立した。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
１９９０年代に、エンドユーザは、情報へのアクセスの欠如を克服しようと奮闘した。インターネットおよびＷｅｂの発展は、この空間を変容させ、ブラウザを用いてだれもがほとんどすべての有益な情報にアクセスできるようにした。しかしながら、依然として克服すべき重大な障壁がある。
【０００６】
コンピューティングは個人的ではない。ＰＣに関して、真に「個人的」なものはごくわずかである。ローカルディスク上のデータは個人的である。しかし、マシンの挙動（それがユーザに代わって行うこと）は、何百万ものユーザにわたってほぼ同一である。驚くほど強力な汎用コンピュータを所有しているにもかかわらず、平均的ユーザはそれを、通信端点として役立ち、サーチ入力点として役立ち、いくつかの組み込みの大衆市場向けアプリケーションを実行するのに役立つが、それ以外には、その言葉の真の意味でのどんな「パーソナルコンピューティング」も行うことのできない静的ツールとして扱う。現行のアプリケーションで利用可能なパーソナル化機能は、単に、可能で望ましいことの上っ面をなでているだけである。
【０００７】
コンピューティングは手動式である。最も典型的なコンピュータエンドユーザの日常業務を考察する。ＰＣは、情報を収集し、通信に反応し、意思決定を行い、それらに従って動作する、すなわち、通信を開始し、またはそれに応答し、情報を編成し、商品、旅行などを売買する。コンピュータは、人々の間の通信を向上させ、情報へのアクセスを向上させている。しかしながら、ＰＣは、意思決定を行い、適時にそれに従って行動するというエンドユーザの責任を軽減するためにはほとんど何もしていない。実業界には、主要な組織的決定のための意思決定サポートシステムがある。依然としてソフトウェアは、多くの日常的で、しかも重要で個人的な意思決定において、平均的ＰＣユーザの役には立たない。
【０００８】
コンピューティングはコンテキスト的ではない。コンピュータソフトウェアは、通常、ある程度静的で、ユーザの実際のコンテキストと無関係な任意選択の設定を提供する（例えば、「なぜ私は、職場と自宅とで同じ組み合わせのメッセージング仲間を持つ必要があるのか」など）。
【０００９】
ゆえに、ユーザは、依然として、ソフトウェアの「産業革命以前の時代」にあって、手動式情報処理の専横にますます捕らわれ、すなわち、毎日何時間も、電子メール、文書などの個人データを移動し、ソートし、サーチし、それに反応するのに費やしている。
【００１０】
エンドユーザソフトウェアは、パーソナル化され、エンドユーザの必要および好みを知り、それらの必要およびユーザコンテキストによって具体的に導かれるように働くべきである。さらに、コンピュータシステムおよびソフトウェアは、あらゆるエンドユーザに、２４時間体制で働いて対象となる情報を収集し、それをそのエンドユーザに移動し、その情報に反応する個人秘書を提供すべきである。
【００１１】
最も有益なエンドユーザコンピューティングアクティビティのクラスは、エンドユーザが必ず関連情報を見るようにすること（例、「悪天候による学校閉鎖があれば知らせる。」）、パーソナル化挙動を用いて個人間のやりとりを改善すること（例、「妻が電話したときに私が職場にいなかった場合、私が戻ったら妻に知らせる。」）、重要な情報が失われないようにすること（例、「緊急の電子メールがあった場合、それが必ず私のモバイル機器に転送されるようにする。」）、情報の管理を自動化すること（例、「新しい写真が届いた際、それらを正しいフォルダに入れ、そのタイムスタンプ、ＧＰＳ位置、および任意の関連するカレンダ記入項目に基づいて共用する。」）などの、情報フローおよびサーチを処理する。
【課題を解決するための手段】
【００１２】
これを達成するやり方は、エンドユーザに、コンピュータの挙動を「プログラム」させることによるものである。しかしながら、従来のプログラミング言語は、エンドユーザが訓練された開発者ではない（にはなり得ない）という点で、明らかにその回答ではない。
【００１３】
求められているのは、エンドユーザがオペレーティングシステムおよびアプリケーションをパーソナル化することを可能にする改善されたメカニズムである。
【００１４】
以下で、本発明のいくつかの態様の基本的な理解を提供するために、本発明の簡単な要約を提示する。この要約は本発明の包括的概要ではない。本発明の重要／決定的な要素を識別することも、本発明の範囲を正確に叙述することも意図されていない。その唯一の目的は、後段で提示するより詳細な説明への前置きとして簡略化した形で本発明のいくつかの概念を提示することである。
【００１５】
本明細書で開示し、特許請求する本発明は、その一態様においては、アプリケーションのデータ管理を容易にするアーキテクチャを備える。アプリケーションは、エンドユーザによってエンドユーザのためにパーソナル化することができるようになる。含まれるのは、アプリケーション生成イベントのエンドユーザへの公開を容易にするカスタマイズコンポーネントと、エンドユーザが、そのイベントと関連付けるための１つまたは複数の規則を作成できるようにする規則コンポーネントであり、１つまたは複数の規則は、外部処理のための、そのイベントと関連付けられたアプリケーションデータの送信を容易にする。アプリケーションの各規則対応機能は決定点によって定義され、決定点におけるイベント／トリガ／変更は、様々な目的のためにエンドユーザによって管理される。決定点によって公開されるアプリケーションデータは、そのアプリケーションの挙動を変更する結果をアプリケーションに戻すように、外部で処理される。
【００１６】
アプリケーションの様々な機能が規則対応とされる。その場合、エンドユーザは、それらの機能での規則を作成して、それらの機能に関連付けられたデータをさらに操作することができる。２種類のアプリケーションカスタマイズを、ゆるく束縛されたカスタマイズおよびきつく束縛されたカスタマイズという。ゆるく束縛されたカスタマイズでは、アプリケーションは、エンドユーザがそこでカスタマイズ規則を添付することのできるインターセプト点、すなわち「決定点」を公開する。規則は、添付型をセットアップすることによって決定点と関連付けられる。複数の異なる規則が、対応する添付型を用いて単一のカスタマイズ決定点に添付される。アプリケーションは、添付された規則については何も「知らず」、決定点項目上でメソッドを呼び出し、次いで、その結果を処理する。メソッド呼び出しは、規則エンジンを正しい規則上で呼び出させる。
【００１７】
きつく束縛されたカスタマイズでは、決定点は使用されない。アプリケーションは、直接規則を呼び出し、それは、規則がその上で呼び出されるアプリケーション、および規則エンジンが、アプリケーションカスタマイズ結果を戻すように規則を処理する場合にどんな種類の規則が許容されるかをより大幅に制御できるようにする。ゆえに、きつく束縛されたアプリケーションは、規則と共に提供される、そのアプリケーション、ユーザ、決定および入力に対応する規則のファイルシステム問い合わせを発行することによって、規則にその基づく決定およびユーザのための正しい規則を識別する。ゆるく束縛されたアプリケーションとは対照的に、ユーザ、決定、および入力に基づく規則の選択は、決定点入力メソッドが呼び出し側アプリケーションによって呼び出されるたびに、規則プラットフォームによって決定される。
【００１８】
本発明の別の態様では、アプリケーションのエンドユーザ挙動の学習を円滑化し、規則の形でその挙動を取り込む学習コンポーネントが提供される。
【００１９】
前述の関連する目的の達成のために、本明細書では、本発明のいくつかの例示的態様を、以下の説明および添付の図面との関連で説明する。しかしながら、これらの態様は、本発明の原理が用いられ得る様々なやり方のいくつかを示すものにすぎず、本発明は、そのようなすべての態様およびその均等物を含むものである。本発明のその他の利点および新規の特徴は、以下の本発明の詳細な説明を、図面と併せて考察すれば明らかになるであろう。
【発明を実施するための最良の形態】
【００２０】
次に、本発明を、図面を参照して説明する。全体を通して、類似の参照番号は類似の要素を指すのに使用する。以下の記述では、本発明の十分な理解を提供するために、説明として多数の具体的詳細を示す。しかしながら、本発明がこれらの具体的詳細なしでも実施することが可能でことは明らかであると考えられる。他の例では、本発明の説明を容易にするために、公知の構造および装置をブロック図の形で示す。
【００２１】
本出願で使用する際、「コンポーネント」および「システム」という用語は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連のエンティティを指すものである。例えば、コンポーネントは、それだけに限らないが、プロセッサ上で走るプロセス、プロセッサ、オブジェクト、実行可能プログラム、実行スレッド、プログラム、および／またはコンピュータとすることができる。例をあげると、サーバ上で走るアプリケーションとサーバの両方をコンポーネントとすることができる。１つのプロセスおよび／または実行スレッド内に１つまたは複数のコンポーネントが存在でき、１つのコンポーネントは、１つのコンピュータ上に集中させることも、２つ以上のコンピュータ間に分散させることもできる。
【００２２】
本明細書で使用する際、「推論する」または「推論」という用語は、一般に、イベントおよび／またはデータを介して取り込まれる１組の観察からシステム、環境、および／またはユーザの状態について推測し、または推論するプロセスを指す。推論は、例えば、特定のコンテキストまたはアクションを識別するのに用いることもでき、状態間での確率分布を生成することができる。推論は、確率的とすること、すなわち、データおよびイベントの考察に基づく対象となる状態間での確率分布の計算とすることができる。また、推論は、１組のイベントおよび／またはデータからより上位のイベントを構成するのに用いられる技法を指すこともある。そのような推論は、各イベントが時間的に近接した相関関係にあるか否か、各イベントおよびデータが、１つのイベントおよびデータソースからもたらされるか、それとも複数のイベントおよびデータソースからもたらされるかを問わず、結果として１組の観察されたイベントおよび／または格納されたイベントデータからの新しいイベントまたはアクションの構築をもたらす。
【００２３】
規則アーキテクチャ
本発明の規則アーキテクチャは、開発者がそれに照らして、規則の形で豊富なエンドユーザ論理を走らせるアプリケーションを構築することのできるプラットフォームである。アプリケーションカスタマイズは、アプリケーションにおいてデータ駆動エンドユーザ選択をサポートするのに用いられ得る、ゆるく束縛されたモデル、きつく束縛されたモデル、またはその両方の選択を可能にする。アプリケーションは、１つまたは複数のトリガイベントを公開することができる。アプリケーションがきつく束縛されたモデルを使用している場合、公開されたトリガイベントがなく、ただ、アプリケーションが１つまたは複数の規則に入力を供給し、その結果を取得し、その結果を処理する、アプリケーション中の論理の流れにおける場所だけがあることがある。アプリケーションによって選択された規則が問い合わせされる。ゆるく束縛されたモデルでは、アプリケーション自体が、規則エンジンへの入力として（決定点と呼ばれる項目の形で）規則トリガイベントを供給する。決定点を提供することにより、アプリケーションは、エンドユーザが規則を用いてアプリケーション意思決定を制御できるようにする。次いで、規則エンジンは、規則条件を評価し、その条件が真であると評価された規則でのアプリケーション固有の結果を戻す。次いで、その結果が規則カスタマイズアプリケーションによって解釈される。
【００２４】
次に図１を参照すると、本発明による、データ管理のためのアプリケーションカスタマイズを容易にするシステム１００が示されている。システム１００は、アプリケーション１０４におけるアプリケーション生成イベントのエンドユーザへの公開を容易にするカスタマイズコンポーネント１０２を含む。規則コンポーネント１０６は、エンドユーザが、そのイベントと関連付けるための１つまたは複数の規則を作成できるようにし、１つまたは複数の規則は、外部処理のための、そのイベントと関連付けられたアプリケーションデータ１０８の送信を容易にする。アプリケーションの様々な機能が規則対応とされる。その場合、エンドユーザは、それらの機能での規則を作成して、それらの機能に関連付けられたデータをさらに操作することができる。アプリケーションの各規則対応機能は、決定点によって定義され、カスタマイズコンポーネント１０２の一部として含まれる。ゆえに、決定点におけるイベント／トリガ／変更は、様々な目的のためにエンドユーザによって管理される。決定点によって公開されるアプリケーションデータは、そのアプリケーションの挙動を変更する結果をアプリケーションに戻すように外部で処理される。
【００２５】
次に図２を参照すると、本発明による、カスタマイズされたアプリケーション２０２の規則エンジン２０４との対話でのモデル２００のブロック図が示されている。規則アーキテクチャは、開発者がそれに照らして、規則の形で豊富なエンドユーザ論理を走らせるアプリケーションを構築することのできるプラットフォームである。アプリケーションカスタマイズでは、アプリケーション自体がエンジン２０４への入力として規則トリガイベント２０６を供給し、規則エンジン２０４が規則条件を評価し、その条件が真であると評価された規則でのアプリケーション固有の結果２０８を戻す。次いで、その結果が規則カスタマイズアプリケーションによって解釈される。プロセス境界は、外部プロセス（アプリケーション２０２など）を、規則エンジン２０４がそこで走るストアプロセスから隔てる。アプリケーション２０２は、プロセス境界をまたいで規則エンジン２０４にイベントを送信し、次いで、規則エンジン２０４は、その境界をまたいで外部プロセスによって実行される結果を戻す。
【００２６】
アプリケーション２０２と規則エンジン２０４の間のプロセス境界の存在は、破線で示すように、単に、１つの実施選択にすぎない。別の実施選択として、規則エンジン２０４をアプリケーション２０２に組み込み、それを呼び出すことによってプロセス切換えを生じさせないようにすることもできる。
【００２７】
規則エンジン２０４は、アプリケーションカスタマイズをサポートする。アプリケーションカスタマイズは、従来、アプリケーションにおける比較的固定されたオプション設定であったもののデータ駆動エンドユーザ選択をサポートするのに使用されるモデルである。例えば、今日、ほとんどの電子メール作成アプリケーションは、ユーザが、すべての送信電子メールに単一の署名ファイルを指定することを可能にする。アプリケーションカスタマイズの一例が、ユーザが、電子メールの受信者に基づいて送信電子メールに署名ファイルを設定できるようにする規則を用いることである。
【００２８】
この規則プラットフォームは、アプリケーションカスタマイズのためのモデル、すなわち、ゆるい束縛と呼ばれる第１のモデルと、きつい束縛と呼ばれる第２のモデルの一方または両方の使用を容易にする。
【００２９】
次に図３を参照すると、本発明の規則アーキテクチャの項目タイプおよびそれらの関係の図が示されている。１つのエンドユーザ論理「プログラム」が規則、すなわち１組のステートメントである。規則は、完全な論理の単位である。各規則は、オーサリングの単位である。規則への入力はデータ項目であることに留意されたい。規則は、特定の項目タイプの項目に関する宣言ステートメントである。基本モデルに対する拡張として、非項目データ（一時データまたはＸＭＬ）も規則入力として提供される。規則が適用される項目は、その規則の配置に左右される。規則は、配置可能なエンドユーザ論理の単位である。規則は、それを項目範囲（項目入力または決定点のソース）に添付することによって配置される。この関連は、ＲｕｌｅＳｅｔＡｔｔａｃｈｍｅｎｔ（ＲＳＡ）としてファイルシステムに取り込まれる。ＲＳＡは、ＤｅｃｉｓｉｏｎＰｏｉｎｔとＲｕｌｅ項目の間の接続を表す。これらの接続は、物理的な、格納された「Ｌｉｎｋ」として、または計算された「共通値関連」としてモデル化される。どちらの場合も、その機能は同じであり、Ｒｕｌｅからそのためにそれが作成されたＤｅｃｉｓｉｏｎＰｏｉｎｔへの接続である。規則はすべてファイルシステム項目である。
【００３０】
入力範囲は、任意のタイプの任意の項目である。入力範囲は、オペレーティングシステムによって、規則評価の範囲を特定の項目またはフォルダに制限するのに使用され、通常は、特定のアプリケーションによって使用されない。前述の図における線上の各ラベルには、各項目間の関係の名前が示されている。規則セット添付項目は、決定点を規則（および、それが存在する場合には、入力範囲）に関連させる。規則セット項目は、ゼロ以上の規則ステートメントへの関係を含む。決定点項目は、アプリケーションが規則プラットフォームを使用できるようにする。規則は、制約条件、条件、および結果を含む、規則項目を記述する。規則は規則ステートメントを含む。規則ステートメントは、入力（について）、条件（である場合）、結果（になる）、という形のステートメントである。アプリケーションカスタマイズでは、結果は、アプリケーションによって定義され、アプリケーションによって消費される。規則セット添付項目は、決定点と規則セットの間の接続に関する情報を格納する。ユーザは、規則セット中の規則を添付し、アプリケーションは、結果を戻すために決定点に入力を提供する。
【００３１】
次に図４を参照すると、本発明による、実行時の観点から見たゆるく束縛されたモデルのアプリケーションカスタマイズの流れ図が示されている。説明を簡単にするために、本明細書に流れ図などの形で示す１つまたは複数の方法を一連の動作として図示し、説明するが、本発明はその動作順序によって限定されず、本発明によれば、いくつかの動作は、本明細書で図示し、説明するものとは異なる順序で、かつ／またはそれ以外の動作と同時に起こり得ることを理解し、認めるべきである。例えば、一方法は、代替として、例えば状態図などで、一連の相互に関連する状態またはイベントとして表されることを、当分野の技術者は理解し、認めるであろう。さらに、本発明による方法を実施するのに、図示の動作すべてが必要とされるとは限らない。
【００３２】
４００で、アプリケーションは、アプリケーションインストール時にオペレーティングシステムに１組の決定点を登録する。決定点は、アプリケーションによって、規則エンジンに入力を送信するメカニズムとして作成される。決定点を公開することにより、アプリケーションは、エンドユーザが、規則を用いてアプリケーション意思決定を制御できるようにする。入力データは（直接、または決定点を介して）規則エンジンに流れて、アプリケーションカスタマイズ結果を生成する。決定点は、ゆるく束縛されたアプリケーションカスタマイズだけに必要とされる。４０２で、アプリケーション挙動がそこでカスタマイズされているアプリケーション決定点が公開される。４０４で、各決定点オブジェクトにおいて、その決定点でのエンドユーザカスタマイズを処理するために、メソッドが呼び出される。アプリケーションコードが、決定が行われる必要のある点に達すると、それは、決定点オブジェクト（項目）上でメソッドを呼び出す。これは、規則エンジンに、適当なエンドユーザ規則を評価させ、期待される結果を戻させる。４０６で、メソッドは、規則エンジンに決定点規則を送信する。４０８で、規則エンジンは、規則を処理し、１つまたは複数の結果をアプリケーションに返送する。次いで、アプリケーションは、アプリケーション固有のやり方でその結果を処理する。次いで、プロセスは停止ブロックに達する。
【００３３】
前述のように、ゆるく束縛されたアプリケーションカスタマイズでは、アプリケーションは規則について何も知らない。アプリケーションは、単に、決定点項目上でメソッドを呼び出し、次いで、戻された結果を処理するだけである。メソッド呼び出しは、規則エンジンを正しい規則上で呼び出させる。
【００３４】
次に図５を参照すると、本発明による、実行時の観点から見たきつく束縛されたモデルでの一方法の流れ図が示されている。５００で、アプリケーションは、カスタマイズされた実行のための規則を選択する。５０２で、アプリケーションは、その規則を直接実行して、アプリケーションカスタマイズ決定を生成する。５０４で、決定が規則エンジンに送られる。５０６で、規則エンジンは、決定を処理してアプリケーションに結果を戻し、アプリケーションは、アプリケーション固有のやり方でその結果を処理する。次いで、プロセスは停止ブロックに達する。
【００３５】
前述のように、きつく束縛されたアプリケーションは直接規則を呼び出すアプリケーションであり、それは、その上で規則が呼び出されるアプリケーション、および規則エンジンがアプリケーションカスタマイズ結果を戻すように規則を処理する場合にどんな種類の規則が許されるかをより大幅に制御できるようにする。この制御は、きつく束縛されたアプリケーションにより大きな負担を負わせる。具体的には、きつく束縛されたアプリケーションは、アプリケーションおよびユーザ、決定、ならびに規則に提供される入力に対応する規則の問い合わせを発行することによって、その規則に基づく決定およびユーザでの正しい規則を識別する。決定点を使用するのではなく、アプリケーションは、規則上で実行メソッドを直接呼び出し、それに入力項目および規則制約条件を渡す。規則制約条件は、特定の入力に適用すべき規則のサブセットを識別するのに使用される。
【００３６】
規則制約条件は、より正確には、規則シグネチャであるとみなされる。このシグネチャは、特定の入力を用いた特定の呼び出しが与えられたとするとどの規則を走らせるかをフィルタにかけるのに使用される。規則制約条件は、２つの場所、すなわち各規則上と、各送信点上で指定される。ＲＳＡ上には規則制約条件はない。
【００３７】
規則上では、規則制約条件は、その規則が、それが適合するとされるものに適合することを保証するために使用される。各アクションの出力は、その規則制約条件が、その出力がそうであるとするものとマッチする。これは入力でも同じである。規則上で制約条件は、それが添付される場所を指図する。規則の不適当な添付が試みられた場合、検証は失敗する。規則は、決定点に添付される。決定点制約条件と整合する規則だけが添付を許容される。
【００３８】
これに対して、ゆるく束縛されたアプリケーションでは、呼び出し側アプリケーションによって決定点入力メソッドが呼び出されるたびに、ユーザ、決定、および入力に基づく規則の選択がプラットフォームによって実行される。
【００３９】
ＲＳＡをセットアップすることにより、１つまたは複数の規則が１つの決定点と関連付けられる。個々のＲＳＡは、決定点によって提供される規則制約条件より制限的とすることができる。すなわち、それは、アプリケーションによる決定点の可能な呼び出しのサブセットについてのみ規則を適用すべきであると指定することができる。具体的には、それは、以下の次元のいずれかに沿って規則を制約することができる。
ユーザ：あらゆるＲＳＡは、特定のユーザと関連付けられており、そのユーザに代わって要求される決定についてのみ呼び出される。
タイプ：ＲＳＡは、添付された規則を特定のタイプの入力にのみ適用すべきであると指定することができる。
入力範囲：ＲＳＡは、一般に、規則を、可能な呼び出しのサブセットについてのみ呼び出させるアプリケーション固有の情報を指定することができる。項目ストアにおける変更の制御が、規則を用いてユーザによって制御されるようにする組み込みアプリケーションの場合には、以下の種類の入力範囲が期待される。すなわち、問い合わせまたは変更イベントでの制約条件を定義する項目であり、アプリケーションが単一の決定点における複合操作（新規項目または項目変更など）をサポートする場合、ＲＳＡは、それらの操作のサブセットを指定することのできるさらなる制約条件を指定することができる。
入力内容：ＲＳＡは、一般に、内容に基づくフィルタ（この規則をユーザによって所有される入力項目にのみ適用するなど）を指定することができる。一実装形態では、これらのフィルタは、添付された規則から推定される。
【００４０】
この推定に基づけば、１つのアプリケーションカスタマイズ決定点に添付された複数のＲＳＡが存在することが可能であり、プラットフォームは、それをサポートする必要があることに留意されたい。
【００４１】
次に図６を参照すると、本発明による、決定点のインスタンス化に関連付けられた一方法の流れ図が示されている。６００で、この方法は、各決定点を定義する。６０２で、アプリケーションは、名前を提供する。これは、エンドユーザ規則をそこで適用すべき決定コンテキスト（または性質）を識別する。６０４で、アプリケーションは、入力データ型およびその期待される結果の種類の観点から決定点の所有者を識別するシグネチャ（またはアプリケーション名）を提供する。一実装形態では、データが記憶システムにおいて自然に存続せず、データを持続させるオーバーヘッドが不合理である場合をサポートするために、（例えば、ＸＭＬ、すなわち拡張マークアップ言語などを介して）一時データもサポートされる。６０６で、アプリケーションは、この決定で許容される規則論理の種類に関する任意の制約条件を提供する。例えば、一部の条件は許容され、一部は許容されない。一実装形態では、規則制約条件の粒度は、全項目タイプに制限される（すなわち、規則制約条件は、項目タイプの観点から表現される）。次いで、プロセスは停止ブロックに達する。
【００４２】
特定の種類の特定の入力を用いて決定点が呼び出される場合、その制約条件（ユーザ、タイプ、範囲、内容フィルタ）がこの入力にマッチするＲＳＡだけが呼び出される。すべてのＲＳＡからの結果が単一のＲｅｓｕｌｔＳｅｔＥｌｅｍｅｎｔ（ＲＳＥ）に集約される。この戻り値は、すべての添付規則の（競合解決後の）集約結果を含む。
【００４３】
アプリケーションは、すべての結果が、決定点で定義された規則制約条件に対応し、アプリケーションが、各マッチングＲＳＡによって生成された結果を区別することができることを期待するはずである。
【００４４】
一最適化によれば、規則は、異なる種類の規則、すなわち、異なる制約条件を有する規則を持つことが許される。この影響は、規則エンジンが、それらの規則を動的に評価して、規則のうちのどれを適用すべきか決定することである。それは、また、「直接」実行インターフェースが規則制約条件を必要とすることも意味する。そのうちに同じ制約条件の規則を備えることだけが必要とされた場合、規則添付およびメンバーシップの時点において制約条件チェックが実行される。しかしながら、これは、規則を編成装置として使用する柔軟性を低下させる。
【００４５】
きつく束縛されたアプリケーションでのＲｕｌｅＣｏｎｓｔｒａｉｎｔの欠如は、エンドユーザカスタマイズがないことを意味するものではない。規則は、きつく束縛されたシナリオでも、ゆるく束縛されたシナリオの場合と同様に豊富とし得る。きつく束縛されたシナリオに欠けているのは、汎用規則ユーザインターフェース（ＵＩ）がカスタマイズオプションを提示することのできる機能である。それがそれらのオプションを決定するために反映すべきものがない。規則構築のためにそのカスタムＵＩを提示することは、そのきつく束縛されたアプリケーションの責任である。このようにして、きつく束縛されたアプリケーションは、利用可能な条件およびアクションを制御することができる。
【００４６】
規則入力／出力（Ｉ／Ｏ）モデル
規則エンジンは、入力を受け取り、この入力に基づいて規則を評価し、任意のマッチした規則の結果を呼び出し側アプリケーションへの出力として戻す。アプリケーションカスタマイズおよび非項目データをサポートするために、入出力モデルは、ＲＳＥではなくアプリケーションビューを戻すように拡張される。アプリケーションビューは、規則評価から戻された構造化データを記述する。アクションモデルは、アプリケーションビューに含まれるアクションを実行するように拡張される。ＲＳＥは、アプリケーションがそれ要求する場合には、任意選択で持続されるが、それはアプリケーションをカスタマイズするための期待されるパターンにはならない。
【００４７】
規則エンジンへの入力は、操作名からなり、任意選択で、それが関連する項目を指し示すことができる。入力は、「項目が作成された」のように、「動詞」であるとみなすことができ、「作成」されている項目を指し示すポインタを持つことができる。例えば、フォルダに新しいＭＰ３ファイルが作成される状況を仮定すると、この項目作成は入力操作であり、ＭＰ３は、この入力送信によって参照される項目になるはずである。
【００４８】
規則エンジンへの入力送信の一部として項目の参照をサポートする以外に、入力がＸＭＬデータを参照することも可能である。
【００４９】
ＤｅｃｉｓｉｏｎＰｏｉｎｔ項目はメソッドを含み、例えば、規則エンジンに入力を送信するために開発者によってＤｅｃｉｓｉｏｎＰｏｉｎｔ．Ｓｕｂｍｉｔ（）およびＤｅｃｉｓｉｏｎＰｏｉｎｔ．ＳｕｂｍｉｔＡｎｄＷａｉｔ（）が使用される。各ＤｅｃｉｓｉｏｎＰｏｉｎｔは、それが入力として受け入れる操作名および（任意選択の）項目タイプを定義する。
【００５０】
ゆえに、既存のタイプを参照する入力の送信は、直接的である。アプリケーションが、図式化されない１組のデータを送信しようとする場合、２つの可能な方法がある。すなわち、開発者がカスタムスキーマを用いて新しい項目タイプを定義し、この項目タイプが適正な情報を保持し、このタイプのインスタンスが規則エンジンに送信される方法と、開発者がＸＭＬサポートを用いてデータを送信する方法である。第１のオプションの一例として、アプリケーションの開発者が、ユーザがアプリケーションイベント（非図式化データ）の１つの処理に関する規則を作成できるようにしようとすることを考える。明確にするために、開発者は、タイプを作成し、送信によってそのタイプを決定点に入力として提供しようとする。次いで、開発者は、応答として、そのタイプに関するメソッドの１つが、エンドユーザが講じようとするアクションであると期待する。例えば、オブジェクトが炭酸飲料の缶であり、そのメソッドがＤｒｉｎｋ、ＣｒｕｓｈＡｎｄＤｉｓｃａｒｄ、およびＳｅｔＯｎＴａｂｌｅであった場合、その条件は、「空である」、および「リサイクル分別箱が利用可能」である場合、ＣｒｕｓｈＡｎｄＤｉｓｃａｒｄになるはずである。「空でない」および「喉が渇いていない」の場合、ＳｅｔＯｎＴａｂｌｅになる。
【００５１】
ＤｅｃｉｓｉｏｎＰｏｉｎｔは、任意選択で、「入力範囲」を必要とし得る。いくつかの決定点は、ファイルシステムの特定の部分に制約された規則を関与させることができる。これらのＤｅｃｉｓｉｏｎＰｏｉｎｔは、それらに添付されたどんな規則も入力範囲への関係を含むことを必要とする。例えば、前述の仮定上の「項目が作成された」決定点は入力範囲を必要とすることができ、ゆえに、その決定点は、それに添付された任意の規則が、これらの項目作成入力がそこからもたらされるはずのファイルシステム内の範囲を提供することを必要とすると示しているはずである。
【００５２】
規則に基づくアーキテクチャにおける論理ビルディングブロックが、コレクションである。コレクションは、「有効範囲」項目および関係タイプからなる。「有効範囲」項目から生じる指定されたタイプの関係のターゲットである任意の項目は、その有効範囲項目をルートとするコレクションの一部であるとみなされる。
【００５３】
ＲｕｌｅＳｅｔＡｔｔａｃｈｍｅｎｔ項目は、全コレクションを同時に評価するのに使用されるメソッドを含む（例えば、ＲｕｌｅＳｅｔＡｔｔａｃｈｍｅｎｔ．Ｅｖａｌｕａｔｅ（）やＲｕｌｅＳｅｔＡｔｔａｃｈｍｅｎｔ．ＥｖａｌｕａｔｅＩｎｔｏＣｏｌｌｅｃｔｉｏｎ（）など）。これらのメソッドは、添付された入力範囲中の項目を、エンジンが考察すべき入力として。それらの項目は、あたかもそれらが個々に送信されたかのように評価される。規則エンジンは、コレクションを、評価のために特別には扱わない。
【００５４】
ＤｅｃｉｓｉｏｎＰｏｉｎｔ  ｓｕｂｍｉｔ（）メソッドまたはＲｕｌｅＳｅｔＡｔｔａｃｈｍｅｎｔ  ｅｖａｌｕａｔｅ（）メソッドの１つへの各呼び出しは、１つまたは複数の添付規則を規則エンジンによって評価させる。これらの評価からの結果は、呼び出しごとに１つのＲｕｌｅＳｅｔＥｖａｌｕａｔｉｏｎ項目に書き込まれる。
【００５５】
ＲｕｌｅＳｅｔＥｖａｌｕａｔｉｏｎ項目は、ＲｕｌｅＲｅｓｕｌｔＥｌｅｍｅｎｔのネストされた要素集合を持つ。各ＲｕｌｅＲｅｓｕｌｔＥｌｅｍｅｎｔは、結果名およびその結果を記述するのに必要な構造化データを保持する。これらの結果は、アプリケーション固有である。すなわち、それらは、それを介して／そのために規則が作成され、イベントを送信したアプリケーションによって理解可能であると期待される。多くの場合、ＲｕｌｅＲｅｓｕｌｔＥｌｅｍｅｎｔ内に保持される結果名は、実際には、完全修飾クラスレベル（静的）ＣＬＲ（ｃｏｍｍｏｎ  ｌａｎｇｕａｇｅ  ｒｕｎｔｉｍｅ、共通言語実行時）メソッド名であり、構造化データは、そのメソッドでのパラメータに対応し得る。ＲｕｌｅＲｅｓｕｌｔＥｌｅｍｅｎｔタイプは、このデータをとることのできるｅｘｅｃｕｔｅ（）メソッドを含み、ＣＬＲ反映を用いて、適正なパラメータと共に指定されたメソッドを呼び出す。一実装形態では、これらは、入力項目の特性に関するｓｅｔｔｅｒ／ｇｅｔｔｅｒメソッド、ならびに規則カスタマイズアプリケーションの実行コンテキスト内で利用可能なライブラリにある静的メソッドに制限される。
【００５６】
別の実装形態では、入力がそこに送信された決定点への各添付ごとに、新しいＲｕｌｅＳｅｔＥｖａｌｕａｔｉｏｎ項目が生成される。
【００５７】
ＦｕｎｃｔｉｏｎＩｎｆｏタイプは、ネストされたタイプＲｕｌｅＲｅｓｕｌｔＥｌｅｍｅｎｔとアクションの間で共用され、後者は、規則定義の一部である。
【００５８】
結果をＸＭＬ形式で受け取ろうとするアプリケーションでは、選択のＸＭＬデータを含み得るＲｕｌｅＲｅｓｕｌｔＥｌｅｍｅｎｔの代替の形が提供される。
【００５９】
次に図７を参照すると、本発明による学習コンポーネント７０２を用いるシステム７００が示されている。システム７００は、アプリケーション１０４におけるアプリケーション生成イベントのエンドユーザへの公開を容易にするカスタマイズコンポーネント１０２を含む。規則コンポーネント１０６は、エンドユーザが、そのイベントと関連付けるための１つまたは複数の規則を作成できるようにし、１つまたは複数の規則は、外部処理のための、そのイベントと関連付けられたアプリケーションデータ１０８の送信を容易にする。アプリケーションの様々な機能が規則対応とされる。その場合、エンドユーザは、それらの機能での規則を作成して、それらの機能に関連付けられたデータをさらに操作することができる。アプリケーションの各規則対応機能は決定点によって定義され、それは、そのアプリケーションの挙動を変更する結果をアプリケーションに戻すように外部で処理される。
【００６０】
本発明は、本発明の様々な態様を実行するために様々な人工知能に基づくスキームを用いることができる。例えば、決定点をどこに配置すべきか決定するプロセスは、自動クラシファイやシステムおよびプロセスによって円滑化される。クラシファイヤとは、入力属性ベクトル、ｘ＝（ｘ１、ｘ２、ｘ３、ｘ４、ｘｎ）を、その入力があるクラスに属する信頼度、すなわち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）にマップする関数である。そのような分類は、確率的な、かつ／または統計に基づく分析（例えば、効用およびコストを要因として分析に含めるなど）を用いて、ユーザが自動的に実行されることを望むアクションを予測し、または推論することができる。
【００６１】
サポートベクトルマシン（ＳＶＭ）は、用いられ得るクラシファイヤの一例である。ＳＶＭは、可能な入力の空間において超曲面を見出すことによって動作し、この超曲面は、非トリガイベントからトリガ基準を切り取ろうとする。直感的に、これは、この分類を、訓練データに近いが、同一ではない試験データに適合させる。他の有向および無向のモデル分類手法には、例えば、ナイーブベイズ、ベイズネットワーク、決定木、および異なるパターンの独立が用いられ得るという条件で確率的分類モデルが含まれる。本明細書で使用する分類は、優先度のモデルを作成するのに利用される統計的回帰も含む。
【００６２】
本明細書から容易に理解されるように、本発明は、（ユーザ挙動の観察、外部情報の受け取りなどにより）暗黙的に訓練されるのみならず、（例えば、汎用学習データによって）明示的に訓練されるクラシファイヤを用いることができる。例えば、ＳＶＭは、クラシファイヤ構築および機能選択モジュール内の学習または訓練フェーズによって構成される。ゆえに、クラシファイヤは、それだけに限らないが、特定のエンドユーザまたはカスタマイズされるアプリケーションに基づいて決定点の位置を決定すること、エンドユーザの決定点配置履歴に基づいて決定点をどこに配置すべきか決定すること、およびアプリケーションの種類に基づいてどんな決定点が用いられ得るか決定することを含む、いくつかの機能を自動的に実行するのに使用される。クラシファイヤは、ゆるく束縛されたモデルで決定点にどんな規則を添付すべきか決定するのに用いられ得る。ゆるく束縛されたモデルにおける決定点に用いられるのと類似のクラシファイヤ動作が、きつく束縛されたモデルでの規則にも適用される。
【００６３】
１つのより堅固な実装形態では、クラシファイヤは、エンドユーザの選好および過去のカスタマイズに基づき、そのエンドユーザのための完全な終端間アプリケーションカスタマイズプロセスを実行する。さらに、クラシファイヤは、所与のエンドユーザに従って、アプリケーションカスタマイズのゆるく束縛されたまたはきつく束縛されたモデルをいつ使用すべきか決定するのにも使用される。
【００６４】
次に図８を参照すると、開示のアーキテクチャを実行するように動作可能なコンピュータのブロック図が示されている。本発明の様々な態様でのその他のコンテキストを提供するために、図８および以下の説明では、本発明の様々な態様が実施される適当なコンピューティング環境８００の簡潔で、一般的な説明を提供することが意図されている。以上では、本発明を、１つまたは複数のコンピュータ上で走ることのできるコンピュータ実行可能命令の一般的状況で説明しているが、本発明が、他のプログラムモジュールと組み合わせて、かつ／またはハードウェアとソフトウェアの組み合わせとしても実施されることを当分野の技術者は理解するであろう。
【００６５】
一般に、プログラムモジュールには、個々のタスクを実行し、または個々の抽象データ型を実施するルーチン、プログラム、コンポーネント、データ構造などが含まれる。さらに、本発明の方法が、そのそれぞれが１つまたは複数の関連する装置に動作可能に結合される、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースまたはプログラム可能家庭用電化製品など、他のコンピュータシステム構成を用いても実施されることを当分野の技術者は理解するであろう。
【００６６】
図示の本発明の態様は、いくつかのタスクが、通信ネットワークを介してリンクされたリモート処理装置によって実行される、分散コンピューティング環境でも実施される。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモート両方の記憶装置に位置し得る。
【００６７】
コンピュータは、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータからアクセスされる任意の利用可能な媒体とすることができ、それには、揮発性と不揮発性、取り外し可能と取り外し不能両方の媒体が含まれる。例をあげると、それだけに限らないが、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体が含まれ得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実施された揮発性と不揮発性、取り外し可能と取り外し不能両方の媒体が含まれる。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどのメモリ技術、ＣＤ−ＲＯＭ、ディジタルビデオディスク（ＤＶＤ）などの光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶などの磁気記憶装置、あるいは所望の情報を記憶するのに使用することができ、コンピュータによってアクセスされる他の任意の媒体が含まれる。
【００６８】
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波やその他の移送メカニズムなどの変調データ信号として実施し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性の１つまたは複数が、その信号に情報を符号化するように設定され、または変更されている信号を意味する。例をあげると、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体が含まれる。上記のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含むべきである。
【００６９】
図８を参照すると、処理装置８０４、システムメモリ８０６およびシステムバス８０８を備えるコンピュータ８０２を含む、本発明の様々な態様を実施するための例示的環境８００が示されている。システムバス８０８は、それだけに限らないが、システムメモリ８０６を含むシステムコンポーネントを処理装置８０４に結合する。処理装置８０４は、様々な市販のプロセッサのいずれでもよい。デュアルマイクロプロセッサや他のマルチプロセッサアーキテクチャも、処理装置８０４として用いられ得る。
【００７０】
システムバス８０８は、様々な市販のバスアーキテクチャのいずれかを使用して（メモリコントローラありまたはなしの）メモリバス、周辺バス、およびローカルバスとさらに相互接続されるいくつかの種類のバス構造のいずれでもよい。システムメモリ８０６は、読取り専用メモリ（ＲＯＭ）８１０およびランダムアクセスメモリ（ＲＡＭ）８１２を含む。基本入出力システム（ＢＩＯＳ）は、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性メモリ８１０に格納され、始動時などに、コンピュータ８０２の諸要素間の情報転送を支援する基本ルーチンを含む。ＲＡＭ８１２には、データをキャッシュするためのスタティックＲＡＭなどの高速ＲＡＭも含まれ得る。
【００７１】
コンピュータ８０２は、さらに、適当なシャーシ（図示せず）での外部使用のためにも構成される内蔵ハードディスクドライブ（ＨＤＤ）８１４（ＥＩＤＥ、ＳＡＴＡなど）、磁気フロッピー（登録商標）ディスクドライブ（ＦＤＤ）８１６（取り外し可能なディスケット８１８との間での読取り／書込みなど）、および光ディスクドライブ８２０（ＣＤ−ＲＯＭディスク８２２の読取り、あるいはＤＶＤなど他の大容量光媒体との間の読取り／書込みなど）を含む。ハードディスクドライブ８１４、磁気ディスクドライブ８１６および光ディスクドライブ８２０は、それぞれ、ハードディスクドライブインターフェース８２４、磁気ディスクドライブインターフェース８２６および光ドライブインターフェース８２８によってシステムバス８０８に接続される。外部ドライブ実装形態のためのインターフェース８２４は、ユニバーサルシリアルバス（ＵＳＢ）とＩＥＥＥ１３９４インターフェース技術の少なくとも１つまたは両方を含む。
【００７２】
これらのドライブおよびそれに関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性記憶を提供する。コンピュータ８０２では、これらのドライブおよび媒体は、適当なディジタル形式で任意のデータの記憶を収容する。前述のコンピュータ可読媒体の説明では、ＨＤＤ、取り外し可能磁気ディスケット、およびＣＤやＤＶＤなどの取り外し可能光媒体に言及しているが、ｚｉｐドライブ、磁気カセット、フラッシュメモリカード、カートリッジなど、コンピュータによって読取り可能な他の種類の媒体もこの例示的動作環境で使用されること、さらに、そのような任意の媒体が本発明の方法を実行するコンピュータ実行可能命令を含み得ることが、当分野の技術者には理解されるはずである。
【００７３】
各ドライブおよびＲＡＭ８１２には、オペレーティングシステム８３０、１つまたは複数のアプリケーションプログラム８３２、その他のプログラムモジュール８３４およびプログラムデータ８３６を含むいくつかのプログラムモジュールが格納される。オペレーティングシステム、アプリケーション、モジュール、および／またはデータの全部または一部は、ＲＡＭ８１２にもキャッシュされる。
【００７４】
本発明は、様々な市販のオペレーティングシステムまたはオペレーティングシステムの組み合わせを用いて実施されることが理解される。
【００７５】
ユーザは、キーボード８３８や、マウス８４０などのポインティングデバイスといった、１つまたは複数の有線／無線入力装置を介してコンピュータ８０２にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ＩＲ遠隔制御、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーンなどが含まれ得る。上記その他の入力装置は、しばしば、システムバス８０８に結合された入力装置インターフェース８４２を介して処理装置８０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェースなど、他のインターフェースによっても接続される。
【００７６】
モニタ８４４または他の種類の表示装置も、ビデオアダプタ８４６などのインターフェースを介してシステムバス８０８に接続される。モニタ８４４以外に、コンピュータは、通常、スピーカ、プリンタなど、他の周辺出力装置（図示せず）も含む。
【００７７】
コンピュータ８０２は、リモートコンピュータ８４８など、１つまたは複数のリモートコンピュータへの有線および／または無線通信を介した論理接続を使用して、ネットワークで接続された環境で動作し得る。リモートコンピュータ８４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、携帯式コンピュータ、マイクロプロセッサベースの娯楽器具、ピアデバイスなど一般のネットワークノードとすることができ、簡単にするためにメモリ記憶装置８５０だけしか示していないが、通常は、コンピュータ８０２との関連で説明した諸要素の多くまたは全部を含む。図示の論理接続は、ローカルエリアネットワーク（ＬＡＮ）８５２および／または、広域ネットワーク（ＷＡＮ）８５４など、より大規模なネットワークへの有線／無線接続を含む。そのようなＬＡＮおよびＷＡＮネットワーク環境は、オフィス、企業でよく見られるものであり、そのすべてがインターネットなど世界規模の通信ネットワークに接続される、イントラネットなどの企業規模のコンピュータネットワークを円滑化する。
【００７８】
ＬＡＮネットワーク環境で使用される場合、コンピュータ８０２は、有線および／または無線通信ネットワークインターフェースまたはアダプタ８５６を介してローカルネットワーク８５２に接続される。アダプタ８５６は、ＬＡＮ８５２への有線または無線通信を容易にすることができ、ＬＡＮ８５２は、無線アダプタ８５６との通信のためにその上に配置された無線アクセスポイントを含むこともできる。ＷＡＮネットワーク環境で使用される場合、コンピュータ８０２は、モデム８５８を含むことができ、あるいはＬＡＮ上の通信サーバに接続され、あるいは、インターネットによるものなど、ＷＡＮ８５４を介した通信を確立する他の手段を備える。モデム８５８は、内蔵でも外付けでも、有線機器でも無線機器でもよく、シリアルポートインターフェース８４２を介してシステムバス８０８に接続される。ネットワーク化環境では、コンピュータ８０２との関連で示すプログラムモジュール、またはその一部は、リモートメモリ／記憶装置８５０にも格納される。図示のネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段も使用されることが理解されるであろう。
【００７９】
コンピュータ８０２は、例えば、プリンタ、スキャナ、デスクトップおよび／または携帯式コンピュータ、携帯情報端末、通信衛星、無線で検出可能なタグと関連付けられた任意の装置または場所（キオスク、ニューススタンド、トイレなど）、電話などといった、任意の無線機器または無線通信で動作可能なように配置されたエンティティと通信するように動作する。これは、少なくともＷｉ‐Ｆｉおよびブルートゥース（商標）無線技術を含む。ゆえに、通信は、従来のネットワークと同様の事前定義された構造とすることも、少なくとも２つの機器間の単なる随時通信とすることもできる。
【００８０】
Ｗｉ‐Ｆｉ、すなわちＷｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙは、自宅のソファ、ホテルの部屋のベッド、職場の会議室からの、無線でのインターネット接続を可能にする。Ｗｉ‐Ｆｉは、コンピュータなどの機器が、基地局の範囲内のどこであれ、屋内および屋外でデータを送受信することを可能にする、携帯電話のような無線技術である。Ｗｉ‐Ｆｉは、ＩＥＥＥ８０２．１１（ａ、ｂ、ｇなど）という無線技術を用いてセキュアで、高信頼性の高速無線接続を提供する。Ｗｉ‐Ｆｉネットワークは、コンピュータを、コンピュータ同士で、インターネットに、（ＩＥＥＥ８０２．３またはイーサネット（登録商標）を使用する）有線ネットワークに接続するのに使用される。Ｗｉ‐Ｆｉネットワークは、１１Ｍｂｐｓ（８０２．１ａ）または５４Ｍｂｐｓ（８０２．１ｂ）データ速度を用いて、または両方の帯域を含む（デュアルバンド）製品を用いて、許可不要の２．４および５ＧＨｚ無線帯域で動作し、そのため、このネットワークは、多くのオフィスで使用される基本的な１０ＢａｓｅＴ有線イーサネット（登録商標）ネットワークに類似の実際の性能を提供することができる。
【００８１】
次に図９を参照すると、本発明による例示的コンピューティング環境９００の概略的ブロック図が示されている。システム９００は、１つまたは複数のクライアント９０２を含む。クライアント９０２は、ハードウェアおよび／またはソフトウェア（スレッド、プロセス、コンピューティングデバイスなど）とすることができる。クライアント９０２は、例えば、本発明を用いることにより、クッキーおよび／または関連するコンテキスト情報を実装することができる。システム９００は、１つまたは複数のサーバ９０４も含む。サーバ９０４は、ハードウェアおよび／またはソフトウェア（スレッド、プロセス、コンピューティングデバイスなど）とすることができる。サーバ９０４は、例えば、本発明を用いることによって変換を実行するためのスレッドを実装することができる。クライアント９０２とサーバ９０４の間の１つの可能な通信は、２つ以上のコンピュータプロセスの間で送信されるように適合されたデータパケットの形とすることができる。データパケットは、例えば、クッキーおよび／または関連するコンテキスト情報を含むことができる。システム９００は、クライアント９０２とサーバ９０４の間の通信を円滑化するのに用いられ得る通信フレームワーク９０６（例えば、インターネットなど世界規模の通信ネットワーク）を含む。
【００８２】
通信は、（光ファイバを含む）有線および／または無線技術によって円滑化される。クライアント９０２は、クライアント９０２にとってローカルな情報（クッキーおよび／または関連するコンテキスト情報など）を格納するのに使用される１つまたは複数のクライアントデータストア９０８に動作可能に接続される。同様に、サーバ９０４も、サーバ９０４にとってローカルな情報を格納するのに使用される１つまたは複数のサーバデータストア９１０に動作可能に接続される。
【００８３】
前述の内容には本発明の例が含まれる。当然ながら、本発明を説明するために、想定されるあらゆるコンポーネントまたは方法の組み合わせを記述することは不可能であるが、本発明の多くの他の組み合わせおよび順列が可能であることを、当分野の技術者は理解すると考えられる。したがって、本発明は、添付の特許請求の範囲の範囲内に含まれるそのようなすべての変更形態、改変形態および変形形態を包含するものである。さらに、「ｉｎｃｌｕｄｅｓ」という用語が、詳細な説明または特許請求の範囲で使用される程度について、そのような用語は、「ｃｏｍｐｒｉｓｉｎｇ」という用語が、「ｃｏｍｐｒｉｓｉｎｇ」が請求項において移行語として用いられる場合に解釈されるのと同様に包含的であるものとする。
【図面の簡単な説明】
【００８４】
【図１】本発明によるアプリケーションカスタマイズを容易にするシステムを示す図である。
【図２】本発明による、カスタマイズされたアプリケーションの規則エンジンとの対話のモデルを示すブロック図である。
【図３】規則アーキテクチャの項目タイプおよびそれらの関係を示す図である。
【図４】本発明による、実行時の観点から見た、ゆるく束縛されたモデルのアプリケーションカスタマイズを示す流れ図である。
【図５】本発明による、実行時の観点から見た、きつく束縛されたモデルでの一方法を示す流れ図である。
【図６】本発明による、決定点のインスタンス化に関連付けられた一方法を示す流れ図である。
【図７】本発明による学習コンポーネントを用いるシステムを示す図である。
【図８】開示のアーキテクチャを実行するように動作可能なコンピュータを示すブロック図である。
【図９】本発明による例示的コンピューティング環境を示す概略的ブロック図である。
【図１】
2007537511.tif 000003
【図２】
2007537511.tif 000004
【図３】
2007537511.tif 000005
【図４】
2007537511.tif 000006
【図５】
2007537511.tif 000007
【図６】
2007537511.tif 000008
【図７】
2007537511.tif 000009
【図８】
2007537511.tif 000010
【図９】
2007537511.tif 000011