![]() 一貫性を有するシグナリング状態の変化
专利摘要:
本発明のシグナリングシステムは、ソフトウェアの依存性の連鎖において配信、レポーティング、および/またはその他の状態変更の処理に対する同期手法を提供する。第1段階において、シグナリングシステムは、ソフトウェアコンポーネント間のすべての依存性を識別し、さらに各ノードのバイナリインジケータを第1の表示に設定する。ソースノード、システムの任意の変更を識別した(例えば、値が更新された)後に、システムは、各バイナリインジケータを更新して第2の設定にする。第2段階において、システムは、依存性の連鎖に在るすべてのリスナーを、基本的に、ソースノードから中間ノードへ、そしてエンドノード等の進行順で開始する。いったんすべてのリスナーが更新値に基づいて1または複数の処理を実行する機会を得ると、システムは、依存性グラフを廃棄して、後続値の変更のための新しい依存性グラフを構築できるようにすることができる。 公开号:JP2011513835A 申请号:JP2010548762 申请日:2009-01-23 公开日:2011-04-28 发明作者:エー.ジパースキー クレメンス;エム.カイザー ジェフリー;アール.ウィリアムズ ジョシュア;ディー.ドティ ジョン 申请人:マイクロソフト コーポレーション; IPC主号:G06F9-48
专利说明:
[0001] 本発明は、一貫性を有するシグナリング状態の変化に関する。] 背景技術 [0002] コンピュータ化されたシステムにおいて使用されるアプリケーションプログラムは、典型的には、さまざまな異なる理由から互いに依存する複数の異なるコンポーネントまたはモジュールを含む。例えば、単一の計算アプリケーションプログラムは、計算モジュールからの1または複数の出力値を識別する度に即座にリフレッシュする(即ち、新しい出力を表示する)出力表示コンポーネントを含むことがある。計算モジュールは、今度は、1または複数の入力コンポーネントから1または複数の数値および関数入力を受信する度に計算を実行するように構成されることがある。このように、表示コンポーネントは、計算モジュールだけでなく、最終的に計算アプリケーション内のさまざまな入力コンポーネントの各々に依存するであろう。] [0003] このような依存性をソフトウェアレベルで構成することができる多くの異なる方法がある。例えば、上述の計算モジュールは、それで計算された値を「公開する」ことによってその値を「待ち受ける(listening)」その他の表示コンポーネントが、公開された時にその値を識別して一部の動作を実行できるようにすることがある。値が公開されたときを識別するために、表示コンポーネントは、今度は、最終的に公開された値を識別するおよび/または受信するリスナーを確立することがある(例えば、「イベント」を確立する)。他の場合、計算モジュールは、新しく計算された任意の値をその計算モジュールに登録された特定の他のコンポーネントに渡す(例えば、「シグナリング」)ようにそれ自体が構成されることがある。このように、或るソフトウェアコンポーネントから別のソフトウェアコンポーネントにデータを転送するための複数の「プッシュ」・「プル」形式構造があることを認識されたい。] [0004] このように、プログラマがモジュールまたはコンポーネント間で依存性を生成することを望む度に、プログラマは、典型的には、依存性を符号にして書き込む必要があり、時にはその関係性のリスナーを生成することさえあるだろう。例えば、プログラマは、或るコンポーネントによって値が公開された時にそれを読み出すだけでなくその値を依存性の連鎖に在る別のコンポーネントに送る、リスナーを書くことがある。プログラマは、その上、または、あるいは他の論理を書き込むことがあり、それによって一部の特定の条件が満たされた場合(例えば、値を特定のサイズにする)のみ、コンポーネントがその値を進ませる。その結果、コンポーネントの連鎖に在る各リスナーが異なる方法、および異なる速度で値を処理できることを認識されたい。] [0005] 論理を各リスナーに書き込むこの能力は、プログラミングの柔軟性をある程度提供することができるが、依存性の連鎖を過度に複雑にすることにもなりかねず、および/または、過度の複雑さのため精度を保障することが困難である。例えば、複雑な依存性の連鎖は、各リスナーが1または複数のソースノードの事実上同じ変更に対してそれぞれに、異なるレートで応答する多くの異なるリスナーを有し得る。これは、依存性の連鎖に在る後続コンポーネントの競合条件になりかねない。具体的には、同じソースからの値を受信した2つのコンポーネントに依存しているディペンデントチャイルド(dependent child)は、1つのペアレントコンポーネント(parent component)から正しく更新された値を処理し得るが、古い値を使用して再度実行し得る。あるいは、そのディペンデントチャイルドのコンポーネントは、決して起こりそうにない条件のために無制限なハングアップになることがある。これは、依存性の連鎖にさらに連鎖反応をもたらし得る。] [0006] 上述に加えて、標準のシステムを用いて、情報を受信するためのより直接的な経路が好適である場合でさえもソフトウェアコンポーネント間の同じ依存性を使用できる。例えば、1つの依存性の連鎖は、ソースノードAから中間ノードC、次いでエンドノードDまでの依存性に関わることがある。しかしながら他の場合では、ノードAは、エンドノードDからの値のみを必要とする場合がある。例えば、第2の実行コンテキストにおいて、エンドノードDは、必ずしもソースノードAの値をすぐに必要とするわけではなく、ソースノードAが変更されたことのみを知りさえすればよい。ほとんどの場合、第2の実行コンテキストでさえも、ノードDはノードAが変更されたことのみを知る必要があるとしても、ノードAからC、次いでDまでの実値のリレーになおも関わるであろう。長い依存性の連鎖、特にいくつかの異なる条件に関わる1つにおいて、エンドノードDがソースノードAが変更されたことを単純に見つけ出すだけでも多大で不必要な遅延になるであろう。] [0007] このような問題を克服する一部の標準機構は、頻繁なリフレッシュレートを異なるリスナーの各々に単純に符号化することを含む。一部の場合において効果的であるが、これは計算コストが高く、特に多数のリスナーと関わることがあるところでは不必要であることを認識されたい。例えば、依存性の連鎖内の一部の基本的なソースコンポーネントがしばしば変更し、一方で他の基本的なコンポーネントはまれにしか変更しない場合がある。さらに、また別のコンポーネントは、特定の出力さえ含むことができないので、そのエンドノードにおいてわざわざ値を渡す(および計算する)ことは、特に不必要となるであろう。例えば、最終値のみを表示し、他には表示画面上に現在表示しているものがないスプレッドシート上のセルは、これらのセルが表示されている間は更新される必要がない。] [0008] 万能の手法を実行することは、従って、不必要になることが多い。さらに、依存性が2回登録されることと、他のダウンストリームのリスナーより先にアップストリームのリスナーが一部のデータを必ず取り扱うという保証がほとんどないことが多いために、現在のシステムには非効率が多い傾向にある。この種の論点は、まれにしか変更しない小規模のコンポーネントにとっては問題にならないかもしれないが、この種の論点は、継続的に変更する多くの表示データを有するシステム(例えば、証券データの処理)を不必要に遅くするまたはハングアップさせかねない。さらに、このような論点は、反応しないコンポーネント、または他の不必要な処理の遅延になりかねない。] [0009] 従って、対処することができる複雑なソフトウェアの依存性において値変更をレポートすることに関連する困難が多くある。] [0010] 本発明の実施は、複雑なソフトウェアの依存性の連鎖において配信、レポートティング、および/またはその他の処理状態/値変更に対する同期手法を確保するシステム、方法、およびコンピュータプログラム製品を提供する。特に、本発明の実施は、システムがソフトウェアコンポーネントの依存性の連鎖に対応するノードグラフを確立して、すべてのノードに信号が送られた後でノードグラフに在るすべてのリスナーを呼び出す2段階手法を含む。このように、リスナーを依存性の連鎖の順序で呼び出すことができるため、本発明の実施は、すべてのリスナーが、関連するソースコンポーネントと事実上同じ状態に基づいた、適切な順序で値を受信することを確保することによって一貫性を確保することができる。] [0011] 例えば、依存性の連鎖に在る一貫性のある1または複数の値のセットを処理する本発明の実施に従った方法は、1または複数のソースノードと依存性の連鎖において順序付けられる1または複数の依存コンポーネントとを含む複数のコンポーネントに対応する複数のノードの生成に関わることができる。その方法は、ノードごとに、バイナリインジケータを1または複数のソースコンポーネントが開始状態を備えることを示す第1の設定に設定することを含むこともできる。さらに、その方法は、1または複数のソースコンポーネントにおいて後続状態の変更を識別すると、ノードごとの各バイナリインジケータを第2の設定に設定することに関わることができる。さらに、その方法は、生成された複数のノードに登録されている1または複数のリスナーを呼び出すことに関わることができる。この場合、1または複数のリスナーは、1または複数のソースコンポーネントにおける後続状態に基づいて実行するために同期される。] [0012] さらに、保証された値のセットのみに基づいてインメモリデータ構造を生成および更新する本発明の実施に従った別の方法は、開始ノードグラフの生成を含むことができる。開始ノードグラフは、1または複数のソースコンポーネントに従属する1または複数の依存コンポーネントを含む複数のコンポーネントに対応する。この場合、開始ノードグラフの各ノードは、第1の設定に設定される。この方法は、1または複数のソースコンポーネントが更新値に変更したことを識別すると、更新値をキャッシュして、更新値に基づいて開始ノードグラフを登録したすべてのリスナーを開始して処理を実行することを含むこともできる。さらに、この方法は、更新値に基づいて開始されたすべてのリスナーを処理し終えた後にその開始ノードグラフを廃棄することを含むことができる。さらに、この方法は、1または複数のソースコンポーネントへの1または複数の後続変更に基づいて後続のノードグラフを生成することを含むことができる。] [0013] 本発明の概要は、以下の発明の詳細な説明でさらに説明される概念の選択されたものを簡易な形式で導入するために与えられた。本発明の概要は、特許請求の範囲の対象事項での重要な特徴または不可欠な特徴を特定することを意図せず、または特許請求の範囲の対象事項の範囲を決めるのに役立つものとして用いられることを意図しない。] [0014] 本発明の付加的な特徴および利点は、以下の説明に示されるが、その一部においては説明によって明らかになるであろうし、または本発明の実施によって知得することもできる。本発明の特徴および利点を、添付の特許請求の範囲において特に指摘された手段およびその組み合わせによって実現して得ることができる。本発明のこれらと他の特徴は、以下の説明および添付の特許請求の範囲によってより完全に明白になるであろうし、以下に示された本発明の実施によって知得することもできる。] [0015] 本発明の上記に列挙したものと他の利点および特徴を得ることができる方法を説明するために、簡単に上述した本発明のより詳細な説明は、添付図面に示されたその具体的な実施形態を参照することによって示されるであろう。これらの図面は本発明の典型的な実施形態のみを表し、従って、その範囲が限定されるものと見なされないことを理解した上で、本発明は、添付図面の使用を通じて付加的な具体性を用いて説明されるであろう。] 図面の簡単な説明 [0016] 本発明の実施に係る、シグナリングシステムが依存性の連鎖のノードを識別する図式的外観図である。 本発明の実施に係る、シグナリングシステムが依存性の連鎖に在る各ノードを信号で送る図式的概略図である。 本発明の実施に係る、シグナリングシステムが依存性の連鎖に在るノードを信号で送った後にリスナーを呼び出す図式的概略図である。 依存性の連鎖において依存ノード間の一貫性を確実なものにするための本発明の実施に係る方法のフローチャートである。 本発明の実施に係る、ノード間の一貫性を確実なものにするために異なる依存性の連鎖構造を生成する方法のフローチャートである。] 実施例 [0017] 本発明の実施は、複雑なソフトウェアの依存性の連鎖において配信、レポートティング、および/またはその他の処理状態/値変更に対する同期手法を確保するシステム、方法、およびコンピュータプログラム製品にまで及ぶ。特に、本発明の実施は、システムがソフトウェアコンポーネントの依存性の連鎖に対応するノードグラフを確立して、すべてのノードに信号が送られた後でノードグラフに在るすべてのリスナーを呼び出す2段階手法を含む。このように、リスナーを依存性の連鎖の順序で呼び出すことができるため、本発明の実施は、すべてのリスナーが、関連するソースコンポーネントと事実上同じ状態に基づいた、適切な順序で値を受信することを確保することによって一貫性を確保することができる。] [0018] 本明細書でより完全に理解されるように、これらと他の利点を、少なくとも一部において2段階通知、および一度に最大の配信通知を使用して実現させることができる。さらに、対象とする通知グラフは、本明細書で説明するように、(グラフの形で表示したような)依存順序によって状態変更通知を提供する。特に状態変更の通知は(変更された値を必ずしも渡す必要なく)、すべての古いノードは古いとプログラムが正しく判定することができた後にのみ生じる。このように、通知は、与えられたノードに対して1回のみ生じる(サイクルと呼ぶ)。この結果、本発明のこれらと他の態様は、依存状態についての合理的な仮定を提供するために理解されて、マルチスレッド環境におけるシステムの保証を維持管理するのに役立つことができる。] [0019] 図1Aは、依存性の連鎖においてシグナリングシステム100が、一貫性のあるシグナリングを確保するために少なくとも1セットの依存ソフトウェアコンポーネントに対してノードグラフを準備する図式的外観図を示す。例えば、図1Aは、システム100がコンポーネントA110、B120、C130、D140、E150、およびF160を備えることを示す。さらに、図1Aは、コンポーネントA110がコンポーネントB120およびコンポーネントCに依存し、一方でコンポーネントB120がコンポーネントD140に依存して、コンポーネントCがコンポーネントE150に従属することを示す。さらに、図1Aは、コンポーネントD140がコンポーネントF160に従属し、コンポーネントDおよびコンポーネントEは、条件付きで互いに関連することを示す。例えば、コンポーネントEは、コンポーネントDから得られる値が或るサイズまたは長さである場合にのみ値を計算することがある。] 図1A [0020] このように、このソフトウェアコンポーネントA−Fのセットを、複数の、ソースノード、依存ノード、およびエンドノードまたはそれらのいずれかを備える「依存性の連鎖」を形成するものとして一般的に考えることができる。この特定の例において、コンポーネントF160を、基本的には依存性の連鎖におけるソースノードとして理解することができる。これとは対照的に、コンポーネントB、C、D、およびEを中間ノードとして基本的に理解することができ、コンポーネントAを依存性の連鎖の依存ノードとして理解することができる。] [0021] もちろん、しかしながら、依存性の連鎖における別のノードに対しては依存性の連鎖における任意のノードを依存ノード、中間ノード、またはソースノードとして見なすことができることも認識されたい。例えば、コンポーネントD140を、コンポーネントB120にとってのソースノードおよび/またはコンポーネントE150にとってのソースノードと見なすことができる。同様にコンポーネントE150を、コンポーネントC130にとってのソースノードと見なすことができる等である。さらに、さまざまな実行コンテキストに実際に依存するいかなる時でも図示された依存性の連鎖を長くし、短くし、多少複雑にし得ることを認識されたい。例えば、コンポーネントAは、一度の計算にコンポーネントB−Fが関わるが、他の計算においてこれよりも多いまたは少ないコンポーネントノードを含む一つの特定の計算のための出力モジュールを備え得る。] [0022] 図1Aは、システム100がソフトウェアコンポーネントの依存性の連鎖に対応する(あるいは表す)ノードグラフ113を準備することができることを示す。一般的に、ノードグラフ113は、関連のあるソフトウェアコンポーネント(例えば、110、120、130、140、150、160)の状態変更に基づいて生成されて廃棄されるリンクノード(110a、120a、130a、140a、150a、および160a)を有するインメモリデータ構造のセットを備える。例えば、コンポーネントAによって一部の処理が要求されると、処理モジュール105は、その特定の要求に対して依存性の連鎖に或る各ソフトウェアコンポーネント110、120、130、140、150、160をトラバースして、対応するノードグラフ113を準備する。特に、図1Aは、処理モジュール105がノード110a、120a、130a、140a、150a、および160aを備えるノードグラフ113を準備することを示し、これらのノードはコンポーネント110、120、130、140、150、160にそれぞれが対応する。] 図1A [0023] ノードグラフ113に加えて、図1Aは、処理モジュール105がさらにリスナーレジストリ170に在るソフトウェアコンポーネントごとに異なるリスナーの各々を登録することを示す。例えば、さまざまなコンポーネント110、120、130等をトラバースして依存性を識別すると、各コンポーネントは、特定のリスナーに表示を与えることもできる。処理モジュール105は、次に、識別した時に識別された各リスナーをリスナーレジストリに登録することができ、このようにして依存性の連鎖において近似したまたは全く同じ順序で登録することができる。例えば、図1Aは、コンポーネントB120、D145、E155の各々が、リスナーB125、D145、E155等のリスナーをそれぞれ使用することを示す。従って、図1Aは、リスナーレジストリ170が、関連する依存性の連鎖の順序においてリスナーD145、リスナーE155、およびリスナーB125の表示を備えることを示す。] 図1A [0024] どのイベントにおいても、システム100は、ソフトウェアコンポーネントの状態の変更を反映させて管理するためにノードグラフ113を生成して廃棄することができる。例えば、処理モジュール105は、ソースノードFが或る値(例えば、「0」または「状態1」165)に等しい時にこの特定のノードグラフ113を生成した可能性がある。ソースノードFが第1の状態から後続の別の状態または値に変更(例えば、「0」から「10」に−図示せず)する時、システム100は、(例えば、処理モジュール105を経由して)ノードグラフ113を更新して、単に変更が起きたという事実でも反映させることができる。システム100は、次に、すべてのコンポーネントが何らかの望ましい処理をし終える機会が得られる時間までこの特定の状態でノードグラフ113を保持することができる。いったんさまざまなコンポーネント110、120、130が最初にノードグラフ113を変更させたソースノードの変更を処理し終えると、処理モジュール105は、ノードグラフ113を廃棄して、必要な新しいノードグラフと共に再び開始することができる。その結果、システム100は、基本的に、コンポーネント110、120、130が以前の変更(例えば、「0」から「10」への変更)を処理する間、対応するノードが新しく更新された状態で受信するのを禁止する。] [0025] ソフトウェアコンポーネントの処理におけるこのような一貫性および統一性は、本発明の実施に従った1または複数のシグナリング機能を使用して、少なくとも一部において可能になる。例えば、図1Aは、ノードグラフ113のさまざまなノード110a、120a等の各々は、バイナリインジケータ117a、127a、137a、147a、157a、および167a等のバイナリインジケータを備える(または準備する)ことを示す。この特定の例示において、バイナリインジケータは、特定の開始設定または第1の設定を識別する「+」記号として示される。具体的には、例示された「+」記号の例は、与えられたソフトウェアソースコンポーネントのデフォルト値(例えば、コンポーネント160の状態165)を意味し、任意の変更が処理される前の依存性の連鎖がその値に基づく。] 図1A [0026] このように、本明細書でより完全に認識されるように、ノードグラフ113を構成して、バイナリインジケータの変更が元のソースノードの特定の状態とリンクされるようにすることができる。例えば、コンポーネントF160の状態の変更が受信(即ち、メッセージ180)されるとすぐに、システム100は、新しい値(例えば、「0」から「10」に変更された値)をキャッシュすることができ、ソースコンポーネントF160に起きることがあるその他の後続変更の有無にかかわらず、その新しい値をノードグラフ113に自動でリンクさせることができる。さらに、システム100は、ソースコンポーネントの値(例えば、コンポーネントF160)の後続変更を、要求された時間に新しい(またはリフレッシュされた)ノードグラフ(図示せず)に任意にリンクさせることができる。] [0027] 従って、この線に沿って、「バイナリ」インジケータは、本明細書で論じるように、もう一つの値にのみ、一度だけ変更することができる。このように、処理モジュール105が特定のソフトウェアソースコンポーネント(例えば、160)に対する値の変更を識別した時、バイナリインジケータ117a、127a等は、その変更を反映するために1回のみ更新される。例えば、図1Aは、処理モジュール105が、コンポーネントF160が更新されたことを表示するメッセージ180を受信することを示す。図1Bに示すように、処理モジュール105は、次に、異なるノード110a、120a等の各々を通じて信号185を送る。信号185は今度、バイナリインジケータの「+」状態から「−」状態への変更の表記を含み、このようにしてバイナリインジケータの開始設定を後続設定に単純に更新する。] 図1A 図1B [0028] さらに、信号185は、基本的にソースノードF160aから開始される依存性の連鎖の順序で送られる。例えば、図1Bは、信号185が最初にノードF160aに送られ、次にノードD140aに、次にノードE150a等に送られることを示し、この結果167a、157a、147aの設定(即ち、「+」)から、それぞれ167b、157b、147bの設定(即ち、「−」)にバイナリインジケータが変更される。最後に、信号185は、ノードグラフ113内のすべてのノードが信号185を受信するまで各依存性を通じて信号を渡す。ほとんどの場合、各ノードは、信号を一度しか受信しない。しかしながら本発明の実施は、この他の理由でノードが信号(またはその他の信号)を繰り返し受信する場合でも、各バイナリインジケータがそれでもなお「最大限でも1回」しか変更しないため、この場合に適応することができる。] 図1B [0029] 具体的には、各バイナリインジケータ147を一度しか(即ち、「最大限でも1回」)変更することができないため、他の信号(または繰り返しの信号)は、変更された/更新されたノードのバイナリインジケータを変更することができない。つまり、これらの図で使用された具体的な用語を参照すると、いったん図示された「−」記号に設定されると、与えられたバイナリインジケータを「+」記号に戻して変更することができない。このように、図示されたノードグラフ113のシグナリング経路は、イベントにおいて或るノードが何かの事情で特定の信号185をあちこちに循環させたとしても機能するであろう。当然、「最大限でも1回」の変更に対するバイナリインジケータの構成とは別に、ノード自体もこの種の問題を避けるように構成することができる。少なくとも一実施において、例えば、ノードグラフ113の各ノードは、生成時に別のノードへのバックチャネルを用いずに構成される。このように、ノードF160aは信号185を少なくともノードD140aにリレーするが、ノードF160aは、ノードD140aから帰還信号を受信することができない。] [0030] システム100は、与えられたノードグラフに在るすべてのノードが(信号185を経由して)更新されるまでこの特定の依存性の連鎖における処理を起こすことができないことをさらに確保する。少なくとも一つの実施において、例えば、システム100は、すべてのバイナリインジケータが設定されて更新されるまで、または信号185が少なくとも1回はノードグラフ113に在るすべてのノードに到達するまでリスナー125、145、または155の呼び出しを保留することによってこの一貫性を確保する。このような実施において、従って、ノードグラフの生成の開始(例えば、図1A)は、単にリスナー125.145、および155を発見することなので、結果として何の処理も行われないだろう。システム100がコンポーネントFの更新(例えば、メッセージ180)を受信する時点においても、システム100は、ソースノードの開始変更を反映させるためにバイナリインジケータが更新されるまでリスナー125、145、または155のいずれも呼び出さないであろう。] 図1A [0031] すべてのバイナリインジケータを更新した後のリスナーの呼び出しに加えて、システム100は、特定の順序でリスナーを呼び出すことによって一貫性をさらに向上させることができる。例えば、図1A−1Cは、リスナーレジストリ170が、リスナー125、145、および145の参照を、基本的には処理モジュール105によってそれらが識別された順序で格納することを示す。特に、図1A−1Cは、リスナーレジストリ170が、これらの特定のリスナーの順序を、最初はリスナーD145、次にリスナーE155、そして次にリスナーB125の順序で格納することを示す。その結果、処理モジュール105が最終的にこれらの特定のリスナーを呼び出す時、処理モジュール105は、近似した処理順序でしかそれを行なわない。例えば、図1Cは、処理モジュールがノードグラフ113を通じてメッセージ190に近似した依存性の連鎖の順序を適用して、ノードD140aおよびE150aに対応するリスナーD145およびE155を、ノードB120aに対応するリスナーB125の前に呼び出すことができることを示す。] 図1A 図1C [0032] システム100はこれらのリスナーの各々を呼び出すので、対応する各ソフトウェアコンポーネントは、ソースコンポーネントの値変更に基づいて処理を実行することができる。例えば、いったんリスナー145が呼び出されると、ソフトウェアコンポーネントD140は、このノードグラフ113と関連付けされたキャッシュ値(例えば、ソースコンポーネントF160に提示された値)で処理を任意に実行することができる。いったんリスナーE155およびB125が呼び出されると、コンポーネントE150およびB120は、すでに処理された、および/またはメッセージ180からのコンポーネントFの最新の更新に基づいてノードDから提供された値を任意に読み出すことができる。] [0033] システム100は、このように各リスナーを呼び出すことだけでなく、依存性の連鎖に沿って連続する値を処理することも順序付けることを認識されたい。これにより、特定のソフトウェアコンポーネントが別のソース/中間ノードから読み出す各値が、すでに処理された、最新の値のみに基づくという見込みが増加する。さらに、いったんすべてのリスナーがコンポーネントF160に割り当てられた状態に基づいて呼び出されて、すべての処理が完了すると、処理モジュール150は、ノードグラフ113を廃棄する。必要に応じて、システム100は、コンポーネントFのさらに別の変更に対応する別のノードグラフを準備することができる。] [0034] 従って、図1A、1B、および1Cは、依存性の連鎖内のコンポーネントが一度にソースノードの1つの状態変更のみを効率的に、基本的に正しい順序で処理することを確保するための1または複数の図式またはコンポーネントを提供する。これにより、多くの重要な保証を提供することができ、このような特定の場合における競合条件(同じ連鎖内の現在の値と古い値との間の処理)に対して時々生じる懸念を軽減するあるいは無くすことができる。] 図1A [0035] 上述に加えて、本発明の実施を、特定の結果を達成するための1または複数の動作を備える方法において説明することもできる。例えば、図2は、依存性の連鎖に在る1または複数の値の一貫性のあるセットを処理する方法のフローチャートを示す。さらに、図3は、保証された値のセットのみに基づいて依存性の連鎖を表すインメモリデータ構造を生成して更新する付加的または代替的方法を示す。図2および図3のフローチャートの動作は、図1A−図1Cのコンポーネントおよび図式に対して以下で説明される。] 図1A 図1C 図2 図3 [0036] 例えば、図2は、依存性の連鎖に在る1または複数の値の一貫性のあるセットを処理する方法が、依存性の連鎖に在るノードを識別する動作200を備えることができることを示す。動作200は、依存性の連鎖において順序付けられる1または複数のソースコンポーネントおよび1または複数の依存コンポーネントを含む複数のコンポーネントに対応する複数のノードを生成することを含む。例えば、処理モジュール105は、コンポーネントA110から処理の要求を受信して、それに対応する依存性の連鎖をトラバース(traverse)して、コンポーネントAが依存する異なるコンポーネントの各々を識別する。処理モジュール105は、次に、Aが依存する識別されたコンポーネントと相関する依存性の連鎖に在る1または複数のノードを備えた対応するノードグラフ113のデータ構造を生成する。] 図2 [0037] 図2は、バイナリインジケータをノードごとに設定する動作210を備えることができる方法も示す。動作210は、ノードごとに、バイナリインジケータを、1または複数のソースコンポーネントが開始状態を備えることを示す第1の設定に設定することを含む。例えば、図1Aは、処理モジュール105が、ノードグラフ113に在るノードごとにバイナリインジケータ117a、127a、137a、147a、157a、および167aを生成して設定することを示す。一実施において、この特定のバイナリインジケータを開始状態(165)に設定して、1または複数のソースコンポーネント(例えば、コンポーネントF160)の値を、ノードグラフの構成がまだ変更されていない時間から効率的に明確にする。] 図1A 図2 [0038] さらに、図2は、この方法が、ソースノードが変更した後にすべてのバイナリインジケータを第2の設定に設定する動作220を備えることができることを示す。動作220は、1または複数のソースコンポーネントにおいて後続状態の変更を識別すると、ノードごとに各バイナリインジケータを第2の設定に設定することを含む。例えば、図1Bに示すように、ノードグラフ113内のバイナリインジケータの各々を、別の後続の表示にする第1の変更等、いったん処理モジュール105がノードFの変更を識別すると、処理モジュール105は即座にその変更のシグナリングを開始する。具体的に、図1Bは、処理モジュール105が信号185をノードグラフ113に在る各ノードに渡してその「+」設定を「−」設定にすることを示す。] 図1B 図2 [0039] さらに、図2は、この方法が、依存性の連鎖においてすべてのリスナーを呼び出す動作230を備えることができることを示す。動作230は、生成された複数のノードに登録されている1または複数のリスナーを呼び出すことを含み、1または複数のソースコンポーネントにおける後続状態に基づいて実行するために1または複数のリスナーが同期される。例えば、バイナリインジケータの各々がマイナス記号に変更されると、図1Cは、システム100がコンポーネントごとの各リスナーを呼び出して、リスナーが依存性の連鎖において元々識別された順序で(例えば、ソースノードに最も近いリスナーからエンドノードに最も近いリスナーへ進む)この方法を行うことを示す。例えば、図1Cは、システム100が最初にリスナーD145を呼び出し、次にリスナーE155、次にリスナーB125等を呼び出すことを示す。] 図1C 図2 [0040] 上述に加えて、図3は、保証された値のセットのみに基づいて依存性の連鎖を作成する本発明に従った付加的または代替的方法が、第1の状態に基づいてノードグラフを生成する動作300を備えることができることを示す。動作300は、1または複数のソースコンポーネントに従属する1または複数の依存コンポーネントを含む複数のコンポーネントに対応する開始ノードグラフを生成することを含み、そこで開始ノードグラフの各ノードが第1の設定に設定される。例えば、図1Aは、処理モジュール105が、処理要求180を識別するとコンポーネント110、120、130、140、150、160をトラバースして、対応するノード110a、120a等を含むノードグラフ113を生成することを示す。この場合、処理モジュール105は、各ノードに在るバイナリインジケータ(117a、127a等)を開始状態(即ち、「+」)にさらに設定して、ノードグラフ113が、ソースノードコンポーネントF160の開始状態(165)に基づくことを示す。] 図1A 図3 [0041] 図3は、この方法が、状態変更が複製された後にすべてのリスナーを呼び出す動作310を備えることができることも示す。動作310は、1または複数のソースコンポーネントが更新値に変更されたことを識別すると、その更新値をキャッシュすることと、開始ノードグラフを登録したすべてのリスナーを開始して更新値に基づいた処理を実行することを含む。例えば、図1Bおよび1Cは、コンポーネントノードFを更新するメッセージ180を受信すると、処理モジュール105は、すべてのバイナリインジケータを、例えば、ノードグラフ113に在る147b、157b、167b等の別の記号表示に変更して(即ち、「−」に変更する)、レジストリ170に在るすべてのリスナーをさらに呼び出すことを示す。] 図1B 図3 [0042] さらに、図3は、この方法が、ノードグラフを廃棄する動作320を備えることができることを示す。動作320は、開始されたすべてのリスナーが更新値に基づいて処理し終えた後に開始ノードグラフを廃棄することを含む。例えば、図3に示した各リスナーがノードグラフ113が利用可能な最新値にアクセスした後に処理モジュール105は、ノードグラフ113を廃棄する。異なるバイナリインジケータ147b、157b等の各々を一回しか変更することができないので、呼び出された他リスナーのいずれによっても、異なるコンポーネントまたはノードに変わる他の後続変更が複製されることができず、取り扱うこともできない。よって、システム100は依存ノードグラフ113を廃棄する。] 図3 [0043] さらに、図3は、その方法が、更新状態に基づいて新しいノードグラフを生成する動作330を備えることができることを示す。動作330は、1または複数のソースコンポーネントに変わる1または複数の後続変更に基づいて後続のノードグラフを生成することを含む。このように、例えば、コンポーネントA110によって新しい処理要求が受信されると、処理モジュール105は、この特定の要求に関する依存性の連鎖のセットを再度トラバース(traverse)して、新しいノードグラフに関するノードの新しいセットを識別(図示せず)し得る。ノードグラフ113と同様に、この新しいノードグラフも、対応するソースノードの最新の変更に基づくにもかかわらずインメモリデータ構造になるであろう。特に、このノードグラフは、図1Aに示したものと同じ表示を備えることができるが、この実行コンテキストが異なり、異なる依存性を有する場合があるので、異なるコンポーネントまたはノードも備え得る。] 図1A 図3 [0044] このような新しいノードグラフおよび新しい依存性の連鎖の生成を継続的にリフレッシュし、再生し、そして必要に応じて廃棄することができることを認識されたい。いずれにしても、本発明の実施はこのように、ソースノード値の変更が、依存性の連鎖を通じて特定のノードグラフのコンテキストにおいて、一貫性のある方法で一度のみ処理されることを確保する。従って、本発明の実施は、ソフトウェアコンポーネントが非常に複雑な依存性の連鎖になっていても、値の処理において高度な精度および一貫性を確保することができる。] [0045] 本発明の実施形態は、以下により詳細に論じられるように、さまざまなコンピュータハードウェアを含む専用または汎用コンピュータを備えることができる。本発明の範囲における実施形態は、コンピュータ可読媒体も含み、その上に格納されるコンピュータ実行可能命令またはデータ構造を搭載または有する。このようなコンピュータ可読媒体は、汎用または専用コンピュータがアクセスすることができる利用可能な任意の媒体にすることができる。] [0046] 例を挙げると、このようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、または他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、またはコンピュータ実行可能命令またはデータ構造の形式において望ましいプログラムコード手段を搭載または格納するために使用することができて、汎用または専用コンピュータによってアクセスすることができるその他の媒体を備えることができるが、これに限らない。情報が、ネットワークまたは別の通信接続(有線、無線、または有線もしくは無線の組み合わせのいずれか)を経由してコンピュータに転送または提供される場合、そのコンピュータは、適切にその接続をコンピュータ可読媒体と見なす。このように、こうした接続はいずれも適切に、コンピュータ可読媒体と呼ばれる。上記の組み合わせも、コンピュータ可読媒体の範囲内に含めなければならない。] [0047] コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、或る機能または機能群を実行させる命令およびデータを備える。発明の対象事項を、構造的特徴または方法論的動作に特有の言語で説明しているが、添付の特許請求の範囲で定義された本発明の対象事項は、上述した具体的な特徴または動作に必ずしも限定されないことを理解されたい。むしろ上述した具体的な特徴および動作は、特許請求の範囲を実装する例示的な形態として開示される。] [0048] 本発明を、その精神または不可欠な特性から逸脱することなく、他の具体的な形態に実施してもよい。説明した実施形態は、あらゆる点において単に例示的と見なされ、限定されるものではない。本発明の範囲は、従って、上述の説明よりはむしろ添付の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲に入るすべての変更は、それらの範囲内に含まれるものとする。]
权利要求:
請求項1 異なるデータ型(135、140、145)に基づいて異なる型構造に対応する1または複数のデータ要素を使用した1または複数のアプリケーションプログラム(120、125、130)を備えるコンピュータ化された環境のオブジェクト指向のシステム(100)において、異なる構造型を使用するアプリケーションが相互運用可能になるように、共通のデータ構造(110)を使用して異なる構造型のデータへのアクセスを用いてアプリケーションを自動で提供する方法であって、1または複数の異なるアプリケーション(125、130)によって維持管理されるデータ(127、133)にアプリケーション(120)から1または複数アクセスする要求(180)を受信すること(340)であって、前記要求されたデータが1または複数の異なる型構造に対応する、ことと、前記1または複数の異なるアプリケーションに対応する1または複数のプロキシ(165、170、175)を識別すること(350)と、前記識別された1または複数のプロキシを使用して前記要求されたデータを共通のデータ構造(110)にマッピングすること(360)であって、前記識別された1または複数のプロキシが、前記要求されたデータ(127、133)を前記共通のデータ構造(110)にマッピングするマッピングされたデータ構造(195)を生成する、ことと、前記マッピングされたデータ構造(195)を要求するアプリケーションに提供すること(370)との動作を備えることを特徴とする方法。 請求項2 前記識別されたプロキシの少なくとも1つは、前記1または複数の異なるアプリケーションプログラムの1つによって提供されることを特徴とする請求項1に記載の方法。 請求項3 前記識別されたプロキシの少なくとも1つは、前記システム(100)によって前記1または複数の異なるアプリケーションプログラムの1つに提供されるデフォルト値であることを特徴とする請求項1に記載の方法 請求項4 前記共通のデータ構造(110)内の複数のデータ型の1つを前記要求されたデータに割り当てる動作をさらに備えることを特徴とする請求項1に記載の方法。 請求項5 前記1または複数の異なるアプリケーション(125、130)の各々において要求されたデータの1または複数のデータ型(135、140、145)を識別する動作をさらに備えることを特徴とする請求項4に記載の方法。 請求項6 前記共通のデータ構造(110)は、動作の構造型、シーケンスの構造型、レコードの構造型、および認識できないデータ形状を有するデータの構造型を備えることを特徴とする請求項4に記載の方法。 請求項7 前記要求されたデータをマッピングすることは、値を元に戻す引数または関数に対応する前記1または複数のデータ形状(135、140、145)の1つを判定することと、前記1つのデータ形状(135)に対応する要求されたデータを動作構造型に割り当てることとの動作をさらに備えることを特徴とする請求項6に記載の方法。 請求項8 前記要求されたデータをマッピングすることは、少なくとも一部の前記要求されたデータが未定義であるデータ形状に対応することを判定することと、前記少なくとも一部のデータを未定義のデータ形状の構造型に割り当てることとの動作をさらに備えることを特徴とする請求項6に記載の方法。 請求項9 前記要求されたデータをマッピングすることは、前記1または複数のデータ形状(135、140、145)の1つが一群の値に対応することを判定する動作をさらに備えることを特徴とする請求項6に記載の方法。 請求項10 前記一群の値は識別可能な標識を有しないことを判定することと、前記一群のデータをシーケンス構造型に割り当てることとの動作をさらに備えることを特徴とする請求項9に記載の方法。 請求項11 前記一群の値は1または複数の識別可能な標識を有することを判定することと、前記一群のデータをレコード構造型に割り当てることとの動作をさらに備えることを特徴とする請求項9に記載の方法。 請求項12 1または複数の動作を実行する1または複数の要求を少なくとも一部の前記要求されたデータ上で受信することと、前記マッピングされたデータ構造(195)を通じて前記1または複数の動作を処理することとの動作をさらに備えることを特徴とする請求項1に記載の方法。 請求項13 オブジェクト指向のシステム(100)およびその中にインストールされた1または複数のアプリケーションプログラム(120、125、130)を備えるコンピュータ化された環境におけるアプリケーションプログラム(120)において、前記アプリケーションプログラムが、異なる型構造を有する1または複数のデータ要素を実装している、共通のデータ構造(110)を通じて1または複数の異なる型構造に対応するデータにアクセスする方法であって、前記方法は、1または複数の異なる型構造に対応する1または複数のデータのアクセス要求(127、133)を送ること(300)と、前記要求されたデータと共通のデータ構造(110)の1または複数の構造型との間のマッピング情報(210、220、230)を備える1または複数のマッピングされたデータ構造(195)を受信すること(310)と、前記1または複数のマッピングされたデータ構造(195)上で1または複数の動作(200)を要求すること(320)であって、前記要求された1または複数の動作が、前記1または複数の異なる型構造の前記データ(127、133)に変換される、ことと、前記要求された1または複数の動作が前記1または複数の異なる型構造に対応する前記要求されたデータ(127、133)上で完了したことの1または複数の確認を受信すること(330)との動作を備えることを特徴とする方法。 請求項14 前記1または複数のマッピングされたデータ構造(195)は、少なくとも一部の前記要求されたデータ(127、133)が、一群の1または複数の値を含むことを示して、前記一群がレコード構造型に割り当てられることを特徴とする請求項13に記載の方法。 請求項15 1または複数の動作を要求する前記動作(320)は、前記1または複数の値の1つに対応するレコードの変更を要求することであって、前記1または複数の確認が前記変更が前記レコードにおいて完了されたことを識別する、ことをさらに含むことを特徴とする請求項16に記載の方法。 請求項16 前記1または複数のマッピングされたデータ構造(195)は、少なくとも一部の前記要求されたデータ(127、133)が動作構造型に割り当てられる1または複数の関数を含むことを示すことを特徴とする請求項13に記載の方法。 請求項17 1または複数の動作を要求する前記動作(320)は、前記要求されたデータ(127、133)を維持管理する異なるアプリケーション(125、130)によって実行される前記動作構造型に対応する1または複数の関数を要求することをさらに含み、前記1または複数の確認が、前記1または複数の関数が実行されたことを示すことを特徴とする請求項16に記載の方法。 請求項18 異なるデータ型(135、140、145)に基づいて異なる型構造に対応する1または複数のデータ要素を使用した1または複数のアプリケーションプログラム(120、125、130)を備えるコンピュータ化された環境のオブジェクト指向のシステム(100)において、この上に格納されたコンピュータ実行可能命令を、前記命令が実行された時に、前記システムにおける1または複数のプロセッサが1つの方法を遂行する、前記命令を有するコンピュータプログラムストレージ製品であって、前記方法は1または複数の異なるアプリケーション(125、130)によって維持管理されるデータ(127、133)にアプリケーション(120)から1または複数アクセスする要求(180)を受信すること(340)であって、前記要求されたデータが1または複数の異なる型構造に対応する、ことと、前記1または複数の異なるアプリケーションに対応する1または複数のプロキシ(165、170、175)を識別すること(350)と、前記識別された1または複数のプロキシを使用して前記要求されたデータを共通のデータ構造(110)にマッピングすること(360)であって、前記識別された1または複数のプロキシが、前記要求されたデータ(127、133)を前記共通のデータ構造(110)にマッピングするマッピングされたデータ構造(195)を生成する、ことと、前記マッピングされたデータ構造(195)を要求するアプリケーションに提供すること(370)との動作を備えることを特徴とするコンピュータプログラムストレージ製品。
类似技术:
公开号 | 公开日 | 专利标题 US10489406B2|2019-11-26|Processing events for continuous queries on archived relations US20180181622A1|2018-06-28|Generation of archiver queries for continuous queries over archived relations US9769109B2|2017-09-19|Monitoring of subscriber message processing in a publish/subscribe messaging environment CA2969131C|2019-12-03|Data stream processing language for analyzing instrumented software Blackstock et al.2012|IoT mashups with the WoTKit US9342857B2|2016-05-17|Techniques for locally modifying draw calls US10235337B2|2019-03-19|Distributed work flow using database replication US9407714B2|2016-08-02|Data refreshing of applications US9372688B1|2016-06-21|Automatic discovery of a JavaScript API US9424236B2|2016-08-23|Filtered Stylesheets US9977672B2|2018-05-22|Attributing authorship to segments of source code US6920634B1|2005-07-19|Detecting and causing unsafe latent accesses to a resource in multi-threaded programs US8136093B2|2012-03-13|System for adding code commentary to source code during software debugging US20020069302A1|2002-06-06|Method and system for passing messages between threads US20100211933A1|2010-08-19|Debugging and perfomance analysis of applications US10068202B2|2018-09-04|Instantiating complex event scenarios using dynamic rule creation US8464221B2|2013-06-11|Visualization tool for system tracing infrastructure events AU2013237710A1|2014-05-08|System and method for batch evaluation programs JP2016514299A|2016-05-19|連続イベント処理(cep)クエリの並列の実行 CA2800916C|2017-08-29|Shared data collections US8161247B2|2012-04-17|Wait loss synchronization US20080244025A1|2008-10-02|Continuous feedback-controlled deployment of message transforms in a distributed messaging system CN105190547B|2018-11-16|用于数据更新的图表的分阶段的动画化 JP2010176336A|2010-08-12|クライアントプログラム、端末、方法、サーバシステムおよびサーバプログラム US8793602B2|2014-07-29|System and method for scheduling the execution of model components using model events
同族专利:
公开号 | 公开日 CN101952799B|2013-06-26| WO2009108427A3|2009-11-05| US7860900B2|2010-12-28| EP2260378A4|2012-10-31| US20090216793A1|2009-08-27| CN101952799A|2011-01-19| WO2009108427A2|2009-09-03| EP2260378A2|2010-12-15| JP5129351B2|2013-01-30|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-01-14| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120113 | 2012-01-14| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120113 | 2012-02-03| A871| Explanation of circumstances concerning accelerated examination|Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20120202 | 2012-02-03| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120202 | 2012-02-16| A975| Report on accelerated examination|Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20120215 | 2012-04-04| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120403 | 2012-07-04| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120703 | 2012-09-28| TRDD| Decision of grant or rejection written| 2012-10-03| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121002 | 2012-10-04| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 | 2012-11-08| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121101 | 2012-11-09| R150| Certificate of patent or registration of utility model|Ref document number: 5129351 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2012-11-12| FPAY| Renewal fee payment (event date is renewal date of database)|Free format text: PAYMENT UNTIL: 20151109 Year of fee payment: 3 | 2015-04-15| S111| Request for change of ownership or part of ownership|Free format text: JAPANESE INTERMEDIATE CODE: R313113 | 2015-04-23| R350| Written notification of registration of transfer|Free format text: JAPANESE INTERMEDIATE CODE: R350 | 2015-11-10| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2016-11-01| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2017-11-07| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2018-11-06| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2019-11-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2020-10-30| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2021-10-29| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|