(57)【要約】  構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーションを提供するためのツールおよび技術を開示する。クライアントシステムにより、コラボレーションのために使用可能なパブリッシュされたデータ要素のライブラリを提供するユーザーインターフェースを提供することができる。クライアントは、選択されたデータ要素を要求することができる一方、選択されたデータ要素に関連する一意的な識別子を参照する。他によるコラボレーションのためにデータ要素をパブリッシュするそれらのクライアントは、候補の構造化されたデータ要素の表現を提供するユーザーインターフェースを提供して、パブリッシュのために選択されたそれらのデータ要素の選択を受信することができる。パブリッシュするクライアントは、パブリッシュのための選択されたデータ要素を送信することができる。クライアントシステムは、サーバーまたはコラボレーションサービスと双方向通信することができて、サーバーまたはコラボレーションサービスは、クライアントが他によるアクセスのためにパブリッシュした構造化されたデータ要素を受信することができる。サーバーは、パブリッシュされたデータ要素のそれぞれの一意的な識別子を定義することができて、構造化されたデータ要素および対応する一意的な識別子を種々のクライアントシステムに送信することができる。
2011510397.tif 000002
【特許請求の範囲】
【請求項１】
第１のクライアントシステム（１２８ｎ）によるアクセスのために少なくとも部分的にパブリッシュされたスプレッドシート内の少なくとも１つの構造化されたデータ要素（２１２）を受信するステップ（２１４）と、
前記構造化されたデータ要素に対応するそれぞれの一意的な識別子（２１６）を定義するステップと、
前記構造化されたデータ要素および前記一意的な識別子を少なくとも第２のクライアントシステム（１２８ａ）へ送信するステップ（２３４）と、
少なくとも前記第１のクライアントシステムおよび前記第２のクライアントシステムに対して前記構造化されたデータ要素にコラボラティブにアクセスすることを可能にするステップ（４０２および４１４）と、
前記データ要素に対する少なくとも１つの更新（４０８または４２０）を１つのクライアントシステムから受信するステップ（４１０）であって、前記更新は前記一意的な識別子を参照する、受信するステップと、
前記一意的な識別子に少なくとも部分的に基づき少なくとも前記データ要素を含むマスターテーブル（１１８）に前記更新をマージするステップ（４１２）と
を備えたことを特徴とする方法。
【請求項２】
前記データを送信するステップは、少なくとも１つのネットワークを介して前記第２のクライアントシステムへデータを送信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
少なくとも前記構造化されたデータ要素の選択を受信するステップであって、前記選択は前記構造化されたデータ要素に対応する前記一意的な識別子を参照する、選択を受信するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項４】
構造化されたデータ要素のマスターの集合から前記構造化されたデータ要素を検索するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項５】
前記第２のクライアントシステムへ前記構造化されたデータ要素を含むライブラリの表現を送信するステップであって、前記構造化されたデータ要素は他のクライアントシステムによるコラボレーションのためにパブリッシュされて、前記複数の構造化されたデータ要素はそれぞれの一意的な識別子に関連する、表現を送信するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項６】
少なくともさらなるクライアントシステムから前記データ要素に対する少なくともさらなる更新を受信するステップであって、さらなる更新は前記データ要素に対して前記一意的な識別子を参照する、さらなる更新を受信するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項７】
前記一意的な識別子に少なくとも部分的に基づき前記データ要素に対する少なくともさらなる更新を前記マスターテーブルにマージするステップをさらに備えたことを特徴とする請求項６に記載の方法。
【請求項８】
少なくとも別のクライアントシステムへ更新をパブリッシュするステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項９】
前記構造化されたデータ要素を送信するステップは、スプレッドシート内に定義されるワークブックの少なくとも一部を送信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
少なくとも１つのクライアントテーブルから受信した少なくとも１つの値を参照することによってマスターテーブルの少なくとも１つの列を計算するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１１】
スプレッドシート内に定義される複数の構造化されたデータ要素の表現を与えるユーザーインターフェースを提供するステップ（２０２）と、
パブリッシュするための前記構造化されたデータ要素の少なくとも１つの選択（２０６）を受信するステップ（２０８）と、
パブリッシュするための前記選択された構造化されたデータ要素（２１２）を表現するデータを送信するステップ（２１０）と、
前記選択された構造化されたデータ要素に関連する一意的な識別子を受信するステップと
を備えたことを特徴とする方法。
【請求項１２】
前記構造化されたデータ要素は、スプレッドシートの少なくとも一部を含み、前記構造化されたデータ要素を表現するデータを送信するステップは、前記構造化されたデータ要素を少なくとも１つのクライアントシステムへパブリッシュするためにネットワークを介して少なくとも１つのサーバーシステムへデータを送信するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記選択された構造化されたデータ要素を表現するデータを送信するステップは、クライアントシステムが前記構造化されたデータ要素にアクセスして前記構造化されたデータ要素を更新できるようにするためにネットワークを介して少なくとも１つのクライアントシステムへ前記データを送信するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記構造化されたデータ要素に対する少なくとも１つの更新を送信するステップであって、前記更新は前記構造化されたデータ要素上における少なくとも１つのクライアントシステムとのコラボレーションから生じる、更新を送信するステップと、
前記構造化されたデータ要素を前記一意的な識別子を使用してマージするステップと
をさらに備えたことを特徴とする請求項１１に記載の方法。
【請求項１５】
少なくとも部分的に他のクライアントシステムによるコラボレーションのためにクライアントシステム（１０４）がパブリッシュしたスプレッドシート内の構造化されたデータ要素（２１６）のライブラリを与えるユーザーインターフェースを提供するステップ（２１８）と、
構造化されたデータ要素の少なくとも１つの選択（２２２）をユーザーから受信するステップ（２２４）と、
前記選択された構造化されたデータ要素を要求するステップ（２２６）であって、選択は前記選択された構造化されたデータ要素に関連する一意的な識別子（２２８）を参照する、要求するステップと
を備えたことを特徴とする方法。
【請求項１６】
前記選択された構造化されたデータ要素をスプレッドシートの少なくとも一部から受信するステップと、
１つまたは複数のクライアントに効力のあるローカルな指定に応答してローカルなフォーマッティング、ローカルなソート、またはローカルなフィルタリングを前記構造化されたデータ要素に適用するステップと
をさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記選択されたデータ要素の少なくとも一部を更新するステップであって、前記選択されたデータ要素は計算された列を含む、更新するステップと、
前記計算された列の更新を受信するステップであって、前記計算された列は更新に応答して再計算される、更新を受信するステップと
をさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記構造化されたデータ要素の少なくとも一部を更新するステップは、クライアントによりローカルに保持されるデータ、およびクライアントの外部のソースから受信されるデータに基づき前記構造化されたデータ要素を更新するステップを含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記構造化されたデータ要素に関連するそれぞれの一意的な識別子をライブラリに保持するステップをさらに備え、前記選択されたデータ要素を更新するステップは、前記更新されたデータ要素に関連する一意的な識別子を参照するステップを含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
前記構造化されたデータ要素の少なくとも一部を更新するステップは、マスターテーブルにより定義される計算された列のローカルな値を計算するステップを含むことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチクライアントのコラボレーションに関し、より詳細には、構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーションに関する。
【背景技術】
【０００２】
様々の理由があって、コンピューターシステムおよびアプリケーションのユーザーは、お互いから、より地理的に引き離されるか一面に分布させられるかになっている。そのような距離または分離にもかかわらず、これらのユーザーは、彼らが取り組んでいるかもしれない種々のプロジェクトにおいて共同の作業をしたいことがある。種々のアプリケーションおよびユーティリティにより、コラボレーションをある程度支援することができる。他方において、この分野におけるさらなる開発および改良が進行中である。
【発明の概要】
【０００３】
構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーションを提供するツールおよび技術を、開示する。クライアントシステム（「クライアント」）により、コラボレーションをするために使用可能なパブリッシュされたデータ要素のライブラリを提供するユーザーインターフェースを提供することができる。クライアントは、選択されたデータ要素を要求することができ、選択されたデータ要素に関連させた一意的な識別子を参照する。他によりコラボレーションをするためにデータ要素をパブリッシュするクライアントは、候補の構造化されたデータ要素の表現を提供するユーザーインターフェースを提供して、パブリッシュするために選択されたデータ要素の選択を受信することができる。次に、パブリッシュするクライアントは、パブリッシュするために選択されたデータ要素を送信することができる。クライアントシステムは、サーバーまたはコラボレーションサービスと双方向通信することができて、クライアントが他によるアクセスのためにパブリッシュした構造化されたデータ要素を受信することができる。サーバーは、パブリッシュされたデータ要素に対してそれぞれ一意的な識別子を定義することができて、構造化されたデータ要素および対応する一意的な識別子を種々のクライアントシステムへ送信することができる。
【０００４】
上述の主題を、方法、コンピューター制御装置、コンピューター処理、コンピューターシステムとして、または例えばコンピューター読み取り可能な媒体等の製造品としてさらに実装することができる。これらおよび種々の他の特徴は、以下の「発明を実施するための形態」を読むことにより、および添付の図面を精査することにより明らかになるであろう。
【０００５】
本発明の概要を提供して、以下の「発明を実施するための形態」においてさらに説明する簡略化された形において概念の選択を導入する。本発明の概要は、主張される主題の重要な特徴または主要な特徴を識別することを意図せず、本発明の概要を使用して、主張される主題の範囲を制限することを意図してもいない。さらに、主張される主題は、本開示のあらゆる部分に示されるあらゆるまたは全ての不利益を解決する実装に制限されない。
【図面の簡単な説明】
【０００６】
【図１】構造化されたデータ要素にアクセスして更新するマルチクライアントのコラボレーションを可能にするシステム環境またはオペレーティング環境を例示するブロック図である。
【図２】コラボレート・クライアント・システムがサーバーからの構造化されたマスターデータにアクセスできるようにする処理のブロック、データおよびフローを組み合わせた図である。
【図３】クライアントシステムがローカルな指定を構造化されたデータ要素に適用できるようにする処理のブロック、データおよびフローを組み合わせた図である。
【図４】異なるクライアントテーブル内のマスター・テーブル・データに対してなされる進行中の変更または修正を操作するための処理のブロック・データ・フローの組み合わせ図である。
【図５】２つ以上のクライアントテーブル構造間において共有されるマスターテーブル構造の例を例示するブロック図である。
【図６】１つのクライアントテーブルがマスターテーブルから実行されたデータを変更するときに起こることがある更新を例示するブロック図である。
【図７】１つのクライアントテーブルからの更新のためにマスターテーブルから伝わることができる更新を例示するブロック図である。
【発明を実施するための形態】
【０００７】
以下の詳細な説明は、構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーションを可能にするための技術に向けられる。用語の「構造化されたデータ要素」を、本明細書において、可能性のある実装を制限することなしに、全体にわたる構造的なスキームのコンテキスト内に生じるデータ要素を引用するのに使用する。例えば、上記の構造的なスキームを、スプレッドシートまたはそのコンポーネント内に実装することができる。これらのスプレッドシートコンポーネントは、ワークブック、テーブル、行、列、セル、またはその一部分を含むことができる。可能性のある実装を制限することなしに、単に本説明を容易にするために、以下の階層を、例示的なスプレッドシートの専門用語を参照して示す。
【０００８】
【表１】
2011510397.tif 000003
【０００９】
本明細書において説明される主題が、コンピューターシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と共に実行するプログラムモジュールの一般的コンテキストにおいて示される一方、当業者は、他の実装を、他のタイプのプログラムモジュールと組み合わせて行うことができることを認識するであろう。一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および個別のタスクを実行する、または個別の抽象データ型を実装する他のタイプの構造を含む。さらに、当業者は、本明細書において説明される主題を、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサ系のまたはプログラム可能な家庭用電化製品、ミニコンピューター、メインフレームコンピューター等を含む他のコンピューターシステム構成において実践することができることを、理解するであろう。
【００１０】
以下の詳細な説明において、本明細書の一部を形成する添付の図面を参照して、図面は、具体的な実施形態または実施例の実例として示される。図面を参照すると、いくつかの図面を通して同様の番号が同様の要素を表して、構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーション用のツールおよび技術の側面を、説明する。
【００１１】
図１は、一般に１００により示され、複数のクライアントシステムが共同で構造化されたデータ要素にアクセスして更新することを可能にするシステムまたは操作環境を例示する。これらのシステム１００は、１つまたは複数のサーバーシステム１０２を含むことができて、図１が２台のサーバー１０２ａおよび１０２ｎ（まとめてサーバー１０２）の例を提供する。しかし、本明細書において説明の実装は、あらゆる数のサーバーを含むことができる。
【００１２】
サーバー１０２は、１つまたは複数のクライアントシステム１０４と通信することができて、図１が１０４ａおよび１０４ｎ（まとめてクライアントシステム１０４）により示すような２台のクライアントシステムの例を提供する。サーバーおよびクライアントシステムは、１つまたは複数のネットワーク１０６上でお互いに通信することができて、ネットワーク１０６は、あらゆる適切なネットワーク技術および信号送信技術を使用して構成されるローカルエリアまたはワイドエリアのネットワークを表現することができる。ネットワーク１０６は、例えばインターネット等を含むことができる。これらのネットワークは、無線および／または有線の通信性能を提供することができる。
【００１３】
サーバーおよびクライアントは、適切なリンク１０８を介してネットワーク１０６と通信することができる。図１は、それぞれ、サーバー１０２ａ、１０２ｎおよびクライアント１０４ａ、１０４ｎと関連するリンク１０８ａ、１０８ｂ、１０８ｃ、および１０８ｎを例示する。これらのリンク１０８は、サーバーおよびクライアントシステムがネットワークに接続することを可能にするハードウェアおよび／またはソフトウェアコンポーネントを表現する。これらのコンポーネントには、ネットワークアダプター、プロトコルスタック等を含むことができる。
【００１４】
サーバー、クライアントシステムおよびネットワークを描くために図１において使用されるグラフィカルな要素は、単に例示を容易にするためであって、本明細書において説明の可能性のある実装を制限するために選択されるものではない。さらに詳細には、図１は、クライアントシステム１０４ａが、ラップトップ、ノートブック、または他のモバイルシステムとして特徴づけられるかどうかに関わらず、ポータブル・コンピューティング・システムである例を示す。クライアントシステム１０４ｎは、固定またはデスクトップのシステムを表現する。しかしながら、本明細書の説明は、制限されないが、ワイヤレスＰＤＡ（personal digital assistants）、スマートフォン等を含む他の形式のクライアントシステムを意図する。
【００１５】
サーバー１０２をより詳細に参照すると、サーバーは、個別の実装に対して適切であるとして選択される個別のタイプまたはアーキテクチャを有することができる１つまたは複数のプロセッサ１１０を含むことができる。プロセッサ１１０は、プロセッサ１１０との互換性のために選択される１つまたは複数のバスシステム１１２に連結することができる。
【００１６】
サーバー１０２は、コンピューター読み取り可能な記憶媒体１１４の、１つまたは複数のインスタンスを含むことができて、バスシステム１１２に接続される。バスシステムは、プロセッサ１１０がコンピューター読み取り可能な記憶媒体１１４に、またはコンピューター読み取り可能な記憶媒体１１４から、コードおよび／またはデータを読み込むことを可能する。媒体１１４は、制限されないが、半導体、磁気材料、光学等を含むあらゆる適切な技術を使用して実装される記憶要素を表現できる。媒体１１４は、ＲＡＭ、ＲＯＭ、フラッシュ、または他のタイプとして分類されるかどうかに関わらず、メモリコンポーネントを含むことができて、さらにハードディスクドライブを表現できる。
【００１７】
記憶媒体１１４は、命令の１つまたは複数のモジュール１１６を含むことができて、その命令は、プロセッサ１１０にロードされて実行されると、構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーションを可能にするクライアントシステムに対する、サービスの組の提供をサーバー１０２にさせる。本説明を通して詳述されるように、これらのサーバー側のコラボラティブサービスにより、クライアントシステムにおける１人または複数のユーザー（後の図面に示す）が、マスターテーブル１１８内に記憶される構造化されたデータにアクセスすることを可能にすることができる。本説明は、スプレッドシートアプリケーションのコンテキストにおいて構造化されたデータに関する例を提供するが、本明細書に説明される原理は、本明細書の説明の範囲および精神を逸脱することなく、他の用途に拡張することができる。一般に、コラボラティブ・サービス・モジュール１１６は、点線１２０で示すように、マスターテーブル１１８へのアクセス、およびマスターテーブル１１８との間のデータの転送を管理する。
【００１８】
クライアントシステム１０４をより詳細に参照すると、クライアントシステムは、１つまたは複数のプロセッサ１２２を含むことができる。これらのプロセッサは、クライアントシステムに対して適切であるとして選択され、サーバー内のプロセッサ１１０と同じタイプまたはアーキテクチャを有しても有しなくても良い。プロセッサ１２２は、プロセッサ１２２との互換性のために選択される１つまたは複数のバスシステム１２４に連結することができ、従って、サーバー内のプロセッサ１１２と同じタイプまたはアーキテクチャをであってもなくても良い。
【００１９】
クライアントシステムは、バスシステム１２４に連結されるコンピューター読み取り可能な記憶媒体１２６の１つまたは複数のインスタンスを含むことができる。バスシステム１２４は、プロセッサ１２２がコンピューター読み取り可能な記憶媒体１２６に、またはコンピューター読み取り可能な記憶媒体１２６から、コードおよび／またはデータを読み込むことを可能する。一般に、記憶媒体１１４の全体的な説明は、記憶媒体１２６に適用されるため、ここでは繰り返さない。
【００２０】
記憶媒体１２６は、命令の１つまたは複数のモジュール１２８を含むことができて、その命令は、プロセッサ１２２にロードされて実行されると、クライアントシステム１０２に、サーバー側モジュール１１６と協働してコラボラティブサービスを提供させる。本説明を通して詳述されるように、これらのクライアント側のコラボラティブサービスにより、クライアントシステムのユーザーが、構造化されたデータをマスターテーブル１１８からクライアント側の、すなわちローカルなテーブル１３０にロードすることを可能にすることができる。一般に、コラボラティブ・サービス・モジュール１２８は、点線１３２で示すように、クライアントテーブル１３０へのアクセス、およびクライアントテーブル１３０との間のデータの転送、を管理する。
【００２１】
図１に例示するように、サーバー側サービス１１６およびクライアント側サービス１２８の協働により、ワークフローが、点線１３４により一般に表現されるように、サーバーとクライアントシステムとの間を通ることを可能にすることができる。後に続く図面および説明は、コラボレーションワークフロー１３４について詳述されるが、これらのワークフローは、一般的に、コマンドフロー、データフロー、およびサーバー１０２においてホストされる構造化されたデータをコラボレートするクライアントシステム１０４（および関連するユーザー）に関する他の処理を表す。
【００２２】
図１は、サーバー１０２ｎおよびクライアントシステム１０４ｎのコンポーネントについて詳述するが、これらの説明は、サーバー１０２ａおよびクライアントシステム１０４ａについて同様に適用できる。これらの説明はまた、図１に示されないが本明細書において提供される技術の実装に含むことができるサーバーまたはクライアントシステムにも適用できる。
【００２３】
なお、図１は、サーバーシステムおよびクライアントシステムを含む例示の実装を示すが、他の実装が可能である。例えば、サーバーにより実行されるものとして本明細書に説明される機能性を、クライアントに分配することができる。より具体的には、クライアントには、他のクライアントと通信するサービスが含まれて、本明細書に説明されるサーバー機能を実行することができる。このようにして、サーバー機能を、クライアント自体へ分散および分配することができる。
【００２４】
図１に示すようなシステム環境または操作環境１００を説明したが、次に、図２に示す構造化されたデータ要素にアクセスして更新するマルチクライアントのコラボレーションに関する処理フローおよびデータフローの説明に進み、議論する。特に、図２は、一般に２００により示され、クライアントシステムが、サーバーからの構造化されたマスターデータにコラボラティブにアクセスすることを可能にする処理フローおよびデータフローを例示する。可能性のある実装を制限するのではなく、説明を容易にするために、図２は、前の図面から参照符号を繰り越して、同様の要素を参照する。
【００２５】
図２は、クライアントテーブル１３０の例を繰り越して、クライアントテーブル１３０ａの例が図１からのクライアントシステム１０４ａと関連して、クライアントテーブル１３０ｎの例がクライアントシステム１０４ｎと関連する。さらに、図２は、サーバー１０２と関連するマスターテーブル１１８の例を繰り越す。クライアント側のコラボラティブサービス１２８ａおよび１２８ｎのそれぞれのインスタンスが、クライアントテーブル１３０ａおよび１３０ｎを管理して、サーバー側のコラボラティブサービス１１６が、マスターテーブル１１８を管理する。さらに、図２は、コラボレーションワークフロー１３４のインスタンスを提供して、ワークフロー１３４ａがクライアント側のコラボラティブサービス１２８ａとの間を行き来して、ワークフロー１３４ｎがクライアント側のコラボラティブサービス１２８ｎとの間を行き来する。図２を見ると理解されるように、図２に示す種々のデータフローを、コラボレーションワークフロー１３４ａおよび１３４ｎについてさらに詳述する。
【００２６】
処理フローおよびデータフロー２００をより詳細に参照すると、ブロック２０２は、１つまたは複数の構造化されたデータ要素がクライアントシステムからサーバーへパブリッシュされるように、ユーザーが要求することを可能にするユーザーインターフェース（ＵＩ）を提供するクライアントシステム（例えば、クライアント側サービス１２８ｎに関連するクライアントシステム１０４ｎ）を表す。そのような構造化されたデータ要素の例は、テーブルを含むことができて、テーブルは、行と列とにより配列されて、その交点に定義されるセルを有するデータ構造の集合を表す。これらのセルは、ユーザーにより選択またはプログラムされるようなデータ、式、またはラベルを含むことができる。ブロック２０２は、明示的なユーザーコマンドに応答してＵＩを提供することを含むことができる、または、ある組の条件に応答して自動的にＵＩを提供することを含むことができる。
【００２７】
ブロック２０２に提供されるＵＩに応答して、ユーザー２０４は、１つまたは複数のテーブルをパブリッシュするために選択することができる。例えば、ユーザーは、それぞれ異なる機能を実行するための複数の異なるテーブルまたはワークシートをプログラムして、１つまたは複数のこれらのテーブルまたはワークシートをパブリッシュするために選択し、他のユーザーがこれらのテーブルまたはワークシートを用いた作業で共同の作業をすることを可能にする。ユーザーは、同じワークシートから複数のテーブルをパブリッシュすることを選択することができる。ユーザーは、テーブルまたはワークシートの全体をパブリッシュするために選択しても良いし、その一部分を選択しても良い。図２では、そのようなテーブルの選択を２０６で示し、処理ブロック２０８は、これらの選択２０６を受信することを表現する。例えば、ブロック２０８には、マウスのクリック、選択、またはハードウェアおよび／もしくはソフトウェアにより搬送されるような適切な信号および／またはイベントで表されるユーザーからの他の応答の表示を受信することを含むことができる。
【００２８】
ブロック２１０は、ユーザーがパブリッシュのために選択したテーブルを送信することまたは伝送することを表現する。図２では、これらの選択されたテーブルを２１２で示す。図２に明示的には示されないが、ブロック２０２、２０８および２１０は、あらゆる回数繰り返されて、ユーザーが、他のユーザーにパブリッシュするために構造化されたデータの複数のインスタンスを選択することを可能にすることができる。
【００２９】
サーバー側サービス１１６に関連するサーバーにおいて、ブロック２１４は、１つまたは複数のクライアントシステムに、テーブル（例えば、２１２）がパブリッシュされて実行に使用できるという通知を送信することを表現する。可能性のある実装を制限することなく、本明細書において使用される用語の「パブリッシュ」は、テーブルを共通の場所またはライブラリに置くことを引用することができる。ただし、あらゆる数の他のクライアント（および／または対応するユーザー）が、これらのパブリッシュされたテーブルを介して閲覧できて、１つまたは複数のこれらのテーブルをコラボレーションするために選択することができる。実装において、パブリッシュされたテーブルのこれらの場所またはライブラリは、不定の数のクライアントまたはユーザーがライブラリにアクセスして、コラボレーション用のテーブルの共有されたコピーを取得することができるという意味において、制約がないとすることができる。既定のクライアントがテーブルをパブリッシュするときに、そのクライアントは、最終的に他のどのクライアントがパブリッシュされたテーブルを共有するのか分からないであろう。
【００３０】
図２は、使用可能なテーブルの通知を２１６により示して、これらのテーブル２１６は、クライアントサービス１２８ｎによりパブリッシュされるようなテーブル２１２を、他のクライアントサービスおよび関連するクライアントシステムによりパブリッシュされる他のテーブルも同様に、含むことができる。使用可能なテーブル２１６を、ライブラリへ体系化することができて、パブリッシュされた種々のテーブルへのエントリを含むことができる。
【００３１】
サーバーシステムおよびクライアントシステムは、クライアントシステムにより選択可能な、候補のデータ要素（例えば、上に与えた例示的な階層構造において示すように、テーブル、データコラボレーション構造、またはそのあらゆる部分）の組を体系化する１つまたは複数のプロトコルを定義することができる。これらのプロトコルは、これらの候補のデータ要素のうちのどれが、個別のクライアントシステムにより選択されたのかを識別することができる。例えば、これらのプロトコルにより、候補のデータ要素を体系化し、一意的な識別子を候補のデータ要素のそれぞれと関連付けることができる。可能性のある実装を制限するのではなく、本明細書において容易に参照できるように、本説明は、これらの候補のデータ要素に関連づけられた一意的なデータポイント識別子にをそれぞれ引用する。従って、ブロック２１４は、これらの識別子のインスタンスを、サーバーシステムからクライアントシステムへパブリッシュされる使用可能なテーブル２１６内の要素にそれぞれ関連付けることを含むことができる。コラボレーションサービス１２８および１１６は、ユーザーが識別子を見ることを明示的に選択しない場合、これらの識別子をユーザーに対して見えないように保持する。加えて、パブリッシュまたはコントリビュートするクライアントに関連するコラボレーションサービス１２８ｎは、個別のクライアントによりパブリッシュまたはコントリビュートされるそれらのテーブルに関連する識別子を受信して、これらのパブリッシュおよびコントリビュートされるテーブルへの変更を、後に追跡し一致させることを容易にすることができる。
【００３２】
クライアント側サービス１２８ａに関連する他のクライアントシステム（例えば、１０４ａ）において、ブロック２１８は、テーブル、ワークブック、または他のクライアントによりパブリッシュされ、従ってクライアントシステム１０４ａが実行するのに使用可能である他の構造化されたデータ要素を公開するＵＩを提供することを表現する。クライアントシステム１０４ａに関連するユーザー２２０は、このＵＩをレビューして、ＵＩで提供される１つまたは複数の使用可能な構造化されたデータ要素を選択することができる。図２は、これらの選択を２２２により示す。
【００３３】
次に、ブロック２２４は、クライアント・サービス・モジュール１２８ａが、構造化されたデータ要素（例えば、テーブル、ワークシート、行、列、またはそのような構造化されたデータ要素他の構造）の選択をユーザーから受信することを表現する。例えば、ブロック２２４（上述のブロック２０８と同様に）は、マウスのクリック、選択、またはハードウェアおよび／またはソフトウェアにより搬送されるような適切な信号および／またはイベントで表現されるユーザーからの他の応答の表示を受信することを含むことができる。
【００３４】
ブロック２２６は、ユーザーがどのテーブルを選択したかについての表示を、クライアントシステムが送信することを表現する。ユーザーが１つまたは複数のこれらの使用可能なテーブルを選択した後、ブロック２２６は、２２８で示すように、ユーザーがどのテーブルまたはデータ要素を選択したかを、サーバーシステムに通知することができる。これらの通知または表示２２８は、図２に示すように、選択されたデータ要素の識別子を含むことができる。
【００３５】
マスターテーブル１１８を保持するサーバーシステムにおいて、ブロック２３０は、クライアントシステムから選択２２８を受信することを表現する。上記のように、選択２２８は、選択されたデータ要素に対応する１つまたは複数の識別子を参照する。次に、ブロック２３２は、選択されたデータ要素をマスターテーブル（例えば、１１８）から検索することを表現する。ブロック２３２は、選択２２８に含まれる入力された識別子をマスターテーブルへのインデックスとして使用することを含むことができる。ブロック２３４は、選択されたデータ要素を、これらのデータ要素を要求したクライアントシステムに送信することを表現する。図２は、これらの送信されるデータ要素を２３６により示す。
【００３６】
クライアントシステムにおいて、ブロック２３８は、ユーザーが以前に選択（すなわち選択２２２）した要求されたデータ要素を受信することを表現する。図２は、クライアントテーブル１３０ａが、別のクライアントテーブル１３０ｎからパブリッシュされるデータ要素を受信する例を例示する。一方において、ここに図３に示すように、あらゆる数のクライアントテーブルが、このクライアントテーブル１３０ｎからパブリッシュされるデータ要素を受信することができる。加えて、あらゆる数のクライアントテーブルが、データ要素をパブリッシュして、他のユーザーと共同の作業をすることができる。
【００３７】
制限ではなく、説明を明確にするために、処理フローおよびデータフロー２００の説明は、図２に見られるページから離れる参照部分により示されるように、図３へ続く。議論は、図３へ進んで、説明を続ける。
【００３８】
図３は、一般に３００により示され、クライアントシステムが、サーバーから受信した構造化されたマスターデータにローカルフォーマットを適用することを可能にする処理フローおよびデータフローを例示する。可能性のある実装を制限するのではなく、説明を容易にするために、図３は、前の図面から参照番号を繰り越して、同様の要素を参照する。
【００３９】
図３に示すように、クライアントテーブル１３０ａが、図２から繰り越される。さらに、図３は、別のクライアントシステムにより保持される別のクライアントテーブル１３０ｍを与えるが、この別のクライアントシステムもまた、１つまたは複数のデータ要素をサーバーシステムに要求して受信したと仮定する。図３は、クライアント側のコラボラティブサービス１２８ｍを例示して、クライアントテーブル１３０ｍを保持している。クライアントテーブル１３０ｍが受信したデータ要素は、クライアントテーブル１３０ａが要求して受信したものと同一とすることができる、または同一でないとすることができる。
【００４０】
クライアントテーブル１３０ａを参照すると、図２からの処理は、ブロック３０２に進み、マスターテーブルから受信したデータ要素をローカルなクライアントテーブル１３０ａにマージすることを表現する。例えば、クライアントテーブル１３０ａは、クライアントテーブル１３０ａに関連するユーザーに個人的なまたはローカルな、あるデータを保持することができて、パブリッシュされたデータ要素のいくつかの要素を要求して、ローカルまたは個人的なデータを増加させることができる。従って、ブロック３０２は、サーバーシステムから受信したような、パブリッシュされたデータ要素（例えば、図２の２３６）を、クライアントテーブル１３０ａに記憶されるあらゆるローカル／個人的な情報に統合することを含むことができる。さらに、ブロック３０２は、これらのデータ要素がクライアントテーブル１３０ａに統合された後、パブリッシュされたデータ要素と共に受け取られるようなあらゆる識別子またはインデックスの情報を保持することを含むことができる。以下にさらに説明するように、識別子またはインデックスの情報により、クライアントテーブル１３０ａ内にローカルになされる変更の追跡を可能にすることができて、これらの変更をサーバーシステムに戻して報告することおよびその変更を複数のコラボレートするクライアントシステムにわたり伝えることを可能にすることができる。
【００４１】
ブロック３０４は、あらゆるローカルなフォーマッティング、ソート、フィルタリング、またはローカルなユーザー（例えば、２２０）により要求されるような他のローカルなカスタマイズを適用することを表現する。例えば、ローカルなユーザーは、自分のデータが一定の色、境界線、影等により提供されるよう要求することができる。別の例において、ローカルなユーザーは、コマンドを発行して、ローカルなテーブルを、ある方法でソートすることができる。さらに別の例において、ローカルなユーザーは、コマンドを発行して、あるデータをローカルなテーブル内においてフィルタリングまたは非表示にすることができる。
【００４２】
ブロック３０６は、ローカルなテーブルをユーザー２２０に提供すること、あらゆるローカルに指定されるフォーマッティング、フィルタリング、ソート、または他の操作をローカルなテーブルに適用させること、およびサーバーシステムから受信したあらゆるマスターデータ要素を統合させることを表現する。ブロック３０６は、マスターデータ要素をハイライトすることまたは別のやり方で示すことを含むことができて、どのデータがローカルであるか、どのデータが外部であるか（すなわち、サーバーシステムからなのか他のクライアントシステムからなのか）を、ローカルなユーザー２２０が容易に把握できるようにする。図３は、３０８により、ローカルな指定３１０（例えば、フォーマッティング、ソート、フィルタリング、または同様のカスタマイズ）に応答して、ユーザー２２０に提供されるようなローカルなテーブルを示す。
【００４３】
クライアントテーブル１３０ｍおよび関連するコラボレーションサービス１２８ｍを他に受信することを参照すると、ブロック３１２、３１４、および３１６は、ブロック３０２、３０４、および３０６において説明した処理に対応して、他のローカルなクライアントテーブル１３０ｍに対して実行される。特に、ブロック３１４には、フォーマッティング、ソート、フィルタリング、または、ユーザー３２０により指定されるローカルな指定またはコマンド３１８に応答して、ローカルなクライアントテーブル１３０ｍをローカルにカスタマイズすること、を含むことができる。図３では、３２２にて、ユーザー３２０に対して提供されるようなローカルなテーブルを示す。しかし、ローカルなクライアントテーブル１３０ａに対するローカルな指定３１０は、ローカルなクライアントテーブル１３０ｍに対するローカルな指定３１８とは異なり得る。このようにして、クライアントシステム（より具体的には、サービス１２８ａおよび１２８ｍ）では、異なるユーザー２２０および３２０が、自分たちのローカルなテーブル１３０ａおよび１３０ｍを自分たちの指定に従って異なってカスタマイズすることを可能にすることができる。例えば、ユーザー２２０および２３０は、自分たちのローカルなテーブル１３０ａおよび１３０ｍを異なってソートまたはフィルタリングすることができる。
【００４４】
点線３２４および３２６で示すように、ローカルなテーブル１３０ａおよび１３０ｍには、サーバーシステムから受け取られた少なくともいくつかのマスターデータ要素を、マスターデータ要素がローカルなテーブルに統合された状態において含むことができる。識別子は、ローカルなテーブル内においてマスターデータ要素を識別して体系化する働きをすることができる。可能性のある実装を制限するのではなく、例示を容易にするために、処理フローおよびデータフロー３００の説明は、図３に示すページから離れる参照部分により示されるように、図４に続く。
【００４５】
図４は、それぞれ異なるクライアントテーブル内のマスター・テーブル・データに対してなされる進行中の変更または修正を操作することに関連する処理フローおよびデータフロー４００を例示する。さらに、図４は、それらの変更または修正をマスターテーブルに統合すること、およびそれらの変更を様々な異なるクライアントシステムにわたり伝えることを例示する。可能性のある実装するのではなく、説明を容易にするために、図４では、前の図面から参照番号を繰り越し、同様の要素を参照する。
【００４６】
図３からのページから離れる参照部分を始まりとし、ブロック４０２は、１つまたは複数のコマンドをユーザー（例えば、ユーザー２２０）から受信することを表現する。これらのコマンドは、一般に、ローカルデータまたは個人的データを対象とするかに関わらないクライアントテーブル１３０ａに対するあらゆる更新、または、サーバーシステムから受け取られたマスターデータ対するあらゆる更新、を表すことができる。図４では、これらのコマンドを一般に４０４で示す。
【００４７】
ユーザーがマスターテーブルから受信したデータ要素を更新したインスタンスにおいて、ブロック４０６は、マスター・テーブル・データに対する更新をサーバーシステムに送信することを表現する（例えば、サービス１１６）。図４は、これらの更新を４０８により示し、これらの更新は、クライアントレベルで変更されたデータ要素に対応する識別子を参照することができる。更新４０８は、識別子、関係する列への参照、および新しい値が含まれるそれぞれの変更記録を含むことができる。変更は、効率化のためにバッチ処理することができる。さらに、変更は、クライアントがネットワークから切断されるとき、またはむしろオフラインのモードにあるときに、バッチ処理をすることができる。
【００４８】
サーバーシステムにおいて、ブロック４１０は、マスターテーブルに対する更新４０８を受信することを表現する。次に、ブロック４１２は、クライアントシステムから受信したこれらの更新をマスターテーブルにマージすることを表現する。ブロック４１２は、更新４０８から識別子を取り出すこと、示される識別子に対応す、マスターテーブルの一部分（例えば、１１８）にアクセスすること、およびマスターテーブルの適切な部分を更新することを含むことができる。
【００４９】
コラボラティブサービスコンポーネント１２８ｍを参照すると、このサービスコンポーネントは、別のユーザー（例えば、３２０）に、このコンポーネント１２８ｍにより管理されるクライアントテーブル（例えば、図３の１３０ｍ）を更新することを可能にすることができる。より具体的には、ブロック４１４は、更新コマンドをユーザー３２０から受信することを表現して、図４は、これらのコマンドを４１６により示す。コマンド４１６に応答して、サービスコンポーネント１２８ｍは、クライアントテーブルを適宜更新することができる。ブロック４０２について上に議論したように、これらの更新は、ローカル／個人的データに対する更新を、クライアントテーブルに包含されるマスターデータに対する更新も同様に、含むことができる。ユーザーコマンドにより、結果としてマスターデータ要素に対する変更がなされる場合、ブロック４１８は、マスターデータ要素が結び付けられるサーバーシステムに対するあらゆるそのような更新を送信することを表現する。図４は、これらの更新を４２０により示す。
【００５０】
サーバー側コラボレーションサービス１１６に戻り、（上述の）ブロック４１０は、クライアントサービスコンポーネント１２８ａからの更新だけでなく、クライアントサービスコンポーネント１２８ｍからの更新も受信することを含むことができる。言い換えると、ブロック４１０は、更新４０８および／または更新４２０を、図４には示されない他のクライアントからの更新も同様に、受信することを含むことができる。加えて、ブロック４１２は、これらの更新を、サーバーシステムにより保持されるマスターテーブルに統合することまたはマージすることを含むことができる。識別子は、この統合することまたはマージすることを、マスターデータのどの部分がクライアントシステムにより変更されたのかを指定することによって、容易にすることができる。全てのクライアントシステムにわたってまとめられた、これらの識別子は、マスターデータのどの部分を更新してクライアントに再パブリッシュするのかを示すであろう。
【００５１】
ブロック４２２は、マスターテーブルに対する更新を異なるクライアントにわたってパブリッシュすることを表現する。より具体的には、クライアントサービスコンポーネント１２８ｍが、サーバーシステムに結び付けられる、あるマスターデータを変更したと仮定すると、ブロック４２２は、これらの変更または更新をクライアントサービスコンポーネント１２８ａにパブリッシュすることを含むことができる。さらに、ブロック４２２は、これらの変更を、マスターデータをサブスクライブしたあらゆる他のクライアントシステムにパブリッシュすることを含むことができる。ＨＴＴＰのコンテキストにおいて、ブロック４２２は、クライアントからのポーリングに応答するサーバー側サービスを含むことができる。
【００５２】
同様にして、クライアントサービスコンポーネント１２８ａがサーバーシステムに結び付けられる、あるマスターデータに変更を加えた場合、ブロック４２２は、この変更を、クライアントサービスコンポーネント１２８ｍおよびマスターデータをサブスクライブしているあらゆる他のクライアントシステムにパブリッシュすることを含むことができる。図４は、４２４において、クライアントサービスコンポーネント１２８ａへパブリッシュされるマスターテーブル更新を示して、４２６において、クライアントサービスコンポーネント１２８ｍへパブリッシュされるマスターテーブル更新を示す。これらの更新は、個々の変更により影響を受けるマスターテーブルの識別子を参照することができる。
【００５３】
クライアントサービスコンポーネント１２８ａにおいて、ブロック４２８は、他のクライアントシステムによりマスター・テーブル・データに対してなされる変更を示すテーブル更新４２４を受信することを表現する。次に、ブロック４３０は、これらの更新をローカルなクライアントテーブル（例えば、図３の１３０ａ）にマージすることを表現する。識別子パラメーターは、マスター・テーブル・データのどの部分を更新するのかをクライアントサービスコンポーネント１２８ａが判定することを可能することにより、ブロック４３０を容易にすることができる。ブロック４３２は、更新されたマスター・テーブル・データをユーザー２２０に提供することを表現する。ブロック４３２は、更新されたマスター・テーブル・データを、クライアントシステムにより保持されるあらゆるローカルデータまたは個人的データと共に提供することを含むことができる。
【００５４】
他のクライアントサービスコンポーネント１２８ｍを参照すると、一般に、ブロック４３４、４３６、および４３８は、ブロック４２８、４３０、および４３２に対応する。従って、ブロック４３４が、マスターテーブル更新４２６を受信することを表現して、ブロック４３６が、これらの更新をクライアントシステムにおけるローカルデータ表示にマージすることを表現して、ブロック４３８が、これらのマージされた更新をクライアントシステムのユーザーに対して提供することを表現する。
【００５５】
両方のクライアントシステムにおいて、クライアントサービスコンポーネント１２８ａおよび１２８ｍは、ユーザー２２０および３２０が、彼らに提供されるデータ要素と双方向通信し続ける限り、図４に示すブロックを無期限に繰り返すことができる。従って、クライアントサービスコンポーネント１２８ａは、矢印４４０により示されるように、ブロック４０２、４０６、４２８、４３０、および４３２をあらゆる回数繰り返すことができる。同様に、クライアントサービスコンポーネント１２８ｍは、矢印４４２により示されるように、ブロック４１４、４１８、４３４、４３６、および４３８をあらゆる回数繰り返すことができる。
【００５６】
上述の方法において、複数のクライアントシステムは、共有されるデータ要素（例えば、スプレッドシートのテーブル）に、コラボラティブにアクセスすることができる。いくつか場合において、複数のクライアントが、これらの共有されるデータ要素に同時にアクセスすることができる。他の場合において、いくつかのクライアントは、オフライン中になされたあらゆる変更を、次にクライアントがオンラインになるときに一致させることによって、オフラインモードであるとすることができる。更新が、同時に、お互いに順番に、またはお互いに非同期的に、生じることができる。これらのクライアントのどれかは、１つのクライアントによりなされた更新を、同じデータ要素を共有する他のあらゆるクライアントへ伝えることによって、これらの共有されるデータ要素を更新することができる。サーバーシステムは、共有されるデータ要素に割り当てられる識別子を使用して、これらの更新または変更をマージする、または一致させることができる。図２〜４において、処理フロー２００、３００、および４００について説明したが、議論は、次に、図５〜７により示される、構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーションを可能にするための上述の技術の動作例の説明に進む。
【００５７】
図５では、一般に５００により示され、２つ以上のクライアントテーブル構造間において共有されるマスターテーブル構造の例を例示する。説明の例として、可能な実装を制限しないが、図５〜７は、前の図面から参照番号を繰り越して、同様の要素を参照することができる。例えば、クライアントサービスコンポーネント１２８ａは、クライアントテーブル１３０ａを管理することができ、マスターサービスコンポーネント１１６は、マスターテーブル１１８を管理することができ、クライアントサービスコンポーネント１２８ｍは、クライアントテーブル１３０ｍを管理することができる。参照および説明の例として、図５は、コラボラティブ・サービス・コンポーネント１２８ａを介してクライアントテーブル１３０ａにアクセスする「スティーブ」という名前の架空のユーザー、およびコラボラティブ・サービス・コンポーネント１２８ｍを介してクライアントテーブル１３０ｍにアクセスする「ミリアム」という名前の架空のユーザーを例示する。図５〜７において示される例を説明する目的のために、可能な実装を制限しないが、スティーブとミリアムとは、例えば本願発明の特許出願人から利用可能なアプリケーションのＥＸＣＥＬ（登録商標）のファミリ等のスプレッドシート型のアプリケーションを使用していると仮定する。これらの例を挙げているが、本明細書の説明は、これらの個別の製品またはそのバージョンに限定されず、様々な製品および／またはあらゆる個別のベンダーから入手可能なバージョンにおいて実装することができる。
【００５８】
図５は、マスターテーブル１１８の例を与え、本明細書において「ＬｉｖｅＴａｂｌｅ」と名付けられ、サーバー（例えば、図１の１０２）上に実行しているワークブックｍａｓｔｅｒ．Ｘｌｓｘ５０２を含む。ＬｉｖｅＴａｂｌｅ１１８は、ワークブックの残りの部分に基づいていくつかの計算を実行する計算の（すなわち、「Ｃａｌｃ」）列５０４を含むことができる。以下の例において説明するように、ｃａｌｃ列は、サーバー上に存在するデータ、および／またはスティーブ、ミリアムおよび他等のコラボレートしているユーザーにより提供されるデータに基づいて値を算出する式を含むことができる。ワークブック５０２が在庫の追跡および管理のために構成されると仮定すると、ワークブックは、行５０６の第１の品目に関する情報を与えて、行５０８の第２の品目に関する情報を与えることができる。列５１０は、そのような品目の数または量を与えて、列５１２は、これらの品目がどこにあるかを示して、列５１４は、これらの品目に名前を付けることができる。これらの行と列との交点により定義されるセルは、列と行とにより伝えられる情報の個別のインスタンスを提供して記述する。
【００５９】
クライアントテーブル１３０ａを参照すると、ユーザーのスティーブは、管理者であり、彼は、「ＡｄｍｉｎＩｎｖｅｎｔｏｒｙ．ｘｌｓ」という名前のワークブック５１６を開いて、ＬｉｖｅＴａｂｌｅの少なくとも一部を、そのＬｉｖｅＴａｂｌｅから実行されるデータを修正するための命令とともにクライアントテーブル１３０ａにインポートしたと仮定する。例えば、スティーブが、行５０６および５０８の値の現在のインスタンスをマスターテーブルから受信したと仮定する。図５は、これらのインポートされた行を、クライアントテーブル１３０ａ内において実行されるとして、５０６ａおよび５０６ｂにより示す。さらに、スティーブが、５０４ａにより示すように、ｃａｌｃ列５０４をマスターテーブルからインポートしたと仮定する。クライアントテーブル１３０ａは、列５０４ａにおいて示されるように、資産「Ｆｏｏ」に対して計算された値の３００、および資産「Ｂａｒ」に対して計算された値の２０００を含む。一般に、ワークブック５１６の列は、ワークブック５０２の列に従って配置される。
【００６０】
クライアントテーブル１３０ｍを参照すると、ユーザーのミリアムは、アナリストであり、彼女は、「ＩｎｖｅｎｔｏｒｙＡｎａｌｙｓｉｓ．ｘｌｓ」という名前のワークブック５１８を開いていると仮定する。このワークブック５１８には、少なくともＬｉｖｅＴａｂｌｅの一部分を含むことができて、行５０６ｍおよび５０８ｍがマスターテーブル１１８からの行５０６および５０８に対応して、ワークブック５１８の列は、一般に、ワークブック５０２の列に従って配置される。ワークブック５１８は、「Ｔｏｔａｌ」とラベル付けされた行５２０が含まれ、行５２０に注目させている。行５２０は、ｃａｌｃ列５０４ｍから計算された値を合計して、ワークブック５０２のｃａｌｃ列５０４に対応する。さらに、ミリアムのワークブック５１８は、ミリアム、スティーブ、およびマスターテーブル１１８からのデータを実行する他のあらゆるユーザーにより報告されるような、「Ｂａｒ」品目の数を合計する行５２２を含むことができる。セル５２４では、「Ｂａｒ」品目を数えるために使用される総和の式を定義することができる。ワークブック５０２、５１６、および５１８の初期のレイアウトを説明したが、議論は、次に、図６および７に示される、共有される情報の変更をどのように処理するかについての説明に進む。
【００６１】
図６は、一般に６００により示され、１人のコラボレートしているユーザーがマスターテーブルから実行されるデータを更新するときに結果として生じる更新を例示する。これらの例において、ユーザーのスティーブは、新しい行６０２を（図５から繰り越される）彼のワークブック５１６に追加する。この新しい行６０２は、「Ｂａｒ」品目に追加のデータを提供して、これらの品目の２０がＬｏｃａｔｉｏｎ「レドモンド」において使用可能であることを示す。ワークブック５１６に対するこの更新により、図４に例示されるデータフロー４０８の例を提供することによって、クライアントシステムはマスターテーブルからの情報を更新する。従って、図６は、参照番号４０８を繰り越して、ローカルな変更により生じるマスターテーブルに対する更新にラベル付けをして、この場合、行とセルとに対する変更である。
【００６２】
マスターテーブル１１８において、コラボラティブ・サービス・モジュール１１６は、更新４０８を受信する。応答をして、ワークブック５０２は、新しい行６０２ｎを追加して、これを、異なるクライアントシステム間においてコラボレーションのために共有される構造化されたデータ要素内にて、この新しい行を識別する値（例えば、ｒｏｗ＿ｉｄ）に関連付ける。さらに、ワークブック５０２は、新しい行６０２ｎの列５１０、５１２、５１４、および５０４を更新して、更新４０８を組み込む。従って、マスターテーブルは、資産「Ｂａｒ」の２０個のインスタンスがレドモンドにおいて使用可能であることを示す。加えて、行６０２ｎ内のセル６０４は、例としてのｃａｌｃ列５０４において定義される式の新しいインスタンスを含む。マスターテーブルおよび関連するワークブック５０２がどのように変化して、スティーブのクライアントワークブック５１６からの変更を組み込むかについて説明したが、議論は、これらの変更をどのようにしてスティーブのワークブックおよびミリアムのワークブックに伝えることができるかについての説明に進む。
【００６３】
図７は、一般に７００により示され、１つのクライアントテーブルからの更新のために、マスターテーブルから伝わる更新を例示する。スティーブのローカルなテーブルおよびミリアムのローカルなテーブルの特徴を描いている上記の例を続けると、マスターテーブル１１８およびマスターワークシート５０２により、スティーブのワークシート５１６に対してなされた変更に起因する行／セルの変更をミリアムのワークシート５１８に伝えることができる。図７は、ミリアムのワークシートへのこれらの更新を、行／セルの変更７０２として示す。従って、コラボラティブサービス１２８ｍは、新しい行６０２ｍによりミリアムのワークシート５１８を更新して、他のワークシートに現れる行６０２および６０２ｎに一致する。より詳しくは、識別子（例えば、ｒｏｗ＿ｉｄパラメーター）は、ミリアムの新しい行６０２ｍを、マスターテーブルにおいて対応する行６０２ｎ、およびスティーブのワークシートにおいて対応する行６０２にリンクさせる、または結び付けることができる。このように、ミリアムのワークシートを更新して、レドモンドにおける２０の「Ｂａｒ」品目を反映する。
【００６４】
ミリアムを新しい行／セルで更新することに加えて、さらに、マスターワークシート５０２は、スティーブの変更に応答してｃａｌｃ列５０４を再計算して、スティーブとミリアムとのテーブルおよびワークシートを再計算された値により更新する。図７は、７０４により、スティーブのワークシート５１６に伝えられるようなｃａｌｃ列への更新を示して、７０６により、ミリアムのワークシート５１８に伝えられるようなｃａｌｃ列への更新を示す。更新７０２、７０４、および７０６により、図４に示されるマスターテーブルの更新４２４および４２６の例を与える。しかし、図７は、これらの更新を新しい番号により参照して、種々のクライアントテーブルへの更新の異なるタイプを個々に議論することを容易する。
【００６５】
スティーブのワークシート５１６において、更新７０４に応答して、コラボラティブなサービス１２８ａは、セル７０８ａがマスターテーブルのセル６０４の式により算出されるｃａｌｃ値を含むために、ｃａｌｃ列５０４ａを更新する。示される例において、セル７０８ａは、値「８０００」を含む。ミリアムのワークシート５１８において、更新７０２および７０４に応答して、コラボラティブサービス１２８ｍは、セル７０８ｍがマスターテーブルのセル６０４により算出されるｃａｌｃ値（例えば、「８０００」）を含むために、ｃａｌｃ列５０４ｍを更新する。ｃａｌｃ列が新しい値（すなわち、７０８ｍにおいて値「８０００」）を含むので、ミリアムの行５２０は、セル７１０の更新された合計「１０３００」により示されるように、ローカルに更新される。
【００６６】
ミリアムのテーブルが、「Ｂａｒ」とラベル付けされた品目に起因する計算された値を合計するための行５２２を含む図５の説明から呼び戻す。新しいセル７０８ｍの値「８０００」に応答して、セル５２４は、この値をセル７１２において以前から存在する値「２０００」により合計して、結果として更新された合計「１００００」になる。複数のコラボレートするクライアントにわたり伝わる行およびセルの変更について上記の例を説明したが、議論は、種々のタイプの変更についてのより詳細な例を与える。
【００６７】
行を追加および削除する動作は、影響を受ける行のｒｏｗ＿ｉｄの情報を送信することを含むことができる。クライアントテーブルが共有されるクライアントテーブルから行を削除すると、クライアントは、そのｒｏｗ＿ｉｄを含む通知をサーバーへ送信する。応答をして、マスターテーブル、および共有されるクライアントテーブルに結び付けられる他のクライアントテーブルは、テーブルの行の削除動作を、そのｒｏｗ＿ｉｄを含む行に実行する。
【００６８】
クライアントテーブルがテーブルの最後に新しい行を挿入または追加すると、クライアントテーブルは、新しい行の一時的なｒｏｗ＿ｉｄを生成することができる。次に、クライアントテーブルは、一時的なｒｏｗ＿ｉｄに関して、行追加の通知をサーバーへ送信する。サーバーは、クライアントテーブル（および他のサーバーまたはクライアントテーブル）が新しい行に使用するのであろう不変のｒｏｗ＿ｉｄを、生成して戻すことができる。マスターテーブルおよびそれに結び付けられる他のクライアントテーブルは、新しい行を、不変のｒｏｗ＿ｉｄによりテーブルへ追加する。テーブル内の新しい行の場所は、送信することができる、または送信することができない。通常、新しい行は、各テーブルの最下部に現れるが、ユーザーが同時に新しい行を追加している場合に上部に現れることがある。いくつかの実装において、新しい行の通知を、あるデータがこれによりサーバーへ送信に使用できるまでクライアントにおいて保留することができる。
【００６９】
少なくともいくつかの実装において、ソートを、クライアントテーブルのローカルなインスタンスのみに、例えば、個別のクライアントに効力のあるローカルな指定（例えば、図３の指定３１０および３１８）に応答して適用する。このように、異なるユーザーは、彼ら自身のソートを彼ら自身のクライアントテーブルに適用することができる。新しい行が現れる場合に新しい行がすぐにはソートされず、データが変更される場合に自動的にソートが適用されない。このアプローチにより、影響を受けるテーブル内のユーザーの場所が、新しい行にデータを入力している間に新しい行の下において変更されるのを防ぐことができる。編集または挿入が完了すると、ユーザーは、積極的に作動して、彼らのソートを再び適用することができる。クライアント側サービスにより、常時ソートのオプションをユーザーに提供して、新しいデータを受け取り次第自動的にソートするようにすることができる。このオプションは、分析を実行するクライアントにとって魅力的であるが、データ入力を実行するクライアントにとってそうではない。
【００７０】
クライアント側サービスにより、フィルタリング機能を提供することができて、ソートのように動作することができる。フィルタリング機能を、個別のクライアントにおけるローカルな指定（例えば、図３の３１０および３１８）に応答して実行することができる。異なるユーザーは、他のユーザーに影響を与えずに彼ら自身のフィルターを指定することができる。ソートと同様に、フィルターを、ユーザーがデータを入力するように常にデータの場所を変更しないように適合する。常時フィルターのオプションは、常時ソートのオプションと同様の値を含むことができる。
【００７１】
クライアント側サービスにより、総計の行（total-row）の性能を提供することができて、１つまたは複数の列に現れる値を合計する。この総計の行の性能は、クライアントテーブルに対してローカルであり（例えば、ローカルな指定に応答して）、ユーザーはそれを考察するか見るかどうかを選択することができる。同様の考え方を、小計の機能に適用することができる。
【００７２】
異なるユーザーが、どのテーブルスタイルを自分たちのクライアントテーブルに適用するかを選択することができる。これらのテーブルスタイルにより、指定の境界線、影、色、ハイライト、または、異なるユーザーに対して表示されるクライアントテーブルにローカルに適用される他の視覚的カスタマイズ、を指定することができる。１クライアントにおいて（例えば、ローカルな指定に応答して）適用されるローカルなカスタマイズは、通常、他のクライアントにおける表示には影響しない。
【００７３】
ユーザーは、自分のクライアントテーブルの列を、マスターテーブルに影響を与えずに再整理することができる。さらに、これらのユーザーは、マスターテーブルに影響を与えずに、望み通りに列を削除することもできる。
【００７４】
与えられたクライアントテーブルは、１つまたは複数のｃａｌｃ列を含むと仮定すると、クライアント側サービスは、クライアントテーブルのユーザーがそのクライアントテーブル内のｃａｌｃ列を編集すること、または変更をマスターテーブルに戻すことを許可しないが、コンシューマースキーマ変更プロトコルを介する場合を除く。そのようなプロトコルを除いて、列を、読み出し専用として取り扱うことができる。
【００７５】
ｃａｌｃ列が与えられたテーブルについて全体として内部的な依存関係を含む（例えば、テーブル内で２列を乗じる）場合、ｃａｌｃ列への更新を、マスターテーブルからクライアントテーブルへ押し下げて、より速いフィードバックと、オフライン処理によるより良い体験とを与えることができる。マスターテーブルは、次に説明される外部的な依存関係を有するｃａｌｃ列に関する特徴と類似して、これらのｃａｌｃ列の式を押し下げないオプションを提供することができる。
【００７６】
ｃａｌｃ列が与えられたテーブルについて外部的な少なくとも１つの依存関係を含む場合、実行するクライアントテーブルは、通常、それらの列を評価しない。代わりに、サーバーは、これらのｃａｌｃ列を評価して、結果の値を実行するクライアントテーブルに押し下げることができる。例えば、これらのｃａｌｃ列は、私設の式を含むことができて、このメカニズムにより、実際に私設の式を提供または公開することなく、私設の式を使用して計算されるクライアントテーブルの値を送信する方法を提供する。ワークブック全体を再計算するのではなく、これらの列内の値のみをクライアントに送信するので、ネットワークボリュームが削減されて、あらゆるローカルな計算を、クライアントテーブルを実行するワークブックにおいて行うことができる。ｃａｌｃ列が例外を有して外部的な依存関係を含む場合、実行するクライアントテーブルを、例外に気づかない状態にしておくことができて、実行するクライアントテーブルは、例外に対して計算された値を受信するであろう。例外が実行するクライアントテーブルに送信される列にある場合、例外の式もまた送信することができる。
【００７７】
クライアントテーブルは、そのクライアントテーブルにのみ存在するｃａｌｃ列を追加することができる。クライアントテーブルのローカルなｃａｌｃ列は、新しい行が現れると、上記のｃａｌｃ列をローカルにおくことができて、ｃａｌｃ列をローカルに計算して保持することができる。
【００７８】
同一のマスターワークブックからの複数のマスターテーブルが同一のクライアントワークブックにおいて実行される場合、クライアントワークブックにおける参照を、マスターワークブックに戻って参照することなく、クライアントにおいてローカルに解決することができる。従って、これらの参照に基づくあらゆる式を、マスターワークブックとの通信についてのオーバーヘッドを引き起こすことなく、クライアントにおいてローカルに計算することができる。
【００７９】
一般に、フォーマッティングを、異なるクライアントテーブルに個々に適用する。従って、所定のクライアントテーブル内のセルのフォーマッティングでは、クライアントテーブルのインスタンスのみがフォーマットされる。以下は、実施形態において適用されるいくつかの例外である。
【００８０】
・マスターテーブルの列に適用される数字フォーマッティングを、スキーマの一部として、その列に適用される全ての実行するクライアントテーブルに使用できるようにさせることができる。
・ブロックレベルのファーマットおよびセルのフォーマットを、最も低いレベルの優先度のフォーマッティングとして、実行クライアントテーブルに伝えることができる。
・マスターテーブル上で評価される条件付きフォーマットを、静的マスターフォーマッティングの上の優先度レベルとして、実行クライアントテーブルに伝えることができる。
・オプションを、マスターテーブル上において有効にすることができて、そのオプションが有効な場合、ユーザーが実行するクライアントテーブルにおけるフォーマッティングに対してなす変更をマスターテーブルへ返送して、そしてそこで適用される。
・マスターテーブルにより、フォーマッティングをクライアントテーブルへ降ろすことができる。いくつかのインスタンスにおいて、このフォーマッティングを、条件付きフォーマッティングであるとすることができる。いくつかのインスタンスにおいて、個別のクライアントは、そのクライアントにおけるフォーマッティングに対してローカルな指定（例えば、図３の３１０および３１８）を定義することができる。これらのインスタンスにおいて、そのクライアントにおけるコラボラティブ・サービス・モジュール（例えば、１２８）は、マスターテーブルから降ろされるようなフォーマッティングを、クライアントにおいてローカルな指定により定義されるフォーマッティングに一致させることができる。
【００８１】
一意的な識別子（例えば、ｒｏｗ＿ｉｄ）に基づくクライアントテーブル内の追跡を、ユーザーがオフラインモードである間、保持することができる。その後、ユーザーがオンラインになると、追跡を、その後マスターテーブル内に起こった変更に一致させることができる。
【００８２】
ユーザーがマスターワークブックを開く特権を有する場合、ユーザーは、マスターテーブルを編集してスキーマの変更を行うことができる。上記のスキーマの例は、次を含むことができる。
【００８３】
・列削除
・列追加、または
・計算された列の計算の変更、等
ユーザーがこれらの変更を委託すると、変更の結果を、全ての実行するクライアントテーブルに対して、実行するクライアントテーブルが次にマスターテーブルと同期するときに適用することができる。
【００８４】
ユーザーが実行しているマスターテーブルのスキーマを変更したいということを身ぶりにより示す場合、コラボラティブサービスは、彼らの許可、および上記の動作を許可するマスターテーブルにおける設定に従属して、ユーザーに許可する。クライアント側サービスは、ユーザーのローカルな変更をマスターテーブルに送信することができる。ただし、ユーザーのローカルな変更を、マスターテーブルの変更に類似して適用するだろう。
【００８５】
本明細書において説明されるツールおよび技術は、例えば、本願発明の特許出願人から利用可能なＳＨＡＲＥＰＯＩＮＴ（登録商標）プラットフォーム、または競合プラットフォーム等、ポータルベースのコラボレーション・ドキュメント管理プラットフォームにより動作することができる。例えば、ＳＨＡＲＥＰＯＩＮＴ（登録商標）テクノロジーにおけるリストにより、データの格納および編集が可能となり、スプレッドシートアプリケーションの外部において使用可能である。いくつかのインスタンスにおいて、これらのプラットフォームにより、本明細書におけるツールおよび技術に、データベースＡＰＩをマスターテーブル上に公開することを可能にして、他のテクノロジーによるＡＰＩの使用を可能にする。いくつかの場合に、リストは、マスターテーブルと結び付けることが可能であり、リストは、マスターテーブルが変更されると更新される。この特徴により、リストは、マスターテーブルが更新されると更新を受信する、またはマスターテーブルは、リストが変更されると更新を受信することができる。不一致を、出現する場合に、ＵＩによって、または行の個別のマーキングによって処理することができる。
【００８６】
本明細書に示される主題が、コンピューターの構造的特徴、および、コンピューター読み取り可能な媒体に特有の言語で説明されたが、添付の請求項に定義される本発明が必ずしも本明細書に説明された特有の特徴、動作、または媒体に限定されないことは理解されるべきである。むしろ、特有の特徴、動作、および媒体は、請求項を実装する例示の形式として開示される。
【００８７】
上記に説明される主題は、例示のみの目的で提供されるのであり、制限するものとして解釈されるべきではない。例示され説明される例示の実施形態および用途に追随することなく、かつ、以下の請求項に説明される、本発明の真の精神および範囲から逸脱することなく、種々の修正および変更を、本明細書に説明される主題に対してなすことができる。
【図１】
2011510397.tif 000004
【図２】
2011510397.tif 000005
【図３】
2011510397.tif 000006
【図４】
2011510397.tif 000007
【図５】
2011510397.tif 000008
【図６】
2011510397.tif 000009
【図７】
2011510397.tif 000010
【国際調査報告】
2011510397.tif 000011
2011510397.tif 000012