(57)【特許請求の範囲】
【請求項１】
システムにおいて、
第１の装置と、
第２の装置と、
前記第１の装置及び前記第２の装置に接続され、当該第１の装置からデータ変更についてのリクエストを受けるサーバ装置と、
を備え、
前記サーバ装置は、
データベースと、
前記リクエストについてのデータ操作であって、ｗｅｂサービス記述によって表されるデータ操作を識別するとともに、当該データベースにおいて、当該データ操作が解決できるか否かを判定する第１のシンクロナイザーと、
第２のシンクロナイザーと、
前記第１の装置に対応する第１のキャッシュであって、前記データ変更を記憶する第１のキャッシュと、
前記第２の装置に対応する第２のキャッシュと、
を有し、
前記データ操作が解決できた場合、前記第１のシンクロナイザーは、前記データ変更を前記データベース及び前記第２のキャッシュに記憶し、
前記データ操作が解決できなかった場合、前記第２のシンクロナイザーは、前記データ変更についてのリクエストと前記データベースとの不一致についての通知を前記第１の装置へ送信する、ことを特徴とするシステム。
【請求項２】
前記第１のシンクロナイザーはレコード・シンクロナイザーを備え、
前記第２のシンクロナイザーはデータ・シンクロナイザーを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記データ操作は、一又は二以上の検索操作、作成操作、更新操作、削除操作を含み、
ｗｅｂサービス・インターフェースを介して前記データ操作が実行されることを特徴とする請求項１に記載のシステム。
【請求項４】
前記第１のシンクロナイザーは、前記変更を追跡し、前記第２のシンクロナイザーに前記変更を通知し、当該第２のシンクロナイザーは、前記第２の装置に前記変更のダウンロードを行い、
前記変更の前記ダウンロードは前記変更を前記第２の装置におけるデータと同期することを特徴とする請求項１に記載のシステム。
【請求項５】
前記第１のシンクロナイザーは、一又は二以上のキャッシュ及びデータベースにおける一又は二以上の変更の識別状態と変更の同期状態を管理することを特徴とする請求項４に記載のシステム。
【請求項６】
第１の装置と、第２の装置と、当該第１の装置及び当該第２の装置に接続されているサーバ装置とを備えたシステムにおいて実行される方法において、
前記サーバ装置が、前記第１の装置からデータ変更についてのリクエストを受けるステップと、
前記第１の装置に対応する第１のキャッシュにおける前記サーバ装置が、前記データ変更を記憶するステップと、
前記サーバ装置の第１のシンクロナイザーが、前記リクエストについてのデータ操作であって、ｗｅｂサービス記述によって表されるデータ操作を識別するとともに、当該サーバ装置の当該データベースにおいて、当該データ操作が解決できるか否かを判定するステップと、
前記データ操作が解決できた場合、前記第１のシンクロナイザーが、前記データ変更を前記第２の装置に対応する第２のキャッシュ及び前記データベースに記憶するステップと、
前記データ操作が解決できなかった場合、第２のシンクロナイザーが、前記データ変更についてのリクエストと前記データベースとの不一致についての通知を前記第１の装置へ送信するステップと、
を含むことを特徴とする方法。
【請求項７】
前記第１のシンクロナイザーは、レコード・シンクロナイザーを備え、
データ・シンクロナイザーを備える前記第２のシンクロナイザーを介して識別した前記変更の同期を実行することを特徴とする請求項６に記載の方法。
【請求項８】
第１の装置及び第２の装置に接続されているサーバ装置を備えた機械において実行される指示を含む機械読み取り可能なストレージ媒体であって、
前記指示が前記機械に、
前記サーバ装置が、前記第１の装置からデータ変更についてのリクエストを受けるステップと、
前記第１の装置に対応する第１のキャッシュにおける前記サーバ装置が、前記データ変更を記憶するステップと、
前記サーバ装置の第１のシンクロナイザーが、前記リクエストについてのデータ操作であって、ｗｅｂサービス記述によって表されるデータ操作を識別するとともに、当該サーバ装置のデータベースにおいて、当該データ操作が解決できるか否かを判定するステップと、
前記データ操作が解決できた場合、前記第１のシンクロナイザーが、前記データ変更を前記第２の装置に対応する第２のキャッシュ及び前記データベースに記憶するステップと、
前記データ操作が解決できなかった場合、第２のシンクロナイザーが、前記データ変更についてのリクエストと前記データベースとの不一致についての通知を前記第１の装置へ送信するステップと、
を実行させることを特徴とする、機械読み取り可能なストレージ媒体。
【請求項９】
前記機械が前記第１のシンクロナイザーを介して前記変更を追跡するようにし、
前記第１のシンクロナイザーが第２のシンクロナイザーに前記変更を通知し、当該第２のシンクロナイザーが前記第２の装置に前記変更のダウンロードを行うようにし、
前記変更の前記ダウンロードは、前記変更を前記第２の装置上のデータと前記第２の装置で同期することを含む請求項８に記載の機械読み取り可能なストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にネットワークデータサービスの分野に関する。より詳細には、本発明は無線装置の最新データを維持するための方法及びシステムに関する。
【背景技術】
【０００２】
ここ数年、さまざまな無線データ処理装置が紹介されている。これらにはハンドヘルド・コンピュータＴｒｅｏ６５０のような携帯情報端末（ＰＤＡｓ）やデータ処理機能を備えた携帯電話（例えば、ワイヤレス・アプリケーション・プロトコル（ＷＡＰ）をサポートするような機器）、最近では、無線メッセージング装置などが含まれる。
【０００３】
無線装置の使用の増加に伴い、無線装置上の重要データは可能な限り最新であることの重要性が増加しており、さらに扱いにくくなっている。従来の無線装置のデータを更新する方法は、同期した全てのデータを更新することや、データベースを直接変更する必要があった。そのようなデータベースへの変更は無線装置がオンラインである必要がある。変更はトリガーやプロシージャー呼び出し、検索要求などを用いて、データベースに直接行う。その変更はシステム（サーバなど）を不安定にする可能性があり。極めて重要なシステムが問題を含んだ状態となる可能性がある。更新したデータ量はエンタープライズ・ビジネス・データを扱う場合のように比較的大きくなっており、問題をさらに悪化させている。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明の概要
一つの実施例では、システムが無線装置の最新データを維持するために開示される。システムはリクエストを受信するサーバを備え、そのリクエストは装置に存在するデータの変更を表す。リクエストは装置から受信し、その装置は無線ネットワーク上でサーバと接続する。サーバは第１のシンクロナイザーを備え、ｗｅｂサービス記述を介し変更を識別する。第１のシンクロナイザーはビジネス・レコード・シンクロナイザーを備える。サーバはさらに第２のシンクロナイザーを備え、識別した変更を装置にダウンロードし、装置でデータを更新する。変更のダウンロードは識別した変更を装置のデータと同期することを含み、装置が有するデータを更新する。
【０００５】
他の実施例では、方法が開示される。該方法は本装置からリクエストを受信することを含む。リクエストは本装置に存在するデータの変更を表す。この方法はｗｅｂサービス記述を介し変更を識別することと、識別した変更を本装置のデータと同期することをさらに含み、本装置のデータを更新する。
【０００６】
以下の図面に関連した詳細な説明から、本発明のさらなる理解を得ることができる。
【発明を実施するための最良の形態】
【０００７】
無線装置と通信するためにデータを圧縮、解凍するためのメカニズムである一つの実施例に従い、以下の説明において、本発明を完全に理解するために種々の詳細な説明が説明される。しかし、具体的な詳細の一部が無くても、当業者であれば本発明を実施できることは明白であろう。他の例では、本発明の基本原理が曖昧にならないよう、既知の構造及び装置をブロック図に示す。
【０００８】
実施例に関連する特定の特徴や構造または特徴的な説明は少なくとも一つの実施例を含み、「一つの実施例」及び「実施例」によって、詳細な説明を行う。詳細な説明の多くで「一つの実施例」という用語が記載されているが、必ずしも同じ実施例を参照するものではない。
【０００９】
図１はネットワーク構成の一実施例を示す。「カスタマー・サイト」１２０は図１に示され、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを用いることができ、そのネットワーク上で複数のサーバ１０３やクライアント１１０が通信する。例えば、カスタマー・サイト１２０は単一の会社が維持する全てのサーバやクライアントを含むことができる。
【００１０】
サーバ１０３はネットワークの利用者に対して、さまざまなメッセージング、グループウェアサービス１０２を備える（例えば、ｅメール、インスタント・メッセージング、カレンダーなど）。しかし、本発明の基本原理は特定のメッセージング／グループウェアのプラットフォームに限定するものではない。
【００１１】
一つの実施例では、インターフェース１００は、サービス１０２が保持するデータ・オブジェクト（例えば、ｅメールのメッセージ、インスタント・メッセージ、カレンダー・データなど）を複数の無線データ処理装置（図１では装置１３０）に転送し、その転送は外部データネットワーク１７０及び／または無線サービス提供者のネットワーク１７１を介して行われる。例えば、サーバ１０３はｗｅｂサービスの代用としての機能を果たし、そのサーバは無線ネットワークの様々な携帯装置１３０にデータを送信する。
【００１２】
一つの実施例では、インターフェース１００はソフトウエア・モジュールであって、特定のサービス１０２によって機能する。ここで、注意すべきは、インターフェース１００は、単一または複数構成のハードウエアやソフトウエアに実装することができる。そして、それらは本発明の基本原理と整合する。
【００１３】
一つの実施例では、外部データネットワーク１７０には、インターフェース１００と装置１３０間にデータを送信するために複数の機器などが含まれる。その機器はデータベースやサーバ／クライアント（図示せず）そして、他のネットワーク・ハードウエア（例えば、ルーター、ハブなど）などである。一つの実施例では、インターフェース１００はデータを一つまたはそれより多いパケットにカプセル化する。そのパケットには装置１３０を識別するアドレスが含まれる（例えば、３２ビット・モビテックス・アクセス番号（ＭＡＮ＃））。
【００１４】
外部データネットワーク１７０はパケットを無線サービス提供者のネットワーク１７１に送信する。それは言い換えると、パケット（又はパケットに含まれているデータ）を無線通信リンク上で装置１３０に送信する。一つの実施例では、無線サービス提供者のネットワークはＣＤＭＡ２０００ネットワークである。また一方、さまざまなネットワークタイプを採用することができる（例えば、モビテックス、ＧＰＲＳ、ＰＣＳなどである）。そして、それらは本発明の基本原理と整合する。
【００１５】
ここで注意すべきは、ネットワーク・サービス提供者のネットワーク１７１及び外部データネットワーク１７０（かつインターフェース１００と通信する）は同一の組織による所有、運営または、無線サービス提供者のネットワークから無線サービスを借りた所有者、運営者の一方による所有、運営とすることもできる。本発明の基本原理は特定のサービス構成には限定しない。
【００１６】
図２は無線装置２０２の最新データを維持するためのアーキテクチャーの実施例を示す。実施例の説明において、無線処理装置（装置）２０２はサーバ２０４と接続し、通信する。装置２０２はモバイル・コンピュータ・システムまたはモバイル・コンピュータ装置を含む。それらは、例えば、ノート型コンピュータ、携帯電話（例えば、スマートホンなど）、携帯情報端末（ＰＤＡ）、ポケット・コンピュータなどである。サーバ２０４はエンタープライズ・サーバ２２０とさらに通信する。そのエンタープライズ・サーバはｗｅｂサービスを提供する。サーバ２０４及びエンタープライズｗｅｂサービス・サーバ（ＷＳサーバ）２２０はネットワークを介して互いに通信することを目的とする。装置２０２はオンライン又はオフラインとすることができ、装置２０２及びサーバ２０４はＷＳサーバ２２０のバックエンドと通信し、その通信はｗｅｂサービス及びｗｅｂサービス・アプリケーションを介して行われる。ネットワークの例としてはローカル・エリア・ネットワーク（ＬＡＮ）やワイド・エリア・ネットワーク（ＷＡＮ）、都市規模ネットワーク（ＭＡＮ）、インターネット、そしてそれらと同様なネットワークとすることができる。さらに、ネットワークは無線ネットワークと接続し、通信する。サーバ２０４はＧｏｏｄｌｉｎｋ（商標）サーバ、Ｇｏｏｄ  Ａｃｃｅｓｓ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＧＡＷＳ）サーバなどとすることができる。それらは、米国カリフォルニア州、サンタクララ、Ｇｏｏｄ Ｔｅｃｈｎｏｌｏｇｙ社が提供する。ｗｅｂサービス・エンタープライズ・サーバの例は、ドイツ、ヴァルドルフ、ＳＡＰ  ＡＧ社のＷｅｂアプリケーション・サーバ、や米国ニューヨーク州、アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ社（ＩＢＭ（商標））のＷｅｂＳｐｈｅｒｅアプリケーション・サーバなどである。
【００１７】
一つの実施例では、サーバ２０４は、通知登録管理機能２１０、ｗｅｂサービス管理機能（ＷＳ管理機能）２１２、ビジネス・レコード・シンクロナイザー（ビジネス・レコード・シンク）２１４、データ・シンクロナイザー（データ・シンク）２１６を含む。データ・シンク２１６はジェネリック・データ・シンクロナイザーを含む。装置２０２に対応するｗｅｂサービス検索要求通知登録を管理するよう通知登録管理機能２１０が用いられる。例えば、定義済み検索要求ｗｅｂサービス操作を介してデータ・オブジェクトをポーリングするために通知登録管理機能２１０が用いられる。各検索要求通知登録は引数を伴ってｗｅｂサービス呼び出しを行い、ビジネス・データのグループを識別する。例えば、ある検索要求を高優先度の販売口座のグループと定義することができる。さらに複数の検索要求通知登録は異なる引数を用いた同一のｗｅｂサービス・メソッド呼び出しを共用することができる。また、アプリケーションにおいて、各ユーザ及び／又は装置２０２のために、複数の検索要求通知登録を定義できる。つまり、言い換えれば、使用の度にビジネス・レコードのいくつかのグループを採用できる。
【００１８】
ＷＳ管理機能２１２は、装置２０２に代わってｗｅｂサービス・リクエスト及びｗｅｂサービス・レスポンスを扱う（リクエスト生成の際の認証を含む）。通知登録管理機能２１０がコマンドを受信すると、ＷＳ管理機能２１２はｗｅｂサービスを起動し、ビジネス・レコードを取り出す。そして、ビジネス・レコード・シンク２１４を更新する。各装置２０２のために、ビジネス・レコード・シンク２１４はレコード識別及び同期状態の情報（冗長レコードの重複を含む）を管理する。ビジネス・レコード・シンク２１４はデータ・シンク２１６を用いて、装置２０２のデータの追跡及び同期を直接行う。ビジネス・レコードの識別及び通知登録のための変更を管理するためにビジネス・レコード・シンク２１４を用いる。データ・シンク２１６はデータベース２０６を用いて、データを追跡して装置２０２と同期する。
【００１９】
装置２０２がオンライン又はオフラインである場合、利用者は装置２０２のデータを変更することができる。変更には、既存データの修正、削除、そして、既存データへの新しいデータの追加を行うことを含むことができる。変更はサーバ２０４において認識され、特定の装置２０２について、データ・シンク２１６によってデータベース２０６と同期が行われる。サーバ・プロセスはＸＭＬ（Extensible Markup Language）と、シンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）ｗｅｂサービス変更操作（更新、削除、追加、作成など）を呼び出す。その呼び出しは、適切なＸＭＬ  ｗｅｂサービス・ペイロードのような利用者の変更を用いて、サーバ・データベース２０６で行われる。例えば、ｗｅｂサービスがサーバ２０４におけるデータ管理機能２１４を用いるための準備プロセスの間、管理者又は開発者はｗｅｂサービス変更操作を識別できる。通知登録管理機能２１０を実行すると、それら変更は最終的に、ビジネス・レコード・シンク２１４及びキャッシュ２０８におよぶ。
【００２０】
データ記述／メタデータを含む、ＷＳサーバ２２０におけるｗｅｂサービス記述言語（ＷＳＤＬ）になどよって表されるようなＸＭＬ  ｗｅｂサービスで利用可能なビジネス操作や、ｗｅｂサービスを用いることで、通常は、ビジネス操作がラップされている必要なビジネス・ロジックが取得される。ｗｅｂサービスは操作を提供する。その操作はＷＳＤＬ２２４によって表され、ＷＳ管理機能２１２によって用いられる。それら操作は、ＷＳＤＬ２２４によって表され、検索操作、作成操作、更新操作、削除操作を含むことができ、全体でＱＣＵＤ操作と呼ばれる。検索は通知登録管理機能２１０が定期的にデータに問い合わせできることを示し、さらに、作成操作、更新操作、削除操作も選択可能である。さらに、ｗｅｂサービス・インターフェース２２２を介して、ｗｅｂサービスＱＣＵＤ操作を実行できる。
【００２１】
一つの実施例では、変更はデータベース２０６に報告され、作成される。その後、変更はサーバ２０４のシンクロザイザー２１６を介して装置２０２と同期される。このメカニズムはデータ変更のダウンロードとすることができる。データ・シンク２１６を介した装置２０２に対するデータ変更のダウンロードは、装置２０２がオンライン又は非接続の状態で実行できる。データベース２０６は複数の装置２０２に対応するデータを含む。一方、キャッシュ２０８は一つの装置２０２に対応するデータを含む。時折、非接続となる装置２０２であっても最新を保つことができる。これは、ＷＳサーバ２２０のｗｅｂサービスを介して、公開されたバックエンドのアプリケーションからデータを頻繁に変更するからである。
【００２２】
一つの実施例では、既存データがＷＳサーバ２２０で変更されているとすると、通知登録管理機能２１０はＷＳ管理機能２１２を定期的に用いて、ｗｅｂサービスへデータについての問い合わせを行う。このレスポンスはＷＳＤＬ２２４が表すレコードを含む。レスポンスからこれらレコードの識別及び抽出を行う。その識別及び抽出には所定のレコード境界ＸＭＬパス（ＸＰａｔｈ）を用いる。ＸＰａｔｈはＸＳＬ（Extensible Stylesheet Language）スタイル・シートの下位言語を参照し、そのスタイル・シートは、処理のためにＸＭＬ要素の識別に用いられる。また、スタイル・シートは、数値の計算及び文字列の操作を行うために用いられる。必要に応じて、レコードのプライマリー・キー又はユニーク識別子をＸＰａｔｈが識別する。他の方法では、レコード内容のハッシュとしてプライマリー・キーが計算される。そして、そのレコードは、ビジネス・レコード・シンク２１４に送られ、認識される。さらに、そのレコードは、装置２０２のために変更される。キャッシュ２０８を用いると、装置２０２が現在、どのようなデータを有しているかや、どのような変更がされているかを、ビジネス・レコード・シンク２１４は検知することができる。ビジネス・レコード・シンク２１４はデータ・シンク２１６を用いて、装置２０２へ直近の変更をダウンロードする。
【００２３】
一つの実施例では、サーバ２０４のデータ・シンク２１６を用いて、データの変更は装置２０２と同期され、装置２０２へデータ変更がダウンロードされる。アップロードによって、データ変更のみがダウンロードされ、装置２０２へ全データをダウンロードする必要性が排除される。このメカニズムによって、装置２０２が最新データ又は更新データを維持し続けることを可能にする。これはｗｅｂサービスのバックエンドからの大きいＸＭＬ検索要求レスポンスを連続的に処理しても、装置のプロセッサや帯域幅を独占することなく実行することを示し、データ変更のみについてアップロードやダウンロードが行われる。これにより、時間を消費し、遅延の原因となる大きな全データ更新や小さな追加変更の双方を排除する。さらに、サーバ２０４及び構成要素（通知登録管理機能２１０、ＷＳ管理機能２１２、ビジネス・レコード・シンク２１４、データ・シンク２１６など）は、装置２０２の最新データ及び更新データを維持する。その維持にはプログラムをカスタマイズすることなく任意のエンタープライズ・データのみを用いることで行われる。
【００２４】
図３はビジネス・レコード・シンク２１４の内部構造の実施例を示す。ビジネス・レコード・シンク２１４はキャッシュ２０８、データ・シンク２１６及びデータベース２０６と通信する。データ・シンク２１６はジェネリック・データ・シンク（generic data sync）３１２を備え、そのジェネリック・データ・シンク３１２はデータ・シンク・ネットワーク（data sync network）３１４、データベース２０６のデータ・シンク記憶（data sync storage）３１６及びビジネス・レコード・シンク２１４のレコード管理機能（record manager）３０２と通信する。キャッシュ２０８はビジネス・レコード・キャッシュ（BRCache）３１８を備え、ビジネス・レコード・シンク２１４と通信する。これらは各装置毎に構成する一つのビジネス・レコード・キャッシュ３１８とすることができる。
【００２５】
ＷＳビジネス・レコード（WS business record）３０６はｗｅｂサービス・レスポンスから抽出される。そのＷＳビジネス・レコード３０６は無線装置上に表示又は記憶されているようなレコードを表し、エンタープライズ・データ（アカウント・データ、製品データ、顧客データ、問い合わせ、備考など）の一部を表す。キーはデータベースのプライマリー・キーと同じとみなされ、データベースの各行はビジネス・レコードを表すレコードとすることができる。ｗｅｂサービス検索要求通知登録から、ＷＳビジネス・レコード３０６を識別するキーを抽出する。その識別は、管理者が設定するようなｗｅｂサービス・レスポンス内のｘｐａｔｈによって行うことがきる。設定されていない場合、識別は、ＷＳビジネス・レコード３０６の内容のハッシュとすることができる。ＷＳビジネス・レコード３０６にインデックスを付けるようキーを用いることができる。
【００２６】
ビジネス・レコード３０６をキャッシュするためにキャッシュ２０８が用いられる。そのキャッシュには、各装置又は利用者毎のデータが新規、更新、削除といった状態を維持できる情報を含む。その維持は既存データと変更データを比較することによって行うことができる。そして、キャッシュ・データ内の変更を決定することができる。さらに、ビジネス・レコード３０６のキャッシュはビジネス・レコード３０６を一時的に保存し、パフォーマンスの向上に寄与する。ビジネス・レコード・キャッシュ３１８を優先的に読み取る（遅延生成など）からである。また、一定時間（管理者によって設定可能）使われていないビジネス・レコード３０６は、消去され、メモリ域が確保される。さらに、既に同期済みの内容を含まない代理レコードであることがキャッシュ２０８に記憶されることで、ビジネス・レコード・キャッシュ３１８からビジネス・レコード３０６を消去する必要が無くなる。
【００２７】
利用者は装置によって、検索要求指定を登録できる。その登録は通知登録管理機能を通じて、ビジネス・レコード・グループ関連付け（business record group association）３０４を用いて行い、関連するＷＳビジネス・レコード３０６のグループを識別する。レコード・グループ関連付け３０４は、特定のレコード３０６がどのグループに属しているか又は関連しているかを決定することによって、装置に対応する各キャッシュ２０８内のレコード・データの複製防止に役立たせることができ、る。通知登録管理機能は、各装置毎の多くのグループを管理するのに用いることができる。インターフェースは、レコード３０６に対するグループのレコード・グループ関連付け３０４を更新するために用いられる。
【００２８】
各利用者の空間のために、ＷＳビジネス・レコード・キー・マップ（WS business record key map）３０８は、データ・シンク２１６におけるレコード・キーとそれに関連するデータ識別子（ｄａｔａＩＤ）との双方の関係についてのマッピングを維持する。マッピングは固定の記憶装置内に保存され、開始時に読み取られる。一つの実施例では、レコード・グループ関連付け３０４、レコード・キャッシュ３１０及びＷＳレコード・キー・マップ３０８はレコード管理機能パッケージの外部に対して非公開とすることができる。
【００２９】
一つの実施例では、開始時又は初期化時において、レコード管理機能３０２は、各装置にどのレコード３０６が記憶されているかを検知する。また、初期化時にジェネリック・データ・シンク３１２において利用可能な内容の一部が読み取られる。例えば、以下のような動作を省略したままか回避することができる。（１）各シンクロナイザーのｄａｔａＩＤと各装置毎のレコード・キーとの間のマッピングを読み込む（２）開始時にレコードをいくらか読み取るが、ｄａｔａＩＤとキーのマッピングを信頼することによって読み取りを要求しないことで、シンクロナイザーからの遅延読み取りに役立つ。ハイブリッド・スキーマを採用することができ、シンクロナイザーに書き込まれるまでメモリ内に保持した新規又は更新したレコード内容をハイブリッド・スキーマに保有する。（３）要求に応じて、レコード・グループ関連付け３０４が生成される。例えば、利用者の検索要求通知登録の一部ではないＷＳビジネス・レコード３０６をシンクロナイザーから削除できる場合には、レコード管理機能３０２は問題無く動作が可能である。そして、その削除に応じて、ｄａｔａＩＤとキーのマッピングは分離する。しかし、レコード管理機能３０２は、ｗｅｂサービスからレコード３０６を直接削除することはない。
【００３０】
操作に関して、メモリ内の情報は、それぞれの対応する装置に基づいて維持され、そして、ＷＳビジネス・レコード３０６は、無線装置で複製される。そのようなレコード３０６の複製はより単純な実行及びレコード３０６の同期を可能にすることができる。そして、潜在的な不一致を回避するのに役立つことができる。レコード管理機能３０２は以下のような操作計画をサポートすることができる。（１）作成（ｄａｔａＩＤの作成及び／又は割り当て、そして、ｄａｔａＩＤによって識別されるようなＷＳビジネス・レコード３０６を作成すること）（２）読み取り（各装置毎におけるレコード３０６の直近ヴァージョンにアクセスする）（３）更新（レコード３０６を更新する）（４）グループ更新（ＷＳビジネス・グループ３０６のグループ全体を更新する）。レコード管理機能３０２はレコード３０６の削除操作をサポートするようにもしないようにもできる。例えば、ビシネス・レコード・グループ関連付け３１０を用いて、シンクロナイザーから削除するために、適切なＷＳレコード３０６が識別される。さらに、個々のレコード作成又は更新では、通知登録されていないシステム・グループとして関連付けされているレコード３０６を残すことができ、自動削除を回避する。グループ更新（例えば、UpdateGroup（））メソッドがレコード・グループ関連付け３１０におけるグループに存在するレコード３０６を識別した場合、利用者が定義したグループに対して、レコード３０６が自動的に転送される。
【００３１】
一つの実施例では、各通知登録のために、通知登録管理機能（図２においては通知登録管理機能２１０として示した）はＷＳ管理機能（図２においては２１２）を用いることができ、登録されている検索要求ｗｅｂサービスを呼び出す。ＷＳ管理機能によって、結果はレコードのグループに変換され、レコード管理機能３０２に対してグループ更新操作が発行される。レコード・グループ関連付け３１０を通じて、レコード管理機能３０２は、一又は二以上のグループ内の各ＷＳビジネス・レコード３０６のマッピングを保持する。グループを更新する場合、各装置毎のレコード・キャッシュ３１８は、各レコード３０６毎の以下の一又は二以上の状態を利用者が意識することなく有することができる。（１）新規（サーバに対して、レコード３０６は新規である）（２）更新（変更したレコード３０６の内容はキャッシュ２０８に記憶したものとは異なる）（３）削除（レコード管理機能３０２はレコード３０６が装置に関連付けされているいずれのグループにも存在しないことを決定する）（４）同期（ＩＮ＿ＳＹＮＣはビジネス・レコードが既に装置と同期済みであることを示す）
【００３２】
一つの実施例では、実行の際、グループ更新を発行すると、シンクロナイザーの定期更新又は即時更新が実行される。キャッシュのために、遅延読み取りを行うと、ＷＳレコード・キー・マップ３０８を参照して、レコードが新しいか新しくないかを決定する。そのＷＳレコード・キー・マップ３０８はレコードを有しているのが装置であるのかキャッシュであるのかを示すことができる。装置が既に特定のレコードを有している場合、レコードは読み取られ、比較される。そして、レコードが新規であるか、同一であるか又は、更新するかが決定される。レコードが同一である場合、ＩＮ＿ＳＹＮＣ状態であることをキャッシュに書き込むことができる。その他の場合、レコードは、更新され、装置に送信される。
【００３３】
新しいグループ識別子（ｇｒｏｕｐＩＤなど）でグループ更新が呼出された場合、レコード・グループが自動的に作成される。その後の、同一ｇｒｏｕｐＩＤへの更新は、必要又は要求に応じて装置に対して自動的に実行される。グループを削除すると、レコードを伴わずにグループ更新を呼び出すことで、装置上のデータ削除が実行される。レコード管理機能３０２はシンクロナイザーの代わりの役割を果たすことができ、その役割はＷＳビジネス・レコード３０６の作成操作、読み取り操作、更新操作である。レコード管理機能３０２は様々な構成要素３０６乃至３１０及びそれらの操作を用いることができ、その機能を実行するのに役立つ。
【００３４】
更新を表すデータ変更については、レコード・シンク２１４は即時に更新を行う。レコード・シンク２１４は非同期の作成操作及び非同期の更新操作も提供する。削除を表すデータ変更については、レコード・シンク２１４は即時に更新を行わない可能性がある。なぜならば、装置は、いずれかのレコード３０６を意味する複数の検索要求通知登録を有しており、グループとは別にレコードが生成される。よって、レコードは既に他の通知登録によって生成されている可能性があるからである。したがって、削除操作のレコードを取得するため、遅延ガーベジコレクションが採用でき、いずれのグループにも関連していないレコード３０６は即時に削除することができる。
【００３５】
レコード・シンク２１４はレコード・キーの生成の実装に依存しないようにすることができるが、整合性に関して、一つのサーバについて、一つの標準的な実装を用いることができる。レコード・キーの生成のために複数のパラメータを用いることができる。例えば、型（ｔｙｐｅ＝Ａｃｃｏｕｎｔとするなど）及びキー内容（ｋｅｙ  ｃｏｎｔｅｎｔ  ＝  ＜ＡｃｃｏｕｎｔＩＤ＞３４５３４０９７３４５＜／ＡｃｃｏｕｎｔＩＤ＞とするなど）を採用することができる。あるいは、型及びキー内容を結合して一つにしてもちいることができる（ｋｅｙ＝Ａｃｃｏｕｎｔ： ３４５３４０９７３４５とするなど）。さらに、レコード内容が利用可能であることから、全てのデータ内容に基づいたハッシュ・コードをキーとして作成できる。その場合、レコード内容の変更は、シンクロナイザーにおいて一組の追加操作と削除操作を行う。それは、新しいレコードを作成し、古いレコードを削除することである。また、ハッシュ・コードはキーを用いて生成することができ、利用者の定義したキー内容及び他のレコード内容を含む。このメカニズムは、さらに同一の効果と効率を維持しつつ、単純なキーマップデータベースを持つことを可能にする。開発者／管理者は妥当なキー・サイズを持たせて、キーの定義を選択できる。
【００３６】
ＷＳビジネス・レコード・キー・マップ３０８は各装置毎のレコード・キー及びｄａｔａＩＤ間の関連を保持することができ、ＷＳビジネス・レコード・キー・マップ・インターフェース３２０を介して保持する。初期化時にＷＳレコード・キー・マップ３０８を保存し読み取る。シンクロナイザーは利用者が意識することなくこのマッピングを保持し、シンクロナイザー内の実データと一致する適切な追加及び削除を行う。レコード・キー・マップ３０８のサイズはサーバ利用毎のマップ・サイズに基づく方法を用いて決定することができる。例えば、装置の数、利用者が定義するキー・サイズの平均、ハッシュベースのキー・サイズ、各装置が保持するレコード数の平均、各マップ登録のｄｅｔａＩＤサイズ及びそれらと同等なもの。さらに、このメカニズムは柔軟にすることができ、それは、効果的な性能水準を落とすことなく要求又は目標にシームレスに対応できる。また、サーバと互換性及び調和性を有するデータベースが用いられる。ＷＳビジネス・レコード３０６はインターフェース３２２を備え、レコードへのアクセスを可能にする。インターフェースはまた他の構成要素へのアクセスを可能にする。それらはジェネリック・データ・シンク３１２のインターフェース３２４、データ・シンク記憶装置３１６のインターフェースなどである。
【００３７】
図４はデータ変更のダウンロード及びアップロードのためのプロセスを示す。処理ブロック４０２において、データ変更又はデータ変更のためのリクエストをサーバで受け取る。データ変更はデータ処理装置における利用者によって処理が開始され、ネットワーク上でサーバに送信される。一つの実施例では、サーバにおいて、データ変更のためのリクエストを受信する。装置の既存データを変更する利用者の操作によって、データ変更のためのリクエストが開始する。サーバで受信したリクエストは利用者が装置で要求したデータ変更を表す。処理ブロック４０４では、サーバにおいてデータ変更を個々に識別する。各レコードの識別は、ＷＳＤＬに含まれる記述又はメタデータ、及び、ｗｅｂサービス検索要求を用いて、レコード毎のキーによって行われる。その識別は、既存データに対して、変更するタイプを識別する（追加、削除、変更、作成など）ことを含む。例えば、既存データに対して新しいデータを作成するか、追加するか及び／又は変更するかなどである。それら変更は、ＱＣＵＤ操作として表すことができ（検索操作、作成操作、更新操作、削除操作など）、ｗｅｂサービスによって提供され、ｗｅｂサービス・サーバのＷＳＤＬに記載されている。サーバのＷＳ管理機能によって、これらＱＣＵＤ操作が用いられる。サーバ・キャッシュにデータ変更が記憶される。
【００３８】
判断ブロック４０６において、識別は、データ変更においてサーバで解決できない不一致が存在するか否かを決定することを含む。不一致は、他のデータ変更及び／又は一又は二以上のサーバ・キャッシュに既存データ、データベース・サーバー及び／又は装置と調整することができないデータ変更とすることができる。不一致が存在する場合、処理ブロック４１２において、装置の既存データを手動で調整するために不一致のダウンロードが装置へ向けて行われる。例えば、不一致は、一又は二以上の不適切な変更、不正確な変更、受け入れられない変更、理解不能な変更、時期が不当である変更（例として、データの一部が存在しないデータの変更、システムの制限によって登録できない変更など）などに起因するデータ変化（レコードなど）とすることができる。例えば、利用者Ａ及びＢがそれぞれの装置で共通の既存データに対して異なる変更をした場合などである。
【００３９】
ここで、装置Ａが２時間オフラインで、利用者Ａがデンバーからロスアンジェルスに飛行機で移動したとする。一方、装置Ｂがオンラインで利用者Ｂが使用したとする。そして、明らかとなるように、他の複雑な問題又は他のリクエストの実行が無いと仮定すると、この場合、利用者Ｂによるデータ変更はサーバで受信され、装置Ｂにダウンロードされる。そして、装置Ａは不一致又は不一致の通知を受信する。利用者Ａは装置Ａ上で変更を組み入れることを選択でき、又は、利用者Ｂのデータ変更を提案されている変更又は新しい変更に上書きし、又は、装置Ａにおいて装置Ｂの変更を単純に手入力することを選択できる。
【００４０】
判断ブロック４０６を参照すると、不一致が存在しない場合、一つの実施例では、データ変更をアップロードする４０８。データ変更のアップロードは、ＱＣＵＤ操作を考慮して、データ変更をｗｅｂサービス・サーバと調整することを含む。ＱＣＵＤ操作はｗｅｂサービス及びＷＳＤＬの記述によって用いられる。ｗｅｂサービス・サーバと調整されたデータ変更、又は、ｗｅｂサービス・サーバへアップロードされたデータ変更は、装置の既存データの変更のみを示し、全てのデータをアップロードする必要は無い。データ変更はサーバ・データベースと調整され記憶される。一つの実施例では、一つのサーバのキャッシュを一つの無線装置に配置又は対応させることができる。そして、その一つのサーバのキャッシュは装置に存在するデータを含むことができる。一つの実施例では、サーバ・データベースは、幾つかの無線装置又は全ての無線装置と一致させることができる。その無線装置はサーバと通信する。そして、サーバ・データベースはそれら全ての装置に存在する全てのデータを含むことができる。
【００４１】
一つの実施例では、処理ブロック４１０においてデータ変更がダウンロードされる。装置へのデータ変更ダウンロードはオンライン、オフライン、接続、非接続の間、実行することができる。ダウンロードは装置の既存データとデータ変更を同期することを含み、既存データは更新され、最新となる。装置とのデータ変更の同期はデータ・シンクロナイザーを用いて行われ、レコード・シンクロナイザーがデータ変更をデータ・シンクロナイザーに通知する。さらに、装置へのデータ変更の提示、データ変更の受け入れ、データ変更の識別、不一致の決定、データ変更のアップロード、キャッシュ及びデータベースにおけるデータ変更の記憶、及び不一致の際のダウンロードは、また、オンライン、オフライン、接続、非接続の間、実行することができる。例えば、装置がオンラインの場合、装置を介し利用者によって、データ変更のリクエストを実行できる。しかし、装置へのデータ変更のダウンロード又は同期は、装置がオフライン又は非接続の間でも行われる。同様に、不一致は装置がオンラインであるときに利用者が手動で行えるが、装置がオフライン又は非接続である場合、装置に対して不一致であることを事前に通知することで対応できる。
【００４２】
図５は装置１３０及び／又はサーバ１３０を実装するコンピュータ・システム５００を示す。コンピュータ・システム５００は情報通信のためシステム・バス５２０を備え、情報処理のためバス５２０に接続するプロセッサ５１０も備える。一つの実施例によると、多数のプロセッサの一つを用いて、プロセッサ５１０を実装する。そのプロセッサはマイクロプロセッサであるモトローラＡＲＭファミリーのプロセッサとすることができる。他のプロセッサを用いることが可能であることは、当業者であれば容易に理解できる。
【００４３】
コンピュータ・システム５００はさらに、ランダム・アクセス・メモリ（ＲＡＭ）又は動的記憶装置５２５（ここではメイン・メモリとして示す）を備え、そのメモリはバス５２０に接続され、プロセッサ５１０が実行する情報及び指示を記憶する。プロセッサ５１０が処理を実行する間、メイン・メモリ５２５は一時的な変更情報又は他の中間情報を保存するためにも用いることができる。コンピュータ・システム５００はまた、読み出し専用メモリ（ＲＯＭ）及び／又は他の静的記憶装置５２６を備えることができる。そのメモリはバス５２０に接続され、プロセッサ５１０が用いる静的情報及び指示を記憶する。
【００４４】
データ記憶装置５２５はコンピュータ・システム５００に接続することができ、情報及び指示を記憶する。そのデータ記憶装置５２５は磁気ディスクや光学ディスクそして、それらに相当するドライブとすることができる。コンピュータ・システム５００は、Ｉ／Ｏインターフェース５３０を介して、第２のＩ／Ｏバス５５０に接続することができる。複数のＩ／Ｏ装置はＩ／Ｏバス５５０に接続することができ、表示装置５２４や入力装置（英数字入力装置５２３及び／又はカーソル制御装置５２２）を備える。
【００４５】
通信装置５２１はネットワーク１７０を介して他のコンピュータ（サーバ又はクライアント）にアクセスする。通信装置５２１はモデム、ネットワーク・インターフェース・カード又は他の既知のインターフェース装置を備えることができ、イーサネット（登録商標）、トークン・リングやその他のネットワークに接続する。
【００４６】
本発明の実施例は上記で説明したような様々なステップを備えることができる。そのステップは指示を実行可能な機械で用いることができる。汎用目的のプロセッサや特定の目的のプロセッサが特定のステップを処理するよう、その指示を用いることができる。そして、特定のハードウエア構成要素によって、それらステップを実行することができ、そのハードウエア構成要素はステップを実行するためのハードウエア・ロジックやプログラム済みコンピュータ構成要素の組み合わせ、カスタマイズしたハードウエア構成要素を含む。
【００４７】
本発明の要素は機械が読み取り可能な媒体によって提供することができ、その媒体は機械が実行可能な指示を記憶する。機械が読み取り可能な媒体にはフロッピー（登録商標）・ディスクや光学ディスク、ＣＤ−ＲＯＭ、磁気光学ディスク、ロム、ラム、ＥＰＲＯＭ、ＥＥＰＲＯＭ，磁気または光学カード、伝播メディア、その他電子的な指示を記憶するのに適したメディア／媒体を含み、これらに制限もしない。例えば、本発明はコンピュータ・プログラムによってダウンロードすることができ、そのコンピュータ・プログラムはリモート・コンピュータ（サーバ）からリクエストしたコンピュータ（クライアント）に送信することができる。その送信は通信リンク（モデム、ネットワーク接続など）を介して通信搬送波又は他の伝播メディアを用いたデータ信号を通じて行われる。
【００４８】
上記説明を通して、説明の目的のために、本発明を理解する目的のために、多くの特定の説明を用いた。しかし、当業者であれば、いくつかの特定の説明を用いることなく実施することは可能である。例えば、サーバ１０３で実行するサービス１０２にインターフェース１００を説明したが（図１参照）、本発明の原理の理解では、クライアントがネットワーク上にデータを送信し、単一クライアント上に実装できることが分かる。そして、本発明の範囲及び思想は請求項の用語で判断すべきである。
【図面の簡単な説明】
【００４９】
【図１】本発明の要素を実装するネットワークの実施例を示す。
【図２】無線装置の最新データを維持するためのアーキテクチャーの実施例を示す。
【図３】ビジネス・レコード・シンクロナイザーの内部構造の実施例を示す。
【図４】データ変更のダウンロード及びアップロードのための処理を示す。
【図５】コンピュータ・システムの実施例を示す。
【図１】
0005193056.tif 000002
【図２】
0005193056.tif 000003
【図３】
0005193056.tif 000004
【図４】
0005193056.tif 000005
【図５】
0005193056.tif 000006