(57)【要約】  オフラインアプリケーションをオンラインアプリケーションと同期化するクエリベースのシステムのための方法、システム、およびユーザインターフェースが開示される。クエリは、オフラインユーザが更新されることを望む限定されたデータのみを識別するために、ユーザによる定義が可能であり、そのクエリを満たすデータは、オンラインアプリケーションにおいて、同期化ファイル内に記憶することができる。オフラインデバイスへの同期化ファイルの送信が成功すると、オンラインシステムにおける同期化ファイルと、オンラインシステムにおけるオフラインアプリケーションのステータスファイルとを更新して、その成功した更新を反映することができる。
2009500749.tif 000002
【特許請求の範囲】
【請求項１】
オンラインデバイスと、オフラインデバイスとの間で同期化されるデータを定義する方法であって、
データソースからデータのサブセットを選択するためのクエリを作成するステップと、
前記データのサブセットをメモリに記憶するステップと、
前記データのサブセットを前記オフラインデバイスに送信するステップと、
前記オンラインデバイスにおいて、前記オフラインデバイスのステータスファイルを更新するステップであって、前記オフラインデバイスの前記ステータスファイルは、前記オフラインデバイスの更新されたステータスを記憶する、更新するステップと
を備えることを特徴とする方法。
【請求項２】
予め定義された複数のクエリからクエリを選択するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記オンラインデバイス上には存在し、かつ前記オフラインデバイス上には存在しないデータを収集するためのクエリを使用するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記オンラインデバイス上のデータと、前記オフラインデバイスの前記ステータスファイル内に記憶されたデータとを比較するクエリを使用するステップと、
前記オンラインデバイス上に存在する新規なデータであって、かつ前記オフラインデバイスの前記ステータスファイルにより前記オフラインデバイス上には存在しないものとして示される前記新規なデータを用いて、前記オフラインデバイスを更新するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記データは顧客関係管理（ＣＲＭ）データであることを特徴とする請求項１に記載の方法。
【請求項６】
前記クエリを、ＣＲＭデータベースに対して実行されるフェッチステートメントに変換するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
選択された前記データのサブセットを同期化ファイル内に記憶するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
更新されたデータが前記同期化ファイルに追加されると直ちに、前記同期化ファイルを前記オフラインデバイスに送信するステップ
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記同期化ファイルを、ユーザにより変更可能なサイズのパッケージに分離するステップ
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項１０】
前記同期化ファイルを、使用される通信チャネルにおいて適切なサイズのパッケージに分離するステップ
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項１１】
前記オフラインデバイスへの前記同期化ファイルの送信が成功すると、前記オフラインデバイスに送信されたデータは、前記オフラインデバイスにとって新規なデータではないことを示すために、前記同期化ファイルを更新するステップ
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項１２】
異なるエンティティ群に対して、異なるクエリ群を作成することを可能にするステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１３】
前記オフラインデバイスの前記ステータスファイルはデータベースファイルであることを特徴とする請求項１に記載の方法。
【請求項１４】
前記ステータスファイルの生成は、前記データベーステーブルにおける、削除されたレコードのマージと、更新されたレコードのマージと、挿入されたレコードのマージとを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
特定にユーザ群に対して、独自のクエリ群を作成することを可能にするステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１６】
オンラインデバイスと、オフラインデバイスとの間で同期化されるデータを識別するクエリを作成するためのコンピュータ実行可能コードを記憶するように適合されたコンピュータ読み取り可能な媒体であって、
前記コンピュータ実行可能コードは、
データソースからデータのサブセットを選択するためのクエリを作成するコンピュータコードであって、該クエリは、前記オンラインデバイス上のデータと、前記オフラインデバイスのステータスファイル内に記憶されたデータとを比較し、前記オフラインデバイスの前記ステータスファイルは、前記オフラインデバイスの更新されたステータスを記憶する、クエリを作成するコンピュータコードと、
前記データのサブセットを同期化ファイル内に記憶するコンピュータコードと、
該同期化ファイルを前記オフラインデバイスに送信することによって、前記オフラインデバイスの前記ステータスファイルにより前記オフラインデバイス上には存在しないものとして示されるデータを用いて、前記オフラインデバイスを更新するコンピュータコードと、
前記オンラインデバイスにおいて、前記オフラインデバイスの前記ステータスファイルを更新するコンピュータコードと
を備えたことを特徴とするコンピュータ読み取り可能な媒体。
【請求項１７】
前記コンピュータ実行可能コードは、
前記オフラインデバイスへの前記同期化ファイルの送信が成功すると、前記同期化ファイル内のデータが前記オフラインデバイスに送信されたことを示すために、前記同期化ファイルを更新するコンピュータコード
をさらに備えたことを特徴とする請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１８】
前記コンピュータ実行可能コードは、
前記同期化ファイルを、使用される通信チャネルにおいて適切なサイズのパッケージに分離するコンピュータコード
をさらに備えたことを特徴とする請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
ビデオイメージを生成することができるディスプレイユニットと、
入力デバイスと、
前記ディスプレイユニットおよび前記入力デバイスに動作可能に接続された処理装置であって、該処理装置は、プロセッサと、該プロセッサに動作可能に接続されたメモリとを含む、処理装置と、
ネットワークおよび前記処理装置に接続されたネットワークインターフェースと
を備え、
前記処理装置は、
データソースからデータのサブセットを選択するためのクエリを作成し、ここで、該クエリは、オンラインデバイス上のデータと、オフラインデバイスのステータスファイル内に記憶されたデータとを比較し、前記オフラインデバイスの前記ステータスファイルは、前記オフラインデバイスの更新されたステータスを記憶し、
前記データのサブセットを同期化ファイル内に記憶し、
該同期化ファイルを前記オフラインデバイスに送信することによって、前記オフラインデバイスの前記ステータスファイルにより前記オフラインデバイス上には存在しないものとして示されるデータを用いて、前記オフラインデバイスを更新し、
前記オンラインデバイスにおいて、前記オフラインデバイスの前記ステータスファイルを更新し、
前記オフラインデバイスへの前記同期化ファイルの送信が成功すると、選択されたデータが前記オフラインデバイスに送信されたことを示すために、前記同期化ファイルを更新する
ようにプログラムされていることを特徴とするコンピューティング装置。
【請求項２０】
前記処理装置は、
前記同期化ファイルを、使用される通信チャネルにおいて適切なサイズのパッケージに分離するために、前記同期化ファイルを更新する
ようにさらにプログラムされていることを特徴とする請求項１９に記載のコンピューティング装置。
【発明の詳細な説明】
【背景技術】
【０００１】
世界がよりモバイル化するにつれ、永続的にネットワークに接続されるコンピュータシステムおよびアプリケーションのユーザは、どんどん少なくなってきている。非常によくあることとして、ユーザは、折に触れ所望のネットワークにログインし、オフラインシステムをオンラインシステムと同期化する。別の状況では、ユーザは、無線によりネットワークにアクセスする場合がある。無線接続では、品質および速度が変化する可能性があり、この品質の変化には、無線ネットワークにおける完全なデータの欠落が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
有線および無線の両方の状況において、オンラインシステムに存在し、かつオフラインシステムには存在しないデータの量は、非常に大量である場合があり、たとえ高速接続をもってしても、こうしたデータを同期化するのに、膨大な時間を要する場合がある。さらに、オフラインユーザは、あるアプリケーションに関する更新されたデータのみを受信したい場合があり、オンラインシステム上の新規と考えられるデータの全てを必要としない場合がある。
【課題を解決するための手段】
【０００３】
オフラインアプリケーションをオンラインアプリケーションと同期化するクエリベースのシステム（query based system）のための方法、システム、およびユーザインターフェースが開示される。クエリは、オフラインユーザが更新されることを望む限定されたデータのみを識別するために、ユーザによる定義が可能である。そのクエリは、ＳＱＬクエリに変換することができ、例えば、ＣＲＭデータベースに対して、そのＳＱＬクエリを実行することができる。オンラインシステムは、データベーステーブルとすることができる、データのファイルを保持することができ、このファイルは、オフラインユーザが更新されることを望むデータにおける、ユーザにより定義されたクエリ群と対応する。更新されたファイルは、オフラインアプリケーションがオンラインアプリケーションとの通信を確立するとき、所与の時間間隔の間、または、オンラインアプリケーションにおいてある量の新規データが生成されるときはいつでも、などの様々な条件下で、オフラインデバイスに送信することができる。同期化ファイルは、通信方法に応じて、適切なサイズのパケットに分割することができる。加えて、ファイルは、オフラインシステムの現在の更新状況を追跡するオンラインシステム上で、保持されたままの状態に保つことができる。オフラインデバイスへの同期化ファイルの送信が成功すると、オンラインシステムにおける同期化ファイルと、オンラインシステムにおけるオフラインアプリケーションのステータスファイルとを更新して、その更新を反映することができる。
【発明を実施するための最良の形態】
【０００４】
以下の記載において、多種多様な実施形態の詳細について説明するが、この説明の真の範囲は、特許請求の範囲に記載した用語によって定義されることを理解されたい。この詳細な説明は、例示的なものとして意図しているに過ぎず、全ての可能な実施形態について記載しているわけではない。というのは、全ての可能な実施形態について記載することは、不可能ではないにしても、現実的ではないからである。既存の技術、または本出願の出願日よりも後に開発された技術のいずれかを用いて、多数の代替実施形態を実装することができるが、これらの代替実施形態も、特許請求の範囲に属するものである。
【０００５】
ある用語が、“本明細書で使用される用語「＿＿＿＿」は、「．．．．」を意味するものとして、本明細書では定義される”という文、または同様の文を用いて、本願において明示的に定義されない限り、その用語は、明示的なものを意味するものでも暗示的なものを意味するものでもなく、その用語の平明な意味、または通常の意味を越えたものであり、その用語の意味を限定する意図はないことも理解されたい。また、そのような用語は、（特許請求の範囲の言葉以外の、）本明細書の任意のセクションに記載された任意の文に基づいて、範囲が限定されるものと解釈すべきではない。本願では、読者を混乱させないよう簡潔にする目的で記載された単一の意味と矛盾しない限りにおいて、特許請求の範囲に記載された全ての用語は広がりを有するものである。このような特許請求の範囲に記載された用語は、暗示によっても、そうでなくとも、その単一の意味に限定されるべきと意図するものではない。最後に、請求項に記載の構成要素が、「手段」という用語、および全く構成の記載のない機能表現を記載することによって定義されていなければ、請求項におけるいずれの構成要素の範囲も、３５Ｕ．Ｓ．Ｃ．第１１２条第６項の適用に基づいて解釈されるべきと意図するものではない。
【０００６】
図１は、特許請求する方法のステップ、および装置を実装可能な、好適な例示的コンピューティングシステム環境１００を示している。コンピューティングシステム環境１００は、好適なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲についていかなる限定を示唆するようにも意図されてはいない。同様に、コンピューティング環境１００は、例示的な動作環境１００に示された任意の１つのコンポーネントまたはコンポーネントの組合せに関して、いかなる依存関係または要件を有するようにも解釈するべきではない。
【０００７】
特許請求する方法のステップ、および装置は、多数の他の汎用または特殊用途コンピューティングシステム環境、またはコンピューティングシステム構成とともに動作可能である。特許請求する方法および装置とともに使用するのに適した周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例として、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などがある。
【０００８】
特許請求する方法のステップ、および装置は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストにおいて説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、オブジェクト、コンポーネント、データ構造などを含む。本方法および本装置は、通信ネットワークを介して接続されるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において、実装することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体の両方に配置させることができる。
【０００９】
図１を参照すると、特許請求する方法のステップ、および装置を実装するための例示的なシステムは、コンピュータ１１０の形態をとる汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、処理ユニット１２０と、システムメモリ１３０と、システムメモリ１３０を含む様々なシステムコンポーネントを処理ユニット１２０に接続するシステムバス１２１とを含めることができるが、これらに限定されるものではない。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数のタイプのいずれのバス構造であってもよい。そのようなアーキテクチャには、ＩＳＡバス、ＭＣＡバス、ＥＩＳＡバス、ＶＥＳＡローカルバス、および、メザニンバスとしても知られるＰＣＩバスが含まれるが、これらに限定されるものではない。
【００１０】
通常、コンピュータ１１０は、様々なコンピュータ読み取り可能な媒体を備える。コンピュータ読み取り可能な媒体は、コンピュータ１１０によってアクセスできる任意の入手可能な媒体とすることができ、コンピュータ読み取り可能な媒体には、揮発性媒体および不揮発性媒体、ならびに取り外し可能な媒体および取り外し不可能な媒体のいずれもが含まれる。コンピュータ読み取り可能な媒体には、コンピュータ記憶媒体および通信媒体を含めることができるが、これらに限定されるものではない。コンピュータ記憶媒体には、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術で実現された揮発性媒体および不揮発性媒体、ならびに取り外し可能な媒体および取り外し不可能な媒体のいずれもが含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリ技術、ＣＤ  ＲＯＭ、ＤＶＤ、もしくはその他の光ディスク記憶デバイス、磁気カセット、磁気テープ、磁気ディスク記憶デバイス、もしくはその他の磁気記憶デバイス、または所望の情報を記憶するために使用でき、かつコンピュータ１１０によってアクセスすることができる任意のその他の媒体が含まれるが、これらに限定されるものではない。通常、通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波やその他の搬送機構などの変調されたデータ信号として具現化したものであり、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、信号内の情報を符号化するような方法で、その信号の１つまたは複数の特徴が設定または変更された信号を意味する。通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体とが含まれるが、これらに限定されるものではない。このような媒体の任意の組合せもコンピュータ読み取り可能な媒体の範囲に含まれるべきである。
【００１１】
システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２などの揮発性メモリおよび／または不揮発性メモリの形態をとるコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送することに役立つ基本的なルーチンを含むＢＩＯＳ１３３は一般に、ＲＯＭ１３１に記憶される。通常、ＲＡＭ１３２には、処理ユニット１２０によって直ちにアクセスでき、かつ／または、処理ユニット１２０によって現在操作されているデータおよび／またはプログラムモジュールが含まれる。例えば、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されるものではない。
【００１２】
コンピュータ１１０は、その他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体を備えてもよい。例として、図１には、取り外し不可能な不揮発性磁気媒体に対して読み書きを行うハードディスクドライブ１４１と、取り外し可能な不揮発性磁気ディスク１５２に対して読み書きを行う磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭまたはその他の光媒体などの取り外し可能な不揮発性光ディスク１５６に対して読み書きを行う光ディスクドライブ１５５とが示されている。例示的な動作環境において使用することができるその他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は一般に、インターフェース１４０などの取り外し不可能なメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などの取り外し可能なメモリインターフェースを介してシステムバス１２１に接続される。
【００１３】
図１に示して上述したドライブ群およびそれらドライブに関連するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびその他のデータの記憶領域をコンピュータ１１０に提供する。例えば、図１において、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであってもよいし、異なってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７は、少なくともそれらが別のコピーであることを示すために、ここでは異なる番号が付されている。ユーザは、キーボード１６２や、一般的にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０に命令および情報を入力することができる。その他の入力デバイス（図示せず）としては、マイクロホン、ジョイスティック、ゲームパッド、衛星通信用パラボラアンテナ、スキャナなどを挙げることができる。これらのおよびその他の入力デバイスは、システムバス１２１に接続されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、またはＵＳＢなどのその他のインターフェースおよびバス構造を介して接続されてもよい。モニタ１９１またはその他のタイプのディスプレイデバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１に加えて、コンピュータは、出力周辺インターフェース１９５を介して接続することができる、スピーカ１９７およびプリンタ１９６などのその他の出力周辺デバイスを備えることもできる。
【００１４】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、図１には、メモリ記憶デバイス１８１のみが示されているが、リモートコンピュータ１８０は通常、コンピュータ１１０に関して上述した要素の多くまたは全てを含む。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、その他のネットワークが含まれてもよい。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００１５】
ＬＡＮネットワーキング環境において使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用される場合、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、またはその他の手段を備える。モデム１７２は、内蔵型でも外付け型でもよく、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境において、コンピュータ１１０に関連して示したプログラムモジュール、またはそのプログラムモジュールの一部は、リモートメモリ記憶デバイスに記憶することもできる。例えば、図１には、メモリデバイス１８１に存在するものとしてリモートアプリケーションプログラム１８５が示されているが、これに限定されるものではない。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが理解されよう。
【００１６】
図２は、本特許請求の範囲にしたがう方法を示している。ブロック２００で、データ同期化要求を受信することができる。このデータ同期化要求は、様々な方法で受信することができる。同期化は、継続時間に基づくものとすることができる。例えば、無線接続を介してオフラインデバイスに到達することができる場合、データ同期化要求は、周期的に生成することができるので、データは、周期的に送信することができる。同期化要求は、ユーザによって生成することも可能である。例えば、顧客関係管理システムのユーザは、リモートコンピュータからログインすることができ、そのログインによって、データ同期化要求をトリガすることができる。別の例では、あるデータの変更が、データ同期化要求のトリガとなり得る。さらに別の例は、予め定められた量の新規データが収集されたときに、同期化要求がトリガされ得ることである。その他のトリガもあり得ることは言うまでもない。
【００１７】
ブロック２０５で、この方法により、フィルタまたはクエリをロードすることができる。このクエリは、ユーザによって定義することができる。オフラインユーザは、最近までオンラインだった場合、その後にオンラインアプリケーションに追加された全てのデータを受信する必要はない場合がある。したがって、ユーザは、オフラインユーザが更新されることを望むデータを取得するクエリを定義することができる。例えば、ユーザは、そのユーザの顧客が新たな注文書を発行したときに、顧客関係管理（「ＣＲＭ」）アプリケーションから、知りたいことを望む場合がある。ユーザは、会社が受注した全ての注文書を知る必要がない場合があるが、そのユーザの顧客から発行された注文書だけを知る必要がある場合がある。そのユーザは、オフラインになる前に最近の更新を受信した後の、そのユーザの顧客から発行された注文書の全てを返すクエリを定義することができる。さらに広範なクエリは、オフラインデバイスにおける最近の更新の後にオンラインデバイスに追加されたオンラインデバイスに関する全ての情報とともに、オフラインデバイスに関する全ての情報を更新するものとすることができる。ユーザが定義できるクエリの種類および量は、実質的に無限である。別の例として、ＣＲＭオフラインユーザは、５千万ドルといった、ある閾値を超える全ての新規注文に関するデータを取得するためのクエリを作成することができる。この情報は、任意の所望の情報とすることができ、この情報には、通常は大きすぎて同期化することができない顧客関係管理（ＣＲＭ）システムの情報が含まれる。
【００１８】
別の実施形態では、予め定義された複数のクエリの中から、クエリを選択することができる。この予め定義された複数のクエリは、ソフトウェアベンダによって提供される場合もあるし、別のユーザによって作成されたテンプレートである場合もある。ユーザは、これらの予め定義されたクエリを変更して、さらに、ユーザ自身のニーズを満たすことができる。
【００１９】
クエリは、従来型であるトップダウン形式で作成されてもよいし、ボトムアップ形式で作成されてもよい。ボトムアップ形式のクエリは、階層に基づくオフラインデータを、より簡単に絞り込むことができる。例えば、「私が所有する全てのアカウントと、そのアカウントに関連付けられたあらゆるレコードとを提供してください。しかしながら、私は、ここ１年よりも古いセールスオーダ、クローズされたサービス案件、．．．．を望んではいません（Give me all accounts that I own and any records associated with that account. But I don't want any sales orders older than a year old, closed service incident ....）」といったようなトップレベルのクエリを作成するのではなく、ユーザは、自身がどのようなアカウントを望むかを定義して、親レコードの存在に基づいて、子レコードのクエリ内で分節（clause）を使用することができる。例えば、アカウントクエリが、「私が所有する全てのアカウントを提供してください（Give me accounts that I own）」を示すものとする。すると、セールスオーダクエリ（sales order query）は、「私が親アカウントもダウンロードしているここ１年未満のセールスオーダを提供してください（Give me sales orders that are less than a year older where I'm also downloading the parent account）」となる。
【００２０】
図３に示されるように、ユーザがいかなるプログラミング言語やＳＱＬコードも知っていることを必要としない単純なユーザインターフェースを使用して、クエリを作成することができる。例えば、クエリのリストを表示して、今後の同期化の一部分となるように、クエリのリストから選択（３１０）することができる。図４は、ポップアップし得るより詳細なスクリーンであって、図３の選択されたクエリ３１０をさらに変更することが可能なより詳細なスクリーンを示している。図５は、図４に表示されたポップアップウィンドウのディスプレイである。図５は、ユーザ（５０５）が、当該ユーザ（５０５）により有することを望むアポイントメント（appointment）と、アカウント（５１０）に関連するあらゆるアポイントメント、または（５２０）、当該ユーザがダウンロードしている当該ユーザの連絡先（５１５）とを示している。ここで、当該ユーザは、最近（５４０）３０日（５５０）以内に変更されて（５３０）同期化されたアポイントメント（５２５）における参加者である。ユーザが作成できるクエリの数は常に無限であることは言うまでもない。別の例では、ウィザードまたは新たなウィンドウを表示して、ユーザがクエリを設計するにあたって、ユーザを支援することができる。
【００２１】
クエリは、アプリケーションのユーザごとに定義することができる。例えば、会社Ａの各営業部員は、独自のクエリを有することができる。加えて、クエリは、さらに分離することができる。例えば、ある営業部員は、５千万ドルを超えた顧客Ａに関する全ての売上について更新を望む場合もあるし、５千万ドルを超えた顧客Ｂに関する全ての売上について更新を望む場合もある。
【００２２】
図２を再度参照すると、ブロック２１０で、フィルタをＳＱＬクエリに変換することができる。ＳＱＬクエリを作成することに熟練しているアプリケーションユーザはそれほど多くいないので、この変換は、この方法により自動的に実行することができる。クエリは、定められたオプションのセット（例えば、よく知られた名前や、「〜より多い」、「〜より少ない」といったよく知られた判定基準など）を用いて作成することができる。また、クエリは、ＣＲＭデータベースなどのデータベースに対して発行されるフェッチコマンド（fetch command）とすることができる。
【００２３】
ブロック２１５で、所望のデータベースに対してＳＱＬステートメントを実行することができる。前述したように、データベースは、ＣＲＭデータベースとすることができ、ＳＱＬステートメントは、ブロック２０５でユーザにより作成されたクエリをＳＱＬに変換したものとすることができる。所望のデータ、およびその他のソースのデータを取得する別の方法も可能である。
【００２４】
ブロック２２０で、ＳＱＬステートメントの結果をファイルに記憶することができる。このファイルは、同期化ファイルとすることができる。一例として、ブロック２０５におけるクエリが、オフラインの営業部員の顧客により発行された新規注文書の全てを要求した場合、最近の同期化ファイルより後の、当該オフラインの営業部員の顧客により発行された当該新規注文書の全てをファイルに記憶することができる。一例として、ファイルは、テーブルとしてもよい。しかし、同期化ファイルは、オンラインアプリケーションおよびオフラインアプリケーションの双方がファイル内のデータを認識する限り、実質的にどのようなフォーマットでもよい。同期化ファイルがテーブルであった場合、従来のＳＱＬステートメントを使用して、そのテーブルを作成することができる。例えば、マージコマンド（merge command）を使用して、削除されたレコードと更新されたレコードとを、同期化ファイルに追加することができる。さらに、インサートコマンド（insert command）を使用して、新規レコードを同期化ファイルに挿入することができる。
【００２５】
ブロック２２５で、同期化ファイルをオフラインアプリケーションに送信することができる。このオフラインアプリケーションは、様々な形態をとることができる。このオフラインアプリケーションの形態として、ネットワークにログインするウェブベースのアプリケーション、一方向および／または双方向でデータを受信する無線デバイス、携帯電話型デバイス、あるいは、オンラインデバイスと通信可能なその他の任意の電子デバイスなどが挙げられる。オフラインデバイスがオンラインになったときに、オンラインデバイスと、当該オフラインデバイスであったデバイスとの間で通信する方法は多様に存在する。オンラインデバイスと、オンラインになるオフラインデバイスとの間の通信を制御するための、プロトコルおよび標準がすでに存在している。例えば、オフラインデバイスがインターネットを使用する場合、共通の方法として、ｈｔｔｐ、ＴＣＰ／ＩＰ、ｆｔｐなどがある。
【００２６】
前述したように、同期化ファイルは、オフラインデバイスとの通信方法に合わせた適切なサイズのパッケージに分離することができる。例えば、オフラインデバイスが、１０メガビットのイーサネット（登録商標）ネットワークに接続され、このネットワークが、オンラインデバイスにも接続されている場合、同期化ファイルパッケージのサイズは、ほとんど気にする必要がない。しかしながら、オフラインデバイスが、無線を介して、１０Ｋｂ／秒といった低帯域幅で、かつパッケージが損失しやすい低品質で接続される場合、より小さなサイズのパッケージを使用することが適切と言える。パッケージのサイズは、予め設定されていてもよいし、アプリケーションによって動的に変更されてもよいし、ユーザによって変更されてもよいし、テンプレートによって変更されてもよい。
【００２７】
同期化ファイルがオフラインデバイスに送信されると、ブロック２３０で、オンラインデバイスは、何らかのハウスキーピング（housekeeping）を実行することができる。オフラインデバイスに送信された全てのエントリを、同期化ファイルから削除することができる。さらに、オフラインデバイスのステータスファイルを更新することもできる。このステータスファイルは、同期化ファイルが最後に送信された時間などの、オフラインデバイスの状況の経過を追うことができる。さらに、オフラインデバイスによる同期化ファイルの受信が成功したか否かを確認することもできる。
【００２８】
上記の記載において、多種多様な実施形態の詳細について説明したが、この特許出願の権利範囲は、特許請求の範囲に記載した用語によって定義されることを理解されたい。この詳細な説明は、例示的なものとして意図しているに過ぎず、全ての可能な実施形態について記載しているわけではない。というのは、全ての可能な実施形態について記載することは、不可能ではないにしても、現実的ではないからである。既存の技術、または本出願の出願日よりも後に開発された技術のいずれかを用いて、多数の代替実施形態を実装することができるが、これらの代替実施形態も、特許請求の範囲に属するものである。
【００２９】
したがって、本特許請求の範囲の趣旨および範囲から逸脱することなく、本明細書で説明し、例示した技術および構成を用いて、多数の変形形態および変更形態が可能である。このため、本明細書で説明した方法および装置は、例示的なものに過ぎず、特許請求の範囲を限定するものではない。
【図面の簡単な説明】
【００３０】
【図１】本方法、システム、およびユーザインターフェースが動作可能なコンピュータシステムを示す図である。
【図２】本特許請求の範囲にしたがう、クエリベースの同期化方法を示す図である。
【図３】クエリ作成ディスプレイを示す図である。
【図４】クエリを選択することによって得られる追加の詳細を示す図である。
【図５】同期化されるデータを選択する際に作成することができる追加の条件を示す図である。
【図１】
2009500749.tif 000003
【図２】
2009500749.tif 000004
【図３】
2009500749.tif 000005
【図４】
2009500749.tif 000006
【図５】
2009500749.tif 000007
【国際調査報告】
2009500749.tif 000008