(58)【調査した分野】(Int.Cl.,DB名)
前記1つまたは複数のユーザーアクションは、前記文書の前記第1のセクション内でタイプすること、前記文書の前記第1のセクション内で書式変更をすること、および前記文書の前記第1のセクション内でテキストを削除することを含むことを特徴とする請求項1に記載の方法。
前記文書の前記第1のセクションは、前記文書内の第1のユーザーが編集している第1のパラグラフに対応し、前記文書の前記第2のセクションは、第2のユーザーが編集している第2のパラグラフに対応することを特徴とする請求項1に記載の方法。
前記アンドゥ/リドゥモジュールはさらに、リドゥプログラムスタックを備え、前記リドゥプログラムスタックは、1つまたは複数のユーザーアクションおよびメタデータを記憶し、前記リドゥプログラムスタックにより、前記文書内の前記メタデータのインテグリティを維持しながら、前記ユーザーアクションに対するアンドゥ操作は取り消されることを可能とすることを特徴とする請求項7に記載のコンピューティング装置。
命令を備えるコンピューター可読記憶媒体であって、第1のクライアントコンピューターの処理ユニットによって実行されるときに、前記第1のクライアントコンピューターの前記処理ユニットに、
前記第1のクライアントコンピューター上で文書の第1のパラグラフを編集するステップであって、前記第1のパラグラフは、前記第1のクライアントコンピューター上でユーザーによって編集され、前記文書の前記第1のパラグラフの前記編集は、前記文書の前記第1のパラグラフ内に1つまたは複数のユーザーアクションを含み、前記1つまたは複数のユーザーアクションは、前記第1のパラグラフ内にタイプすること、前記第1のパラグラフ内のテキストを削除すること、前記第1のパラグラフ内の書式変更をすること、および前記第1のパラグラフを書式設定することを含み、前記文書の前記第1のパラグラフ内の前記1つまたは複数のユーザーアクションは、前記第1のクライアントコンピューター上のアンドゥ/リドゥスタック上に記憶される、ステップと、
前記文書の前記第1のパラグラフを編集している間に、前記第1のクライアントコンピューターにおいて、前記文書の第2のパラグラフに対するロックを受信するステップであって、前記ロックはサーバーコンピューターから受信され、前記ロックは、第2のクライアントコンピューター上の別のユーザーが、現在前記文書の前記第2のパラグラフを編集していることを示し、前記ロックにより前記第1のクライアントコンピューター上の前記ユーザーが前記第2のパラグラフを編集できないようにする、ステップと、
前記文書の前記第2のパラグラフに対する前記ロックを受信した後、前記第1のクライアントコンピューター上の前記処理ユニットに、
前記文書の前記第2のパラグラフ内に前記ロックを挿入するステップであって、前記ロックにより、前記第1のクライアントコンピューター上の前記ユーザーが、前記第1のクライアントコンピューター上で前記第2のパラグラフを編集することができないようにする、ステップと、
前記第1のクライアントコンピューターの前記アンドゥ/リドゥスタック上に、前記ロックが前記1つまたは複数のユーザーアクションの一番上に配置されるように前記ロックを記憶するステップと、
前記第1のクライアントコンピューターの前記アンドゥ/リドゥスタック上に前記ロックを記憶した後、前記第1のクライアントコンピューターにおいてアンドゥ操作を実施するステップであって、前記アンドゥ操作により、前記第1のクライアントコンピューター上の前記処理ユニットに、
前記第1のクライアントコンピューターにおいて前記アンドゥ/リドゥスタックから前記文書の前記第2のパラグラフに対する前記ロックを取り除くステップと、
前記第1のクライアントコンピューターにおいて前記アンドゥ/リドゥスタックから前記ロックが取り除かれると、前記ロックを前記第1のクライアントコンピューター上のメモリに一時的に記憶するステップであって、前記ロックは、前記アンドゥ/リドゥスタックを含まないメモリ領域に記憶される、ステップと、
前記第1のクライアントコンピューターにおいて前記アンドゥ/リドゥスタックから前記ロックが取り除かれると、前記第1のクライアントコンピューターにおいて、前記1つまたは複数のユーザーアクションの内の最新のものをアンドゥするステップであって、前記1つまたは複数のユーザーアクションの内の前記最新のものは、前記アンドゥ/リドゥスタックから取り除かれる、ステップと
前記第1のクライアントコンピューターにおいて前記1つまたは複数のユーザーアクションの内の前記最新のものがアンドゥされた後、前記ロックが一時的に記憶される前記第1のクライアントコンピューター上の前記メモリ領域から前記ロックを取り除き、前記ロックを前記アンドゥ/リドゥスタック上に復元するステップと、
を行わせるステップと
を行わせることを特徴とするコンピューター可読記憶媒体。
【発明を実施するための形態】
【0007】
本開示は、共同オーサリングされる文書において、メタデータマージにわたってアンドゥ/リドゥ機能を維持するシステムおよび方法を対象とする。共同オーサリングされる文書は、複数のユーザーが同時にアクセスおよび修正することができる文書である。
【0008】
本明細書に記載するいくつかの例においては、アンドゥ/リドゥ機能は、メタデータマージにわたって維持される。メタデータ、一般的には共同オーサリングしている別のユーザーからのパラグラフロックを文書に挿入する場合、メタデータマージが生じる。本システムおよび本方法は、ユーザー
アクションを記憶し、メタデータもまた記憶する状態ベースのアンドゥ/リドゥスタックの使用について開示するものである。本システムおよび本方法により、アンドゥ/リドゥ機能がメタデータマージの影響を受けないように、スタック上に記憶したメタデータを効果的にスキップすることが可能となる。
【0009】
図1は、メタデータマージにわたって文書におけるアンドゥ/リドゥ機能を維持するためのシステム例100を示している。例示的システム100は、クライアント102および104、ネットワーク106、ならびにサーバー108を含む。より多くまたはより少ない数のクライアント、サーバー、およびネットワークを使用してもよい。本開示においては、クライアントおよびクライアントコンピューターという用語を区別なく用い、かつ、サーバーおよびサーバーコンピューターという用語を区別なく用いている。
【0010】
例示の実施形態においては、クライアント102および104は、以下に説明するように、コンピューティング装置である。
【0011】
クライアント102、104に記憶された複数の情報の中には、クライアントOS(Operating System)およびクライアントアプリケーションがある。クライアントOSは、クライアントシステムのハードウェアリソースおよびソフトウェアリソースを管理するプログラムである。クライアントアプリケーションはクライアント102、104のリソースを利用して、ユーザーにより指定されたタスクを直接実施する。例えば、クライアント102、104は、文書ファイルを作成し編集するために用いられる文書処理プログラムといった、1つまたは複数のソフトウェアアプリケーションを含む。このようなアプリケーションの一例は、ワシントン州レドモンドにあるMicrosoft社製のMicrosoft Word文書処理アプリケーションである。このようなアプリケーションの他の例もまた、適用可能である。
【0012】
実施形態例においては、ネットワーク106は、LAN(Local Area Network)、WAN(Wide Area Network)、またはインターネットである。クライアント102および104は、サーバー108、およびサーバー108にリモートに接続されたリソースにアクセスすることができる。
【0013】
例示のサーバー108は一般的に、ワシントン州レドモンドにあるMicrosoft社製のWINDOWS(登録商標)オペレーティングシステムといった、ネットワークコンピューターの動作を制御するのに適したオペレーティングシステム、または、これもまたワシントン州レドモンドにあるMicrosoft社製のWindows
(登録商標) Server 2008といったサーバーを含む。
【0014】
一実施形態例においては、システム例100は、オンラインブラウザーベースの文書コラボレーションシステムである。オンラインブラウザーベースの文書コラボレーションシステムの一例は、ワシントン州レドモンドにあるMicrosoft社製のSHAREPOINT(登録商標)チームサービスソフトウェアである。システム例100において、サーバー108は、例えばワシントン州レドモンドにあるMicrosoft社製のMicrosoft Office SharePoint Server 2007といった、Microsoft SharePointサーバーである。
【0015】
実施形態例においては、クライアント102および104は、サーバー108上に記憶された文書を共同オーサリングすることができる。文書の各セクションは、一般的にはパラグラフである。しかしながら、セクションは、例えば、文、パラグラフ、見出し、図面、表などといった、文書の任意の下位部分であることができる。文書は、例えば単一の表、単一の文といった、1つのセクションだけを含んでもよく、または、複数の表、複数の文、もしくは複数のパラグラフといった、複数のセクションを含んでもよい。本明細書に開示する実施形態例では、文書のセクションは文書のパラグラフである。
【0016】
クライアント102における共同オーサリングのユーザーが、文書のパラグラフ内にタイプすると、例示のクライアント102がそのパラグラフに関するメタデータをサーバー108に送信する。メタデータは一般的にパラグラフロックの形態であり、クライアント102が編集中のパラグラフをロックしていることを示している。一例では、ユーザーがパラグラフに修正を加えると、そのパラグラフは編集中であると識別される。別の例では、ユーザーがパラグラフにカーソルを置くと、そのパラグラフは編集中であると識別される。ただ1人の共同オーサリングのユーザーしか、文書のある特定のパラグラフを同時に編集することを許されないため、クライアント例は編集中のパラグラフをロックする。
【0017】
サーバー108がクライアント102からメタデータを受信すると、サーバー108は、文書を開いている他の共同オーサリングのユーザー全てを識別する。サーバー108は、識別した共同オーサリングのユーザーに、メタデータを送信する。例えば、例示のクライアント104上の共同オーサリングのユーザーが文書を開いている場合、サーバー108は、クライアント104上の共同オーサリングのユーザーが開いている文書に、メタデータを挿入する。
【0018】
実施形態例においては、サーバー108は、クライアント102上の共同オーサリングのユーザーが編集中のパラグラフに対応する、クライアント104上の共同オーサリングのユーザーが開いている文書のパラグラフに、パラグラフロックを挿入する。ロックにより、クライアント104上の共同オーサリングのユーザーが、ロックが挿入されたパラグラフを編集できないようにする。しかしながら、クライアント104上の共同オーサリングのユーザーは、文書内のロックされていない他の任意のパラグラフを編集してもよい。クライアント104上の共同オーサリングのユーザーはまた、クライアント104上で開かれている文書内に、1つまたは複数の新しいパラグラフを作成し、それらのパラグラフを編集してもよい。
【0019】
クライアント104上での編集の過程で、共同オーサリングのユーザーがユーザー
アクションをアンドゥしたい場合がある。例えば、共同オーサリングのユーザーが、誤ったキーをタイプした、共同オーサリングのユーザーが書式変更をしたがアンドゥしたい、または、共同オーサリングのユーザーがカットアンドペースト操作を行ったがアンドゥしたい場合がある。共同オーサリングのユーザーが望む他のユーザー
アクションが可能である。
【0020】
アンドゥ操作のさらなる例は、2005年3月30日出願の米国特許第7,499,955号明細書、および2007年1月15日出願の米国特許出願第11/623,234号明細書に記載されており、その両者とも、参照により本明細書に組み込まれる。
【0021】
例示のクライアント104上の共同オーサリングのユーザーがユーザー
アクションをアンドゥする1つの方法は、例えば、クライアント104上の例示のアンドゥキーを押すことにより、アンドゥ操作を実施することである。一般的に、アンドゥ操作は、最新のアクションをアンドゥし、文書を以前のアクションに戻す。例えば、共同オーサリングのユーザーが、文書内に文字「t」「h」および「e」をタイプした場合、例104上の例示のアンドゥキーを押すと、最新のアクション(たとえば文字「e」のタイピング)を削除し、その結果、文書はアンドゥ操作後、文字「t」および「h」を含む。
【0022】
ユーザー
アクションをアンドゥすることを可能とするために、ユーザー
アクションは一般的に、例えばアンドゥ/リドゥスタックといったプログラムスタック上に保存する。例えば、ユーザーが文字「t」をタイプすると、文字「t」をアンドゥ/リドゥスタック上に記憶する。次いで、文字「h」をタイプすると、文字「h」をアンドゥ/リドゥスタック上に記憶し、文字「e」をタイプすると、文字「e」をアンドゥ/リドゥスタック上に記憶する。実施形態例においては、実際の文字をスタック上に記憶するのではない。代わりに、メモリ内の領域へのポインタを記憶することができる。メモリ内の領域が、実際の文字を含むことができる。
【0023】
例えばアンドゥ/リドゥスタックといったプログラムスタックは、後入れ先出しベースで動作する。上記の例では、文字「e」は、それがスタック上に記憶した3つの文字の内の最新の文字だったので、最初にスタックから離れる。アンドゥ操作例中に、文字「e」をスタックから取り出し、スタックの一番上に文字「h」が残る。
【0024】
メタデータロックもまた、例示のアンドゥ/リドゥスタック上に記憶する。ユーザーがパラグラフ内にタイプしている場合、ユーザーがタイプする各文字は、アンドゥ/リドゥスタック上に連続して記憶される。しかしながら、ユーザーがタイプしている間にメタデータロックを受信した場合、ロックもまた、アンドゥ/リドゥスタック上に記憶する。ロックをアンドゥ/リドゥスタック上に記憶する理由は、Microsoft Wordのような文書処理アプリケーションでは、アンドゥ/リドゥスタックは一般的に、ロックを含むあらゆるアクションを記憶するからである。従って、ユーザーがアンドゥ操作を実施する場合、ロックは、それがアンドゥ/リドゥスタックの一番上に配置されているので、一般的には廃棄されるのではなく保存されることが望ましい。この結果、ユーザーが予想するアンドゥ/リドゥの挙動が生じる。つまり、ユーザーは一般的に、最新のユーザー
アクションをアンドゥし、文書内のいかなるロックも取り除かないアンドゥ操作を予想する。
【0025】
アンドゥ操作中、パラグラフロックを保存するために、実施形態例においては、アンドゥ操作が生じた場合、パラグラフロックはアンドゥ/リドゥスタックから取り除かれ、一時的にクライアントコンピューター上のメモリに記憶される。次いで、アンドゥ/リドゥスタックの一番上に記憶したユーザー
アクションはアンドゥされる。アンドゥ/リドゥスタックの一番上に記憶したユーザー
アクションがアンドゥされた後、パラグラフロックはメモリから取得され、スタック上に戻して記憶する。この方法では、ユーザーの視点から、アンドゥ操作は予想通りに進行し、ロックは文書内に維持される。
【0026】
図2は、例示のクライアント102上のモジュール例を示している。例示のクライアント102は、例示のデータ処理モジュール202、例示のメタデータマージモジュール204、例示のユーザーインタフェースモジュール206、および例示のアンドゥ/リドゥモジュール208を含む。例示のデータ処理モジュール202には、ワシントン州レドモンドにあるMicrosoft社製のMicrosoft Word文書処理アプリケーションといった文書処理プログラムを含む。
【0027】
例示のメタデータマージモジュール204は、例示のサーバー108から受信したメタデータを処理し、メタデータを、クライアントコンピューター102上で開いている文書の適切なセクションに挿入する。一般的には、メタデータは、他の共同オーサリングのユーザーが編集中の文書のセクションにかかっているロックを表す。例示のメタデータマージモジュール204が文書のある特定のセクションに対するロックをサーバー108から受信すると、例示のメタデータマージモジュール204は、クライアントコンピューター102上で開かれている文書の対応するセクションに、ロックを挿入する。ロックにより、クライアント102上の共同オーサリングのユーザーがロックの対象となっている文書のセクションを編集できないようにする。実施形態例においては、文書のセクションは文書のパラグラフに対応する。他の実施形態例においては、文書のセクションの粒度は、上述のように変化してよい。
【0028】
例示のユーザーインタフェースモジュール206は、例示のメタデータマージモジュール204からロックを受信し、文書の適切なセクションにロックを表示する。たとえば、例示のユーザーインタフェースモジュール206は、パラグラフがロックされていることを示すために、パラグラフを角括弧する。別の例としては、例示のユーザーインタフェースモジュールは、ロックされているパラグラフに隣接して、ロックを表すアイコンを挿入してもよい。さらに、例示のユーザーインタフェースモジュールは、パラグラフを共同オーサリングしているユーザー名を表示してもよい。他の例も可能である。ユーザーが、パラグラフがロックされているというグラフィカルな表示を見ると、ユーザーは、ロックが取り除かれるまで、そのパラグラフ内の編集が無効となることを知らされる。
【0029】
このようなロックに関するさらなる詳細は、2008年6月25日出願の米国特許出願第12/145,536号明細書に見出すことができ、その全体が参照により本明細書に組み込まれる。他の構成も可能である。
【0030】
例示のアンドゥ/リドゥモジュール208は、アンドゥ要求およびリドゥ要求を処理し、文書内のいかなるメタデータロックのインテグリティをも維持しながら、文書内のアンドゥ操作およびリドゥ操作を実施する。例示のアンドゥ/リドゥモジュール208は例示のアンドゥ/リドゥスタックを含む。例示のアンドゥ/リドゥスタックはアンドゥセクションおよびリドゥセクションを含む。従来のプログラムスタックは、入力をスタック上に積み、入力をスタックから取り出すが、例示のアンドゥ/リドゥスタックは、アンドゥ/リドゥスタックのある特定の部分にマーカーを設ける。マーカーがアンドゥ/リドゥスタックのどこを指しているかに関連して、ユーザー
アクションおよびメタデータロックをアンドゥ/リドゥスタックに記憶する、またはそこから取り除く。論じたように、実施形態例においては、アンドゥ/スタック例は、ユーザー
アクションを指すポインタおよびメタデータロックを指すポインタを記憶することができる。
【0031】
アンドゥ要求が受信されると、例示のアンドゥ/リドゥモジュール208は、クライアントコンピューター102上のアンドゥ/リドゥスタックをチェックし、アンドゥ/リドゥスタックのアンドゥ部から、何らかのメタデータロックを取り除く。次いで、アンドゥ/リドゥスタックのアンドゥ部から取り除いた全てのメタデータロックは、一時的にクライアントコンピューター102上のメモリに記憶される。次いで、最新のユーザー
アクションはアンドゥ/リドゥスタックから取り除かれ、最新のユーザー
アクションは元に戻される。例えば、最新のユーザー
アクションが文字を太字体にすることであった場合、アンドゥ操作により、その文字から太字体が取り除かれる。
【0032】
アンドゥ操作が完了した後、例示のアンドゥ/リドゥモジュール208は、メモリに一時的に記憶したロックを取り出し、ロックをアンドゥ/リドゥスタックに復元する。例示のアンドゥ/リドゥモジュールは、ロックをアンドゥ/リドゥスタックから取り除いたのと反対の順序で、ロックを復元する。例えば、2つのロックがアンドゥ/リドゥスタックから取り除かれた場合、先ず取り除いた第2のロックをスタックに復元し、次に取り除いた第1のロックを復元する。すると、スタック上のロックは、最新のユーザー
アクションをアンドゥ/リドゥスタックから取り除く前と同じ順序となる。従って、無反応または不規則なユーザーインタフェースの挙動といった、ユーザー体験への何らかの悪影響を最小限に抑えつつ、ロックを復元する。
【0033】
アンドゥ/リドゥスタックにより、アンドゥ操作はリドゥされることも可能となる。例えば、ユーザー
アクションが、アンドゥ操作の結果として、アンドゥ/リドゥスタックのアンドゥセクションから取り除かれた場合、ユーザー
アクションは、アンドゥ/リドゥスタックのリドゥ部に記憶される。アンドゥ操作は取り消されるべきと判断される場合、例えば、例示のクライアントコンピューター102上の例示のリドゥボタンを押すことにより、ユーザー
アクションはアンドゥ/リドゥスタックのリドゥ部から取り除かれ、文書に、およびアンドゥ/リドゥスタックのアンドゥ部に復元する。例えば、アンドゥ操作が文書から文字「e」を取り除いた場合、リドゥ操作は文字「e」を復元する。さらに、リドゥ操作は文字「e」をアンドゥ/リドゥスタックのアンドゥ部に復元する。
【0034】
図3は、ユーザーの編集セッションのタイムスナップショット(time snapshot)におけるアンドゥ/リドゥスタック例および文書例を示している。例示の図において、各文字は、例えばパラグラフA、B、C、およびDといったある特定のパラグラフのコンテンツを表している。
【0035】
タイムスナップショット302において、ユーザーが、パラグラフAにおけるコンテンツを含む文書を開く。なんら編集されていないので、例示のアンドゥ/リドゥスタックは空である。
【0036】
タイムスナップショット304において、ユーザーが、パラグラフBに対するコンテンツを作成する。例示のアンドゥ/リドゥスタックは水平ライン314を示し、それは、例示のアンドゥ/リドゥスタックのリドゥ部と例示のアンドゥ/リドゥスタックのアンドゥ部との間の境界を示している。例示のアンドゥ/リドゥスタックのアンドゥ部は、下部316である。タイムスナップショット304において、例示のアンドゥ/リドゥスタックの下部316は「‐B」を示している。「‐B」はパラグラフBに対するアンドゥアクションを表している。例示のパラグラフBでなされる各ユーザー
アクションは、記号「‐B」で表される。例えば、ユーザーが、パラグラフB内に文字「T」「h」および「e」のみタイプした場合、各文字は、タイプした順序、すなわち最初に「T」、次に「h」、その次に「e」の順序で、アンドゥ/リドゥスタックに挿入される。簡単にするため、これらのアクションすべてを、記号「‐B」で表す。
【0037】
タイムスナップショット306において、ユーザーが、パラグラフCに対するコンテンツを作成する。それに応じて、スナップショット306の文書セクションは、文書が現在パラグラフA、B、およびC内にコンテンツを有することを示している。さらに、記号「‐C」は、アンドゥ/リドゥスタックの下部318に追加される。
【0038】
タイムスナップショット308において、メタデータマージの結果として、パラグラフAに対するロックが、例示のクライアントコンピューター102において受信される。ロックは、パラグラフAの周りのロック記号320により表している。ロックは、例えばクライアントコンピューター104といったクライアントシステム上の共同オーサリングのユーザーが、パラグラフAを編集していることを表しているメタデータである。ロックがクライアントコンピューター102で受信されると、ロックは、アンドゥ/リドゥスタックのアンドゥセクションにも追加される。これを例示のロック記号322で表している。ロック322はまた、アンドゥ/リドゥスタックのアンドゥ部内で、先の入力「‐C」と角括弧324でくくられていることを示している。ロックが先の入力「‐C」と角括弧でくくられていることを示す理由は、メタデータマージの前の文書の状態を強調するためである。
【0039】
タイムスナップショット310において、例示のクライアントコンピューター102におけるユーザーが、パラグラフC内で行った最新の入力をアンドゥするためにアンドゥ操作を実施すると決定する。アンドゥ操作が実施されると、例示のアンドゥ/リドゥモジュール208が、文書例330内のロックを一時的に取り除き、パラグラフC内で行った最新の入力に対するアンドゥ操作を実施し、次いで文書例330内にロックを再挿入する。これらのアクションは、例示のアンドゥ/リドゥスタックのリドゥ部326に追加される。アクションが、例示のアンドゥ/リドゥスタックのリドゥ部326に追加されることで、必要ならば、リドゥ操作によってアクションを元に戻すことができる。
【0040】
例示のアンドゥ/リドゥスタックの例示のリドゥ部326は、パラグラフCに対して行った最新の入力に対するアンドゥアクションをリドゥするためには、例示のアンドゥ/リドゥスタックの例示のリドゥ部326の下から上に向かって、まず、現在のロック(記号「‐L」で示されている)を取り除き、次いで、パラグラフCに対する最新の入力をパラグラフCに再挿入し、次いで、ロック(記号「L」で示されている)を文書に再挿入することを示している。
【0041】
タイムスナップショット310はまた、パラグラフCに対するアンドゥ操作後、文書例330がパラグラフAおよびBを含むことを示している。これは、簡単にするために、パラグラフCに対するアンドゥ操作により、パラグラフC内のテキストを全て取り除くと仮定している。タイムスナップショット310はまた、パラグラフC内の最新のユーザー
アクションをアンドゥした後、例示のアンドゥ/リドゥスタック328のリドゥ部がロックおよびパラグラフBの最新のユーザー
アクションを示すことを示している。これは、次のアンドゥ操作により、ロックを一時的に取り除き、パラグラフBの最新のユーザー
アクションをアンドゥするよう設定されていることを示している。
【0042】
タイムスナップショット312において、例示のクライアントコンピューター102におけるユーザーが、新しいパラグラフDでタイプを開始する。ユーザーが新しいアクションを開始するといつでも、アンドゥ/リドゥスタックのリドゥ部がクリアされる。これは、新しいアクションを開始すると、先のアンドゥ操作を元に戻すことはもはやできないからである。例えば、ユーザーが「t」「h」および「s」をタイプし、次いで「s」に対してアンドゥ操作を行い、次いで「e」をタイプした場合、「e」をタイプしたときにリドゥスタックがクリアされていなければ、リドゥ操作は「s」を復元し、結果「t」「h」「e」「s」となり、これは明らかに意図したものではない。
【0043】
タイムスナップショット312の文書部例330は、パラグラフDを文書に追加したことを示している。タイムスナップショット312の例示のアンドゥ/リドゥスタックの例示のアンドゥ部332は、記号「‐D」が追加されることを示している。パラグラフDをパラグラフA上のロックを受信した後に作成しているので、最初にロックは取り除かれなくても、パラグラフDに対する最新のユーザー
アクションはアンドゥされることができる。しかしながら、パラグラフDに対する最新のユーザー
アクションがリドゥされる場合、論じたように、パラグラフAに対する最新のユーザー
アクションをアンドゥするために、文書例330上のロックは一時的に取り除かれなければならない。
【0044】
図4は、例示のクライアントコンピューター102により実施される操作例400を示す流れ図である。操作402において、共有文書は例示のクライアントコンピューター102で開かれる。共有文書は、例えばMicrosoft SharePoint Server 2007といった、オンラインブラウザーベースの文書コラボレーションサーバー上に記憶されるものである。共有文書はまた、例示のクライアントコンピューター104上のユーザーといった他のユーザーによる共同オーサリングに利用可能である。例示の文書処理モジュール202を用いて、共有文書は開かれ、処理される。
【0045】
操作404において、クライアントコンピューター102上の共同オーサリングのユーザーが、文書の第1のパラグラフを修正する。ユーザーは、第1のパラグラフ内にタイプする、第1のパラグラフの一部を削除する、または、第1のパラグラフ内の書式変更をすることにより、第1のパラグラフを修正することができる。第1のパラグラフ内にタイプすることは、第1のパラグラフを作成すること、および第1のパラグラフ内のテキストを編集することを含む。
【0046】
操作406において、クライアントコンピューター102上の例示のメタデータマージモジュール204が、文書の第2のパラグラフに対するメタデータロックを受信する。操作408において、例示のメタデータマージモジュール204が、メタデータロックを文書の第2のパラグラフに挿入する。メタデータロックは、クライアントコンピューター104に対して別のクライアントシステム上の共同オーサリングのユーザーが、文章の第2のパラグラフを修正していることを示している。メタデータロックにより、クライアントコンピューター102上のユーザーは文書の第2のパラグラフを修正できないこととなる。
【0047】
操作410において、例示のユーザーインタフェースモジュール206が、クライアント102上の共同オーサリングのユーザーが文書のどのパラグラフがロックされているかすぐにわかるように、文書上にグラフィカルな形態でメタデータロックを表示する。操作412において、例示のメタデータマージモジュール204が、クライアントコンピューター102上のアンドゥ/リドゥスタック上にメタデータロックを記憶する。
【0048】
操作414において、クライアントコンピューター102上の共同オーサリングのユーザーが、アンドゥ操作を開始する。例えば、クライアントコンピューター102上の共同オーサリングのユーザーが文書の第1のパラグラフの最新のユーザー
アクションをアンドゥしたい場合がある。アンドゥ操作は、例示のアンドゥ/リドゥモジュール208によって処理される。最新のユーザー
アクションは編集アクションであり、その編集アクションは、文字をタイプする、第1のパラグラフの一部を削除する、および、第1のパラグラフ内の書式変更をすることを含んでよい。ユーザーは一般的に、例えばアンドゥキーを押すというように、アンドゥ操作に関連するクライアントコンピューター102上のキーを押すことにより、アンドゥ操作を開始する。
【0049】
操作416において、例示のメタデータマージモジュール204が、アンドゥ/リドゥスタック上のメタデータロックを取り除き、メタデータロックを、例示のクライアントコンピューター102上の、アンドゥ/リドゥスタック以外の領域にあるメモリに一時的に記憶する。操作418において、最新のユーザー
アクションはアンドゥされ、操作420において、例示のメタデータマージモジュール204が、メタデータロックをアンドゥ/リドゥスタック上に復元する。
【0050】
図5は、クライアント102上の例示の物理コンポーネントを示すブロック図である。クライアントコンピューター104、サーバーコンピューター108および/もしくはクライアントコンピューター102、104、ならびに/または、サーバーコンピューター108内の電子コンピューティング装置は、クライアント102と同様の方法で実装することができる。
【0051】
図5の例に示すように、クライアント102は、例えば、デスクトップコンピューター、ラップトップコンピューター、端末コンピューター、携帯情報端末、または携帯電話などの電子コンピューティング装置である。
【0052】
クライアントは、メモリユニット501を含む。メモリユニット501は、データおよび命令を記憶することが可能なコンピューター可読データ記憶媒体である。メモリユニット501は、様々な異なる種類のコンピューター可読データ記憶媒体であってよく、それらには、DRAM(dynamic random access memory)、DDR SDRAM(double data rate synchronous dynamic random access memory)、低待ち時間DRAM(reduced latency DRAM)、DDR SDRAM、DDR3 SDRAM、Rambus RAM、または他の種類のコンピューター可読データ記憶媒体を含むが、それらに限らない。
【0053】
クライアント102はまた、通信媒体を含むことができる。通信媒体は一般的に、コンピューター可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他のトランスポート機構といった変調データ信号による他のデータによって具現化することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、1つもしくは複数の特性のセットを有する信号か、または、情報を信号で符号化するような方法で変化した信号を意味する。例として、通信媒体は、有線ネットワークまたは直接有線接続といった有線媒体、ならびに、音響、RF、赤外線および他の無線媒体といった無線媒体を含む。
【0054】
さらに、クライアント102は、処理ユニット502を含む。第1の例では、処理ユニット502は、処理ユニット502に特定の機能を提供させるソフトウェア命令を実行することができる。この第1の例では、処理ユニット502は、1つもしくは複数の処理コア、および/または、1つもしくは複数の別個のマイクロプロセッサとして実装してもよい。例えば、この第1の例では、処理ユニット502は、1つまたは複数のIntel Core2マイクロプロセッサとして実装してもよい。処理ユニット502は、x86命令セット、POWER命令セット、RISC命令セット、SPARC命令セット、IA‐64命令セット、MIPS命令セット、または別の命令セットといった命令セットの命令を実行することが可能である。第2の例では、処理ユニット502は、特定の機能を提供するASIC(application specific integrated circuit)として実装してもよい。第3の例では、処理ユニット502は、ASICを用いることにより、およびソフトウェア命令を実行することにより、特定の機能を提供することができる。
【0055】
クライアント102はまた、クライアントコンピューター(102および104)またはサーバーコンピューター108がビデオ情報を表示装置506に出力することを可能にするビデオインタフェース504を含む。表示装置506は、様々な異なる種類の表示装置であってよい。例えば、表示装置506は、ブラウン管表示装置、LCD表示パネル、プラズマスクリーン表示パネル、タッチセンサー式表示パネル、LEDアレイ、または別の種類の表示装置であってよい。
【0056】
さらに、クライアント102は、不揮発性記憶装置508を含む。不揮発性記憶装置508は、データおよび/または命令の記憶することが可能なコンピューター可読データ記憶媒体である。不揮発性記憶装置508は、様々な異なる種類の異なる不揮発性記憶装置であってよい。例えば、不揮発性記憶装置508は、ハードディスクドライブ、磁気テープドライブ、CD‐ROMドライブ、DVD‐ROMドライブ、ブルーレイディスクドライブ、または他の種類の不揮発性記憶装置のうちの1つもしくは複数であってよい。
【0057】
クライアント102はまた、クライアントコンピューター102、104、およびサーバーコンピューター108が外部コンポーネントと通信することを可能にする外部コンポーネントインタフェース510を含む。
図5の例に示したように、外部コンポーネントインタフェース510は、入力装置512および外部記憶装置514と通信する。クライアント102の一実装においては、外部コンポーネントインタフェース510は、USB(Universal Serial Bus)インタフェースである。クライアント102の他の実装においては、クライアント102は、クライアント102が入力装置および/または出力装置と通信することを可能にする別の種類のインタフェースを含んでもよい。例えば、クライアント102は、PS/2インタフェースを含んでもよい。入力装置512は、様々な異なる種類の装置であってよく、それらには、キーボード、マウス、トラックボール、スタイラス入力装置、タッチパッド、タッチセンサー式表示装置、タッチセンサー式表示スクリーン、または他の種類の入力装置が含まれるが、それらに限らない。外部記憶装置514は、様々な異なる種類のコンピューター可読データ記憶媒体であってよく、それらには、磁気テープ、フラッシュメモリモジュール、磁気ディスクドライブ、光ディスクドライブ、および他のコンピューター可読データ記憶媒体が含まれる。
【0058】
さらに、クライアント102は、クライアント102がネットワーク106とデータを送受信することを可能にするネットワークインタフェース516を含む。ネットワークインタフェース516は、様々な異なる種類のネットワークインタフェースであってよい。例えば、ネットワークインタフェース516は、イーサネット
(登録商標)インタフェース、トークンリングインタフェース、光ファイバーインタフェース、無線ネットワークインタフェース(例えば、WiFi、WiMAXなど)、または別の種類のネットワークインタフェースであってよい。
【0059】
クライアント102はまた、クライアント102の様々なコンポーネント間の通信を容易にする通信媒体518を含む。通信媒体518は、1つまたは複数の異なる種類の通信媒体を含み、それらは、PCIバス、PCI Expressバス、AGP(accelerated graphics port)バス、Infiniband相互接続、シリアルATA(advanced attachment)相互接続、パラレルATA相互接続、ファイバチャネル相互接続、USBバス、SCSI(small computer system interface)インタフェース、または別の種類の通信媒体を含むが、それらに限らない。
【0060】
コンピューター可読データ記憶媒体のいくつかを
図5の例に示している(すなわち、メモリユニット501、不揮発性記憶装置508、および外部記憶装置514)。これらのコンピューター可読データ記憶媒体は、合わせて単一の論理コンピューター可読データ記憶媒体を構成してもよい。この単一の論理コンピューター可読データ記憶媒体は、処理ユニット502により実行可能な命令を記憶することができる。上記の記述で説明したアクションは、この単一の論理コンピューター可読データ記憶媒体上に記憶された命令の実行の結果、生じ得るものである。従って、この記述において、ある特定の論理モジュールがある特定のアクションを実施すると述べる場合、その記述は、ソフトウェアモジュールの命令が、処理ユニット502といった処理ユニットにアクションを実施させることを意味すると解釈することができる。
【0061】
上述の様々な実施形態は、単に例示として提供するものであって、限定と解釈すべきではない。上述の実施形態に、本開示の真の趣旨および範囲から逸脱することなく、様々な修正および変更を加えてもよい。