(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-21
(54)【発明の名称】共有レコードのクライアント更新にルールの適用によるシステム生成更新のトリガ
(51)【国際特許分類】
G06F 16/23 20190101AFI20221114BHJP
【FI】
G06F16/23
【審査請求】未請求
【予備審査請求】有
(21)【出願番号】P 2022516748
(86)(22)【出願日】2020-07-09
(85)【翻訳文提出日】2022-05-13
(86)【国際出願番号】 US2020041385
(87)【国際公開番号】W WO2021055078
(87)【国際公開日】2021-03-25
(32)【優先日】2019-09-16
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】コンリー,ディラン
(72)【発明者】
【氏名】ブル・ピーター
(72)【発明者】
【氏名】ウィルキンス,ジェフリー・チャールズ
(72)【発明者】
【氏名】ラスムッセン,カーク・ウォーレン
(72)【発明者】
【氏名】キャンベル,ジョセフ・アーサー
(72)【発明者】
【氏名】トーソン,ジョシュア・エドワード
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA02
5B175CA09
(57)【要約】
複数のクライアントが同時アクセス権および編集権を有する共有データレコードを管理するための技術が開示される。共有データレコードが変更されると、共有データレコードの現在バージョンを各クライアントに提供するように、この変更を、共有データレコードに現在アクセスしている全てのクライアントに送信する。しかしながら、最新データレコードを各クライアントに送信する前に、いくつかのルールを最新データレコードに適用することによって、追加の変更を引き起こす可能性がある。したがって、このような要求ルールベースの変更に応答して、最新の共有データレコードを、共有データレコードにアクセス権を有する各クライアントに提供する。この共有データレコードは、クライアントのうち、1つのクライアントからの変更要求、共有データレコードに適用されるルール、または更新を引き起こす他のトリガに応答して、更新されてもよい。
【特許請求の範囲】
【請求項1】
1つ以上のハードウェアプロセッサによって実行されると、以下の動作を実行させる命令を含む非一時的なコンピュータ可読媒体であって、
前記動作は、
第1のクライアントから、共有データレコードに対する第1の更新を含む変更要求を受信することを含み、前記共有データレコードは、前記第1のクライアントを含む複数のクライアントによってアクセス可能であり、
少なくとも前記第1の更新を前記共有データレコードに適用することによって、第1の修正データレコードを作成することと、
前記第1の修正データレコードに1つ以上のルールを適用することによって、(a)前記第1の更新を適用するために必要とされるが、(b)前記複数のクライアントのいずれかにも要求されていない前記共有データレコードの第2の更新を決定することと、
前記第2の更新を前記第1の修正データレコードに適用することによって、第2の修正データレコードを作成することと、
前記第2の修正データレコードを前記第1のクライアントに送信することとを含む、媒体。
【請求項2】
前記第1の修正データレコードを作成することは、
前記第1の更新と、前記複数のクライアントのうち、少なくとも1つの他のクライアントによって提出された前記共有データレコードに対する任意の未解決更新とを統合することによって、統合更新を作成することと、
前記統合更新を前記共有データレコードに適用することによって、前記第1の修正データレコードを作成することとを含む、請求項1に記載の媒体。
【請求項3】
前記共有データレコードに対する前記未解決更新は、共通台帳から取得され、
前記共通台帳は、前記複数のクライアントの各特定のクライアントによってアクセスされているバージョンの前記共有データレコードに対して、前記特定のクライアントによって行われた更新のログを記憶する、請求項2に記載の媒体。
【請求項4】
前記共有データレコードに対する前記未解決更新は、クライアントキャッシュから取得され、
前記クライアントキャッシュは、前記第1のクライアントによって前記共有データレコードに対して行われた全ての更新を含む一覧表と、前記第1のクライアントによってアクセスされている前記共有データレコードの現在バージョンを示す指標とを記憶する、請求項2に記載の媒体。
【請求項5】
前記1つ以上のルールを適用することは、要求された構成の実行可能性を判断すること、価格を計算すること、在庫を計算すること、製品を構成すること、および複数の価格計算に基づいて構成済み製品の見積もりを決定することを含む動作グループから選択された動作を含む、請求項1に記載の媒体。
【請求項6】
前記動作は、
第2のクライアントから、前記共有データレコードに対する更新要求を受信することと、
前記第2の修正データレコードと、前記第2のクライアントによってアクセスされている前記共有データレコードの第2のバージョンとの間の第2組の差分を決定することと、
前記第2組の差分を前記第2のクライアントに送信することとをさらに含む、請求項1に記載の媒体。
【請求項7】
前記共有データレコードは、前記複数のクライアントのうち、2つ以上のクライアントによって同時にアクセスされ、
前記複数のクライアントの各特定のクライアントは、前記共有データレコードに対する編集権を有する、請求項1に記載の媒体。
【請求項8】
前記第1の修正データレコードを作成することは、前記複数のクライアントのうち、第2のクライアントによって要求された保留中更新を適用することを含む、請求項1に記載の媒体。
【請求項9】
前記共有データレコードは、前記複数のクライアントのうち、2つ以上のクライアントによって同時にアクセスされ、
前記複数のクライアントの各特定のクライアントは、前記共有データレコードに対する編集権を有し、
前記第1の修正データレコードを作成することは、
前記第1の更新と、前記複数のクライアントのうち、少なくとも1つの他のクライアントによって提出された前記共有データレコードに対する任意の未解決更新とを統合することによって、統合更新を作成することと、
前記統合更新を前記共有データレコードに適用することによって、前記第1の修正データレコードを作成することとを含み、
前記共有データレコードに対する前記未解決更新は、共通台帳またはクライアントキャッシュから取得され、
前記共通台帳は、前記複数のクライアントの各特定のクライアントによってアクセスされているバージョンの前記共有データレコードに対して、前記特定のクライアントによって行われた更新のログを記憶し、
前記クライアントキャッシュは、前記第1のクライアントによって前記共有データレコードに対して行われた全ての更新を含む一覧表と、前記第1のクライアントによってアクセスされている前記共有データレコードの現在バージョンを示す指標とを記憶し、
前記1つ以上のルールを適用することは、要求された構成の実行可能性を判断すること、価格を計算すること、在庫を計算すること、製品を構成すること、および複数の価格計算に基づいて構成済み製品の見積もりを決定することを含む動作グループから選択された動作を含み、
前記動作は、
第2のクライアントから、前記共有データレコードに対する第3の更新を含む第2の変更要求を受信することと、
少なくとも前記第3の更新を前記共有データレコードに適用することによって、第3の修正データレコードを作成することと、
前記第3の修正データレコードに前記1つ以上のルールを適用することによって、(a)少なくとも前記第3の更新を適用するために必要とされるが、(b)前記複数のクライアントいずれかにも要求されていない第4の更新を決定することと、
前記第2のクライアントによってアクセスされている前記共有データレコードの第2のバージョンと、前記第4の修正データレコードとの間の第2組の差分を決定することと、
前記第2組の差分を前記第2のクライアントに送信することとをさらに含む、請求項1に記載の媒体。
【請求項10】
システムであって、
1つ以上のハードウェアプロセッサと、
命令を含む非一時的なコンピュータ可読媒体とを備え、前記命令は、前記1つ以上のハードウェアプロセッサによって実行されると、以下の動作を実行させ、
前記動作は、
第1のクライアントから、共有データレコードに対する更新要求を受信することを含み、前記共有データレコードは、前記第1のクライアントを含む複数のクライアントによってアクセス可能であり、
保留中変更を前記共有データレコードに適用することによって、第1の修正データレコードを作成することと、
前記第1の修正データレコードに1つ以上のルールを適用することによって、(a)少なくとも前記保留中変更を適用するために必要とされるが、(b)前記複数のクライアントのいずれかにも要求されていない第1組の1つ以上の変更を決定することと、
前記第1組の1つ以上の変更を前記第1の修正データレコードに適用することによって、第2の修正データレコードを作成することと、
前記第1のクライアントによってアクセスされている前記共有データレコードの第1のバージョンと、前記第2の修正データレコードとの間の一組の差分を決定することと、
前記第2の修正データレコードを前記第1のクライアントに送信することとを含む、システム。
【請求項11】
前記更新要求は、前記第1のクライアントからの変更要求を含み、
前記変更要求は、前記共有データレコードの前記第1のバージョンに対する第2組の1つ以上の変更を含む、請求項10に記載のシステム。
【請求項12】
前記第1の修正データレコードを作成することは、
前記第2組の1つ以上の変更と、前記複数のクライアントのうち、少なくとも1つの他のクライアントによって提出された前記共有データレコードに対する任意の未解決変更とを統合することによって、一組の統合変更を作成することと、
前記一組の統合変更を前記共有データレコードに適用することによって、前記第1の修正データレコードを作成することとを含む、請求項11に記載のシステム。
【請求項13】
前記共有データレコードに対する前記未解決変更は、共通台帳から取得され、
前記共通台帳は、前記複数のクライアントの各特定のクライアントによってアクセスされているバージョンの前記共有データレコードに対して、前記特定のクライアントによって行われた変更のログを記憶する、請求項12に記載のシステム。
【請求項14】
前記共有データレコードに対する前記未解決変更は、クライアントキャッシュから取得され、
前記クライアントキャッシュは、前記第1のクライアントによって前記共有データレコードに対して行われた全ての変更を含む一覧表と、前記第1のクライアントによってアクセスされている前記共有データレコードの現在バージョンを示す指標とを記憶する、請求項12に記載のシステム。
【請求項15】
前記1つ以上のルールを適用することは、要求された構成の実行可能性を判断すること、価格を計算すること、在庫を計算すること、製品を構成すること、および複数の価格計算に基づいて構成済み製品の見積もりを決定することからなる動作グループから選択された動作を含む、請求項10に記載のシステム。
【請求項16】
前記動作は、
第2のクライアントから、前記共有データレコードに対する更新要求を受信することと、
前記第2の修正データレコードと、前記第2のクライアントによってアクセスされている前記共有データレコードの第2のバージョンとの間の第2組の差分を決定することと、
前記第2組の差分を前記第2のクライアントに送信することとをさらに含む、請求項10に記載のシステム。
【請求項17】
前記共有データレコードは、前記複数のクライアントのうち、2つ以上のクライアントによって同時にアクセスされ、
前記複数のクライアントの各特定のクライアントは、前記共有データレコードに対する編集権を有する、請求項10に記載のシステム。
【請求項18】
前記動作は、
第2のクライアントから、前記共有データレコードに対する第3の更新を含む要求を受信することと、
少なくとも前記第3の更新を前記共有データレコードに適用することによって、第3の修正データレコードを作成することと、
前記第3の修正データレコードに前記1つ以上のルールを適用することによって、(a)少なくとも前記第3の更新を適用するために必要とされるが、(b)前記複数のクライアントいずれかにも要求されていない第4の更新を決定することと、
前記第2のクライアントによってアクセスされている前記共有データレコードの第2のバージョンと、前記第4の修正データレコードとの間の第2組の差分を決定することと、
前記第2組の差分を前記第2のクライアントに送信することとをさらに含む、請求項10に記載のシステム。
【請求項19】
前記第1の修正データレコードを作成することは、前記複数のクライアントのうち、第2のクライアントによって要求された保留中更新を適用することを含む、請求項10に記載のシステム。
【請求項20】
方法であって、
第1のクライアントから、共有データレコードに対する第1の更新を含む変更要求を受信することを含み、前記共有データレコードは、前記第1のクライアントを含む複数のクライアントによってアクセス可能であり、
少なくとも前記第1の更新を前記共有データレコードに適用することによって、第1の修正データレコードを作成することと、
前記第1の修正データレコードに1つ以上のルールを適用することによって、(a)前記第1の更新を適用するために必要とされるが、(b)前記複数のクライアントのいずれかにも要求されていない前記共有データレコードの第2の更新を決定することと、
前記第2の更新を前記第1の修正データレコードに適用することによって、第2の修正データレコードを作成することと、
前記第2の修正データレコードを前記第1のクライアントに送信することとを含み、
前記方法は、ハードウェアプロセッサを含む少なくとも1つの装置によって実行される、方法。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、複数のユーザ入力に基づいて、単一のレコードの変化を記録および表示することに関する。特に、本開示は、ルールを、複数のユーザからの共有レコードに対する変更に適用することによって、共有レコードに対するシステム生成更新をトリガすることに関する。
【背景技術】
【0002】
背景
2人以上のユーザが文書またはデータレコードを共有および変更することを可能にするために、ソフトウェアプロバイダは、一般的には、データレコードの編集を制御するための3つの手法のうち、いずれか1つに依存する。第1の手法は、1人のユーザがデータレコードをロックすることによってデータレコードに対する編集を行うことを可能にすると共に、他の全てのユーザが、所望の変更を適用するために、待ち行列に入って各々の順番が来るまで待たなければならないロック制限を利用する。この場合、特定の時間において1人のユーザしかデータレコードを編集できないため、変更を順番的に適用する必要がある。
【0003】
第2の手法は、データレコードに対する任意の競合変更を合併する前に手動競合解決を実行するチェックアウトおよびチェックイン制限を利用する。第3の手法は、一般的に単純な文書協調に使用され、データ変換を利用してデータレコードのビューを同期させる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このセクションに記載された手法は、達成され得る手法であるが、必ずしもこれまでに想到され得るまたは達成され得る手法であるとは限らない。したがって、別段の指示がない限り、本項に記載された手法のいずれも、単にこのセクションに含まれるというだけで、先行技術として適格であると想定されるべきではない。
【0005】
実施形態は、例示として示され、添付の図面によって限定されない。なお、本開示において、「ある」または「1つの」実施形態を言及する場合、必ずしも同一の実施形態を指すではなく、少なくとも1つの実施形態を意味する。
【図面の簡単な説明】
【0006】
【
図1】1つ以上の実施形態に従った協調データ管理システムを示す図である。
【
図2】1つ以上の実施形態に従った協調データ管理システムを示す別の図である。
【
図3】1つ以上の実施形態に従った協調データ管理システムの機能ブロックを示す図である。
【
図4】1つ以上の実施形態に従って、トリガの検出に基づいて、更新を共有データレコードに提供するための例示的な方法を示す図である。
【
図5】1つ以上の実施形態に従って、クライアントから要求を受信したことに基づいて、共有データレコードの差分を提供するための例示的な方法を示す図である。
【
図6】1つ以上の実施形態に従って、クライアントから変更要求を受信したことに基づいて、共有データレコードの差分を提供するための例示的な方法を示す図である。
【
図7】1つ以上の実施形態に従ったコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0007】
詳細な説明
以下の記載において、説明の目的のために、多数の具体的な詳細を記載することによって、完全な理解を提供する。これらの具体的な詳細なくても、1つ以上の実施形態を実施することができる。一実施形態に記載された特徴は、別の実施形態に記載された特徴と併用されてもよい。いくつかの例において、本発明を不必要に曖昧にしないように、ブロック図を参照して周知の構造および装置を説明する。
【0008】
1.全体の概要
2.システムアーキテクチャ
2.1 データレコード管理サーバ
2.2 複数のクライアント間の協調データレコード管理
3.共有データレコードの協調データレコード管理
3.1 更新/変更要求の受信
3.2 保留中変更の解決
3.3 変更の統合
3.4 共有データレコードに特定のルールの適用
3.5 共有データレコードにアクセスしている特定のクライアントに更新の中継
4.例示的な実施形態
4.1 更新要求に基づいて最新共有データレコードの提供
4.2 変更要求に基づいて共有データレコードを更新するための差分の提供
5.コンピュータネットワークおよびクラウドネットワーク
6.その他、拡張
7.ハードウェアの概要
1.全体の概要
1つ以上の実施形態は、一組のクライアントのうち、各クライアントによってアクセス可能な共有レコードに対して、システム生成更新を決定および適用する。システムは、(a)共有レコードにアクセスできる一組のクライアントのいずれかによって要求されていないが、(b)少なくとも1つのクライアント要求更新に対してルールを適用することによってトリガされる共有レコードの更新を決定する。システムは、クライアント要求更新を組み込む修正レコードにルールを適用することができる。代替的にまたは追加的に、システムは、クライアント要求更新のスタンドアロンバージョンにルールを適用することができる。システムは、クライアント要求更新とシステム生成更新との両方を組み込む最終的な修正レコードを、一組のクライアントのうち、1つ以上のクライアントに配信する。最終的な修正レコードは、共通台帳に記憶された保留中変更をさらに組み込むことができる。最終的な修正レコードをクライアントに配信することは、クライアントにアクセス可能な共有レコードのバージョンからの一組の差分を配信することを含んでもよい。代替的にまたは追加的に、最終的な修正レコードを配信することは、最終的な修正レコードの全体を配信することを含んでもよい。
【0009】
本明細書に記載され、および/または特許請求の範囲に列挙された1つ以上の実施形態は、この全体の概要に含まれなくてもよい。
【0010】
2.システムアーキテクチャ
2.1 データレコード管理サーバ
図1は、1つ以上の実施形態に従ったシステム100を示す。
図1に示すように、システム100は、データレコード管理サーバ124と通信するクライアント102を含む。データレコード管理サーバ124は、変更統合エンジン106およびクライアントレコード比較エンジン114を含むいくつかのコンポーネントを含む。データレコード管理サーバ124は、コンピュータ可読記憶媒体に記憶されたデータリポジトリ(DB)118、共通台帳120およびクライアントキャッシュ116と通信するように構成される。これらのコンポーネントは、様々の方法でシステム100内のデータレコード管理サーバ124にまたは別個のコンポーネントに組み込まれてもよい。1つ以上の実施形態において、システム100は、
図1に示されたコンポーネントよりも多いまたは少ないコンポーネントを含んでもよい。
図1に示されたコンポーネントは、互いに局所的または遠隔的なものであってもよい。
図1に示されたコンポーネントは、ソフトウェアおよび/またはハードウェアで実装されてもよい。各コンポーネントは、複数のアプリケーションおよび/またはマシンに分散されてもよい。複数のコンポーネントは、1つのアプリケーションおよび/またはマシンに合併されてもよい。1つのコンポーネントに関して説明される動作は、別のコンポーネントによって実行されてもよく、または複数のコンポーネントの間に共有されてもよい。
【0011】
図1の様々なコンポーネント間の通信に使用され得るコンピュータネットワークに関する追加の実施形態および/または例は、以下のセクション5「コンピュータネットワークおよびクラウドネットワーク」に説明される。
【0012】
1つ以上の実施形態において、データリポジトリ118は、データを記憶するための任意種類の記憶ユニットおよび/または装置(例えば、ファイルシステム、データベース、テーブルの集合、または任意の他の記憶機構)であってもよい。また、データリポジトリ118は、複数の異なる記憶ユニットおよび/または装置を含んでもよい。複数の異なる記憶ユニットおよび/または装置は、同じまたは異なる種類であってもよく、同じまたは異なる物理サイトに配置されてもよい。さらに、データリポジトリ118は、データレコード管理サーバ124またはクライアント102と同じコンピューティングシステム上で実装されてもよく、または実行されてもよい。代替的にまたは追加的に、データリポジトリ118は、データレコード管理サーバ124またはクライアント102とは別個のコンピューティングシステム上で実装されてもよく、または実行されてもよい。データリポジトリ118は、直接接続を介して、無線接続を介して、ネットワークを介して、または当業者にとって明らかである他の接続を介して、データレコード管理サーバ124および/またはクライアント102に通信可能に連結されてもよい。
【0013】
1つ以上の実施形態において、共通台帳120は、データレコード管理サーバ124によって管理されている共有データレコードに対して行われた各変更および/または更新の個別のエントリを記憶するように構成される。共通台帳120は、共有データレコードに対する未解決変更(クライアント102によって閲覧されているバージョンの共有データレコードにまだ反映されていない変更および/または更新)を記憶することができる。一実現例において、共通台帳120は、データレコード管理サーバ124によって管理されている特定の共有データレコードにアクセス権を有する各特定のクライアントによって特定の共有データレコードに行われた変更のログを記憶する。
【0014】
一実施形態において、共通台帳120は、任意の種類のコンピュータ可読記憶媒体および/または記憶装置、例えば、ハードディスクドライブ、光ディスクドライブ、フラッシュメモリ、不揮発性ランダムアクセスメモリ(NVRAM)、パラメータランダムアクセスメモリ(PRAM)、または当技術分野で知られている任意の他の記憶媒体に記憶されてもよい。また、一手法において、共通台帳120は、当業者によって知られているように、任意のフォーマット、データ構造、または階層構成を有してもよい。共通台帳120は、データレコード管理サーバ124、クライアントキャッシュ116、データリポジトリ118、またはクライアント102と同じまたは異なる物理サイトに配置されてもよい。
【0015】
一手法において、共通台帳120は、データレコード管理サーバ124またはクライアント102と同じコンピューティングシステム上で実装されてもよく、または記憶されてもよい。代替的にまたは追加的に、共通台帳120は、データレコード管理サーバ124またはクライアント102とは別個のおよび/または遠隔のコンピューティングシステム上で実装されてもよく、または記憶されてもよい。共通台帳120は、直接接続を介して、無線接続を介して、ネットワークを介して、または当業者にとって明らかである他の接続を介して、データレコード管理サーバ124に通信可能に連結されてもよい。
【0016】
1つ以上の実施形態において、クライアントキャッシュ116は、データレコード管理サーバ124によって管理される各共有データレコードと、クライアント102およびデータレコード管理サーバ124と通信する任意の他のクライアントによってアクセスされる各バージョンの共有データレコードとの間の差分を少なくとも記憶するように構成される。
【0017】
一実施形態において、クライアントキャッシュ116は、クライアント102にアクセス可能な共有データレコードに対する未解決更新および/または変更を記憶することができる。この実施形態において、クライアントキャッシュ116は、クライアント102にアクセス可能な各共有データレコードに対して行われた全ての更新/変更を含む一覧表と、クライアント102にアクセス可能な各共有データレコードの現在バージョンを示す指標とを記憶する。
【0018】
さらなる実施形態において、クライアントキャッシュ116は、クライアント102を含む複数のクライアントにアクセス可能なデータレコード管理サーバ124によって管理される全ての共有データレコードに対する未解決更新および/または変更を記憶するグローバルキャッシュであってもよい。この実施形態において、クライアントキャッシュ116は、複数のクライアントにアクセス可能な各共有データレコードに対して行われた全ての更新/変更を含む一覧表と、複数のクライアントの各々によってアクセスされている各共有データレコードの現在バージョンを示す指標とを記憶する。
【0019】
1つ以上の実施形態において、クライアントキャッシュ116は、任意の種類のコンピュータ可読記憶媒体および/または記憶装置、例えば、ハードディスクドライブ、光ディスクドライブ、フラッシュメモリ、NVRAM、PRAM、または当技術分野で知られている任意の他の記憶媒体に記憶されてもよい。また、一手法において、クライアントキャッシュ116は、当業者によって知られているように、任意のフォーマット、データ構造、または階層構成を有してもよい。クライアントキャッシュ116は、データレコード管理サーバ124、共通台帳120、データリポジトリ118、またはクライアント102と同じまたは異なる物理サイトに配置されてもよい。
【0020】
一手法において、クライアントキャッシュ116は、データレコード管理サーバ124またはクライアント102と同じコンピューティングシステム上で実装されてもよく、または記憶されてもよい。代替的にまたは追加的に、クライアントキャッシュ116は、データレコード管理サーバ124またはクライアント102とは別個のおよび/または遠隔のコンピューティングシステム上で実装されてもよく、または記憶されてもよい。クライアントキャッシュ116は、直接接続を介して、無線接続を介して、ネットワークを介して、または当業者にとって明らかである他の接続を介して、データレコード管理サーバ124に通信可能に連結されてもよい。
【0021】
一実施形態において、データレコード管理サーバ124は、1つ以上のデジタル装置上で実装される。「デジタル装置」という用語は、一般に、プロセッサを含む任意のハードウェア装置を指す。デジタル装置とは、アプリケーションまたは仮想マシンを実行する物理的装置を指してもよい。デジタル装置の例は、コンピュータ、タブレット、ラップトップ、デスクトップ、ネットブック、サーバ、ウェブサーバ、ネットワークポリシーサーバ、プロキシサーバ、汎用マシン、特定機能のハードウェア装置、ハードウェアルータ、ハードウェアスイッチ、ハードウェアファイアウォール、ハードウェアファイアウォール、ハードウェアネットワークアドレストランスレータ(NAT)、ハードウェアロードバランサ、メインフレーム、テレビ、コンテンツ受信機、セットトップボックス、プリンタ、携帯電話機、スマートフォン、携帯情報端末(PDA)、無線受信機および/または送信機、基地局、通信管理装置、ルータ、スイッチ、コントローラ、アクセスポイント、および/またはクライアント装置を含む。代替的な実施形態において、データレコード管理サーバ124は、ハードウェア環境内で動作するソフトウェアコンポーネントとして部分的または完全に実装されてもよい。
【0022】
一実施形態において、上述したように、クライアント102は、1つ以上のデジタル装置上で実装される。代替的な実施形態において、クライアント102は、ハードウェア環境内で実行するソフトウェアコンポーネントとして部分的または完全に実装されてもよい。
【0023】
様々な例において、クライアント102は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、サーバ、データレコード管理サーバ124と共に動作する専用のクライアント装置、またはデータレコード管理サーバ124と通信することができる他のハードウェア装置であってもよい。
【0024】
1つ以上の実施形態において、クライアント102とデータレコード管理サーバ124との間の通信を促進するように、ハードウェアおよび/またはソフトウェアでインターフェイスを実装してもよい。インターフェイスは、ユーザインターフェイス要素を提供し、ユーザインターフェイス要素を介して入力を受け入れることができる。インターフェイスの例は、グラフィカルユーザインターフェイス(GUI)、コマンドラインインターフェイス(CLI)、触覚インターフェイス、および音声コマンドインターフェイスを含む。ユーザインターフェイス要素の例は、チェックボックス、ラジオボタン、ドロップダウンリスト、リストボックス、ボタン、トグル、テキストフィールド、日付および時間セレクタ、コマンドライン、スライダ、ページ、およびフォームを含む。
【0025】
一実施形態において、インターフェイスの異なるコンポーネントは、異なる言語で指定されてもよい。各ユーザインターフェイス要素の挙動は、JavaScript(登録商標)などの動的なプログラミング言語で指定されてもよい。ユーザインターフェイス要素の内容は、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、またはXMLユーザインターフェイス言語(XUL)などのマークアップ言語で指定される。また、ユーザインターフェイス要素のレイアウトは、カスケードスタイルシート(CSS)などのスタイルシート言語で指定されてもよい。代替的には、インターフェイスは、Java(登録商標)、CまたはC++などの1つ以上の他の言語で指定されてもよい。
【0026】
一実施形態において、クライアント102は、要求(「REQ」)104をデータレコード管理サーバ124に送信する。一手法において、要求104は、データリポジトリ118に記憶され、データレコード管理サーバ124によって管理される特定の共有データレコードに適用される1つ以上の更新または変更を含む変更要求であってもよい。別の手法において、要求104は、更新バージョンの共有データレコードで応答するようにデータレコード管理サーバ124をトリガするための更新要求であってもよい。
【0027】
別の実施形態によれば、データレコード管理サーバ124は、クライアント102から要求104が送信されなくても、所定のスケジュールに従って、トリガイベント(例えば、別のクライアントが共有データレコードに対する更新/変更を要求すること、装置の起動、ネットワークの変更)に応答して、本明細書に記載された機能を定期的に実行することができる。
【0028】
データレコード管理サーバ124は、要求104の受信に応答して、要求104を変更統合エンジン106に送信する。変更統合エンジン106は、ハードウェアおよび/またはソフトウェアで実装されてもよく、要求104の受信などのトリガイベントに応答して、特定の機能および/またはロジックを実行するように構成される。また、変更統合エンジン106は、クライアントキャッシュ116、共通台帳120、およびデータリポジトリ118と通信するように構成される。
【0029】
一実施形態において、変更統合エンジン106は、クライアント102によってアクセスされているバージョンの共有データレコードと要求104に示された任意の変更との間の第1組の差分を決定する。一手法において、第1組の差分は、要求104に含まれてもよい。当業者によって理解されるように、この差分は、共有データレコードの任意の一部または全体に影響を与える可能性があり、共有データレコードに対する任意の種類の修正、削除、追加、および/または調整を含んでもよい。
【0030】
一実施形態において、変更統合エンジン106は、要求104から要求された任意の更新および/または変更と、他のソースによって要求されたまたは1つ以上のイベントによってトリガされた共有データレコードに適用されていない任意の更新および/または変更とを統合する。他のソースは、共通台帳120およびクライアントキャッシュ116を含んでもよいが、これらに限定されない。
【0031】
共有データレコードにまだ適用されていない更新および/または変更は、保留中更新と呼ばれる。インテリジェントな方法で、これらの保留中更新の全てと、要求104から要求された任意の更新および/または変更とを統合することによって、共有データレコードの統合更新を作成する。この統合更新を共有データレコードに適用すると、保留中の更新および/または変更および要求された更新および/または変更の全ては、共有データレコードに累積的に反映させられ、共有データレコードを最新ものにする。
【0032】
一手法において、以下でより詳細に説明するように、変更統合エンジン106は、統合更新を生成する前に、保留中更新と要求104から要求された更新および/または変更とを単純化することができる。
【0033】
変更統合エンジン106は、統合更新を、クライアント102によってアクセスされているバージョンの共有データレコードに適用することによって、第1の修正データレコード(「RDR1」)108を生成する。一手法において、このバージョンの共有データレコードは、全ての保留中更新と要求104から要求された任意の更新および/または変更とをフルまたは完全なデータレコードとして反映する。第1の修正データレコード108が生成されると、変更統合エンジン106は、さらなる処理のために、第1の修正データレコード108をルール適用エンジン110に送信する。
【0034】
代替的な手法において、変更統合エンジン106は、第1の修正データレコード108と、クライアント102によってアクセスされているバージョンの共有データレコードとの間の差分のみを送信することによって、データを転送する際のリソース使用量を低減することができる。
【0035】
ルール適用エンジン110は、ハードウェアおよび/またはソフトウェアで実装されてもよく、第1の修正データレコード108の受信または第1の修正データレコード108とクライアント102によってアクセスされているバージョンの共有データレコードとの間の差分の受信などのトリガイベントに応答して、特定の機能および/またはロジックを実行するように構成される。また、ルール適用エンジン110は、クライアントレコード比較エンジン114およびデータリポジトリ118と通信するように構成される。
【0036】
ルール適用エンジン110は、(1つ以上のルール、条件、等価性、方程式、演算、プロセスなどを含み得る)一組のルールを第1の修正データレコード108に適用することによって、共有データレコードの第2の更新を決定するように構成される。この第2の更新は、基礎となる元の共有データレコードに対するこれらの変更を説明するためにクライアント102によってアクセスされているバージョンの共有データレコードに対する任意の変更に基づいて予測される。すなわち、第2の更新は、第1の更新を適用するために必要とされる。また、第2の更新の適用は、クライアント102または共有データレコードにアクセス権を有する任意の他のクライアントによって要求されていない。代わりに、ルール適用エンジン110は、第1の修正データレコード108が上述した一組のルールに準拠するか否かを判断する。第1の修正データレコード108が上述した一組のルールに準拠していない場合、ルール適用エンジン110は、第2の更新を生成する。この第2の更新を第1の修正データレコード108に適用すると、第1の修正データレコード108は、上述した一組のルールに準拠させられる。
【0037】
上述した一組のルールは、例えば、第1の修正データレコード108をチェックするための動作、第1の修正データレコード108を操作および/または変更するための動作、第1の修正データレコード108に対する変更を取り消すまたはロールバックするための動作を含んでもよい。いくつかの例示的な動作は、要求された構成の実行可能性を判断すること、価格を計算すること、在庫を計算すること、製品を構成すること、および複数の価格計算に基づいて構成済み製品の見積もりを決定することを含むが、これらに限定されない。
【0038】
上述した一組のルールを第1の修正データレコード108に適用すると(適切である場合)、クライアント102によって共有データレコードに対して行われた変更に起因して第1の修正データレコード108に存在する可能性がある任意の欠陥、誤り、錯誤などを訂正するように、共有データレコードの第2の更新が生成される。ルール適用エンジン110によるルールの適用によって第1の修正データレコード108に対する変更がない場合、この第2の更新は、必要とされない。この場合、ルール適用エンジン110は、第1の修正データレコード108を変更せず、クライアントレコード比較エンジン114に送信する。
【0039】
一例において、共有データレコードは、構成済み製品の見積もりであってもよく、上述した一組のルールは、構成済み製品に基づいた価格設定および見積もり命令を含んでもよく、クライアント102は、特徴を除去するように製品を再構成してもよい。この例において、ルール適用エンジン110によって第1の修正データレコード108に適用される一組のルールは、(除去された特徴の指標を含む)構成済み製品を分析し、第1の修正データレコード108によって記述された、除去された特徴に関連する価格またはコストを除外した構成済み製品の修正総価格を提供することができる。
【0040】
別の例において、共有データレコードは、クライアント102を介して顧客によって指定された複雑なサーバラックシステム構成であってもよく、上述した一組のルールは、共有データレコードによって指定されたコンポーネントおよびオプションが実行可能であり、他の選択と相互運用可能であることを保証するためのサーバラックシステム構成命令を含んでもよい。クライアント102がトップオブラック(ToR)スイッチなどのハードウェアをサーバラックに追加する場合、ルール適用エンジン110によって第1の修正データレコード108に適用される一組のルールは、(追加されたToRスイッチを含む)修正された複雑なサーバラックシステム構成を分析して、全体的なシステム要件および選択された他のコンポーネントに基づいて構成が適切であるか否かを判断することができる。この例において、ルール適用エンジン110は、クライアント102によって選択された特定のToRスイッチモデルを、以前に指定された複合サーバラックシステム構成内の他のコンポーネントと互換性がある異なるToRスイッチモデルに変更し、より適切なToRスイッチを含むように複合サーバラックシステム構成を修正することができる。
【0041】
1つ以上の実施形態において、ルール適用エンジン110は、第2の更新、第1の修正データレコード108、および/または第2の修正データレコード112をデータリポジトリ118に記憶することができる。また、変更統合エンジン106が完全な修正データレコードではなく差分のみをルール適用エンジン110に送信する場合にルールを共有データレコードに適用するために、ルール適用エンジン110は、上述した一組のルールを適用する前に、第1の更新を適用することによって第1の修正データレコード108を生成するために、データリポジトリ118からクライアント102によってアクセスされているバージョンの共有データレコードにアクセスすることができる。
【0042】
第2の更新は、ルール適用エンジン110によって生成されると、第1の修正データレコード108に適用され、第2の修正データレコード(「RDR2」)112を生成する。その後、ルール適用エンジン110は、第2の修正データレコード112をクライアントレコード比較エンジン114に送信する。前述したように、ルールの適用によって第2の更新が必要とされない場合、ルール適用エンジン110は、第1の修正データレコード108をクライアントレコード比較エンジン114に送信する。
【0043】
クライアントレコード比較エンジン114は、ハードウェアおよび/またはソフトウェアで実装されてもよく、トリガイベント、例えば、第1の修正データレコード108の受信または第2の修正データレコード112の受信に応答して、特定の機能および/またはロジックを実行するように構成される。また、クライアントレコード比較エンジン114は、クライアントキャッシュ116およびクライアント102と通信するように構成される。
【0044】
1つ以上の実施形態において、クライアントレコード比較エンジン114は、第2の修正データレコード112と、クライアント102によってアクセスされているバージョンの共有データレコードとを比較することによって、2つのバージョンの共有データレコードの間の差分を決定するように構成される。これらの差分が決定されると、リソースを節約するために、これらの差分を示す応答(「RESP」)122をクライアント102に送信してもよい。
【0045】
クライアントレコード比較エンジン114は、クライアントキャッシュ116から、クライアント102によってアクセスされているバージョンの共有データレコードにアクセスすることができる。クライアントキャッシュ116は、共有データレコードへのアクセスを要求したクライアント102との以前の対話に起因したコピーを記憶している。将来の参照のために、このバージョンの共有データレコードを記憶するまたはそれを示すエントリが、クライアントキャッシュ102に作成される。
【0046】
一実施形態において、クライアントレコード比較エンジン114は、将来の参照のために、第2の修正データレコード112および/または決定された第2の修正データレコード112とクライアント102によってアクセスされているバージョンの共有データレコードとの間の差分を、クライアントキャッシュ116に記憶することができる。
【0047】
別の手法において、クライアント102に送信された応答122は、決定された第2の修正データレコード112とクライアント102によってアクセスされているバージョンの共有データレコードとの間の差分の代わりに、第2の修正データレコード112を含んでもよい。この手法または任意の他の手法において、クライアントレコード比較エンジン114は、将来の参照のために、第2の修正データレコード112をクライアントキャッシュ116に記憶することができる。
【0048】
2.2 複数のクライアント間の協調データレコード管理
図2は、1つ以上の実施形態に従ったシステム200を示す。
図1に関連して上述されたコンポーネントは、
図2に示された別の例示的な環境に実装されてもよい。
図2に示されたシステム200は、複数のクライアント(クライアントA202、クライアントB226、...、クライアントN228)を含み、各クライアントは、データレコード管理サーバ230と通信する。
図2のデータレコード管理サーバ230は、データリポジトリ118および共通台帳120を含むことを除いて、
図1のデータレコード管理サーバ124と同様に構成される。また、データレコード管理サーバ230は、複数のクライアントキャッシュ(クライアントAキャッシュ220、クライアントBキャッシュ222、...、クライアントNキャッシュ224)を含む。しかしながら、これらのコンポーネントは、データレコード管理サーバ230に含まれる必要はなく、1つ以上の実施形態では別個のコンポーネントであってもよい。
【0049】
各共有データレコードは、複数のクライアントのうち、2つ以上のクライアントによって同時にアクセスされてもよく、複数のクライアントのうち、各特定のクライアントは、データレコード管理サーバ230によってホストされている1つ以上の共有データレコードの編集権を有する。
【0050】
一実施形態において、様々なクライアントキャッシュの各々(例えば、クライアントAキャッシュ220、クライアントBキャッシュ222、...、クライアントNキャッシュ224)は、各クライアントのために、少なくとも、データレコード管理サーバ230によって管理されている共有データレコードと、特定のクライアント(例えば、クライアントA202、クライアントB226、...、クライアントN228)によってアクセスされているバージョンの共有データレコードとの間の差分を個別に記憶することができる。
【0051】
この実施形態において、各クライアントに指定された各クライアントキャッシュは、各クライアントにアクセス可能な共有データレコードに対する未解決更新および/または変更を記憶することができる(例えば、クライアントAキャッシュ220は、クライアントA202の未解決更新および/または変更を記憶する)。この実施形態において、クライアントAキャッシュ220は、クライアントA202にアクセス可能な各共有データレコードに対して行われた全ての更新/変更を含む一覧表と、クライアントA202によってアクセスされている各共有データレコードの各現在バージョンを示す指標とを記憶する。
【0052】
代替的な実施形態において、単一のグローバルクライアントキャッシュが、
図2に示す様々なクライアントキャッシュの機能を提供することができる。
【0053】
1つ以上の実施形態において、各クライアントキャッシュは、任意の種類のコンピュータ可読記憶媒体および/または記憶装置、例えば、ハードディスクドライブ、光ディスクドライブ、フラッシュメモリ、NVRAM、PRAM、または当技術分野で知られている任意の他の記憶媒体に記憶されてもよい。また、一手法において、クライアントキャッシュは、当業者によって知られているように、任意のフォーマット、データ構造、または階層構成を有してもよい。
【0054】
一実施形態において、1つ以上のクライアントキャッシュ(例えば、クライアントAキャッシュ220、クライアントBキャッシュ222、...、クライアントNキャッシュ224)は、データレコード管理サーバ230、共通台帳120、データリポジトリ118、または様々なクライアント(例えば、クライアントA202、クライアントB226、...、クライアントN228)と同じ物理サイトに配置されてもよい。また、一実施形態において、1つ以上のクライアントキャッシュ(例えば、クライアントAキャッシュ220、クライアントBキャッシュ222、...、クライアントNキャッシュ224)は、データレコード管理サーバ230、共通台帳120、データリポジトリ118、または様々なクライアント(例えば、クライアントA202、クライアントB226、...、クライアントN228)と同じ物理サイトに配置されなくてもよい。
【0055】
図2に示され、説明されたコンポーネントのいずれかは、様々な手法で、データレコード管理サーバ230に組み込まれてもよく、またはシステム200内の別個のコンポーネントとして動作してもよい。
【0056】
1つ以上の実施形態において、システム200は、
図2に示されたコンポーネントよりも多いまたは少ないコンポーネントを含んでもよい。
図2に示されたコンポーネントは、互いに局所的または遠隔的なものであってもよい。
図2に示されたコンポーネントは、ソフトウェアおよび/またはハードウェアで実装されてもよい。各コンポーネントは、複数のアプリケーションおよび/またはマシンに分散されてもよい。複数のコンポーネントは、1つのアプリケーションおよび/またはマシンに合併されてもよい。1つのコンポーネントに関して説明される動作は、別のコンポーネントによって実行されてもよく、または複数のコンポーネントの間に共有されてもよい。
【0057】
図2の様々なコンポーネント間の通信に使用され得るコンピュータネットワークに関する追加の実施形態および/または例は、以下のセクション5「コンピュータネットワークおよびクラウドネットワーク」に説明される。
【0058】
一実施形態において、データレコード管理サーバ230は、1つ以上のデジタル装置上で実装される。代替的な実施形態において、データレコード管理サーバ230は、ハードウェア環境内で動作するソフトウェアコンポーネントとして部分的または完全に実装されてもよい。
【0059】
一実施形態において、上述したように、複数のクライアントのうち、1つ以上のクライアント(例えば、クライアントA202)は、1つ以上のデジタル装置上で実装されてもよい。代替的な実施形態において、クライアントA202(または任意の他のクライアント)は、ハードウェア環境内で実行するソフトウェアコンポーネントとして部分的または完全に実装されてもよい。
【0060】
1つ以上の実施形態において、複数のクライアントとデータレコード管理サーバ230との間の通信を促進するように、ハードウェアおよび/またはソフトウェアでインターフェイスを実装してもよい。
【0061】
データレコード管理サーバ230は、イベントキュー206を含み、このイベントキュー206は、複数のクライアントから要求を受信し、様々な要求を記憶し、いくつかの所定の方式に従って、例えば、受信した順序、先入れ先出し(FIFO)、先入れ後出し(FILO)、または後入れ先出し(LIFO)に従って、または要求によって指定されたもしくはイベントキュー206によって決定された優先度に従って、要求を変更統合エンジン106に配信するように構成されている。当業者には明らかであるように、受信した要求を中継するための順序を決定するための任意の方法、技法、または方式は、イベントキュー206に採用されてもよい。
【0062】
一実施形態において、イベントキュー206は、複数のクライアントからの要求を共通台帳120に送信することができる。これによって、共通台帳120は、将来の参照のために、要求またはその一部(例えば、データレコード間の差分、要求された更新/変更)を記憶することができる。
【0063】
1つ以上の実施形態において、イベントキュー206は、任意の種類のコンピュータ可読記憶媒体および/または記憶装置、例えば、ハードディスクドライブ、光ディスクドライブ、フラッシュメモリ、NVRAM、PRAM、または当技術分野で知られている任意の他の記憶媒体に記憶されてもよい。また、一手法において、イベントキュー206は、当業者によって知られているように、任意のフォーマット、データ構造、または階層構成を有してもよい。
【0064】
クライアントが変更要求を送信する場合、例えばクライアントA202が変更要求(「REQ」)204をデータレコード管理サーバ230に送信する場合、この要求204は、イベントキュー206に入れられる。
図1を参照して説明したように、この要求は、イベントキュー206に採用された方式に従って(または方式が存在しない場合、受信した順序に従って)、処理のために変更統合エンジン106に提供される。
【0065】
図2に示すように、変更統合エンジン106は、クライアントA202からの要求204内の更新/変更に基づいて、第1の更新を生成し、第1の更新をクライアントA202によってアクセスされているバージョンの共有データレコードに適用することによって、第1の修正データレコード(「RDR1」)208を生成する。様々な手法において、クライアントA202によってアクセスされているバージョンの共有データレコードは、要求204に含まれてもよく、データリポジトリ118から検索されてもよく、クライアントAキャッシュ220から検索されてもよく、および/または共通台帳120から検索されてもよい。
図1を参照して説明したように、変更統合エンジン106は、さらなる処理のために、第1の修正データレコード208をルール適用エンジン110に送信する。
【0066】
再び
図2を参照して、代替的な手法において、変更統合エンジン106は、第1の修正データレコード208と、クライアントA202によってアクセスされているバージョンの共有データレコードとの間の差分のみをルール適用エンジン110に送信することによって、データを転送する際のリソース使用量を低減することができる。
【0067】
ルール適用エンジン110は、(1つ以上のルール、条件、等価性、方程式、演算、プロセスなどを含み得る)一組のルールを第1の修正データレコード208に適用することによって、共有データレコードの第2の更新210を決定するように構成される。第2の更新210は、基礎となる元の共有データレコードに対するこれらの変更を説明するためにクライアントA202によってアクセスされているバージョンの共有データレコードに対する任意の変更に基づいて予測される。すなわち、第2の更新210は、第1の更新を適用した結果として必要とされる。また、第2の更新210の適用は、複数のクライアントのうち、クライアントA202または他のクライアント(例えば、クライアントB226、...、クライアントN228)によって要求されていない。代わりに、ルール適用エンジン110は、第1の修正データレコード208が上述した一組のルールに準拠するか否かを判定する。第1の修正データレコード208が上述した一組のルールに準拠していない場合、ルール適用エンジン110は、第2の更新210を生成する。第2の更新210を第1の修正データレコード208に適用すると、第1の修正データレコード208は、上述した一組のルールに準拠させられる。
【0068】
上述した一組のルールが第1の修正データレコード208に適用すると(適切である場合)、クライアントA202による共有データレコードの変更に起因して第1の修正データレコード208に存在する可能性がある任意の欠陥、誤り、錯誤などを訂正するように、共有データレコードの第2の更新210がルールに従って生成され、共有データレコードを更新する。ルール適用エンジン110によるルールの適用によって第1の修正データレコード208に対する変更がないとき、この第2の更新210は、必要とされない。この場合、ルール適用エンジン110は、第1の修正データレコード208を変更せず、第2の修正データレコード214の代わりに第1の修正データレコード208をクライアントレコード比較エンジン114に送信する。
【0069】
ルール適用エンジン110が第2の更新を生成すると、この第2の更新210は、第1の修正データレコード208に適用され、第2の修正データレコード(「RDR2」)214を生成する。
【0070】
また、ルール適用エンジン110は、将来の参照のために、第2の更新210をデータリポジトリ118に記憶するように構成されてもよい。さらなる手法において、ルール適用エンジン110は、第2の更新210の代わりにまたはそれに加えて、第1の修正データレコード208および/または第2の修正データレコード214を記憶することができる。
【0071】
クライアントが共有データレコードに対する更新を要求しているが、いかなる変更も提供していない場合、またはイベントが共有データレコードに対する更新をトリガする(別のクライアントが更新を要求している)場合、ルール適用エンジン110は、データリポジトリ118から、最新バージョンの共有データレコード(「パッチ」)212(または、最新バージョン、例えば第2の更新210をどのように作成するかの指示)を取得し、取得したデータレコードを、要求側クライアントに提供するように構成される。
【0072】
また、ルール適用エンジン110は、第2の修正データレコード214をクライアントレコード比較エンジン114に送信するように構成される。前述したように、ルールの適用によって第2の更新210が必要とされない場合、ルール適用エンジン110は、第1の修正データレコード208をクライアントレコード比較エンジン114に送信する。
【0073】
1つ以上の実施形態において、クライアントレコード比較エンジン114は、第2の修正データレコード214と、クライアントA202によってアクセスされているバージョンの共有データレコードとを比較することによって、2つのバージョンの共有データレコードの間の差分を決定するように構成される。これらの差分が決定されると、リソースを節約するために、これらの差分を示す第1の応答(「RESP1」)216をクライアントA202に送信してもよい。
【0074】
クライアントレコード比較エンジン114は、クライアントキャッシュAキャッシュ220から、クライアントA202によってアクセスされているバージョンの共有データレコードにアクセスすることができる。クライアントキャッシュAキャッシュ220は、クライアントA202が共有データレコードへのアクセスを要求したクライアントA202との以前の対話に起因したコピーを記憶している。将来の参照のために、このバージョンの共有データレコードを記憶するまたはそれを示すエントリが、クライアントAキャッシュ220に作成される。
【0075】
一実施形態において、クライアントレコード比較エンジン114は、将来の参照のために、第2の修正データレコード214および/または決定された第2の修正データレコード214とクライアントA202によってアクセスされているバージョンの共有データレコードとの間の差分を、クライアントAキャッシュ220に記憶することができる。
【0076】
別の手法において、クライアントA202に送信された第1の応答216は、決定された第2の修正データレコード214とクライアントA202によってアクセスされているバージョンの共有データレコードとの間の差分の代わりに、第2の修正データレコード214を含んでもよい。この手法または任意の他の手法において、クライアントレコード比較エンジン114は、将来の参照のために、第2の修正データレコード214をクライアントAキャッシュ220に記憶することができる。
【0077】
他のクライアント、例えばクライアントB226からの要求を処理するときに、変更統合エンジン106は、様々な手法で、クライアントB226によって送信された要求(「REQ」)232から、データリポジトリ118から、クライアントBキャッシュ222から、および/または共通台帳120から、クライアントB226によってアクセスされているバージョンの共有データレコードを検索することができる。要求232は、変更要求、更新要求、またはクライアントB226が、他のクライアントによって行われた更新/変更を基準にして最新なものではない可能性がある共有データレコードにアクセスしていることを示す他の種類もしくは形のメッセージであってもよい。
【0078】
1つ以上の実施形態において、クライアントレコード比較エンジン114は、第2の修正データレコード214と、クライアントB206によってアクセスされているバージョンの共有データレコードとを比較することによって、2つのバージョンの共有データレコードの間の差分を決定するように構成される。これらの差分が決定されると、リソースを節約するために、これらの差分を示す第1の応答(「RESP2」)218をクライアントB206に送信してもよい。
【0079】
クライアントB226からの、最新共有データレコードに対する要求232に応答して、クライアントレコード比較エンジン114は、クライアントBキャッシュ222から、クライアントB226によってアクセスされているバージョンの共有データレコードにアクセスすることができる。クライアントBキャッシュ222は、クライアントB226が共有データレコードへのアクセスを要求したクライアントB226との以前の対話に起因したコピーを記憶している。将来の参照のために、このバージョンの共有データレコードを記憶するまたはそれを示すエントリが、クライアントBキャッシュ222に作成される。1つ以上の実施形態において、クライアントレコード比較エンジン114は、将来の参照のために、第2の修正データレコード214および/または決定された第2の修正データレコード214とクライアントB226によってアクセスされているバージョンの共有データレコードとの間の差分を、クライアントBキャッシュ222に記憶することができる。
【0080】
別の手法において、クライアントB226に送信された第2の応答218は、決定された第2の修正データレコード214とクライアントB226によってアクセスされているバージョンの共有データレコードとの間の差分の代わりに、第2の修正データレコード214を含んでもよい。この手法または任意の他の手法において、クライアントレコード比較エンジン114は、将来の参照のために、第2の修正データレコード214をクライアントBキャッシュ222に記憶することができる。
【0081】
図3は、1つ以上の実施形態に従った協調データレコード管理システム300の機能ブロックを示す。複数のクライアント304は、台帳サービス302のフロントエンドとして機能するイベントキャッシュ配布モジュール306と通信可能に連結される。イベントキャッシュ配布モジュール306は、複数のクライアント304から要求を受信し、受信した要求を1つ以上の台帳310およびビュー状態マシン308にインテリジェントに配布するように構成される。
【0082】
1つ以上の台帳310の各々は、単一の共有データレコードの未解決更新/変更情報を記憶するように構成される。この単一の共有データレコードは、協調データレコード管理システム300によって管理され、複数のクライアント304のうち、少なくとも1つのクライアントによってアクセスおよび修正されてもよい。一手法において、様々な台帳310に記憶されている未解決更新/変更情報は、複数のクライアント304のうち、1つのクライアントによって閲覧/アクセスされている特定のバージョンの共有データレコードにまだ反映されていない変更および/または更新を含む。
【0083】
一実施形態において、台帳310の数は、複数のクライアント304の間に共有されているデータレコードの数にほぼ等しくてもよい。1つ以上の実施形態において、台帳310は、共有データレコードのうち、1つの共有データレコードに対する更新/変更を受信するときに作成されてもよく、協調データレコード管理システム300がこれらの更新/変更を受信および/または識別する前に存在しなくてもよい。別の実施形態において、対応する台帳は、(共有の作成または指示のいずれかによって)対応する共有データレコードが形成される時に作成されてもよい。
【0084】
一実装形態において、各台帳310は、協調データレコード管理サーバ300によって管理される特定の共有データレコードにアクセス権を有する各特定のクライアントによって特定の共有データレコードに対して行われた変更のログを記憶することができる。
【0085】
ビュー状態マシン308は、1つ以上の共有データレコードから、特定のクライアント304が閲覧、アクセス、および/または編集することを許可されているレコードの一部および/または全体を決定および維持するように構成される。換言すれば、ビュー状態マシン308は、1つ以上の台帳310およびイベントキャッシュ配布モジュール306から情報を受信し、各クライアントが現在アクセスしている各共有データレコードの状態を調和させることによって、更新および変更が様々な共有データレコードに行われたときのみ、特定のクライアントにアクセス許可を与えることを保証する。
【0086】
要求応答配布モジュール312は、様々なクライアント304の各々に利用可能な全ての共有データレコードの現在状態を決定するために、台帳310およびビュー状態マシン308から入力を受信する。この情報がソートされると、要求応答配布モジュール312は、複数のクライアント304からの要求と、任意の有用なおよび/または必要な情報(共有データレコードの状態または現在バージョン、異なるクライアントのアクセス権/編集権、または更新/変更)とをサービス層314に転送する。
【0087】
サービス層314において、要求応答配布モジュール312からの情報は、要求ルーティングモジュール316によって受信される。要求ルーティングモジュール316は、様々な情報、例えば、複数のクライアント304のうち、1つのクライアントからの更新/変更要求を送信する場所を判断するように構成される。要求ルーティングモジュール316は、データを共有データキャッシュ320およびクライアント固有ビュー状態キャッシュ318に格納するように構成される。共有データキャッシュ320は、様々な共有データレコードに適用されるルールと、クライアント要求を処理するのに有用な他の情報とを含む。各クライアント固有状態キャッシュ318は、異なるデータレコードのビュー状態、クライアントアクセスおよび編集権などを追跡および記録するクライアント固有情報を記憶する。
【0088】
3.共有データレコードの協調データレコード管理
一実施形態において、協調データレコード管理システム内の各クライアントは、協調データレコード管理システムの多くのクライアントによって共有されている特定のデータレコードにアクセスすることができる。この特定の共有データレコードは、特定の共有データレコードのコピーまたはインスタンスを複数のクライアントに同時に提供するデータレコード管理サーバによって管理されてもよい。
【0089】
3.1 更新/変更要求の受信
一実施形態において、協調データレコード管理システム内の各クライアントは、特定の共有データレコードに適用される更新および/または変更を要求することができる。
【0090】
一手法において、変更要求と呼ばれるこの要求は、1つのクライアントの装置上の特定の共有データレコードに対して行われた変更によってトリガされてもよい。別の手法において、この要求は、クライアントが最新ではない特定のバージョンの共有データレコードを開くおよび/または閲覧することによってトリガされてもよい。このトリガ動作によって、クライアントは、特定の共有データレコードの更新要求と呼ばれるものを送信する。いずれかの場合において、この要求は、データレコード管理サーバによって受信され、要求を送信したクライアントにも関わらず、共有データレコードの現在状態またはバージョンを決定するために使用され得る情報と、送信側クライアントによって要求された任意の更新/変更とを含む。
【0091】
例えば、ユーザは、特定のクライアントで閲覧しているテーブル中のフィールドを削除する可能性がある。データレコード管理サーバは、別のクライアントで最新ではないインスタンスが閲覧/アクセスされているという通知を受けると、他のクライアントによって閲覧および/またはアクセスされているテーブルの全ての他のインスタンスにこのフィールドの削除を伝える。
【0092】
3.2 保留中変更の解決
データレコード管理サーバは、要求、更新および/または変更を受信すると、特定の共有データレコードの保留中更新/変更が存在するか否かを判断する。これらの保留中更新/変更は、1つ以上の他のクライアントによって提出されてもよい。特定の共有データレコードが複数のクライアントによって同時にアクセスされている場合、複数のクライアント上の同じバージョンのデータレコードの間に差分が生じる可能性がある。これらの差分は、経時的に非常に大きくなる可能性があり、長い間に伝播させられる場合、調整が非常に難しくなる可能性がある。
【0093】
したがって、一実施形態において、特定の共有データレコードを開いている各クライアントは、たとえ1つのクライアント上で特定の共有データレコードに対して変更を行っていない場合でも、他のクライアント上で行われた保留中更新/変更を一致させるために、更新要求を送信する。更新要求を受信すると、データレコード管理サーバは、クライアントによって閲覧/アクセスされている特定のバージョンの共有データレコードと、データレコード管理サーバによって管理されている最新バージョンの共有データレコードとの間の差分を含む応答を送信することができる。
【0094】
1つ以上の実施形態において、データレコード管理サーバは、定期的なメッセージを、特定の共有データレコードに現在アクセスしているまたは以前にアクセスした全てのクライアントに送信することができる。これらの定期的なメッセージは、クライアントに固有であり、各クライアントによって閲覧/アクセスされている特定のバージョンの共有データレコードと、データレコード管理サーバによって管理されている最新バージョンの共有データレコードとの間の差分を示す。
【0095】
3.3 変更の統合
1つの手法において、変更統合エンジンは、統合更新を生成する前に、保留中更新および要求から要求された更新および/または変更を単純化することができる。この単純化は、重複する行動および/または動作を除去すること、別の行動および/または動作の実行によって生じた未解決行動および/または動作を除去すること、共有データレコードに対する更新を実行するために必要とされる複数の動作の順序を生成すること、更新を実行する際の処理量および/またはリソース使用量を低減するために動作の順序を並べ替えることを含み得るが、これらに限定されない。
【0096】
一実施形態において、動作の順序は、変更および/または更新を受信した時間、例えば、FIFO、FILO、LIFOなどに基づいて決められてもよい。別の実施形態において、動作の順序は、各動作を実行するために必要とされるリソース使用量に基づいて決められてもよい。例えば、最も少ないリソースを消費する動作は、より多くのリソースを消費する動作の前に実行されてもよく、またはその逆も同様である。別の手法において、動作の順序は、変更および/または更新の所定のまたは暗黙の優先度に基づいて決められてもよい。
【0097】
統合更新は、全ての保留中更新/変更と、特定の共有データレコードの変更要求に示された変更とを統合することによって生成される。作成されたこの統合更新を、変更要求を提出したクライアントによってアクセスされている特定のバージョンの共有データレコードに適用することによって、特定の共有データレコードに対する編集権を有するこの特定のクライアントおよび他の全てのクライアントによって示された全ての更新および変更を適用することができる。
【0098】
3.4 共有データレコードに特定のルールの適用
全ての要求および保留中更新および/または変更を共有データレコードに適用した後、ルール適用エンジンを通過することによって、結果として得られたレコードが特定のルールに準拠することを保証する。ルール適用エンジンは、ルールを適用することによって共有データレコード内の問題を決定し、検出された問題を克服するように構成された共有データレコードに適用され得る更新を生成することができる。
【0099】
ルール適用エンジンによって生成された更新は、保留中変更および要求された変更を統合し、それらを共有データレコードに適用することに必要とされる。また、ルール適用エンジンによって生成された更新は、いずれのクライアントによっても要求されていないが、ルール自体によって指定された共有データレコードに対する変更を引き起こす。このような変更は、共有データレコードに対して行われる変更とは無関係であってもいい。
【0100】
1つの手法において、規則は、要求された構成の実行可能性を判断すること、価格を計算すること、在庫を計算すること、製品を構成すること、および/または複数の価格計算に基づいて構成済み製品の見積もりを決定することに向けられてもよい。
【0101】
これらのルールは、多くの異なるカテゴリにソートされてもよい。各カテゴリは、データレコードの特定の特徴に向けられる。例えば、一部のルールカテゴリは、編成およびフォーマット、構成、価格設定およびコスト、ならびにユーザ許可および権利を含んでもよい。
【0102】
編成およびフォーマット規則は、クライアントがデータレコードに対して望ましくないと思われる変更を行うことから生じる問題を検出および訂正することができる。誤ってまたは偶然に行われる可能性があるいくつかの例示的な変更は、重複エントリ、重要なコンテンツの削除、種類またはスペルが誤ったエントリ、一致しないフォーマット、誤った言語などを含むがこれらに限定されない。これらのエラーは、共通の編成問題およびフォーマット問題をチェックするルールを適用し、このような問題を解決するための既知の解決策を適用することによって、検出および訂正されてもよい。
【0103】
構成ルールは、共有データレコードがいくつかの物品、システム、装置、または製品の構成に向けられるときに、クライアントがデータレコードに変更を行うことによって、誤った、不可能な、または一般的に使用不可能な構成をもたらしたことから生じる問題を検出および訂正することができる。使用不可能な構成をもたらし得るいくつかの例示的な変更は、コンポーネントの不適正な組み合わせの指定(例えば、ナットに対して誤ったサイズのボルトを指定したこと、デスクトップコンピュータに対して携帯電話用バッテリを指定したこと)、システム全体の不適切なコンポーネントの指定(ユニットを駆動できないバッテリを指定したこと、プロセッサを冷却するために充分な空気を移動できないファンを指定したこと)、互換性のないコンポーネントの指定(例えば、標準ナットに対してメートルボルトを指定したこと、AC電力グリッドにDCファンを使用したこと)を含むが、これらに限定されない。これらのエラーは、共通の構成問題をチェックするルールを適用し、このような問題を解決するための既知の解決策を適用することによって、検出および訂正されてもよい。
【0104】
価格設定およびコスト規則は、クライアントがデータレコードに対する変更を行うことによって、コンポーネントの変化をもたらし(それによって、構成された物品、システム、装置、または製品中のコンポーネントのコストを増加または減少させる)、コンポーネントの数の変化をもたらし(それによって、複数のコスト要因を増加または減少させる)、および/または構成された物品、システム、装置、または製品の数の変化をもたらしたことから生じる問題を検出および訂正することができる。これは、典型的な構成-価格-見積もりメカニズムおよびロジックである。このメカニズムおよびロジックによって、各クライアントは、見積もり価格で生産することができる物品、システム、装置、または製品の見積もりを生成するために、構成に対して変更を行うことができ、その後、利用可能な在庫、タイミング要件、コンポーネントの場所などに基づいて価格設定および見積もりがなされる。
【0105】
ユーザ許可および権利ルールは、変更を行うユーザの身分または特定の変更を許可しないシステム設定などに基づいて許可されないデータレコードの変更から生じる問題を検出および訂正することができる。ルールを適用した後に不許可(例えば、変更が許可されず、共有データレコードが前のバージョンに戻されること)をもたらし得るいくつかの例示的な変更は、削除権を有しないユーザが削除を行ったこと、管理権を有しないユーザがデータレコードのフォーマットを変更したこと、組織の第1の部門のクライアントが組織の第2の部門によって所有されるデータレコードを変更しようとすることを含むが、これらに限定されない。これらの無許可変更は、共通のユーザ許可および権利問題をチェックするルールを適用し、このような問題を克服するための既知の解決策を適用することによって、検出および訂正されてもよい。
【0106】
全ての保留中変更および要求された変更を適用した後に共有データレコードに適用されたルールは、上述したカテゴリに限定されず、ルール適用エンジンのアーキテクチャに応じて、考えられる任意の種類のルール、アルゴリズム、計算、および演算を最新データレコードに適用することができる。
【0107】
3.5 共有データレコードにアクセスしている特定のクライアントに更新の中継
1つのクライアントが特定の共有データレコードにアクセスしている間、他のクライアントは、特定の共有データレコードに対する更新/変更を生成することができる。また、ルール適用エンジンによって適用されたルールを修正することによって、特定の共有データレコードに必要とされる更新を生成することができる。
【0108】
一実施形態において、アクセス権を有する全てのクライアントの間に特定の共有データレコードの整合性を維持するために、特定の共有データレコードに活発にアクセスしている各クライアントに周期的な更新を送信してもよい。別の実施形態において、特定の共有データレコードとの現在の活動に関わらず、特定の共有データレコードにアクセス権を有する全てのクライアントに周期的な更新を送信してもよい。別の実施形態によれば、データレコード管理サーバに接続されている各クライアントに、データレコード管理サーバによって管理されている各共有データレコードの周期的な更新を送信してもよい。
【0109】
しかしながら、処理リソースおよび伝送リソースの使用量を最小限に抑えるために、一実施形態において、更新要求または変更要求を送信したクライアントのみが、任意の所定の時間で特定のクライアントによってアクセスされている特定のバージョンの共有データレコードを更新するために必要な情報を受信する。他のクライアントが要求を送信していないため、これらのクライアントは、この特定の共有データレコードを使用していないと考えられる。また、特定の共有データレコードがいずれかのクライアントによって開かれるおよび/またはアクセスされる場合、この行動は、更新要求をデータレコード管理サーバに送信することをトリガする。これによって、特定の共有データレコードは、自動的に更新される。
【0110】
4.例示的な実施形態
明確にするために、以下に詳細な実施例を説明する。以下に説明されるコンポーネントおよび/または動作は、特定の実施形態に適用できない具体例として理解されるべきである。したがって、以下に説明されるコンポーネントおよび/または動作は、特許請求の範囲を限定するものとして解釈されるべきではない。
【0111】
4.1 トリガに基づいて共有データレコードに更新の提供
図4は、1つ以上の実施形態に従って、トリガの検出に基づいて共有データレコードに更新を提供するための例示的な方法400を示す。
図4に示された1つ以上の動作は、共に変更され、再配置されまたは省略されてもよい。したがって、
図4に示された動作の特定の順序は、1つ以上の実施形態の範囲を限定するものとして解釈されるべきではない。
【0112】
動作402において、共有データレコードを更新するための1つ以上のトリガイベントを検出してもよい。トリガイベントの検出に応答して、方法400は、動作404に進む。そうでない場合、方法400は、動作402で1つのトリガイベントの検出を待ち続ける。
【0113】
トリガイベントは、共有データレコードを更新させるものに対応するおよび/または共有データレコードを更新させるものである。トリガイベントは、方法400を開始するための任意の好適な形態、検出可能な条件、状態、および/またはプロンプトをとることができる。いくつかの例示的なトリガイベントは、クライアントが共有データレコードに対する更新/変更を要求すること、クライアントが共有データレコードへのアクセス、装置の起動、装置の停止および/または休止/スリープ、ネットワークへの変更、協調データレコード管理システム内の装置の追加または除去を要求すること、クライアントが共有データレコードに対する更新/変更を受信すること、データレコードを開くこと、データレコードを記憶することを含むが、これらに限定されない。
【0114】
トリガイベントが満たされていることを検出することは、このような検出を行うことができる任意の装置によって実行されてもよい。このような装置は、共同データレコード管理システム内のクライアントのうちの1つのクライアント、共同データレコード管理サーバ、共通台帳を含むが、これらに限定されない。
【0115】
動作404において、トリガイベントの検出によって、少なくとも1つの更新および/または変更を共有データレコードに適用する。一手法において、更新/変更は、協調データレコード管理システム内の1つのクライアントから受信した変更要求に含まれてもよい。また、更新/変更は、協調データレコード管理システムの1つのコンポーネントによって提供され、1つのクライアントが共有データレコードにアクセスするときに共有データレコードに適用されてもよい。
【0116】
1つの手法において、共有データレコードに対する更新/変更は、共通台帳から取得されてもよい。共通台帳は、複数のクライアントの各特定のクライアントによってアクセスされているバージョンの共有データレコードに対して、特定のクライアントによって行われた更新のログを記憶する。
【0117】
一実装形態において、共有データレコードに対する更新/変更は、クライアントキャッシュから取得されてもよい。クライアントキャッシュは、要求側クライアントによって共有データレコードに対して行われた全ての更新を含む一覧表と、要求側クライアントによってアクセスされている共有データレコードの現在バージョンを示す指標とを記憶する。
【0118】
動作406において、更新/変更を適用した後、協調データレコード管理システムに固有のルールを共有データレコードに適用することによって、共有データレコードの更新を生成する。このルールベースの更新は、クライアントによって要求された以前の更新/変更を適用するために要求および/または指定されるが、協調データレコード管理システムのいずれかのクライアントに要求されていない。
【0119】
これらの規則は、特定の種類のデータレコードに向けられてもよく、要求側クライアントによって共有データレコードに対して行われた以前の更新/変更に特有であってもよい。共同データレコード管理システムのアーキテクチャに応じて、任意の種類の業務手続、編成、フォーマット、価格設定、コスト分析、在庫、計算、アルゴリズム、および/または演算は、適用されたルールに含まれてもよい。
【0120】
また、多くの異なる組のルールが存在してもよい。そのうち、第1組のルールは、1種類のデータレコード(例えば、動作情報ログ、センサデータ、生産および出力レコード)に適用され、第2組のルールは、第2種類のデータレコード(例えば、ワード処理文書、スプレッドシート)に適用される。
【0121】
動作408において、ルールベースの更新を共有データレコードに適用する。ルールの適用が共有データレコードに対してさらなる更新を引き起こさない場合、動作408では更新を適用しない。
【0122】
動作410において、メッセージを、共有データレコードにアクセス権を有するクライアントのうち、少なくとも1つのクライアントに送信する。このメッセージは、更新、最新データレコード、またはその両方を含む。クライアントは、共有データレコードの現在のビューを最新にするために以前に使用されていた任意のバージョンの代わりに、最新データレコードを利用することができる。
【0123】
更新のみが送信された場合、クライアントは、更新を用いて、ローカルに記憶されたバージョンの共有データレコードを修正することによって、共有データレコードを、ルールの適用によって生じた最新の変更を有する最新ものにすることができる。
【0124】
4.2 更新要求に基づいて共有データレコードを更新するための差分の提供
図5は、1つ以上の実施形態に従って、クライアントからの要求の受信に基づいて共有データレコードの差を提供するための例示的な方法500を示す。
図5に示された1つ以上の動作は、共に変更され、再配置されまたは省略されてもよい。したがって、
図5に示された動作の特定の順序は、1つ以上の実施形態の範囲を限定するものとして解釈されるべきではない。
【0125】
動作502において、共同データレコード管理システム内のクライアントから、共有データレコードを更新するための要求を受信する。クライアントは、共有データレコードに対する更新を要求すること、共有データレコードに適用される変更を要求すること、または共有データレコードにアクセスすることを要求することができる。この要求は、要求側クライアントによってアクセスされているバージョンを更新するために、この共有データレコードの保留中変更を当該共有データレコードに適用すべきであることを、共同データレコード管理システムに示す。
【0126】
動作504において、共有データレコードの保留中変更が存在しているか否かを判断する。保留中変更は、他のクライアントによって要求された同じ共有データレコードに対する更新および/または変更を含み、共有データレコードに適用される前に単一の更新に集約および簡略化されてもよい。
【0127】
動作506において、要求の受信および保留中変更が存在するという決定に応じて、保留中変更を共有データレコードに適用する。保留中変更に基づいて更新を生成した後、この更新は、共有データレコードに適用される。しかしながら、この更新は、共有データレコードに望ましくないおよび/または許容できない変更を引き起こす可能性がある。したがって、一手法に従って、動作508において、ルールを共有データレコードに適用することによって、全ての変更が適切および許容可能であるか否かを判断する。
【0128】
1つの手法において、共有データレコードに対する保留中変更は、共通台帳から取得取得されてもよい。共通台帳は、協調データレコード管理システムの各特定のクライアントによってアクセスされているバージョンの共有データレコードに対して、特定のクライアントによって行われた更新のログを記憶する。
【0129】
一実施形態において、共有データレコードに対する保留中変更は、クライアントキャッシュから取得されてもよい。クライアントキャッシュは、要求側クライアントによって共有データレコードに対して行われた全ての更新を含む一覧表と、要求側クライアントによってアクセスされている共有データレコードの現在バージョンを示す指標とを記憶する。
【0130】
動作508において、保留中変更に基づいて更新を適用した後、協調データレコード管理システムに固有のルールを共有データレコードに適用することによって、共有データレコードの更新を生成する。このルールベースの更新は、クライアントによって要求された以前の更新/変更を適用するために要求および/または指定されるが、協調データレコード管理システムのいずれかのクライアントに要求されていない。
【0131】
これらの規則は、特定の種類のデータレコードに向けられてもよく、要求側クライアントによって共有データレコードに対して行われた以前の更新/変更に特有であってもよい。共同データレコード管理システムのアーキテクチャに応じて、任意の種類の業務手続、編成、フォーマット、価格設定、コスト分析、在庫、計算、アルゴリズム、および/または演算は、適用されたルールに含まれてもよい。
【0132】
また、多くの異なる組のルールが存在してもよい。そのうち、第1組のルールは、1種類のデータレコード(例えば、動作情報ログ、センサデータ、生産および出力レコード)に適用され、第2組のルールは、第2種類のデータレコード(例えば、ワード処理文書、スプレッドシート)に適用される。
【0133】
動作510において、ルールベースの更新を共有データレコードに適用する。ルールの適用が共有データレコードに対してさらなる更新を引き起こさない場合、動作510では更新を適用しない。
【0134】
動作512において、要求側クライアントによってアクセスされているバージョンの共有データレコードと、ルールベースの更新を適用した後の最新データレコードとの間の差分を決定する。これらの差分を決定し、決定した差分を、要求側クライアントによってアクセスされているバージョンの共有データレコードを更新するために使用されるデータレコードとして記憶することによって、共有データレコードに対する変更を要求側クライアントに警告する際の処理能力および通信リソースを節約することができる。1つの手法において、差分は、共通台帳に送信され、そこに記憶されてもよい。
【0135】
動作514において、メッセージを要求側クライアントに送信する。このメッセージは、差分および/または最新データレコード、またはその両方を含む。このメッセージは、要求側クライアントに加えて他のクライアントに送信されてもよい。最新データレコードを送信するときに、最新データレコードは、データレコードを更新するための各クライアントに送信されてもよい。差分のみをメッセージとして送信するときに、共同データレコード管理システム内の全てのクライアント間の整合性を維持し、ローカルに記憶されたバージョンの共有データレコードを修正することによって、共有データレコードを、ルールの適用によって生じた最新の変更を有する最新ものにするように、これらの差分は、要求側クライアントと同じバージョンの共有データレコードにアクセスしている任意のクライアントに送信されてもよい。
【0136】
メッセージを受信した要求側クライアントおよび任意の他のクライアントは、共有データレコードの現在のビューを最新にするために以前に使用されていた任意のバージョンの代わりに、最新データレコードを利用することができる。
【0137】
4.3 変更要求に基づいて共有データレコードを更新するための差分の提供
図6は、1つ以上の実施形態に従って、クライアントから変更要求を受信したことに基づいて共有データレコードに対する差分を提供するための例示的な方法600を示す。
図6に示された1つ以上の動作は、共に変更され、再配置されまたは省略されてもよい。したがって、
図6に示された動作の特定の順序は、1つ以上の実施形態の範囲を限定するものとして解釈されるべきではない。
【0138】
動作602において、協調データレコード管理システム内のクライアントから、変更を共有データレコードに適用するための変更要求を受信する。クライアントは、クライアント上で実行されている活発な動作またはクライアントによって検出され得る任意の他の理由に基づいて、変更を共有データレコードに適用することを要求することができる。
【0139】
動作604において、共有データレコードの未解決変更が存在しているか否かを判断する。未解決変更があったことに応答して、動作606において、共通台帳にアクセスして、共有データレコードの未解決変更を取得する。さらなる手法において、未解決変更は、要求側クライアントに特有のクライアントキャッシュに記憶されてもよく、共通台帳に加えてまたは共通台帳を除いて、このソースから取得されてもよい。
【0140】
そうでない場合、方法600は、動作608に進む。動作608において、未解決変更(存在する場合)は、動作602で受信した要求によって要求された変更と共に統合されてもよい。その後、リソース消費量を低減し、(例えば、既に削除されたセクション内のテキストを修正しないように)異なるソースから適用される変更の整合性を保証するために、インテリジェントな方法で、統合変更を簡略化および/または適用することができる。(可能な場合)未解決変更を簡略化し、共有データレコードに適用することによって、要求された変更および未解決変更の全てに従って修正データレコードを生成することができる。
【0141】
未解決変更は、他のクライアントによって要求された同じ共有データレコードに対する更新および/または変更を含み、要求側クライアントによって要求された他の変更、ルールの適用に必要とされる修正などを含むことができる。修正データレコードは、共有データレコードに望ましくないおよび/または許容できない変更を含んでもよい。したがって、動作610において、ルールを共有データレコードに適用することによって、全ての変更が適切および許容可能であるか否かを判断する。
【0142】
動作610において、協調データレコード管理システムに固有のルールを修正データレコードに適用することによって、最新データレコードを生成する。このルールベースの更新は、クライアントによって要求された以前の更新/変更を適用するために要求および/または指定されるが、協調データレコード管理システムのいずれかのクライアントに要求されていない。
【0143】
これらの規則は、特定の種類のデータレコードに向けられてもよく、要求側クライアントによって共有データレコードに対して行われた以前の更新/変更に特有であってもよい。共同データレコード管理システムのアーキテクチャに応じて、任意の種類の業務手続、編成、フォーマット、価格設定、コスト分析、在庫、計算、アルゴリズム、および/または演算は、適用されたルールに含まれてもよい。
【0144】
また、多くの異なる組のルールが存在してもよい。そのうち、第1組のルールは、1種類のデータレコード(例えば、動作情報ログ、センサデータ、生産および出力レコード)に適用され、第2組のルールは、第2種類のデータレコード(例えば、ワード処理文書、スプレッドシート)に適用される。
【0145】
ルールの適用が、修正データレコードへのさらなる更新を引き起こさない場合、ルールの適用後の修正データレコードは、変更されないままである。
【0146】
動作612において、要求側クライアントによってアクセスされているバージョンの共有データレコードと、ルールベースの更新を適用した後の最新データレコードとの間の差分を決定する。これらの差分を決定し、決定した差分を、要求側クライアントによってアクセスされているバージョンの共有データレコードを更新するために使用されるデータレコードとして記憶することによって、共有データレコードに対する変更を要求側クライアントに警告する際の処理能力および通信リソースを節約することができる。
【0147】
1つの手法において、差分は、共通台帳に送信され、そこに記憶されてもよい。
動作614において、メッセージを要求側クライアントに送信する。このメッセージは、差分および/または最新データレコード、またはその両方を含む。このメッセージは、要求側クライアントに加えて他のクライアントに送信されてもよい。最新データレコードを送信するときに、最新データレコードは、データレコードを更新するための各クライアントに送信されてもよい。差分のみをメッセージとして送信するときに、共同データレコード管理システム内の全てのクライアント間の整合性を維持し、ローカルに記憶されているバージョンの共有データレコードを修正することによって、共有データレコードを、ルールの適用によって生じた最新の変更を有する最新ものにするように、これらの差分は、要求側クライアントと同じバージョンの共有データレコードにアクセスしている任意のクライアントに送信されてもよい。
【0148】
メッセージを受信した要求側クライアントおよび任意の他のクライアントは、共有データレコードの現在のビューを最新にするために以前に使用されていた任意のバージョンの代わりに、最新データレコードを利用することができる。
【0149】
5.コンピュータネットワークおよびクラウドネットワーク
1つ以上の実施形態において、コンピュータネットワークは、1組のノード間の接続を提供する。これらのノードは、互いにローカルおよび/またはリモートであってもよい。これらのノードは、1組のリンクによって接続される。リンクの例は、同軸ケーブル、非被覆ツイストケーブル、銅ケーブル、光ファイバ、および仮想リンクを含む。
【0150】
1つのサブセットのノードは、コンピュータネットワークを実装する。このようなノードの例は、スイッチ、ルータ、ファイアウォール、およびネットワークアドレストランスレータ(NAT)を含む。他のサブセットのノードは、コンピュータネットワークを使用する。このようなノード(「ホスト」または「クライアント」とも呼ばれる)は、クライアントプロセスおよび/またはサーバプロセスを実行することができる。クライアントプロセスは、コンピューティングサービス(例えば、特定のアプリケーションの実行および/または特定の量のデータの格納)を要求する。サーバプロセスは、要求されたサービスを実行することによっておよび/または対応するデータを返すことによって、応答する。
【0151】
コンピュータネットワークは、物理リンクによって接続された物理ノードを含む物理ネットワークであってもよい。物理ノードとは、任意のデジタル装置である。物理ノードは、ハードウェアスイッチ、ハードウェアルータ、ハードウェアファイアウォール、およびハードウェアNATなどの特定機能のハードウェア装置であってもよい。追加的にまたは代替的に、様々な仮想マシンおよび/またはそれぞれの機能を提供するアプリケーションを実行するように構成された汎用マシンであってもよい。物理リンクとは、2つ以上の物理ノードを接続する物理媒体である。リンクの例は、同軸ケーブル、非被覆ツイストケーブル、銅ケーブル、および光ファイバを含む。
【0152】
コンピュータネットワークは、オーバーレイネットワークであってもよい。オーバーレイネットワークとは、別のネットワーク(物理ネットワークなど)の上に実装された論理ネットワークである。オーバーレイネットワーク内の各ノードは、下位ネットワーク内の各ノードに対応する。したがって、オーバーレイネットワーク内の各ノードは、(オーバーレイノードのアドレスを指定するための)オーバーレイアドレスと、(オーバーレイノードを実装するアンダーレイノードのアドレスを指定するための)アンダーレイアドレスとの両方に関連付けられる。オーバーレイノードは、デジタル装置および/またはソフトウェアプロセス(例えば、仮想マシン、アプリケーションインスタンス、またはスレッド)であってもよい。トンネルの両端のオーバーレイノードは、当該オーバーレイノード同士の間の下位マルチホップ経路を、単一の論理的リンクとして扱う。トンネリングは、カプセル化およびカプセル化解除によって行われる。
【0153】
一実施形態において、クライアントは、コンピュータネットワークに対してローカルおよび/またはリモートであってもよい。クライアントは、プライベートネットワークまたはインターネットなどの他のコンピュータネットワークを介して、コンピュータネットワークにアクセスすることができる。クライアントは、ハイパーテキスト転送プロトコル(HTTP)などの通信プロトコルを用いて、要求をコンピュータネットワークに送信することができる。要求は、クライアントインターフェイス(例えば、ウェブブラウザ)、プログラムインターフェイス、またはアプリケーションプログラミングインターフェイス(API)などのインターフェイスを介して送信される。
【0154】
一実施形態において、コンピュータネットワークは、クライアントとネットワークリソースとの間の接続を提供する。ネットワークリソースは、サーバプロセスを実行するように構成されたハードウェアおよび/またはソフトウェアを含む。ネットワークリソースの例は、プロセッサ、データ記憶装置、仮想マシン、コンテナ、および/またはソフトウェアアプリケーションを含む。ネットワークリソースは、複数のクライアント間で共有される。クライアントは、互いに独立して、コンピュータネットワークからコンピューティングサービスを要求する。ネットワークリソースは、オンデマンドで、各要求および/または各クライアントに動的に割り当てられる。各要求および/または各クライアントに割り当てられたネットワークリソースは、例えば、(a)特定のクライアントによって要求されたコンピューティングサービス、(b)特定のテナントによって要求された集約コンピューティングサービス、および/または(c)コンピュータネットワークによって要求された集約コンピューティングサービスに基づいて、拡大または縮小されてもよい。このようなコンピュータネットワークは、「クラウドネットワーク」と称されてもよい。
【0155】
一実施形態において、サービスプロバイダは、クラウドネットワークを1人以上のエンドユーザに提供する。SaaS(Software-as-a-Service)、PaaS(Platform-as-a-Service)、IaaS(Infrastructure-as-a-Service)を含むがこれらに限定されない様々なサービスモデルは、クラウドネットワークによって実装されてもよい。SaaSにおいて、サービスプロバイダは、ネットワークリソース上で実行されているサービスプロバイダのアプリケーションを使用する能力を、エンドユーザに提供する。PaaSにおいて、サービスプロバイダは、カスタムアプリケーションをネットワークリソース上に展開する能力を、エンドユーザに提供する。カスタムアプリケーションは、サービスプロバイダによってサポートされたプログラミング言語、ライブラリ、サービス、およびツールを用いて作成されてもよい。IaaSにおいて、サービスプロバイダは、ネットワークリソースによって提供された処理、記憶、ネットワーク、および他の基本的なコンピューティングリソースを提供する能力を、エンドユーザに提供する。オペレーティングシステムを含む任意のアプリケーションは、ネットワークリソース上に展開されてもよい。
【0156】
一実施形態において、プライベートクラウド、パブリッククラウド、およびハイブリッドクラウドを含むがこれらに限定されない様々な展開モデルは、コンピュータネットワークによって実装されてもよい。プライベートクラウドにおいて、ネットワークリソースは、1つ以上のエンティティ(本明細書に使用された「エンティティ」という用語は、企業、組織、人、または他の実体を指す)からなる特定のグループによって排他的使用されるようにプロビジョニングされる。ネットワークリソースは、エンティティからなる特定のグループの構内に対してローカルおよび/またはリモートであってもよい。パブリッククラウドにおいて、クラウドリソースは、互いに独立した複数のエンティティ(また、「テナント」または「顧客」とも称される)に対してプロビジョニングされる。コンピュータネットワークおよびそのネットワークリソースは、異なるテナントに対応するクライアントによってアクセスされる。このようなコンピュータネットワークは、「マルチテナントコンピュータネットワーク」と称されてもよい。いくつかのテナントは、異なる時間および/または同じ時間に、同じ特定のネットワークリソースを使用することができる。ネットワークリソースは、テナントの構内に対してローカルおよび/またはリモートであってもよい。ハイブリッドクラウドにおいて、コンピュータネットワークは、プライベートクラウドとパブリッククラウドとを含む。プライベートクラウドとパブリッククラウドとの間のインターフェイスは、データおよびアプリケーション可搬性を可能にする。プライベートクラウドに格納されたデータおよびパブリッククラウドに格納されたデータは、インターフェイスを介して交換されてもよい。プライベートクラウドに実装されたアプリケーションと、パブリッククラウドに実装されたアプリケーションとは、互いに依存関係を有してもよい。プライベートクラウド上のアプリケーションからパブリッククラウド上のアプリケーションへのコール(およびその逆)は、インターフェイスを介して実行されてもよい。
【0157】
一実施形態において、マルチテナントコンピュータネットワークのテナントは、互いに独立している。例えば、1つのテナントの業務または動作は、別のテナントの業務または動作とは別であってもよい。異なるテナントは、コンピュータネットワークに対して異なるネットワーク要件を要求することができる。ネットワーク要件の例は、処理速度、データ記憶量、セキュリティ要件、性能要件、スループット要件、待ち時間要件、復元要件、サービス品質(QoS)要件、テナント分離、および/または一貫性を含む。同じコンピュータネットワークは、異なるテナントによって要求された異なるネットワーク要件を実現する必要がある場合がある。
【0158】
1つ以上の実施形態において、マルチテナントコンピュータネットワークにおけるテナントの分離は、異なるテナントのアプリケーションおよび/またはデータが相互に共有されないことを確実にするように、実現される。様々なテナント分離技術を使用してもよい。
【0159】
一実施形態において、各テナントは、テナントIDに関連付けられる。マルチテナントコンピュータネットワークの各ネットワークリソースは、テナントIDでタグ付けされる。テナントは、テナントと特定のネットワークリソースとが同じテナントIDに関連付けられる場合のみ、特定のネットワークリソースへのアクセスを許可される。
【0160】
一実施形態において、各テナントは、テナントIDに関連付けられる。コンピュータネットワークによって実装された各アプリケーションは、テナントIDでタグ付けされる。追加的にまたは代替的に、コンピュータネットワークによって格納された各データ構造および/またはデータセットは、テナントIDでタグ付けされる。テナントは、テナントと特定のアプリケーション、データ構造および/またはデータセットとが同じテナントIDに関連付けられる場合のみ、特定のアプリケーション、データ構造、および/またはデータセットへのアクセスを許可される。
【0161】
一例として、マルチテナントコンピュータネットワークによって実装された各データベースは、テナントIDでタグ付けされてもよい。対応するテナントIDに関連付けられたテナントのみが、特定のデータベースのデータにアクセスすることができる。別の例として、マルチテナントコンピュータネットワークによって実装されたデータベース内の各エントリは、テナントIDでタグ付けされてもよい。対応するテナントIDに関連付けられたテナントのみが、特定のエントリのデータにアクセスすることができる。しかしながら、データベースは、複数のテナントによって共有されてもよい。
【0162】
一実施形態において、サブスクリプションリストは、アプリケーションにアクセスする権限を有するテナントを示す。アプリケーションにアクセスする権限を有するテナントのテナントIDのリストは、アプリケーションごとに格納される。あるテナントのテナントIDが特定のアプリケーションに対応する加入リストに含まれている場合のみ、当該テナントは、そのアプリケーションへのアクセスを許可される。
【0163】
一実施形態において、異なるテナントに対応するネットワークリソース(例えば、デジタル装置、仮想マシン、アプリケーションインスタンス、およびスレッド)は、マルチテナントコンピュータネットワークによって維持されるテナント固有のオーバーレイネットワークに分離される。一例として、テナントオーバーレイネットワーク内の任意のソース装置からのパケットは、同じテナントオーバーレイネットワーク内の他の装置にのみ送信されてもよい。カプセル化トンネルは、テナントオーバーレイネットワーク上のソース装置から他のテナントオーバーレイネットワーク内の装置への任意の送信を禁止するために使用される。具体的には、ソース装置から受信したパケットは、外部パケット内でカプセル化される。外部パケットは、テナントオーバーレイネットワーク上のソース装置と通信する)第1のカプセル化トンネルエンドポイントから、(テナントオーバーレイネットワーク上の宛先装置と通信する)第2のカプセル化トンネルエンドポイントに送信される。第2のカプセル化トンネルエンドポイントは、ソース装置によって送信されたオリジナルパケットを取得するために、外部パケットのカプセル化を解除する。オリジナルパケットは、第2のカプセル化トンネルエンドポイントから、同じ特定のオーバーレイネットワーク上の宛先装置に送信される。
【0164】
6.その他、拡張
実施形態は、ハードウェアプロセッサを含み、本明細書に記載されおよび/または以下の特許請求の範囲のいずれかに列挙された動作のうちのいずれかを実行するように構成された1つ以上の装置を有するシステムに関する。
【0165】
一実施形態において、非一時的なコンピュータ可読記憶媒体は、1つ以上のハードウェアプロセッサによって実行されると、本明細書に記載されおよび/または特許請求の範囲のいずれかに列挙された動作のいずれかを実行する命令を含む。
【0166】
本明細書に記載された特徴および機能の任意の組み合わせは、1つ以上の実施形態に従って使用されてもよい。上述の明細書において、実現例によって異なり得る多くの具体的詳細を参照して、本発明の実施形態を説明した。したがって、明細書および添付の図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。本発明の範囲の唯一且つ排他的な指標、および出願人が意図する本発明の範囲は、その後のあらゆる補正を含めて、特定の形態で本願から得られた特許請求の範囲の文言上の範囲および同等の範囲である。
【0167】
7.ハードウェアの概要
一実施形態によれば、本明細書に記載された技術は、1つ以上の専用コンピューティング装置(すなわち、特定の機能を実行するように特別に構成されたコンピューティング装置)によって実現される。これらの専用コンピューティング装置は、これらの技術を実行するためにハードワイヤードされてもよく、もしくは、これらの技術を実行するように永続的にプログラムされた1つ以上の特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、もしくはネットワーク処理ユニット(NPU)といったデジタル電子装置を含んでもよく、または、ファームウェア、メモリ、他の記憶装置、もしくはそれらの組合せにおいてプログラム命令に従ってこれらの技術を実行するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでもよい。そのような専用コンピューティング装置はまた、これらの技術を遂行するために、カスタムハードワイヤードロジック、ASIC、FPGA、またはNPUをカスタムプログラミングと組合わせてもよい。当該専用コンピューティング装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯型装置、ネットワーキング装置、または、これらの技術を実現するためにハードワイヤードロジックおよび/もしくはプログラムロジックを組込んだ任意の他の装置であってもよい。
【0168】
例えば、
図7は、本発明の一実施形態が実現され得るコンピュータシステム700を示すブロック図である。コンピュータシステム700は、情報を通信するためのバス702または他の通信機構と、情報を処理するためにバス702と結合されるハードウェアプロセッサ704とを含む。ハードウェアプロセッサ704は、例えば、汎用マイクロプロセッサであってもよい。
【0169】
また、コンピュータシステム700は、プロセッサ704によって実行されるべき命令および情報を格納するためにバス702に結合された、ランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ706を含む。メインメモリ706はまた、プロセッサ704によって実行されるべき命令の実行中に一時的な変数または他の中間情報を格納するために使用されてもよい。そのような命令は、プロセッサ704にアクセス可能な非一時的記憶媒体に格納されると、コンピュータシステム700を、命令で特定された動作を実行するようにカスタマイズされた専用マシンにする。
【0170】
コンピュータシステム700は、プロセッサ704のための静的情報および命令を格納するためにバス702に結合された読出専用メモリ(ROM)708または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスクなどの記憶装置710が設けられ、情報および命令を格納するためにバス702に結合される。
【0171】
コンピュータシステム700は、バス702を介して、情報をコンピュータユーザに提示するための陰極線管(CRT)モニタなどのディスプレイ712に連結されてもよい。英数字キーおよび他のキーを含む入力装置714は、情報およびコマンド選択をプロセッサ704に通信するためにバス702に連結される。別の種類のユーザ入力装置は、方向情報およびコマンドの選択をプロセッサ704に通信し、ディスプレイ712上でカーソルの移動を制御するためのマウス、トラックボール、トラックパッド、タッチスクリーン、またはカーソル方向キーなどを含むカーソルコントロール716である。この入力装置は、通常、第1の軸(例えばx)および第2の軸(例えばy)という2つの軸に2つの自由度を有するため、平面内の位置を特定することができる。
【0172】
コンピュータシステム700は、コンピュータシステムと組合されることでコンピュータシステム900を専用マシンにするかまたは専用マシンになるようプログラムする、カスタマイズされたハードワイヤードロジック、1つ以上のASICもしくはFPGA、ファームウェアおよび/またはプログラムロジックを用いて、本明細書に記載された技術を実現することができる。一実施形態によれば、本明細書の技術は、メインメモリ706に含まれる1つ以上の命令の1つ以上のシーケンスを実行するプロセッサ704に応答して、コンピュータシステム700によって実行される。このような命令は、記憶装置710などの別の記憶媒体からメインメモリ706に読込まれてもよい。メインメモリ706に含まれる命令のシーケンスの実行は、プロセッサ704に、本明細書に記載された手プロセスステップを実行させる。代替の実施形態において、ソフトウェア命令の代わりにまたはソフトウェア命令と組み合わせて、ハードワイヤード回路を使用することができる。
【0173】
本明細書に使用された「記憶媒体」という用語は、機械を特定の方法で動作させるデータおよび/または命令を記憶する任意の非一時的な媒体を指す。このような記憶媒体は、不揮発性媒体および/または揮発性媒体を含むことができる。不揮発性媒体は、例えば、記憶装置710などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ706などのダイナミックメモリを含む。記憶媒体の一般的な形態は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光データ記憶媒体、穴のパターンを有する任意の物理的媒体、RAM、PROM、EPROM、FLASH-EPROM、不揮発性ランダムアクセスメモリ(NVRAM)、任意の他のメモリチップまたはカートリッジ、連想メモリ(CAM:content-addressable memory)、および3値連想メモリ(TCAM:ternary content-addressable memory)を含む。
【0174】
記憶媒体は、伝送媒体とは異なるが、伝送媒体と併せて使用されてもよい。伝送媒体は、記憶媒体間の情報の転送に関与する。例えば、伝送媒体は、バス702を構成するワイヤを含む同軸ケーブル、銅ワイヤ、および光ファイバを含む。また、伝送媒体は、電波通信および赤外線データ通信時に生成された音響波または光波であってもよい。
【0175】
様々な形態の媒体を用いて、1つ以上の命令の1つ以上のシーケンスをプロセッサ704に搬送して実行することができる。例えば、命令は、最初に、リモートコンピュータの磁気ディスクまたはソリッドステートドライブ上で搬送されてもよい。リモートコンピュータは、モデムを使用する電話回線を介して、命令をそのダイナミックメモリにロードし、ネットワークを介してその命令を送信することができる。コンピュータシステム700に対してローカルなNICは、ネットワークからデータを受け入れ、バス702上にデータを配置することができる。バス702は、データをメインメモリ706に搬送する。プロセッサ704は、メインメモリ706から命令を取り出し、実行する。メインメモリ706に搬送された命令は、任意選択で、プロセッサ704によって実行される前または後に、記憶装置710に記憶されてもよい。
【0176】
また、コンピュータシステム700は、バス702に結合された通信インターフェイス718を含む。通信インターフェイス718は、ローカルネットワーク722に接続されたネットワークリンク720への双方向データ通信結合を提供する。例えば、通信インターフェイス718は、総合サービスデジタルネットワーク(ISDN)カード、ケーブルモデム、衛星モデム、または対応する種類の電話回線へのデータ通信接続を提供するためのモデムであってもよい。別の例として、通信インターフェイス718は、互換性のあるLANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであってもよい。ワイヤレスリンクを実装してもよい。このような実装形態において、通信インターフェイス718は、様々な種類の情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
【0177】
ネットワークリンク720は、典型的には、1つ以上のネットワークを通して、他のデータ装置にデータ通信を提供する。例えば、ネットワークリンク720は、ローカルネットワーク722を介して、ホストコンピュータ724またはインターネットサービスプロバイダ(ISP)726によって運営されるデータ機器への接続を形成することができる。ISP726は、現在一般に「インターネット」728と称されるワールドワイドパケットデータ通信ネットワークを介して、データ通信サービスを提供する。ローカルネットワーク722およびインターネット728の両方は、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号を使用する。様々なネットワークを通る信号、および通信インターフェイス718を通るネットワークリンク720上の信号は、コンピュータシステム700との間でデジタルデータを搬送する伝送媒体の例示的な形態である。
【0178】
コンピュータシステム700は、ネットワーク、ネットワークリンク720、および通信インターフェイス718を介して、メッセージを送信し、プログラムコードを含むデータを受信することができる。インターネットの例において、サーバ730は、インターネット728、ISP726、ローカルネットワーク722、および通信インターフェイス718を介して、要求されたアプリケーションプログラムのコードを送信することができる。
【0179】
受信されたコードは、受信時にプロセッサ704によって実行されてもよく、および/または後で実行するために記憶装置710または他の不揮発性記憶装置に記憶されてもよい。
【0180】
上述の明細書において、実現例によって異なり得る多くの具体的詳細を参照して、本発明の実施形態を説明した。したがって、明細書および添付の図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。本発明の範囲の唯一且つ排他的な指標、および出願人が意図する本発明の範囲は、その後のあらゆる補正を含めて、特定の形態で本願から得られた特許請求の範囲の文言上の範囲および同等の範囲である。
【国際調査報告】