(57)【特許請求の範囲】
【請求項１】
クライアント−サーバコンピュータネットワークにおいて、サーバ記憶モデルを利用してファイルパーティションを同期させる方法であって、
クライアントコンピュータから、電子ドキュメントのコンテンツに対する編集を同期させる要求を受信するステップであって、前記コンテンツはファイルに関連し、前記ファイルは、
前記コンテンツに対する編集を含む第１のパーティションであって、前記クライアントコンピュータにクライアント第１パーティションとして記憶され、サーバコンピュータにサーバ第１パーティションとして記憶される第１のパーティションと、
前記コンテンツに対する前記編集に関連するメタデータを含む第２のパーティションであって、前記第２のパーティションは、前記クライアントコンピュータにクライアント第２パーティションとして記憶され、前記サーバコンピュータにサーバ第２パーティションとして記憶され、前記メタデータは、前記コンテンツの編集者およびドキュメントロックのうちの少なくとも１つを含む、第２のパーティションとを含むステップと、
前記クライアント第２パーティション内の前記メタデータを前記サーバコンピュータに記憶するために、前記第２のパーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させるステップであって、
前記クライアント第２パーティション内に記憶されたメタデータを、前記サーバ第２パーティション内に記憶されたメタデータと比較するステップと、
前記クライアント第２パーティション内に記憶された前記メタデータが、前記サーバ第２パーティション内に記憶された前記メタデータとは異なる場合に、第１の競合があるかどうか判定するステップと、
前記第１の競合があると判定されると、前記クライアント第２パーティション内に記憶された前記メタデータが、前記サーバ第２パーティション内に記憶された前記メタデータよりも新しいかどうか判定するステップと、
前記クライアント第２パーティション内に記憶された前記メタデータがより新しいと判定されると、前記クライアント第２パーティションを前記サーバ第２パーティションと同期させ、前記第１の競合を解決するステップとを含む、ステップと、
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記第２のパーティションを同期させる前記ステップとは独立して、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させるステップと
を含むことを特徴とする方法。
【請求項２】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記クライアント第１パーティション内に記憶された前記コンテンツに対する編集を、前記サーバ第１パーティション内に記憶された前記コンテンツに対する編集と比較するステップと、
前記サーバ第１パーティション内に記憶された前記コンテンツに対する前記編集が、前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集とは異なる場合に、第２の競合があるかどうかを判定するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記第２の競合があると判定されると、前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集より新しいかどうか判定するステップと、
前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、より新しくないと判定されると、前記クライアント第１パーティションを前記サーバ第１パーティションと同期させ、前記第２の競合を解決するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、より新しいと判定されると、前記クライアントコンピュータおよび前記サーバコンピュータとの間の前記クライアント第１パーティションの前記同期を失敗させるステップと、
前記クライアントコンピュータに、エラーの指示を送信するステップと
を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記コンテンツの前記編集者は、前記電子ドキュメントを現在編集している作成者を示すことを特徴とする請求項１に記載の方法。
【請求項６】
前記ドキュメントロックは、前記電子ドキュメントが現在編集されていることを示すことを特徴とする請求項１に記載の方法。
【請求項７】
前記サーバ第２パーティションは、前記メタデータが前記サーバ第２パーティション内に記憶された時期を示す第１のタイムスタンプを含み、前記コンテンツに対する編集を同期させる前記要求は、前記メタデータが前記クライアント第２パーティション内に記憶された時期を示す第２のタイムスタンプをさらに含み、前記クライアント第２パーティション内に記憶されたメタデータを前記サーバ第２パーティション内に記憶されたメタデータと比較するステップは、前記第１のタイムスタンプと前記第２のタイムスタンプを比較するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集に関連する前記メタデータは、前記クライアント第２パーティションのストリーム内で生成されることを特徴とする請求項１に記載の方法。
【請求項９】
コンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、コンピュータ上で実行されると、前記コンピュータに、サーバ記憶モデルを利用してファイルパーティションを同期する方法を実行させ、前記方法は、
クライアントコンピュータから、電子ドキュメントのコンテンツに対する編集を同期させる要求を受信するステップであって、前記コンテンツはファイルに関連し、前記ファイルは、
前記コンテンツに対する編集を含む第１のパーティションであって、前記クライアントコンピュータにクライアント第１パーティションとして記憶され、サーバコンピュータにサーバ第１パーティションとして記憶される第１のパーティションと、
前記コンテンツに対する前記編集に関連するメタデータを含む第２のパーティションであって、前記第２のパーティションは、前記クライアントコンピュータにクライアント第２パーティションとして記憶され、前記サーバコンピュータにサーバ第２パーティションとして記憶され、前記メタデータは、前記コンテンツの編集者およびドキュメントロックのうちの少なくとも１つを含む、第２のパーティションとを含むステップと、
前記クライアント第２パーティション内の前記メタデータを前記サーバコンピュータに記憶するために、前記第２のパーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させるステップであって、
前記クライアント第２パーティション内に記憶されたメタデータを、前記サーバ第２パーティション内に記憶されたメタデータと比較するステップと、
前記クライアント第２パーティション内に記憶された前記メタデータが、前記サーバ第２パーティション内に記憶された前記メタデータとは異なる場合に、第１の競合があるかどうか判定するステップと、
前記第１の競合があると判定されると、前記クライアント第２パーティション内に記憶された前記メタデータが、前記サーバ第２パーティション内に記憶された前記メタデータよりも新しいかどうか判定するステップと、
前記クライアント第２パーティション内に記憶された前記メタデータがより新しいと判定されると、前記クライアント第２パーティションを前記サーバ第２パーティションと同期させ、前記第１の競合を解決するステップとを含む、ステップと、
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記第２のパーティションを同期させる前記ステップとは独立して、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させるステップと
を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項１０】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記クライアント第１パーティション内に記憶された前記コンテンツに対する編集を、前記サーバ第１パーティション内に記憶された前記コンテンツに対する編集と比較するステップと、
前記サーバ第１パーティション内に記憶された前記コンテンツに対する前記編集が、前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集とは異なる場合に、第２の競合があるかどうかを判定するステップと
を含むことを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記第２の競合があると判定されると、前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集より新しいかどうか判定するステップと、
前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、より新しくないと判定されると、前記クライアント第１パーティションを前記サーバ第１パーティションと同期させ、前記第２の競合を解決するステップと
を含むことを特徴とする請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、より新しいと判定されると、前記クライアントコンピュータおよび前記サーバコンピュータとの間の前記クライアント第１パーティションの前記同期を失敗させるステップと、
前記クライアントコンピュータに、エラーの指示を送信するステップと
を含むことを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記コンテンツの前記編集者は、前記電子ドキュメントを現在編集している作成者を示すことを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記ドキュメントロックは、前記電子ドキュメントが現在編集されていることを示すことを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１５】
コンピュータシステムであって、
少なくとも１つの処理装置と、
コンピュータ実行可能命令を記憶し、前記少なくとも１つの処理装置に接続された少なくとも１つのメモリであって、前記コンピュータ実行可能命令は、前記少なくとも１つの処理装置によって実行されると、前記コンピュータシステムに、クライアント−サーバコンピュータネットワークにおいて、サーバ記憶モデルを利用してファイルパーティションを同期させる方法を実行させ、前記方法は、
クライアントコンピュータから、電子ドキュメントのコンテンツに対する編集を同期させる要求を受信するステップであって、前記コンテンツはファイルに関連し、前記ファイルは、
前記コンテンツに対する編集を含む第１のパーティションであって、前記クライアントコンピュータにクライアント第１パーティションとして記憶され、サーバコンピュータにサーバ第１パーティションとして記憶される第１のパーティションと、
前記コンテンツに対する前記編集に関連するメタデータを含む第２のパーティションであって、前記第２のパーティションは、前記クライアントコンピュータにクライアント第２パーティションとして記憶され、前記サーバコンピュータにサーバ第２パーティションとして記憶され、前記メタデータは、前記コンテンツの編集者およびドキュメントロックのうちの少なくとも１つを含む、第２のパーティションとを含むステップと、
前記クライアント第２パーティション内の前記メタデータを前記サーバコンピュータに記憶するために、前記第２のパーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させるステップであって、
前記クライアント第２パーティション内に記憶されたメタデータを、前記サーバ第２パーティション内に記憶されたメタデータと比較するステップと、
前記クライアント第２パーティション内に記憶された前記メタデータが、前記サーバ第２パーティション内に記憶された前記メタデータとは異なる場合に、第１の競合があるかどうか判定するステップと、
前記第１の競合があると判定されると、前記クライアント第２パーティション内に記憶された前記メタデータが、前記サーバ第２パーティション内に記憶された前記メタデータよりも新しいかどうか判定するステップと、
前記クライアント第２パーティション内に記憶された前記メタデータがより新しいと判定されると、前記クライアント第２パーティションを前記サーバ第２パーティションと同期させ、前記第１の競合を解決するステップとを含む、ステップと、
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記第２のパーティションを同期させる前記ステップとは独立して、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させるステップと
を含むことを特徴とするコンピュータシステム。
【請求項１６】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記クライアント第１パーティション内に記憶された前記コンテンツに対する編集を、前記サーバ第１パーティション内に記憶された前記コンテンツに対する編集と比較するステップと、
前記サーバ第１パーティション内に記憶された前記コンテンツに対する前記編集が、前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集とは異なる場合に、第２の競合があるかどうかを判定するステップと
を含むことを特徴とする請求項１５に記載のコンピュータシステム。
【請求項１７】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記第２の競合があると判定されると、前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、前記クライアント第１パーティション内に記憶された前記コンテンツに対する前記編集より新しいかどうか判定するステップと、
前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、より新しくないと判定されると、前記クライアント第１パーティションを前記サーバ第１パーティションと同期させ、前記第２の競合を解決するステップと
を含むことを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１８】
前記コンテンツに対してなされた前記編集を前記サーバコンピュータに記憶するために、前記クライアント第１パーティションを前記クライアントコンピュータと前記サーバコンピュータとの間で同期させる前記ステップが、
前記サーバ第２パーティション内に記憶された前記コンテンツに対する前記編集が、より新しいと判定されると、前記クライアントコンピュータおよび前記サーバコンピュータとの間の前記クライアント第１パーティションの前記同期を失敗させるステップと、
前記クライアントコンピュータに、エラーの指示を送信するステップと
を含むことを特徴とする請求項１７に記載のコンピュータシステム。
【請求項１９】
前記コンテンツの前記編集者は、前記電子ドキュメントを現在編集している作成者を示すことを特徴とする請求項１５に記載のコンピュータシステム。
【請求項２０】
前記ドキュメントロックは、前記電子ドキュメントが現在編集されていることを示すことを特徴とする請求項１５に記載のコンピュータシステム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント−サーバコンピュータネットワークにおけるファイルパーティションの同期に関する。
【背景技術】
【０００２】
クライアント−サーバコンピュータネットワークでは、電子ドキュメントファイルを、複数のユーザによって異なるクライアントコンピュータから編集することができる。電子ドキュメントファイルには、主ドキュメントファイルのコンテンツとは異なり、かつそのコンテンツから独立した関連する編集セッションデータ（例えば、メタデータ（ｍｅｔａｄａｔａ））が含まれ得る。電子ドキュメントファイルは、その電子ドキュメントファイルに対して加えられたいかなる編集も記憶するように、クライアントコンピュータと中央サーバとの間で同期させ、こうした編集は、その後ネットワーク内の他のクライアントコンピュータのユーザが見ることができる。既存の同期方法では、関連するいかなるメタデータも、電子ドキュメントファイルに対して加えられた編集と共に同期させなければならない。特に、マークアップ言語、またはＯＬＥ（ｏｂｊｅｃｔ  ｌｉｎｋｉｎｇ  ａｎｄ  ｅｍｂｅｄｄｉｎｇ）複合ドキュメントでは、メタデータは、拡張ファイル形式として、同期させることができる。同期の結果、電子ドキュメントファイルに関連するメタデータは、その電子ドキュメントファイルを同期させているユーザがそのメタデータを他のユーザに見られる、または（電子ドキュメントファイル内に）ダウンロードされることを望まない場合であっても、サーバ上で自動的にエクスポーズされることになる。本発明の様々な実施形態は、上記およびその他の考慮すべき点に関してなされた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願第１２／１１３，９７５号明細書
【発明の概要】
【０００４】
この概要は、以下の詳細な説明でさらに説明する概念の抜粋を簡略な形で提示するものである。この概要は、特許請求する主題の重要な特徴、または本質的な特徴を特定するものでも、特許請求する主題の範囲を決定する一助となるものでもない。
【０００５】
クライアント−サーバコンピュータネットワークにおいて、サーバ記憶モデルを利用してファイルパーティションを同期させる実施形態を示す。電子ドキュメントのコンテンツに対する編集は、クライアントコンピュータで受信することができる。このコンテンツは、サーバコンピュータに記憶されたファイルの第１のパーティション内に含めることができる。第１のパーティションは、電子ドキュメントコンテンツを含む第１のストリームを含むことができる。ファイルは、複数のパーティションを含むことができ、各パーティションは、１つまたは複数のストリームを含むことができる。クライアントコンピュータは、ファイルの第２のパーティション内で、メタデータを生成することができる。メタデータは、第１のパーティション内の電子ドキュメントコンテンツに対する編集と関連付けることができる。次いで、第２のパーティションをサーバコンピュータと個別に同期させて、メタデータを記憶することができる。次いで、第１のパーティションをサーバコンピュータと個別に同期させて、電子ドキュメントコンテンツに対して加えられた編集を記憶することができる。
【０００６】
上記およびその他の特徴ならびに利点は、以下の詳細な説明を読み、関連する図面を参照すると明白となるであろう。前述の概要、および以下の詳細な説明はどちらも、単なる例示にすぎず、特許請求する本発明を限定するものではないことを理解されたい。
【図面の簡単な説明】
【０００７】
【図１】様々な実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させることができるクライアント−サーバネットワークアーキテクチャを示すブロック図である。
【図２】様々な実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させることができるクライアントコンピューティング環境を示すブロック図である。
【図３】ある実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させるルーチンを示す流れ図である。
【図４】図３に記載の実施形態に従い、サーバ記憶モデルを利用して単一のファイルパーティションを同期させるルーチンを示す流れ図である。
【図５】図３に記載の実施形態に従い、サーバ記憶モデルを利用してもう１つのファイルパーティションを同期させるルーチンを示す流れ図である。
【図６】別の実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させるルーチンを示す流れ図である。
【図７】図６に記載の実施形態に従い、サーバ記憶モデルを利用して第２のクライアントコンピュータのファイルパーティションを同期させるルーチンを示す流れ図である。
【発明を実施するための形態】
【０００８】
クライアント−サーバコンピュータネットワークにおいて、サーバ記憶モデルを利用してファイルパーティションを同期させる実施形態を示す。電子ドキュメントのコンテンツに対する編集は、クライアントコンピュータで受信することができる。このコンテンツは、サーバコンピュータに記憶されたファイルの第１のパーティション内に含めることができる。第１のパーティションは、電子ドキュメントコンテンツを含む第１のストリームを含むことができる。ファイルは、複数のパーティションを含むことができ、各パーティションは、１つまたは複数のストリームを含むことができる。クライアントコンピュータは、ファイルの第２のパーティション内で、メタデータを生成することができる。メタデータは、第１のパーティション内の電子ドキュメントコンテンツに対する編集と関連付けることができる。次いで、第２のパーティションをサーバコンピュータと個別に同期させて、メタデータを記憶することができる。次いで、第１のパーティションをサーバコンピュータと個別に同期させて、電子ドキュメントコンテンツに対して加えられた編集を記憶することができる。
【０００９】
以下の詳細な説明では、本明細書の一部を成す添付の図面を参照するが、これらの図面は特定の実施形態または実施例を例によって示すものである。本発明の趣旨または範囲から逸脱することなく、これらの実施形態を組み合わせること、他の実施形態を利用すること、および構造に変更を行うことができる。したがって、以下の詳細な説明は、限定的な意味で解釈すべきではなく、本発明の範囲は、添付の特許請求の範囲、およびその均等物によって規定されるものである。
【００１０】
次に、図面を参照しながら本発明の様々な態様を説明するが、図面は、いくつかの図を通して同じ符号は同じ要素を示す。図１は、様々な実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させることができるクライアント−サーバネットワークアーキテクチャを示すブロック図である。このネットワークアーキテクチャは、クライアントコンピュータ２およびクライアントコンピュータ６を含み、どちらもネットワーク４を介してサーバコンピュータ７０と通信する。ネットワーク４には、ローカルネットワークまたは広域ネットワーク（例えば、インターネット）が含まれ得る。
【００１１】
クライアントコンピュータ２は、生産性アプリケーション３０を記憶することができ、このアプリケーション３０を用いて、電子ドキュメントファイル４０（やはりクライアントコンピュータ２に記憶されている）を編集することができる。様々な実施形態によれば、生産性アプリケーション３０は、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ製のＷＯＲＤ文書作成ソフトウェア、ＰＯＷＥＲＰＯＩＮＴプレゼンテーショングラフィクスプログラム、およびＧＲＯＯＶＥソフトウェアを備えることができる。しかし、本明細書に記載の様々な実施形態によれば、他の製造者製の他の生産性プログラムまたはアプリケーションプログラムも使用することができることを理解されたい。
【００１２】
電子ドキュメントファイル４０は、ネットワーク４を介してサーバコンピュータ７０からダウンロード操作することによって、クライアントコンピュータ２で受信することができ、または、電子ドキュメントファイル４０は、クライアントコンピュータ２の生産性アプリケーション３０によって生成することができる。電子ドキュメントファイル４０は、パーティション５０を含むことができる。パーティション５０は、ストリーム５２および５６を含むことができる。ストリーム５２は、コンテンツ５４Ａ（すなわち電子ドキュメントコンテンツ）をさらに含むことができる。電子ドキュメントファイル４０はまた、パーティション６０を含むことができる。パーティション６０は、ストリーム６２および６８を含むことができる。ストリーム６２は、メタデータ６４Ａをさらに含むことができる。ある実施形態によれば、メタデータ６４Ａは、パーティション５０内に記憶されたコンテンツ５４Ａと関連付けることができる。特に、メタデータ６４Ａは、コンテンツ５４Ａの１人または複数人の作成者を記載した作成者リスト６７Ａと、電子ドキュメントファイル４０の現在のユーザ（例えば、現在コンテンツ５４Ａを編集しているユーザ）を記載したドキュメントロック６６Ａとを含むことができる。
【００１３】
様々な実施形態によれば、「パーティション」は、ファイル（電子ドキュメントファイル４０など）内の「ファイル」として定義され、１つまたは複数のストリームを含むことができる。パーティション内に含まれる「ストリーム」は、電子ドキュメントファイルに関連するデータ（コンテンツ５４Ａまたはメタデータ６４Ａなど）を含む。ファイル内の各パーティションは、互いに独立に、かつ異なる同期速度で同期させることができる（すなわち、単一のファイル内のパーティションを、異なる時間で同期させることができる）ことを理解されたい。さらに、同じパーティション内の複数のストリームは、互いに関連するが、異なるパーティション内のストリーム間では関連がなくともよい。例えば、ストリーム５６は、電子ドキュメントコンテンツに関連する（したがって、ストリーム５２に関連する）データを含むが、電子ドキュメントファイル４０に関連するメタデータは含まなくともよい。さらに、所与のパーティション内の複数のストリームを同時に同期させ、それによって同じパーティション内のストリーム間で整合性を保証する。
【００１４】
クライアントコンピュータ６は、生産性アプリケーション３０を記憶することができ、このアプリケーション３０をやはり用いて、電子ドキュメントファイル４０（やはりクライアントコンピュータ６に記憶されている）を編集することができる。電子ドキュメントファイル４０は、ネットワーク４を介してサーバコンピュータ７０からダウンロード操作することによって、クライアントコンピュータ６で受信することができ、または、電子ドキュメントファイル４０は、クライアントコンピュータ６の生産性アプリケーション３０によって生成することができる。電子ドキュメントファイル４０は、パーティション５０を含むことができる。パーティション５０は、ストリーム５２および５６を含むことができる。ストリーム５２は、コンテンツ５４Ｂ（すなわち電子ドキュメントコンテンツ）をさらに含むことができる。電子ドキュメントファイル４０はまた、パーティション６０を含むことができる。パーティション６０は、ストリーム６２および６８を含むことができる。ストリーム６２は、メタデータ６４Ｂをさらに含むことができる。様々な実施形態によれば、「メタデータ」は、パーティション内のストリームに含まれるコンテンツを表すことを理解されたい。ある実施形態によれば、メタデータ６４Ｂは、パーティション５０内に記憶されたコンテンツ５４Ｂと関連付けることができる。特に、メタデータ６４Ｂは、コンテンツ５４Ｂの１人または複数人の作成者を記載した作成者リスト６７Ｂと、電子ドキュメントファイル４０の現在のユーザ（例えば、現在コンテンツ５４Ｂを編集しているユーザ）を記載したドキュメントロック６６Ｂとを含むことができる。
【００１５】
サーバコンピュータ７０は、サーバアプリケーション４２を記憶することができる。様々な実施形態によれば、サーバコンピュータ７０は、クライアントコンピュータ２および６で作成された電子ファイル用のドキュメント記憶システムとして機能することができる。サーバアプリケーション４２は、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ製のＳＨＡＲＥＰＯＩＮＴ  ＳＥＲＶＥＲサービスアプリケーションなどの共用サービスアプリケーションプログラムを備えることができる。当業者には知られているように、ＳＨＡＲＥＰＯＩＮＴサービス技術によって、ユーザは共用環境を構築し、維持し、提示して情報を共有することが可能となる。この技術を使用すると、ユーザまたは組織は、１つまたは複数のウェブサイトを構築して、そのウェブサイトに関連する他のユーザに情報（例えば、ウェブサーバまたはウェブフォルダ上のドキュメントなど）を供給し、そうした情報を共有することができる。本明細書に記載の実施形態は、ＳＨＡＲＥＰＯＩＮＴサービス技術に限られるものとして解釈すべきでなく、他の開発者および／または製造者製の他の共用サービス技術もやはり使用することができることを理解されたい。
【００１６】
サーバコンピュータ７０はまた、電子ドキュメントファイル４０を記憶することができる。電子ドキュメントファイル４０は、パーティション５０を含むことができる。パーティション５０は、ストリーム５２および５６を含むことができる。ストリーム５２は、コンテンツ５４（すなわち電子ドキュメントコンテンツ）をさらに含むことができる。電子ドキュメントファイル４０はまた、パーティション６０を含むことができる。パーティション６０は、ストリーム６２および６８を含むことができる。ストリーム６２は、メタデータ６４をさらに含むことができる。ある実施形態によれば、メタデータ６４は、パーティション５０内に記憶されたコンテンツ５４と関連付けることができる。特に、メタデータ６４は、コンテンツ５４の１人または複数人の作成者を記載した作成者リスト６７と、電子ドキュメントファイル４０の現在のユーザ（例えば、現在コンテンツ５４を編集しているユーザ）を記載したドキュメントロック６６とを含むことができる。ある実施形態によれば、電子ドキュメントファイル４０は、サーバコンピュータ７０からクライアントコンピュータ２および６にダウンロードして編集することができ、それによって、サーバコンピュータ７０に同期を戻す前に変更が行われた場合に、電子ドキュメントファイル４０内のコンテンツ５４およびメタデータ６４に、異なるバージョンが作成される可能性があることを理解されたい。したがって、本明細書の詳細な説明では、コンテンツ５４およびメタデータ６４のクライアントコンピュータ２および６におけるバージョンを、それらのファイル要素を表す参照番号の後に文字「Ａ」および「Ｂ」を付すことによって識別している。
【００１７】
様々な実施形態によれば、また図３〜７に関して以下でより詳細に説明するように、サーバアプリケーション４２、および生産性アプリケーション３０は、クライアントコンピュータ２および６のパーティション５０および６０の、サーバコンピュータ７０との同期を容易にするように構成することができる。ある実施形態によれば、サーバアプリケーション４２は、（それだけに限られるものではないが、ステートレスプロトコル（ｓｔａｔｅｌｅｓｓ  ｐｒｏｔｏｃｏｌ）を含めた）プロトコルを利用して、ドキュメントの増分同期を容易にし、かつサーバファイルが、複数の独立データストリーム、または従属データストリームをエクスポーズする一助となるように構成することができる。したがって、電子ファイル内の各パーティションは、互いに独立に、かつ異なる同期速度で同期させることができる（すなわち、単一のファイル内のパーティションを、異なる時間で同期させることができる）。例えば、サーバアプリケーション４２は、生産性アプリケーション３０と共に、クライアントコンピュータ２の（メタデータ６４を含む）パーティション６０を、（コンテンツ５４Ａを含む）パーティション５０よりも先にサーバコンピュータ７０と同期させるように構成することができる。異なる速度でパーティションを同期させることによって、ネットワーク４を介してサーバコンピュータ７０に通信されるデータ量が減少し、それによってサーバのスケーラビリティが向上することを理解されたい。様々な実施形態に従って利用することができる例示のステートレスプロトコルが、２００８年５月２日出願の関連の特許文献１、名称「Document Synchronization over Stateless Protocols」に記載され、その開示を全体として参照により本明細書に組み込む。
【００１８】
クライアントコンピュータ２および６、ならびにサーバコンピュータ７０に関して論じた様々なパーティションおよびストリームは、単なる例にすぎず、様々な実施形態による電子ドキュメントファイル内に含まれるパーティションまたはストリームの数に限定されるものではないことを理解されたい。例えば、ある実施形態によれば、電子ドキュメントファイルは、単一のパーティション、および単一のストリームしか含まなくともよく、他の実施形態によれば、電子ドキュメントファイルは、複数のパーティション、および複数のストリームを含んでもよい。様々な実施形態によれば、クライアントコンピュータ２および６、ならびにサーバコンピュータ７０の電子ドキュメントファイル内に含まれたストリームのコンテンツは、メタデータに限られるものではなく、汎用データ（すなわち、電子ドキュメントファイルパーティション内に記憶されたコンテンツに関連しないデータ）も同様に含むことができることをさらに理解されたい。本明細書に記載の実施形態は、前述のソフトウェアアプリケーションに限られるものとして解釈すべきではなく、他の開発者および／または製造者製の他のソフトウェアアプリケーションもやはり使用することができることをさらに理解されたい。図１のネットワークアーキテクチャ、およびその構成要素は、他のコンピューティング装置、通信装置、および／または他のシステムと通信する機能性を含み、本明細書に記載の実施形態および実施例に限定されるものではないことをさらに理解されたい。したがって、例えば、様々な実施形態によれば、図１のネットワークアーキテクチャは、サーバコンピュータ７０と通信している追加のクライアントコンピュータを含むことができる。
例示的な動作環境
【００１９】
次に、図２を参照すると、以下の考察は、様々な例示の実施形態を実施することができる適切なコンピューティング環境の簡略な概要を示すものである。様々な実施形態について、パーソナルコンピュータのオペレーティングシステムで実行するプログラムモジュールと共に実行するプログラムモジュールの一般的な例をとって説明するが、これらの様々な実施形態はまた、他のタイプのコンピュータシステムおよびプログラムモジュールと組み合わせて実施することもできることが、当業者には認識されよう。
【００２０】
一般に、プログラムモジュールには、特定のタスクを実施する、または特定の抽象データ型を実施するルーチン、プログラム、構成要素、データ構造、および他のタイプの構造が含まれる。さらに、様々な実施形態は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの消費者向け電子機器、またはプログラム可能な消費者向け電子機器、ミニコンピュータ、メインフレームコンピュータなどを含めて、他のコンピュータシステム構成を用いても実施できることが当業者には理解されよう。様々な実施形態はまた、通信ネットワークを介してリンクしているリモート処理装置によってタスクが実施される分散コンピューティング環境でも実行することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置、およびリモートメモリ記憶装置の両方に配置することができる。
【００２１】
図２は、１つまたは複数のアプリケーションプログラムを実行することが可能な、汎用デスクトップ、ラップトップ、ハンドヘルド、タブレット、または他のタイプのコンピュータが含まれ得るクライアントコンピュータ２を示す。クライアントコンピュータ２は、少なくとも１つのＣＰＵ８（中央処理装置）、ＲＡＭ１８（ランダムアクセスメモリ）、およびＲＯＭ２０（読み取り専用メモリ）を含むシステムメモリ１２、ならびにメモリをＣＰＵ８に結合するシステムバス１０を含む。スタートアップ中など、コンピュータ内の要素間で情報を転送する助けとなる基本ルーチンを含む基本入出力システムが、ＲＯＭ２０内に記憶されている。クライアントコンピュータ２は、オペレーティングシステム３２、生産性アプリケーション３０、ならびに図１に関して上述したパーティション５０、ストリーム５２、５６、６２、および６８、コンテンツ５４Ａ、メタデータ６４Ａ、作成者リスト６７Ａ、およびドキュメントロック６６Ａを含む電子ドキュメントファイル４０を記憶する大容量記憶装置１４をさらに含む。
【００２２】
様々な実施形態によれば、オペレーティングシステム３２は、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ製のＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなど、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適したものでよい。大容量記憶装置１４は、バス１０に接続された大容量記憶装置制御器（図示せず）を介してＣＰＵ８に接続されている。大容量記憶装置１４、およびそれに付随するコンピュータ可読媒体が、クライアントコンピュータ２用の不揮発性記憶装置となる。本明細書に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置を指しているが、コンピュータ可読媒体は、クライアントコンピュータ２によってアクセスまたは利用することができる、利用可能ないかなる媒体でもよいことを当業者には理解されたい。例として、それだけに限られるものではないが、コンピュータ可読媒体には、コンピュータ記憶媒体、および通信媒体が含まれ得る。
【００２３】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶する任意の物理的方法または技術で実施される、揮発性および不揮発性の、取り外し可能、および取り外し不可能なハードウェア記憶媒体が含まれる。コンピュータ記憶媒体には、それだけに限られるものではないが、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他の固体メモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置が含まれ、これらのコンピュータ記憶媒体を用いて、所望の情報を記憶することができ、かつこれらのコンピュータ記憶媒体は、クライアントコンピュータ２によってアクセスすることができる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波もしくは他の搬送機構などの変調されたデータ信号で実施し、通信媒体には、いかなる情報送達媒体も含まれる。用語「変調されたデータ信号」とは、情報を信号内で符号化するようにその特性の１つまたは複数が設定または変更された信号を意味する。例として、それだけに限られるものではないが、通信媒体には、有線ネットワーク、もしくは直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せもやはり、コンピュータ可読媒体の範囲内に含まれるものである。コンピュータ可読媒体はまた、コンピュータプログラム製品と呼ぶこともできる。
【００２４】
様々な実施形態によれば、クライアントコンピュータ２は、例えば、ローカルネットワークまたは広域ネットワーク（例えばインターネット）が含まれ得るネットワーク４を介した、リモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。クライアントコンピュータ２は、バス１０に接続されたネットワークインターフェイスユニット１６を介してネットワーク４に接続することができる。ネットワークインターフェイスユニット１６をやはり利用して、他のタイプのネットワーク、およびリモートコンピューティングシステムに接続することができることを理解されたい。クライアントコンピュータ２はまた、キーボード、マウス、ペン、スタイラス、指、および／または他の手段を含めて、いくつかの入力タイプからの入力を受信し、処理する入出力制御器２２を含むことができる。同様に、入出力制御器２２は、表示装置８２、プリンタ、または他のタイプの出力装置に出力を供給することができる。さらに、タッチスクリーンを入出力機構として働かせてもよい。図１に示すクライアントコンピュータ６およびサーバコンピュータ７０は、図２のクライアントコンピュータ２に関して示した従来の構成要素を多数含み得ることを理解されたい。
【００２５】
図３は、ある実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させるルーチン３００を示す流れ図である。本明細書に記載のルーチンに関する考察を読めば、本発明の様々な実施形態の論理演算は、（１）コンピューティングシステムで実行され、コンピュータによって実施される一連の行為もしくはプログラムモジュールとして、かつ／または（２）コンピューティングシステム内で相互接続された機械論理回路、もしくは回路モジュールとして実施されることが理解されよう。その実施は、本発明を実施するコンピューティングシステムの性能要件に依存した選択事項である。したがって、図３〜７に示し、かつ本明細書に記載の様々な実施形態を構築する論理演算は、操作、構造装置、行為、またはモジュールとして様々に称される。これらの操作、構造装置、行為、およびモジュールは、本明細書に記載の特許請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、ソフトウェア、ファームウェア、特殊目的デジタル論理、およびそれらのいかなる組合せにおいても実施することができることが当業者には認識されよう。
【００２６】
ルーチン３００は、操作３０５から開始し、ここでクライアントコンピュータ２で実行されている生産性アプリケーション３０は、電子ドキュメントファイル４０のパーティション５０内の（ストリーム５２内に含まれた）電子ドキュメントコンテンツに対する編集を受信する。ある実施形態によれば、電子ドキュメントファイル４０は、その中に含まれたパーティションおよびストリームを全て含めて、サーバコンピュータ７０からダウンロードすることができる。次いで、パーティション５０は、その中に含まれたコンテンツ５４を編集するために開き、それによってコンテンツ５４Ａを作成することができる。
【００２７】
ルーチン３００は、操作３０５から操作３１０に続き、ここで生産性アプリケーション３０は、電子ドキュメントファイル４０のパーティション６０内でメタデータ６４Ａを生成する。特に、生産性アプリケーション３０は、電子ドキュメントファイル４０のパーティション６０内の作成者リスト６７を更新して、クライアントコンピュータ２のユーザを作成者として追加するメタデータを生成することができる（それによって、作成者リスト６７Ａを生成する）。生産性アプリケーション３０はまた、電子ドキュメントファイル４０のパーティション６０にドキュメントロック６６Ａを追加して、電子ドキュメントファイル４０が、現在クライアントコンピュータ２のユーザによって編集されていることを示すメタデータを生成することができる。
【００２８】
ルーチン３００は、操作３１０から操作３１５に続き、ここで生産性アプリケーション３０は、メタデータ６４に対して加えられた変更（すなわち、作成者リスト６７Ａおよびドキュメントロック６６Ａを含むメタデータ６４Ａ）をサーバコンピュータ７０に保存するために、パーティション６０をサーバコンピュータ７０と同期させる要求をサーバアプリケーション４２に送信する。パーティション６０は、変更されたメタデータ６４Ａだけがサーバコンピュータ７０に保存されるように、パーティション５０とは独立に同期させることができることを理解されたい。パーティション６０をサーバコンピュータと同期させる例示のルーチンについて、図４に関して以下でより詳細に説明する。
【００２９】
ルーチン３００は、操作３１５から操作３２０に続き、ここで生産性アプリケーション３０は、編集済みのコンテンツ５４Ａをサーバコンピュータ７０に保存するために、パーティション５０をサーバコンピュータ７０と同期させる要求をサーバアプリケーション４２に送信する。パーティション５０は、編集済みコンテンツ５４Ａだけがサーバコンピュータ７０に保存されるように、パーティション６０とは独立に同期させることができることを理解されたい。パーティション６０および５０を同期させる順序は逆でもよく、したがってパーティション５０を、パーティション６０よりも先に、サーバコンピュータ７０と独立に同期させてもよいことをさらに理解されたい。パーティション５０をサーバコンピュータ７０と同期させる例示のルーチンについて、図５に関して以下でより詳細に説明する。ルーチン３００は、操作３２０から操作３２５に続き、ここでルーチン３００は終了する。上記で論じた操作３１０〜３２０はまた、ある実施形態によれば、クライアントコンピュータ６で実行されている生産性アプリケーション３０によって実施することができることを理解されたい。
【００３０】
図４は、図３に記載の実施形態に従い、サーバ記憶モデルを利用して単一のファイルパーティションを同期させるルーチン４００を示す流れ図である。ルーチン４００は、図３の操作３１５から開始し、操作４０５に続き、ここでサーバアプリケーション４２は、クライアントコンピュータ２のパーティション６０をサーバコンピュータ７０と同期させるのに競合（ｃｏｎｆｌｉｃｔ）があるか判定する。特に、ある実施形態によれば、サーバアプリケーション４２は、クライアントコンピュータ２のパーティション６０内に記憶されたメタデータ６４Ａを、サーバコンピュータ７０に記憶されたメタデータ６４と比較して、何らかの差があるか判定することができる。メタデータ６４Ａとメタデータ６４とが異なる場合、サーバアプリケーション４２は、競合があると判定し、ルーチン４００は操作４１０に続く。メタデータ６４Ａとメタデータ６４との間に差がない場合、ルーチン４００は図３の操作３２０に戻る。
【００３１】
操作４１０で、サーバアプリケーション４２は、クライアントコンピュータ２のパーティション６０内のメタデータ６４Ａの方が、サーバコンピュータ７０に記憶されたメタデータ６４よりも新しいかに基づいて、競合を解決する手法を決定する。特にパーティション６０を同期させる生産性アプリケーション３０からの要求は、メタデータ６４Ａがクライアントコンピュータ２のパーティション６０内に記憶された時期を示すタイムスタンプ（ｔｉｍｅｓｔａｍｐ）を含むことができる。サーバアプリケーション４２は、そのタイムスタンプを、メタデータ６４がサーバコンピュータ７０のパーティション６０内に記憶された時期を示すタイムスタンプと比較することができる。メタデータ６４Ａがメタデータ６４よりも新しいと判定された場合、ルーチン４００は操作４１５に続く。メタデータ６４がメタデータ６４Ａよりも新しいと判定された場合、ルーチン４００は操作４２０に分岐する。別の実施形態によれば、パーティション６０を同期させる生産性アプリケーション３０からの要求は、競合を識別する（かつ解決する）ＨＴＴＰ（ハイパーテキストマークアップ言語）ＥＴＡＧ（エンティティタグ）を含むことができることを当業者には理解されたい。
【００３２】
操作４１５で、サーバアプリケーション４２は、クライアントコンピュータ２のパーティション６０をサーバコンピュータ７０と自動的に同期させ、クライアントコンピュータ２にある最新のメタデータ６４Ａを優先して競合を解決する。したがって、サーバアプリケーション４２は、サーバコンピュータ７０のパーティション６０内のメタデータ６４を、メタデータ６４Ａで更新することができる。ルーチン４００は、操作４１５から図３の操作３２０に戻る。
【００３３】
操作４２０で、サーバアプリケーション４２は、メタデータ６４Ａよりも新しいメタデータ６４を優先して競合を解決するように、クライアントコンピュータ２のパーティション６０のサーバコンピュータ７０との同期を自動的に失敗させる。したがって、サーバアプリケーション４２は、サーバコンピュータ７０のパーティション６０内のメタデータ６４を維持することができる。ルーチン４００は、操作４２０から図３の操作３２０に戻る。
【００３４】
図５は、図３に記載の実施形態に従い、サーバ記憶モデルを利用してもう１つのファイルパーティションを同期させるルーチン５００を示す流れ図である。ルーチン５００は、図３の操作３２０から開始し、操作５０５に続き、ここでサーバアプリケーション４２は、クライアントコンピュータ２のパーティション５０をサーバコンピュータ７０と同期させるのに競合があるか判定する。特に、ある実施形態によれば、サーバアプリケーション４２は、クライアントコンピュータ２のパーティション５０内に記憶されたコンテンツ５４Ａを、サーバコンピュータ７０のパーティション５０内に記憶されたコンテンツ５４と比較することができる。コンテンツ５４が、クライアントコンピュータ２のパーティション５０内の編集済みコンテンツ５４Ａにはない編集を含む場合、サーバコンピュータ７０は、競合があると判定し、ルーチン５００は操作５１０に続く。コンテンツ５４が編集を全く含まない場合、ルーチン５００は操作５１５に続く。
【００３５】
操作５１０で、サーバアプリケーション４２は、クライアントコンピュータ２のユーザ向けに競合エラーメッセージを生成する。例えば、サーバアプリケーション４２がクライアントコンピュータ２に対して生成する競合エラーメッセージには、サーバ７０に先にアップロードされた、コンテンツ５４に対する（例えば、クライアントコンピュータ６のユーザによって行われた）未知の編集が含まれ得る。競合エラーメッセージに応答して、クライアントコンピュータ２のユーザは、編集済みコンテンツ５４Ａを、コンテンツ５４に対する編集とマージすることによって、あるいは、コンテンツ５４に対する先の編集を、サーバ７０で変更しないまま維持することによって、手動で競合を解決することができる。ルーチン５００は、操作５１０から図３の操作３２５に戻る。
【００３６】
操作５１５で、サーバアプリケーション４２は、パーティション５０内の編集済みコンテンツ５４Ａをサーバ７０と同期させて、サーバ７０のコンテンツ５４を編集済みコンテンツ５４Ａで更新する。ルーチン５００は、操作５１５から図３の操作３２５に戻る。
【００３７】
図６は、別の実施形態に従い、サーバ記憶モデルを利用してファイルパーティションを同期させるルーチン６００を示す流れ図である。ルーチン６００は、操作６０５から開始し、ここでクライアントコンピュータ２で実行されている生産性アプリケーション３０は、電子ドキュメントファイル４０のパーティション５０内の（ストリーム５２内に含まれた）電子ドキュメントコンテンツに対する編集を受信する。ある実施形態によれば、電子ドキュメントファイル４０は、その中に含まれたパーティションおよびストリームを全て含めて、サーバコンピュータ７０からダウンロードすることができる。次いで、パーティション５０は、その中に含まれたコンテンツ５４を編集するために開き、それによってコンテンツ５４Ａを作成することができる。
【００３８】
ルーチン６００は、操作６０５から操作６１０に続き、ここで生産性アプリケーション３０は、電子ドキュメントファイル４０のパーティション６０内で、パーティション５０内のコンテンツ５４Ａの編集者を識別するメタデータ６４Ａを生成する。特に、生産性アプリケーション３０は、電子ドキュメントファイル４０のパーティション６０内の作成者リスト６７に、コンテンツ５４Ａの編集者の名前を追加するメタデータを生成することができる（それによって、作成者リスト６７Ａを生成する）。
【００３９】
ルーチン６００は、操作６１０から操作６１５に続き、ここで生産性アプリケーション３０は、メタデータ６４に対して加えられた変更（すなわち、作成者リスト６７Ａを含むメタデータ６４Ａ）をサーバコンピュータ７０に保存するために、パーティション６０をサーバコンピュータ７０と同期させる要求をサーバアプリケーション４２に送信する。パーティション６０は、変更されたメタデータ６４Ａだけがサーバコンピュータ７０に保存されるように、パーティション５０とは独立に同期させることができることを理解されたい。
【００４０】
ルーチン６００は、操作６１５から操作６２０に続き、ここでクライアントコンピュータ６で実行されている生産性アプリケーション３０は、電子ファイル４０をダウンロードすることによって、サーバコンピュータ７０からファイルパーティション５０および６０を（その中に含まれたストリーム４２、５６、６２、および６８を含めて）受信する。クライアントコンピュータ６は、ファイルパーティション６０を受信する際に、クライアントコンピュータ２のコンテンツ５４Ａの編集者を識別するメタデータ６４Ａもやはり受信し、このメタデータ６４Ａは、操作６１５でクライアントコンピュータ２のパーティション６０をサーバコンピュータ７０と同期させた結果として生じたものであることを理解されたい。したがって、クライアントコンピュータ６のユーザは、クライアントコンピュータ２のユーザもやはり、サーバコンピュータ７０からコンテンツ５４をダウンロードして編集を行ったと判断することができる。
【００４１】
ルーチン６００は、操作６２０から操作６２５に続き、ここでクライアントコンピュータ６で実行されているアプリケーション３０は、電子ドキュメントファイル４０のパーティション５０内の（ストリーム５２内に含まれた）電子ドキュメントコンテンツに対する編集を受信する。次いで、パーティション５０は、その中に含まれたコンテンツ５４を編集するために開き、それによってコンテンツ５４Ｂを作成することができる。編集済みのコンテンツ５４Ｂには、クライアントコンピュータ２で行われた編集（すなわち、編集済みコンテンツ５４Ａ）は含まれないことを理解されたい。
【００４２】
ルーチン６００は、操作６２５から操作６３０に続き、ここでクライアントコンピュータ６で実行されている生産性アプリケーション３０は、メタデータ６４に対して加えられた変更（すなわち、作成者リスト６７Ｂを含むメタデータ６４Ｂ）をサーバコンピュータ７０に保存するために、パーティション６０をサーバコンピュータ７０と同期させる要求をサーバアプリケーション４２に送信する。パーティション６０は、変更されたメタデータ６４Ｂだけがサーバコンピュータ７０に保存されるように、パーティション５０とは独立に同期させることができることを理解されたい。
【００４３】
ルーチン６００は、操作６３０から操作６３５に続き、ここでクライアントコンピュータ２は、クライアントコンピュータ６からのコンテンツ５４Ｂの編集者を識別するメタデータ６４Ｂを受信し、このメタデータ６４Ｂは、操作６３０でパーティション６０をサーバコンピュータ７０と同期させた結果として生じたものである。特に、クライアントコンピュータ２で実行されている生産性アプリケーション３０は、クライアントコンピュータ６からのメタデータ６４Ｂで先に更新されたパーティション６０をサーバコンピュータ７０からダウンロードすることができる。したがって、クライアントコンピュータ２のユーザは、クライアントコンピュータ６のユーザもやはり、サーバコンピュータ７０からコンテンツ５４をダウンロードして編集を行ったと判断することができる。
【００４４】
ルーチン６００は、操作６３５から操作６４０に続き、ここでクライアントコンピュータ２で実行されている生産性アプリケーション３０は、編集済みコンテンツ５４Ａをサーバコンピュータ７０に保存するために、パーティション５０をサーバコンピュータ７０と同期させる要求をサーバアプリケーション４２に送信する。パーティション５０は編集済みコンテンツ５４Ａだけがサーバコンピュータ７０に保存されるように、パーティション６０とは独立に同期させることができることを理解されたい。パーティション６０および５０を同期させる順序は逆でもよく、したがってパーティション５０を、パーティション６０よりも先に、サーバコンピュータ７０と独立に同期させてもよいことをさらに理解されたい。
【００４５】
ルーチン６００は、操作６４０から操作６４５に続き、ここでクライアントコンピュータ６で実行されている生産性アプリケーション３０は、編集済みコンテンツ５４Ｂをサーバコンピュータ７０に保存するために、パーティション５０をサーバコンピュータ７０と同期させる要求をサーバアプリケーション４２に送信する。パーティション５０は、編集済みコンテンツ５４Ｂだけがサーバコンピュータ７０に保存されるように、パーティション６０とは独立に同期させることができることを理解されたい。パーティション６０および５０を同期させる順序は逆でもよく、したがってパーティション５０を、パーティション６０よりも先に、サーバコンピュータ７０と独立に同期させてもよいことをさらに理解されたい。パーティション５０をサーバコンピュータ７０と同期させる例示のルーチンについて、図７に関して以下でより詳細に説明する。ルーチン６００は、操作６４５から操作６５０に続き、ここでルーチン６００は終了する。
【００４６】
図７は、図６に記載の実施形態に従い、サーバ記憶モデルを利用して第２のクライアントコンピュータのファイルパーティションを同期させるルーチン７００を示す流れ図である。ルーチン７００は、図６の操作６４５から開始し、操作７０５に続き、ここでクライアントコンピュータ６で実行されている生産性アプリケーション３０は、パーティション５０に何らかの更新が行われているかサーバコンピュータ７０とチェックする。特に、生産性アプリケーション３０は、サーバコンピュータ７０のパーティション６０内のコンテンツ５４がクライアントコンピュータ２によって更新されたかについて、サーバアプリケーション４２にクエリを送信することができる。図６の操作６２０で上述したように、クライアントコンピュータ６のユーザは、サーバコンピュータ７０からダウンロードした電子ファイル４０内のファイルパーティション５０および６０を受信する際に、サーバコンピュータ７０のパーティション５０内のコンテンツ５４がクライアントコンピュータ２で別のユーザによって編集されていることを知ることができる。
【００４７】
ルーチン７００は、操作７０５から操作７１０に続き、ここでクライアントコンピュータ６は、サーバコンピュータ７０のパーティション５０が更新された（すなわち、クライアントコンピュータ２によって）ことの確認をサーバアプリケーション４２から受信し、したがって、クライアントコンピュータ２からの編集済みコンテンツ５４Ａを、クライアントコンピュータ６のパーティション５０内の編集済みコンテンツ５４Ｂとマージして利用することが可能となる。ルーチン７００は、操作７１０から操作７１５に続き、ここでクライアントコンピュータ６は、サーバコンピュータ７０から編集済みコンテンツ５４Ａを受信する。
【００４８】
ルーチン７００は、操作７１５から操作７２０に続き、ここでクライアントコンピュータ６で実行されている生産性アプリケーション３０は、パーティション５０を、（クライアントコンピュータ２からの）編集済みコンテンツ５４Ａ、および（クライアントコンピュータ６からの）編集済みコンテンツ５４Ｂで更新するように、サーバコンピュータ７０のサーバアプリケーション４２に要求する。ルーチン７００は、操作７２０から図６の操作６５０に戻る。
【００４９】
様々な例示の実施形態に関して本発明を説明してきたが、以下の特許請求の範囲内でこれらの実施形態に数多くの改変を行うことができることが当業者には理解されよう。したがって、本発明の範囲は、上記の説明によっていかなる形にも限定されるものではなく、以下の特許請求の範囲を参照することによって完全に決定されるものである。
【図１】
0005646686.tif 000002
【図２】
0005646686.tif 000003
【図３】
0005646686.tif 000004
【図４】
0005646686.tif 000005
【図５】
0005646686.tif 000006
【図６】
0005646686.tif 000007
【図７】
0005646686.tif 000008