JP2006244466A - エンドユーザデータ起動 - Google Patents

エンドユーザデータ起動 Download PDF

Info

Publication number
JP2006244466A
JP2006244466A JP2006012640A JP2006012640A JP2006244466A JP 2006244466 A JP2006244466 A JP 2006244466A JP 2006012640 A JP2006012640 A JP 2006012640A JP 2006012640 A JP2006012640 A JP 2006012640A JP 2006244466 A JP2006244466 A JP 2006244466A
Authority
JP
Japan
Prior art keywords
user
end user
component
module
software component
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.)
Ceased
Application number
JP2006012640A
Other languages
English (en)
Inventor
Holly Knight
ナイト ホリー
Iceva Katica
イシーバ カティカ
Praveen Seshadri
セシャドリ プラビーン
Shahaf Abileah
アビレア シャハフ
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 JP2006244466A publication Critical patent/JP2006244466A/ja
Ceased legal-status Critical Current

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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】データ処理タスクを生成するシステムを提供する。
【解決手段】データ処理タスクを生成するシステムは、エンドユーザが、1つまたは複数のエンドユーザ定義動作を少なくとも1つの利用可能なコンピューティングコンポーネントに関連付けることを可能にする、エンドユーザプログラミングモジュールを含む。このシステムは、また、前記1つまたは複数のエンドユーザ定義動作と前記利用可能なコンピューティングコンポーネントとのバインディングを提供して、前記利用可能なコンピューティングコンポーネントを使用して統合エンドユーザプログラムが生成されるようにする、ルールプラットフォームを含む。そのシステムを使用する方法も提供する。
【選択図】図1

Description

本発明は一般に、コンピューティングシステムに関し、より詳細には、データ処理タスクを生成するシステムに関する。
最近のコンピューティングシステムでは、実行の様々な状態において、数百のソフトウェアプロセスが稼動中である可能性がある。これらのプロセスは、オペレーティングシステムによって始動されるバックグラウンドプロセス、起動時またはアプリケーションの立ち上げ時に始動されるモニタプロセスもしくはサービスプロセス、またはアプリケーション自体である可能性がある。これらのプロセスのほとんどではないにしろ、その多くは、またはこれらのプロセスの機能は、直接的に制御するユーザの能力を超えている。したがって、これらのプロセスが提供する機能にアクセスしなければならないような場合には、そのようなアクセスは別のソフトウェアプロセスによって成されなければならない。
コンピュータシステム上で実行されているプロセス数は、一般に、システムが処理しなくてはならないデータ量、および実行のためにシステムが呼び出されるタスク数の関数である。一般に、これらのコンピューティング動作の最も非効率な部分は人との対話を必要とする部分である。さらに、適正に実現されたコンピューティングプロセスは、通常、人間オペレータよりも正確に、複雑で反復的なタスクを実行することができる。したがって、タスクの処理中における人との対話の必要性を低減するのを助けることができるシステムおよび方法が必要とされている。
一般に、コンピューティングプロセスによって提供される機能を完全に利用するためには、エンドユーザは熟練したコンピュータプログラマでなくてはならない。多くの利用可能なファンクションは、コンピュータのプログラミングに熟練しているのではなく、単にコンピュータを使用するのに習熟しているだけのエンドユーザによって、使用されないままとなっている。このことの理由は、エンドユーザは、コンピューティングシステムに組み込まれているいくつかの機能が存在することさえも知らないことが多いためである。これらの同様なユーザの多くは、コンピューティングコンポーネントの基礎をなすファンクションにアクセスする能力によって大きな便益を得るはずである。現在のシステムでは、エンドユーザがコンピューティングシステムのファンクションにアクセスして、個々のエンドユーザのニーズに合わせてそれらのファンクションのグループを組み立てることができない。
以下は、基本的な理解と高レベルな調査を提供するための簡略化した要約を表わすものである。この要約は、広範囲にわたる概観ではない。それは、基本要素/重要要素を識別するためでもなく、範囲を明らかにするためでもない。その唯一の目的は、後に提示する、より詳細な説明の序章として、いくつかの概念をより単純化した形態で提示することである。さらに、本明細書において使用する章の表題は、簡便さのためにつけたものにすぎず、いかなる状況においても限定のためとは解釈すべきではない。
エンドユーザプログラミングモジュールは、コンピューティングシステム内のコンポーネントからのファンクションを組み合わせることができるエンドユーザプログラムを生成するのに使用することができる。これらのコンポーネントは、とりわけ、オペレーティングシステムプロセス、バックグラウンドプロセス、デーモン、およびスタンドアロンアプリケーションなどのコンピューティングシステムに常駐するソフトウェアからのコードであり得る。エンドユーザプログラミングモジュールの実行は、いくつかのエンドユーザ定義トリガイベントに応答して自動的に行うことが可能であり、エンドユーザの介入なしに、エンドユーザによって定義されたコンピューティングタスクを実行することができる。追加として、または代替的に、エンドユーザプログラムの実行は、エンドユーザからのコマンドに応答させることができる。
エンドユーザは、エンドユーザ自身によって識別されるタスクを実行するコンポーネントを生成するための基礎としてのルールプラットフォーム(rules platform)を使用することができる。エンドユーザは、このルールプラットフォームを使用することによって、データ処理タスクを、選択されたイベントの発生時に自動的に実行させるか、またはエンドユーザからのコマンドに応じて手動で実行させることができる。そのようなタスクの遂行は、コンピューティングシステムの1つまたは複数のコンポーネントによって実行することができる。前記コンピューティングシステムの1つまたは複数のコンポーネントは、それぞれ、エンドユーザプログラムの処理全体の一部に寄与することができる。
エンドユーザプログラムは、ユーザアプリケーションなどの既存のコンポーネントに、カスタム機能を提供することができる。この機能は、ルールプラットフォームにアクセスして、タスクを、グラフィカル(またはその他の)ユーザインタフェースの要素などの既存のコンポーネントの様々なコントロールに関連付けることによって、生成することができる。このようにして、エンドユーザは、スタンドアロンアプリケーションなどの標準コンポーネントによって提供されるファンクションを拡張または修正することができる。
開示し、説明したコンポーネントおよび方法は、以下に説明し、特に特許請求の範囲において示す、1つまたは複数の特徴を含む。以下の説明および添付の図面には、特定の説明のためのコンポーネントおよび方法を詳細に記載する。しかしながら、これらのコンポーネントおよび方法は、開示したコンポーネントおよび方法を利用することができる様々な方法の内のいくつかを示すにすぎない。開示し、説明したコンポーネントおよび方法の特定の実装形態としては、そのようなコンポーネントおよび方法の一部、大部分、または全部、ならびにそれらの均等物を挙げることができる。本明細書に示す特定の実装形態および実施例は、図面と合わせて考察すれば、以下に示す詳細な説明から明白になるであろう。
本願において使用する場合には、「コンポーネント」、「システム」、「モジュール」などの用語は、ハードウェア、(例えば、実行中の)ソフトウェア、および/またはファームウェアなどの、コンピュータ関連のエンティティを意味するものである。例えば、コンポーネントとは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能物、プログラム、および/またはコンピュータなどであり得る。また、サーバ上で実行中のアプリケーションおよびサーバのいずれもが、コンポーネントであり得る。1つまたは複数のコンポーネントがプロセス内に常駐することが可能であるとともに、コンポーネントは、1つのコンピュータ上に局在化させること、および/または2つ以上のコンピュータ間に分散させることが可能である。
開示するコンポーネントおよび方法は、図面を参照して説明してあり、これらの図面全体において、同一の参照番号は同一の要素を指している。以下の説明においては、説明の目的で、開示の主題についての完全な理解が得られるように多数の特定の詳細を記載する。しかしながら、これらの特定の詳細のあるものは除外したり、または特定の実装形態における、他のものと組み合わせたりすることができることは明白である。その他の場合においては、説明を容易にするために、特定の構造および装置をブロック図の形態で示す。さらに、記載する特定の実施例は、クライアント/サーバアーキテクチャと整合する専門用語を使用するか、またはクライアント/サーバ実装形態の例である場合さえもあるが、当業者であれば、クライアントとサーバの役割は逆転させてもよいこと、開示し、説明するコンポーネントおよび方法はクライアント/サーバアーキテクチャに限定されるものではなく、開示して説明したコンポーネントおよび方法の趣旨と範囲から逸脱することなく、具体的にはピア・ツー・ピア(P2P)アーキテクチャを含む、その他のアーキテクチャでの使用に容易に適合できることを認識するであろう。さらに、本明細書に提示する特定の実施例は、特定のコンポーネントを含むか、または参照するが、本明細書において開示して説明するコンポーネントおよび方法の実装形態は、それらの特定のコンポーネントに必ずしも限定されるものではなく、その他の文脈においても同様に利用することができることに留意されたい。
さらに、提示する特定の実施例は、パーソナルコンピュータのコンポーネントに基づくシステムまたは方法を説明または記述するが、本明細書において開示して説明するコンポーネントおよび方法の使用は、その範囲に限定はされないことを理解されたい。例えば、開示して説明するコンポーネントおよび方法は、分散またはネットワークコンピューティング環境において使用することができる。追加として、または代替的に、開示して説明するコンポーネントおよび方法は、多数のクライアントがアクセスする単一のサーバにおいて使用することができる。当業者であれば、開示して説明するコンポーネントおよび方法は、多種多様なコンピューティングデバイス上でその他のコンポーネントを生成すること、およびその他の方法を実行することに使用できることを容易に理解するであろう。
図1は、エンドユーザプログラミングシステム100のシステムブロック図である。エンドユーザプログラミングシステム100は、エンドユーザによって記述または定義されるコンピューティングタスクを実行することができる、コンピューティングコンポーネントを生成するのに使用することができる。コンピューティングコンポーネントは、そうでなければエンドユーザが手動で実行することになるタスクを、ユーザインタフェースにおける1つまたは複数のコマンドの入力によって、実行することができる。追加として、または代替的に、コンピューティングコンポーネントは、エンドユーザが通常は直接アクセスすることのできないコンピューティング機能を使用することによって、タスクを実行することができる。
エンドユーザプログラミングシステム100は、システム100のための処理環境を提供するオペレーティングプラットフォーム110を含む。この文脈において、オペレーティングプラットフォーム110には、ハードウェアコンポーネント、ソフトウェアコンポーネント、またはハードウェアコンポーネントとソフトウェアコンポーネントの両方を含めることができる。オペレーティングプラットフォーム110としての使用を特に企図する実装形態の中には、ソフトウェアベースオペレーティングシステム、ファームウェア内にホストされたオペレーティングシステムを有するコンピューティングデバイス、および埋め込みシステムがある。
コンピューティング環境における様々な出来事を、意味のあることとして取り扱い、イベントを生成するのに使用することができる。そのような出来事としては、とりわけ、ファイルの作成、修正、および消去、電子メールメッセージの受信、アプリケーションの立ち上げまたは終了がある。あるイベント120を、オペレーティングプラットフォーム110によって生成し、何らかの出来事がコンピューティング環境において発生したことを表わすことができる。イベント120は、ある処理タスクが実行可能であること、または実行すべきであることの、インジケータとしての役割を果たすことができる。イベント120の形態は、2つまたは3つ以上のコンピューティングコンポーネント間で伝達されるメッセージ、処理フラグ、またはその他の適切なインジケータとすることができる。特に、イベント120の形態は、極めて実装形態依存であり、とりわけオペレーティングプラットフォーム110によって提供される機能によって変えることができる。
エンドユーザプログラミング(EUP)モジュール130は、エンドユーザが操作して、イベントの発生時に、またはエンドユーザからのコマンドの呼び出し時に、自動的にとるべき動作を定義するのに使用することができる、エンドユーザプログラム140などの、コンポーネントを提供することができる。エンドユーザは、EUPモジュール130にアクセスして、コンピューティングシステムの利用可能なファンクションの中から選択される、一群のデータ管理タスクまたは情報処理タスクを含む、エンドユーザプログラムを生成することができる。例えば、エンドユーザプログラムを生成して、指定されたユーザからの電子メールの到着を検出し、そのメッセージに添付ファイルがあるかどうかを検査し、添付ファイルがあればそれを指定のディレクトリに保管することができる。これらの動作は、エンドユーザプログラムを最初に生成すること以外に、エンドユーザが能動的に参加することなく、自動的に実行することができる。
EUPモジュール130には、コンピューティングコンポーネントによって実行することができる特定の動作を、ユーザが識別または指定することを可能にする、ユーザインタフェースを含めることができる。このユーザインタフェースは、とりわけ、グラフィカルユーザインタフェース(GUI)、コマンドラインインタフェース(CLI)、テキストベースインタフェース、またはウェブベースインタフェースとすることができる。また、ユーザインタフェースは、ソフトウェア開発業者がソフトウェアコードを書いて、編集し、試験するのに使用する統合開発環境に類似する、ある種のエンドユーザプログラミング環境とすることもできる。特に、ユーザインタフェースは、ユーザが様々なプログラムファンクションまたはデータオブジェクトを表わすグラフィック要素を選択して、それらの要素を組み合わせてエンドユーザプログラムにすることを可能にする、グラフィック開発環境とすることができる。
エンドユーザプログラム140は、単一タスクとするか、または実行すべきタスクの群とすることができることに留意されたい。EUPモジュール130は、手動または自動的に操作することが可能であるか、または以前には他のソフトウェアコンポーネント、例えば、それに限定はされないが、オペレーティングシステム、サービスコンポーネント、アプリケーション、またはその他のコンピューティングコンポーネントなどによってのみアクセスが可能であった、コンピューティングシステムに含まれるファンクションへのインタフェースを提供する。エンドユーザは、このEUPモジュール130のユーザインタフェースを使用して、コンピューティングシステムのこれらのファンクションを使用するコンピューティングコンポーネントを構築して、多種多様なコンピューティングタスクを達成することができる。
一具体例として、電子メールおよびファイル整理がある。エンドユーザは、添付ファイルを有する電子メールを受信するときにとるべき動作を定義することができる。例えば、エンドユーザは、添付ファイルを含む電子メールをあるドメイン(またはそのドメインのユーザ)から受信すると、添付ファイルを特定のディレクトリに保管し、ウイルスのスキャンを行い、次いで指定したプログラムを使用して開くことを規定することができる。この動作を定義するために、エンドユーザは、コンピューティングシステム上で利用可能な特定のファンクションのリストにアクセスすることができる。この例においては、関係するファンクションとしては、新規電子メールメッセージの検出、ファイルの保管、ウイルススキャン、およびファイルを開くことである。エンドユーザはEUPモジュール130を使用して、これらのファンクションを集約して単一のエンドユーザ定義プログラムにするとともに、集約されたファンクションを発生させるイベントによってトリガされる、ルールを指定することができる。ここで、第1のイベントは、電子メールの受信によってトリガすることができる。エンドユーザ定義プログラムは、電子メールメッセージが所定の送信者からのものかどうかを判定し、そうであれば、電子メールが添付ファイルを含むかどうかを判定するルールを処理することができる。このルールの両方の条件がイエスである場合には、ユーザ定義モジュールは、添付ファイルを所定のディレクトリに保管することができる。次いで、エンドユーザ定義モジュールは、ウイルススキャンプログラムを起動して、保管ファイル内のウイルスを検出することができる。保管ファイルがスキャニングによって検出されるウイルスを含まない場合には、ユーザ定義モジュールは、ワードプロセッサ、写真編集プログラム、またはその他の適当なアプリケーションなどのアプリケーションを立ち上げ、開いたアプリケーションに保存済みファイルを開かせる。これらのすべてのステップは、エンドユーザからの介入なしに、自動的に実行することができる。
上記の例において説明したルールの処理は、エンドユーザに、ある処理タスクに合わせた状況またはシナリオを定義する能力を与える、ルールプラットフォーム150を使用して達成することができる。ルールプラットフォーム150には、エンドユーザが、自動的、またはエンドユーザからのコマンドに応じて実施することができる、1つまたは複数の動作を定義することを可能にする論理を含めることができる。これらのルールは、ボタンのクリック(または右クリックなど)、リンク、メニュー、またはその他のインタフェース要素などのユーザインタフェースの要素を使用して実行することができる、プログラムまたはエージェントに添付し、または組み入れることができる。追加として、または代替的に、エンドユーザ定義モジュール用またはエンドユーザ定義スタンドアロンアプリケーション用のアイコンを作成して、そのアイコンをダブルクリックするか、またはその他の方法でそのアイコンに関連する実行可能コードを起動することによって、それを実行することができる。そのような動作は、開発者設計動作またはファンクションを有する先在するコンポーネントに追加するか、またはスタンドアロン型エンドユーザ作成コンポーネントとして生成することができる。ルールプラットフォームは、バインディング(bindings)およびシステム実装要素またはアプリケーション実装要素に対する、リフレクション(reflection)を用いて、エンドユーザ定義コンポーネントを生成して実行することができる。この文脈、およびその他の必要または適当な場合において、バインディングは、ファンクションまたはファイルを表わすユーザインタフェース中のグラフィック要素などのファンクションまたはデータオブジェクトの表現と、実行時にファンクションを実際に実行するか、またはデータオブジェクトを含む、基礎となるコードとの間の、リンケージまたはマッピングとして理解することができる。
図2は、エンドユーザプログラミングモジュール200のシステムブロック図である。エンドユーザプログラミングモジュールは、エンドユーザがエンドユーザ定義プログラムコンポーネントを定義して作成することを可能にする、ユーザインタフェース全体の一部として使用することができる。特に、エンドユーザプログラミングモジュール200は、図1のエンドユーザプログラミングモジュール130として使用することができる。エンドユーザは、エンドユーザプログラミングモジュール200にアクセスして、使用可能なファンクションまたはデータオブジェクトを発見して、それらのファンクションまたはデータオブジェクトを組み合わせてエンドユーザプログラムとすることができる。
エンドユーザプログラミングモジュール200は、コードモジュール210を含む。コードモジュール210は、コードデータストア220にアクセスすることができる。コードデータストア220は、エンドユーザ定義動作コンポーネントの一部として使用可能なファンクションおよびデータオブジェクトを含む、基礎となるソフトウェアコードを含む。バインディングに対するリフレクションを使用する実装形態などの、いくつかの実装形態においては、リフレクションスキームによって提供される技法を使用して、コードデータストア220において記述子の集合を維持することの代替として、またはそれに追加して、利用可能なコードを動的に発見することができることに留意されたい。
コードモジュール210は、コードデータストア220内の任意のコードなど、利用可能なそれぞれのコードまたはデータオブジェクトの要約の記述を、人間が読み取れるフォーマットにして提供することができる。追加として、または代替的に、コードモジュール210は、コードデータストア220内のコードのコンピュータが解読できる記述子または識別子を、マッピングモジュール230に提供することができる。マッピングモジュール230は、コードデータストア220からのコードを、1つまたは複数のエンドユーザ動作にマッピングまたはバインディングすることができる。このようにして、あるファンクションを提供する適当なコンピューティングコンポーネントを、エンドユーザが実行することを望む動作の記述子にマッチングさせることができる。
エンドユーザ動作モジュール240は、エンドユーザが記述、定義、または指定することができるエンドユーザ動作にアクセスして、そのエンドユーザ動作に対する適当な記述子を、マッピングモジュール230がエンドユーザ動作をコードモジュール210によって提供されるコードとマッチングまたはバインディングするのに使用することができる形式で、提供することができる。例えば、コード化された記述子は、エンドユーザ動作データストア250に記憶されるエンドユーザ動作と関連させることができる。このエンドユーザ動作は、例えば、「ファイルXをディレクトリYに記憶する」またはその他の適当な動作のためのコマンドとすることができる。コードデータストア220内のコードの対応する記述子を、マッピングモジュール230によってエンドユーザ動作にマッチングさせて、エンドユーザ動作をいずれかのコードにマッピングすることができる。1つまたは複数のそのようにマッチングさせたエンドユーザ動作およびいくつかのコードは、エンドユーザ定義動作モジュール260または完成したエンドユーザプログラムの一部として使用することができる。
エンドユーザプログラミングモジュール200の一動作モードの例を次に示す。ユーザは、GUI、GLI、またはその他の任意の適当なコンピュータ/人間インタフェースなどのユーザインタフェースを介して、エンドユーザプログラミングモジュール200にアクセスすることができる。エンドユーザは、ユーザインタフェースのコンポーネントを使用して、1つまたは複数のエンドユーザ動作を定義することができる。追加として、または代替的に、ユーザは、エンドユーザ動作データストア250に記憶された事前定義されたエンドユーザ動作の集合の中から、1つまたは複数のエンドユーザ動作を選択することができる。
エンドユーザ動作モジュール240は、エンドユーザが定義または選択したエンドユーザ動作に関連する記述子を提供するか、またはそれにアクセスする。この記述子は、エンドユーザが望むファンクションのコンピュータが解釈できる(machine-interpretable)記述を提供することができる。エンドユーザ動作モジュール240は、その記述子をマッピングモジュール230に提供することができる。
マッピングモジュール230は、その記述子をコードモジュール210に供給することができる。コードモジュール210は、その記述子を使用して、対応する記述子を有するとともに、エンドユーザが望む処理関数を提供するコードを捜し出す。コードモジュール210は、コードデータストア220内でそのようなコードを見つけると、捜し出されたコードの識別子をマッピングモジュール230に提供する。次いで、マッピングモジュール230は、エンドユーザ動作を、ユーザ定義動作モジュール260を生成するコードにマッチングさせるか、またはそれとバインディングする。
図3はエンドユーザ処理システム300のシステムブロック図である。システム300は、人間ユーザにシステムへのアクセスを提供するエンドユーザプログラミングモジュール310を含む。エンドユーザプログラミングモジュール310は、ハードウェアコンポーネントとソフトウェアコンポーネントの両方を含むことができる、動作プラットフォーム320に結合されている。また、エンドユーザプログラミングモジュール310は、エンドユーザ定義タスク330の集合、およびルールプラットフォーム340にアクセスする。エンドユーザ定義タスク330は、動作の論理に対するタスクのバインディングを含む。ユーザインタフェース350は、システム300と人間エンドユーザとのフロントエンドユーザインタフェースを提供するとともに、コンポーネントのための制御要素を含む。
記述したタスクのいくつかを実行するために、エンドユーザ処理システム300はルール代数(rule algebra)を使用することができる。本明細書においては特定のルール代数について説明するが、このルール代数の変形形態や、まったく異なるルール代数を代用することもできる。開示して説明するルール代数は、別の適当なコンポーネントで置換することもできることに留意されたい。
企図されるルール代数には5つの基本項目、すなわちプロパティ、フィルタ、イベント、動作、およびセットを持たせることができる。プロパティは、エンドユーザデータ型の属性を記述することができる。エンドユーザは、プロパティを使用してフィルタおよび動作を記述することができる。フィルタは、データ型に適用する処理スクリーンとして使用することができるブール関数(Boolean function)を定義することができる。このフィルタは、真または偽の値を返すことができる。イベントは、関心事の発生を定義することができる。イベントは、1つまたは複数のデータ型に関連付けることができる。動作は、何らかの処理関数を実行する、データ型の副作用的メソッド(side-effecting method)である。動作は、ゼロまたは1以上の入力パラメータをとることができる。セットは、データ型の集まり(collection)とすることができる。
プロパティ、フィルタ、および動作は、ルールを使用して構築することができる。各ルールにおいては、プロパティを式(expression)と比較すること、対象オブジェクトをフィルタと合致させること、対象オブジェクトがセットに含まれるかどうかを判定することを含む、様々な条件を使用することができる。これらの構築された項目は、エンドユーザプログラムの部分として使用することができる。例えば、抽出されたセットは、完全なエンドユーザプログラムとするか、または別のセットと組み合わせて(合併して)より複雑なエンドユーザプログラムを作成することができる。セットは、バッチを作成する動作に関連付けることができる。バッチは、実行すべきセット指向(set-oriented)タスクを定義することができる。バッチは手動で実行するか、または所定の時間に、または予定どおりに実行するようにスケジュールすることができる。イベントおよび動作からエージェントを作成することができる。エージェントは、あるイベントの発生時に実行すべき動作を定義する。
ルール代数の使用を支援するために、オブジェクトまたはデータ型を、それらのオブジェクトまたはデータ型についての照会を直接支援する方法で記憶することができる、ファイルシステムを使用することができる。それらのオブジェクトまたはデータ型についてのメタデータを、オブジェクト自体と一緒に記憶し、これを使用して照会および動作を支援することができる。様々なファイルシステムを使用して、これらのオブジェクトまたはデータ型を記憶することができる。このファイルシステムは、項目レベルプロパティおよび項目間関係に基づく、物理編成(physical organization)モデルを提供することができる。そのようなファイルシステムを用いて、オブジェクトまたはデータ型を、オブジェクトまたはデータ型を様々な方法で選択または集約するように設計されたルールを実行することに基づいて、動的に編成することができる。
図4は、エンドユーザプログラミングシステム400のシステムブロック図である。エンドユーザプログラミングシステム400は、遠隔地から先在のエンドユーザプログラミングモジュールを取得するのに使用することができる。特に、取得することができるエンドユーザプログラミングモジュールは、ローカルコンピューティングシステム上の1つまたは複数のユーザ定義動作と一致する。
エンドユーザプログラミングシステム400は、ユーザ定義動作410を含む。ユーザ定義動作410は、エンドユーザが実行したいと望むあるコンピューティングタスクの記述とすることができ、例えば、主としてユーザからの特定のコマンドに応じて実行すべき、このコンピューティングタスクは、あるイベントに応答して実行されるか、またはあるスケジュールに従って実行されるように指示することができる。さらに、ユーザ定義動作410には、どのような1つまたは複数のファンクションをそのユーザ定義動作が要求しているかをその他のコンポーネントが判定することを可能にする、特定の識別子または記述子を含めるか、またはそれに関連付けることができる。
エンドユーザプログラミングインタフェース420は、どの動作を使用するかをユーザが指定または定義することができる手段を提供することができる。指定または定義された動作の記述を、エンドユーザプログラミングインタフェース420によって、ネットワーク430上でモジュールサーバ440に送ることができる。モジュールサーバ440は、先に構築されたエンドユーザプログラミングモジュールを、自分達の要求を満たす追加のファンクションを取得することを望むユーザに提供する、ホストとしての役割を果たすことができる。
モジュールサーバ440は、受け取ったエンドユーザ定義動作410の記述を、マッチングコンポーネント450に中継することができる。マッチングコンポーネント450は、中継された記述を使用して、モジュールライブラリ460を探索してエンドユーザが必要とするファンクションを提供することができる1つまたは複数のエンドユーザプログラミングモジュールを捜し出すことができる。次いで、このマッチングコンポーネントは、ネットワーク430を介してエンドユーザプログラミングインタフェース420に伝送するために、マッチングエンドユーザプログラミングモジュールのコピーを、モジュールサーバに送ることができる。追加として、または代替的に、モジュールサーバ440は、利用可能なエンドユーザプログラミングモジュールのリストを、エンドユーザプログラミングインタフェース420に供給して、リスト上のエンドユーザプログラミングモジュールの1つを伝送するコマンドを待ち受ける。当業者であれば、モジュールサーバ440は、とりわけ、ウェブサーバまたはファイルトランスファプロトコル(FTP)サーバとして実現できることを理解するであろう。追加として、または代替的に、モジュール検索およびダウンロードは、ウェブサービスとして提供することができる。
本明細書において、例えば、識別またはマッチングタスクと関係して、開示して説明する様々なコンポーネントは、その様々な態様を実施するために様々な人工知能ベースの方式を使用することができる。例えば、エンドユーザ定義動作のエンドユーザプログラミングモジュールとのマッチングは、ニューラルネットワーク、エキスパートシステム、ルールベース処理コンポーネント、またはサポートベクトルマシン(SVM)によって実施することができる。
分類関数(classifier)は、入力属性ベクトル、X=(x,x,x,x,...x)を、その入力があるクラスに属する信頼度(confidence)、すなわちf(X)=信頼度(クラス)にマッピングする関数である。このような分類は、確率および/または統計に基づく分析(例えば、分析ユーティリティとコストへの属性分配)を使用して、ユーザが自動的に実行することを望む動作を予知または推論することができる。エンドユーザプログラミングモジュールの場合には、イベントのパターンを分類して、1つまたは複数の特定の動作を行うべきかどうかを判定することができる。この開示を読めば当業者には明白であるように、その他のパターンマッチングタスクを使用することもできる。
SVMは、使用することができる分類関数の一例である。SVMは、入力可能な空間における超曲面(hypersurface)を見つけることによって動作し、この超曲面は、トリガ基準を非トリガイベントから分別することを試みる。直感的に、これは、訓練データと同一ではないが、それに近い試験データに対して分類を正しくする。その他の有向および無向モデル分類技法としては、例えば、ナイーブベイズ(naive Bayes)、ベイズネットワーク(Bayesian networks)、決定木、および異なる依存性パターンを提供する確率的分類モデルが挙げられる。本明細書において使用する分類としては、優先順位のモデルを開発するのに使用される統計的回帰も含まれる。
本明細書から容易に理解されるように、ここで開示または説明したコンポーネントは、(例えば、一般的な訓練データによって)明示的に訓練された分類関数だけでなく、(例えば、ユーザの挙動を観察すること、外来情報を受け取ることによって)暗黙的に訓練された分類関数を使用することができる。例えば、SVMは、分類生成関数(classifier constructor)および特徴選択モジュールにおける学習フェーズまたは訓練フェーズによって構成される。すなわち、分類関数は、それには限定されないが、デバイスにデータを送るべきかどうかを判定することを含み、多数の関数を自動的に実行するのに使用することができる。
記述したコンポーネントおよび方法は、エンドユーザプログラミングについての一般的なフレームワークを提供することを理解されたい。そのようなエンドユーザプログラミングの使用の中では、コンポーネントおよび方法は、エンドユーザ定義自動タスクの生成である。やはり可能であるのは、例えば、一群の画像ファイルのそれぞれの解像度を変更することによって、多数のファイルに対して同様の種類の変更をバッチ方式で行う能力である。さらに、人工知能コンポーネントといっしょに複数タスクを実行する集約モジュール(aggregated modules)などの、より複雑なモジュールを組み合わせることによって、高度に知的な挙動が可能となる。
エンドユーザプログラミングシステム400の一動作モードは、以下のとおりである。エンドユーザは、エンドユーザプログラミングインタフェース420にアクセスして、エンドユーザが自分のコンピュータ上で実行したいと望む1つまたは複数の動作を定義する。エンドユーザプログラミングインタフェース420は、エンドユーザによって与えられた定義からエンドユーザ定義動作410を作成するとともに、そのエンドユーザ定義動作の適当な記述子を作成する。次いで、エンドユーザプログラミングインタフェース420は、その記述子をネットワーク430を介してモジュールサーバ440に送る。モジュールサーバ440は、その記述子をマッチングコンポーネント450に送る。マッチングコンポーネント450は、モジュールライブラリ460を検索して、ユーザが指定するファンクションを提供するモジュールを捜し出す。次いで、マッチングコンポーネントは、モジュールサーバ440に、捜し出されたモジュールのリストを供給する。
モジュールサーバ440は、捜し出されたモジュールのリストを、ネットワーク430を介してエンドユーザプログラミングインタフェース420に送る。エンドユーザは、そのリストから1つまたは複数のモジュールを選択して、その選択をネットワーク430を介してモジュールサーバ440に送る。次いで、選択されたモジュールは、ネットワーク430を介してエンドユーザプログラミングインタフェース420に送られて、エンドユーザのマシンに実装される。
図5は自動エンドユーザプログラミングシステム500のシステムブロック図である。自動エンドユーザプログラミングシステム500を使用して、ファンクションプログラムモジュールを生成することが可能であり、このファンクションプログラムモジュールは、様々なコンピューティングタスクを実行する間に、エンドユーザがコンピュータと実際に対話する方法に基づいている。具体的には、自動エンドユーザプログラミングシステム500は、コンピュータ上でユーザのコマンドおよび動作を監視、分析して、エンドユーザプログラミングモジュールを作成することによって自動化が可能な、一般的に実行されるタスクのパターンを識別することができる。
自動エンドユーザプログラミングシステム500は、モニタ510を含む。モニタ510は、例えばGUI環境において、マウスクリックや、そのマウスクリックによって始動される特定の動作などのエンドユーザ動作を追跡することができる。モニタ510は、オペレーティングプラットフォーム520上で動作するとともに、それと相互作用する。当業者であれば容易に理解するように、GUIなどのインタフェース環境において実行されるある種のエンドユーザ動作は、オペレーティングプラットフォーム520などのオペレーティング環境によって実際に実行される動作を始動する。エンドユーザ操作および動作を追跡する能力に加えて、モニタ510は、エンドユーザの代わりに、またはそのコマンドに応答して、オペレーティングプラットフォーム520がとる動作を追跡することができる。
モニタ510は、検出された動作を動作データストア530内に記憶することができる。動作データストア530は、動作オブジェクトの収集、エンドユーザ動作のリスト、またはエンドユーザとコンピュータとの対話の様子の記録を保存する別の適当な形態とすることができる。モニタは、これらのエンドユーザ動作を分析して、動作のパターンが現れつつあるか、または現れているかを判定することを試みることができる。例えば、エンドユーザは、写真編集プログラムにおいて各個別の画像ファイルを開くことによって、多数の写真について作業中であり、著作権の通告を画像ファイルに挿入している可能性がある。モニタ510は、エンドユーザがこのタスクを反復していると判定して、反復タスクについての情報をエンドユーザプログラミングモジュール540に送ることができる。
エンドユーザプログラミングモジュール540は、この反復タスク(または一連のタスク)についての情報を使用して、エンドユーザ定義動作を作成して、そのタスクを実行するのに使用することができるファンクションをファンクションデータストア550内で捜し出す。この捜し出されたファンクションを使用して、モニタ510によって識別されるタスクを自動的に実行することができるエンドユーザプログラムを作成することができる。これらの動作は、エンドユーザプログラムの作成を含めて、エンドユーザからの介入なしに、バックグラウンドコンピューティングタスクとして実行することが可能である。エンドユーザプログラムが生成されると、システムは、エンドユーザに、コンピュータに実行されているタスクを自動的に完了させることを望むかどうかを決定することを促すことができる。上述の写真の著作権通知の場合には、システムは、エンドユーザに、コンピュータが作業ディレクトリの残部ファイル内に著作権通知を自動的に挿入すべきかどうかを尋ねることができる。
図6は、セキュアエンドユーザプログラミングシステム600のシステムブロック図である。セキュアエンドユーザプログラミングシステム600は、エンドユーザプログラミングモジュールに対して制御されたアクセスを行うために使用することができる。さらに、エンドユーザプログラミングシステム600によって作成されるエンドユーザプログラムを検査して、そのようなプログラムが拡大された特権で実行されないことを保証することができる。
セキュアエンドユーザプログラミングシステム600は、エンドユーザプログラミングモジュール610を含む。エンドユーザプログラミングモジュール610は、その他の図において参照したその他のエンドユーザプログラミングコンポーネントに合わせて先に開示して説明したすべてのファンクションを実行することができる。ユーザ認証モジュール620は、エンドユーザプログラミングモジュール610へのアクセスを制御して、アクセスを許可されたエンドユーザだけに限定することができる。
様々な機構および手法を使用して、ユーザ認証モジュール620を実現することができる。ユーザ認証モジュール620は、特定の実装ニーズまたは設計選択に従って、多種多様な形態をとることができる。特に、ユーザ認証モジュール620は、あなたは誰か(who you are)、あなたは何を知っているか(what you know)、あなたは何を持っているか(what you have)というセキュリティパラダイムの1つまたは複数に従って動作する、セキュリティスキームを使用することができる。
「あなたは誰か」というセキュリティパラダイムに基づく実装形態に使用することができるコンポーネントは、とりわけ、指紋スキャナおよび網膜スキャナなどの様々なバイオメトリックベースデバイスが挙げられる。「あなたは何を知っているか」というパラダイムを使用する実装形態に対しては、ユーザ名およびパスワード認証システムを使用することができる。「あなたは何を持っているか」というパラダイムに基づく実装形態の範疇には、無線周波数識別(RFID)タグベースシステムなどの、セキュリティトークンおよび接近検出装置を使用するシステムがある。所望のレベルのセキュリティによれば、1つまたは複数の前述のシステムを、ユーザ認証モジュール620の部分として組み合わせることができる。
ユーザ認証モジュール620は、エンドユーザプログラミングモジュール610へのゲートキーパとしての役割を果たすことができる。ユーザがエンドユーザプログラミングモジュール610にアクセスしてそれを使用できるためには、エンドユーザは、ユーザ認証モジュール620が発行するセキュリティ質問に適切に応答することによって、システムを使用する自分の権限を証明しなくてはならない。特定の実装形態によれば、そのような応答は、特定のユーザインタフェースを介して、または別の適当な手段を介して提供することができる。
特権(privilege)認証モジュール630は、エンドユーザ作成プログラムモジュール640の実行を監視することができる。具体的には、特権認証モジュール630は、エンドユーザ作成モジュール640が実行中に、その他のプロセスのために予約されているか、またはそうではなく、許可されていないコンポーネントにアクセスするか、またはタスクを実行しようとしているかどうかを検査することができる。例えば、エンドユーザ作成モジュール640の1つなどの、エンドユーザ作成モジュールは、その実行の一部として、別のエンドユーザに属する1組のファイルの修正を試みる可能性がある。特権認証モジュール630は、そのエンドユーザ作成モジュールを実行しているエンドユーザが、コンピューティングシステム上でその他のエンドユーザのファイルにアクセスするのに十分なアクセス資格証明を有するかどうかを検査することができる。そうでない場合には、特権認証モジュール630はエンドユーザ作成モジュールの実行に割り込むか、またはその実行を停止することができる。さらに、特権認証モジュール630は、疑わしい特権拡大攻撃などのイベントをロギングすることや、エンドユーザを警告で促すことなど、様々な関係するタスクを実行することができる。
図7〜12を参照すると、様々な方法または処理過程についての流れ図が示してある。説明を簡単にする目的で、例えば、フローチャートの形態で示す本明細書に示す1つまたは複数の方法を、一連の動作として示して説明するが、図示して説明した方法および処理過程も、そのような方法または処理過程で使用することができるコンポーネントも、いくつかの動作は、本明細書において示し説明したものとは異なり、その他の動作と異なる順序で、および/または同時に発生することがあるように、動作の順序に必ずしも限定されないことを理解されたい。例えば、当業者であれば理解するように、方法は、代替的に、状態図にするなど、一連の相互関連する状態またはイベントとして表わすことができる。さらに、方法または処理過程を実現するために、図示した動作のすべてを必要としない。
図7は、その他の図と合わせて開示、説明した様々なコンポーネントに使用することができる、一般的な処理フロー700の流れ図である。一般的な処理フロー700は、エンドユーザの見地から示してあり、先在するコンピューティング機能を補完することができるエンドユーザ定義プログラムモジュールを作成するのに使用することができる。その他の使用も可能である。
一般的な処理フロー700の処理は、開始ブロック710で始まり、処理ブロック720へと続き、ここでエンドユーザプログラミングインタフェースはユーザによってアクセスされる。このエンドユーザプログラミングインタフェースは、その他の図と合わせて上記に開示し説明したエンドユーザプログラミングインタフェースまたはモジュールの一方とすることができる。エンドユーザは、処理ブロック730において、実行すべき1組の動作を定義する。これらの動作は、エンドユーザが、一から作成するか、または作動中のコンピューティングシステムによってサポートされている利用可能な動作のリストから選択することができる。
処理ブロック740において、所望のファンクションを提供する1つまたは複数のコンポーネントが識別される。これらのコンポーネントは、スタンドアロンプログラム、バックグラウンドプロセス、プログラムのファンクション、スクリプト、または何らかの適当な実行可能コンポーネントとすることができる。処理ブロック750において、統合エンドユーザプログラムが作成される。ルールベースが処理ブロック760において更新される。処理は終了ブロック770で終了する。
図8は、その他の図と合わせて開示し説明した様々なコンポーネントに使用することができる、一般的な処理フロー800の流れ図である。一般的な処理フロー800は、エンドユーザプログラミングシステムの見地から示してあり、複数のコンポーネントを有するエンドユーザ定義プログラムモジュールを作成するのに使用することができる。その他の使用も可能である。
一般的な処理フロー800の処理は、開始ブロック810で始まり、処理ブロック820へと続く。処理ブロック820において、エンドユーザ定義動作セットが入手される。このエンドユーザ定義動作のセットには、エンドユーザが一まとめにして何らかの望ましい方法で順序づけることができる複数の動作を含めることができる。ブロック830において、動作が、エンドユーザ定義動作のセットから選択される。処理は処理ブロック840へと続き、ここでエンドユーザ定義動作によって記述されるコンピューティングタスクを実行することができるファンクションが識別される。そのような識別は、記述的コードを使用するか、またはその他の何らかの好適な手法によって、利用可能な動作とファンクションとの間の事前定義した対応づけまたはマッチングに基づいて行うことができる。
処理ブロック850において、選択された動作は、識別されたファンクションにマッピングされる。判定ブロック860において、処理ブロック820において取得されたセット内にエンドユーザ定義動作が残っているかどうかの判定が行われる。その判定がNoの場合には、処理は処理ブロック870へと続き、ここでエンドユーザプログラムモジュールが、マッピングされたファンクションから構築される。その判定がYesの場合には、処理は処理ブロック830へと戻り、ここで、次のエンドユーザ定義動作がセットから選択される。処理ブロック870からの処理は、終了ブロック880で終了する。
図9は、その他の図と合わせて開示し説明した様々なコンポーネントに使用することができる、一般的な処理フロー900の流れ図である。一般的な処理フロー900は、ユーザが必要とするファンクションを提供する、先に作成されたエンドユーザ定義プログラムモジュールを捜し出して取得するのに使用することができる。この一般的な処理フローは、その他の使用も可能である。
一般的な処理フロー900は開始ブロック910で始まり、処理ブロック920へと続き、ここでエンドユーザプログラムモジュールの記述子が取得される。この記述子は、所望のエンドユーザプログラムモジュールのファンクションを記述するコードとすること、事前定義された名前とすること、またはその他の種類の記述子とすることができる。処理は処理ブロック930に続き、ここで記述子を使用してサーバへの照会が行われる。処理ブロック940において、記述子は先在のプログラムモジュールとマッチングされる。このマッチングは、厳密なマッチングである必要はなく、所望のモジュールの最良適合または精密近似とすることができる。そのような近似は、新規のモジュールを一から構築しなくてはならないのではなく、それを修正することによって厳密な所望のモジュールを作成することができるフレームワークを提供することによってユーザの開発時間を削減することができるので、精密近似であっても役に立つ。
処理ブロック950において、マッチングモジュールがサーバから取得される。そのモジュールは、処理ブロック960においてクライアント上に実装される。実装されると、モジュールを、エンドユーザが所望どおりに修正するか、またはその状態で使用することができる。一般的な処理フロー900の処理は、終了ブロック970において終了する。
図10は、その他の図と合わせて、開示し説明した様々なコンポーネントに使用することができる、一般的な処理フロー1000の流れ図である。一般的な処理フロー1000は、先在するコンピューティング機能を補完することができるエンドユーザ定義プログラムモジュールを自動的に生成するのに使用することができる。その他の使用も可能である。
処理は、開始ブロック1010で始まり、処理ブロック1020へと続き、ここでは、エンドユーザがコンピュータを操作する間、エンドユーザ動作が監視される。処理ブロック1030において、コンピュータの動作のパターンが識別される。処理は処理ブロック1040へと続き、ここで監視されたエンドユーザの動作に基づいて、エンドユーザからプログラムモジュールを作成する許可を取得するためのプロンプトが生成される。
判定ブロック1050において、エンドユーザがエンドユーザプログラムモジュールを作成することを許可したかどうかが判定される。Yesの場合には、処理は処理ブロック1060へと続き、ここでエンドユーザプログラムモジュールが作成される。Noの場合には、処理は処理ブロック1020へと戻り、ここでエンドユーザの動作が監視される。処理ブロック1060からの処理は、終了ブロック1070において終了する。
図11は、その他の図と合わせて上記に開示し説明した様々なコンポーネントに使用することができる一般的な処理フロー1100の流れ図である。一般的な処理フロー1100を使用して、先在するコンピューティング機能を補完することができるエンドユーザ定義プログラムを使用または作成するためのアクセスを、それを行うことを先に許可されていたエンドユーザだけに限定することができる。その他の使用も可能である。
処理は、開始ブロック1110で始まり、処理ブロック1120へと続く。処理ブロック1120において、エンドユーザプログラムモジュールへのアクセスが行われる。処理は、判定ブロック1130へと続き、ここでエンドユーザプログラムモジュールにアクセスしているエンドユーザがそれを許されるかどうかが判定される。Yesの場合には、処理は処理ブロック1140へと続き、ここでエンドユーザはプログラムモジュールを構築する。
処理ブロック1140からの処理は、処理ブロック1150へと続き、ここで作成されたエンドユーザプログラムモジュールが実行される。判定ブロック1160において、エンドユーザプログラムモジュールによって実行されるべきファンクションが、そのモジュールの実行を指示するエンドユーザによって適当に実行できるかどうかが判定される。Yesの場合には、エンドユーザプログラムモジュールの実行が、処理ブロック1170において進行を許可される。次いで、処理は終了ブロック1180で終了する。同様に、判定ブロック1130または1160のいずれかにおいて、Noの判定がなされる場合には、処理は終了ブロック1180において終了する。
図12は、本明細書において開示して説明したコンポーネントまたは方法を使用して作成されるエンドユーザプログラムへ続く、一般的な処理フロー1200の流れ図である。一般的な処理フロー1200の処理は開始ブロック1210で始まり、処理ブロック1220へと続き、ここで電子メールメッセージの着信などのトリガイベントが発生する。処理ブロック1230において、トリガイベントが発生したことを示すシステムイベントがエンドユーザプログラムに渡される。このエンドユーザプログラムは、そのシステムイベントを使用して処理ブロック1240における処理を始める。
処理は処理ブロック1250へと続き、ここでエンドユーザプログラムは、そのエンドユーザプログラムに含まれるルールまたは論理を適用する。処理ブロック1260において、エンドユーザプログラムは、受け取ったシステムイベントおよびそのルールまたは論理に従って、その処理タスクを終了する。判定ブロック1270において、エンドユーザプログラムがそのタスクを正常に終了したかどうかが判定される。Noの場合には、処理は処理ブロック1280へと続き、ここでエラーメッセージが生成されて、エンドユーザはそのエラーを通知される。処理ブロック1280からの処理は、終了ブロック1290において終わる。同様に、判定ブロック1270において行われる判定がYesの場合には、処理は終了ブロック1290で終わる。
実装に対する追加の文脈を提供するために、図13〜14および以下の考察は、開示して記述したコンポーネントおよび方法をそれに実装することができる適当なコンピューティング環境の簡潔な、全体的な説明を提供するものである。上記では、様々な具体的な実装形態を、ローカルコンピュータおよび/またはリモートコンピュータで実行されるコンピュータプログラムのコンピュータ実行可能命令の一般的文脈において説明したが、当業者であれば、単独またはその他のプログラムモジュールと組み合わせた、その他の実装形態も可能であることを理解するであろう。一般的に、プログラムモジュールとしては、特定のタスクの実行および/または特定の抽象データ型の実装を行う、ルーチン、プログラム、コンポーネント、データ構造、その他がある。
さらに、当業者であれば理解するように、上記のコンポーネントおよび方法の実施は、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータだけでなく、それぞれが1つまたは複数の関連するデバイスと動作可能に通信することができる、パーソナルコンピュータ、ハンドヘルドコンピュータデバイス、マイクロプロセッサベースの家電および/またはプログラマブル家電、その他を含む、その他のコンピュータシステム構成で行うことも可能である。開示して説明したコンポーネントおよび方法について示したいくつかの態様は、通信ネットワークまたはその他のデータ接続によってリンクされたリモート処理装置によって、いくつかのタスクが実行される、分散コンピューティング環境によって実施することも可能である。しかしながら、全部でないにしても、これらの態様の一部は、スタンドアロンコンピュータによって実施することができる。分散コンピューティング環境においては、プログラムモジュールは、ローカルおよび/またはリモート記憶装置に配置してもよい。
図13を参照すると、本発明の様々な態様を実装するための例示的環境1300は、コンピュータ1312を含む。コンピュータ1312は、処理ユニット1314、システムメモリ1316、およびシステムバス1318を含む。システムバス1318は、それに限定はされないが、システムメモリ1316を含む、システムコンポーネントを処理ユニット1314に結合する。処理ユニット1314は、様々な利用可能なプロセッサの任意のものとすることができる。デュアルマイクロプロセッサまたはその他のマルチプロセッサアーキテクチャも、処理ユニット1314として使用することができる。
システムバス1318は、いくつかの種類のバス構造の任意のものとすることができ、それには、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/またはそれに限定はされないが、ISA(Industrial Standard Architecture)、MCA(Micro-Channel Architecture)、拡張ISA(Extended ISA)、IDE(Intelligent Drive Electronics)、VLB(VESA Local Bus)、PCI(Peripheral Component Interconnect)、カードバス、USB(Universal Serial Bus)、AGP(Advanced Graphics Port)、PCMCIAバス(Personal Computer Memory Card International Association bus)、FireWire(IEEE1394)、およびSCSI(Small Computer Systems Interface)を含む、任意の多様な利用可能なバスアーキテクチャを使用するローカルバスがある。
システムメモリ1316としては、揮発性メモリ1320および不揮発性メモリ1322がある。例えば、起動時におけるコンピュータ1312内の要素間の情報を転送する基本ルーチンを包含する、基本入出力システム(BIOS)は不揮発性メモリ1322中に記憶される。説明のためであり限定はしないが、不揮発性メモリ1322としては、読出し専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリを挙げることができる。揮発性メモリ1320には、ランダムアクセスメモリ(RAM)があり、これは外部キャッシュメモリとして作用する。説明のためであり限定はしないが、RAMは多くの形態で利用可能であり、例えば、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、SynchlinkDRAM(SLDRAM)、およびダイレクトRambus RAM(DRRAM)などがある。
コンピュータ1312には、取外し可能/取外し不可能、揮発性/不揮発性のコンピュータ記憶媒体を含めることもできる。例えば、図13は、ディスク記憶装置1324を示す。ディスク記憶装置1324としては、それに限定はされないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、またはメモリスティックが挙げられる。さらに、ディスク記憶装置1324には、記憶媒体を個別に含めるか、または、それに限定はされないが、コンパクトディスクROMデバイス(CD−ROM)、CDレコーダブルドライブ(CD−R Drive)、CD書き換え可能ドライブ(CD−RW Drive)またはDVD−ROM(ディジタルバーサタイルディスクROMドライブ)などの光ディスクドライブを含む、その他の記憶媒体と組み合わせて含めることができる。ディスク記録装置1324のシステムバス1318への接続を容易にするために、通常、インタフェース1326のような、取外し可能または取外し不可能なインタフェースを使用する。
図13は、ユーザと適切な動作環境1300に記述された基本コンピュータ資源との間の媒介として作用するソフトウェアを記述することに留意されたい。そのようなソフトウェアは、オペレーティングシステム1328を含む。ディスク記憶装置1324に記憶できるオペレーティングシステム1328は、コンピュータシステム1312の資源を制御して割り当てる作用をする。システムアプリケーション1330は、システムメモリ1316またはディスク記憶装置1324のいずれかに記憶されるプログラムモジュール1332およびプログラムデータ1334を介して、オペレーティングシステム1328による資源の管理を利用する。本発明は、様々なオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実装できることを理解されたい。
ユーザは、入力デバイス1336を介してコンピュータ1312にコマンドまたは情報を入力する。入力デバイス1336としては、それに限定はされないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、TVチューナーカード、ディジタルカメラ、ディジタルビデオカメラ、ウェブカメラ、およびその他が挙げられる。これらおよびその他の入力デバイスは、インタフェースポート1338を経由してシステムバス1318によって、処理ユニット1314に接続する。インタフェースポート1338としては、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス(USB)がある。出力デバイス1340は、入力デバイス1336と同タイプのいくつかのポートを使用する。したがって、例えば、USBポートを使用して、コンピュータ1312へ入力を供給するとともに、コンピュータ1312からの情報を出力デバイス1340に出力することができる。出力アダプタ1342は、専用アダプタを必要とする他の出力デバイス1340の中に、モニタ、スピーカ、およびプリンタのような出力デバイス1340があることを示すために設けてある。出力アダプタ1342としては、説明のためであって限定ではなく、出力デバイス1340とシステムバス1318の間の接続手段を提供するビデオカードおよびサウンドカードがある。リモートコンピュータ1344などのその他のデバイスおよび/またはデバイスのシステムは、入力および出力能力の両方を提供することに留意されたい。
コンピュータ1312は、リモートコンピュータ1344などの、1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作可能である。リモートコンピュータ1344は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベース機器、ピアデバイスまたはその他の一般的なネットワークノードおよびその他とすることができるとともに、通常は、コンピュータ1312に関して記述した要素の多数または全部を含む。簡略にするために、メモリ記憶装置1346だけを、リモートコンピュータ1344とともに示してある。リモートコンピュータ1344は、ネットワークインタフェース1348を介してコンピュータ1312に論理的に接続され、次いで通信接続1350を介して物理的に接続されている。ネットワークインタフェース1348は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)などの有線および/または無線通信ネットワークを包含する。LAN技術には、FDDI(Fiber Distributed Data Interface)、CDDI(Copper Distributed Data Interface)、イーサネット(登録商標)、トークンリング(Token Ring)、その他がある。WAN技術としては、それに限定はされないが、二地点間リンク(point-to-point link)、統合サービスディジタルネットワーク(ISDN)のような回線交換ネットワークおよびそれの変形形態、パケット交換ネットワーク、およびディジタル加入者ライン(DSL)などがある。
通信接続1350とは、ネットワークインタフェース1348をバス1318に接続するのに使用されるハードウェア/ソフトウェアを意味する。通信接続1350は、説明を分かりやすくするためにコンピュータ1312内部に示してあるが、コンピュータ1312の外部におくこともできる。ネットワークインタフェース1348への接続に必要なハードウェア/ソフトウェアとしては、説明の目的だけとして、通常の電話モデム(regular telephone grade modems)、ケーブルモデムおよびDSLモデルを含むモデム類、ISDNアダプタ、およびイーサネット(登録商標)カードなどの、内部技術および外部技術が挙げられる。
図14は、開示して説明したコンポーネントおよび方法をその中で使用することができる、サンプルコンピューティング環境1400の概略ブロック図である。システム1400は、1つまたは複数のクライアント1410を含む。クライアント1410は、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)とすることができる。システム1400は、また、1つまたは複数のサーバ1420も含む。サーバ1420は、ハードウェアおよび/またはソフトウェア(例えばスレッド、プロセス、コンピューティングデバイス)とすることができる。サーバ1420は、例えば、開示して説明したコンポーネントまたは方法を使用することによって変換を実行する、スレッドまたはプロセスを収容することができる。
クライアント1410とサーバ1420の間の通信の一手段は、2つ以上のコンピュータプロセスの間で伝送するように適合されたデータパケットの形態であることができる。システム1400には、クライアント1410とサーバ1420との間の通信を容易にするために使用することができる通信フレームワーク1440を含めることができる。クライアント1410は、クライアント1410に局在する情報を記憶するために使用することができる、1つまたは複数のクライアントデータストア1450に動作可能に接続されている。同様に、サーバ1420は、サーバ1420に局在する情報を記憶するために使用することができる、1つまたは複数のサーバデータストア1430に動作可能に接続されている。
上記の内容は、本発明の実施例を含む。もちろんのこと、本発明を説明する目的で、すべての考えられるコンポーネントの組合せおよびそのための方法を記述することは不可能であるが、当業者であれば、本発明のさらなる多数の組合せおよび並べ替えが可能であることを認識することができる。したがって、本発明は、添付の特許請求の範囲の趣旨と範囲に入る、そのようなすべての変更、改変、および変形を包含することを意図するものである。
特に、上述のコンポーネント、デバイス、回路、システムその他によって実行される様々なファンクションに関して、そのようなコンポーネントを記述するのに使用する用語(「手段(means)」の記載を含む)は、特に断らない限り、構造的には開示した構造と均等ではないが、本明細書で示した本発明の例示的態様におけるファンクションを実行する、記述したコンポーネント(例えば、ファンクション的均等物)の特定のファンクションを実行する任意のコンポーネントに対応することを意図している。これに関して、本発明はシステムだけでなく、本発明の様々な方法の動作および/またはイベントを実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能記憶媒体を含むことが理解されるであろう。
さらに、本発明の特定の特徴を、いくつかの実装形態の1つだけに関して開示したが、そのような特徴は、任意または特定の用途に対して望ましいか、または有利である場合には、その他の実装形態の1つまたは複数の他の特徴と組み合わせることができる。さらに、「含む(include)」および「含んでいる(including)」という用語ならびにそれらの変形形態が、詳細な説明またはクレームのいずれかで使用される限りにおいて、これらの用語は、用語「備える(comprising)」と同様に、包含的であることを意味するものである。
エンドユーザプログラミングシステムのシステムブロック図である。 エンドユーザプログラミングモジュールのシステムブロック図である。 エンドユーザ処理システムのシステムブロック図である。 リモートコンポーネントを含む、エンドユーザプログラミングシステムのシステムブロック図である。 自動エンドユーザプログラミングシステムのシステムブロック図である。 セキュアエンドユーザプログラミングシステムのシステムブロック図である。 本明細書において開示し説明した様々なコンポーネントに使用することができる一般的な処理フローの流れ図である。 本明細書において開示し説明した様々なコンポーネントに使用することができる一般的な処理フローの流れ図である。 本明細書において開示し説明した様々なコンポーネントに使用することができる一般的な処理フローの流れ図である。 本明細書において開示し説明した様々なコンポーネントに使用することができる一般的な処理フローの流れ図である。 本明細書において開示し説明した様々なコンポーネントに使用することができる一般的な処理フローの流れ図である。 本明細書において開示し説明した様々なコンポーネントに使用することができる一般的な処理フローの流れ図である。 開示して説明した様々なコンポーネントおよび方法を実装することができるコンピューティング環境の概略図である。 開示して説明した様々なコンポーネントおよび方法を使用することができる、ネットワーク環境のシステムブロック図である。

Claims (20)

  1. データ処理タスクを生成するシステムであって、
    エンドユーザが、1つまたは複数のエンドユーザ定義動作を少なくとも1つの利用可能なコンピューティングコンポーネントに関連付けることを可能にするエンドユーザプログラミングモジュールと、
    前記1つまたは複数のエンドユーザ定義動作と前記利用可能なコンピューティングコンポーネントとのバインディングを提供して、前記利用可能なコンピューティングコンポーネントを使用して統合エンドユーザプログラムが生成されるようにするルールプラットフォームと
    を含むことを特徴とするシステム。
  2. 前記利用可能なコンピューティングコンポーネントは、オペレーティングシステムであることを特徴とする請求項1に記載のシステム。
  3. 前記利用可能なコンピューティングコンポーネントは、モニタアプリケーションであることを特徴とする請求項1に記載のシステム。
  4. 前記利用可能なコンピューティングコンポーネントは、ユーザアプリケーションであることを特徴とする請求項1に記載のシステム。
  5. 請求項1の前記コンポーネントを含む、コンピュータが解釈できるデータ構造を含むことを特徴とするコンピュータ読取り可能記憶媒体。
  6. 請求項1の前記コンポーネントを含むデータ構造を含む、コンピュータが解釈できるデータを含むことを特徴とするデータ信号。
  7. データ処理コンポーネントを生成する方法であって、
    イベントの発生時にとるべきエンドユーザ定義動作を指定すること、
    前記エンドユーザ定義動作を実行することができる第1のソフトウェアコンポーネントを識別すること、および、
    前記第1のソフトウェアコンポーネントを使用して前記エンドユーザ定義動作を実行する第2のソフトウェアコンポーネントを生成すること
    を含むことを特徴とする方法。
  8. 先在するソフトウェアコンポーネントの中に、前記第2のソフトウェアコンポーネントを起動するグラフィカルコントロールを生成することをさらに含むことを特徴とする請求項7に記載の方法。
  9. 前記第2のソフトウェアコンポーネントを起動する、グラフィカルユーザインタフェース用のアイコンを生成することをさらに含むことを特徴とする請求項7に記載の方法。
  10. 前記第1のソフトウェアコンポーネントを識別することは、オペレーティングシステムのコンポーネントを識別することを含むことを特徴とする請求項7に記載の方法。
  11. 前記第1のソフトウェアコンポーネントを識別することは、モニタプロセスのコンポーネントを識別することを含むことを特徴とする請求項8に記載の方法。
  12. 前記第1のソフトウェアコンポーネントを識別することは、デーモンプロセスのコンポーネントを識別することを含むことを特徴とする請求項9に記載の方法。
  13. 前記第1のソフトウェアコンポーネントを識別することは、ユーザアプリケーションのコンポーネントを識別することを含むことを特徴とする請求項7に記載の方法。
  14. コンピューティングデバイスに請求項13の方法を実行させることができる、コンピュータが解釈できるデータを含むことを特徴とするコンピュータ読取り可能記憶媒体。
  15. コンピューティングデバイスに請求項13の方法を実行させることができる、コンピュータが解釈できるデータを含むことを特徴とするデータ信号。
  16. データ処理コンポーネントを生成するシステムであって、
    コマンドイベント時にとるべきエンドユーザ定義動作を指定する手段と、
    前記指定されたエンドユーザ定義動作を実行することができる、第1のソフトウェアコンポーネントを識別する手段と、
    前記第1のソフトウェアコンポーネントを使用して前記エンドユーザ定義動作を実行する第2のソフトウェアを生成する手段と
    を含むことを特徴とするシステム。
  17. 先在するソフトウェアコンポーネント内に、前記第2のソフトウェアコンポーネントを起動するグラフィカルコントロールを生成する手段をさらに含むことを特徴とする請求項16に記載のシステム。
  18. 前記第2のソフトウェアコンポーネントを起動する、グラフィカルユーザインタフェース用のアイコンを生成する手段をさらに含むことを特徴とする請求項16に記載のシステム。
  19. 収集してエンドユーザ定義動作を生成することができる、ユーザ動作を監視する手段をさらに含むことを特徴とする請求項16に記載のシステム。
  20. 前記ユーザ定義動作に基づいてプログラムモジュールを生成する手段をさらに含むことを特徴とする請求項19に記載のシステム。
JP2006012640A 2005-02-28 2006-01-20 エンドユーザデータ起動 Ceased JP2006244466A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65733005P 2005-02-28 2005-02-28
US11/178,845 US20060195411A1 (en) 2005-02-28 2005-07-11 End user data activation

Publications (1)

Publication Number Publication Date
JP2006244466A true JP2006244466A (ja) 2006-09-14

Family

ID=36616918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006012640A Ceased JP2006244466A (ja) 2005-02-28 2006-01-20 エンドユーザデータ起動

Country Status (10)

Country Link
US (1) US20060195411A1 (ja)
EP (1) EP1696319A3 (ja)
JP (1) JP2006244466A (ja)
KR (1) KR20060095450A (ja)
AU (1) AU2006200224B2 (ja)
BR (1) BRPI0600196A (ja)
CA (1) CA2532717A1 (ja)
MX (1) MXPA06001211A (ja)
RU (1) RU2419841C2 (ja)
TW (1) TW200630890A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271792B2 (en) 2008-02-20 2012-09-18 Ricoh Company, Ltd. Image processing apparatus, authentication package installation method, and computer-readable recording medium

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561069B2 (en) * 2002-12-19 2013-10-15 Fujitsu Limited Task computing
US8117280B2 (en) * 2003-12-12 2012-02-14 Fujitsu Limited Task computing
TWI293317B (en) * 2003-12-31 2008-02-11 Ind Tech Res Inst Method for preparing polymer microspheres by aqueous phase-aqueous phase emulsion process
US20050246304A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation End-user application customization using rules
US8065336B2 (en) 2004-12-20 2011-11-22 Fujitsu Limited Data semanticizer
US8972872B2 (en) * 2006-03-27 2015-03-03 Fujitsu Limited Building computing applications based upon metadata
US7970637B2 (en) * 2006-06-27 2011-06-28 Microsoft Corporation Activity-centric granular application functionality
US8364514B2 (en) * 2006-06-27 2013-01-29 Microsoft Corporation Monitoring group activities
US20070300185A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Activity-centric adaptive user interface
US20070299631A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Logging user actions within activity context
US7836002B2 (en) * 2006-06-27 2010-11-16 Microsoft Corporation Activity-centric domain scoping
US20070297590A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Managing activity-centric environments via profiles
US20070300225A1 (en) * 2006-06-27 2007-12-27 Microsoft Coporation Providing user information to introspection
US20070299713A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Capture of process knowledge for user activities
US7761393B2 (en) * 2006-06-27 2010-07-20 Microsoft Corporation Creating and managing activity-centric workflow
US20080221444A1 (en) * 2007-03-07 2008-09-11 Ritchie Paul G Integrated Imaging and Biopsy System with Integrated Surgical, Therapy, and Diagnostic Devices
US8347265B1 (en) * 2007-03-27 2013-01-01 Network Appliance, Inc. Method and apparatus for generating a command line interpreter
US8589821B1 (en) * 2007-08-27 2013-11-19 Sandia Corporation Storyboard method of end-user programming with natural language confirmation
US9563877B2 (en) * 2008-03-11 2017-02-07 Microsoft Technology Licensing, Llc Customizable controls provided by a messaging application for performing selected actions
US9032412B1 (en) 2009-12-31 2015-05-12 Lenovoemc Limited Resource allocation based on active folder activity
US9959150B1 (en) * 2009-12-31 2018-05-01 Lenovoemc Limited Centralized file action based on active folders
US9594602B1 (en) 2009-12-31 2017-03-14 Lenovoemc Limited Active folders
RU2490711C1 (ru) * 2012-07-31 2013-08-20 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Блок кодовый сменный
TWI557576B (zh) * 2014-08-15 2016-11-11 Chunghwa Telecom Co Ltd Method and System for Predicting Calculation of Timing Data
CN109783144B (zh) * 2017-11-13 2022-03-25 深圳市创客工场科技有限公司 虚拟环境交互实现中变量的处理方法、装置和存储介质

Citations (2)

* 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 マルチウィンドウ情報処理装置
JP2004152450A (ja) * 2002-10-31 2004-05-27 Sharp Corp 着脱可能な記録媒体、記録再生装置、記録再生装置の環境設定方法、および、環境設定プログラム

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446885A (en) * 1992-05-15 1995-08-29 International Business Machines Corporation Event driven management information system with rule-based applications structure stored in a relational database
US5944819A (en) * 1993-02-18 1999-08-31 Hewlett-Packard Company Method and system to optimize software execution by a computer using hardware attributes of the computer
US5495603A (en) * 1993-06-14 1996-02-27 International Business Machines Corporation Declarative automatic class selection filter for dynamic file reclassification
US6496872B1 (en) * 1994-05-16 2002-12-17 Apple Computer, Inc. Computer system for automatically instantiating tasks designated by a user
US5831606A (en) * 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
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
US5828376A (en) * 1996-09-23 1998-10-27 J. D. Edwards World Source Company Menu control in a graphical user interface
US6061740A (en) * 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US5917489A (en) * 1997-01-31 1999-06-29 Microsoft Corporation System and method for creating, editing, and distributing rules for processing electronic messages
US6233726B1 (en) * 1997-02-05 2001-05-15 Sybase, Inc. Development system with reference card and parameter wizard methodologies for facilitating creation of software programs
US6142684A (en) * 1997-04-03 2000-11-07 Hewlett-Packard Company Joining a plurality of type hierarchies in an object oriented programming language without inheriting from a base class and without modification to the type hiearchies
US6268852B1 (en) 1997-06-02 2001-07-31 Microsoft Corporation System and method for facilitating generation and editing of event handlers
US6209125B1 (en) * 1997-06-03 2001-03-27 Sun Microsystems, Inc. Method and apparatus for software component analysis
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
US6272521B1 (en) * 1997-12-08 2001-08-07 Object Technology Licensing Corporation Apparatus and method for allowing object-oriented programs created with different framework versions to communicate
US6006035A (en) * 1997-12-31 1999-12-21 Network Associates Method and system for custom computer software installation
US6401097B1 (en) * 1998-01-23 2002-06-04 Mccotter Thomas M. System and method for integrated document management and related transmission and access
WO1999040512A1 (en) 1998-02-09 1999-08-12 Reuters, Ltd. Method and system for user defined interactions between plurality of active software applications
WO1999046689A1 (en) 1998-03-12 1999-09-16 Crossworlds Software, Inc. Execution of extended activity diagrams by code generation
US6133915A (en) * 1998-06-17 2000-10-17 Microsoft Corporation System and method for customizing controls on a toolbar
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
JP4026940B2 (ja) * 1998-07-22 2007-12-26 松下電器産業株式会社 プログラム変換装置
US6519597B1 (en) * 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6341369B1 (en) * 1998-12-03 2002-01-22 International Business Machines Corporation Method and data processing system for specifying and applying rules to classification-based decision points in an application system
US6633888B1 (en) * 1999-02-03 2003-10-14 International Business Machines Corporation Method and apparatus for visually creating and testing object oriented components
US6738964B1 (en) * 1999-03-11 2004-05-18 Texas Instruments Incorporated Graphical development system and method
US6407753B1 (en) * 1999-05-04 2002-06-18 International Business Machines Corporation System and method for integrating entities via user-interactive rule-based matching and difference reconciliation
US6332163B1 (en) * 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
US6721727B2 (en) * 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
EP1259901A1 (en) * 2000-01-27 2002-11-27 Synquiry Technologies, Ltd Software composition using graph types, graphs, and agents
US6965889B2 (en) * 2000-05-09 2005-11-15 Fair Isaac Corporation Approach for generating rules
US7412501B2 (en) * 2000-06-07 2008-08-12 Microsoft Corporation Event consumers for an event management system
US6892228B1 (en) * 2000-08-23 2005-05-10 Pure Matrix, Inc. System and method for on-line service creation
AUPQ998100A0 (en) * 2000-09-08 2000-10-05 Frostbyte Consulting Pty Ltd Application development
US6734882B1 (en) * 2000-09-29 2004-05-11 Apple Computer, Inc. Combined menu-list control element in a graphical user interface
US6633889B2 (en) * 2001-01-17 2003-10-14 International Business Machines Corporation Mapping persistent data in multiple data sources into a single object-oriented component
US20040205706A1 (en) * 2001-05-31 2004-10-14 Portwood Michael T. Method for the automatic generation of computer programs which interact with existing objects
US7549129B2 (en) * 2001-10-31 2009-06-16 Microsoft Corporation Computer system with enhanced user interface for images
CA2360645C (en) * 2001-10-31 2006-03-07 Ibm Canada Limited-Ibm Canada Limitee Dynamic generic framework for distributed tooling
CA2371646A1 (en) * 2002-02-13 2003-08-13 Ibm Canada Limited-Ibm Canada Limitee Configuration model for configuring an adapter software component to selectively access software objects and object editor using instance of same
US20030192041A1 (en) * 2002-04-03 2003-10-09 Mentze Duane E. software distribution system and method
AU2003224373A1 (en) * 2002-05-17 2003-12-02 Koninklijke Philips Electronics N.V. Rendering a first media type content on a browser
US7181694B2 (en) * 2002-05-31 2007-02-20 Sap Aktiengesellschaft Software customization objects for programming extensions associated with a computer system
US7346891B2 (en) * 2002-07-05 2008-03-18 Eka Systems Inc. System and method for automating generation of an automated sensor network
US20040012627A1 (en) * 2002-07-17 2004-01-22 Sany Zakharia Configurable browser for adapting content to diverse display types
US7225175B2 (en) * 2002-11-11 2007-05-29 Zxibix, Inc. System and method of facilitating and evaluating user thinking about an arbitrary problem using visual feedback
US7409405B1 (en) * 2002-12-06 2008-08-05 Adobe Systems Incorporated File dispatcher for multiple application targets
US7383497B2 (en) * 2003-01-21 2008-06-03 Microsoft Corporation Random access editing of media
US7650591B2 (en) * 2003-01-24 2010-01-19 Bea Systems, Inc. Marshaling and un-marshaling data types in XML and Java
US7788588B2 (en) * 2003-02-07 2010-08-31 Microsoft Corporation Realizing users' preferences
US20040193575A1 (en) * 2003-03-25 2004-09-30 Chia-Hsun Chen Path expressions and SQL select statement in object oriented language
WO2004099896A2 (en) * 2003-05-12 2004-11-18 An Mo Jeong Method and system of developing a software with utilizing extented metadata of component under component-based development environment
US20050060281A1 (en) * 2003-07-31 2005-03-17 Tim Bucher Rule-based content management system
US7734690B2 (en) * 2003-09-05 2010-06-08 Microsoft Corporation Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system
US20050262481A1 (en) * 2003-09-30 2005-11-24 Coulson Julia C Customizable toolbar creation and control
KR20070006669A (ko) * 2003-10-13 2007-01-11 코닌클리케 필립스 일렉트로닉스 엔.브이. 애플리케이션에 대한 저장 할당
US20050091181A1 (en) * 2003-10-23 2005-04-28 Mckee Timothy P. System and method for the presentation of items stored on a computer
US20050222996A1 (en) * 2004-03-30 2005-10-06 Oracle International Corporation Managing event-condition-action rules in a database system
JP2007537512A (ja) * 2004-04-30 2007-12-20 マイクロソフト コーポレーション エンドユーザルールロジックを定義し、実行するルールフレームワーク
US20050246304A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation End-user application customization using rules
US7921076B2 (en) * 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US7565663B2 (en) * 2005-02-28 2009-07-21 Microsoft Corporation Automated data organization

Patent Citations (2)

* 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 マルチウィンドウ情報処理装置
JP2004152450A (ja) * 2002-10-31 2004-05-27 Sharp Corp 着脱可能な記録媒体、記録再生装置、記録再生装置の環境設定方法、および、環境設定プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271792B2 (en) 2008-02-20 2012-09-18 Ricoh Company, Ltd. Image processing apparatus, authentication package installation method, and computer-readable recording medium

Also Published As

Publication number Publication date
MXPA06001211A (es) 2006-09-19
TW200630890A (en) 2006-09-01
RU2419841C2 (ru) 2011-05-27
BRPI0600196A (pt) 2006-10-24
KR20060095450A (ko) 2006-08-31
EP1696319A3 (en) 2008-01-02
AU2006200224B2 (en) 2011-03-31
EP1696319A2 (en) 2006-08-30
AU2006200224A1 (en) 2006-09-14
CA2532717A1 (en) 2006-08-28
US20060195411A1 (en) 2006-08-31
RU2006102528A (ru) 2007-08-10

Similar Documents

Publication Publication Date Title
JP2006244466A (ja) エンドユーザデータ起動
US7565663B2 (en) Automated data organization
KR101789962B1 (ko) 이동 디바이스에서 거동 분석 동작들을 수행함으로써 애플리케이션 상태들을 추론하기 위한 방법 및 시스템
US7185192B1 (en) Methods and apparatus for controlling access to a resource
US11755584B2 (en) Constructing distributions of interrelated event features
Chen et al. Understanding and discovering software configuration dependencies in cloud and datacenter systems
US20090064000A1 (en) SYSTEMS, METHODS AND COMPUTER PRODUCTS TO AUTOMATICALLY COMPLETE a GUI TASK
US10638301B2 (en) Classification of objects
US7996893B2 (en) Determining roles for automated tasks in a role-based access control environment
JP2004192650A (ja) コンピュータ制御方法及びその装置
US20210326744A1 (en) Security alert-incident grouping based on investigation history
Krishna et al. Design and deployment of expressive and correct web of things applications
Li et al. Towards a multi-label dataset of internet traffic for digital behavior classification
ZA200510087B (en) End user data activation
Liu et al. Correlating ui contexts with sensitive api calls: Dynamic semantic extraction and analysis
CN117591673B (zh) 日志分组方法、装置、设备及存储介质
Ma et al. Sharing vulnerability information using a taxonomically-correct, web-based cooperative database
US20170262391A1 (en) Discriminating dynamic connection of disconnectable peripherals
US20230367911A1 (en) Analyzing scripts to create and enforce security policies in dynamic development pipelines
CN105723357A (zh) 共享模块环境中的因模块而异的跟踪
CN113392001A (zh) 代码自动审查系统及方法
Glendowne Automating malware detection in Windows memory images using machine learning
Chen et al. Learning and Verifying Unwanted Behaviours

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120409

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120525

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120725

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20120921