(57)【要約】      （修正有）【課題】共有オブジェクトまたはプロパティコレクションのプロパティでクローンオブジェクトを設定することによって、デマンドイベントのためのオブジェクトをクローン作成し、クローンオブジェクトで開始されたデザインイベントのためのクローンオブジェクトを構成解除するシステムおよび方法を提供すること。【解決手段】デザインイベント時に、クローンオブジェクトは共有オブジェクト２２０またはプロパティコレクション２１０を指し、または、それらに関連付けられる。クローンオブジェクトで実行されるデザインイベントは、ユーザの知識の有無にかかわらず、実際には共有オブジェクト２２０またはプロパティコレクション２１０で実行される。さらに、本発明の実施態様は、プロパティ式の変数を変更することによって、デマンドイベント時にクローンオブジェクトの動的な実行を可能にする。【選択図】図２
2006107483.tif 000002
【特許請求の範囲】
【請求項１】
デマンドイベントのオブジェクトクローンを作成する方法であって、
共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指すオブジェクトシェル上で、デマンドイベントを開始すること、
前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つのプロパティを用いて前記オブジェクトシェルを設定することによって、クローンオブジェクトを作成すること、および、
デマンドイベントを前記クローンオブジェクトに適用すること
を含むことを特徴とする方法。
【請求項２】
前記デマンドイベントの完了時に、前記クローンオブジェクトをクローンオブジェクトシェルへ戻すこと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
プロパティのプロパティ式の変数を変更すること
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
クローンオブジェクトでデザインイベントを実行する方法であって、
共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指すクローンオブジェクトシェルを作成すること、
前記クローンオブジェクトシェルの選択を受け取ること、
前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つを示すこと、
デザインイベントを受け取ること、および、
前記デザインイベントを前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つに適用すること
を含むことを特徴とする方法。
【請求項５】
オブジェクト指向アプリケーションにおいてオブジェクトをクローン作成するシステムであって、
共有オブジェクトに関連付けられた一つまたはそれ以上のプロパティを有する共有オブジェクトと、
クローンオブジェクトでのデマンドイベントの開始時に前記プロパティで作成され、前記クローンオブジェクトで開始されたデザインイベント時に前記プロパティを指す、前記共有オブジェクトに関連付けられた前記クローンオブジェクトと
を含むことを特徴とするシステム。
【請求項６】
前記プロパティを含むプロパティコレクションであって、前記デマンドイベントの開始時に、前記クローンオブジェクトが前記プロパティコレクションの前記プロパティで作成される前記プロパティコレクションをさらに含むことを特徴とする請求項５に記載のシステム。
【請求項７】
前記クローンオブジェクト上で開始される前記デザインイベントは、前記プロパティコレクションに適用されることを特徴とする請求項６に記載のシステム。
【請求項８】
前記共有オブジェクトにおけるデザインイベントおよびデマンドイベントのうちの少なくとも一つの開始時に、前記共有オブジェクトが前記プロパティコレクションの前記プロパティで作成されることを特徴とする請求項６に記載のシステム。
【請求項９】
前記クローンオブジェクト上で開始された前記デザインイベントは、前記共有オブジェクトに適用されることを特徴とする請求項５に記載のシステム。
【請求項１０】
前記デザインイベントは、編集および持続のうちの少なくとも一つを含むことを特徴とする請求項５に記載のシステム。
【請求項１１】
前記デマンドイベントは、実行および検証のうちの少なくとも一つを含むことを特徴とする請求項５に記載のシステム。
【請求項１２】
前記クローンオブジェクトにおけるデマンドイベントの完了時に、前記クローンオブジェクトが構成解除されることを特徴とする請求項５に記載のシステム。
【請求項１３】
前記クローンオブジェクトにおける前記デマンドイベントの開始時に、プロパティ式の変数が変更されることを特徴とする請求項５に記載のシステム。
【請求項１４】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、
共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指すオブジェクトシェル上でデマンドイベントを開始するステップと、
前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つのプロパティで前記オブジェクトシェルを設定することによって、クローンオブジェクトを作成するステップと
を実行することを特徴とするコンピュータ読み取り可能記憶媒体。
【請求項１５】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、デマンドイベントを前記クローンオブジェクトへ適用するステップをさらに実行することを特徴とする請求項１４に記載のコンピュータ読み取り可能記憶媒体。
【請求項１６】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、前記デマンドイベントの完了時に前記クローンオブジェクトをクローンオブジェクトシェルへ戻すステップをさらに実行することを特徴とする請求項１５に記載のコンピュータ読み取り可能記憶媒体。
【請求項１７】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、プロパティのプロパティ式において変数を変更するステップをさらに実行することを特徴とする請求項１４に記載のコンピュータ読み取り可能記憶媒体。
【請求項１８】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、前記コンピュータ実行可能命令は、
共有オブジェクトおよびプロパティコレクションのうちの少なくとも一つを指す前記クローンオブジェクトシェルの選択を受け取るステップと、
前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つを示すステップと、
デザインイベントを受け取るステップと、
前記デザインイベントを前記共有オブジェクトおよび前記プロパティコレクションのうちの少なくとも一つに適用するステップと
をさらに実行することを特徴とするコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、オブジェクトモデルソフトウェアアプリケーションに関し、具体的には、オブジェクト間の設定プロパティの共有に関する。
【背景技術】
【０００２】
ソフトウェアアプリケーションは、アプリケーションの機能性を定義する多数のオブジェクトを含むことができる。アプリケーション内のあるオブジェクトは、アプリケーション内のその他のオブジェクトと同じプロパティを持たないこともあり得るという意味においては、その他のものと区別することができる。しかしながら、アプリケーション内の多くのその他のオブジェクトは、本質的に同一の可能性がある。これらの本質的に同一のオブジェクトは、基本的に、アプリケーション内の同じ機能性を共有することができる。そのようなオブジェクトは、同じアプリケーション内で多くの場所に配置され、基本的に同じ振る舞いの実行を呼び出し、または、同じ目的に役立つことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
オブジェクトは実質的に同一であるが、これらのオブジェクトのそれぞれのプロパティは、実行する前に個々に設定される。そのような設定は、ほとんど同一のコードが、異なる場所で繰り返されることを必要とする。そのオブジェクトのコーディングは、非常に冗長で複雑になる。一組の関連したオブジェクトを実装するコード、または、コードにより実装された根本的なアルゴリズムが変更されると、その変更を、関連したオブジェクトの様々な場所に適用すべきである。ほとんど同一の、または、実質的に同一のオブジェクトの編集は、大きな労力を要し、時間がかかる。その編集は間違いやすく、さらには、アプリケーション内の多くの場所でエラーする、現存しない、または、正常に機能しないアプリケーションをデバッグするという、大きな労力を要し、時間のかかる努力に終わることにもなる。
【０００４】
それ故に、大きな労力を要し、時間のかかるメンテナンスや、アプリケーション内の多くの類似した、または、ほとんど同一のオブジェクトのデバッグを軽減する必要性がある。
【課題を解決するための手段】
【０００５】
本発明は、ユーザが一つのオブジェクトのプロパティを設定することを可能にし、これらのプロパティが自動的にその他の類似したオブジェクト間で共有されることを可能にする。例えば、そのようなプロパティの共有またはクローン作成は、複数のオブジェクトを含むオブジェクトモデルアプリケーションで使用される。これらのオブジェクトのいくつかは同一でもあり、親オブジェクト内の異なる場所にも存在する。そのオブジェクトは、親オブジェクト内の異なる領域に存在するか、または、異なるワークフローの制約に従う。
【０００６】
デザインタイム（例えば、編集（editing））や、デマンドタイム（例えば、実行（execution））を持つオブジェクトモデルアプリケーションにおいて、そのアプリケーションは、プロパティで作成され、または、インスタンス化された共有オブジェクトを含む。この共有オブジェクトのクローンであるオブジェクトは、望ましくはデザインタイム時にプロパティで作成されていないが、共有オブジェクトを指す。共有オブジェクトのクローンは、その共有オブジェクトに関連付けられた見せかけのオブジェクトである。デマンドタイム時に、クローン作成されたオブジェクトは、共有オブジェクトのプロパティを用いて作成され、または、インスタンス化される。したがって、デマンドタイム時に、クローン作成されたオブジェクトは、物理的に作成され、それ自身で機能することができる。デマンドイベントが完了するとき、クローン作成されたオブジェクトを、構成解除することができ、または、インスタンス化しないこともできる。したがって、デザインタイムの状態に戻すことができ、それらは共有オブジェクトを指す見せかけのオブジェクトである。
【０００７】
本発明は、アプリケーションのためにオブジェクトを開発し、保守する時間を節約する。何故なら、ただ一つの共有オブジェクトがプロパティで作成されるからである。共有オブジェクトのクローンであるその他のオブジェクトは、単に共有オブジェクトを指すに過ぎない。これは、アプリケーションの開発だけではなく、アプリケーションの保守においても、時間と労力を節約する。もし、そのオブジェクトが変更や編集を必要とする場合、共有オブジェクトだけに注意を必要とし、アプリケーションのコーディングにおいて、時間のかかる編集だけでなく、間違いも減らす。クローン作成されたオブジェクトは、実行時にのみ作られるので編集を必要とせず、したがって、自動的に共有オブジェクトのプロパティで作成される。さらに、もしそのオブジェクトが大きく、または、複雑になっても、デザインタイム時に一つのオブジェクトだけが作成され、または、インスタンス化されることは、メモリを節約しやすくすることができる。
【発明を実施するための最良の形態】
【０００８】
（概要）
本発明の一実施形態は、ユーザに、クローンオブジェクト（cloned objects）と呼ばれる一つまたはそれ以上のオブジェクトを作成することを可能にする。クローンオブジェクトは、共有オブジェクトと呼ばれる別のオブジェクトと同じプロパティ（言い換えると、属性（attributes）または設定（settings））を共有する。デザインタイム時に、共有オブジェクトのみが物理的に作成される。このように、共有オブジェクトは、その他のコピーが作成されるマスターコピーと同種のものである。クローンオブジェクトは、実質的に、共有オブジェクトを指す、または、それに関連付けられる中身のないシェルである。クローンオブジェクトは異なる領域に存在し、異なるワークフローの制約に従う。クローンオブジェクトまたは共有オブジェクトのいずれかが編集されると、これは、共有オブジェクトのコーディングを物理的に更新することと同じ効果がある。デマンドタイム時に、この編集は、そのオブジェクトが使用されるときに全てのクローンオブジェクトに反映される。デマンドタイム時に、クローンオブジェクトは物理的に作成され、適切に実行される。デマンドイベントの終わりに、クローンオブジェクトは構成解除され、共有オブジェクトを指すポインタを持つシェルとして、デザインタイムの状態に戻ることができる。すなわち、クローンオブジェクトのプロパティは持続せず、共有オブジェクトのプロパティのみが持続する。
【０００９】
（コンピュータ環境の例）
図１および以下の説明は、本発明の実施形態の例が実装される適当なコンピュータ環境の簡潔で一般的な説明を提供することを意図する。理解されるであろうが、ハンドヘルド、携帯用、および、いろいろなその他のコンピュータ装置が、本発明に関連した使用を意図している。汎用コンピュータが以下に記載されているが、これは一つの例に過ぎない。本発明はまた、ネットワークサーバの相互接続および相互作用を有するシン・クライアント上でも実施可能である。このように、本発明の実施形態の例は、とても小さいかまたは最小のクライアントリソースが関与するネットワークホストサービスの環境において実装される。その環境は、例えば、クライアント装置が単にブラウザまたはワールドワイドウェブへのインターフェースとなるに過ぎないネットワーク化された環境である。
【００１０】
必要ではないが、本発明は、開発者や試験者によって使用されるアプリケーションプログラミングインターフェース（ＡＰＩ）によって実装することができ、および／または、コンピュータ実行可能命令の一般的文脈で説明されるネットワークブラウザ内に含むことができる。そのコンピュータ実行可能命令はプログラムモジュールなどであり、一つまたはそれ以上のコンピュータ（例えば、クライアントワークステーション、サーバ、または、その他の装置）によって実行される。一般的にプログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、および、特定のオブジェクトを実行し、または、特定の抽象データ型を実装するようなものを含む。典型的に、プログラムモジュールの機能性は、様々な実施形態において求められるように、組み合わせられ、または、割り当てられるものである。さらに当業者には、本発明はその他のコンピュータシステム構成で実施できることも理解されよう。本発明で使用するために適当な、その他のよく知られたコンピュータシステム、環境、および／または、構成は、それだけに限られないが、パーソナルコンピュータ（ＰＣｓ）、現金自動預入支払機、サーバーコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサシステム、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む。本発明の実施形態は、分散コンピューティング環境において実施することもできる。その環境では、オブジェクトは、通信ネットワークまたはその他のデータ伝送媒体を通してつながっている遠隔処理装置によって実行される。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカル、および、リモート両方のコンピュータ記憶媒体に配置される。
【００１１】
図１は、このように、本発明を実施できる適当なコンピューティング環境１００の例を示す。上記で明らかにしているが、コンピューティング環境１００は適当なコンピューティング環境の例の一つに過ぎず、本発明の使用または機能性の範囲のいかなる制限を示唆することも意図していない。コンピューティング環境１００は、典型的な動作環境１００において示された一つまたは複数のコンポーネントの組み合わせに関するいかなる依存関係も要件も持つものとして解釈すべきではない。
【００１２】
図１に示すように、本発明を実施する例示的なシステムは、コンピュータ１１０の形の汎用コンピュータ装置を含む。コンピュータ１１０のコンポーネントは、それだけに限らないが、処理装置１２０、システムメモリ１３０、および、システムメモリを含む様々なシステムコンポーネントを処理装置１２０へ連結するシステムバス１２１を含む。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、ペリフェラルバス、および、ローカルバスを含むいくつかのタイプのバス構造のどれでもよい。限定ではなく例として、そうしたアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子標準協会（ＶＥＳＡ）ローカルバス、および周辺装置相互接続（ＰＣＩ）バス（メザニンバスともいう）が含まれる。
【００１３】
コンピュータ１１０は、通常、いろいろなコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０からアクセスできる任意の利用可能媒体とすることができ、揮発性および不揮発性の両方、取り外し可能および取り外し不能の両方の媒体を含む。例をあげると、それだけに限らないが、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および不揮発性の両方、取り外し可能および取り外し不能の両方の媒体を含む。コンピュータ記憶媒体は、それだけに限らないが、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気的消去・プログラム可能読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、またはその他のメモリ技術、コンパクトディスク読取り専用メモリ（ＣＤＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶装置、あるいは所望の情報の記憶のために使用することができ、コンピュータ１１０からアクセスすることができる任意の他の媒体を含む。通信媒体は、通常、搬送波その他の搬送機構などの被変調データ信号としてコンピュータ読取り可能命令、データ構造、プログラムモジュール、またはその他のデータを実施し、任意の情報送達媒体を含む。「被変調データ信号」という用語は、その特性セットの１つまたは複数を有する信号、またはその信号中に情報を符号化するように変更された信号を意味する。例をあげると、それだけに限らないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体、および音響、無線周波数（ＲＦ）、赤外線その他の無線媒体などの無線媒体を含む。上記のいずれかの組合せも、コンピュータ読み取り可能媒体の範囲内に含むべきである。
【００１４】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１、および、ランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、起動時などに、コンピュータシステム１１０内の要素間での情報転送を支援する基本ルーチンを含み、通常は、読取り専用メモリ（ＲＯＭ）１３１に記憶される。ランダムアクセスメモリ（ＲＡＭ）１３２は、通常、処理装置１２０から直ちにアクセス可能であり、および／または現在それによって操作されているデータおよび／またはプログラムモジュールを含む。例をあげると、それだけに限らないが、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、および、プログラムデータ１３７を示す。ランダムアクセスメモリ（ＲＡＭ）１３２は、その他のデータおよび／またはプログラムモジュールを含む。
【００１５】
コンピュータ１１０は、その他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体も含む。例としてあげるにすぎないが、図１は、取り外し不能、不揮発性磁気媒体の読取りまたは書込みを行うハードディスクドライブ１４１、取り外し可能、不揮発性磁気ディスク１５２の読取りまたは書込みを行う磁気ディスクドライブ１５１、および、コンパクトディスク読取り専用メモリ（ＣＤＲＯＭ）またはその他の光媒体などの取り外し可能、不揮発性光ディスク１５６の読取りまたは書込みを行う光ディスクドライブ１５５を示す。この例示的動作環境で使用できるその他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体は、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含む。ハードディスクドライブ１４１は、通常、インターフェース１４０などの取り外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００１６】
上記に説明し図１に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ１１０用のコンピュータ読み取り可能命令、データ構造、プログラムモジュール、および、その他のデータの記憶領域を提供する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでも、異なっていてもよい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、それらが少なくとも異なるコピーであることを示すために、ここでは異なる番号が付されている。ユーザは、キーボード１６２、および、一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス１６１などの入力装置を介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる。上記その他の入力装置は、しばしば、システムバス１２１に結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などのその他のインターフェースおよびバス構造によって接続されてもよい。
【００１７】
モニタ１９１またはその他の種類の表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続することができる。モニタ１９１に加えて、コンピュータは、スピーカ１９７およびプリンタ１９６などのその他の周辺出力装置も含むことができ、それらは出力周辺インターフェース１９５を介して接続される。
【００１８】
コンピュータ１１０は、リモートコンピュータ１８０などの一つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、またはその他の一般のネットワークノードとすることがき、通常、コンピュータ１１０に関連して上述した多くのまたは全ての要素を含むが、図１では、メモリ記憶装置１８１だけが示されている。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３を含むが、その他のネットワークを含むこともできる。そうしたネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００１９】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介して、ＬＡＮ１７１へ接続される。ＷＡＮネットワーク環境で使用されるとき、コンピュータ１１０は、通常、モデム１７２またはインターネットなどのＷＡＮ１７３を介して通信を確立するその他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０またはその他の適当な機構を介してシステムバス１２１へ接続することができる。ネットワーク化された環境では、コンピュータ１１０に関連して示したプログラムモジュール、またはその一部は、遠隔記憶装置に記憶することもできる。例をあげると、それだけに限らないが、図１は、リモートアプリケーションプログラム１８５を、メモリ装置１８１上にあるものとして示す。図示されたネットワーク接続は典型的なものであり、コンピュータ間の通信リンクを確立するその他の手段を使用することもできることが理解されるであろう。
【００２０】
当業者には、コンピュータ１１０またはその他のクライアント装置は、コンピュータネットワークの一部として分散することができることが理解されるであろう。この点において、本発明は、いくつものメモリまたは記憶装置、および、いくつもの記憶ユニットまたは記憶ボリュームの至る所で生じるいくつものアプリケーションおよび処理を有する、いかなるコンピュータシステムにもふさわしい。本発明の実施形態は、リモートまたはローカル記憶装置を持つ、ネットワーク環境に分散されたサーバーコンピュータおよびクライアントコンピュータのある環境に適用できる。本発明はまた、プログラミング言語機能、解釈、および、実行能力を持つ独立したコンピュータ装置に適用することもできる。
【００２１】
（デマンドイベントのためのオブジェクトクローン作成）
図２は、デザインタイムイベント時に示される、デマンドイベントのためのオブジェクトクローン作成についてのシステム２００の実施形態の例のブロック図を示す。システム２００は、図１に関して示したコンピュータ１１０のような一つまたはそれ以上のコンピュータ上に存在する。システム２００は、プロパティコレクション２１０、プロパティコレクション２１０と連携している共有オブジェクト２２０、および、共有オブジェクト２２０を指す（例えば、それについて知っている、および、関連付けられる）クローンオブジェクトシェル２３０、２４０、２５０を含む。
【００２２】
システム２００は、ワークフローオブジェクトモデルに基づくことができる。オブジェクトモデルは、複数のオブジェクトおよび複数の関係の集合として定義される。各オブジェクトは、オブジェクトの実行動作を規定する一つまたは複数のプロパティと関連付けられている。オブジェクトモデルは、一般的に、デザインタイムおよびデマンドタイムという二つの状態からなる。
【００２３】
システム２００は、デザインタイム時に示されるアプリケーションである。デザインタイムは、デザインイベントが生じている期間を含む。デザインイベントは、デマンドイベントではない任意のイベントである。デザインイベントは、システム２００のアルゴリズムの編集、または、コーディングを含む。デザインイベントはまた、システム２００のアルゴリズムまたはコードの持続（persisting）、または、ローディングも含む。デマンドタイムは、デマンドイベントが生じている期間を含む。デマンドイベントは、オブジェクトが作成されるために使用されるときの任意のイベントである。例えば、デマンドイベントはアプリケーションのオブジェクトの実行を含む。デマンドイベントはまた、アプリケーション、または、アプリケーション内のオブジェクトの検証（validation）も含む。検証はコンパイル（compiling）に似ていて、アプリケーションを実行することなしに、アプリケーション、または、アプリケーションの一部が設計されたように正しく動作することを確認することとして定義される。
【００２４】
オブジェクトは、機能を実行する、あるいは、目的を果たすその他のオブジェクトを含む。各オブジェクトは、より大きなオブジェクト内で実行される作業項目を定義する。オブジェクトは、例えば、ファイルをコピーすること、ファイルをダウンロードすること、電子メールを送信すること、データを削除すること、クエリーを実行することなどにより、アプリケーションの作業を遂行する。共有オブジェクト２２０は、そのようなオブジェクトである。共有オブジェクト２２０は、デザインタイム時に（および、以下に記載されたデマンドタイム時にも）、プロパティコレクション２１０のプロパティまたは属性で作成され、または、インスタンス化される。
【００２５】
プロパティコレクション２１０は、例えば、システム２００のサーバ（図示せず）上に存在する。プロパティコレクション２１０は、共有オブジェクト２２０などのオブジェクトをインスタンス化するために使用される、どんなタイプのプロパティまたは属性も包含する。例えば、共有オブジェクト２２０が電子メールメッセージを送信するステップを含む場合、共有オブジェクト２２０は作成されまたはインスタンス化されるときに、受取人名、宛て先アドレス、件名、および、メッセージテキストなどのプロパティを含む。これらのプロパティは、プロパティコレクション２１０から作成され、または、インスタンス化される。共有オブジェクト２２０は、一つ以上のプロパティコレクションのプロパティで作成され、または、インスタンス化されることが、当業者には理解されるであろう。
【００２６】
クローンオブジェクトシェル２３０、２４０、２５０は、デザインタイム時には作成されない、または、インスタンス化されないという意味で、オブジェクトの「シェル」である。その代わりに、クローンオブジェクトシェル２３０，２４０、２５０は、共有オブジェクト２２０を指す。矢印２３１、２４１、２５１は、この「指示」を表す。クローンオブジェクトシェル２３０、２４０、２５０は、デマンドタイム時に共有オブジェクトのプロパティで作成され、または、インスタンス化されることを矢印は示している。つまり、デマンドタイム時に、クローンオブジェクトシェル２３０、２４０、２５０は物理的に作成される。デマンドタイム時に、クローンオブジェクトシェル２３０，２４０、２５０は、独立して機能する能力のある独立した実行可能オブジェクトになる。
【００２７】
クローンオブジェクトシェル２３０、２４０、２５０はそれぞれ、一つまたはそれ以上のプロパティシェル２３４、２４４、２５４を含む。プロパティシェル２３４、２４４、２５４は、クローンオブジェクトシェル２３０、２４０、２５０のプロパティがデザインタイム時に作成されない、または、インスタンス化されないということを示す。例えば、クローンオブジェクトシェル２３０、２４０、２５０はそれぞれ、作成され、または、インスタンス化されるときに、電子メールメッセージを送信する。しかしながら、これらの電子メールクローンオブジェクトシェルは、デザインタイム時に、電子メールを送信するいかなるプロパティも含まない。一つまたはそれ以上の電子メールオブジェクトシェル２３０、２４０、２５０のそれぞれが実行されるとき、クローンオブジェクトシェルのプロパティに、共有オブジェクト２２０のプロパティを提供することができる。共有オブジェクト２２０は、クローンオブジェクトシェル２３０、２４０、２５０の実行のために必要な全てのプロパティを提供する。（実行時には、）クローンオブジェクトシェルは、もはやシェルではなく、実行可能オブジェクトである。
【００２８】
例えば、デザインタイム時に、共有オブジェクト２２０のコーディングは編集され、または、持続される。ユーザは、システム２００のオブジェクト２２０、２３０、２４０、２５０を修正することを望む。ユーザは、共有オブジェクト２２０だけを編集することによって、全てのオブジェクト２２０、２３０、２４０、２５０を修正し、または、編集することができる。共有オブジェクト２２０になされるいかなる変更も、デマンドイベント時に、クローンオブジェクトシェル２３０、２４０、２５０で明らかにされる。
【００２９】
さらに、ユーザは、ユーザインターフェースから共有オブジェクト２２０、および、クローンオブジェクトシェル２３０、２４０、２５０を見ることができる。ユーザは、ユーザインターフェースから共有オブジェクト２２０またはプロパティコレクション２１０を選択することによって、共有オブジェクト２２０またはプロパティコレクション２１０を編集することができる。ユーザはまた、任意のクローンオブジェクトシェル２３０、２４０、２５０を選択することによって、共有オブジェクト２２０、または、プロパティコレクション２１０を編集することができることも理解されよう。クローンオブジェクトシェル２３０、２４０、２５０の一つを選択することで、ユーザは実質的に、共有オブジェクト２２０、または、プロパティコレクション２１０を開く。ユーザはその後、共有オブジェクト２２０、または、プロパティコレクション２１０を編集することができる。ユーザは、共有オブジェクトを編集していることを知ることさえなく、その編集がクローンオブジェクトに適用されていると考える。例えば、これは、プログラムを実行できるようにし、ユーザへ文書を見せることができるようにする、コンピュータのデスクトップ上の「ショートカット」アイコンを選ぶことと同じようなものと考えられる。ユーザはそのような文書を編集し、その文書はかかるショートカットを用いてアクセスされているにもかかわらず、その編集はその文書自体になされている。
【００３０】
図３は、デマンドタイム時のオブジェクトクローン作成のための、システム３００の実施形態の例のブロック図を示す。システム３００は、デザインタイムの代わりにデマンドタイムと記載されていることを除いて、図２に関連して示されたシステム２００と同じシステムである。システム３００は、図１に関連して示されたコンピュータ１１０などの一つまたはそれ以上のコンピュータ上に存在する。システム３００は、プロパティコレクション３１０、プロパティコレクション３１０と連携している共有オブジェクト３２０、および、共有オブジェクト３２０と連携しているクローンオブジェクト３３０、３４０、３５０を含む。
【００３１】
システム３００は、デマンドタイム時に表れるアプリケーションである。そのアプリケーションはオブジェクトモデルに基づいている。すでに上述したように、デマンドタイムは、オブジェクトを作成するためにオブジェクトが使用される期間を含む。かかるデマンドタイムは、オブジェクトの実行および検証を含む。
【００３２】
デマンドタイム時に、共有オブジェクト３２０をプロパティコレクション３１０を用いて作成し、または、インスタンス化することができる。プロパティコレクション３１０は、プロパティコレクション２１０に酷似している。プロパティコレクション３１０は、共有オブジェクト３２０のようなオブジェクトをインスタンス化し、または作成するために用いられるあらゆる種類のプロパティまたは属性も含む。例えば、共有オブジェクト３２０が、電子メールメッセージを送信するステップを含む場合、その後共有オブジェクトは、作成され、または、インスタンス化されるときに、受取人名、宛て先アドレス、件名、および、メッセージテキストなどのプロパティを含むことができる。
【００３３】
デマンドタイム時にも、一つまたはそれ以上のクローンオブジェクトシェル２３０、２４０、２５０は、共有オブジェクト３２０のプロパティを用いて作成され、または、インスタンス化され、クローンオブジェクト３３０、３４０、３５０になる。あるいは、デマンドタイム時に、一つまたはそれ以上のクローンオブジェクトシェル２３０、２４０、２５０は、プロパティコレクション３１０のプロパティを用いて作成され、または、インスタンス化され、クローンオブジェクト３３０、３４０、３５０になることができる。クローンオブジェクト３３０、３４０、３５０は、その後、共有オブジェクト３２０のプロパティ３３４、３４４、３５４を含む。このような作成、または、インスタンス化は、ユーザには見えないようにすることができる。例えば、各クローンオブジェクト３３０、３４０、３５０は、共有オブジェクト３２０のように、それぞれの指定のイベントが発生するときに電子メールメッセージを送信する。作成され、または、インスタンス化されたクローンオブジェクト３３０、３４０、３５０は、受取人名、あて先アドレス、件名、および、メッセージテキストなどのプロパティを含むことができる。一つまたはそれ以上のクローンオブジェクト３３０、３４０、３５０が実行されるとき、ユーザは、電子メールメッセージがクローンオブジェクト３３０、３４０、３５０のうちの一つによって、または、共有オブジェクト３２０によって送信されたのかは分からない可能性がある。
【００３４】
本発明の一実施形態において、共有オブジェクト３２０、および、作成され、または、インスタンス化されたクローンオブジェクト３３０、３４０、３５０は、同一のプロパティおよび同一の方法で実行される。電子メールの例を続けると、共有オブジェクト３２０、および、作成され、または、インスタンス化されたクローンオブジェクト３３０、３４０、３５０は、全て、同一の発信人名から同じ宛て先へ、同一の件名で同一のメッセージを送信することができる。
【００３５】
本発明の他の実施形態において、クローンオブジェクト３３０、３４０、３５０のインスタンス化は、二通りに使い分けられる。デザインタイムからのクローンオブジェクトシェル２３０、２４０、２５０は、クローンオブジェクト３３０、３４０、３５０になるために、デマンドタイム時に作成され、または、インスタンス化されることができる。しかしながら、クローンオブジェクト３３０、３４０、３５０は、その後お互いに、および、共有オブジェクト３２０とどこか異なっていることがユーザにとって重要である。つまり、ユーザは、同一の受取人名で同じあて先へ送信された、同一の件名の同一のメッセージを必要としない可能性がある。ユーザは、クローンオブジェクトの一つと異なるメッセージにおけるヘッダーを必要とするか、または、受取人Ｘ、もう一人の受取人Ｙ、さらに、受取人Ｚへ届くメッセージの一つを必要とする可能性がある。そのようなクローンオブジェクトの変更は、デマンドタイム時に動的に設定されることができる。これは、プロパティ式（property expression）において、変数を変更することによって完了する。かかる変更は、任意のオブジェクトによって完了する。デザインタイム時の共有オブジェクト３２０の編集がクローンオブジェクト３３０、３４０、３５０に適用されることを可能にしながら、クローンオブジェクト３３０、３４０、３５０へなされる変更を可能にすることによって、二通りに使い分けられるインスタンス化は柔軟性を加える。
【００３６】
デマンドタイムが完了するとき、作成され、または、インスタンス化されたクローンオブジェクト３３０、３４０、３５０はデザインタイムの状態へ戻る。つまり、クローンオブジェクト３３０、３４０、３５０は、再び、図２に関して説明されたクローンオブジェクトシェル２３０、２４０、２５０になる。共有オブジェクト３２０は、既に述べたように、デザインタイム時に作成され、または、インスタンス化される。このように、ユーザが共有オブジェクト３２０を編集すると、共有オブジェクト３２０のプロパティによって作成され、または、インスタンス化される全てのクローンオブジェクト３３０、３４０、３５０に、デマンドイベントで、共有オブジェクト３２０へなされた変更が反映される。
【００３７】
図４は、クローンオブジェクト上でデザインタイムイベントを実行するための方法４００のフロー図を示す。このようなデザインタイムイベントは、クローンオブジェクトを編集している。そのほかのデザインタイムイベントは、クローンオブジェクトを持続している。ステップ４０５で、クローンオブジェクトＢなどのクローンオブジェクトは、デザインタイムイベントのために選ばれる。クローンオブジェクトＢは、共有オブジェクトＡのクローンである。つまり、クローンオブジェクトＢは、共有オブジェクトＡへの「指示」であるか、または、共有オブジェクトＡへ関連付けられるものであるが、共有オブジェクトＡのプロパティで作成され、または、インスタンス化されるものではない。クローンオブジェクトＢは、ユーザインターフェースにおいてマウスでクローンオブジェクトＢを「クリックすること」などの、任意の適当な方法によって選ばれる。選択によって、ステップ４１０において、ユーザは自動的に共有オブジェクトＡへ向けられる。これは、ユーザが知ることなしに生じる。つまり、ユーザがクローンオブジェクトＢをクリックすると、ユーザが想定する、アルゴリズムを実装するコーディングまたはその他の方法は、クローンオブジェクトＢのコーディングである。実際は、ユーザは、共有オブジェクトＡのアルゴリズムを実装するコーディング、または、いくつかのその他の方法を見ている。ステップ４１５において、デザインタイムイベントは、共有オブジェクトＡ上で実行される。この場合も、実際にはデザインタイムイベントが共有オブジェクトＡに適用されているとき、ユーザは、そのイベントがクローンオブジェクトＢ上で実行されていると信じる。デザインタイムイベントが完了次第、ステップ４２０において、共有オブジェクトＡは閉じられる。要するに、ユーザは、デザインタイムイベントがクローンオブジェクトＢではなく、共有オブジェクトＡに適用されていたことを知らない。しかし、クローンオブジェクトＢがデマンドタイムにあるとき、クローンオブジェクトＢは、共有オブジェクトＡに適用されるデザインタイムイベントに従って動作する。このように、この方法は、様々な場所に配置された多くの類似したオブジェクトを含むアプリケーションの、大きな労力を要するメンテナンスを軽減することに役立つ。例えば、クローンオブジェクトＢを編集することは、実際には、共有オブジェクトＡを編集することとなる。共有オブジェクトＡを編集することは、アプリケーションの至る所に配置されている、共有オブジェクトを指す（ひいてはそのクローンである）、多くの他のオブジェクトを編集することとなる。
【００３８】
図５は、デマンドタイムイベントをクローンオブジェクトへ適用する方法５００を示す。クローンオブジェクトは、共有オブジェクトＡのクローンまたはそのプロパティを共有するクローンオブジェクトＢである。ステップ５０５において、クローンオブジェクトＢのデマンドタイムイベントは開始する。クローンオブジェクトＢは、ステップ５１０で、共有オブジェクトＡのプロパティで作成され、または、インスタンス化される。あるいは上述のように、クローンオブジェクトＢは、図３に関連して示したプロパティコレクション３１０などのプロパティコレクションのプロパティで作成され、または、インスタンス化される。ステップ５１５で、クローンオブジェクトＢは、自身のデマンドタイムイベントを開始する。ステップ５２０で、デマンドタイムイベントは完了する。最後に、ステップ５２５で、クローンオブジェクトＢは自身のデマンドタイムでない状態へ戻る。つまり、クローンオブジェクトＢは、作成され、または、インスタンス化されるのではなく、共有オブジェクトＡを指す状態に戻る。このように、共有オブジェクトＡが編集されると、クローンオブジェクトＢは自動的に、次のデマンドタイムイベントでそれらの編集を反映する。
【００３９】
ここに記載された様々な技術は、ハードウェア、または、ソフトウェア、または、適当な両方の組み合わせと連携して実装される。従って、本発明の方法および装置、または、特定の態様、またはその一部は、フロッピー(登録商標)ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または、任意のその他のマシン読み取り可能記憶媒体のような、有形媒体に具現化されたプログラムコード（例えば、命令）の形をとる。プログラムコードがコンピュータなどのマシンへロードされ、実行されるとき、マシンは本発明を実施する装置になる。プログラムで制御できるコンピュータ上でプログラムコードが実行される場合、コンピュータ装置は、一般的に、処理装置、処理装置（揮発性および不揮発性メモリ、および／または、記憶素子を含む）によって読取り可能な記憶媒体、少なくとも一つの入力装置、および、少なくとも一つの出力装置を含む。本発明の問題領域のプログラミングモデルの態様の創作および／または実装を、例えばデータ処理アプリケーションプログラミングインターフェースまたは同種ものを使うことによって活用する一つまたはそれ以上のプログラムは、好ましくは、ハイレベルな手続型、または、オブジェクト指向プログラミング言語で、コンピュータシステムとやりとりをするために実装される。しかしながらプログラムは、望むのであれば、アセンブリまたは機械語で実装することができる。どんな場合でも、言語はコンパイラ型、または、インタプリタ型言語であり、ハードウェアの実装と組み合わさっている。
【００４０】
本発明を様々な図の好ましい実施形態に関連して説明してきたが、本発明から逸脱することなく本発明の同じ機能を実行するために、その他の実施形態が使用され、または、修正および追加を説明した実施形態へなすこともできることが理解されよう。例えば、本発明の実施形態は、編集または持続のような特定のデザインタイムイベントに関して説明されている。いかなるデザインタイムイベントも、同様に、本発明の実施形態の例を形成することができる。同じように、デマンドタイムイベントも、実行および検証として説明されているが、いかなる他のデマンドタイムイベントも本発明の範囲に該当する。本発明の実施形態のその他の例は、複数のクローンオブジェクトおよび複数の共有オブジェクトをいくつでも含むことができると認められるべきである。本発明は決して、ここに提供され、および、説明された例に限られるものではない。従って、本発明は、任意の一つの実施形態に限られるべきではなく、添付の特許請求の範囲に従って、広さと範囲を解釈されるべきである。
【図面の簡単な説明】
【００４１】
【図１】本発明の態様を実装できるコンピュータ環境の例を示すブロック図である。
【図２】デザインイベント時に示される、オブジェクトクローン作成システムの実施態様の例を示すブロック図である。
【図３】デマンドイベント時に示される、オブジェクトクローン作成システムの実施態様の例を示すブロック図である。
【図４】デマンドイベントのオブジェクトクローン作成システムにおいて、デザインイベントを実行する方法のフロー図である。
【図５】デマンドイベントのオブジェクトクローン作成システムにおいて、デマンドイベントを実行する方法のフロー図である。
【図１】
2006107483.tif 000003
【図２】
2006107483.tif 000004
【図３】
2006107483.tif 000005
【図４】
2006107483.tif 000006
【図５】
2006107483.tif 000007