(57)【特許請求の範囲】
【請求項１】
文書メタデータを、クライアントコンピュータにおいてマージする方法であって、前記方法は、
前記クライアントコンピュータが、文書を、サーバコンピュータから、取得するステップであって、前記文書は、前記クライアントコンピュータを介してユーザによって要求される、取得するステップと、
前記クライアントコンピュータが、前記文書を開くステップと、
前記文書が前記クライアントコンピュータ（１０２）において開かれたことに応答して、前記クライアントコンピュータが、前記文書がユニット識別子を含むかどうかを判定するステップであって、前記ユニット識別子は、１つまたは複数の段落識別子、１つまたは複数の文識別子、および１つまたは複数の表識別子を含む、判定するステップと、
前記文書が段落識別子を含まないという判定がされた場合、前記クライアントコンピュータが、段落識別子を、前記文書中の各段落に割り当てるステップと、
前記クライアントコンピュータが、少なくとも１人の他のユーザが前記文書を執筆しているという通知を提供する第１のメッセージを、前記サーバコンピュータから受信するステップと、
前記第１のメッセージを受信したことに応答して、前記クライアントコンピュータが、第２のメッセージを、前記サーバコンピュータに送信するステップであって、前記第２のメッセージは、前記文書に対する第１のメタデータを含み、前記第１のメタデータは、前記文書に対する、第１の次段落識別子、第１の文書識別子、および前記文書のバージョンを示す第１の改訂識別子を含む、送信するステップと、
前記クライアントコンピュータが、前記第１の文書識別子および前記第１の次段落識別子から第１の段落範囲を決定するステップであって、前記第１の段落範囲の最初の識別子は、前記第１の文書識別子であり、前記第１の段落範囲の最後の識別子は、前記第１の次段落識別子よりも１つ小さいものである、判定するステップと、
前記クライアントコンピュータが、第３のメッセージを、前記サーバコンピュータから受信するステップであって、前記第３のメッセージは、前記文書に対する第２のメタデータを含み、前記第２のメタデータは、前記文書に対する、第２の次段落識別子、第２の文書識別子、および前記文書のバージョンを示す第２の改訂識別子を含む、受信するステップと、
前記クライアントコンピュータが、前記第２の文書識別子および前記第２の次段落識別子から第２の段落範囲を決定するステップであって、前記第２の段落範囲の最初の識別子は、前記第２の文書識別子であり、前記第２の段落範囲の最後の識別子は、前記第２の次段落識別子よりも１つ小さいものである、判定するステップと、
前記第３のメッセージを受信したことに応答して、前記クライアントコンピュータが、前記第１のメタデータと前記第２のメタデータをマージすべきかどうかを判定するステップであって、前記マージすべきかどうかの判定は、
前記第１の改訂識別子が前記第２の改訂識別子に合致するかどうかを判定するステップと、
前記第１の改訂識別子が前記第２の改訂識別子に合致するという判定がされた場合、前記第１の文書識別子が前記第２の文書識別子に合致するかどうかを判定するステップと、
前記第１の文書識別子が前記第２の文書識別子に合致しないという判定がされた場合、前記第１の段落範囲のサイズが前記第２の段落範囲のサイズに合致するかどうかを判定するステップと、
前記第１の段落範囲のサイズが前記第２の段落範囲のサイズに合致するという判定がされた場合、前記第１のメタデータと前記第２のメタデータをマージすべきであると判定するステップと
を含む、判定するステップと、
前記第１のメタデータと前記第２のメタデータをマージすべきであるという判定がされた場合、前記クライアントコンピュータが、前記文書中の段落識別子を、前記第２のメタデータに基づいて調節するステップと
を備えたことを特徴とする方法。
【請求項２】
前記第１の段落範囲内の前記最初の識別子は、前記第１の文書識別子に等しい初期値を有し、前記第１の段落範囲内の前記最後の識別子は、前記第１の次段落識別子よりも１つ小さいものに等しい値を有し、前記第２の段落範囲内の前記最初の識別子は、前記第２の文書識別子に等しい初期値を有し、前記第２の段落範囲内の前記最後の識別子は、前記第２の次段落識別子より１つ小さいものに等しい値を有することを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の文書識別子はランダムに生成され、前記第１の段落範囲内の各段落は前記第１の文書識別子から始めて順次番号付けされ、および前記第２の段落範囲内の各段落は前記第２の文書識別子から始めて順次番号付けされることを特徴とする請求項２に記載の方法。
【請求項４】
前記文書中の段落識別子を、前記第２のメタデータに基づいて調節するステップは、前記第１の段落範囲内の前記最初の識別子を、前記第２の文書識別子に変更するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記クライアントコンピュータが、前記第１の段落範囲内に含まれる段落に対する段落識別子を、前記第２の段落範囲内に含まれる、対応する段落識別子に変更するステップをさらに備えたことを特徴とする請求項４に記載の方法。
【請求項６】
前記クライアントコンピュータが、前記第１の段落範囲内に含まれない段落の１つまたは複数の段落識別子が前記第２の段落範囲内に含まれるかどうかを判定するステップをさらに備えたことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１の段落範囲内に含まれない段落の１つまたは複数の段落識別子が前記第２の段落範囲内に含まれるという判定がされた場合、前記クライアントコンピュータが、前記第１の段落範囲内に含まれない段落の前記１つまたは複数の段落識別子を、前記第１の段落範囲内に含まれる段落識別子に変更するステップをさらに備えたことを特徴とする請求項５に記載の方法。
【請求項８】
処理装置と、
前記処理装置に接続されたシステムメモリと
を備えたコンピューティング装置であって、前記システムメモリは、前記処理装置によって実行されたときに、前記処理装置に、
前記コンピューティング装置上の文書に対するメタデータを生成し、監視し、および格納するメタデータ処理モジュールであって、前記メタデータは、第１のメタデータおよび第２のメタデータを含み、前記第１のメタデータは、第１の文書識別子、第１の次段落識別子、および前記文書のバージョンを示す第１の改訂識別子を含み、前記第２のメタデータは、第２の文書識別子、第２の次段落識別子、および前記文書のバージョンを示す第２の改訂識別子を含み、前記メタデータ処理モジュールは、第１の段落範囲を、前記第１の文書識別子および前記第１の次段落識別子から生成し、第２の段落範囲を、前記第２の文書識別子および前記第２の次段落識別子から生成し、前記第１の段落範囲は、最初の段落識別子および最後の段落識別子を含み、前記最初の段落識別子は、前記第１の文書識別子に等しい値を有し、前記最後の段落識別子は、前記第１の次段落識別子よりも１つ小さいものに等しい値を有する、メタデータ処理モジュールと、
前記文書に対する前記メタデータを、サーバコンピュータから受信されるメタデータとマージするメタデータマージモジュールであって、前記メタデータマージモジュールは、前記第１のメタデータと前記第２のメタデータをマージすべきかどうか判定し、前記第１のメタデータと前記第２のメタデータをマージすべきであると判定したとき、前記文書中の段落識別子を、前記第２のメタデータに基づいて調節し、前記マージすべきかどうかの判定は、
前記第１の改訂識別子が前記第２の改訂識別子に合致するかどうかを判定することと、
前記第１の改訂識別子が前記第２の改訂識別子に合致するという判定がされた場合、前記第１の文書識別子が前記第２の文書識別子に合致するかどうかを判定することと、
前記第１の文書識別子が前記第２の文書識別子に合致しないという判定がされた場合、前記第１の段落範囲のサイズが前記第２の段落範囲のサイズに合致するかどうかを判定することと、
前記第１の段落範囲のサイズが前記第２の段落範囲のサイズに合致するという判定がされた場合、前記第１のメタデータと前記第２のメタデータをマージすべきであると判定するステップと
を含む、メタデータマージモジュールと
を生成させるコンピュータ実行可能命令を有することを特徴とするコンピューティング装置。
【請求項９】
前記メタデータ処理モジュールは、メタデータを、前記文書とは別の、前記サーバコンピュータ上のファイル内に格納することを特徴とする請求項８に記載のコンピューティング装置。
【請求項１０】
コンピュータ実行可能命令を有するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、電子コンピューティング装置の処理装置によって実行されたときに、前記処理装置に、
文書を、サーバコンピュータから取得することであって、前記文書は、前記電子コンピュータ装置を介してユーザによって要求される、取得することと、
前記文書を開くことと、
前記文書が開かれたことに応答して、前記文書が段落識別子を含むかどうかを判定することと、
前記文書が段落識別子を含まないという判定がされた場合、
前記文書の最初の段落に対する識別子をランダムに生成することと、
前記文書の前記最初の段落に対する前記識別子を、第１の文書識別子として指定することと、
前記文書中の残りの段落に識別子を順次割り当てることと、
前記文書中の最後の段落に割り当てた前記識別子よりも１つ大きい値を有する第１の次段落識別子を指定することと
によって、前記文書中の各段落に段落識別子を割り当てることと、
少なくとも１人の他のユーザが前記文書を執筆しているという第１のメッセージを前記サーバコンピュータから受信することと、
前記第１のメッセージを受信したことに応答して、第２のメッセージを、前記サーバコンピュータに送信することであって、前記第２のメッセージは、前記文書に対する第１のメタデータを含み、前記第１のメタデータは、前記第１の文書識別子、前記第１の次段落識別子、および前記文書のバージョンを示す第１の改訂識別子を含む、送信することと、
第１の段落範囲を、前記第１の文書識別子および前記第１の次段落識別子から決定することであって、前記第１の段落範囲内の最初の識別子は、前記第１の文書識別子であり、前記第１の段落範囲内の最後の識別子は、前記第１の次段落識別子よりも１つ小さいものである、決定することと、
第３のメッセージを、前記サーバコンピュータから受信することであって、前記第３のメッセージは、前記文書に対する第２のメタデータを含み、前記第２のメタデータは、第２の文書識別子、第２の段落識別子範囲、および前記文書のバージョンを示す第２の改訂識別子を含む、受信することと、
第２の段落範囲を、前記第２の文書識別子および前記第２の次段落識別子から決定することであって、前記第２の段落範囲内の最初の識別子は、前記第２の文書識別子であり、前記第２の段落範囲内の最後の識別子は、前記第２の次段落識別子よりも１つ小さいものである、決定することと、
前記第３のメッセージを受信したことに応答して、前記第１のメタデータと前記第２のメタデータをマージすべきかどうかを判定することであって、前記マージすべきかどうかの判定は、
前記第１の改訂識別子が前記第２の改訂識別子と合致するかどうかを判定することと、
前記第１の改訂識別子が前記第２の改訂識別子と合致するという判定がされた場合、前記第１の文書識別子が前記第２の文書識別子と合致するかどうかを判定することと、
前記第１の文書識別子が前記第２の文書識別子と合致しないという判定がされた場合、前記第１の段落範囲のサイズが前記第２の段落範囲のサイズと合致するかどうかを判定することと、
前記第１の段落範囲のサイズが前記第２の段落範囲のサイズと合致すると判定したとき、前記第１のメタデータと前記第２のメタデータをマージすべきであると判定することと
を含む、判定することと、
前記第１のメタデータと前記第２のメタデータをマージすべきであるという判定がされた場合、前記文書中の段落識別子を前記第２のメタデータに基づいて調節することであって、前記調節することは、
前記第２の文書識別子を、前記第１の文書識別子として指定することであって、前記第２の文書識別子は、前記第１の段落範囲内の前記最初の段落に対する前記段落識別子としても指定される、指定することと、
前記第２の段落範囲内の段落識別子を、前記第１の段落範囲内の対応する段落に割り当てることと、
前記第１の段落範囲内に含まれない段落の、前記文書中の段落識別子が、前記第２の段落範囲内の段落識別子と合致するかどうかを判定することと、
前記第１の段落範囲内に含まれない段落の、前記文書中の段落識別子が、前記第２の段落範囲内の段落識別子と合致するという判定がされた場合、前記第２の段落範囲内の段落識別子に合致する、前記文書中の前記段落識別子を、前記第１の段落範囲内の段落識別子に割り当てることと
を含む、調節することと
をさせることを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レガシー文書向け高速マージサポートに関する。
【背景技術】
【０００２】
ネットワークベースの文書共同システムは、複数のユーザが同時に文書にアクセスし、共同執筆することを可能にする。複数のユーザが文書を共同執筆することが許可されるが、競合を防ぐために、システムは、各ユーザが編集を行うことのできる文書中のエリアを制限し、文書のコピーがマージされるときに変更が競合する可能性を最小限に抑えることができる。
【０００３】
レガシーシステムは通常、レガシーシステム上で作成される文書の共同執筆を可能にすることができない。したがって、こうしたシステム上で作成される文書を、文書共同システム上の共同執筆をサポートするように適切に構成することができない。この結果、望ましくない競合編集が生じる可能性がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１２／１４５５３６号明細書
【特許文献２】米国特許出願第１１／９５１９７３号明細書
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の実施形態は、クライアントコンピュータで文書メタデータをマージする方法を対象とする。文書を、サーバコンピュータから、クライアントコンピュータのユーザが取得し、かつその文書をクライアントコンピュータで開く。クライアントコンピュータで文書を開いたことに応答して、文書がユニット識別子を含むかどうかに関して判定を行う。文書がユニット識別子を含まないと判定したとき、文書中の各ユニットにユニット識別子を割り当てる。
【０００６】
少なくとも１人の他のユーザが文書を執筆しているという通知を提供する第１のメッセージをサーバコンピュータから受信する。少なくとも１人の他のユーザが文書を執筆しているという通知を提供する第１のメッセージをサーバコンピュータから受信したことに応答して、文書に関する第１のメタデータを含む第２のメッセージをサーバコンピュータに送信する。サーバコンピュータに第２のメッセージを送信したことに応答して、文書に関する第２のメタデータを含む第３のメッセージをサーバコンピュータから受信する。サーバコンピュータから第３のメッセージを受信したことに応答して、第１のメタデータと第２のメタデータをマージすべきかどうかの判定を行う。第１のメタデータと第２のメタデータをマージすべきであると判定したとき、第２のメタデータに基づいて文書中のユニット識別子を調節する。
【０００７】
１つまたは複数の技法の詳細を、添付の図面および以下の説明に記載する。こうした技法の他の特徴、目的、および利点は、その説明、図面、および特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【０００８】
【図１】レガシー文書の高速マージサポートに関する例示的なシステムを示す図である。
【図２】レガシー文書の高速マージサポートのための機能を実装する、図１の例示的なクライアントコンピュータの例示的なモジュールを示す図である。
【図３】メタデータマージ操作中の文書識別子番号再設定の一例を示す図である。
【図４】クライアントコンピュータで文書メタデータをマージする方法の流れ図を示す図である。
【図５】クライアントコンピュータでメタデータをマージすべきかどうかを判定する方法の流れ図である。
【図６】図２のクライアントコンピュータの例示的な構成要素を示す図である。
【発明を実施するための形態】
【０００９】
本明細書は、ユニット識別子を提供しないレガシーネットワークベースの共有文書システム上で作成されたレガシー文書に対するユニット識別子を作成するシステムおよび方法を対象とする。
【００１０】
例示的な実施形態では、文書をユニットに分ける。ユニットは、文書の任意の副部分、例えば文、段落、見出し、図面、表などとすることができる。文書は、ただ１つのユニット、例えば単一の表、文を含むことができ、または複数の表、文、もしくは段落などの複数のユニットを含むことができる。本明細書で開示する例示的な実施形態では、文書ユニットは文書の段落である。
【００１１】
レガシー文書は、共同執筆を提供しないレガシーシステムで作成された文書である。したがって、レガシー文書は段落識別子を含まない。文書を文書共同システム上に保存するとき、または２人以上の著者が文書共同システム上で文書を編集するとき、段落識別子をレガシー文書に対して作成する。
【００１２】
段落識別子をレガシー文書に対してこのようにして作成するので、文書共同システムを使用する２人以上の著者が同一のレガシー文書にアクセスするとき、著者のうちの１人によって現在編集されている段落を識別し、かつ段落ロックを他の著者に伝播する。段落ロックにより、ロックが除去されるまで、ロックされた段落を現在編集していない著者が、ロックされた段落を編集することを防止する。本開示では、著者を、文書を作成または編集しているユーザと定義する。
【００１３】
システムおよび方法はまた、文書中の段落識別子の比較およびマージ、ならびに段落識別子マージおよび段落ロック伝播を提供する。著者が段落識別子を含まないレガシー文書にアクセスするごとに、固有の段落識別子のセットを作成する。第２の著者が同一のレガシー文書にアクセスするとき、段落識別子を比較およびマージし、各著者はレガシー文書に対する同期された段落識別子のセットを有する。
【００１４】
図１は、レガシー文書の高速マージをサポートする例示的なシステム１００を示す。システム１００は、クライアント１０２、１０４、サーバ１０６、およびネットワーク１０８を含む。より多数または少数のクライアントおよびサーバを使用することができる。本開示では、クライアントおよびクライアントコンピュータという用語を、ほぼ同じ意味で使用し、ならびにサーバおよびサーバコンピュータという用語をほぼ同じ意味で使用する。
【００１５】
クライアント１０２、１０４上に格納される複数の情報の中には、クライアントオペレーティングシステム（「ＯＳ」）およびクライアントアプリケーションがある。クライアントＯＳは、クライアントシステムのハードウェアリソースおよびソフトウェアリソースを管理するプログラムである。クライアントアプリケーションは、クライアント１０２、１０４のリソースを使用して、ユーザ、例えば文書を執筆しているユーザによって指定される作業を直接的に実施する。例えば、クライアント１０２、１０４は、文書ファイルを作成および編集するのに使用されるワードプロセッシングプログラムなどの１つまたは複数のソフトウェアアプリケーションを含む。そのようなアプリケーションの一例は、ワシントン州レドモンドのマイクロソフト社のマイクロソフトＷｏｒｄ（登録商標）である。そのようなアプリケーションの他の例も適用可能である。
【００１６】
サーバ１０６は、ネットワークを通じてアクセス可能なファイルサーバである。サーバ１０６は複数のファイルを格納する。こうしたファイルは、本明細書でさらに説明するように、ソフトウェアアプリケーションと文書のどちらも含むことができる。サーバ１０６は、サーバ１０６によって格納された文書へのアクセスを制御する。
【００１７】
例示的な実施形態では、サーバ１０６は組織内に位置することができ、または文書共同システムの一部とすることができる。例示的な文書共同システムは、マイクロソフト社によって提供されるＳｈａｒｅＰｏｉｎｔ（登録商標）チームサービスポータルサーバサービスである。例示的の共有文書サーバは、マイクロソフト社によって提供されるマイクロソフトＯｆｆｉｃｅ  ＳｈａｒｅＰｏｉｎｔ  Ｓｅｒｖｅｒ  ２００７である。他の構成も使用することができる。
【００１８】
例示的な実施形態では、段落識別子をマージし、および段落ロックを、文書の編集後の内容を保存するのに使用されるデータチャネル１１３とは別のメタデータチャネル１１１を通じて伝播する。文書の内容とは別にメタデータを送信することにより、著者は、内容保存操作とは無関係に、段落ロックを高速に受信することができる。段落ロックは、２人以上の著者が同一の内容を同時に編集することが防止するので、共同執筆プロセスの整合性が強化される。
【００１９】
図２は、クライアントコンピュータ１０２の論理モジュールの詳細図を示す。クライアントコンピュータ１０２は、例示的な文書処理モジュール２０２、例示的なメタデータ処理モジュール２０４、および例示的なメタデータマージモジュール２０６を含む。例示的な文書処理モジュール２０２は、テキスト、ヘッダ、表、図などの文書内容の作成、編集、および保存をサポートする。例示的な文書処理モジュール２０２はまた、メタデータとして知られている、文書内容についての情報の処理もサポートする。例示的な文書処理モジュール２０２は、ワードプロセッシングアプリケーション、例えばマイクロソフト社のマイクロソフトＷｏｒｄのワードプロセッシングアプリケーションを実装する。
【００２０】
例示的なメタデータ処理モジュール２０４は、文書中のメタデータを処理する。メタデータのある実施例は、文書名、作成日または最終編集日、文書識別子、改訂識別子、段落識別子、段落範囲、および段落ロックである。他の種類の文書メタデータも可能である。
【００２１】
段落識別子は、文書中の各段落を特定する番号である。例示的な実施形態では、段落識別子は、実際の段落に加えて、ヘッダおよびフッタなどの文書のサブユニットに対する識別子を含むことができる。
【００２２】
段落ロックは、著者が文書の段落を編集していることを示すメタデータである。競合を回避するために、１人の著者だけが、同一の内容を同時に編集することが許可される。１人の著者が文書の段落を編集するとき、文書を開いている他のすべての著者ために、その段落に対する段落ロックを受信する。文書ロックは、こうした他の著者が段落を編集することを、ロックを除去するまで防止する。
【００２３】
そのようなロックに関するさらなる詳細は、参照によりその全体が本明細書に組み込まれる２００８年６月２５日出願の特許文献１で見つけることができる。
【００２４】
クライアントコンピュータ１０２上の著者が段落識別子を含まないレガシー文書を開くとき、例示的なメタデータ処理モジュール２０４は、文書に対して文書識別子を生成する。文書識別子は通常、特定の番号範囲からランダムに生成される番号である。例えば、文書識別子は、１から０ｘ７ｆｆｆｆｆｆｆまでの範囲内にある３２ビット数とすることができる。
【００２５】
例示的なメタデータ処理モジュール２０４は、文書識別子を文書中の第１の段落に割り当てる。次いで、残りの段落を、文書識別子から順次番号付けする。例えば、文書中に５つの段落があり、かつランダムに生成された文書識別子が１０００である場合、５つの段落には、それぞれ段落識別子１０００、１００１、１００２、１００３、および１００４が割り当てられる。
【００２６】
例示的なメタデータ処理モジュール２０４はまた、メタデータとして、段落識別子シーケンス中の次の段落番号を識別する。この実施例では、次の段落識別子は１００５である。文書を最初に開くとき、段落識別子を順次生成する一方で、文書を編集する結果として追加可能な任意の段落に関する段落識別子を、ランダムに生成する。
【００２７】
クライアント１０２上の著者が文書を開くとき、例示的なメタデータ処理モジュール２０４はまた、文書に対する改訂識別子を取得する。例示的な文書共同システム内に格納された各文書は、文書に対するバージョン番号を特定する改訂識別子を含む。ある例示的な実施形態では、改訂識別子は、文書に対するファイルシステム識別子の一部とすることができる。例示的なメタデータ処理モジュール２０４は、改訂識別子をメタデータとして記録する。
【００２８】
この時、クライアント１０２上の著者は文書を開いた著者だけであるので、文書は何ら段落ロックを含まない。クライアント１０２上の著者は、文書を随意に編集し、既存の段落を編集し、段落を削除し、新しい段落を追加し、フォーマッティング変更を行うことなどが自由にできる。クライアント１０２上の著者がこうした変更を保存するまで、サーバ１０６は変更について認識しない。
【００２９】
クライアント１０４上の著者が同一の文書のコピーを開くとき、クライアント１０４が文書を開く前にクライアント１０２上の著者が文書を保存していない場合、サーバ１０６は、クライアント１０４上の著者に、クライアント１０２上の著者が文書に対して行った変更を含まない文書のバージョンを提示する。
【００３０】
文書をクライアント１０４上で開くとき、クライアント１０４上の例示的なメタデータ処理モジュール２０４は、クライアント１０４で開かれた文書のバージョンに対する文書識別子をランダムに生成する。例示的なクライアント１０４上の例示的なメタデータ処理モジュール２０４は、文書識別子を、クライアント１０４上で開かれた文書の第１の段落に割り当て、かつ段落番号を、クライアント１０４上で開かれた文書の残りの段落に順次割り当てる。
【００３１】
文書識別子がランダムを生成するので、クライアント１０２および１０４で開かれた文書のコピーに関する文書識別子および段落識別子は異なる。段落ロックを２つの開かれた文書に伝播するために、開かれた各文書に関する段落識別子をマージし、かつ同期しなければならない。これは、段落ロックが特定の段落に関連するためである。したがって、開かれた文書の複数のコピー上で共通の内容を有する段落は、同一の段落識別子を有する必要がある。
【００３２】
例示的なメタデータマージモジュール２０６は、文書間で段落識別子を比較し、かつ同期する。クライアント１０４上の著者が文書を開くとき、サーバ１０６は、既に文書を執筆している少なくとも１人の他のユーザがいることをクライアント１０４上の著者に通知する。サーバ１０６はまた、別の著者が文書を開いたことをクライアント１０２上の著者に通知する。クライアント１０２の著者が、別の著者が文書を開いたことを発見したとき、クライアント１０２上の例示的なメタデータマージモジュール２０６は、メタデータをサーバ１０６に送信する。同様に、クライアント１０４の著者が、別の著者が文書を開いたことを発見したとき、クライアント１０４の例示的なメタデータマージモジュール２０６は、メタデータチャネル１１１を使用してメタデータをサーバ１０６に送信する。
【００３３】
クライアント１０２および１０４によってサーバ１０６に送信される例示的なメタデータは、文書識別子、次段落識別子、および改訂識別子という３つのメタデータ構成要素を含む。例示的な実施形態では、これらの３つの構成要素をメタデータ種と呼ぶ。サーバ１０６がメタデータ種をクライアント１０２および１０４から受信したとき、サーバ１０６は、どのメタデータ種が最初に到達したかを判断する。サーバ１０６に最初に到達したメタデータ種が勝者とみなされる。次いで、勝利したメタデータ種情報を他の著者に伝播する。例えば、サーバ１０６がメタデータ種を最初にクライアント１０４から受信した場合、クライアント１０２上のメタデータ種情報を、クライアント１０４からのメタデータ種情報とマージする。
【００３４】
図３は、例示的なメタデータマージモジュール２０６が２人の著者からのメタデータを使用してメタデータをどのようにマージするかについての一実施例を示す。クライアント１０２上の著者が、段落識別子を含まない文書（例えば、共同執筆をサポートしないレガシーシステム上で作成された文書）を最初に開くとき、メタデータ操作マージモジュール２０４は、段落識別子を文書の各段落に割り当てる。例示的な段落識別子のセットを、例えば文書コピー３０２で示す。この実施例では、文書中に、段落識別子１０００、１００１、１００２、１００３、１００４、および１００５をそれぞれ有する６つの段落がある。
【００３５】
文書の編集中に、クライアント１０２上の著者が段落１００３を削除し、ならびに段落識別子２００２、８１２３、および９１２３を有する段落を追加する。このことを例示的な文書コピー３０４で示す。現在、文書を執筆している他のユーザはいないので、クライアント１０２上の著者は、文書中の任意の段落を修正、追加、および／または削除することができ、したがって文書上に段落ロックはない。追加された段落は、上述のように、ランダムに生成された段落識別子を有する。
【００３６】
クライアント１０２上の著者が、例示的な文書コピー３０４で示す文書に対して変更を行った後、クライアント１０４上の著者が文書のコピーを開く。文書のコピーをサーバ１０６から取得する。クライアント１０２上の著者によって行われた文書に対する変更をまだサーバ１０６に保存していないので、クライアント１０４上の著者によって開かれた文書は、例示的な文書コピー３０２で示すのと同一の内容を含む。
【００３７】
文書をクライアント１０４上で開くとき、クライアント１０４上のメタデータ操作モジュール２０４は、クライアント１０４で開かれた文書に関する文書識別子をランダムに生成する。この実施例では、文書識別子は２０００である。クライアント１０４上の例示的なメタデータ操作モジュール２０４は、クライアント１０４上で開かれた文書の第１の段落に文書識別子２０００を割り当てる。次いで、クライアント１０４上の例示的なメタデータ操作モジュール２０４は、文書中の残りの段落に順次番号付けする。得られる段落番号付けを例示的な文書コピー３０６で示す。
【００３８】
所与のある間隔で、クライアント１０２、１０４は共に、文書に関連するメタデータを同期する。この同期は、上述のようにメタデータチャネル１１１を介して行なう。例示的な実施形態では、２秒、５秒、１０秒、２０秒、３０秒、１分、５分、１０分、３０分ごとなどの特定の期間で行うように同期間隔を設定することができる。他の間隔も使用することができる。
【００３９】
この実施例では、クライアント１０４からのメタデータ種を、サーバ１０６で最初に受信する。クライアント１０４からのメタデータ種を最初に受信し、かつ勝利した種であるとサーバ１０６が判定するとき、サーバ１０６は、クライアント１０４から受信したメタデータ種をクライアント１０２に送信する。クライアント１０２がメタデータ種をサーバ１０６から受信したとき、クライアント１０２上の例示的なメタデータマージモジュール２０６は、サーバ１０６から受信したメタデータ種を、クライアント１０２上の段落メタデータとマージする。マージの結果を例示的な文書コピー３０８で示す。
【００４０】
例示的な文書コピー３０８は、マージの結果として、（例示的な文書コピー３０４からの）段落識別子１０００、１００１、１００２、１００４、および１００５を、それぞれ２０００、２００１、２００２、２００４、および２００５に変更することを示す。勝利した種の文書識別子が２０００であるので、クライアント１０２上の例示的なメタデータマージモジュール２０６は、サーバ１０６から受信したメタデータ種から判定される段落範囲内の段落を番号再設定する。番号再設定は、段落範囲内の段落を文書識別子２０００に適合させる。メタデータ種は文書識別子（これは段落範囲の第１の段落でもある）および次段落識別子（これは、段落範囲内の最後の段落識別子に続く次の順次段落識別子である）を含み、かつ段落範囲内のすべての段落を順次番号付けするので、段落範囲をメタデータ種から判定することができる。したがって、クライアント１０２で開かれた文書中の第１の段落を、１０００から２０００に番号再設定する。段落範囲は、段落１０００から１００５を含む。したがって、段落１００１を２００１に番号再設定し、段落１００２を２００２に番号再設定し、段落１００４を２００４に番号再設定し、および段落１００５を２００５に番号再設定する。先に論じたように、段落１００３は削除された。
【００４１】
クライアント１０２上のメタデータマージモジュール２０６はまた、段落範囲内に含まれない、クライアント１０２で開かれた文書中のすべての段落識別子を判定する。これは、例示的な文書コピー３０４に追加された段落識別子２００２、８１２３、および９１２３を有する段落を含む。追加された段落２００２は、番号再設定された段落２００２（元の段落１００２）と競合するので、例示的なメタデータマージモジュール２０６は、追加された段落２００２を１００２に番号再設定する。段落識別子１００２が文書中でもはや使用されておらず、その結果、段落１００２を使用する場合に競合はないので、例示的なメタデータマージモジュール２０６は、追加された段落２００２を１００２に番号再設定する。段落識別子８１２３および９１２３によって引き起こされる競合はないので、例示的なメタデータマージモジュール２０６は、これらの段落識別子を変更しない。
【００４２】
メタデータマージを完了するとき、クライアント１０２上で開かれた文書と、クライアント１０４上で開かれた文書に対する共通の内容を有する段落は、同一の段落識別子を有する。例えば、マージ前に、クライアント１０２上で開かれた文書に対する、識別子１０００、１００１、１００２、１００４、および１００５を有する段落が、それぞれ、クライアント１０４上で開かれた文書に関する、識別子２０００、２００１、２００２、２００４、および２００５を有する段落と共通の内容を有する場合、マージ後に、クライアント１０２上とクライアント１０４上の両方のこれらの段落は、段落識別子２０００、２００１、２００２、２００４、および２００５を有する。これにより、段落ロックをこれらの段落に割り当てることが可能となる。例えば、クライアント１０２の著者が段落２００４を編集するとき、段落ロックをクライアント１０４の文書に送信し、クライアント１０４が段落２００４を編集することを防止する。段落ロックは、複数の著者が同一の段落を同時に編集することができないことを保証する。
【００４３】
クライアント１０２上の著者が保存操作を実施したとき、クライアント１０２上で開かれた文書に関する内容変更を、データチャネル１１３を通じてサーバ１０６に送信する。内容変更を送信することに加えて、保存操作はまた、クライアント１０２上で以前に編集された段落に関連する段落ロックを除去する。ロックの変更は、メタデータチャネル１１１を通じて通信される。
【００４４】
保存された内容および段落ロックの除去を、文書を現在執筆しているすべての著者に伝播する。これにより、著者が以前にロックされた段落を編集することが可能となる。しかしながら、著者が段落の編集を開始すると、新しい段落ロックを生成し、かつメタデータチャネル１１１を通じて、文書を現在執筆しているすべての他の著者に伝播する。
【００４５】
段落識別子が同期すると、参照によりその全体が本明細書に組み込まれる２００７年１２月６日出願の特許文献２に記載の方式で、それらの段落識別子を使用してクライアント１０２またはクライアント１０４による文書に対する別の変更を同期することができる。
【００４６】
上記のメタデータマージの議論では、２人の著者を説明する。他の例示的な実施形態では、３人以上の著者が同一の文書を編集することができる。同一のメタデータマージ操作を、３人以上の著者を有する例示的な実施形態に適用する。
【００４７】
図４は、クライアントコンピュータで文書メタデータをマージする方法４００の例示的な流れ図を示す。操作４０２で、例示的なクライアント１０２上の著者は、文書を例示的サーバ１０６から取得し、およびその文書をクライアント１０２上で開く。サーバ１０６は、マイクロソフトＳｈａｒｅＰｏｉｎｔなどのインターネットベースの文書共同システムと共に使用される、マイクロソフトＳｈａｒｅＰｏｉｎｔ  Ｓｅｒｖｅｒ２００７などのサーバである。クライアント１０２は、文書を、マイクロソフトＷｏｒｄなどのワードプロセッシングプログラムで開く。例示的方法４００では、クライアント１０２の著者が文書を開くとき、他の著者は文書を開いていないと仮定する。
【００４８】
操作４０４で、クライアント１０２は、文書が段落識別子を含むかどうかを判定する。レガシー文書を、共同執筆をサポートせず、または段落識別子を含まないワードプロセッシングアプリケーションで作成するので、通常、サーバ１０６上に格納されたレガシー文書は、段落識別子を含まない。文書が段落識別子を含む場合、操作４０６で、クライアント１０２は文書の編集を開始することができる。
【００４９】
文書が段落識別子を含まない場合、操作４０８で、段落識別子を文書に割り当てる。例示的なメタデータ操作モジュール２０４は、文書に関する文書識別子をランダムに生成する。次いで、通常は１から０ｘ７ｆｆｆｆｆｆｆまでの範囲の３２ビット数である文書識別子を、文書の第１の段落に割り当てる。次いで、残りの段落を文書識別子から順次番号付けする。
【００５０】
操作４１０で、クライアント１０２上の著者は文書の編集に進む。クライアント１０２上の著者が文書を開いた唯一の著者であるので、クライアント１０２上の著者は、文書の任意の段落を編集することができ、段落を追加し、削除することもできる。
【００５１】
操作４１２で、クライアント１０２は、少なくとも１人の他の著者、例えばクライアント１０４上の著者が文書を開いたという通知をクライアント１０２に提供するメッセージを、サーバ１０６から受信する。クライアント１０２が、少なくとも１人の他の著者が文書を開いたという通知を受信したとき、操作４１４で、クライアント１０２上の例示的なメタデータ操作モジュール２０４は、第１のメタデータをサーバ１０６に送信する。第１のメタデータは、文書識別子、次段落識別子、および改訂識別子を含む、クライアント１０２上で開かれた文書に関するメタデータ種を含む。
【００５２】
操作４１６で、クライアント１０２は、第２のメタデータを含むメッセージをサーバ１０６から受信する。第２のメタデータは、文書を執筆している他の著者のうちの１人、例えばクライアント１０４上の著者が発信源となる。第２のメタデータは、サーバ１０６で受信された勝利したメタデータ種を表す。勝利したメタデータ種は、文書を執筆している少なくとも１人の他の著者からサーバ１０６で受信された第１のメタデータ種である。第２のメタデータは、サーバ１０６に勝利したメタデータ種を送信するクライアント、例えばクライアント１０４からの文書識別子、次段落識別子、および改訂識別子を含む。
【００５３】
操作４１８で、クライアント１０２は、第１のメタデータと第２のメタデータをマージすべきかどうかを判定する。第１のメタデータと第２のメタデータをマージすべきかどうかを判定することに関するステップを図５で示し、かつ本開示で後で論じる。第１のメタデータと第２のメタデータをマージすべきではないと判定した場合、操作４２０で、クライアント１０２の著者は、引き続き文書を編集する。
【００５４】
第１のメタデータと第２のメタデータをマージすべきであると判定した場合、操作４２２で、クライアント１０２上の例示的なメタデータマージモジュール２０６は、第１のメタデータと第２のメタデータをマージする。メタデータを、クライアント１０２上の著者によって開かれた文書中の段落識別子を調節することによってマージする。段落識別子を調節する操作は、クライアント１０４上で開かれた文書中の対応する段落と共通の内容を有する、クライアント１０２上で開かれた文書中のすべての段落に対する段落識別子を変更することを含む。クライアント１０２上で開かれた文書上の段落識別子を、第２のメタデータ内に含まれる文書識別子および次段落識別子によって示される、対応する段落識別子に変更する。例えば、クライアント１０２上で開かれた文書上の段落１〜３が、クライアント１０４上で開かれた文書上の段落１〜３と共通の内容を有し、かつクライアント１０２上の文書に対する文書識別子が１０００であり、第２のメタデータ内の文書識別子が２０００である場合、クライアント１０４上の文書中の最初の３つの段落を２０００、２００１、および２００２に番号再設定する。
【００５５】
さらに、クライアント１０２上で開かれた文書に追加されたが、保存されていない段落が、第２のメタデータで示される段落範囲内の段落識別子を有すると判定した場合、例示的なメタデータマージモジュール２０６は、これらの段落識別子を変更し、これらの段落識別子は文書中で一意となる。
【００５６】
図５は、クライアントコンピュータでメタデータをマージすべきかどうかを判定する方法４１８の例示的な流れ図を示す。この方法を、クライアントコンピュータ、例えばクライアントコンピュータ１０２の著者が、第１のメタデータ種を含む文書を編集し、およびクライアントコンピュータが第２のメタデータ種をサーバコンピュータから受信したときに実施する。第２のメタデータ種は、文書を開いた第２の著者からのメタデータを表す。第２のメタデータ種は、文書を開き、かつ執筆している１人または複数の著者からサーバコンピュータで受信した第１のメタデータ種を表す。メタデータ種は、文書識別子、次ページ識別子、および改訂識別子を含む。
【００５７】
操作５０２で、第１のメタデータ種からの改訂識別子が、第２のメタデータ種からの改訂識別子と合致するかどうかの判定を行う。改訂識別子は文書のバージョンを示す。メタデータをマージするためには、各文書は同一の改訂レベルでなければならない。これは、各著者が文書を最初に開くとき、両方の文書の内容が同一でなければならないためである。第１のメタデータ種からの改訂識別子が第２のメタデータ種からの改訂識別子と合致しないと判定したとき、操作５０４で、メタデータをマージせず、およびクライアント１０２の著者は編集を続行する。
【００５８】
第１のメタデータ種からの改訂識別子が第２のメタデータ種からの改訂識別子と合致すると判定したとき、操作５０６で、第１のメタデータ種からの文書識別子が第２のメタデータ種からの文書識別子と合致するかどうかの判定を行う。文書識別子が合致するとき、文書が既に同期されており、およびメタデータマージが不要であることを示す。この場合、操作５０８で、メタデータをマージせず、およびクライアント１０２の著者は編集を続行する。
【００５９】
第１のメタデータ種からの文書識別子が第２のメタデータ種からの改訂識別子と合致しないと判定したとき、操作５１０で、第１のメタデータ種から判定した段落範囲のサイズが第２のメタデータ種から判定した段落範囲のサイズと合致するかどうかの判定を行う。段落範囲が同一ではないと判定したとき、操作５１２で、メタデータをマージせず、およびクライアント１０２の著者は編集を続行する。
【００６０】
判定した段落範囲が同一であると判定したとき、操作５１４で、第１のメタデータ種と第２のメタデータ種をマージする。第１のメタデータ種と第２のメタデータ種のマージは、論じたように、操作４２２を通じて、クライアント１０２上で開かれた文書中の段落識別子を調節することを含む。
【００６１】
図６を参照すると、クライアント１０２の例示的な構成要素が示されている。例示的な実施形態では、クライアント１０２は、デスクトップコンピュータ、ラップトップコンピュータ、ＰＤＡ、セルラー式の装置などのコンピューティング装置である。クライアント１０２は、入出力装置、中央演算処理装置（「ＣＰＵ」）、データ記憶装置、ネットワーク装置を含むことができる。
【００６２】
基本的構成では、コンピューティング装置１０２は通常、少なくとも１つの処理装置６０２およびシステムメモリ６０４を含む。コンピューティング装置の厳密な構成およびタイプに応じて、システムメモリ６０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはその２つの何らかの組合せとすることができる。システムメモリ７０４は通常、ワシントン州レドモンドのマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムなどの、ネットワークパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム６０６、または、やはりワシントン州レドモンドのマイクロソフト社のＷｉｎｄｏｗｓ  ＳｈａｒｅＰｏｉｎｔ  Ｓｅｒｖｅｒ２００７などの、サーバの動作を制御するのに適したオペレーティングシステム６０６を含む。システムメモリ６０４はまた、１つまたは複数のソフトウェアアプリケーション６０８をも含むことができ、プログラムデータを含むことができる。
【００６３】
コンピューティング装置１０２は、追加の特徴または機能を有することができる。例えば、コンピューティング装置１０２はまた、例えば磁気ディスク、光ディスク、テープなどの、追加のデータ記憶装置（取外し可能および／または取外し不能）も含むことができる。図６では、そのような追加のストレージを取外し可能ストレージ６１０および取外し不能ストレージ６１２で示す。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどの情報を格納する任意の方法または技術で実装された、揮発性および不揮発性の、取外し可能媒体および取外し不能媒体を含むことができる。システムメモリ６０４、取外し可能ストレージ６１０、および取外し不能ストレージ６１２はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶装置、または所望の情報を格納するのに使用することができ、コンピューティング装置１０２でアクセスすることのできる任意の他の媒体を含む。任意のそのようなコンピュータ記憶媒体は、装置１０２の一部とすることができる。コンピューティング装置１０２はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置（複数可）６１４を有することもできる。ディスプレイ、スピーカ、プリンタなどの出力装置（複数可）６１６を含めることもできる。こうした装置は当技術分野で周知であり、ここで詳細に論じる必要はない。
【００６４】
コンピューティング装置１０２はまた、分散コンピューティング環境内のネットワーク、例えばイントラネットまたはインターネットを介してなど、装置が他のコンピューティング装置６２０と通信することを可能にする通信接続６１８を含むこともできる。通信接続６１８は通信媒体の一実施例である。通信媒体は通常、搬送波や他の移送機構などの被変調データ信号中のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって実施することができ、および任意の情報送達媒体を含む。「被変調データ信号」という用語は、その特性集合のうちの１つまたは複数を有するか、またはその信号中に情報を符号化するような方式で変化した信号を意味する。限定ではなく、実施例例として、通信媒体は、ワイヤードネットワークやダイレクトワイヤード接続などのワイヤード媒体、および音響媒体、ＲＦ媒体、赤外線媒体、他のワイヤレス媒体などのワイヤレス媒体を含む。本明細書で使用するコンピュータ可読媒体という用語は、記憶媒体と通信媒体のどちらも含む。
【００６５】
上述の様々な実施形態は、例示として与えたものに過ぎず、限定と解釈すべきではない。様々な修正および変更を、本開示の真の趣旨および範囲から逸脱しない、上述の実施形態に対して行うことのできる。
【図１】
0005787878.tif 000002
【図２】
0005787878.tif 000003
【図３】
0005787878.tif 000004
【図４】
0005787878.tif 000005
【図５】
0005787878.tif 000006
【図６】
0005787878.tif 000007