(57)【要約】  ユーザが、ＰＣ、ＰＤＡ、携帯電話などのデバイス間でデータセットを非同期的に同期させることを可能にするシステムおよび方法が開示される。開示の方法は、そうした同期を、インターネット（１０２ａ）や企業ネットワーク（１０２ｂ）を含むいくつかの媒体を介して実施できるようにする。この方法は、すべてのデバイス間で迅速かつ安全にデータを更新する諸ステップをさらに含む。
2005509979.tif 000002
【特許請求の範囲】
【請求項１】
第１の計算処理デバイスが第１のトリガ・イベントを受け取ること、
前記第１の計算処理デバイスが前記第１のトリガ・イベントに応答して、前記第１の計算処理デバイスの第１のデバイス・データに変更が加えられているかどうか判定すること、および
前記変更が加えられていると判定された場合には、経路指定システムに前記変更を指示する変更標識を転送すること
を含む方法であって、
前記変更が、第２の計算処理デバイスによって受け取られ、非同期的にトリガする第２のデバイス・トリガに応答して前記第２の計算処理デバイスの第２のデバイス・データと同期させられる方法。
【請求項２】
前記第１の計算処理デバイスと前記第２の計算処理デバイスの少なくとも一方がパーソナル・コンピュータ、ＰＤＡ、ＰＩＭおよび携帯電話を含むグループから選択される請求項１に記載の方法。
【請求項３】
前記第１のトリガ・イベントが前記第１のデバイス・データへの変更を含む請求項１に記載の方法。
【請求項４】
前記変更標識が同期メッセージを含む請求項１に記載の方法。
【請求項５】
前記同期メッセージが前記変更に対応する変更済みデータを含む請求項４に記載の方法。
【請求項６】
前記同期メッセージが、前記第１のデバイス・データの第１の計算処理デバイス・バージョンを指示する第１のバージョン標識と、前記第２のデバイス・データの第２の計算処理デバイス・バージョンを指示する第２のバージョン標識の少なくとも一方を含む請求項４に記載の方法。
【請求項７】
前記経路指定システムが、前記第１の計算処理デバイスと前記第２の計算処理デバイスからアクセス可能な記憶デバイスを含む請求項１に記載の方法。
【請求項８】
前記記憶デバイスが、前記第１の計算処理デバイスから第１のデバイス変更標識を受け取り、前記第１のデバイス変更標識を前記第２のデバイスに転送する第１の待ち行列と、前記第２の計算処理デバイスから第２のデバイス変更標識を受け取り、前記第２のデバイス変更標識を前記第１のデバイスに転送する第２の待ち行列とを含む請求項７に記載の方法。
【請求項９】
前記経路指定システムが、前記第１の計算処理デバイスと前記第２の計算処理デバイスがネットワークを介して結合可能なネットワーク・サーバを含む請求項１に記載の方法。
【請求項１０】
前記ネットワークがインターネットを含む請求項９に記載の方法。
【請求項１１】
前記第２のトリガ・イベントが、第２のデバイスの電源オンおよび周期的に開始される第２のデバイス・トリガを含むグループから選択される請求項１に記載の方法。
【請求項１２】
第１の計算処理デバイスが第１のトリガ・イベントを受け取る手段と、
第１の計算処理デバイスが前記第１のトリガ・イベントに応答して、前記第１の計算処理デバイスの第１のデバイス・データに変更が加えられているかどうか判定する手段と、
前記変更が加えられていると判定された場合には、経路指定システムに前記変更を指示する変更標識を転送する手段と
を含む同期システムであって、
前記変更は、第２の計算処理デバイスによって受け取られ、非同期的にトリガする第２のデバイス・トリガに応答して前記第２のデバイスの第２のデバイス・データと同期させられる同期システム。
【請求項１１】
コンピュータに、
第１の計算処理デバイスが第１のトリガ・イベントを受け取るステップと、
前記第１の計算処理デバイスが前記第１のトリガ・イベントに応答して、前記第１の計算処理デバイスの第１のデバイス・データに変更が加えられているかどうか判定するステップと、
前記変更が加えられていると判定された場合には、経路指定システムに前記変更を指示する変更標識を転送するステップと
を実施させるプログラム・コードを記憶するコンピュータ可読記憶媒体であって、
前記変更が、第２の計算処理デバイスによって受け取られ、非同期的にトリガする第２のデバイス・トリガに応答して前記第２のデバイスの第２のデバイス・データと同期させられるコンピュータ可読記憶媒体。
【請求項１３】
第１の計算処理デバイスが第１のトリガ・イベントを受け取ること、
前記第１の計算処理デバイスが経路指定システムから切断されている場合には、前記第１の計算処理デバイスが前記経路指定システムに接続することによって前記第１のトリガ・イベントに応答すること、
前記第１の計算処理デバイスが前記経路指定システムから、第２の計算処理デバイスの非同期的にトリガする第２のデバイス・トリガに応答して前記経路指定システムに転送された、前記第２の計算処理デバイスの第２のデバイス・データへの変更を指示する変更標識を受け取ること、および
前記第１の計算処理デバイスが、前記第２の計算処理デバイスの前記第２のデバイス・データを、前記第１の計算処理デバイスの対応する第１のデバイス・データと同期させること
を含む方法。
【請求項１４】
前記第１の計算処理デバイスと前記第２の計算処理デバイスの少なくとも一方が、パーソナル・コンピュータ、ＰＤＡ、ＰＩＭ、携帯電話を含むグループから選択される請求項１３に記載の方法。
【請求項１５】
前記第１のトリガ・イベントが、第１の計算処理デバイスの電源オンと周期的に開始される第１のデバイス・トリガを含むグループから選択される請求項１３に記載の方法。
【請求項１６】
前記変更標識が同期メッセージを含む請求項１３に記載の方法。
【請求項１７】
前記同期メッセージが前記変更に対応する変更済みデータを含む請求項１６に記載の方法。
【請求項１８】
前記同期メッセージが、前記第１のデバイス・データの第１の計算処理デバイス・バージョンを指示する第１のバージョン標識と、前記第２のデバイス・データの第２の計算処理デバイス・バージョンを指示する第２のバージョン標識の少なくとも一方を含む請求項１６に記載の方法。
【請求項１９】
前記経路指定システムが、前記第１の計算処理デバイスと前記第２の計算処理デバイスからアクセス可能な記憶デバイスを含む請求項１３に記載の方法。
【請求項２０】
前記記憶デバイスが、前記第１の計算処理デバイスから第１のデバイス変更標識を受け取り、前記第１のデバイス変更標識を前記第２のデバイスに転送する第１の待ち行列と、前記第２の計算処理デバイスから第２のデバイス変更標識を受け取り、前記第２のデバイス変更標識を前記第１のデバイスに転送する第２の待ち行列とを含む請求項１９に記載の方法。
【請求項２１】
前記経路指定システムが、前記第１の計算処理デバイスと前記第２の計算処理デバイスがネットワークを介して結合可能なネットワーク・サーバを含む請求項１３に記載の方法。
【請求項２２】
前記ネットワークがインターネットを含む請求項２１に記載の方法。
【請求項２３】
前記第２のトリガ・イベントが前記第２のデバイス・データへの変更を含む請求項１３に記載の方法。
【請求項２４】
第１の計算処理デバイスが第１のトリガ・イベントを受け取る手段と、
前記第１の計算処理デバイスが前記第１のトリガ・イベントに応答して、経路指定システムから切断されている場合には、前記第１の計算処理デバイスが前記経路指定システムに接続する手段と、
前記第１の計算処理デバイスが前記経路指定システムから、第２の計算処理デバイスの非同期的にトリガする第２のデバイス・トリガに応答して前記経路指定システムに転送された前記第２の計算処理デバイスの第２のデバイス・データへの変更を指示する変更標識を受け取る手段と、
前記第１の計算処理デバイスが、前記第２の計算処理デバイスの前記第２のデバイス・データを、前記第１の計算処理デバイスの対応する第１のデバイス・データに同期させること
を含むシステム。
【請求項２５】
コンピュータに、
第１の計算処理デバイスが第１のトリガ・イベントを受け取るステップと、
前記第１の計算処理デバイスが前記第１のトリガ・イベントに応答して、経路指定システムから切断されている場合には、前記第１の計算処理デバイスが前記経路指定システムに接続するステップと、
前記第１の計算処理デバイスが前記経路指定システムから、第２の計算処理デバイスの非同期的にトリガする第２のデバイス・トリガに応答して前記経路指定システムに転送された前記第２の計算処理デバイスの第２のデバイス・データへの変更を指示する変更標識を受け取るステップと、
前記第１の計算処理デバイスが、前記第２の計算処理デバイスの前記第２のデバイス・データを、前記第１の計算処理デバイスの対応する第１のデバイス・データと同期させるステップと
を実施させるプログラム・コードを記憶するコンピュータ可読記憶媒体。
【請求項２６】
第１のユーザ・デバイスが第１のトリガ・イベントを受け取ること、
前記第１のユーザ・デバイスが、前記第１の計算処理デバイスのデータ要素に変更が加えられているかどうか判定し、変更が加えられている場合には、前記第１のトリガ・イベントに応答して、経路指定システムに前記変更を指示する変更標識を転送すること、
第２の計算処理デバイスが、前記第１のトリガ・イベントと時間的に無関係な第２のトリガ・イベントを受け取ること、および
前記第２の計算処理デバイスが、前記経路指定システムから前記変更標識を受け取り、前記変更を前記第２のユーザ・デバイスに記憶されたデータと同期させることによって前記第２のトリガ・イベントに応答すること
を含む方法。
【請求項２８】
経路指定システムが、第１のデバイス・トリガに応答して動作している第１の計算処理デバイスから、前記第１の計算処理デバイスの第１のデバイス・データへの変更を指示する変更標識を受け取ること、
前記経路指定システムが前記変更標識を記憶すること、
前記経路指定システムが、前記第１のデバイス・トリガに関して非同期的にトリガする第２のデバイス・トリガに応答して動作している第２の計算処理デバイスから、前記第２の計算処理デバイスからの転送要求を受け取ること、および
前記経路指定システムが、前記第２の計算処理デバイスに前記変更標識を転送することによって前記転送要求に応答すること
を含む方法であって、
前記変更が、前記第２の計算処理デバイスによって受け取られ、前記第２の計算処理デバイスの第２のデバイス・データと同期させられる方法。
【請求項２８】
前記第１の計算処理デバイスと前記第２の計算処理デバイスの少なくとも一方が、パーソナル・コンピュータ、ＰＤＡ、ＰＩＭ、携帯電話を含むグループから選択される請求項２７に記載の方法。
【請求項２９】
前記第１のトリガ・イベントが前記第１のデバイス・データへの変更を含む請求項２７に記載の方法。
【請求項３０】
前記変更標識が同期メッセージを含む請求項２７に記載の方法。
【請求項３１】
前記同期メッセージが前記変更に対応する変更済みデータを含む請求項３０に記載の方法。
【請求項３２】
前記同期メッセージが、前記第１のデバイス・データの第１の計算処理デバイス・バージョンを指示する第１のバージョン標識と前記第２のデバイス・データの第２の計算処理デバイス・バージョンを指示する第２のバージョン標識の少なくとも一方を含む請求項３０に記載の方法。
【請求項３３】
前記経路指定システムが、前記第１の計算処理デバイスおよび前記第２の計算処理デバイスからアクセス可能な記憶デバイスを含む請求項２７に記載の方法。
【請求項３４】
前記記憶デバイスが、前記第１の計算処理デバイスから第１のデバイス変更標識を受け取り、前記第１のデバイス変更標識を前記第２のデバイスに転送する第１の待ち行列と、前記第２の計算処理デバイスから第２のデバイス変更標識を受け取り、前記第２のデバイス変更標識を前記第１のデバイスに転送する第２の待ち行列とを含む請求項３３に記載の方法。
【請求項３５】
前記経路指定システムが、前記第１の計算処理デバイスと前記第２の計算処理デバイスがネットワークを介して結合可能なネットワーク・サーバとを含む請求項２７に記載の方法。
【請求項３６】
前記ネットワークがインターネットを含む請求項３５に記載の方法。
【請求項３７】
前記第２のトリガ・イベントが、第２のデバイスの電源オンと、周期的に開始される第２のデバイス・トリガを含むグループから選択される請求項２７に記載の方法。
【請求項３８】
経路指定システムが、第１のデバイス・トリガに応答して動作している第１の計算処理デバイスから、前記第１の計算処理デバイスの第１のデバイス・データへの変更を指示する変更標識を受け取る手段と、
前記経路指定システムが前記変更標識を記憶する手段と、
前記経路指定システムが、前記第１のデバイス・トリガに関して非同期的にトリガする第２のデバイス・トリガに応答して動作している第２の計算処理デバイスから、前記第２の計算処理デバイスからの転送要求を受け取る手段と、
前記経路指定システムが、前記第２の計算処理デバイスに前記変更標識を転送することによって前記転送要求に応答する手段と
を含むシステムであって、
前記変更が、前記第２の計算処理デバイスによって受け取られ、前記第２の計算処理デバイスの第２のデバイス・データと同期させられるシステム。
【請求項３９】
コンピュータに、
経路指定システムが、第１のデバイス・トリガに応答して動作している第１の計算処理デバイスから、前記第１の計算処理デバイスの第１のデバイス・データへの変更を指示する変更標識を受け取るステップと、
前記経路指定システムが前記変更標識を記憶するステップと、
前記経路指定システムが、前記第１のデバイス・トリガに関して非同期的にトリガする第２のデバイス・トリガに応答して動作している第２の計算処理デバイスから、前記第２の計算処理デバイスからの転送要求を受け取るステップと、
前記経路指定システムが前記転送要求に応答して、前記第２の計算処理デバイスに前記変更標識を転送するステップと
を実施させるプログラム・コードを記憶するコンピュータ可読記憶媒体であって、
前記変更が、前記第２の計算処理デバイスによって受け取られ、前記第２の計算処理デバイスの第２のデバイス・データと同期させられるコンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
（関連出願の優先権引用）
本願は、発明者Ｓｅａｎ  Ｑｕｉｎｌａｎらによって、２００１年１１月１５日に出願された、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ」という名称の、米国仮出願第６０／３３６，３２６号の特典を主張すると共に、これを参照によって本明細書に組み込むものである。
【技術分野】
【０００２】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、２台以上のデバイス間での情報の同期を実現するシステムおよび方法を提供する。
【背景技術】
【０００３】
より高能力で低価格な計算処理技術の開発は、パーソナル・コンピュータ（「ＰＣ」）のユーザ数を増加させているだけではない。それはまた、より多種多様な数多くの計算処理デバイスを用意すると共に、２台以上の計算処理デバイス（ＰＣ、携帯電話、ＰＤＡなど）を利用するユーザの数も増加させている。しかし、従来の計算処理デバイスや情報と共に使用される技術は、新しいデバイス、デバイス相互接続と情報処理、さらにはそうした新しい技術を利用するユーザ数との関連で、当然にも、問題になり得ることが認められている。
【０００４】
従来の同期型データ同期は、例えば、同期アルゴリズムを適用する都度、そのユーザの計算処理デバイスのうちの２台で指定されたユーザ・データの完全に同期させている。
【０００５】
同期の前に、第１のユーザ・デバイス上にある指定されたユーザ・データ（「第１のデバイス・データ」）がネットワーク・サーバに転送され、そこで記憶される（「サーバ・データ」）。次いで、通常は、ユーザの選択に従って、第１のユーザ・デバイスのその後の起動時またはシャットダウン時、あるいは周期的に同期が開始される。
【０００６】
同期時には、サーバは、そのサーバ・データを、第１のデバイス・データと第２のユーザ・デバイス上にある対応するデータ（「第２のデバイス・データ」）とを完全に同期させる。すなわち、競合が存在しないと仮定すると、第１のデバイス・データへのすべての識別された変更のコピーがサーバに転送され、サーバは、それに対応して、サーバ・データを置き換え、またはそれへ追加を行う。次いで、そのサーバ・データに加えられた変更のコピーが第２のデバイス・データにも同様に加えられ、必要に応じて第２のデバイス・データを置き換え、またはそれへ追加を行う。競合が存在する場合、すなわち、データ要素が両方のユーザ・デバイスで変更されている場合は、ネットワーク・サーバは、通常、一方のユーザ・デバイスを他方に優先させることによって、あるいはユーザにそれらのデータ・バージョンのうちの１つを選択させることによってその競合を解決する。第１のデバイス変更が選択された場合には、サーバは、対応する第２のデバイス・データを置き換える。次いで、サーバは、同様に、第２のデバイス・データへ競合していない変更をサーバ・データと同期させ、次いで、第１のデバイス・データと同期させる。
【０００７】
従来の同期方式には、その普及にもかかわらず、若干の欠点もある。例えば、あるユーザのデバイスのうちの２台で指定されたデータのすべてに関してそれぞれ同期を行う場合でさえ、相当なユーザ・デバイス・リソースを必要とすることがある。これは、スマート電話やＰＤＡなど、低能力のユーザ・デバイスを用いた場合には特に問題になる。というのは、その同期プロセス中ずっと、ユーザがそのデバイスを使用できなくなる可能性があるからである。
【０００８】
同期型同期方式も、相当なネットワーク・リソースを必要とする。例えば、増加しつつあるユーザのために、潜在的に大量のデータを同期させるのに必要とされるネットワーク帯域幅が管理不能になる可能性がある。同様に、明らかに十分であっても、同期サービスを求めるユーザ数が著しく増加すると、ネットワーク・サーバの能力の限界を超えることもある。いずれにしても、通常は他の用途に使用可能なリソースを、同期を実施することに集中させる必要がある。
【０００９】
その他の欠点には、最新の情報やセキュリティの利用可能性に関連するものが含まれる。例えば、延長された時間要件によって、ユーザが、起動時以外（例えば、携帯電話を使用する前など）に、あるいはより低い頻度で、同期を実施するよう促されることが考えられる。したがって、ユーザは結局、同期の前に、使用可能で有効に見える古いデータを使用することがある。また、セキュリティの維持も問題になるであろう。というのは、データセット全体の認証と暗号化は、通常、同期サービス提供者の「より高能力の」ネットワーク・サーバによって実施されるからである。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、既存の同期方式の欠点を回避しつつ計算処理デバイス情報を同期させることを可能にする同期システムと方法が求められている。
【課題を解決するための手段】
【００１１】
本発明の諸態様は、２台以上の計算処理デバイス間での非同期的な同期の実施を実現すると同時に、さらに、従来の同期方式の欠点も回避できるようにするものである。
【００１２】
一態様では、各実施態様は、第１の計算処理デバイスが、指定された第１のデバイス・データと第２のデバイスのデータとの同期を、第２のデバイスが、第１のデバイス・データを受け取り、または第２のデバイス・データと第１のデバイスとの同期を開始するのとは無関係なときに開始できるように、非同期的に同期を実施する。別の態様では、各実施態様は、そうした同期を２台以上のデバイス間で、または２ユーザ以上のデバイス間で、あるいはその両方でも実施できるようにする。別の態様では、各実施態様は、データ変更の転送、更新、競合解決が、同期をとるユーザ・デバイスによって実施できるようにすると共に、同期すべきであると指定されたすべての情報を事前にサーバが記憶すること、またはサーバが同期を実施することが回避できるようにする。別の態様では、各実施態様は、特に、同期が可変の量または細分度のデータ上で開始できるようにする。
【００１３】
本発明による非同期型同期方法の一例は、第１のトリガを受け取り、第１のデバイス・データに変更が加えられているかどうか判定し、変更が加えられている場合には、その変更を指示する変更標識を経路指定システムに転送する第１の計算処理デバイスを含む。この例では、その変更はさらに、第２の計算処理デバイスによって受け取られ、第１のデバイス・トリガに対して非同期的にトリガする第２のデバイス・トリガに応答して、第２の計算処理デバイスの第２のデバイス・データと同期される。例えば、第１のトリガは、デバイス・ユーザがそのデバイスを使用していなかった場合の第１のデバイス・データ変更ごとの結果として、あるいは第三者が特定の更新または指定されたデータセットへの更新を発行したときに呼び出される。第２のトリガは、特に、ユーザが更新を要求する、変更が受領を保留している間に他の何らかの目的で第２のデバイスを経路指定システムに接続する、などの結果として呼び出される。
【００１４】
本発明による方法の別の例は、第１のトリガ・イベントを受け取り、経路指定システムに接続することによってそのイベントに応答し、その経路指定システムから切断された場合には、さらに、第２の計算処理デバイスの第２のデバイス・データへの変更を指示する変更標識をその経路指定システムから受け取る第１の計算処理デバイスを含む。この例では、変更標識は、第１のデバイス・トリガに対して非同期的に、すなわち「時間と無関係に」トリガする第２のデバイス・トリガに応答して経路指定システムに転送される。
【００１５】
本発明による方法の別の例は、第１のデバイス・トリガに応答して動作する第１の計算処理デバイスから、第１のデバイス・データへの変更を指示する変更標識を受け取り、その変更標識を記憶する経路指定システムを含む。この方法は、第１のデバイス・トリガに対して非同期的にトリガする第２のデバイス・トリガに応答して動作する第２の計算処理デバイスから、第１のデバイス変更を求める要求を受け取ることをさらに含む。この方法は、第２の計算処理デバイスに変更標識を転送することによって応答することをさらに含み、その変更は、第２の計算処理デバイスによって受け取られ、第２のデバイス・データと同期される。
【００１６】
上記その他の様々なシステムまたは方法例によれば、変更標識には、例えば、１つのデータ要素への１つの変更、様々なデータへの多数の変更、１つまたは複数のデータ属性への変更、変更の種類／程度の標識などが含まれる。この変更は、第１／第２のデバイスが使用可能な形に変換されていることも、それらのデバイスによって変換されることも考えられ、あるいは送受信されるデータ量が使用可能なデバイス／ネットワーク・リソース、デバイスのユーザ用途などに応じて異なることも考えられる。データには、特に、プログラム・コードやマルチメディア・データなどが含まれる。
【００１７】
有利には、本発明の諸態様は、２台以上の計算処理デバイス間での情報の同期を極めて効果的で効率のよい方式で実施できるようにする。様々な計算処理デバイスが、様々なデバイス、デバイス・リソースまたはデバイス・オペレーションに適した時間／イベント基準に従って非同期的にデータ変更を送受信できるようにする。さらに、計算処理デバイスがデータ競合や結果として生じる競合を解決することも可能にする。中でも特に、様々な計算処理デバイスが、さらに、それらのデバイスまたはネットワーク要素の使用可能なリソースまたはより要望の少ないリソースに応じて、様々な量、種類または細分度のデータを送受信できるようにする。以下の本文および図を参照すれば、その他の利点も明らかになるであろう。
【発明を実施するための最良の形態】
【００１８】
本発明の諸形態は、非同期型同期システムと方法を実現する際に、２台以上の計算処理デバイス間で情報が非同期的に同期されるようにする。諸形態は、事前のネットワーク・サーバによる同期の実施や目標データのコピーを回避できるようにする。また、諸形態は、特に、様々な情報の種類と細分度で同期が実施できるようにする。
【００１９】
本明細書で使用する際、「または」という用語は、特に指示しない限りは、一般に「および／または」を意味するためのものであることに留意されたい。さらに、「ユーザ・デバイス」と「計算処理デバイス」は、「同期される情報」と「ユーザ・デバイス・データ」と同様に、本明細書がよりよく理解されるように、同義で使用する。だたし、そうした用語は限定的なものであると解釈すべきではない。
【００２０】
図１に、例えば、企業イントラネットを介して結合された企業用デバイス、インターネットを介して結合された個人用デバイス、または何らかの組み合わせを含む、様々な計算処理デバイス間での非同期型同期を可能にするように構成されている汎用ネットワーク・システム１００の一例を示す。図示のように、システム１００は、非同期対応ユーザ・デバイス１０１ａ〜ｂと１０１ｃ〜ｆ、ネットワーク（１０２ａ〜ｂなど）、ネットワーク・サーバ（１０３ａ〜ｂなど）、共通記憶１０４を含む。非同期システム１００は、個々のアプリケーション（図示せず）の要件に従って、ルータ、キャッシュ、バックアップ・システム、その他の相互接続ネットワーク要素のほかに１つまたは複数のファイアウォール（ファイアウォール１０５など）を含む。
【００２１】
非同期型同期は、非同期方式で、第１のユーザ・デバイスが少なくとも１つの情報変更の同期を開始できるようにし、あるいは別のユーザ・デバイスの情報の開始された同期に応答できるようにし、好ましくはその両方を可能にする。より好ましくは、第１のユーザ・デバイスは、第２のユーザ・デバイスが第１のデバイスに接続されているか、それとも第１のデバイスによる事前に開始された同期を完了しているかどうか、あるいは第１のデバイスがその他のデバイスによる事前に開始された同期を完了しているかどうかとは無関係に、第１のユーザ・デバイス情報への変更の反復同期を開始することができる。
【００２２】
また、各実施形態は、１つまたは複数の重複するまたは重複しない非同期対応ユーザ・デバイスのグループ間で非同期型同期を実施できるようにする。その場合どのグループも、対応する作業空間要素を同期する２台以上のそうしたデバイスを含む。同期をとるユーザ・デバイスのグループ中の各ユーザ・デバイスは、例えば、それ自体の時間／イベント・トリガ、ユーザ開始、または他の何らかの適切な同期トリガに従って同期を開始し、またはそれに応答する。また、非同期型同期は、１つまたは複数の選択されたユーザ・デバイスまたはユーザ・デバイス・グループでの時間、スケジュール、イベント、リソース使用可能性、またはその他の基準に従って使用可能とすることも使用不能とすることもできる。
【００２３】
本例では、同期が経路指定システムを介して実施され、それはこの場合、同期をとるデバイスとの間でやりとりされる同期メッセージを一時的に記憶するための一時記憶を備えるデータ・センタである。
【００２４】
非同期対応ユーザ・デバイス１０１ａ〜ｆは、ユーザ情報を記憶し、同期されるユーザ情報または「作業空間要素」を指定し、変更（例えば、追加または変更など）が行われている作業空間要素の一部の非同期型同期を実施することのできる任意の計算処理デバイスを含む。したがって、非同期対応ユーザ・デバイス１０１ａ〜ｆの各々は、さらに、本明細書での議論と矛盾しない（すなわち「非同期対応の」）非同期方式で同期を実施することのできる単機能または多機能計算処理デバイスを含む。
【００２５】
より典型的には、非同期対応ユーザ・デバイス１０１ａ〜ｆは、非同期型同期機能が付加された従来型のユーザ・デバイスを含む。そうしたユーザ・デバイスには、例えば、それだけに限らないが、計算処理システムの中でも特に、デスクトップまたはラップトップＰＣ、ハンドヘルド・コンピュータ、セットトップ・ボックス、携帯情報端末（「ＰＤＡ」）、個人情報管理装置（「ＰＩＭ」）、携帯電話、制御装置またはいわゆる「スマート」デバイスが含まれ得る。非同期対応ユーザ・デバイス１０１ａ〜ｆには、さらに、単一ユーザまたはマルチユーザ、あるいは統合型または分散型の計算処理デバイスが含まれる。同期をとるユーザ・デバイス・グループは、例えば、単一ユーザのネットワーク結合可能ＰＣ、ＰＤＡ、携帯電話（「スマート」電話と呼ばれることもある）など、１人または複数のユーザのデバイスのうちの少なくとも２つを含む。
【００２６】
同期される情報（すなわち「ユーザ・デバイス情報」または「作業空間要素」）は、通常、ユーザ・デバイスのユーザまたはシステム管理者の役割を果たす別の人によって、少なくとも他の１台のユーザ・デバイスとの同期を要求していると指定された情報を含む。作業空間要素は、一般に、少なくとも一部は、そうした情報の同期をとる各非同期対応ユーザ・デバイスによって記憶され、参照され、転送される、実質的にどんな種類のプログラム・コードもマルチメディア・データ（例えば、値、その他の属性、値／属性標識、変更標識など）も含むことができる。
【００２７】
より典型的には、作業空間要素は、例えば、電子メール、ブックマーク、連絡先、会議メモまたはプロジェクト・データ、それらの属性または部分、あるいはユーザによって常駐またはダウンロード可能アプリケーション・プログラムに入力されるその他のユーザ・デバイス情報のうちの１つまたは複数を含む。作業空間要素は、適当に構成された非同期対応ユーザ・デバイスによって自動的に（例えば、プログラムによって）生成し、または電子的に受信することもできることが理解されるであろう。
【００２８】
必ずしもすべてのユーザ・デバイスが、完全な作業空間要素を処理することができ、あるいはすべての作業空間要素を同じ方式で維持することができる必要はないことに留意すべきである。それとは異なり、非同期型同期は、個々のユーザ・デバイスの能力に応じて、様々なユーザ・デバイスが様々なアプリケーション・プログラムまたはそれらの様々なバージョンを実行できるようにし、完全ではない作業空間要素属性の同期をとることができる（以下を参照されたい）。
【００２９】
非同期対応ユーザ・デバイス１０１ａ〜ｆは、さらに、ネットワーク１０２ａ〜ｂなど、１つまたは複数の無線または有線で結合可能な接続を介してユーザ・デバイス情報の同期をとるために結合することが可能である。本例では、ネットワーク１０２ａは、インターネットなどの広域ネットワーク（「ＷＡＮ」）であり、ネットワーク１０２ｂは、企業イントラネットなどのローカル・エリア・ネットワーク（「ＬＡＮ」）である。ただし、１つまたは複数の様々な静的または再構成可能な相互接続を使用してユーザ・デバイス間で作業空間要素を転送することもできることが理解されるであろう。
【００３０】
本例では、ネットワーク・サーバ１０３ａはデータ・センタ１０３の一部として動作する。従来の同期システムとは異なり、すべての作業空間データを記憶すると共に一対のユーザ・デバイスのそれぞれの間で同期を実施する共通の同期制御機能は必要とされない。それとは異なり、非同期対応ユーザ・デバイス１０１ａ〜ｆによって非同期的に同期を実施することができる。
【００３１】
本例では、代わりに、ネットワーク・サーバ１０３ａが一時記憶１０４ａの共通記憶管理機能として動作する。ネットワーク・サーバ１０３ａは、より具体的には、通信リンクを形成し、次いで、第１のユーザ・デバイス情報を受け取り、それを一時的に記憶することによって、あるいは、次いで、別のユーザ・デバイスから非同期的に受け取り、かつ記憶した情報を検索し、第１のユーザ・デバイスに伝達することによって、第１のユーザ・デバイス要求に応答する。ネットワーク・サーバ１０３ａは、さらに、同じ同期グループ中の１つまたは複数の他のユーザ・デバイスによるその情報の検索に続いて第１のユーザ・デバイスの一時的に記憶されたユーザ・デバイス情報の削除を実施することができる。ユーザ・デバイス情報を記憶する一時記憶１０４には、個々の用途に従って、メモリ、キャッシュ、より永続的な記憶デバイス、または任意の適切な記憶媒体が含まれる。
【００３２】
最後に、ネットワーク・サーバ１０３ｂは、企業ネットワーク・サーバとして従来方式で動作する。したがって、ネットワーク・サーバ１０３ｂは、同期に関しては透過的に動作する。ただし、ネットワーク・サーバ１０３ｂが、同期される情報のキャッシュを提供し、あるいはさらに、企業ネットワーク１０６内での同期またはシステム１００内での分散型の同期を提供するために、別の従来方式で動作することも考えられることが理解されるであろう。
【００３３】
システム１００の一動作例として、非同期対応ユーザ・デバイス１０１ａ〜ｃがそれぞれ、非同期型同期を実施するように構成された（すなわち非同期対応の）、単一ユーザのＰＣや携帯電話、ＰＤＡであると想定する。同期の前に、ユーザは、個人連絡先情報が変更されるたびに、それらのデバイスのそれぞれが、（例えば、それらのデバイスのそれぞれで実行中の連絡先プログラムの個人連絡先フォルダに記憶された）すべての個人連絡先情報の同期を残りのデバイスに対してとるように構成する。さらに、ユーザは、デバイスのそれぞれを、起動時に、残りのデバイスのそれぞれからのすべての同期情報の有無をチェックするように構成し、どのデバイスもネットワーク・サーバ１０３ａに結合されたままではないと想定する。
【００３４】
ユーザが非同期対応ＰＣ上で（既存の連絡先電話番号を変更するなどによって）個人連絡先を変更すると、そのＰＣはネットワーク１０２ａを介してネットワーク・サーバ１０３ａに結合し、ネットワーク・サーバ１０３ａを介して記憶１０４に変更メッセージを転送する。次いで、ユーザが残りのデバイスの１つ（ＰＤＡなど）を起動すると、そのＰＤＡはネットワーク１０２ａを介してネットワーク・サーバ１０３ａに結合し、記憶１０４からその変更メッセージを検索する。以下で論じる、この変更に関連する競合解決がある場合には、次いでそれが実施されるはずである。次いで、ＰＤＡは、その変更メッセージに対応するデータを記憶する。
【００３５】
ユーザがさらにＰＤＡ上の個人連絡先情報を変更する（例えば新規連絡先を追加する）場合には、ＰＤＡは同様に、ネットワーク・サーバ１０３ａに結合され、その変更を記憶１０４に転送する。次いで、ユーザが残りのデバイスの１つ、例えば、携帯電話を起動した場合には、その携帯電話がネットワーク１０２ａを介してネットワーク・サーバ１０３ａに結合し、記憶１０４からそれらの変更の両方を検索する。次いで、競合が存在しないものと仮定すると、携帯電話は、ＰＣやＰＤＡの変更に対応するデータを記憶する。
【００３６】
図２にシステム１００（図１）の要素のうちの１つまたは複数を含む例示的処理システムを示す。他の代替手段も利用できると考えられるが、明確にするために、システム１００の諸要素は、特に指示しない限り、ハードウェア、ソフトウェア、あるいはそれらと整合性のとれる１つまたは複数の処理システムによる何らかの組み合わせとして実装されるものとする。
【００３７】
処理システム２００は、Ｐｅｎｔｉｕｍ（登録商標）、Ｐｏｗｅｒ  ＰＣ（登録商標）、ディジタル信号プロセッサ（「ＤＳＰ」）など、１つまたは複数の専用または汎用プロセッサ２０２を含む、通信チャネル（バス２０１など）を介して結合された諸要素を含む。システム２００の要素には、１つまたは複数の入力デバイス２０３（マウス、キーボード、マイク、ペンなど）や、個々の用途に応じた、適切なディスプレイ、スピーカ、アクチュエータなど、１つまたは複数の出力デバイス２０４も含まれる。
【００３８】
システム２００は、記憶／メモリ・デバイスまたはハードまたは取り外し可能記憶／メモリ媒体などのコンピュータ可読記憶媒体２０６に結合されたコンピュータ可読記憶媒体読取り装置２０５も含む。そうしたデバイスまたは媒体を、さらに、記憶デバイス２０８とメモリ２０９として別個に示す。それらには、個々の用途に応じて、各種ハードディスク、各種フロッピー（登録商標）／コンパクト・ディスク、各種ディジタル多用途ディスク（「ＤＶＤ」）、スマート・カード、読取り専用メモリ、ランダム・アクセス・メモリ、キャッシュ・メモリなどが含まれる。直接に、または、それだけに限らないが、すでに論じたものを含む１つまたは複数の適切な専用または公衆ネットワークを介してデバイス間通信を提供するために、モデム、ＤＳＬ、赤外線またはその他適切な送受信機など、１つまたは複数の適切な通信デバイス２０７も含まれる。
【００３９】
作業メモリ２１０（メモリ２０９のものなど）は、そこに記憶され、または使用時にロードされるシステム１００ａ〜ｃ／２００要素を実装するために、オペレーティング・システム（「ＯＳ」）２１１要素と、アプリケーション・プログラム、モバイル・コード、データなどのその他のプログラム２１２をさらに含む。個々のＯＳは、個々のデバイス、機能または個々の用途に一致するその他の形態に応じて異なる（Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ、Ｌｉｎｕｘ、各種Ｕｎｉｘ（登録商標）またはＰａｌｍ  ＯＳ、専用ＯＳなど）。様々なプログラミング言語やその他のツールも利用することもできる。また、作業メモリ２１０の内容は、大まかにＯＳ２１１とその他のプログラム２１２として示すが、個々の用途に応じて大きく異なることも理解されるであろう。
【００４０】
ソフトウェアとして（例えば、アプリケーション・プログラム、オブジェクト、エージェント、ダウンロード可能プログラム、サーブレットなどの全部または一部として）実装されると、システム１００要素は、実行のために、ローカルまたはリモート記憶からメモリ（またはキャッシュ・メモリなど）に、過渡的にまたはより持続的に伝達することができ、あるいは他の適切な機構を利用することもでき、諸要素をコンパイル済み形式または解釈形式で実装することもできる。さらに、入力、中間または結果データあるいは機能要素を、個々の用途に従って、より過渡的またはより持続的に、記憶媒体、キャッシュまたはその他の揮発性または不揮発性メモリ（記憶デバイス３０７またはメモリ３０８など）に入れることもできる。
【００４１】
図３ａから３ｄに、例示的な非同期対応ユーザ・デバイスとデータ・センタのオペレーションをより詳細に示す。
【００４２】
図３ａから開始すると、非同期対応ユーザ・デバイス３０１は、ユーザ・デバイスが非同期型同期を実施できるようにする非同期型同期管理機能すなわち「支援機能」を含む。支援機能３１２は、好ましくは、独立型の常駐またはダウンロード可能アプリケーションとして実装される。ただし、支援機能３１２は、ＯＳもしくは１つまたは複数の基礎を成すアプリケーションと、様々な程度に統合することもできることが理解されるであろう。
【００４３】
支援機能３１２は、同期を開始する前にユーザによって入力され、同期の間は予め決められている、（通常はユーザによる）指定変更可能なユーザ選好に従って同期を開始し、実施する。同期の間、支援機能３１２は、アプリケーション・データ空間との間で１つまたは複数の変更済み作業空間要素（この場合は、アプリケーション・データ３１１）を転送することによって、またはデータ・センタ３０２との間で同期メッセージを転送することによって同期トリガに応答する。
【００４４】
支援機能３１２は、より具体的には、アプリケーション・データ空間から、変更されている１つまたは複数の作業空間要素を受け取り、同期メッセージを形成し、データ・センタ３０２と（まだ相互接続されていない場合には）相互接続し、このように形成されたメッセージをデータ・センタ３０２に転送することによって、開始トリガに応答する。支援機能３１２は、データ・センタ３０２と（まだ相互接続されていない場合には）相互接続し、データ・センタ３０２から通常は１つの同期メッセージを受け取ることによって応答トリガに応答する。次いで、支援機能３１２は、非同期対応ユーザ・デバイス３０１の作業空間要素に関して競合が存在するかどうか判定する。競合が存在しない場合には、支援機能は、その同期メッセージに含まれるデータをアプリケーション・データ空間に記憶させ、それによって既存のデータに追加を行い、またはそれを置き換える。競合が存在する場合には、支援機能３１２は、競合解決を開始する（競合解決については以下で別個に論じる）。
【００４５】
本例では、支援機能によってメッセージが待ち行列に入れられない支援機能実装が想定されていることに留意されたい。そうした実装では、複雑度が低いことおよび非常に限られた記憶／処理リソースしか持たないデバイスに適した手法が有利に働くことがわかる。しかし、各非同期対応ユーザ・デバイスは、例えば、利用可能なリソースに従って、個別に構成することもできる。したがって、より多くの同期メッセージを記憶、転送または受信するためにより高能力のユーザ・デバイスを実装し、別のデバイスには、現在利用可能なリソースに従ってより同期メッセージの少ない１つまたは複数のオペレーションを実施させ、さらに別のデバイスには、常に、１度に１メッセージだけを処理させるようにしてもよい。
【００４６】
好ましくは、支援機能３１２は、通常の従来方式で、例えば、アプリケーション・プロトコル・インターフェイス（「ＡＰＩ」）を介したデータ転送や、ＨＴＭＬまたはＳＯＡＰなどのメッセージ転送プロトコルを使用したメッセージ転送などで転送を実施する。しかし、個々の用途に従ってその他の転送機構を使用することもできる。
【００４７】
図３ｃから３ｄおよび図４に、データ・センタ３０２が共通記憶管理機能３２１とデータ待ち行列３２２ａ〜ｎを含む一時記憶としてどのように実装されるかを示す。
【００４８】
共通記憶管理機能３２１は、２台以上の非同期対応ユーザ・デバイスの同期メッセージを記憶するための一時記憶（本例ではメッセージ待ち行列）を初期設定し、管理する。関連するユーザ・デバイスの同期の前に、共通記憶管理機能３２１は、ユーザ選好（ある同期グループ中のいくつかの同期をとるデバイスなど）に対応するいくつかのメッセージ待ち行列を初期設定することによってユーザ・デバイスからの初期設定要求に応答する。
【００４９】
同期時に、共通記憶管理機能３２１は、１つまたは複数の同期メッセージを受け取り、それを少なくとも１つの他のユーザ・デバイスによる検索のために書込みメッセージ待ち行列に記憶することによって、あるいは、メッセージ待ち行列から要求側デバイスに、別のユーザ・デバイスから受け取った同期メッセージを返すことによってユーザ・デバイス要求に応答する。共通記憶管理機能３２１は、さらに、宛先とされる１つまたは複数の対応するユーザ・デバイスによってすでに受け取られている同期メッセージの削除も実現する。
【００５０】
共通記憶管理機能３２１は、メッセージ待ち行列をポーリング（あるいは同期イベントが存在するかどうかの判定）し、かつ１つまたは複数の非同期対応ユーザ・デバイスへの警告トリガを転送する。そうしたトリガを使用して、例えば、同期メッセージを送信するために相互接続され、あるいはすでに同期メッセージを受け取っている非同期対応ユーザ・デバイスに、１つまたは複数の同期メッセージが検索可能であることを知らせることもできる。ただし、本実装形態では、共通記憶管理機能３２１は、対応する非同期対応ユーザ・デバイスからの要求受信時にメッセージ待ち行列をポーリングする。
【００５１】
図４に示すように、共通記憶管理機能は、要求に応答してメッセージ待ち行列処理を呼び出す要求制御機能４０１や、メッセージ待ち行列の初期設定とポーリングを実施し、かつメッセージの検索と記憶を実施する待ち行列管理機能４０３を含む。（共通記憶管理機能３２１は、例えば、図１のサーバ１０３ａなどのネットワーク・サーバの記憶デバイス管理機能として、通常の従来方式で実装することもできる。）
【００５２】
先入れ先出し（「ＦＩＦＯ」）メッセージ待ち行列のシステムは、ユーザ・デバイス・メッセージを記憶するのに好都合な一時記憶構成であることがわかるであろう。例えば、対応する非同期対応ユーザ・デバイス（図３ｃおよび３ｄ）ごとにＦＩＦＯを使用すると、非同期対応ユーザ・デバイス３０１ａと３０１ｂの間での同期メッセージの非同期転送のための単純な共通記憶構成が実現される。
【００５３】
図３ｃでは、例えば、非同期対応ユーザ・デバイス３０１ａの支援機能１（３１２ａ）は、メッセージ待ち行列Ｂ（３２２ｂ）に１つまたは複数の同期メッセージを記憶することによって同期トリガに応答し、非同期対応ユーザ・デバイス３０１ｂの支援機能２（３１２ｂ）は、このメッセージ待ち行列にアクセスしてメッセージを受け取ることができる。支援機能１（３１２ａ）は、さらに、メッセージ待ち行列Ａ（３２２ｂ）から１つまたは複数のメッセージを受け取ることによって応答トリガに応答し、支援機能２（３１２ｂ）は、このメッセージ待ち行列にアクセスしてメッセージを転送することができる。
【００５４】
それとは異なり、図３ｄは、支援機能２（３１２ｂ）が、メッセージ待ち行列Ａ（３２２ｂ）に１つまたは複数の同期メッセージを記憶することによってどのように同期トリガに応答するかを示すものであり、支援機能１（３１２ｂ）はこのメッセージ待ち行列にアクセスしてメッセージを受け取ることができる。支援機能２（３１２ｂ）は、さらに、メッセージ待ち行列Ｂ（３２２ｂ）から１つまたは複数のメッセージを受け取ることによって応答トリガに応答し、支援機能１（３１２ａ）はこのメッセージ待ち行列にアクセスしてメッセージを転送することができる。
【００５５】
この待ち行列構成は、例えば、別々に動作し、または重複する各非同期対応ユーザ・デバイスごとに新規待ち行列を実装するなど、２つ以上の同期をとる非同期対応ユーザ・デバイス・グループが利用される場合にも有用である。さらに、受け取り同期メッセージの削除も容易になり、それが、例えば、各非同期対応ユーザ・デバイスによる同期メッセージ検索時に、共通記憶管理機能３２１（図３ｃ）によって実施される。個々の用途に従って他のデータ構造またはデータ構造の構成を使用することもできる。
【００５６】
図５から１０に非同期型同期支援機能の例をより詳細に示す。図５に示すように、支援機能５００は、非同期スケジューラ５０１、同期制御機能５０３、同期エンジン５０５、同期履歴５０７、同期アダプタ５０９、選好エンジン５１１、システム監視機能５１３、インターフェイス生成機能５１５を含む。
【００５７】
非同期スケジューラ５０１は、同期制御機能５０３を呼び出すことによってトリガ・イベントに応答し、それによって、対応する非同期対応ユーザ・デバイスに同期を開始させ、または待ち行列に入れられた同期メッセージに応答させる。トリガ・イベントはユーザ選好エンジン５１１を介してユーザによって選択的に使用可能にされ、選択オプションがインターフェイス生成機能５１５によってユーザに提示される。トリガ・イベントには、それだけに限らないが、ローカル・データベース変更通知（例えば、アプリケーション・プログラム・インターフェイス「ＡＰＩ」）からの、他のデバイスまたは「リモート」メッセージ待ち行列のポーリングからの肯定的結果、ＳＭＳ警告の受信、予定された同期タイマの期限切れ、ユーザによる手動の同期呼び出しのうち１つまたは複数が含まれる。ＳＭＳすなわち「ショート・メッセージ・サービス」は、携帯電話やその他の無線デバイスへの短いテキスト・メッセージの送信を可能にするシステムである。ＳＭＳ警告を使用して、例えば、同期スケジューラ５０１に同期アクティビティを開始させるために、そうしたメッセージの受信によってそのデバイスにとってローカルのアプリケーションに通知を受け取らせ、それに反応させることもできる。
【００５８】
非同期スケジューラ５０１は、同期オペレーションを開始させ、またはそれを妨げることによって、あるいは応答の方式を変更することによってシステム監視機能５１３に応答する。例えば、ユーザがデバイスにアクセスしている間に、同期トリガを表示させることができ、ユーザ警告を開始させることもできる。また、特に、対応するより多数または少数のネットワークまたはデバイス・リソースの使用可能性に従って、より多数または少数の同期メッセージを転送／受信することもできる。
【００５９】
システム監視機能５１３は、進行中のユーザ・デバイスまたはネットワーク・アクティビティ・レベルを判定し、報告するように、通常の従来方式で動作する。システム監視機能５１３は、ユーザによる進行中のユーザ・デバイスのオペレーションなど、個々のアクティビティも監視する。
【００６０】
同期制御機能５０３は、作業空間要素変更があればそれを識別し、開始することによって同期スケジューラ５１１に応答する。より具体的には、同期制御機能５０３は、同期アダプタ５０９から、作業空間要素変更リストが存在する場合はそれを検索する。作業空間要素変更リストは、最近変更された作業空間要素の一部または全部への参照を含む。それはすなわち、その要素に関連する最後の同期メッセージがその同期に関与するその他のデバイスに送信されてから追加、変更、または削除された作業空間要素である。同期アダプタは、それがインターフェイスするローカル要素ストアの変更表示機能に適したやり方でこの変更リストを決定することができる（以下を参照されたい）。
【００６１】
同期制御機能５０３は、さらに、同期履歴５０７と同期アダプタ５０９を呼び出し、変更リスト情報があればそれを同期アダプタ５０９に転送する。次いで、同期制御機能５０３は、同期エンジン５０５を呼び出す。
【００６２】
同期エンジン５０５は、同じ作業空間要素の競合する更新が存在するかどうかを判定し、存在する場合には、その競合を解決する。また、同期エンジン５０５は、ローカル作業空間要素の（すなわちユーザ・デバイスの）更新、およびそのユーザ・デバイスの変更済み作業空間要素の転送を開始する。
【００６３】
図６に進むと、同期エンジン５０５は、メッセージ・パーサ６０１、履歴管理機能６０２、競合エンジン６０３、データ転送エンジン６０４、バージョン割り当て機能６０５、データ参照管理機能６０６を含む。競合エンジン６０３は、競合を検出するための競合検出機能６３１と、競合を解決するための競合解決機能６３２を含み、転送エンジン６０４は、データ転送エンジン６４１、メッセージ転送エンジン６４２を含む。
【００６４】
図示の例では、同期エンジン５０５は、受け取った作業空間要素のバージョン情報を、そのユーザ・デバイスに記憶された最新のバージョン情報と比較することによって競合の有無を判定する。より具体的には、それぞれのバージョン割り当て機能６０５によってバージョン・スタンプが、少なくとも各作業空間要素に関して、同期をとる各ユーザ・デバイスごとに割り当てられる。他の細分性を使用して、例えば、各作業空間要素の１つまたは複数の属性を追跡することもできる。しかし、ＰＤＡや携帯電話など多くのデバイスのリソースは限られているため、使用できないこともある。次いで、各ユーザ・デバイスは、その作業空間要素のバージョン・スタンプを、そのユーザ・デバイスによって入力されたその作業空間要素の各変更ごとに増分し、その変更もデータ・センタを介してその他の同期をとるデバイスに転送される。
【００６５】
例えば、２台のユーザ・デバイス間で同期される未変更の（または新規の）作業空間要素Ｘが、0Ｘ0という数値のバージョン・スタンプを持つとする。第１のユーザ・デバイスだけが変更を入力した場合は、第１のユーザ・デバイスは、作業空間要素を転送する前にそのバージョンを増分し、1Ｘ0というバージョン・スタンプを生成する。第２のユーザ・デバイスだけが変更を入力した場合には、第２のユーザ・デバイスは、作業空間要素を転送するまえにそのバージョンを増分し、0Ｘ1というバージョン・スタンプを生成する。
【００６６】
図７の例示的同期メッセージには、データを含む各同期メッセージが、この場合はユーザ・デバイス１（７０４）とユーザ・デバイス２（７０５）という、各ユーザ・デバイスごとの増分されたバージョン・スタンプをどのように含むかが示されている。残りの各メッセージ・フィールドは、（一意の）メッセージＩＤ７０１、命令７０２、作業空間要素情報またはデータ７０３、データの発信元ユーザ・デバイス７０６、およびデータの宛先ユーザ・デバイスを含む。したがって、以下の各事例を考察する。
【００６７】
例１：事例１：ユーザ・デバイス２がユーザ・デバイス１によって要素Ｘに入力された変更を受け取り、変更を要素Ｘに入力する場合には、ユーザ・デバイス１は、バージョン1Ｘ1を有する、２回変更された要素Ｘを含むメッセージを受け取る。
【００６８】
例２：事例２ａ：そうではなく、ユーザ・デバイス２が、ユーザ・デバイス１による変更を受け取る前に要素Ｘに変更を入力する場合には、ユーザ・デバイス１はバージョン0Ｘ1を有する（ユーザ・デバイス２によって）１回変更された要素Ｘを受け取る。
【００６９】
例３：事例２ｂ：ユーザ・デバイス２は、後で、要素Ｘおよびバージョン0Ｘ1を含むデバイス１からのメッセージも受け取る。
【００７０】
図８の例示的同期履歴マップには、各ユーザ・デバイスの同期エンジンの履歴管理機能６０２（図６）が、さらに、新規メッセージを受け取る前に、各同期された作業空間要素ごとに、同期をとるすべてのユーザ・デバイスでの現在の各同期状態（例えば、ユーザ・デバイス１のバージョン・スタンプ８１２やユーザ・デバイス２のバージョン・スタンプ８１３など）をどのように維持するかが示されている。
【００７１】
他の履歴マップの各部分は、レコード値比較および変更検出を可能にするハッシュ値８１４、および必要に応じて変更伝播を禁止できるようにする読取り専用フラグ８１５を含む。履歴マップは、さらに、特に、現在のメッセージ・バージョン・スタンプ・カウンタや、ローカル・データベースまたは作業空間データを含むその他のデータ空間の完全変更スキャンを実施する際に締切として使用する変更日付など、どのレコード（図示せず）にも特有でない同期状態も含む。
【００７２】
したがって、同期エンジン５０５（図６）の競合検出機能６３０は、（受信同期メッセージを構文解析する）メッセージ・パーサ６０１から受け取った、新規「受信」バージョン情報を、同期履歴マップをポーリングする履歴管理機能６０２から受け取った現行バージョン情報と比較することによって競合が存在するかどうか判定する。
【００７３】
次に前述の各例に戻ると、ユーザ・デバイス１とユーザ・デバイス２それぞれの初期の現行バージョン・スタンプは0Ｘ0であった。例１では、ユーザ・デバイス１がＸを更新し、次いで、ユーザ・デバイス２がそれを受け取って、ユーザ・デバイス１、２の現行バージョン・スタンプが、1Ｘ0（1）および0Ｘ0（2）になり、ユーザ・デバイス２での受信バージョンが1Ｘ0（2）になる。次に、ユーザ・デバイス２がＸを更新し、次いで、ユーザ・デバイス１がそれを受け取る。したがって、ユーザ・デバイス１、２でのバージョン・スタンプは以下のようになる。
現行→1Ｘ0（1）および1Ｘ1（2）；受信→1Ｘ1（1）および1Ｘ1（2）
【００７４】
例２では、ユーザ・デバイス１がＸを更新し、次いで、ユーザ・デバイス２がそれを受け取らずにＸを更新し、次いで、ユーザ・デバイス１がそれを受け取る。したがって、ユーザ・デバイス１、２でのバージョン・スタンプは以下のようになる。
現行→1Ｘ0（1）および0Ｘ1（2）；受信→0Ｘ1（1）および不適用（2）
【００７５】
最後に、例３は、ユーザ・デバイス２がユーザ・デバイス１の更新を受け取ること以外は、例２と同じである。したがって、ユーザ・デバイス１、２でのバージョン・スタンプは以下のようになる。
現行→1Ｘ0（1）および0Ｘ1（2）；受信→1Ｘ1（1）および1Ｘ1（2）
【００７６】
競合検出機能６３０は、別のイベントの「後で発生した」イベントは、「前に発生した」イベントに優先するという一般的挙動に従って動作する。しかし、同時に発生したイベントが競合し、競合解決規則を適用してそれを解決する必要がある。この一般的規則を適用する際でさえも、競合検出機能６３０比較の結果は、例１では競合を示さないが、例２および例３では、同時更新のために競合を示すはずである。したがって、ユーザ・デバイス１の競合検出機能は、例２では、ユーザ・デバイス２の更新を受け取ると競合を検出し、ユーザ・デバイス２の競合検出機能は、例３では、ユーザ・デバイス１の更新を受け取ると競合を検出するはずである。
【００７７】
しかし、より具体的な競合検出のための規則を、様々な種類の変更に適用できることがわかる。そうした変更は、同期メッセージ内で命令または「コマンド」として提供され、それには、既存の作業空間要素を更新するコマンドすなわち「更新」（または「置換」）コマンド、新規作業空間要素を追加するコマンドすなわち「追加」コマンド、作業空間要素を削除するコマンドすなわち「削除」コマンドが含まれる。個々の実装形態ではその他の規則も適用し得るが、以下の例示的規則が特に適切に機能する。
【００７８】
非同期対応ユーザ・デバイスの支援機能が更新コマンド・メッセージを受け取り、競合検出機能が現行と新規のバージョン・スタンプを比較するときには、予期される事例と予期されない事例（すなわち可能なエラー／実際のエラー）があり得る。予期される更新コマンド事例には以下のものが含まれる。
【００７９】
（１）（受信側ユーザ・デバイスにとっての）現行ローカル・バージョンと受信ローカル・バージョンが等しく、（送信側ユーザ・デバイスにとっての）受信リモート・バージョンが現行のリモート・バージョンより大きい場合には、競合は検出されず、記憶された作業空間要素への更新を適用する必要があり、受信リモート・バージョン・スタンプが現行として記憶される。
【００８０】
（２）しかし、新規ローカル・バージョンが現行バージョンより小さく、受信リモート・バージョンが現行リモート・バージョンより大きい場合には、競合または「競合更新」が存在する。
【００８１】
予期されない更新事例には以下のものが含まれる。
【００８２】
（３）ローカル・バージョンが等しく、かつリモート・バージョンも等しい場合には、更新競合が存在し、以下を適用する必要がある。受け取った更新データがローカル・データに合致する場合には、複製メッセージが送信されている可能性がある。この場合には、それらのデータは等しいので、そのコマンドを適用することも無視することもできる。しかし、その更新がローカル・データを変更するはずの場合には、リモートでエラーが発生している。更新競合解決を適用して、リモートのクラッシュ回復を呼び出す必要がある。
【００８３】
（４）受信リモート・バージョンが現行リモート・バージョンより小さく、かつ受信ローカル・バージョンが現行ローカル・バージョン以下である場合には、エラーが発生している。この更新は適用すべきではない。そのメッセージが不適切に受け取られているか、それともリモート・デバイスでエラーが発生しているかのどちらかである。使用されたメッセージ搬送システムがメッセージの順序付けおよび配信を保証している場合には、リモート・デバイスのエラーであると想定され、リモートのクラッシュ回復を呼び出す必要がある。
【００８４】
（５）受信ローカル・バージョンが現行ローカル・バージョンより大きく、かつ受信リモート・バージョンが現行リモート・バージョン以上である場合には、ローカルでエラーが発生している。その更新を受け入れて、ローカルのクラッシュ回復を呼び出す必要がある。
【００８５】
（６）受信ローカル・バージョンが現行ローカル・バージョンより小さく、新規リモート・バージョンと現行リモート・バージョンが等しい場合には、エラーが発生しており、クラッシュ回復が必要である。その更新は適用すべきではない。複製メッセージが受け取られているか、それともリモート・デバイスでエラーが発生しているかのどちらかである。使用されたメッセージ搬送システムが、メッセージが二重配信されないことを保証している場合には、リモート・デバイスでエラーが発生していると想定され、リモートのクラッシュ回復を呼び出す必要がある。
【００８６】
（７）受信ローカル・バージョンが現行ローカル・バージョンより大きく、かつ受信リモート・バージョンが現行リモート・バージョンより小さい場合には、エラーが発生しており、更新競合が存在する。更新競合解決を適用し、ローカルのクラッシュ回復を呼び出す必要がある。
【００８７】
同期履歴は、削除されたエントリの「削除標識」を保持することが期待されることに留意されたい。これらは、単に、削除時に、（その削除自体の動作に対して増分されたローカル・バージョンのアカウントと共に）その要素の識別子と、そのレコードに関連付けられたローカルおよびリモートのバージョン・スタンプとを記録するにすぎないエントリである。これにより、ローカルで検出された要素の場合でさえも、競合検出と解決が可能になる。削除された要素であって、その「削除標識」が同期履歴から取り除かれているものに適用される更新が届いた場合には、その更新は追加として処理される。同期履歴は、そうした更新コマンドの大部分が最初にシステム中を進むのに十分な期間それらの削除標識を維持する必要がある。
【００８８】
競合検出機能６３１（図６）は、更新競合を検出すると、競合解決機能６３２を呼び出す。次いで、競合解決機能６３２は、その競合を解決するために競合解決規則を適用し、さらに、データ転送エンジン６４１またはメッセージ転送エンジン６４２を呼び出し、必要に応じてそれぞれの転送を開始させる。更新コマンドでの競合解決規則の例には、以下の受け入れ規則、拒否規則、複製規則が含まれる。
【００８９】
１）受信側ユーザ・デバイスは更新を受け入れることができる。この場合には、解決は、既存の作業空間要素を更新／置換し、受信したリモートと現行リモートのバージョン・スタンプの最大値を現行のリモート・バージョンとして記憶すること、および受信したローカルと現行ローカルのバージョン・スタンプの最大値を現行のローカル・バージョンとして記憶することを含む。
【００９０】
２）受信側デバイスは更新を拒否することができる。この場合には、解決は、既存の作業空間要素を更新せず、受信および現行リモートのバージョン・スタンプの最大値を現行のリモート・バージョンとして記憶し、受信および現行ローカル・バージョン・スタンプの最大値を現行ローカル・バージョンとして記憶することを含む。
【００９１】
３）受信側デバイスはローカル作業空間要素を複製することができる。この場合には、解決は、１つを除くすべての「サーバ」ユーザ・デバイスが元の作業空間要素への変更を受け入れること、およびそのサーバ・ユーザ・デバイスがその元の要素への変更を拒否し、その変更をその複製に適用することを含む。その（変更を含む）新規作業空間要素は、同期をとる各ユーザ・デバイスに追加コマンドを発行させ、そのコマンドを、競合追加コマンド競合解決に従って解決することができる。このオプションは、その要素更新がローカル要素への変更を全く生じない場合には使用すべきでない。
【００９２】
ただし、競合解決は、一般に、同期をとるデバイス間で汎用的方式で実施する必要があることに留意すべきである。したがって、競合解決規則が、各ユーザ・デバイスごとに事前に決定され、静的であり続ける必要があり、あるいはユーザ・デバイスによって記憶される規則または規則の標識が、それらが変更される際にそれらのユーザ・デバイス間で伝達される必要がある。別の代替手段は、少なくとも１つの同期をとるユーザ・デバイスが制御または「サーバ」ユーザ・デバイスとして動作するように構成することである。この場合には、残りの、すなわち「クライアント」ユーザ・デバイスは、バージョン競合を検出すると、既存の作業空間要素を複製することができる。その結果生じる追加コマンドを受信すると、サーバ・ユーザ・デバイスはそれらの競合を解決し、必要に応じて削除コマンドを発行することができる。
【００９３】
まず図６を見、次いで、さらに図７、９、１０を参照すると、追加コマンドは一意である。既存の作業空間要素と異なり、各ユーザ・デバイスが同一のデータ空間を維持しない限り、新規に作成された作業空間要素への既存の共通参照はない。しかし、新規作業空間要素を、大幅に異なるユーザ・デバイス構成とアプリケーション・プログラムに統合させるか、またはその他のデータ・ソースとでさえも統合させるようにする、リモート参照機構が見られる。
【００９４】
追加コマンドを含む同期メッセージを受け取ると、同期エンジン５０５のデータ参照エンジン６０６は、送信側ユーザ・デバイスの作業空間データのローカル参照のためにそのメッセージを構文解析する。データ参照エンジン６０６は、送信側デバイスの作業空間要素参照を、図９の例示的データ参照マップ９００の要素９０１〜９１２などを用いて、データ参照マップに記憶する。
【００９５】
データ参照エンジン６０６は、さらに、受信側ユーザ・デバイスのためのローカル参照（例えば、参照９０１〜９１１など）もそのマップに追加し、その作業空間データが、送信側デバイス参照に従って記憶される。データ参照エンジン６０６は、作業空間要素が追加されるたびにこのプロセスを繰り返し、すべてのユーザ・デバイスのすべての作業空間要素のマップを維持するようにする。
【００９６】
その後、同じ送信側参照を持つ同期メッセージを受け取ると、データ参照エンジン６０６は、対応するローカル（ホスト・ユーザ・デバイスの）参照を求めてデータ参照マップをポーリングし、そのローカル参照に従って同期が続行される。これとは異なり、作業空間データのローカル変更を同期するときには、参照エンジン６０６は、ローカル参照を求めてデータ参照マップをポーリングし、受信側参照を検索し、その受信側参照に従って同期メッセージが形成される。
【００９７】
発信元参照とローカル参照は、メモリ・アドレスに対応する必要はないことに留意されたい。ローカル参照は、対応を確立し、ローカルの処理を実施するのに十分でさえあればよい。
【００９８】
さらに、この機構は、すべてのユーザ・デバイスではなく、１台のユーザ・デバイスがそのデータ参照マップを維持できるようにする。この１台の「サーバ」ユーザ・デバイスは、例えば、その他のデバイスより多くの使用可能リソースを持つことができる。第２の（または他の）ユーザ・デバイスは、図１０の例示的完了マップなどのように、単に、どの参照が送信されたかを示す「参照送信済みマップ」を維持することができるにすぎない。次いで、同期に際して、第２のユーザ・デバイスのデータ参照管理機能は、参照送信済みマップをポーリングして、参照が送信されたかどうか判定することができる。送信されなかった場合には、参照管理機能は、その参照を同期メッセージに追加し、マップ済みフラグを、その参照が送信されたことを示すように設定することができる。
【００９９】
追加コマンドでの競合検出および解決の例は以下の通りである。一般に、同期は、送信側ユーザ・デバイスと受信側ユーザ・デバイスの両方に追加される同一の作業空間要素を識別し、作業空間要素の複製を回避する必要がある。より具体的には、追加コマンドを受け取ると、以下が実施される。
【０１００】
１）０より大きいローカル・バージョン・スタンプが含まれている場合は、強制追加を指示する。解決は、新規作業空間要素を追加し、その作業空間要素をマップ済みとマークし、応答マップ・コマンドを発行することを含む。
【０１０１】
２）作業空間要素が追加コマンドと共に含まれる場合には、応答は、その含まれる作業空間要素を、マップ済みとマークされていないすべてのローカル・レコードに比較することを含む。
【０１０２】
３）合致が見つからなかった場合には、その追加は競合しない。応答は、新規作業空間要素を作成し、その要素をマップ済みとマークし、応答マップ・コマンドを発行することを含む。
【０１０３】
４）合致が見つかった場合には、それは競合する追加である。解決は、レコードのバージョン・スタンプのリモート・コンポーネントをその更新コマンドに含まれる値に設定し、その作業空間要素をマップ済みとマークし、応答マップ・コマンドを発行することを含む。
【０１０４】
新規に作成された作業空間要素はマップ済みとマークされず、マップ・コマンドを受け取ったときにマップ済みとマークされるはずであることに留意されたい。
【０１０５】
競合検出と削除コマンドは、削除の受け入れが、要素のローカル・コピーを削除し、その要素の同期履歴エントリを、そのエントリが単に削除済みレコードの削除標識にすぎないものであると示すようにマークすることを伴う点を除いて、更新コマンドのものと同じである。削除競合解決オプションは、複製オプションが適用されないことを除いて、更新コマンドのものと同じである。
【０１０６】
結果として生じる競合エンジン６０７は、さらに、特に、結局はカレンダやプロジェクト管理などのアプリケーションを生じさせる競合の解決を実現する。例えば、１つの会議が２つの異なる場所で行われるように予定され、または連続する会議が、両方に出席するにはあまりにも隔たった場所に指定されたとする。結果として生じる競合エンジン６０７は、結果として生じる競合を求めて作業空間データとメッセージ・パーサ６０１からの作業空間データをポーリングし、結果として生じる競合解決規則またはユーザ対話に従ってそれらの競合を解決する。
【０１０７】
再度図５に戻ると、同期アダプタ５０９は、同期エンジンが特定のデータベース、アプリケーションまたはその他のデータ空間にアクセスできるようにする汎用インターフェイスを実装する。このインターフェイスは、同期エンジンが個々のレコードを検索すると共に、「最近」変更されたレコードのセット全部を反復することができるようにする。「最近」の解釈は、アダプタの種類やそれをインスタンス化するのに使用される個々の構築機能に応じて異なる。
【０１０８】
例えば、様々なオペレーティング・システム、アプリケーション・プログラムまたはその他のシステムは、データ変更の標識を提供することもしないこともある。様々なシステムが提供する内容の例を以下に示す。
１．各作業空間要素ごとのフラグが、その要素が変更される都度設定される。
２．「最終変更」日付が各要素ごとに記録される。
３．その要素ストアに関連付けられた現在の連番など何らかの他の表示が、各要素と共に、それが変更されたときに記憶される。
４．要素ストアが、要素が変更されたときに、パブリッシュ／サブスクライブ・タイプのインターフェイスを介して変更イベントを知らせる。
５．要素変更標識が記憶されない。
【０１０９】
事例２、３で最近の変更の判定を容易にするために、同期制御機能は、例えば、同期アクティビティの開始時に、各同期アダプタに同期アンカーを供給することができる。同期アンカーは、同期履歴から取り出された単純なトークン（例えば、タイムスタンプや連番など）とすることができる。このトークンは、同期アクティビティの以前のインスタンスが発生した瞬間に対応する締切を示す。同期アダプタはこのトークを使用して、指示された締切日または連番の前に変更されている要素を変更リストに入れて返すべきではないと推断することが可能である。同期アダプタは、さらに、「新規アンカー」トークンを返すことができ、それをその後の同期アクティビティで使用して、その時点の瞬間に対応する締切を指示することができる。同期エンジンが変更リスト中のすべての要素を正常に処理した場合には、その新規アンカー・トークンを用いて同期履歴を更新することができる。
【０１１０】
事例１および４での最近の変更の判定を容易にするために、同期エンジンは同期アダプタに、各変更リスト要素の正常な処理を、それが処理される際に明示的に認めることができる。これによって同期アダプタは、関連する変更フラグをクリアし（事例１）、または内部待ち行列から関連する変更イベント通知を削除する（事例４）ことができる。
【０１１１】
事例５では、同期アダプタは変更リストにすべての現行要素のリストを入れて返す。次いで、同期エンジンは、あらゆる同期ごとにすべての要素を処理し、（同期履歴に記憶される）最後の同期からの各要素の短いハッシュを使用して要素が実際にはいつ変更されたか判定する。この場合には、同期エンジンは、どの要素が削除されているか推論するために、それらの要素を、同期履歴中の要素に比較することもできる。
【０１１２】
同期アダプタが、締切日に基づいて削除ではなく変更を判定できる場合には、同期エンジンは同期アダプタに、すべての要素のリストを別個に要求することができる。次いで、同期エンジンは、変更リストから変更を推論し、同期履歴とすべての現行要素のリストから削除を推論することができる。
【０１１３】
ローカル・アダプタは、ローカル・データベースまたはその他のデータ空間、および一般にそこに含まれる任意のレコードへのアクセスを可能にする。「最近の」変更のセットは、例えば、構築機能に供給された１組の変更イベントによって、（ＳｙｎｃＨｉｓｔｏｒｙから抽出された）「最終変更」締切日によって、あるいはデータベースにダーティー・ビットを問い合わせることによって判定する。
【０１１４】
ローカル・アダプタは、アプリケーション間での作業空間要素の同期も容易にする。例えば、様々な能力を備えるＰＩＭアプリケーション間でのデータの同期は、フィールド・マッピング、フィールド切り捨て、反復規則マッピング、および（場合によっては）値の範囲の予測を必要とする。これは、同期エンジンにフィールド・データを返す前に、固有表現から共通フィールド表現にフィールドをマッピングするローカル・データ・アダプタによって実現される。さらに、更新メッセージが待ち行列に入れられる前に、リモート・データ・アダプタによって、個々のデバイスでの切り捨て、反復マッピング、範囲予測がフィールド・データに適用される。
【０１１５】
リモート・アダプタは、リモート・メッセージ待ち行列を介して経路指定された更新メッセージによるリモート・データベースへのアクセスを可能にする。リモート・アダプタは、一般に、更新メッセージを待ち行列に入れられたレコードへの読取りアクセスのみ、および更新メッセージを待ち行列に入れさせる必要のあるレコードへの書込みアクセスを可能にする。
【０１１６】
また、リモート・アダプタは、使用可能なデバイス構成とデータ・ソースに関する高度の柔軟性も可能にする。それらのアダプタは、リモート・デバイスに代わって、フィールド・マッピング、フィールド切り捨て、反復規則サポートに関する決定、その他の変更を行うことができる。また、それらのアダプタは、必要に応じて変換または翻訳を実施することもできる。したがって、同期をとる各ユーザ・デバイスが、同じデバイスであり、同じプログラムを走らせ、あるいは同等のメモリ空間を維持することが必要であるとは限らない。
【０１１７】
同期アダプタは、作業空間要素に対応するデータにアクセスできる必要がある。このデータは、別のデバイスに伝送するためにそのデータのマーシャリングを処理するリモート・アダプタによって解釈される共通形式に変換することができる。同期アダプタは、要素アクセスと変更メソッドを公開し、それによって同期エンジンは同期を実施できるようになる。これらのメソッドには、例えば、ｓｅｔＬａｓｔＳｙｎｃＡｎｃｈｏｒ、ｇｅｔＮｅｘｔＳｙｎｃＡｎｃｈｏｒ、ｇｅｔＡｌｌＥｌｅｍｅｎｔＲｅｆｅｒｅｎｃｅｓ、ｇｅｔＣｈａｎｇｅｄＥｌｅｍｅｎｔＲｅｆｅｒｅｎｃｅｓ、ｇｅｔＨａｓｈＲｅｐｒｅｓｅｎｔａｔｉｏｎＯｆＥｌｅｍｅｎｔ、ａｄｄＥｌｅｍｅｎｔ、ｃｏｐｙＥｌｅｍｅｎｔ、ｍｏｄｉｆｙＥｌｅｍｅｎｔ、ｄｅｌｅｔｅＥｌｅｍｅｎｔ、ａｐｐｌｙＴｒｕｎｃａｔｉｏｎＴｏＥｌｅｍｅｎｔ、ａｃｋｎｏｗｌｅｄｇｅＣｈａｎｇｅが含まれる。
【０１１８】
残りの支援機能要素のうち、セキュリティ・エンジン５１５は、認証や暗号化などのセキュリティ措置を実装する。暗号化と解読は、メッセージ・パーサ６０１（図６）と共に、作業空間要素上で実施することができる。非同期型同期によって可変のデータ細分性が与えられていると仮定すると、暗号化は、たとえリソースの低いユーザ・デバイス内でさえも、そのデータ・センタに作業空間要素を転送する前に通常の従来方式で実施することができる。解読も同様に、作業空間要素の受信時に、または、暗号化形式で記憶されている場合には、作業空間要素の検索時に実施される。
【０１１９】
クラッシュ回復エンジンまたは「クラッシュ管理機能」５１６は、処理中に同期エンジンによって発見された同期エラーの警告を受け取ることができる。同期エンジンは、ローカルとリモートのバージョン・スタンプを利用して、ローカルまたはリモート・デバイスに、おそらくその後のバックアップからの復元が行われるデータ喪失または破損が発生している可能性のある事例を検出する。同期エンジンはクラッシュを、関連する要素での現行ローカル・バージョンより大きいローカル・バージョン・スタンプを持つメッセージが受け取られた状態として検出する。この詳細についてはすでに述べた。クラッシュとバックアップからの復元が発生した場合には、様々な要素について同期履歴に記憶されたローカルの現行バージョン・スタンプは、不可避的に、何らかの以前の値に戻されることになる。
【０１２０】
リモートのクラッシュ／復元イベントも、リモート・バージョンが関連する要素での現行リモート・バージョン以下であり、メッセージの配信が保証され、メッセージが重複しないことが保証され、厳密なメッセージ順序付けが保証されているメッセージ搬送システムが使用された場合には、同様に、メッセージの受信によって検出される。この詳細についてはすでに述べた。
【０１２１】
そうした障害が検出されたときには、再同期を実施する必要がある。ローカル・クラッシュ検出の場合には、「クラッシュ管理機能」は回復を実施すべきかどうか決定する必要がある。それは、ユーザに確認の入力を要求し、あるいは回復を開始すべきかどうかの他の何らかの機構を使用することができる。これには、このデバイス（Ａ）でクラッシュが発生していると指示するメッセージを別のデバイス（Ｂ）に送信することさえも含まれると考えられるであろう。デバイスＢの「クラッシュ管理機能」は、回復を開始すべきかどうかについてのユーザ・フィードバックを促すようにより適切に位置決めすることもできる。リモート・クラッシュの場合には、「クラッシュ管理機能」は他方のデバイスにメッセージを送信して、それ自体のデータが破損している可能性があることを知らせる必要がある。
【０１２２】
回復を開始する決定がなされると、「クラッシュ管理機能」は同期スケジューラに「回復同期」を実行するよう知らせる必要がある。そうした同期に際して、同期エンジンは他方のデバイスに、すべてのマップ済み要素での更新メッセージ、すべてのマップされていない要素での追加メッセージ、同期履歴中のすべての削除標識での削除メッセージを送信するよう指図される。これらのメッセージのそれぞれに「回復」メッセージとマークし、そうしたメッセージの受信が他方のデバイス上でクラッシュ検出をトリガしないようにする必要がある。また、他方のデバイスに「回復同期」要求を送信する必要もあり、そのデバイスは、同様に、現在関連するデータ要素ストア中にあるすべての要素、または同期履歴中の削除標識によって参照されるすべての要素での回復メッセージを送信することになる。これら回復の追加、更新、削除メッセージのそれぞれの処理は、前述のように行うことができる。ただし、これらのメッセージによってクラッシュ検出論理はトリガされず、それらのメッセージの多くは、以前に遡った日付のローカルまたはリモート・バージョン・スタンプを持ち得る。
【０１２３】
図１１から１４に、同期を開始し、経路指定し、受信し、処理することのできる例示的方法を示す。
【０１２４】
図１１に示すように、第１の計算処理デバイスは、ステップ１１０１でトリガ・イベントを受け取り、ステップ１１０３で、第１のデバイス・データに変更が行われているかどうか判定することによって応答する。変更が行われている場合（ステップ１１０５）には、第１のデバイスは、ステップ１１０７で、１つまたは複数の受信先デバイスを決定し、第１のデバイス・ユーザおよび／またはデバイスでのセキュリティ手順を実施する。
【０１２５】
例示的セキュリティ手順を図１２に示す。第１のデバイスは、ステップ１２０１で、受信先デバイス識別を検索し、暗号化されている場合には、その識別を解読する。また、第１のデバイスは、現在の第１のデバイス・ユーザとデバイスにその変更の同期をとる許可が存在するかどうかも判定する。ステップ１２０５でその変更が却下されない限り、図１１のステップ１１０９に進む。
【０１２６】
受信先デバイスと、例えば、追加、変更／更新または削除の同期をとる許可は、通常の従来方式で実施することができる。より典型的には、セキュリティは、秘書、配偶者、子供などの第三者デバイス・ユーザが変更の同期をとろうとし、かつ受信先デバイス・ユーザのローカル・デバイスが使用不能である場合に適用される。セキュリティ情報または変更の同期をとる試行での失敗は、本明細書で論じた情報の同期と同様の方式で受信先デバイスに伝播し、またはそれと同期をとることができることに留意すべきである。したがって、例えば、同期を介してリモート・デバイス情報を変更することのできる、失われたデバイスのオペレーションを回避または報告することができる。
【０１２７】
図１１のステップ１１０９で、第１のデバイスは、変更に対応する変更標識を構成する。そうした構成の一例を図１２ｂに示す。ステップ１２１１から開始すると、第１のデバイスは、例えばそのデバイスのユーザ・アクセス、デバイス・リソースまたはその他の要因（上記を参照）に従って、転送するいくつかの変更を決定する。
【０１２８】
第１のデバイスは、さらに、ステップ１２１１で受信先デバイス特性を判定し、ステップ１２１３で変更を汎用形式に変換し、その変更を受信先デバイスに適した形式に変換する。そうした変更には、例えば、特に、同期データ・アダプタに関連して本明細書で論じたような、データまたはデータ形式操作が含まれる。
【０１２９】
ステップ１２１７で、第１のデバイスは、その１つまたは複数の変更標識を暗号化された形で転送すべきである場合には、任意選択で、変更標識を暗号化する。非同期型同期では同期型同期よりリソース利用を少なくすることが可能であるが、リソースの使用を適切な数の変更を判定する際に考慮に入れることもできる。データまたはデータ属性またはその他の要因によるリソース要件の判定、およびユーザ利用の検出は、例えば、通常の従来方式で行うことができる。
【０１３０】
ステップ１２１９で、第１のデバイスは、変更を伝達するのに必要なその他の情報を判定する。前述のように、例えば、その他の情報には、前述の同期メッセージ例で利用されるようなコマンドの種類、コマンドＩＤ、参照マッピング情報などが含まれる。
【０１３１】
最後に、ステップ１１１１（図１１）で、第１のデバイスは、変更標識（または同期メッセージ）を経路指定システムに転送し、それによってその変更が第２のデバイスに受け取られ、第１のデバイス・トリガに関連して非同期的にトリガする第２のデバイス・トリガに応答して、それが第２のデバイス・データと同期されるようにする。
【０１３２】
図１３に、さらに、経路指定システムの方法の例を示す。図示のように、経路指定システムは、ステップ１３０１で、第１のデバイス・トリガ（例えば、図１１の第１のデバイスのトリガなど）に応答して動作する第１のデバイスから転送要求を受け取る。経路指定システムは、さらに、ステップ１３０３で、第１のデバイスから第１のデバイス・データへの変更を指示する変更標識を受け取り、ステップ１３０５で、第２のデバイスによる非同期受信のためにその変更標識を記憶する。経路指定システムは、ステップ１３０６で、（同期に関する）次の要求を待つ。
【０１３３】
次いで、ステップ１３０３から１３０５の変更標識の同期（およびおそらくその他の変更標識の同期）は、ステップ１３０７から１３０９に進むことができる。しかし、非同期オペレーションは、さらに、ステップ１３０１から１３０５で第１のデバイスから１つまたは複数のさらなる変更標識を受け取ること、ステップ１３１１から１３１５で第２のデバイスからさらなる変更標識を受け取ること、あるいはステップ１３１７からステップ１３１９で第１のデバイスに変更標識を転送することも可能にする。
【０１３４】
ステップ１３０３から開始すると、経路指定システムは、第１のデバイス・トリガに関連して非同期的にトリガする第２のデバイス・トリガに応答して動作する第２のデバイスから転送要求を受け取る。次いで、ステップ１３０９で、経路指定システムは第２のデバイスに、その経路指定システムが記憶する要求された変更標識を転送し、それらの変更を第２のデバイスが受け取り、第２のデバイス・データと同期させることができる。
【０１３５】
それとは異なりステップ１３１１から開始すると、経路指定システムは、非同期の第２のデバイス・トリガに応答して動作する第２のデバイスから転送要求を受け取る。前述の例のように、このトリガは、第１のデバイス・トリガに関連して非同期的に開始し、ステップ１３０７〜１３０９のトリガと同じトリガ、または、より典型的には、異なるトリガ（例えば、情報へのユーザ・アクセスまたは同期受信スケジュールに反するデータの変更、同期初期設定スケジュールまたはユーザ変更など）とすることができる。ステップ１３１３で、経路指定システムは第２のデバイスから、第２のデバイス・データへの変更を指示する（第２のデバイスの）変更標識を受け取り、ステップ１３１５で、その変更標識を記憶する。
【０１３６】
それとは異なりステップ１３１７から開始すると、経路指定システムは、第２のデバイス・トリガに関連して非同期的にトリガする第２のデバイス・トリガに応答して動作する第１のデバイスから転送要求を受け取る。（この場合もやはり、例えば上記のような様々なトリガ・オプションが存在する。）経路指定システムは、さらに、第１のデバイスに、使用可能な、１つまたは複数の要求された変更標識を転送し、それらの変更を第１のデバイスが受け取り、第１のデバイス・データと同期させることができる。
【０１３７】
図１４に、開始された同期を処理する例示的方法を示す。図示のように、ステップ１４０１で、第１のデバイスは第１のトリガ・イベントを受け取り、ステップ１４０３で（まだ接続されていない場合には）経路指定システムに接続することによって応答する。ステップ１４０５で、第１のデバイスは、例えば、第１のデバイス、他のシステム、ユーザまたはデバイス利用要因などに従って、要求するいくつかの変更標識を決定する。ステップ１４０７で、第１のデバイスは経路指定システムから、（少なくとも第１のデバイス・トリガに関連して）第２のデバイス・トリガを非同期のトリガしたことに応答して経路指定システムに転送された、第２のデバイス・データへの変更を指示する変更標識を受け取る。
【０１３８】
ステップ１４０９で、第１のデバイスは、任意選択で、それらの変更が同期でのセキュリティ要件を満たすかどうか判定する。（セキュリティは、例えば、共用の方式で、送信側デバイスによっても、受信側デバイスによって、その両者によっても実施できることに留意されたい。例えば、図１１および図１２を参照されたい。）ステップ１４１１で、第１のデバイスは、その標識が暗号化されている場合には、その変更標識を解読し、ステップ１４１３で、例えば、第１のデバイス・データに追加、更新または削除を行うことによって、対応する第１のデバイス・データとその第２のデバイス変更の同期をとる。最後に、処理すべき次の標識が残っている場合には、第１のデバイスはステップ１４０７に戻る。１回の同期「セッション」または連続した同期セッションで、経路指定システムによって記憶された変更標識のすべてまたは一部を、経路指定システムから一度に検索することもできることが理解されるであろう。
【０１３９】
以上、本明細書では本発明をその具体的実施形態を参照して説明したが、前述の開示では、ある程度の変更の許容範囲、様々な変更および置換が意図されており、場合によっては、記載の本発明の精神および範囲を逸脱することなく、対応する他の特徴を使用せずに本発明の一部の特徴が用いられることが理解されるであろう。
【図面の簡単な説明】
【０１４０】
【図１】本発明の一実施形態による非同期型同期システムを示す流れ図である。
【図２】本発明の一実施形態による、非同期型同期システム要素を実装することのできる処理システムを示す構成図である。
【図３ａ】本発明の一実施形態による、非同期型同期支援機能およびデータ・センタの使用を示す流れ図である。
【図３ｂ】図３ａのデータ・センタをより詳細に示す構成図である。
【図３ｃ】本発明の一実施形態による、第１の非同期型同期支援機能のオペレーションを示す流れ図である。
【図３ｄ】本発明の一実施形態による、第２の非同期型同期支援機能のオペレーションを示す流れ図である。
【図４】本発明の一実施形態による、共通記憶管理機能を示す構成図である。
【図５】本発明の一実施形態による、非同期型同期支援機能をより詳細に示す図である。
【図６】本発明の一実施形態による同期エンジンを示す図である。
【図７】本発明の一実施形態による同期メッセージの例を示す図である。
【図８】本発明の一実施形態による同期履歴の例を示す図である。
【図９】本発明の一実施形態によるサーバ・ユーザ・デバイス・マップを示す図である。
【図１０】本発明の一実施形態によるクライアント・ユーザ・デバイス・マップを示す図である。
【図１１】本発明の一実施形態による非同期型同期方式を開始する方法示すフローチャートである。
【図１２】本発明の一実施形態による、変更受信者を決定し、それと併せてセキュリティを実施する方法を示す図（ａ）と、本発明の一実施形態による、非同期型同期を開始する計算処理システムが１つまたは複数の変更標識を構成する方法を示すフローチャートである（ｂ）。
【図１３】一実施形態による、非同期的に同期をとる計算処理システム間で転送される１つまたは複数の変更を処理する経路指定システムのための方法を示すフローチャートである。
【図１４】本発明の一実施形態による、１つまたは複数の第２のデバイス変更の第１のデバイスによる非同期型同期を実施する方法を示すフローチャートである。
【図１】
2005509979.tif 000003
【図２】
2005509979.tif 000004
【図３ａ】
2005509979.tif 000005
【図３ｂ】
2005509979.tif 000006
【図３ｃ】
2005509979.tif 000007
【図３ｄ】
2005509979.tif 000008
【図４】
2005509979.tif 000009
【図５】
2005509979.tif 000010
【図６】
2005509979.tif 000011
【図７】
2005509979.tif 000012
【図８】
2005509979.tif 000013
【図９】
2005509979.tif 000014
【図１０】
2005509979.tif 000015
【図１１】
2005509979.tif 000016
【図１２】
2005509979.tif 000017
【図１３】
2005509979.tif 000018
【図１４】
2005509979.tif 000019
【国際調査報告】
2005509979.tif 000020
2005509979.tif 000021