JP2006107483A - デマンドイベントのためのオブジェクトクローン作成 - Google Patents

デマンドイベントのためのオブジェクトクローン作成 Download PDF

Info

Publication number
JP2006107483A
JP2006107483A JP2005268548A JP2005268548A JP2006107483A JP 2006107483 A JP2006107483 A JP 2006107483A JP 2005268548 A JP2005268548 A JP 2005268548A JP 2005268548 A JP2005268548 A JP 2005268548A JP 2006107483 A JP2006107483 A JP 2006107483A
Authority
JP
Japan
Prior art keywords
clone
property
computer
event
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005268548A
Other languages
English (en)
Inventor
Euan P Garden
ピー.ガーデン ユアン
J Kirk Haselden
ヘイセルデン ジェー.カーク
Mohammed F Shatnawi
エフ.シャトナウィ モハメッド
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 JP2006107483A publication Critical patent/JP2006107483A/ja
Pending 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】共有オブジェクトまたはプロパティコレクションのプロパティでクローンオブジェクトを設定することによって、デマンドイベントのためのオブジェクトをクローン作成し、クローンオブジェクトで開始されたデザインイベントのためのクローンオブジェクトを構成解除するシステムおよび方法を提供すること。
【解決手段】デザインイベント時に、クローンオブジェクトは共有オブジェクト220またはプロパティコレクション210を指し、または、それらに関連付けられる。クローンオブジェクトで実行されるデザインイベントは、ユーザの知識の有無にかかわらず、実際には共有オブジェクト220またはプロパティコレクション210で実行される。さらに、本発明の実施態様は、プロパティ式の変数を変更することによって、デマンドイベント時にクローンオブジェクトの動的な実行を可能にする。
【選択図】図2

Description

本発明は、一般的には、オブジェクトモデルソフトウェアアプリケーションに関し、具体的には、オブジェクト間の設定プロパティの共有に関する。
ソフトウェアアプリケーションは、アプリケーションの機能性を定義する多数のオブジェクトを含むことができる。アプリケーション内のあるオブジェクトは、アプリケーション内のその他のオブジェクトと同じプロパティを持たないこともあり得るという意味においては、その他のものと区別することができる。しかしながら、アプリケーション内の多くのその他のオブジェクトは、本質的に同一の可能性がある。これらの本質的に同一のオブジェクトは、基本的に、アプリケーション内の同じ機能性を共有することができる。そのようなオブジェクトは、同じアプリケーション内で多くの場所に配置され、基本的に同じ振る舞いの実行を呼び出し、または、同じ目的に役立つことができる。
オブジェクトは実質的に同一であるが、これらのオブジェクトのそれぞれのプロパティは、実行する前に個々に設定される。そのような設定は、ほとんど同一のコードが、異なる場所で繰り返されることを必要とする。そのオブジェクトのコーディングは、非常に冗長で複雑になる。一組の関連したオブジェクトを実装するコード、または、コードにより実装された根本的なアルゴリズムが変更されると、その変更を、関連したオブジェクトの様々な場所に適用すべきである。ほとんど同一の、または、実質的に同一のオブジェクトの編集は、大きな労力を要し、時間がかかる。その編集は間違いやすく、さらには、アプリケーション内の多くの場所でエラーする、現存しない、または、正常に機能しないアプリケーションをデバッグするという、大きな労力を要し、時間のかかる努力に終わることにもなる。
それ故に、大きな労力を要し、時間のかかるメンテナンスや、アプリケーション内の多くの類似した、または、ほとんど同一のオブジェクトのデバッグを軽減する必要性がある。
本発明は、ユーザが一つのオブジェクトのプロパティを設定することを可能にし、これらのプロパティが自動的にその他の類似したオブジェクト間で共有されることを可能にする。例えば、そのようなプロパティの共有またはクローン作成は、複数のオブジェクトを含むオブジェクトモデルアプリケーションで使用される。これらのオブジェクトのいくつかは同一でもあり、親オブジェクト内の異なる場所にも存在する。そのオブジェクトは、親オブジェクト内の異なる領域に存在するか、または、異なるワークフローの制約に従う。
デザインタイム(例えば、編集(editing))や、デマンドタイム(例えば、実行(execution))を持つオブジェクトモデルアプリケーションにおいて、そのアプリケーションは、プロパティで作成され、または、インスタンス化された共有オブジェクトを含む。この共有オブジェクトのクローンであるオブジェクトは、望ましくはデザインタイム時にプロパティで作成されていないが、共有オブジェクトを指す。共有オブジェクトのクローンは、その共有オブジェクトに関連付けられた見せかけのオブジェクトである。デマンドタイム時に、クローン作成されたオブジェクトは、共有オブジェクトのプロパティを用いて作成され、または、インスタンス化される。したがって、デマンドタイム時に、クローン作成されたオブジェクトは、物理的に作成され、それ自身で機能することができる。デマンドイベントが完了するとき、クローン作成されたオブジェクトを、構成解除することができ、または、インスタンス化しないこともできる。したがって、デザインタイムの状態に戻すことができ、それらは共有オブジェクトを指す見せかけのオブジェクトである。
本発明は、アプリケーションのためにオブジェクトを開発し、保守する時間を節約する。何故なら、ただ一つの共有オブジェクトがプロパティで作成されるからである。共有オブジェクトのクローンであるその他のオブジェクトは、単に共有オブジェクトを指すに過ぎない。これは、アプリケーションの開発だけではなく、アプリケーションの保守においても、時間と労力を節約する。もし、そのオブジェクトが変更や編集を必要とする場合、共有オブジェクトだけに注意を必要とし、アプリケーションのコーディングにおいて、時間のかかる編集だけでなく、間違いも減らす。クローン作成されたオブジェクトは、実行時にのみ作られるので編集を必要とせず、したがって、自動的に共有オブジェクトのプロパティで作成される。さらに、もしそのオブジェクトが大きく、または、複雑になっても、デザインタイム時に一つのオブジェクトだけが作成され、または、インスタンス化されることは、メモリを節約しやすくすることができる。
(概要)
本発明の一実施形態は、ユーザに、クローンオブジェクト(cloned objects)と呼ばれる一つまたはそれ以上のオブジェクトを作成することを可能にする。クローンオブジェクトは、共有オブジェクトと呼ばれる別のオブジェクトと同じプロパティ(言い換えると、属性(attributes)または設定(settings))を共有する。デザインタイム時に、共有オブジェクトのみが物理的に作成される。このように、共有オブジェクトは、その他のコピーが作成されるマスターコピーと同種のものである。クローンオブジェクトは、実質的に、共有オブジェクトを指す、または、それに関連付けられる中身のないシェルである。クローンオブジェクトは異なる領域に存在し、異なるワークフローの制約に従う。クローンオブジェクトまたは共有オブジェクトのいずれかが編集されると、これは、共有オブジェクトのコーディングを物理的に更新することと同じ効果がある。デマンドタイム時に、この編集は、そのオブジェクトが使用されるときに全てのクローンオブジェクトに反映される。デマンドタイム時に、クローンオブジェクトは物理的に作成され、適切に実行される。デマンドイベントの終わりに、クローンオブジェクトは構成解除され、共有オブジェクトを指すポインタを持つシェルとして、デザインタイムの状態に戻ることができる。すなわち、クローンオブジェクトのプロパティは持続せず、共有オブジェクトのプロパティのみが持続する。
(コンピュータ環境の例)
図1および以下の説明は、本発明の実施形態の例が実装される適当なコンピュータ環境の簡潔で一般的な説明を提供することを意図する。理解されるであろうが、ハンドヘルド、携帯用、および、いろいろなその他のコンピュータ装置が、本発明に関連した使用を意図している。汎用コンピュータが以下に記載されているが、これは一つの例に過ぎない。本発明はまた、ネットワークサーバの相互接続および相互作用を有するシン・クライアント上でも実施可能である。このように、本発明の実施形態の例は、とても小さいかまたは最小のクライアントリソースが関与するネットワークホストサービスの環境において実装される。その環境は、例えば、クライアント装置が単にブラウザまたはワールドワイドウェブへのインターフェースとなるに過ぎないネットワーク化された環境である。
必要ではないが、本発明は、開発者や試験者によって使用されるアプリケーションプログラミングインターフェース(API)によって実装することができ、および/または、コンピュータ実行可能命令の一般的文脈で説明されるネットワークブラウザ内に含むことができる。そのコンピュータ実行可能命令はプログラムモジュールなどであり、一つまたはそれ以上のコンピュータ(例えば、クライアントワークステーション、サーバ、または、その他の装置)によって実行される。一般的にプログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、および、特定のオブジェクトを実行し、または、特定の抽象データ型を実装するようなものを含む。典型的に、プログラムモジュールの機能性は、様々な実施形態において求められるように、組み合わせられ、または、割り当てられるものである。さらに当業者には、本発明はその他のコンピュータシステム構成で実施できることも理解されよう。本発明で使用するために適当な、その他のよく知られたコンピュータシステム、環境、および/または、構成は、それだけに限られないが、パーソナルコンピュータ(PCs)、現金自動預入支払機、サーバーコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサシステム、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む。本発明の実施形態は、分散コンピューティング環境において実施することもできる。その環境では、オブジェクトは、通信ネットワークまたはその他のデータ伝送媒体を通してつながっている遠隔処理装置によって実行される。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカル、および、リモート両方のコンピュータ記憶媒体に配置される。
図1は、このように、本発明を実施できる適当なコンピューティング環境100の例を示す。上記で明らかにしているが、コンピューティング環境100は適当なコンピューティング環境の例の一つに過ぎず、本発明の使用または機能性の範囲のいかなる制限を示唆することも意図していない。コンピューティング環境100は、典型的な動作環境100において示された一つまたは複数のコンポーネントの組み合わせに関するいかなる依存関係も要件も持つものとして解釈すべきではない。
図1に示すように、本発明を実施する例示的なシステムは、コンピュータ110の形の汎用コンピュータ装置を含む。コンピュータ110のコンポーネントは、それだけに限らないが、処理装置120、システムメモリ130、および、システムメモリを含む様々なシステムコンポーネントを処理装置120へ連結するシステムバス121を含む。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、ペリフェラルバス、および、ローカルバスを含むいくつかのタイプのバス構造のどれでもよい。限定ではなく例として、そうしたアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、および周辺装置相互接続(PCI)バス(メザニンバスともいう)が含まれる。
コンピュータ110は、通常、いろいろなコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ110からアクセスできる任意の利用可能媒体とすることができ、揮発性および不揮発性の両方、取り外し可能および取り外し不能の両方の媒体を含む。例をあげると、それだけに限らないが、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および不揮発性の両方、取り外し可能および取り外し不能の両方の媒体を含む。コンピュータ記憶媒体は、それだけに限らないが、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去・プログラム可能読取り専用メモリ(EEPROM)、フラッシュメモリ、またはその他のメモリ技術、コンパクトディスク読取り専用メモリ(CDROM)、デジタル多用途ディスク(DVD)、またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶装置、あるいは所望の情報の記憶のために使用することができ、コンピュータ110からアクセスすることができる任意の他の媒体を含む。通信媒体は、通常、搬送波その他の搬送機構などの被変調データ信号としてコンピュータ読取り可能命令、データ構造、プログラムモジュール、またはその他のデータを実施し、任意の情報送達媒体を含む。「被変調データ信号」という用語は、その特性セットの1つまたは複数を有する信号、またはその信号中に情報を符号化するように変更された信号を意味する。例をあげると、それだけに限らないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体、および音響、無線周波数(RF)、赤外線その他の無線媒体などの無線媒体を含む。上記のいずれかの組合せも、コンピュータ読み取り可能媒体の範囲内に含むべきである。
システムメモリ130は、読取り専用メモリ(ROM)131、および、ランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、起動時などに、コンピュータシステム110内の要素間での情報転送を支援する基本ルーチンを含み、通常は、読取り専用メモリ(ROM)131に記憶される。ランダムアクセスメモリ(RAM)132は、通常、処理装置120から直ちにアクセス可能であり、および/または現在それによって操作されているデータおよび/またはプログラムモジュールを含む。例をあげると、それだけに限らないが、図1は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、および、プログラムデータ137を示す。ランダムアクセスメモリ(RAM)132は、その他のデータおよび/またはプログラムモジュールを含む。
コンピュータ110は、その他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体も含む。例としてあげるにすぎないが、図1は、取り外し不能、不揮発性磁気媒体の読取りまたは書込みを行うハードディスクドライブ141、取り外し可能、不揮発性磁気ディスク152の読取りまたは書込みを行う磁気ディスクドライブ151、および、コンパクトディスク読取り専用メモリ(CDROM)またはその他の光媒体などの取り外し可能、不揮発性光ディスク156の読取りまたは書込みを行う光ディスクドライブ155を示す。この例示的動作環境で使用できるその他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体は、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、固体ROMなどを含む。ハードディスクドライブ141は、通常、インターフェース140などの取り外し不能メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの取り外し可能メモリインターフェースによってシステムバス121に接続される。
上記に説明し図1に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ110用のコンピュータ読み取り可能命令、データ構造、プログラムモジュール、および、その他のデータの記憶領域を提供する。図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じでも、異なっていてもよい。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には、それらが少なくとも異なるコピーであることを示すために、ここでは異なる番号が付されている。ユーザは、キーボード162、および、一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161などの入力装置を介して、コンピュータ110にコマンドおよび情報を入力することができる。その他の入力装置(図示せず)には、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる。上記その他の入力装置は、しばしば、システムバス121に結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などのその他のインターフェースおよびバス構造によって接続されてもよい。
モニタ191またはその他の種類の表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続することができる。モニタ191に加えて、コンピュータは、スピーカ197およびプリンタ196などのその他の周辺出力装置も含むことができ、それらは出力周辺インターフェース195を介して接続される。
コンピュータ110は、リモートコンピュータ180などの一つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、またはその他の一般のネットワークノードとすることがき、通常、コンピュータ110に関連して上述した多くのまたは全ての要素を含むが、図1では、メモリ記憶装置181だけが示されている。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、その他のネットワークを含むこともできる。そうしたネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
LANネットワーク環境で使用されるとき、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介して、LAN171へ接続される。WANネットワーク環境で使用されるとき、コンピュータ110は、通常、モデム172またはインターネットなどのWAN173を介して通信を確立するその他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160またはその他の適当な機構を介してシステムバス121へ接続することができる。ネットワーク化された環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部は、遠隔記憶装置に記憶することもできる。例をあげると、それだけに限らないが、図1は、リモートアプリケーションプログラム185を、メモリ装置181上にあるものとして示す。図示されたネットワーク接続は典型的なものであり、コンピュータ間の通信リンクを確立するその他の手段を使用することもできることが理解されるであろう。
当業者には、コンピュータ110またはその他のクライアント装置は、コンピュータネットワークの一部として分散することができることが理解されるであろう。この点において、本発明は、いくつものメモリまたは記憶装置、および、いくつもの記憶ユニットまたは記憶ボリュームの至る所で生じるいくつものアプリケーションおよび処理を有する、いかなるコンピュータシステムにもふさわしい。本発明の実施形態は、リモートまたはローカル記憶装置を持つ、ネットワーク環境に分散されたサーバーコンピュータおよびクライアントコンピュータのある環境に適用できる。本発明はまた、プログラミング言語機能、解釈、および、実行能力を持つ独立したコンピュータ装置に適用することもできる。
(デマンドイベントのためのオブジェクトクローン作成)
図2は、デザインタイムイベント時に示される、デマンドイベントのためのオブジェクトクローン作成についてのシステム200の実施形態の例のブロック図を示す。システム200は、図1に関して示したコンピュータ110のような一つまたはそれ以上のコンピュータ上に存在する。システム200は、プロパティコレクション210、プロパティコレクション210と連携している共有オブジェクト220、および、共有オブジェクト220を指す(例えば、それについて知っている、および、関連付けられる)クローンオブジェクトシェル230、240、250を含む。
システム200は、ワークフローオブジェクトモデルに基づくことができる。オブジェクトモデルは、複数のオブジェクトおよび複数の関係の集合として定義される。各オブジェクトは、オブジェクトの実行動作を規定する一つまたは複数のプロパティと関連付けられている。オブジェクトモデルは、一般的に、デザインタイムおよびデマンドタイムという二つの状態からなる。
システム200は、デザインタイム時に示されるアプリケーションである。デザインタイムは、デザインイベントが生じている期間を含む。デザインイベントは、デマンドイベントではない任意のイベントである。デザインイベントは、システム200のアルゴリズムの編集、または、コーディングを含む。デザインイベントはまた、システム200のアルゴリズムまたはコードの持続(persisting)、または、ローディングも含む。デマンドタイムは、デマンドイベントが生じている期間を含む。デマンドイベントは、オブジェクトが作成されるために使用されるときの任意のイベントである。例えば、デマンドイベントはアプリケーションのオブジェクトの実行を含む。デマンドイベントはまた、アプリケーション、または、アプリケーション内のオブジェクトの検証(validation)も含む。検証はコンパイル(compiling)に似ていて、アプリケーションを実行することなしに、アプリケーション、または、アプリケーションの一部が設計されたように正しく動作することを確認することとして定義される。
オブジェクトは、機能を実行する、あるいは、目的を果たすその他のオブジェクトを含む。各オブジェクトは、より大きなオブジェクト内で実行される作業項目を定義する。オブジェクトは、例えば、ファイルをコピーすること、ファイルをダウンロードすること、電子メールを送信すること、データを削除すること、クエリーを実行することなどにより、アプリケーションの作業を遂行する。共有オブジェクト220は、そのようなオブジェクトである。共有オブジェクト220は、デザインタイム時に(および、以下に記載されたデマンドタイム時にも)、プロパティコレクション210のプロパティまたは属性で作成され、または、インスタンス化される。
プロパティコレクション210は、例えば、システム200のサーバ(図示せず)上に存在する。プロパティコレクション210は、共有オブジェクト220などのオブジェクトをインスタンス化するために使用される、どんなタイプのプロパティまたは属性も包含する。例えば、共有オブジェクト220が電子メールメッセージを送信するステップを含む場合、共有オブジェクト220は作成されまたはインスタンス化されるときに、受取人名、宛て先アドレス、件名、および、メッセージテキストなどのプロパティを含む。これらのプロパティは、プロパティコレクション210から作成され、または、インスタンス化される。共有オブジェクト220は、一つ以上のプロパティコレクションのプロパティで作成され、または、インスタンス化されることが、当業者には理解されるであろう。
クローンオブジェクトシェル230、240、250は、デザインタイム時には作成されない、または、インスタンス化されないという意味で、オブジェクトの「シェル」である。その代わりに、クローンオブジェクトシェル230,240、250は、共有オブジェクト220を指す。矢印231、241、251は、この「指示」を表す。クローンオブジェクトシェル230、240、250は、デマンドタイム時に共有オブジェクトのプロパティで作成され、または、インスタンス化されることを矢印は示している。つまり、デマンドタイム時に、クローンオブジェクトシェル230、240、250は物理的に作成される。デマンドタイム時に、クローンオブジェクトシェル230,240、250は、独立して機能する能力のある独立した実行可能オブジェクトになる。
クローンオブジェクトシェル230、240、250はそれぞれ、一つまたはそれ以上のプロパティシェル234、244、254を含む。プロパティシェル234、244、254は、クローンオブジェクトシェル230、240、250のプロパティがデザインタイム時に作成されない、または、インスタンス化されないということを示す。例えば、クローンオブジェクトシェル230、240、250はそれぞれ、作成され、または、インスタンス化されるときに、電子メールメッセージを送信する。しかしながら、これらの電子メールクローンオブジェクトシェルは、デザインタイム時に、電子メールを送信するいかなるプロパティも含まない。一つまたはそれ以上の電子メールオブジェクトシェル230、240、250のそれぞれが実行されるとき、クローンオブジェクトシェルのプロパティに、共有オブジェクト220のプロパティを提供することができる。共有オブジェクト220は、クローンオブジェクトシェル230、240、250の実行のために必要な全てのプロパティを提供する。(実行時には、)クローンオブジェクトシェルは、もはやシェルではなく、実行可能オブジェクトである。
例えば、デザインタイム時に、共有オブジェクト220のコーディングは編集され、または、持続される。ユーザは、システム200のオブジェクト220、230、240、250を修正することを望む。ユーザは、共有オブジェクト220だけを編集することによって、全てのオブジェクト220、230、240、250を修正し、または、編集することができる。共有オブジェクト220になされるいかなる変更も、デマンドイベント時に、クローンオブジェクトシェル230、240、250で明らかにされる。
さらに、ユーザは、ユーザインターフェースから共有オブジェクト220、および、クローンオブジェクトシェル230、240、250を見ることができる。ユーザは、ユーザインターフェースから共有オブジェクト220またはプロパティコレクション210を選択することによって、共有オブジェクト220またはプロパティコレクション210を編集することができる。ユーザはまた、任意のクローンオブジェクトシェル230、240、250を選択することによって、共有オブジェクト220、または、プロパティコレクション210を編集することができることも理解されよう。クローンオブジェクトシェル230、240、250の一つを選択することで、ユーザは実質的に、共有オブジェクト220、または、プロパティコレクション210を開く。ユーザはその後、共有オブジェクト220、または、プロパティコレクション210を編集することができる。ユーザは、共有オブジェクトを編集していることを知ることさえなく、その編集がクローンオブジェクトに適用されていると考える。例えば、これは、プログラムを実行できるようにし、ユーザへ文書を見せることができるようにする、コンピュータのデスクトップ上の「ショートカット」アイコンを選ぶことと同じようなものと考えられる。ユーザはそのような文書を編集し、その文書はかかるショートカットを用いてアクセスされているにもかかわらず、その編集はその文書自体になされている。
図3は、デマンドタイム時のオブジェクトクローン作成のための、システム300の実施形態の例のブロック図を示す。システム300は、デザインタイムの代わりにデマンドタイムと記載されていることを除いて、図2に関連して示されたシステム200と同じシステムである。システム300は、図1に関連して示されたコンピュータ110などの一つまたはそれ以上のコンピュータ上に存在する。システム300は、プロパティコレクション310、プロパティコレクション310と連携している共有オブジェクト320、および、共有オブジェクト320と連携しているクローンオブジェクト330、340、350を含む。
システム300は、デマンドタイム時に表れるアプリケーションである。そのアプリケーションはオブジェクトモデルに基づいている。すでに上述したように、デマンドタイムは、オブジェクトを作成するためにオブジェクトが使用される期間を含む。かかるデマンドタイムは、オブジェクトの実行および検証を含む。
デマンドタイム時に、共有オブジェクト320をプロパティコレクション310を用いて作成し、または、インスタンス化することができる。プロパティコレクション310は、プロパティコレクション210に酷似している。プロパティコレクション310は、共有オブジェクト320のようなオブジェクトをインスタンス化し、または作成するために用いられるあらゆる種類のプロパティまたは属性も含む。例えば、共有オブジェクト320が、電子メールメッセージを送信するステップを含む場合、その後共有オブジェクトは、作成され、または、インスタンス化されるときに、受取人名、宛て先アドレス、件名、および、メッセージテキストなどのプロパティを含むことができる。
デマンドタイム時にも、一つまたはそれ以上のクローンオブジェクトシェル230、240、250は、共有オブジェクト320のプロパティを用いて作成され、または、インスタンス化され、クローンオブジェクト330、340、350になる。あるいは、デマンドタイム時に、一つまたはそれ以上のクローンオブジェクトシェル230、240、250は、プロパティコレクション310のプロパティを用いて作成され、または、インスタンス化され、クローンオブジェクト330、340、350になることができる。クローンオブジェクト330、340、350は、その後、共有オブジェクト320のプロパティ334、344、354を含む。このような作成、または、インスタンス化は、ユーザには見えないようにすることができる。例えば、各クローンオブジェクト330、340、350は、共有オブジェクト320のように、それぞれの指定のイベントが発生するときに電子メールメッセージを送信する。作成され、または、インスタンス化されたクローンオブジェクト330、340、350は、受取人名、あて先アドレス、件名、および、メッセージテキストなどのプロパティを含むことができる。一つまたはそれ以上のクローンオブジェクト330、340、350が実行されるとき、ユーザは、電子メールメッセージがクローンオブジェクト330、340、350のうちの一つによって、または、共有オブジェクト320によって送信されたのかは分からない可能性がある。
本発明の一実施形態において、共有オブジェクト320、および、作成され、または、インスタンス化されたクローンオブジェクト330、340、350は、同一のプロパティおよび同一の方法で実行される。電子メールの例を続けると、共有オブジェクト320、および、作成され、または、インスタンス化されたクローンオブジェクト330、340、350は、全て、同一の発信人名から同じ宛て先へ、同一の件名で同一のメッセージを送信することができる。
本発明の他の実施形態において、クローンオブジェクト330、340、350のインスタンス化は、二通りに使い分けられる。デザインタイムからのクローンオブジェクトシェル230、240、250は、クローンオブジェクト330、340、350になるために、デマンドタイム時に作成され、または、インスタンス化されることができる。しかしながら、クローンオブジェクト330、340、350は、その後お互いに、および、共有オブジェクト320とどこか異なっていることがユーザにとって重要である。つまり、ユーザは、同一の受取人名で同じあて先へ送信された、同一の件名の同一のメッセージを必要としない可能性がある。ユーザは、クローンオブジェクトの一つと異なるメッセージにおけるヘッダーを必要とするか、または、受取人X、もう一人の受取人Y、さらに、受取人Zへ届くメッセージの一つを必要とする可能性がある。そのようなクローンオブジェクトの変更は、デマンドタイム時に動的に設定されることができる。これは、プロパティ式(property expression)において、変数を変更することによって完了する。かかる変更は、任意のオブジェクトによって完了する。デザインタイム時の共有オブジェクト320の編集がクローンオブジェクト330、340、350に適用されることを可能にしながら、クローンオブジェクト330、340、350へなされる変更を可能にすることによって、二通りに使い分けられるインスタンス化は柔軟性を加える。
デマンドタイムが完了するとき、作成され、または、インスタンス化されたクローンオブジェクト330、340、350はデザインタイムの状態へ戻る。つまり、クローンオブジェクト330、340、350は、再び、図2に関して説明されたクローンオブジェクトシェル230、240、250になる。共有オブジェクト320は、既に述べたように、デザインタイム時に作成され、または、インスタンス化される。このように、ユーザが共有オブジェクト320を編集すると、共有オブジェクト320のプロパティによって作成され、または、インスタンス化される全てのクローンオブジェクト330、340、350に、デマンドイベントで、共有オブジェクト320へなされた変更が反映される。
図4は、クローンオブジェクト上でデザインタイムイベントを実行するための方法400のフロー図を示す。このようなデザインタイムイベントは、クローンオブジェクトを編集している。そのほかのデザインタイムイベントは、クローンオブジェクトを持続している。ステップ405で、クローンオブジェクトBなどのクローンオブジェクトは、デザインタイムイベントのために選ばれる。クローンオブジェクトBは、共有オブジェクトAのクローンである。つまり、クローンオブジェクトBは、共有オブジェクトAへの「指示」であるか、または、共有オブジェクトAへ関連付けられるものであるが、共有オブジェクトAのプロパティで作成され、または、インスタンス化されるものではない。クローンオブジェクトBは、ユーザインターフェースにおいてマウスでクローンオブジェクトBを「クリックすること」などの、任意の適当な方法によって選ばれる。選択によって、ステップ410において、ユーザは自動的に共有オブジェクトAへ向けられる。これは、ユーザが知ることなしに生じる。つまり、ユーザがクローンオブジェクトBをクリックすると、ユーザが想定する、アルゴリズムを実装するコーディングまたはその他の方法は、クローンオブジェクトBのコーディングである。実際は、ユーザは、共有オブジェクトAのアルゴリズムを実装するコーディング、または、いくつかのその他の方法を見ている。ステップ415において、デザインタイムイベントは、共有オブジェクトA上で実行される。この場合も、実際にはデザインタイムイベントが共有オブジェクトAに適用されているとき、ユーザは、そのイベントがクローンオブジェクトB上で実行されていると信じる。デザインタイムイベントが完了次第、ステップ420において、共有オブジェクトAは閉じられる。要するに、ユーザは、デザインタイムイベントがクローンオブジェクトBではなく、共有オブジェクトAに適用されていたことを知らない。しかし、クローンオブジェクトBがデマンドタイムにあるとき、クローンオブジェクトBは、共有オブジェクトAに適用されるデザインタイムイベントに従って動作する。このように、この方法は、様々な場所に配置された多くの類似したオブジェクトを含むアプリケーションの、大きな労力を要するメンテナンスを軽減することに役立つ。例えば、クローンオブジェクトBを編集することは、実際には、共有オブジェクトAを編集することとなる。共有オブジェクトAを編集することは、アプリケーションの至る所に配置されている、共有オブジェクトを指す(ひいてはそのクローンである)、多くの他のオブジェクトを編集することとなる。
図5は、デマンドタイムイベントをクローンオブジェクトへ適用する方法500を示す。クローンオブジェクトは、共有オブジェクトAのクローンまたはそのプロパティを共有するクローンオブジェクトBである。ステップ505において、クローンオブジェクトBのデマンドタイムイベントは開始する。クローンオブジェクトBは、ステップ510で、共有オブジェクトAのプロパティで作成され、または、インスタンス化される。あるいは上述のように、クローンオブジェクトBは、図3に関連して示したプロパティコレクション310などのプロパティコレクションのプロパティで作成され、または、インスタンス化される。ステップ515で、クローンオブジェクトBは、自身のデマンドタイムイベントを開始する。ステップ520で、デマンドタイムイベントは完了する。最後に、ステップ525で、クローンオブジェクトBは自身のデマンドタイムでない状態へ戻る。つまり、クローンオブジェクトBは、作成され、または、インスタンス化されるのではなく、共有オブジェクトAを指す状態に戻る。このように、共有オブジェクトAが編集されると、クローンオブジェクトBは自動的に、次のデマンドタイムイベントでそれらの編集を反映する。
ここに記載された様々な技術は、ハードウェア、または、ソフトウェア、または、適当な両方の組み合わせと連携して実装される。従って、本発明の方法および装置、または、特定の態様、またはその一部は、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、または、任意のその他のマシン読み取り可能記憶媒体のような、有形媒体に具現化されたプログラムコード(例えば、命令)の形をとる。プログラムコードがコンピュータなどのマシンへロードされ、実行されるとき、マシンは本発明を実施する装置になる。プログラムで制御できるコンピュータ上でプログラムコードが実行される場合、コンピュータ装置は、一般的に、処理装置、処理装置(揮発性および不揮発性メモリ、および/または、記憶素子を含む)によって読取り可能な記憶媒体、少なくとも一つの入力装置、および、少なくとも一つの出力装置を含む。本発明の問題領域のプログラミングモデルの態様の創作および/または実装を、例えばデータ処理アプリケーションプログラミングインターフェースまたは同種ものを使うことによって活用する一つまたはそれ以上のプログラムは、好ましくは、ハイレベルな手続型、または、オブジェクト指向プログラミング言語で、コンピュータシステムとやりとりをするために実装される。しかしながらプログラムは、望むのであれば、アセンブリまたは機械語で実装することができる。どんな場合でも、言語はコンパイラ型、または、インタプリタ型言語であり、ハードウェアの実装と組み合わさっている。
本発明を様々な図の好ましい実施形態に関連して説明してきたが、本発明から逸脱することなく本発明の同じ機能を実行するために、その他の実施形態が使用され、または、修正および追加を説明した実施形態へなすこともできることが理解されよう。例えば、本発明の実施形態は、編集または持続のような特定のデザインタイムイベントに関して説明されている。いかなるデザインタイムイベントも、同様に、本発明の実施形態の例を形成することができる。同じように、デマンドタイムイベントも、実行および検証として説明されているが、いかなる他のデマンドタイムイベントも本発明の範囲に該当する。本発明の実施形態のその他の例は、複数のクローンオブジェクトおよび複数の共有オブジェクトをいくつでも含むことができると認められるべきである。本発明は決して、ここに提供され、および、説明された例に限られるものではない。従って、本発明は、任意の一つの実施形態に限られるべきではなく、添付の特許請求の範囲に従って、広さと範囲を解釈されるべきである。
本発明の態様を実装できるコンピュータ環境の例を示すブロック図である。 デザインイベント時に示される、オブジェクトクローン作成システムの実施態様の例を示すブロック図である。 デマンドイベント時に示される、オブジェクトクローン作成システムの実施態様の例を示すブロック図である。 デマンドイベントのオブジェクトクローン作成システムにおいて、デザインイベントを実行する方法のフロー図である。 デマンドイベントのオブジェクトクローン作成システムにおいて、デマンドイベントを実行する方法のフロー図である。

Claims (18)

  1. デマンドイベントのオブジェクトクローンを作成する方法であって、
    共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指すオブジェクトシェル上で、デマンドイベントを開始すること、
    前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つのプロパティを用いて前記オブジェクトシェルを設定することによって、クローンオブジェクトを作成すること、および、
    デマンドイベントを前記クローンオブジェクトに適用すること
    を含むことを特徴とする方法。
  2. 前記デマンドイベントの完了時に、前記クローンオブジェクトをクローンオブジェクトシェルへ戻すこと
    をさらに備えることを特徴とする請求項1に記載の方法。
  3. プロパティのプロパティ式の変数を変更すること
    をさらに備えることを特徴とする請求項1に記載の方法。
  4. クローンオブジェクトでデザインイベントを実行する方法であって、
    共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指すクローンオブジェクトシェルを作成すること、
    前記クローンオブジェクトシェルの選択を受け取ること、
    前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つを示すこと、
    デザインイベントを受け取ること、および、
    前記デザインイベントを前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つに適用すること
    を含むことを特徴とする方法。
  5. オブジェクト指向アプリケーションにおいてオブジェクトをクローン作成するシステムであって、
    共有オブジェクトに関連付けられた一つまたはそれ以上のプロパティを有する共有オブジェクトと、
    クローンオブジェクトでのデマンドイベントの開始時に前記プロパティで作成され、前記クローンオブジェクトで開始されたデザインイベント時に前記プロパティを指す、前記共有オブジェクトに関連付けられた前記クローンオブジェクトと
    を含むことを特徴とするシステム。
  6. 前記プロパティを含むプロパティコレクションであって、前記デマンドイベントの開始時に、前記クローンオブジェクトが前記プロパティコレクションの前記プロパティで作成される前記プロパティコレクションをさらに含むことを特徴とする請求項5に記載のシステム。
  7. 前記クローンオブジェクト上で開始される前記デザインイベントは、前記プロパティコレクションに適用されることを特徴とする請求項6に記載のシステム。
  8. 前記共有オブジェクトにおけるデザインイベントおよびデマンドイベントのうちの少なくとも一つの開始時に、前記共有オブジェクトが前記プロパティコレクションの前記プロパティで作成されることを特徴とする請求項6に記載のシステム。
  9. 前記クローンオブジェクト上で開始された前記デザインイベントは、前記共有オブジェクトに適用されることを特徴とする請求項5に記載のシステム。
  10. 前記デザインイベントは、編集および持続のうちの少なくとも一つを含むことを特徴とする請求項5に記載のシステム。
  11. 前記デマンドイベントは、実行および検証のうちの少なくとも一つを含むことを特徴とする請求項5に記載のシステム。
  12. 前記クローンオブジェクトにおけるデマンドイベントの完了時に、前記クローンオブジェクトが構成解除されることを特徴とする請求項5に記載のシステム。
  13. 前記クローンオブジェクトにおける前記デマンドイベントの開始時に、プロパティ式の変数が変更されることを特徴とする請求項5に記載のシステム。
  14. コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、
    共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指すオブジェクトシェル上でデマンドイベントを開始するステップと、
    前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つのプロパティで前記オブジェクトシェルを設定することによって、クローンオブジェクトを作成するステップと
    を実行することを特徴とするコンピュータ読み取り可能記憶媒体。
  15. コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、デマンドイベントを前記クローンオブジェクトへ適用するステップをさらに実行することを特徴とする請求項14に記載のコンピュータ読み取り可能記憶媒体。
  16. コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、前記デマンドイベントの完了時に前記クローンオブジェクトをクローンオブジェクトシェルへ戻すステップをさらに実行することを特徴とする請求項15に記載のコンピュータ読み取り可能記憶媒体。
  17. コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、プロパティのプロパティ式において変数を変更するステップをさらに実行することを特徴とする請求項14に記載のコンピュータ読み取り可能記憶媒体。
  18. コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、
    共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指す前記クローンオブジェクトシェルの選択を受け取るステップと、
    前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つを示すステップと、
    デザインイベントを受け取るステップと、
    前記デザインイベントを前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つに適用するステップと
    をさらに実行することを特徴とするコンピュータ読み取り可能記憶媒体。
JP2005268548A 2004-10-05 2005-09-15 デマンドイベントのためのオブジェクトクローン作成 Pending JP2006107483A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/958,849 US20060090164A1 (en) 2004-10-05 2004-10-05 Object cloning for demand events

Publications (1)

Publication Number Publication Date
JP2006107483A true JP2006107483A (ja) 2006-04-20

Family

ID=36129854

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005268548A Pending JP2006107483A (ja) 2004-10-05 2005-09-15 デマンドイベントのためのオブジェクトクローン作成

Country Status (5)

Country Link
US (1) US20060090164A1 (ja)
EP (1) EP1669859A3 (ja)
JP (1) JP2006107483A (ja)
KR (1) KR20060050489A (ja)
CN (1) CN100470466C (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7146532B2 (en) * 2001-02-05 2006-12-05 Affiniti, Inc. Persistent session and data in transparently distributed objects
US7107081B1 (en) 2001-10-18 2006-09-12 Iwao Fujisaki Communication device
US8090402B1 (en) 2003-09-26 2012-01-03 Iwao Fujisaki Communication device
US7917167B1 (en) 2003-11-22 2011-03-29 Iwao Fujisaki Communication device
BRPI0417849B1 (pt) * 2003-12-22 2015-11-17 Donaldson Co Inc elemento de filtro , método para formar o mesmo e filtro de ar compreendendo tal elemento.
JP4144885B2 (ja) * 2004-12-28 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーション・オブジェクトの再利用方法
US8340726B1 (en) 2008-06-30 2012-12-25 Iwao Fujisaki Communication device
US20100057787A1 (en) * 2008-08-28 2010-03-04 International Business Machines Corporation Method, system, and computer program product for cloning of distributed and stateful systems
US9760380B2 (en) 2012-03-14 2017-09-12 Microsoft Technology Licensing, Llc Using grammar to serialize and de-serialize objects
KR101960305B1 (ko) * 2012-07-04 2019-03-20 엘지전자 주식회사 터치 스크린을 포함하는 디스플레이 장치 및 그 제어 방법
KR102058990B1 (ko) 2012-09-19 2019-12-24 엘지전자 주식회사 모바일 디바이스 및 그 제어 방법
US9842152B2 (en) * 2014-02-19 2017-12-12 Snowflake Computing, Inc. Transparent discovery of semi-structured data schema
CN103929497B (zh) * 2014-04-30 2017-09-15 天脉聚源(北京)传媒科技有限公司 一种实时推送消息的方法及服务器
CN107908727B (zh) * 2017-11-14 2021-06-29 郑州云海信息技术有限公司 存储对象克隆方法、装置、设备及计算机可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US6401101B1 (en) * 1998-06-01 2002-06-04 Trident Systems, Inc. Method, server/computer and data structure for implementation of complex objects in an object-oriented database
US8640090B2 (en) * 2003-11-10 2014-01-28 Sap Ag Active and modifiable data dictionary
WO2006063118A2 (en) * 2004-12-07 2006-06-15 Pure Networks, Inc. Network management

Also Published As

Publication number Publication date
EP1669859A2 (en) 2006-06-14
CN100470466C (zh) 2009-03-18
CN1758219A (zh) 2006-04-12
EP1669859A3 (en) 2008-12-31
US20060090164A1 (en) 2006-04-27
KR20060050489A (ko) 2006-05-19

Similar Documents

Publication Publication Date Title
JP2006107483A (ja) デマンドイベントのためのオブジェクトクローン作成
RU2398266C2 (ru) Использование механизма привязки данных для выполнения привязки команд
JP4800413B2 (ja) 情報処理システム
US7870536B2 (en) Computer implemented method and system for sharing resources among hierarchical containers of resources
US8701083B2 (en) Systems and methods for varying software build properties using primary and supplemental build files
US8396846B2 (en) Database trigger modification system and method
US20040268187A1 (en) Undo infrastructure
US8510712B1 (en) Testing in-container software objects
US20080301626A1 (en) Template-based software development
US20070239985A1 (en) Secure extensions
US20060259386A1 (en) Building digital assets for use with software applications
AU2004200462A1 (en) A method for managing multiple file states for replicated files
KR20060101221A (ko) 풍부한 데이터 바인딩된 애플리케이션
JP2006195968A (ja) ツリービューベースエディタでのインラインプロパティ編集のシステムおよび方法
JP5174661B2 (ja) Crm機能の拡張にメッセージを使用する方法
WO2022142601A1 (zh) 应用程序的构建方法、装置及计算机设备
US20110307866A1 (en) Multi-environment configuration of data integration projects
JP2021128760A (ja) Opc uaサーバ、opc uaを用いたシステム処理、及びopc uaシステムを実行する方法
JP5938031B2 (ja) プラットフォーム非依存プレゼンテーションの構成
WO2021021321A1 (en) Parallel cloned workflow execution
US20080109784A1 (en) Non-destructive automated xml file builders
US8924963B2 (en) In-process intermediary to create virtual processes
JP2009501385A (ja) ノード間通信パイプライン
US20120089988A1 (en) Hosting non-messaging workflows in a messaging host
US20080016492A1 (en) Modeled types-attributes, aliases and context-awareness

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110819

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120127