JP5255184B2 - 自動化されたデータ編成 - Google Patents

自動化されたデータ編成 Download PDF

Info

Publication number
JP5255184B2
JP5255184B2 JP2006016210A JP2006016210A JP5255184B2 JP 5255184 B2 JP5255184 B2 JP 5255184B2 JP 2006016210 A JP2006016210 A JP 2006016210A JP 2006016210 A JP2006016210 A JP 2006016210A JP 5255184 B2 JP5255184 B2 JP 5255184B2
Authority
JP
Japan
Prior art keywords
event
user
end user
rule
file system
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.)
Active
Application number
JP2006016210A
Other languages
English (en)
Other versions
JP2006244468A (ja
Inventor
ナイト ホリー
イシーバ カティカ
シシャドリ プラビーン
アビレア シャハフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006244468A publication Critical patent/JP2006244468A/ja
Application granted granted Critical
Publication of JP5255184B2 publication Critical patent/JP5255184B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は一般に、コンピューティングシステムに関し、より詳細には、ソフトウェアアプリケーションによるデータ処理に関する。
現代のコンピューティングシステムは、様々な実行状態において常にアクティブな多くのソフトウェアプロセスを含み得る。これらのプロセスは、オペレーティングシステムによって開始されることもでき、開始時に、またはユーザアプリケーションの起動時に初期設定されるプロセスを監視し、またはそれらのサービスを提供することもでき、ユーザアプリケーション自体とすることもできる。これらのプロセス、またはこれらのプロセスの機能の、大部分ではないにしろ、その多くは、ユーザが直接に制御できる範囲を超えるものである。したがって、これらのプロセスによって提供される機能がアクセスされる場合、そのようなアクセスは、通常は、別のソフトウェアプロセスによって成されなければならない。
ソフトウェアアプリケーションは、エンドユーザに代わって情報を管理する。コンピューティングシステム上で稼動するソフトウェアアプリケーションまたはプロセスの数は、一般に、システムが処理しなければならないデータの量とシステムが実行するよう要求されるタスクの数との関数である。これらの計算処理負荷のうちで最も効率の悪い部分は、人間との対話を必要とする部分である。コンピュータがますます強力になっているにもかかわらず、エンドユーザは、通常、大量のコンピュータ化された情報を手操作で処理しなければならない。
一般的なコンピューティングシステムの1つの主要なコンポーネントは、一般に、データファイルや実行可能プログラムなどの電子情報の永続的記憶に使用される、ハードディスクドライブなどの記憶装置である。電子情報を、使用可能な形で配置され、検索され得るように編成するために、ファイルシステムが用いられ得る。多くのファイルシステムが存在するが、それらは、一般にすべて、記憶装置上の情報の形式および場所のための概念的組織的な層を提供するものである。
ファイルシステムによって提供される概念的組織的な層は、オペレーティングシステムのプロセスのようなソフトウェアプロセスによって、記憶装置上に格納される情報の作成、アクセス、検索、削除、その他の管理に使用され得る。ファイルシステムの完全性を保護し、ファイルシステムの形式への準拠を保証するために、一般に、オペレーティングシステムの入出力プロセスのような、いくつかの特権的なソフトウェアプロセスだけがファイルシステムへの直接アクセスを許される。ファイルシステムにアクセスするアプリケーションおよびユーザは、一般に、オペレーティングシステムによって提供される機能を介してアクセスしなければならない。これらの機能は、普通、これらの機能の存在さえも知らないことがあるエンドユーザからは見えないように隠されている。一般に、この制限されたアクセスの結果として、ユーザは、例えば、ファイルシステムの属性を使ってファイル編成や位置指定といったタスクを自動化するなど、ファイルシステムの機能を十分に活用してコンピューティングタスクをより容易にすることができない。
一般に、エンドユーザは、情報のライフサイクルに従って自分のコンピュータ上の情報を管理する。そのライフサイクルの間、エンドユーザは、普通、情報を作成し、または何らかのソースから情報を獲得し、次いで、その情報が、ファイルシステムに格納される。ある時点において、エンドユーザは、その情報を検索し、その情報に基づいて操作を行う。このサイクルは、何度も繰り返され得る。現在のシステムは、エンドユーザが、このライフサイクルの一部を、効率のよい、そのエンドユーザの必要に合わせて独自のやり方で自動化することができない。
エンドユーザプログラミングモジュールは、コンピューティングシステムのエンドユーザが、1つまたは複数のユーザ定義アクションのトリガとして働き得るイベントを識別することができるようにする。エンドユーザは、このモジュールを使って、選択されたイベントの発生時に自動的に実行されるデータ処理タスクを定義することができる。これらのデータ処理タスクには、タスクの中でも特に、属性または内容についてのファイル編成およびファイルフィルタリングが含まれ得る。そのようなタスクの実行は、コンピュータシステムの1つまたは複数のコンポーネントによって実行され得る。ゆえに、エンドユーザプログラミングモジュールによって、ユーザは、データの記憶および編成を支援するカスタマイズされたエンドユーザプログラムを作成することができる。
エンドユーザプログラミングモジュールを用いて作成されるユーザプログラムは、タスクを実行するのに使用され得る複合エンティティを形成するように組み合わされ得る、1つまたは複数の基本型(basic types)から作成され得る。基本型は、さらに、他のコンポーネントと組み合わされて、より複雑なタスクを実行することができる。実行されるべきアクションは、エンドユーザがアクションを開始し、またはタスクが実行されている間にコンピュータシステムと対話することを必要とせずに、事前に選択されたイベントによって自動的にトリガされ得る。したがって、データを吟味し、そのようなデータをどこに格納すべきか決定するのではなく、ユーザは、前述の基本型を利用することによって、そのようなデータを自動的にフィルタにかけ、所望の場所に記憶させることができる。さらに、(データの受け取りなどの)イベントの発生時に、アクションは自動的に開始され得る。一例では、ユーザは、特定の個人から電子メールメッセージを受け取るたびに、インスタントメッセージングアプリケーションが呼び出され、インスタントメッセージが特定の連絡先に配信されると指定することができる。ゆえに、基本型(または基本型の組み合わせ)の利用によって、指定されたアクションが、異種のアプリケーションにまたがって行われ得ることが理解され得る。別の例では、ユーザによって定義されるアクションは、エンドユーザからのコマンドによって明示的に呼び出され得る。
使いやすさを助長するため、エンドユーザプログラミングシステムは、ファイルシステムと統合されて、コンピュータシステム上に格納された情報への一様なインターフェースを提供することができる。エンドユーザプログラミングモジュールとファイルシステムとの統合は、エンドユーザが、ユーザ対話の有無にかかわらずデータにルールが適用され、アクションが取られ得るように、格納されたデータに関してルールおよび取られるべきアクションを定義することができるようにする。この種のエンドユーザプログラミングシステムは、エンドユーザが、通常は隠され、エンドユーザがアクセスすることを禁じられるはずの、基礎をなすファイルシステムの機能を使ってデータを管理することを可能にし得る。
開示し、説明するコンポーネントおよび方法は、以下で説明し、特許請求の範囲において詳細に指し示す特徴を備える。以下の説明および添付の図面に、いくつかの例示的態様を詳細に示す。しかしながら、これらの態様は、開示するコンポーネントおよび方法が用いられ得る様々な方法のいくつかを示すにすぎない。開示し、説明するコンポーネントおよび方法の具体的実施形態は、そのようなコンポーネント、方法およびそれらの均等物の一部、多く、または全部を含み得る。本明細書に提示する具体的実施形態および例の変形形態は、以下の詳細な説明を図面と併せて考察すれば明らかになるであろう。
本願で使用する場合、「コンポーネント」、「システム」、「モジュール」などの用語は、ハードウェア、(例えば実行中の)ソフトウェア、および/またはファームウェアなど、コンピュータ関連のエンティティを指すものとする。例えば、コンポーネントは、プロセッサ上で稼動するプロセス、プロセッサ、オブジェクト、実行可能モジュール、プログラム、および/またはコンピュータなどとすることができる。また、サーバ上で稼動するアプリケーションとそのサーバの両方をコンポーネントとすることもできる。1つのプロセス内に1つまたは複数のコンポーネントが存在することができ、コンポーネントは、1つのコンピュータ上に集中させ、および/または2つ以上のコンピュータ間に分散させることができる。
開示するコンポーネントおよび方法を、図面を参照して説明する。図面全体を通して、類似の参照番号は類似の要素を指すのに使用する。以下の記述では、説明として、開示する内容の十分な理解を提供するための多数の具体的詳細を示す。しかしながら、具体的実施形態においては、これらの具体的詳細のいくつかが除外され、または他のものと組み合わされ得ることが明らかであると思われる。別の例では、説明を容易にするために、いくつかの構造および装置をブロック図の形で示す。さらに、開示する具体例は、クライアント/サーバアーキテクチャと整合性のある用語を使用し、またはクライアント/サーバ実施形態の例とすることさえもできるが、クライアントとサーバの役割は逆転され得ること、開示し、説明するコンポーネントおよび方法は、クライアント/サーバアーキテクチャに限定されず、開示し、説明するコンポーネントおよび方法の趣旨または範囲を逸脱することなく、具体的には、ピアツーピア(P2P)アーキテクチャを含む他のアーキテクチャにおける使用にも容易に適合され得ることを当分野の技術者は理解するであろう。さらに、本明細書で提示する具体例は特定のコンポーネントを含み、または参照するが、本明細書で開示し、説明するコンポーネントおよび方法の実施形態は、必ずしも、それらの特定のコンポーネントに限定されるものではなく、他の状況でも用いられ得ることに留意すべきである。
以下で説明する本発明の1つまたは複数の態様による推論および/または確率論的決定および/または統計ベースの決定との関連において、人工知能ベースのシステム(明示的に、および/または暗黙的に訓練される分類子など)が用いられ得る。本明細書で使用する場合、「推論(inference)」という用語は、一般に、イベントおよび/またはデータを介して取り込まれる1組の観測の集合から、システム、環境および/またはユーザの状態を推測し、または推論するプロセスを指す。推論は、特定の文脈またはアクションを識別するのに用いられ、または、例えば、状態の確率分布を生成することができる。推論は、確率論的とする、すなわち、データおよびイベントの考察に基づく当該の状態の確率分布の計算とすることができる。また、推論は、1組のイベントおよび/またはデータからより高いレベルのイベントを構成するのに用いられる技法も指し得る。そのような推論の結果として、1組の観測されたイベントおよび/または格納されたイベントデータから、それらのイベントが時間的に近接して相関しているか否か、それらのデータおよびイベントが1つのイベントまたはデータソースからのものか、それとも複数のイベントまたはデータソースからのものかを問わずに、新しいイベントまたはアクションが構築される。本明細書で開示し、説明するコンポーネントおよび方法に関連して自動の、および/または推論されたアクションを実行するのと関連して、様々な分類方式および/またはシステム、例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク、ファジィ論理、データ融合エンジンなどが用いられ得る。
図1は、エンドユーザプログラミングシステム100のシステムブロック図である。エンドユーザプログラミングシステム100は、エンドユーザプログラミングシステム100についての処理環境を提供し得るオペレーティングプラットフォーム110を含む。この文脈において、オペレーティングプラットフォーム110は、ハードウェアコンポーネントおよびソフトウェアコンポーネントの両方を含み得る。具体的には、オペレーティングプラットフォーム110は、パーソナルコンピュータ、ワークステーション、またはサーバのオペレーティングシステムとすることができる。イベント120は、オペレーティングプラットフォーム110によって作成されることができ、処理タスクが実行されている、または実行されたというインジケータとして働き得る。イベント120などのイベントは、他のコンピューティングコンポーネントによって検出することができ、事前定義されたコンピューティングタスクの実行を開始するためのトリガデバイスとして使用され得る。
エンドユーザプログラミング(「EUP」)モジュール130は、エンドユーザによって、イベント120の発生時にとられる、ユーザ定義アクション140などのアクションを定義するために操作され得るコンポーネントを提供し得る。ユーザ定義アクション140は、単一のタスクとすることも、実行すべきタスクのグループとすることもできることに留意すべきである。EUPモジュール130は、手動で操作され得る、または、以前には、それだけに限らないが、オペレーティングシステムやサービスコンポーネントなど、他のソフトウェアコンポーネントによってのみアクセスされ得た、システム機能へのインターフェースを提供することができる。
動作に際して、エンドユーザは、ユーザ定義アクションをトリガするのに使用され得る、イベント120などのイベントを識別するためにEUPモジュール130にアクセスする。また、エンドユーザは、エンドユーザが、識別されたイベントの発生時にシステムに自動的に実行させようとする、アクションまたはアクションのグループも定義する。次いで、イベントがユーザ定義アクションにバインドされる。すなわち、イベント120の発生時に、オペレーティングプラットフォームがユーザ定義アクションを実行する。
例えば、エンドユーザは、特定の人物からの電子メールメッセージの受信をトリガイベントとして識別することができる。その場合、エンドユーザは、そのような電子メールメッセージの受信時に、そのメッセージが定義されたメールボックスフォルダに転送され、メッセージの受信を確認する応答が送信者に送信され、文書がファイルサーバから検索され、適切なプログラムにおいて開かれ、コンピュータ上で文書が用意できていることをユーザに知らせる可聴警報が鳴るようなアクションを作成することができる。これらのステップは、システム100の利用により、ユーザ介入なしで自動的に実行され得る。
図2は、エンドユーザプロセシングシステム200のシステムブロック図である。エンドユーザプロセシングシステム200は、人間ユーザのためにシステムへのアクセスを可能にするユーザインターフェース210を含む。ユーザインターフェース210は、特に、グラフィカルユーザインターフェース、コマンドラインインターフェース、Webベースのインターフェースなど、任意の適切な人間/コンピュータインターフェースとすることができ、ハードウェアコンポーネントおよびソフトウェアコンポーネントの両方を含み得るオペレーティングプラットフォーム220に結合され得る。また、ユーザインターフェース210は、イベントハンドラ230およびルールデータストア240にも接続することができ、イベントハンドラ230は、イベント245の発生を検出し、プロセシングサブシステム250にアクセスすることができる。
動作に際して、ユーザインターフェース210は、トリガイベントとして使用されるイベントを識別し、そのイベントのユーザ定義アクションへのバインディングを生じさせ得るエンドユーザに、イベントハンドラ230およびルールデータストア240へのアクセスを提供する。その場合、ユーザ定義アクションは、さらに、ルールデータストア240内に格納され得る。オペレーティングプラットフォーム220は、イベントハンドラ230によって検出されるイベント245を作成し、イベントハンドラ230は、ルールデータストア240にアクセスして、ユーザ定義アクションが、検出されたイベントにバインドされているかどうか判断することができる。バインドされている場合、イベントハンドラ230は、プロセシングサブシステム250にアクセスして、ユーザ定義アクションの実行を指示する。
エンドユーザ定義のタスクの作成または実行時に適用されるルールは、ルール代数(rules algebra)によるものとすることができる。使用され得る適切なルール代数の詳細は、EUPモジュールの具体的実施形態に従って大きく異なり得る。以下で、ルール代数の一例を提示し、より詳細に説明する。このルール代数の例は、ルールプラットフォームを形成するように統合され得る様々な論理コンポーネントを含み得る。それらのコンポーネントの中には、他の項および式のビルディングブロックとして働き得る基本項が含まれる。他の項または式から構築されている項および式自体も、より複雑な項または式を作成するためのビルディングブロックとして使用され得る。このようにして、エンドユーザ定義のタスクの実行時に適用されるますます複雑なルールが作成され得る。
Property(T)は、エンドユーザ型Tの1つの特性を記述し得る。エンドユーザは、1つまたは複数の特性を使って、フィルタやアクションなど、別の論理コンポーネントを記述することができる。特性は、エンドユーザ型Tの何らかの一般的な記述子とすることができる。TやTプライムなどの異なる型に適用されるときには、同じ記述子が使用され得る。このようにして、Property(T)およびProperty(T−prime)は、両方とも、記述子として使用されることができ、異なるコンポーネントとすることができる。入力項目型Tおよび出力型Oを有するルールは、型Tに対する型Oの特性として定義され得る。
Filter(T)は、型Tの項目に対するフィルタとして使用され得るブール関数とすることができる。具体的には、Filter(T)は、そのルールの実行の処理結果としてブール型を返すルールとすることができる。項目の集合に適用されるFilter(T)ルールは、その集合の中の個々の項目に対するFilter(T)の実行後に返されるブール型の値を検査することによって、そのルールの条件を満たさない項目をフィルタリングすることができる。Filter(T)ルールの条件を満たす項目は、適用されるFilter(T)ルールに、返されるブール型として真の値を返すよう促すことができる。
同様にして、適用されるFilter(T)ルールの条件を満たさない項目は、Filter(T)ルールに、返されるブール型として偽の値を返すよう促すことができる。Filter(T)ルールは、適用されるFilter(T)ルールの条件を満たし、または満たさない項目のサブセットを獲得するために、集合の中の各項目に反復して適用され得る。このようにして、包含的または排他的サブセットが作成され得る。包含的サブセットは、適用されるFilter(T)ルールの条件を満たし、真の戻りブール値を促し、結果として包含されると記述される項目を生じる項目を持ち得る。排他的サブセットは、適用されるFilter(T)ルールの条件を満たさず、偽の戻りブール値を促し、結果として除外されると記述される項目を生じる項目を持ち得る。どちらのサブセットもその後の処理に使用され得る。
Action(T)は、結果を作成する何らかの所望の副次作用を持ち得る、型Tの項目のメソッドとして作成され得る。通常、Action(T)は、他のパラメータを使用し、または必要とし得る。入力型Tを持ち、閉集合を出力するルールは、型Tの項目に対するアクションを定義することができる。Set(T)は、型Tの項目のグループ化である。
Event(T)は、対象となる何らかの発生(occurrence)を定義するのに使用することができ、通常は、例えば、型Tのイベントデータなどのデータの項目に関連付けられる。Event(T)は、単純なイベントを定義するのにも使用され、二項代数演算を使用するより複雑なイベントを作成するために、ビルディングブロックとしても使用され得る。Filter(T)と組み合わされると、Event(T)は、派生Event(T)を作成するために使用され得る。代数項としては、以下の通りである。
DerivedEvent(T)=Event(T)+Filter(T)
一般に、派生イベントは、イベントにフィルタを適用することによって作成され得る。また、他の構成も代数原理を使って形成され得る。例えば、相補的な項目型(例えば、両方とも同じ親型の副型である2つの型など)に対する2つのフィルタは、以下のように組み合わされ得る。
Filter(T)=Filter1(T_subtype_1)∪Filter2(T_subtype_2)
バッチは、プログラムモジュールによって実行される集合指向の(set-oriented)タスクを定義することができる。バッチのセマンティクスは、結果として、集合中の各項目に対して何らかの事前定義のアクションを実行するように定義され得る。他のモジュールの場合と同様に、バッチは、手動コマンドに際して、または何らかのイベントの自動発生時に実行され得る。バッチは、以下のように、集合とアクションを組み合わせることによって作成され得る。
Batch=Set(T)+Action(T)
エージェントは、エージェントの実行およびそのエージェントに関連付けられたアクションの実行を始動させ得るトリガとして働くことのできる事前定義イベントの発生時に実行される何らかのアクションを定義することができる。代数項としては、以下の通りである。
Agent=Event(T)+Action(T)
ルールは、何らかの論理で接続され得る様々な条件を使って作成され得る。各ルール内において、条件が様々に構成され得る。例えば、指定された特性を持つ項目が、以下を使って記述され得る。
Figure 0005255184
また、他の条件も可能であり、ルールを構成するのに使用され得る。
個々のEUP論理コンポーネントがアプリケーション内で評価され得る。そのような評価は、バックグラウンドタスクとして実行され、したがって、ユーザには不可視とすることができる。それに加えて、または代替として、これらのタスクは、ユーザによって入力されたコマンドに従って明示的に実行することもできる。一般に、いくつかの型のプログラムがコアプログラムグループとして使用され得る。例えば、派生集合などのコア型を完全なエンドユーザプログラムとすることができる。派生集合が起動され、または実行されると、その集合定義の論理に関連付けられたコマンドが実行され、その実行結果が表示され得る。さらに、派生集合は、代数演算でも使用され得る。例えば、2つの派生集合が以下のように組み合わされ得る。
Set(T)=Set1(T)∪Set2(T)
別の例として、事前定義のイベントの発生時に指定されたアクションを実行するようにエージェントが作成され得る。前述のように、エージェントは、Action(T)と組み合わされたEvent(T)である。エージェントのイベント部分の発生時に、エージェントのアクション部分の処理ステップが実行され得る。このようにして、エージェントの実行が、エンドユーザからの介入なしにトリガされ得る。
EUP代数には、ルール代数によって規定されるオブジェクト型および操作にアクセスする手段を提供し得るアプリケーションプログラミングインターフェース(API)を介してアクセスされ得る。さらに、APIは、直接にアクセスされ得る、以前に構築されたEUP論理コンポーネントなど事前定義コンポーネントのグループも、基本項からそのようなコンポーネントを構築する代替手段として提供し得る。
図3は、ルール型階層(rule type hierarchy)300のスキーマ図である。ルール型階層300のスキーマは、型を、本明細書で説明するイベント、ルール、エンドユーザプログラムなどの、1つまたは複数の機能コンポーネントに編成するのに使用され得る。それに加えて、または代替として、特定の実施形態の詳細により他の何らかのコンポーネント、またはこれら前述のコンポーネントの1つまたは複数の変形も作成され得る。作成されたイベント、ルール、またはエンドユーザプログラムは、エンドユーザによって組み立てられ、または定義されるコンポーネントの詳細によって、何らかのデータ処理タスクを実行するのに、適宜、単独で、または組み合わせて使用され得る。この図3に提示する例では、イベントは、実行可能コンポーネントの実行をトリガし得るルールイベント320などのルールイベントとすることができる。ルールは、コンピューティングシナリオに適用される論理を定義し得るルール論理330などのルール論理とすることができる。ルールプログラム340などのルールプログラムは、エンドユーザプログラムまたは別の実行可能コンポーネントとすることができる。この具体例では、ルールイベント320、ルール論理330、およびルールプログラム340のそれぞれは、1つまたは複数のサブコンポーネントと関連付けられ得る。したがって、これらのサブコンポーネントのそれぞれは、例えば、イベントなどの単純な項目型とすることもでき、あるいはそうではなく、派生集合など、エンドユーザ作成の型または複合型とすることもできる。
ルールイベントコンポーネント320は、エンドユーザによって作成されるルールプラットフォームエージェントによって使用されるイベント型すべての基本型とすることができ、概念上抽象的であり、各エージェントによって参照され得る共通型を提供するように働くことができる。エージェントは、エージェントに、そのような実行をいつ実行し、またはトリガすべきか知らせることのできる、ルールイベントコンポーネント320などのルールイベントコンポーネントのインスタンスを参照することができる。ルールイベントコンポーネント320は、例えば、基本イベント322などの基本イベントやフィルタリングされたイベント324などの派生イベントとされ、またはそれに関連付けられ得る。一例では、基本イベント322は、ルールイベントコンポーネント320から派生させ得る。基本イベント322などの基本イベント型は、アプリケーションが、論理イベントの発動を表すためにルールシステムに入力項目を提示するフック点として動作することができる。例えば、基本イベントは、特に、項目がデータストアに付加されることや、データストアの項目が変更されることなどのイベントを表すことができる。イベント項目を介した入力項目の提示は、そのイベントが発生していることを伝達し、結果として別のイベントを発動し得るプロセスを開始させることができる。
また、フィルタリングされたイベント324は、ルールイベントコンポーネント320からも派生させ得る。フィルタリングされたイベント324は、別のルールイベントへの参照、およびそのイベントの発動をフィルタリングするのに使用するためのフィルタ論理型のインスタンスへの参照を含み得る。フィルタリングされたイベント324は、ルールイベントコンポーネント320など、そのソースルールイベントコンポーネントの発動に基づいて発動し得る。ソースイベントの発動時に、フィルタリングされたイベント324は、それに対してソースイベントが発動された入力項目を取り、その入力項目に対してそのフィルタ論理コンポーネントのインスタンスを評価することができる。フィルタリングされたイベント324は、フィルタ論理が真であると評価された場合に限り発動する。この例では、フィルタリングされたイベント324などのフィルタリングされたイベントは、直接API関数呼び出しを使って生成することはできず、そのソースイベントが発動され、ソースイベントがそれに対して発動された入力項目について、そのフィルタ論理が真であると評価した場合に限り生成され得る。
ルール論理コンポーネント330は、ルール論理コンポーネントが、ルール論理コンポーネント330を使用し、または別の方法でルール論理コンポーネント330関連付けられたコンポーネントに1つまたは複数のコンピューティングタスクを実行させ得る処理ステップを定義していることができるという意味で、ルールとして記述され得る。ルール論理コンポーネント330は、フィルタ論理332、特性論理334、アクション論理336、および関連論理338とし、またはそれらに関連付けることができる。フィルタ論理332、特性論理334、アクション論理336、および関連論理338は、ルール論理を作成するのに使用され得る。フィルタ論理332は、入力型の所与の項目インスタンスをフィルタリングするルール論理を定義することができる。フィルタ論理332の出力型は、ブール値またはヌル値とすることができる。また、特性論理334もルールを定義することができる。定義されたルールは、特定の項目インスタンスが与えられたときに指定された型の値を計算することができ、したがって、計算された特性として働くことができる。この概念をサポートするために、特性論理334の出力型が特性型として表され得る。
アクション論理336は、指定された入力型の特定の項目インスタンスが与えられたときに実行すべきアクションのシーケンスを生成し得るルールを定義することができる。アクション論理336の出力は、列挙可能であり、実行されるアクションのシーケンスを符号化するオブジェクトとすることができる。関連論理338は、ルール定義から派生させることができ、ソース型の特定の項目インスタンスが与えられたときに指定されたターゲット型の項目集合を生成し得るルールを定義することができる。関連論理338の出力は、その項目集合を構成する列挙可能な項目のインスタンスとすることができる。
この例示的ルール代数によって記述される項目の1つのクラスは、実行可能コンポーネントを含む。これらの実行可能コンポーネント自体は論理記述を含まず、エンドユーザによって作成され、ルール論理定義を入力コレクションと一緒に結合するように働き得るラッパプログラム(wrapper programs)である。1つの実行可能コンポーネントは、ルールプログラム340とすることができる。ルールプログラム340は、エンドユーザプログラム型の共通基本型を形成し得る。ルールプログラム340の1次機能は、バッチやエージェントといったエンドユーザプログラム型のすべてのインスタンスを、持続させ、検索され得るようにし、そのような共通入力型に基づいてフィルタリングされ得るようにすることとし得る。
ルールプログラム340は、問い合わせ(query)342、エージェント344、バッチ346など他のコンポーネントとし、またはそれらに関連付けることができる。問い合わせ342は、問い合わせの制限に従って評価され得る、計算された結果項目集合を表し得る。エージェント344は、イベントの発動時または何らかの偶発事件の発生時に実行される1つまたは複数のアクションを表し得る。バッチ346は、項目のコレクションに対して実行される1つまたは複数のアクションを表し得る。エンドユーザは、これらのコンポーネントを様々な方法で組み合わせて実行可能なルールプログラムを作成することができる。
図4は、統合ファイルシステムを含むエンドユーザプログラミングシステム400のシステムブロック図である。エンドユーザプログラミングシステム400は、そのプログラミング機能のためのサポートを、この基礎をなすファイルシステムの特定の機能から導出することができる。具体的には、EUPシステムの適当な基礎をなすファイルシステムとの統合は、エンドユーザが対話するコンピューティングシステムのあらゆる態様がそれに基づいてプログラム可能とされ得る基礎を提供し得る。
エンドユーザプログラミングシステム400は、特に、グラフィカルユーザインターフェース、Webベースのインターフェース、テキストベースのインターフェース、コマンドラインインターフェースなど、任意の適当なユーザインターフェースとすることのできる、ユーザインターフェース410を含む。ユーザインターフェース410は、ルール層420およびエンドユーザプログラミングモジュール430に結合される。ルール層420は、エンドユーザ作成のエージェント、バッチ、その他のコンポーネントを含むEUPシステムのすべての事前定義コンポーネントを含み得る。
エンドユーザプログラミングモジュール430は、エンドユーザがエージェントなどのコンポーネントを定義するための機構を提供する。エンドユーザプログラミングモジュール430は、ユーザインターフェース410と共に、統合開発環境が従来のソフトウェア開発者に提供し得る機能の、全部ではないとしても、多くを提供し得る。そのような機能には、手法の中でも特に、グラフィカルウィジェット(widget)をドラッグアンドドロップすることにより、またはアクションをあらかじめスクリプトとして登録することにより、コンポーネントを再利用し、コンポーネントをバージョン管理し、コンポーネントを構築することのできる機能が含まれ得る。
ファイルシステム440は、データ項目が、特に、ハードディスクや光ディスクといった何らかの物理メディア上にどのようにして格納されるかの概念的表現を提供し得る。この具体例では、オブジェクト指向の設計概念を大いに活用するファイルシステムが提示される。より具体的には、ファイルシステム440は、項目が、APIを介してアクセスされ、何らかの所望の結果を生成するために評価され得る全体式(overall expression)の一部としてその内部に格納されるフレームワークを提供し得る。また、ファイルシステム440は、永続性のためだけに使用することができ、メソッドのパラメータまたは結果としては使用されないインライン型の集合も含み得る。
ファイルシステム440は、「NOT」、「AND」、「OR」などの論理演算子グループを含み得る。さらに、ファイルシステム440は、特に、条件演算子、算術演算子、集約演算子、日付、時刻、およびストリング演算子、型キャストなどの頑強なプログラミング構成体も提供し得る。また、メソッドおよびそのようなメソッドを呼び出す機能も提供される。例えば、APIを介して様々なコンストラクタ、デストラクタ、値アクセサ(accessor)、および値セッタ(setter)がアクセスされ得る。
ファイルシステム440が提供し得るサポート機能の中には、データを管理し、命名し、共有し、格納し、同期し、および検索するインフラストラクチャ機能がある。ファイルシステム440は、エンドユーザが、エンドユーザプログラムを構築することの一部として、ファイルシステム440が提供し得る機能すべてにアクセスできるように、ルール層420およびエンドユーザプログラミングモジュール430にこれらの機能すべてを提供し得る。本明細書で提示する例では、ルールのスキーマは、ファイルシステムによってサポートされる型システムに適合しなければならない。また、エンドユーザプログラミング概念についてのAPI面全体も、ファイルシステムAPIの標準モデルに従う。これらの設計選択の1つの副次作用は、ファイルシステム項目に不利に働く汎用ユーザインターフェースアプリケーションが、エンドユーザプログラミング項目にも同様に不利に働くことである。
論理的には、ファイルシステム440には、2つのスキーマレベルがあり得る。第1のレベルには、開発者コード用のスキーマがあり得る。この開発者コードスキーマは、項目タイプおよびそれらの項目の挙動態様を定義し得る。このレベルのスキーマを使用することによって、開発者は、共通の参照フレームを用いてデータ抽象化を共有する。第2のレベルには、エンドユーザ論理用のスキーマがあり得る。このエンドユーザ論理レベルは、エンドユーザルールのフレームワークを提供するのに使用され得る。
また、エンドユーザとファイルシステム440両方の型システムも厳密に整合され得る。具体的には、この例では、エンドユーザ型の型階層は、ファイルシステム型の型階層の簡略化とすることができる。ファイルシステム階層中のいくつかの型は、おそらく、それらがエンドユーザに無関係であるために省略され得る。さらに、あらゆるエンドユーザ型から基礎をなすファイルシステム型へのマッピングまたはバインディングも作成され得る。マッピングまたはバインディングは、エンドユーザレベルとファイルシステムレベルの間のギャップを埋めるために使用され得る。バインディングは、エンドユーザスキーマ要素の名前をローカライズする機能を含めて、多目的に使用され得る。具体的には、この例では、バインディングはルールとすることができる。ありふれた事例では、バインディングは、その条件が常に真であり、その結果が開発者型に関する特定の基礎をなす特性である単一のステートメントを有するルールとすることができる。
また、バインディングは、開発者レベルスキーマとエンドユーザレベルスキーマの間の間接化(indirection)のレベルも提供し得る。ここでは、様々なアクセス制御ポリシが、特定の実施形態に応じて適用され得る。例えば、ファイルシステム開発者は、開発者が作成する型のどの特性がエンドユーザにとってアクセス可能になるか定義することを許され得る。代替として、エンドユーザに、エンドユーザが開発者作成型のどの特性にアクセスしようとするか決定する能力を与えることもできる。また、これら2つの手法の何らかの組み合わせも可能である。
図5は、統合ファイルシステムを含むエンドユーザプログラミングシステム500のシステムブロック図である。エンドユーザプログラミングシステム500は、エンドユーザによって制御され、または所有される空間で実行され得るアプリケーションをカスタマイズするのに使用され得る。それに加えて、または代替として、エンドユーザプログラミングシステム500は、特に、システムプロセスやデーモンなど他の空間で動作するアプリケーションの挙動を変更するコンポーネントを作成するのにも使用され得る。
エンドユーザプログラミングシステム500は、特に、グラフィカルユーザインターフェース、Webベースのインターフェース、テキストベースのインターフェース、コマンドラインインターフェースなど、任意の適当なユーザインターフェースとすることのできるユーザインターフェース510を含む。また、特に、視覚障害者用の点字インターフェースや音声インターフェースなどの特殊なインターフェースも可能である。ユーザインターフェース510は、特に、電子メールクライアント、ワードプロセッサ、スプレッドシートプログラム、Webブラウザなどのエンドユーザ制御のアプリケーションを含み得るアプリケーション層520に結合される。それに加えて、または代替として、アプリケーション層520は、特に、ドメインネームシステム(DNS)検索やネットワーク接続機能など、他の実行コンピュータプログラムにサービスを提供する、いわゆるシステムプロセスも含み得る。
ルール層530は、アプリケーション層520に結合される。ルール層530は、アプリケーション層520にエンドユーザプログラミングコンポーネントおよびサポートを提供し、図4のルール層420と同様に実装され得る。また、エンドユーザプログラミングモジュール540は、ルール層530とユーザインターフェース540の両方に結合される。エンドユーザプログラミングモジュール540は、図4のエンドユーザプログラミングモジュール430とほとんど同じく、ルール層530へのアクセスおよび新しいルールを作成する機能を提供し得る。
ファイルシステム550は、ルール層530のルール、およびエンドユーザプログラミングモジュール540によって作成され得る他のエンドユーザプログラムが、それに基づいて、アプリケーション層520によってアクセスされ、または別の方法で使用され得るストレージフレームワークを提供し得る。この状況で使用するために、任意の適当なファイルシステムが使用され、または適合され得る。エンドユーザプログラミング機能用のAPIと統合され、またはそれにマップされ得るAPIを備えるファイルシステムは、この用途に特に適する。
動作に際して、エンドユーザは、ユーザインターフェース510を介してエンドユーザプログラミングシステム500と対話することができる。エンドユーザは、エンドユーザプログラミングモジュール540を使って、ルール層530に付加され得る、特に、ルール、エージェント、またはバッチを作成することができる。また、エンドユーザは、ユーザインターフェース510を介してアプリケーション層520のアプリケーションにアクセスすることもできる。
イベントまたは他の何らかのトリガオブジェクトがルールを起動させると、アプリケーション層520とルール層530の間でメッセージが受け渡しされ得る。ルール起動の詳細に応じて、これらのメッセージは、同期または非同期とすることができる。次いで、起動された1つまたは複数のルールが、どれであれ、その設計に従って実行され、ファイルシステムAPIの、マップされ、またはバインドされた部分を使って、ファイルシステムレベル550において適当な変更を行うことができる。
図6は、ファイルシステム上に格納された電子情報を管理するエンドユーザ定義のプログラムモジュールを作成するのに使用され得るエンドユーザプログラミングシステム600のシステムブロック図である。これらのプログラムモジュールは、エンドユーザからの特定の命令に従って、ファイルシステム上に格納された情報を操作するためにエンドユーザによって作成されたルールを自動的に適用することができる。そのような命令は、情報をグループ化し、または何らかの事前定義のイベント発生時に編成タスクなど特定の情報管理タスクを実行するためのフィルタを適用することを含み得る。
エンドユーザプログラミングシステム600は、ルール作成または変更、イベント定義などのエンドユーザプログラミングサポート機能へのアクセスを提供し得るエンドユーザプログラミングモジュール610を含む。エンドユーザプログラミングモジュール610は、具体的には、他の図との関連で前述したエンドユーザプログラミングモジュールのいずれかとして実装され得る。エンドユーザプログラミングモジュール610を使って作成されるエンドユーザプログラムは、イベント駆動プログラムの場合と同様に、自動的に実行され、またはエンドユーザから特定のコマンドによって呼び出され得る。
人間/コンピュータインターフェース620は、エンドユーザプログラミングモジュール610の機能および機構へのアクセスを提供し得る。特定の実施形態の必要および要求に応じて、様々なコンポーネントを使って人間/コンピュータインターフェース620が実装され得る。例えば、人間/コンピュータインターフェース620は、オペレーティングシステムのグラフィカルユーザインターフェースなど、グラフィカルユーザインターフェースとして実装され得る。代替として、人間/コンピュータインターフェース620は、特に、Webブラウザに基づくものとすることもでき、コマンドラインなどテキストベースのインターフェースとすることもでき、点字タッチベースのインターフェースとすることもでき、音声ベースのインターフェースとすることもできる。
ルールプラットフォーム630は、エンドユーザプログラミングモジュール610を使って作成されるエンドユーザ定義のプログラムを含み得る。さらに、ルールプラットフォーム630には、エンドユーザプログラムを作成するのに使用され得るビルディングブロックコンポーネントも含まれ得る。エンドユーザプログラミングモジュール610および人間/コンピュータインターフェース620は、両方とも、エンドユーザに、ルールプラットフォーム630中のエンドユーザプログラムを作成させ、変更させ、削除させ、その実行を呼び出させるために、ルールプラットフォーム630にアクセスし得る。
ルールプラットフォーム630は、ファイルシステム640に結合される。ファイルシステム640は、データ編成および検索タスクをサポートし得る任意の適当なファイルシステムとして実装され得る。具体的には、ファイルシステム640は、ファイルシステム640の機能へのアクセスを提供するAPIと共に、ルールプラットフォーム630の機能がファイルシステム640の機能にマップされ、またはバインドされ得るように、ルールプラットフォーム630のAPIと結合され得る。このようなルールプラットフォーム630のファイルシステム640との統合は、エンドユーザが、ファイルシステム機能を、特に、情報編成および自動化処理タスクを含む様々なコンピューティングタスクに使用し得るように、ファイルシステム640の機能をエンドユーザに事実上公開する。エンドユーザによるファイルシステム640の機能へのアクセスは、ルールプラットフォーム630を介したものであり、ファイルシステムを破損し、または別のやり方で損傷し得る、意図しない、または悪質なアクションからファイルシステム640を保護する層が提供される。例えば、ファイルの論理的場所を変更せずに、ファイルを、記憶装置上の1つの物理的場所から別の場所に移動させるなどの特定の機能は、エンドユーザプログラミングモジュール610またはルールプラットフォーム630の機能にはマップされず、バインドされないままとし、エンドユーザがその機能にアクセスするのを防ぐことができる。
ファイルシステム640は、1つまたは複数の永続的記憶装置(PS:persistent storage devices)650、660、670(PS)に論理ファイル編成を強制することができる。永続的記憶装置650、660、670は、ハードディスクドライブ、光ドライブ、フラッシュメモリ装置、またはその他適当な記憶装置とすることができ、それぞれファイルシステムを使用する別個のディスクとして独立に動作し得る。それに加えて、または代替として、永続記憶装置650、660、670は、1つまたは複数の物理ディスクドライブ上の論理パーティションとすることもできる。この構成では、エンドユーザは、記憶領域を提供する複数のディスクまたはパーティションがあることを知ることができる。また、永続的記憶装置650、660、670は、RAID(redundant array of independent disks)の場合と同様に、単一の論理記憶ボリュームの一部としても統合され得る。RAIDアレイとして構成されると、永続的記憶装置650、660、670は、単一ファイルシステムを使用する単一エンティティとしてアクセスされ得る。また、永続的記憶装置650、660、670は、ストレージエリアネットワーク(SAN)または他の何らかの記憶システムの一部とすることもできる。
動作に際して、エンドユーザプログラミングシステム600は、以下のように機能し得る。エンドユーザは、エンドユーザプログラムを作成するために、人間/コンピュータインターフェース620を介してエンドユーザプログラミングモジュール610にアクセスすることができる。エンドユーザプログラムは、エンドユーザからのコマンドによって、あるいは特定の、または事前定義のイベントの発生時に実行が呼び出されるまで、ルールプラットフォーム630上にある。ルールプラットフォーム630は、ファイルシステム640に、ファイルシステム640が、永続的記憶装置650、660、670上で何らかの情報操作タスクを実行するよう要求するメッセージを送る。要求されたタスクが正常に完了し、または失敗すると、同期メッセージ環境において、ファイルシステム640は、エンドユーザプログラムに要求されたタスクの結果を知らせるメッセージをルールプラットフォーム630に送る。代替として、非同期メッセージングシステムの場合と同様に、ファイルシステム640は、ルールプラットフォーム630に応答メッセージを送らずに、要求されたタスクを実行し、または実行しようとすることもできる。要求されたアクションに関する情報は、エンドユーザに見えるように人間/コンピュータインターフェース620上に表示される。
図7は、ネットワークを介してアクセスされ得る、リモートファイルシステム上に格納された電子情報を管理するエンドユーザ定義のプログラムモジュールを作成するのに使用され得る、ネットワークを介して接続されたエンドユーザプログラミングシステム700のシステムブロック図である。ネットワークを介して接続されたエンドユーザプログラムモジュールは、リモートファイルシステム上に格納された情報にアクセスし、またはそれを操作するために、エンドユーザによって作成されたルールを自動的に適用することができる。ネットワークを介して接続されたエンドユーザプログラミングシステム700は、ルール作成、ルール変更および定義や、トリガイベントの識別のようなエンドユーザプログラミングサポート機能へのアクセスを提供するエンドユーザプログラミングモジュール710を含む。エンドユーザプログラミングモジュール710は、具体的には、他の図との関連で前述したエンドユーザプログラミングモジュールのいずれかとして実装され得る。そのような実施形態と一致する、エンドユーザプログラミングモジュール710を使って作成されるエンドユーザプログラムは、イベント駆動プログラムの場合と同様に、自動的に実行され、あるいは、エンドユーザからの特定のコマンドによって呼び出され得る。
ルールプラットフォーム720は、エンドユーザプログラミングモジュール710を使って作成されたエンドユーザ定義のプログラムを含み得る。さらに、ルールプラットフォーム720には、エンドユーザプログラムを作成するのに使用され得るビルディングブロックコンポーネントも含まれ得る。エンドユーザプログラミングモジュール710およびユーザインターフェース730は、両方とも、エンドユーザに、ルールプラットフォーム720中のエンドユーザプログラムを作成させ、変更させ、削除させ、およびその実行を呼び出させるために、ルールプラットフォーム720にアクセスすることができる。また、ルールプラットフォーム720は、ルールプラットフォーム720のエンドユーザプログラムまたはその他のコンポーネントとファイルシステム740との間のネットワーク接続または、メッセージ受け渡しなどのその他の通信機能も提供し得る。そのために、ルールプラットフォームはネットワーク750を使用し得る。ネットワーク750は、任意の適当な有線または無線ネットワークとすることができ、特に、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、イントラネット、またはインターネットとすることができる。この実施形態と合致するルールプラットフォーム720は、特に、転送制御プロトコル/インターネットプロトコル(TCP/IP)スタックのような通信スタックなどのネットワーク接続コンポーネントを含み得る。代替として、ルールプラットフォーム720は、単に、オペレーティングシステムやネットワーク接続アプリケーションなど別のコンポーネントによって提供される機能にアクセスすることもできる。
ファイルシステム740は、リモート記憶装置760に組織階層を強制することができる。リモート記憶装置は、ディスクドライブなどの永続的記憶装置、または、具体的には、他の図との関連で開示し、説明した種類を含む、他の任意の種類の永続的記憶装置とすることができる。それに加えて、または代替として、リモート記憶装置は、データベース、またはファイルシステムと同様の方式でアクセスおよび操作機能を提供し得る別の種類のデータストアとすることができる。
動作に際して、ネットワークで接続されたエンドユーザプログラミングシステム700は以下のように機能し得る。エンドユーザは、1つまたは複数のエンドユーザプログラムを作成するために、ユーザインターフェース730を介してエンドユーザプログラミングモジュール710にアクセスすることができる。これらのエンドユーザプログラムは、エンドユーザからのコマンドによって、あるいは特定の、または事前定義されたイベントの発生時に実行が呼び出されるまでルールプラットフォーム720上にある。ルールプラットフォーム720はネットワーク750を使って、ファイルシステム740にリモート記憶装置760に関連した何らかの情報関連のタスクを実行するよう要求するメッセージをファイルシステム740に渡す。要求されたタスクが正常に完了し、または失敗すると、ファイルシステム740はネットワーク750を使って、エンドユーザプログラムに要求されたタスクの結果を知らせるために、ルールプラットフォーム720にメッセージを渡す。結果に関する情報は、エンドユーザに見えるようにユーザインターフェース730に表示される。
図8〜9を参照すると、様々な方法または手順による流れ図が提示されている。説明を簡単にするために、例えば、流れ図の形などで本明細書に示す1つまたは複数の方法を、一連の動作として図示し、説明するが、いくつかの動作は、本明細書で図示し、説明する順序と異なる順序で、かつ/またはその他の動作と同時に行われ得るため、図示し、説明する方法および手順も、そのような方法または手順に使用され得るどんなコンポーネントも、必ずしもその動作順序に限定されないことを理解し、認めるべきである。例えば、方法は、代替として、状態図などの場合のように、一連の相互に関連する状態またはイベントとしても表され得ることを当分野の技術者は理解し、認めるであろう。さらに、方法または手順を実施するのに、図示する動作すべてが必要とされ得るとも限らない。
図8は、本明細書で他の図を参照して開示され、説明されているコンポーネントと関連して使用され得るプロセス800の流れ図である。開始ブロック810において、プロセス800の実行が開始し、プロセスブロック820に進み、そこで、エンドユーザはEUPインターフェースにアクセスする。次いで、プロセスブロック830において、エンドユーザはトリガイベントを選択する。例えば、トリガイベントは、電子メールメッセージの到着、文書の作成、または他の何らかのイベントとすることができる。プロセスブロック840において、複数のアクションを含んでも、単一のアクションを含んでも、アクションを含まなくてもよい、一組のアクションが定義される。これらのアクションは、特に、ファイルを指定された場所に移動すること、電子メールメッセージに自動的に応答すること、ファイルをある形式から別の形式に変換することなどとすることができる。プロセスブロック850において、この一組のアクションがイベントにバインドされる。プロセスブロック860において、この新しいバインディングを用いてルールベースが更新される。終了ブロック870において処理が終了する。
図9は、本明細書で他の図を参照して開示し、説明しているコンポーネントと関連して使用され得るプロセス900の流れ図である。開始ブロック905において処理が開始し、プロセスブロック910に進み、そこで、コンピューティングプラットフォームがイベントを発動する。プロセスブロック915において、EUPコンポーネントがイベントを検出する。処理はプロセスブロック920に進み、そこでEUPがルールデータストアにアクセスする。判定ブロック925において、検出されたイベントに関するルールバインディングが存在するかどうかの判定がなされる。YESの場合、処理はプロセスブロック930に進み、そこでエンドユーザ定義アクションが獲得される。プロセスブロック935において、エンドユーザ定義アクションを実行するためにプロセスが開始されるか、またはアクティブにされる。プロセスブロック940において、それらのプロセスから完了メッセージが受け取られる。
判定ブロック945において、すべてのプロセスが正常に完了したかどうかの判定がなされる。YESである場合、プロセスブロック955において、一般的な成功のメッセージが作成される。NOである場合、プロセスブロック950において、一般的なエラーメッセージが作成される。終了ブロック960において、プロセスブロック950とプロセスブロック955の両方からの処理が終了する。同様に、判定ブロック925においてなされた判定がNOである場合、終了ブロック960において処理が終了する。
図10は、情報のライフサイクル1000の流れ図である。情報のライフサイクルは、一般に、コンピューティングシステム上のデータ項目の存在を記述することができる。そのような存在は、ユーザが最初に特定のデータ項目を作成し、または獲得するときに開始し、ユーザがその項目を削除し、または別の方法でデータを廃棄するときに終了し得る。情報のライフサイクル1000は、エンドユーザが情報項目を作成し、または獲得しており、その情報項目を持続させ、ユーザにとって利用可能な状態のままにしようとする時点を表す、編成フェーズ1010を含む。データを編成するために使用され得る少なくとも2つの技法がある。第1の技法では、項目の特性に値が割り当てられ得る。例えば、項目に、特に、名前、あるいはメタデータまたは属性として格納され得る他の何らかの記述が付与され得る。第2の技法では、項目の関係が割り当てられ得る。関係の割り当ては、手動操作による、または検索による項目の位置指定を支援し得る。特に、いくつかの関係は、アプリケーションにおいて特別な編成セマンティクスに関連付けられ得る。例えば、フォルダ包含関係は、それを用い、共通トピックに従って情報を編成すべき共通の階層的方式とすることができる。
特性および関係には、少なくとも2つの異なる方法で値が割り当てられ得る。実際の値は、項目データを用いて具体化され、維持され得る。それに加えて、または代替として、値は、要求に応じて他のデータからも算出され得る。この場合、データを獲得するために行われる計算の定義は、メタデータとして格納され得る。データ編成のための算出機構は、データ編成のルールが、明確に定義され、容易に表現でき、利用可能な情報に完全に基づくものである場合に適当である。また、算出機構は、大量のデータを処理するために十分にスケーリングする。具体化される機構は、データ編成論理が、容易に表現され得ず、または内容やコンテキスト情報など、容易に取り込まれ得ない情報に基づくものであるときに適当である。エンドユーザプログラムは、算出された特性および関係を定義することができる。また、そのようなプログラムは、具体化された特性および関係を自動的に維持するためにも使用され得る。
格納フェーズ1020は、ユーザが、後でアクセスされ得る永続的形式で情報項目を保存していることを示し得る。使用され得る永続的形式には、特に、ファイルおよびオブジェクトが含まれる。そのような永続的形式の詳細は、永続的形式がその内部に格納されるファイルシステムの特定の詳細によって異なり得る。例えば、ハードディスクドライブと光ディスクの両方が永続的記憶装置として使用され得る。しかしながら、ハードディスクドライブ用のファイルシステム形式は、光ディスクで使用され得るISO9660などのファイルシステム形式と大きく異なる。
検索フェーズ1030は、エンドユーザが、何らかの永続的形式で格納された情報を検索しようとする期間を示し得る。検索という用語は、ある項目を、エンドユーザがアクションをとるために利用可能であると識別させることのできる任意のアクティビティを含み得る。エンドユーザがデータを検索し得る、少なくとも3つの方法がある。第1の方法では、エンドユーザは、データにブラウズし、またはナビゲートすることができる。この方法では、エンドユーザは、ホームまたは参照ディレクトリなど、何らかの開始点から開始する。データ項目間の関係は、データストア中の項目をブラウズし、またはトラバースするためのパスを提供する。1つの具体例が、階層ディレクトリツリーを介してナビゲートすることである。
第2の方法では、エンドユーザは、問い合わせを実行することができる。エンドユーザによって定義される問い合わせは、何らかの宣言記述にマッチし得るデータストア中の項目サブセットを記述することができる。第3の方法を使用すると、イベントが、エンドユーザによって項目を検索するために使用され得る。この種のイベントは、何らかの特定の項目に注目するために使用され得る。例えば、ディレクトリへのファイルの追加は、追加されるファイルに注目するイベントとすることができる。
これらの方法のそれぞれは、長所と短所を有する。問い合わせベースの機構は、項目を検索するのに使用される論理が明確に定義され、データストア中でモデル化される概念の点で容易に表されるときに使用され得る。問い合わせの実行は、拡張可能であり、効率的であり得るが、問い合わせ実行は、比較的効率のよい問い合わせ機構が使用される場合でさえも、計算集約的であり得る。ナビゲーション機構は、柔軟性を提供するのに使用され得るが、問い合わせより多くのユーザの関与を必要とする。さらに、ナビゲーション機構は、大規模なデータ集合を処理するために、必ずしも、問い合わせ機構ほど十分にスケーリングするとは限らない。
イベント駆動の機構は、直接のユーザ関与なしで、適当な時点において適当なデータを検索することが目標である場合に適する。少なくとも2種類の基本的なイベントがある。第1に、アプリケーションイベントは、特定のアプリケーションまたは1組のアプリケーションの実行によって引き起こされ得る。第2に、データ変更イベントは、データに変更を生じさせたアプリケーションとは独立に、データを変更する任意のアクティビティによって引き起こされ得る。データ変更イベントは、データ管理システムによって生成され得る。個々の種類のイベントは、同期的に、または非同期的に生成され得る。同期イベントでは、アプリケーションまたはシステムは、続行する前にイベントへの応答を期待する。非同期イベントでは、そのような応答を必要とせずに、生成するアプリケーションはそのタスクの処理を続行することができる。
使用フェーズ1040は、エンドユーザがデータを発見し、取り出しており、それを使用し、または別の方法でデータに対してアクションをとる用意ができていることを示し得る。項目に対する基本的なアクションは、それらの項目をエンドユーザに公開するアプリケーションによって提供され得る。いくつかのアクションは、項目型に固有のものとすることができる。例えば、あるアクションを使ってある項目の特性が設定され得る。他のアクションは、その項目を使用し得るアプリケーションに固有のものとすることができる。この場合の一例は、特定の色でメッセージ項目のテキストを表示するアクションである。
計算される(computed)アクションは、以下の機構の少なくとも1つを使って他のアクションから構築され得る。まず、関係に対するアクションが使用され得る。この方式では、項目に対するアクションは、ターゲットまたは項目の関係に対するアクションを含むと定義され得る。例えば、関係がフォルダグループなどの項目の集合を定義するのに使用される場合、計算されるアクションは、その集合のすべてのメンバに対して一様なアクションを指定し得る。このプロセスをバッチと呼ぶことができる。また、条件付きのアクションも使用され得る。条件付きの計算されるアクションを定義するために、既存のアクションが条件付き論理と組み合わされ得る。例えば、文書が機密とマークされる場合、優先度フラグは高優先度を示すように設定され得る。文書が機密とマークされない場合、優先度フラグは、その文書が通常の優先度を持つことを示すように設定され得る。さらに、複数のアクションが順次に実行されなければならないリスト上に記載されるようなアクションシーケンスも作成され得る。例えば、アクションシーケンスは、文書を印刷し、次いで、その文書を削除するのに使用され得る。このようなアクションは、定義された挙動が感知し得るようにアクションの順序が決定的でなければならない状況を生み出し得る副次作用を持つことがある。
本発明の様々な態様を実施するさらなるコンテキストを提供するために、図11〜12および以下の考察は、本発明の様々な態様がその内部で実施され得る適当なコンピューティング環境の簡単で、一般的な説明を提供するものである。以上では、本発明を、ローカルコンピュータおよび/またはリモートコンピュータ上で稼動するコンピュータプログラムのコンピュータ実行可能命令の一般的文脈で説明しているが、本発明が、他のプログラムモジュールとの組み合わせでも実施され得ることを、当分野の技術者は理解するであろう。一般に、プログラムモジュールには、個々のタスクを実行し、かつ/または個々の抽象データ型を実施する、ルーチン、プログラム、コンポーネント、データ構造などが含まれる。
本発明の方法が、そのそれぞれが、1つまたは複数の関連する装置と動作可能にやり取りし得る、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピュータ装置、マイクロプロセッサベースの、かつ/またはプログラム可能な家庭用電化製品などを含む、他のコンピュータシステム構成を用いても実施され得ることを、当分野の技術者は理解するであろう。また、図示する本発明の態様は、いくつかのタスクが通信ネットワークを介してリンクされたリモート処理装置によって実行される、分散コンピューティング環境でも実施され得る。しかしながら、全部ではないとしても、本発明のいくつかの態様は、スタンドアロンコンピュータ上で実施され得る。分散コンピューティング環境では、プログラムモジュールは、ローカルおよび/またはリモートメモリ記憶装置内に配置され得る。
さらに、開示し、説明するコンポーネントまたはプロセスは、標準的プログラミングおよび/または工学技術を使って、開示し、説明するコンポーネントまたはプロセスを実施するコンピュータを制御するためのソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生み出す方法、装置、または製造品としても実施され得る。本明細書で使用する場合の「製造品」という用語は、任意のコンピュータ読取り可能記憶装置、搬送波、または媒体からアクセス可能なコンピュータプログラムを包含するためのものである。例えば、コンピュータ読取り可能記憶媒体には、それだけに限らないが、特に、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップなどの磁気記憶装置、特に、コンパクトディスク(CD)やデジタル多用途ディスク(DVD)などの光ディスク、スマートカード、および、特に、カード、スティック、キードライブなどのフラッシュメモリデバイスが含まれ得る。さらに、搬送波を用いて、電子メールを送受信し、またはインターネットやローカルエリアネットワーク(LAN)などのネットワークにアクセスする際に使用されるコンピュータ読取り可能記憶電子データを搬送することもできることを理解すべきである。当然ながら、この構成に多くの小さな変更が加えられ得ることを、当分野の技術者は理解するであろう。
また、提示する具体例は、パーソナルコンピュータ上のファイルシステムの内容の検索に基づくシステムまたは方法を説明し、図示し得るが、適用はその領域だけに限定されないことも理解すべきである。例えば、開示し、説明するコンポーネントおよび方法は、イントラネット、プライベートネットワーク、インターネット上でも用いられ得る。それに加えて、または代替として、開示し、説明するコンポーネントおよび方法は、ストレージエリアネットワーク(SAN)の一部としても使用され得る。開示し、説明するコンポーネントおよび方法は、特に、Webページ、データベース問い合わせ、写真情報、音声またはビデオ情報を含む、他の種類の情報を検索し、操作するためにも使用され得ることを、当分野の技術者は容易に理解するであろう。
エンドユーザプログラミング(EUP)は、エンドユーザが、情報中心のソフトウェアアプリケーションのあらゆる挙動をもれなく制御できることとして説明され得る。EUP原理およびコンポーネントは、エンドユーザの制御下で1つまたは複数のソフトウェアアプリケーションによって実行される自動化された情報処理タスクをカスタマイズし、パーソナル化するのに使用され得る。EUP原理およびコンポーネントがユーザを支援するための、少なくとも3つの相互に関連する方法が存在する。
第1の方法では、エンドユーザが、通常、手動で実行する必要があるはずの潜在的に多数の処理ステップが、エンドユーザの特定の必要または要求に従って自動化され得る。例えば、非常に高い解像度で格納されたデジタル画像の大きなコレクションを処理するエンドユーザは、Webページで使用するためにこれらの画像の低解像度バージョンを作成しようとすることができる。それを手動で行うには、エンドユーザは、通常、編集プログラムで個々の画像を開き、様々なプログラム設定に従って低解像度コピーを作成し、新しいファイル名で、または新しい場所にその低解像度バージョンを保存する必要があるはずである。新しい画像の指定されたディレクトリへの追加時にこれらのタスクを自動的に実行するために、EUPモジュールが作成され得る。
EUP原理を用いる第2の方法では、EUPモジュールは、エンドユーザのために相当量の計算を実行し得る。例えば、多くの検索タスクは非常に計算集約的であり、EUPモジュールは、検索(およびその他の計算上高くつくタスク)を自動的に実行し、検索結果をエンドユーザに報告することができきる。それに加えて、または代替として、EUPモジュールは、エンドユーザによって特に呼び出され、または実行される場合にそのようなタスクを実行することもできる。第3の方法では、EUPモジュールは、エンドユーザからの介入なしで自動的に機能して、エンドユーザが、特定のコンピューティングタスクではなく他のタスクに注意を集中できるようにし得る。この自動機能は、エンドユーザを、電子ファイルのソートや、そのようなファイルの論理コレクションへのグループ化など、手動で実行される時間集約的タスクから解放することによって、エンドユーザの生産性を向上させることができる。
本明細書で提示するEUP概念およびコンポーネントは、多種多様な実施形態がそれに基づいて作成され得る、一般化された、柔軟なプラットフォームを提供する。いくつかの可能な実施形態は、あらゆるユーザアプリケーションがエンドユーザプログラミング機能にアクセスし、その恩恵を受けることができるように、プラットフォーム全体にわたってエンドユーザプログラミングタスクをサポートするために使用され得る頑強なプラットフォームを提供することができる。別の可能な実施形態は、単一のアプリケーションだけのためにそのような機能をサポートすることができ、また別の実施形態は、これらの両極端の間のどこかに該当する。この開示を読めば、当分野の技術者は多くの変更および変形が可能であることを容易に理解するであろう。
エンドユーザプログラムは、本明細書の例ならびにその他の例で提示されるあらゆる形の計算されるアクションを定義し得る。1つの注目すべき形は、アクションのイベントとの関連を含み、エージェントと呼ばれ得る。同期イベントが関与するエージェントは、2つの特殊な該当事例を含み得る。第1の事例では、そのようなエージェントは、そのアプリケーションに固有のものとし得るアクションを実行することによって、アプリケーションカスタマイズを提供することができる。例えば、メールアプリケーションは、メールメッセージを送信する前に同期イベントを生成し得る。結果として生じるエージェントアクションは、メッセージに署名ファイルを添付することとすることができる。エージェントのアクションが条件付きアクションである場合、エージェントは、メッセージの特性に基づいて署名ファイルを選択することができる。第2の事例では、データに対する制約条件が伴う。データ制約エージェントは、イベントを生成させたデータへの変更を受け入れ、または拒否するように動作し得る。例えば、ファイルの所有権の変更は、イベントを生成させ得る。生成されたイベントは、所有権変更を評価するエージェントのアクションをトリガし得る。ファイルの現在の所有者、ファイルの新しい所有者、および変更を行うユーザの識別情報などの基準に基づいて、データ制約エージェントは、所有者情報の変更を受け入れ、または拒否することができる。
より洗練されたコンポーネントを使用して、より複雑な評価が可能である。そのようなコンポーネントは、パターンを識別またはマッチさせ、あるいは様々な分類タスクを実行し得る様々な人工知能コンポーネントを含み得る。使用され得る適当な人工知能コンポーネントには、特に、ニューラルネットワークおよびサポートベクトルマシンが含まれる。開示し、説明するコンポーネント(フィルタリングまたは管理タスクを実行するために作成されるエージェントなど)は、これら様々な人工知能ベースの方式を用いて、プログラムされたタスクを実行することができる。例えば、複雑なデータパターンの識別、および新しいデータの、その複雑なデータパターンを持つデータ集合に属するものとしての分類が、ニューラルネットワーク、ルールベースの処理コンポーネント、またはサポートベクトルマシンによって実行され得る。
分類子は、入力属性ベクトル、X=(x1,x2,x3,x4,...xn)を、その入力があるクラス、すなわち、f(X)=confidence(class)に属する信頼度にマップする関数である。そのような分類は、確率論的な、かつ/または統計ベースの分析(例えば、分析ユーティリティおよびコストを考慮に入れるなど)を用いて、ユーザが自動的に実行されることを望むアクションを予測し、または推定することができる。エンドユーザプログラミングシステムの事例では、データ項目は、それらのデータ項目の属性を検査することによって分類され得る。サポートベクトルマシン(SVM)は、用いられ得る分類子の一例である。SVMは、トリガ基準を非トリガイベントから分割しようとする、可能な入力の空間における超曲面を見つけ出すことにより動作する。直観的には、これは、訓練データに近いが、それと同一ではない試験データを正しいと分類する。他の有向および無向モデル分類手法には、例えば、ナイーブベイズ、ベイジアンネットワーク、決定木が含まれ、異なる独立パターンを提供する確率論的分類モデルが用いられ得る。また、本明細書で使用する場合の分類には、優先順位のモデルを作成するのに利用される統計的回帰も含まれる。
本明細書から容易に理解されるように、本明細書で開示し、説明するコンポーネントは、(例えば、ユーザの挙動を観測すること、外部からの情報を受け取るなどによって)暗黙的に訓練されるのみならず、(例えば、汎用訓練データによって)明示的に訓練される分類子を用いることができる。例えば、SVMは、分類子コンストラクタおよび機能選択モジュール内の学習または訓練フェーズによって構成される。ゆえに、(1つまたは複数の)分類子は、それだけに限らないが、装置にデータが送られるべきかどうか決定することを含むいくつかの機能を自動的に実行するのに使用され得る。
図11は、開示し、説明するコンポーネントおよびプロセスがそれと対話することのできる、コンピューティング環境の例1100の概略的ブロック図である。システム1100は、1つまたは複数のクライアント1110を含む。クライアント1110は、ハードウェアおよび/またはソフトウェア(スレッド、プロセス、コンピュータ装置など)とすることができる。また、システム1100は、1つまたは複数のサーバ1120も含む。サーバ1120は、ハードウェアおよび/またはソフトウェア(スレッド、プロセス、コンピュータ装置など)とすることができる。サーバ1120は、例えば、開示し、説明するコンポーネントおよびプロセスを用いることによって変換を行うスレッドまたはプロセスを収容し得る。
クライアント1110とサーバ1120との間の1つの可能な通信手段は、2つ以上のコンピュータプロセス間で送信されるように適合されたデータパケットの形とすることができる。システム1100は、クライアント1110とサーバ1120との間の通信を円滑化するために用いられ得る通信フレームワーク1140を含む。クライアント1110は、クライアント1110にとってローカルの情報を格納するのに用いられ得る1つまたは複数のクライアントデータストア1150に動作可能に接続される。同様に、サーバ1120は、サーバ1140にとってローカルの情報を格納するのに用いられ得る1つまたは複数のサーバデータストア1130に動作可能に接続される。
図12を参照すると、本発明の様々な態様を実施する例示的環境1200は、コンピュータ1212を含む。コンピュータ1212は、処理装置1214、システムメモリ1216、およびシステムバス1218を含む。システムバス1218は、それだけに限らないが、システムメモリ1216を含むシステムコンポーネントを処理装置1214に結合する。処理装置1214は、様々な利用可能なプロセッサのいずれでもよい。また、デュアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャも処理装置1214として用いられ得る。
システムバス1218は、それだけに限らないが、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MCA)、拡張ISA(EISA)、インテリジェントドライブエレクトロニクス(IDE)、VESAローカルバス(VLB)、周辺装置相互接続(PCI)、カードバス、ユニバーサルシリアルバス(USB)、アドバンストグラフィックスポート(AGP)、パーソナルコンピュータメモリカード国際協会バス(PCMCIA)、ファイヤワイヤ(IEEE1394)、小型コンピュータシステムインターフェイス(SCSI)を含む任意の様々な利用可能なバスアーキテクチャを使用する、数種類のメモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/またはローカルバスのいずれでもよい。
システムメモリ1216は、揮発性メモリ1220および不揮発性メモリ1222を含む。基本入出力システム(BIOS)は、起動時などに、コンピュータ1212内の諸要素間で情報を転送する基本ルーチンを含み、不揮発性メモリ1222に格納される。例としてあげるにすぎないが、不揮発性メモリ1222には、読取り専用メモリ(ROM)、プログラム可能ROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュメモリが含まれ得る。揮発性メモリ1220は、外部キャッシュメモリとして働く、ランダムアクセスメモリ(RAM)を含む。例としてあげるにすぎないが、RAMは、同期RAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクトランバスRAM(DRRAM)など、多くの形で利用可能である。
また、コンピュータ1212は、取外し可能/取外し不能、揮発性/不揮発性コンピュータ記憶媒体も含む。例えば、図12には、ディスク記憶装置1224が示されている。ディスク記憶装置1224には、それだけに限らないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、メモリスティックなどのデバイスが含まれる。また、ディスク記憶装置1224は記憶媒体を、別々に、または、それだけに限らないが、コンパクトディスクROMドライブ(CD−ROM)、書込み可能なCDドライブ(CD−Rドライブ)、書き換え可能なCDドライブ(CD−RWドライブ)、デジタル多用途ディスクROMドライブ(DVD−ROM)などの光ディスクドライブを含む他の記憶媒体と組み合わせて含むこともできる。ディスク記憶装置1224のシステムバス1218への接続を円滑化するために、通常は、インターフェース1226などの取外し可能または取外し不可能なインターフェースが使用される。
図12には、ユーザと、適当な動作環境1200に示す基本コンピュータリソースとの間の仲介として働くソフトウェアが示されていることを理解すべきである。そのようなソフトウェアには、オペレーティングシステム1228が含まれる。オペレーティングシステム1228は、ディスク記憶装置1224に格納することができ、コンピュータシステム1212のリソースを制御し、それを割り振るように動作する。システムアプリケーション1230は、システムメモリ1216またはディスク記憶装置1224に格納されたプログラムモジュール1232およびプログラムデータ1234を介して、オペレーティングシステム1228によるリソース管理を利用する。本発明は、様々なオペレーティングシステムまたはオペレーティングシステムの組み合わせを用いて実施され得ることを理解すべきである。
ユーザは、(1つまたは複数の)入力装置1236を介してコンピュータ1212にコマンドまたは情報を入力する。入力装置1236には、それだけに限らないが、マウス、トラックボール、スタイラス、タッチパッドなどのポインティングデバイス、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、Webカメラなどが含まれる。上記およびその他の入力装置は、(1つまたは複数の)インターフェースポート1238を介し、システムバス1218によって処理装置1214に接続される。インターフェースポート1238には、例えば、シリアルポート、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などが含まれる。(1つまたは複数の)出力装置1240は、いくつかの、入力装置1236と同じ種類のポートを使用する。ゆえに、例えば、USBポートは、コンピュータ1212への入力を提供すると共に、コンピュータ1212から出力装置1240に情報を出力するためにも使用され得る。出力アダプタ1242は、出力装置1240の中でも特に、特殊なアダプタを必要とする、モニタ、スピーカ、プリンタのようないくつかの出力装置1240があることを示すために設けられている。出力アダプタ1242には、例としてあげるにすぎないが、出力装置1240とシステムバス1218の間の接続手段を提供するビデオおよびサウンドカードが含まれる。リモートコンピュータ1244など他の装置および/または装置システムも、入力と出力の両方の機能を提供することに留意すべきである。
コンピュータ1212は、リモートコンピュータ1244など、1つまたは複数のリモートコンピュータへの論理接続を使用するネットワークを介して接続された環境で動作し得る。リモートコンピュータ1244は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの電気器具、ピアデバイスまたはその他一般的なネットワークノードなどとすることができ、通常は、コンピュータ1212に関連して説明した要素の多くまたは全部を含む。簡略にするために、メモリ記憶装置1246だけが、リモートコンピュータ1244と共に示されている。リモートコンピュータ1244は、ネットワークインターフェース1248を介してコンピュータ1212に論理的に接続され、次いで、通信接続1250を介して物理的に接続される。ネットワークインターフェース1248は、ローカルエリアネットワーク(LAN)や広域ネットワーク(WAN)などの有線および/または無線通信ネットワークを包含する。LAN技術には、光ファイバ分散データインターフェース(FDDI)、より対線FDDI(CDDI)、イーサネット(登録商標)、トークンリングなどが含まれる。WAN技術には、それだけに限らないが、ポイントツーポイント(point-to-point)リンク、統合サービスデジタルネットワーク(ISDN)およびその変形などの回路交換ネットワーク、パケット交換ネットワーク、およびデジタル加入者線(DSL)が含まれる。
通信接続1250は、ネットワークインターフェース1248をバス1218に接続するために用いられるハードウェア/ソフトウェアを指す。通信接続1250は、図を明確にするためにコンピュータ1212の内部に示されているが、コンピュータ1212の外部とすることもできる。ネットワークインターフェース1248への接続に必要なハードウェア/ソフトウェアには、例にすぎないが、通常の電話グレードのモデム、ケーブルモデムおよびDSLモデム、ISDNアダプタ、イーサネット(登録商標)カードなどの内部および外部技術が含まれる。
以上の説明には、いくつかのコンポーネントおよび方法の実例が含まれている。当然ながら、コンポーネントまたは方法の考え得るあらゆる組み合わせを記述することは不可能であるが、多くの別の組み合わせおよび置換が可能であることを当分野の技術者は理解するであろう。したがって、そのようなすべての変更、改変、および変形は、添付の特許請求の範囲の趣旨および範囲内に含まれるものである。
特に、前述のコンポーネント、装置、回路、システムなどによって実行される様々な機能に関して、そのようなコンポーネントを記述するのに使用される(「手段」への言及を含む)用語は、特に指示しない限り、本明細書で示す例における機能を実行する開示の構造と構造的に同等でなくとも、前述のコンポーネントの指定された機能を実行する任意のコンポーネント(例えば、機能的均等物など)に対応することが意図されている。この点に関して、開示し、説明するコンポーネントおよび方法は、様々な開示し、説明する方法の動作および/またはイベントを実行するコンピュータ実行可能命令を有するシステム、ならびにコンピュータ読取り可能記憶媒体を含み得ることも理解されるであろう。
さらに、特定の機能を、いくつかの実施形態のただ1つに関連して開示しているが、そのような機能は、任意の所与の、または特定の用途のために求められ、有利とされ得るように、その他の実施形態の他の1つまたは複数の機能と組み合わされ得る。さらに、「含む(includes)」および「含んでいる(including)」という語、ならびにそれらの変形が詳細な説明または特許請求の範囲で使用される限りにおいて、これらの用語は、「備える(comprising)」という語と同様に包含的であることが意図されている。
エンドユーザプログラミングシステムを示すシステムブロック図である。 エンドユーザプロセシングシステムを示すシステムブロック図である。 ルールスキーマを示すスキーマ図である。 統合ファイルシステムを有するエンドユーザプログラミングシステムを示すシステムブロック図である。 統合ファイルシステムを有するエンドユーザプログラミングシステムを示すシステムブロック図である。 統合ファイルシステムを有するエンドユーザプログラミングシステムを示すシステムブロック図である。 統合ファイルシステムを有するエンドユーザプログラミングシステムを示すシステムブロック図である。 本明細書で開示し、説明するコンポーネントと一緒に使用され得る一般的な処理方法を示す流れ図である。 本明細書で開示し、説明するコンポーネントと一緒に使用され得る一般的な処理方法を示す流れ図である。 情報のライフサイクルを示す流れ図である。 例示的ネットワーク環境を示すシステムブロック図である。 例示的動作環境を示すシステムブロック図である。

Claims (7)

  1. データ処理を自動化するシステムであって、
    開発者コード用スキーマおよびエンドユーザコード用スキーマを備える、基礎をなすファイルシステムと統合され、コンピューティングシステムのイベントを、エンドユーザによって定義される少なくとも1つの自動化されたアクションにマップするエンドユーザプログラミングモジュールと、
    前記開発者コード用スキーマと前記エンドユーザコード用スキーマとの間のバインディングであって、少なくとも1つの前記開発者コード用スキーマのコンポーネントが前記エンドユーザコード用スキーマの一部として利用可能であるかどうかを決定するバインディングと、
    前記イベントに応答し、前記イベントの発生に応答して前記少なくとも1つの自動アクションを実行させるイベントハンドラと
    を備えることを特徴とするシステム。
  2. 前記イベントは、オペレーティングシステム、モニタアプリケーション、およびユーザアプリケーションのうちの少なくとも1つによって作成されることを特徴とする請求項1に記載のシステム。
  3. 前記自動アクションは、前記イベントを作成した前記ユーザアプリケーションと異なる第2のユーザアプリケーションによって実行されることを特徴とする請求項2に記載のシステム。
  4. 前記ファイルシステムは分散ファイルシステムであることを特徴とする請求項2に記載のシステム。
  5. 前記エンドユーザプログラミングモジュールに結合されたルール層であって、少なくとも前記自動化アクションを定義する事前定義されたコンポーネントを備えるルール層をさらに備えることを特徴とする請求項1に記載のシステム。
  6. 前記事前定義されたコンポーネントは、クエリ、バッチ、およびエージェントのうちの少なくとも1つを含むことを特徴とする請求項に記載のシステム。
  7. 前記事前定義されたコンポーネントは、前記ファイルシステム内のデータをフィルタリングし、検索することを可能にし、フィルタリングされ、検索されたデータを、前記アクションの結果として表示することを特徴とする請求項に記載のシステム。
JP2006016210A 2005-02-28 2006-01-25 自動化されたデータ編成 Active JP5255184B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US65751905P 2005-02-28 2005-02-28
US60/657,519 2005-02-28
US11/203,741 US7565663B2 (en) 2005-02-28 2005-08-15 Automated data organization
US11/203,741 2005-08-15

Publications (2)

Publication Number Publication Date
JP2006244468A JP2006244468A (ja) 2006-09-14
JP5255184B2 true JP5255184B2 (ja) 2013-08-07

Family

ID=36693570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006016210A Active JP5255184B2 (ja) 2005-02-28 2006-01-25 自動化されたデータ編成

Country Status (10)

Country Link
US (1) US7565663B2 (ja)
EP (1) EP1696315B1 (ja)
JP (1) JP5255184B2 (ja)
KR (1) KR101219856B1 (ja)
CN (1) CN1828530B (ja)
AU (1) AU2006200232B2 (ja)
BR (1) BRPI0600057A (ja)
CA (1) CA2533797C (ja)
MX (1) MXPA06001207A (ja)
RU (1) RU2405193C2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1625513B1 (en) * 2004-04-30 2018-04-18 Microsoft Technology Licensing, LLC Rules framework for definition and execution of end-user rules logic
US20060195411A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation End user data activation
US8032375B2 (en) * 2006-03-17 2011-10-04 Microsoft Corporation Using generic predictive models for slot values in language modeling
US8966016B2 (en) 2006-09-28 2015-02-24 International Business Machines Corporation Resource-based event typing in a rules system
US7774224B2 (en) 2006-11-16 2010-08-10 Sap Ag Methods and apparatuses for organizing events
US8589821B1 (en) * 2007-08-27 2013-11-19 Sandia Corporation Storyboard method of end-user programming with natural language confirmation
US9195526B2 (en) * 2008-07-18 2015-11-24 Blackberry Limited Application integration in networked computing devices
US9183384B1 (en) * 2009-11-02 2015-11-10 Symantec Corporation Leveraging indexed document matching to automatically train SVM classifiers
US9734171B2 (en) * 2009-12-16 2017-08-15 International Business Machines Corporation Intelligent redistribution of data in a database
US8793323B2 (en) * 2010-11-16 2014-07-29 Successfactors, Inc. System and method for interoperability
CN102164177A (zh) * 2011-03-11 2011-08-24 浪潮(北京)电子信息产业有限公司 一种集群共享存储池的方法、装置及***
RU2462752C1 (ru) * 2011-07-18 2012-09-27 Открытое акционерное общество "Лётно-исследовательский институт имени М.М. Громова" Динамическая экспертная система
US9064152B2 (en) 2011-12-01 2015-06-23 Elwha Llc Vehicular threat detection based on image analysis
US10875525B2 (en) 2011-12-01 2020-12-29 Microsoft Technology Licensing Llc Ability enhancement
US9159236B2 (en) 2011-12-01 2015-10-13 Elwha Llc Presentation of shared threat information in a transportation-related context
US20130144619A1 (en) * 2011-12-01 2013-06-06 Richard T. Lord Enhanced voice conferencing
US9053096B2 (en) 2011-12-01 2015-06-09 Elwha Llc Language translation based on speaker-related information
US9107012B2 (en) 2011-12-01 2015-08-11 Elwha Llc Vehicular threat detection based on audio signals
US9245254B2 (en) 2011-12-01 2016-01-26 Elwha Llc Enhanced voice conferencing with history, language translation and identification
US8934652B2 (en) 2011-12-01 2015-01-13 Elwha Llc Visual presentation of speaker-related information
US9368028B2 (en) 2011-12-01 2016-06-14 Microsoft Technology Licensing, Llc Determining threats based on information from road-based devices in a transportation-related context
US9977828B2 (en) * 2012-10-16 2018-05-22 Evernote Corporation Assisted memorizing of event-based streams of mobile content
US9720655B1 (en) * 2013-02-01 2017-08-01 Jpmorgan Chase Bank, N.A. User interface event orchestration
RU2013144681A (ru) 2013-10-03 2015-04-10 Общество С Ограниченной Ответственностью "Яндекс" Система обработки электронного сообщения для определения его классификации
US9852138B2 (en) * 2014-06-30 2017-12-26 EMC IP Holding Company LLC Content fabric for a distributed file system
EP3475888A1 (en) 2016-08-22 2019-05-01 Oracle International Corporation System and method for ontology induction through statistical profiling and reference schema matching
CN113127162B (zh) * 2019-12-31 2022-04-26 阿里巴巴集团控股有限公司 自动化任务执行方法、装置、电子设备及计算机存储介质
RU2726957C1 (ru) * 2020-01-09 2020-07-20 Министерство региональной безопасности Омской области Комплекс систем автоматизации
WO2024004196A1 (ja) * 2022-07-01 2024-01-04 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、情報処理方法、及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07306769A (ja) * 1994-05-11 1995-11-21 Oki Electric Ind Co Ltd マルチウィンドウ情報処理装置
US6496872B1 (en) * 1994-05-16 2002-12-17 Apple Computer, Inc. Computer system for automatically instantiating tasks designated by a user
US5751914A (en) 1995-10-10 1998-05-12 International Business Machines Corporation Method and system for correlating a plurality of events within a data processing system
US5925108A (en) * 1995-11-03 1999-07-20 Novell, Inc. Event notification in a computer system
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6061740A (en) * 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US5966707A (en) * 1997-12-02 1999-10-12 International Business Machines Corporation Method for managing a plurality of data processes residing in heterogeneous data repositories
WO1999040512A1 (en) 1998-02-09 1999-08-12 Reuters, Ltd. Method and system for user defined interactions between plurality of active software applications
US6332163B1 (en) * 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
US7412501B2 (en) * 2000-06-07 2008-08-12 Microsoft Corporation Event consumers for an event management system
CA2360645C (en) * 2001-10-31 2006-03-07 Ibm Canada Limited-Ibm Canada Limitee Dynamic generic framework for distributed tooling
US7921076B2 (en) * 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event

Also Published As

Publication number Publication date
CN1828530B (zh) 2012-12-12
EP1696315A3 (en) 2008-01-02
RU2405193C2 (ru) 2010-11-27
AU2006200232A1 (en) 2006-09-14
US7565663B2 (en) 2009-07-21
CA2533797C (en) 2014-08-19
CA2533797A1 (en) 2006-08-28
MXPA06001207A (es) 2006-09-19
JP2006244468A (ja) 2006-09-14
EP1696315A2 (en) 2006-08-30
AU2006200232B2 (en) 2010-12-09
KR101219856B1 (ko) 2013-01-08
BRPI0600057A (pt) 2006-10-24
US20060195850A1 (en) 2006-08-31
EP1696315B1 (en) 2013-10-30
RU2006102136A (ru) 2007-08-10
CN1828530A (zh) 2006-09-06
KR20060095446A (ko) 2006-08-31

Similar Documents

Publication Publication Date Title
JP5255184B2 (ja) 自動化されたデータ編成
JP4583377B2 (ja) ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報のユニットに対する関係および階層の同期サービスを実現するシステムおよび方法
KR101120788B1 (ko) 최종 사용자 규칙 논리의 정의 및 실행을 위한 규칙프레임워크
JP4738908B2 (ja) ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法
JP4222947B2 (ja) マルチメディア・コンテンツ管理オブジェクトを表現するための方法、プログラム、及びシステム
JP4583376B2 (ja) ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法
RU2377646C2 (ru) Системы и способы для обеспечения услуг синхронизации для блоков информации, управляемых аппаратной/программной интерфейсной системой
US7386531B2 (en) System and method for managing content
JP4394643B2 (ja) アイテムベースのストレージプラットフォームにおけるデータモデリングのためのシステムおよび方法
US20050246686A1 (en) Rules framework for definition and execution of end-user rules logic
EP0987636A2 (en) Service interaction using properties attached to documents
US8615477B2 (en) Monitoring relationships between digital items on a computing apparatus
MXPA06001984A (es) Sistemas y metodos para conectar con una interfase programas de aplicacion una plataforma de almacenamiento basada en elementos.
JP2006244466A (ja) エンドユーザデータ起動
JP4583375B2 (ja) 同期スキーマの実装のためのシステム
MXPA05006260A (es) Sistemas y metodos para extensiones y herencia para unidades de informacion manejables a traves de un sistema de interfaz de sistemas de componentes fisicos de computacion y programas y sistemas de programacion.
KR20060053169A (ko) 정적 및 동적 데이타 세트들의 인터랙션
JP4394644B2 (ja) データの編成、検索、および共有のためのストレージプラットフォーム
RU2371757C2 (ru) Системы и способы моделирования данных в основанной на предметах платформе хранения

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130419

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5255184

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160426

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250