JP4343704B2 - Method and system for server-based operations in server synchronization with computing devices - Google Patents
Method and system for server-based operations in server synchronization with computing devices Download PDFInfo
- Publication number
- JP4343704B2 JP4343704B2 JP2003571918A JP2003571918A JP4343704B2 JP 4343704 B2 JP4343704 B2 JP 4343704B2 JP 2003571918 A JP2003571918 A JP 2003571918A JP 2003571918 A JP2003571918 A JP 2003571918A JP 4343704 B2 JP4343704 B2 JP 4343704B2
- Authority
- JP
- Japan
- Prior art keywords
- database
- server
- handheld device
- information
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 47
- 230000008569 process Effects 0.000 claims description 35
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000000605 extraction Methods 0.000 description 54
- 239000000284 extract Substances 0.000 description 39
- 238000013075 data extraction Methods 0.000 description 19
- 238000012546 transfer Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 241000920340 Pion Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013502 data validation Methods 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
(関連出願の相互引用)
本開示は、2001年9月28日に出願した"Method and Apparatus For Detecting Insufficient Memory For Data Extraction Processes"(「データ抽出プロセスのために不足のメモリを検出するための方法および装置」)という名称の米国特許出願第09/967439号の一部継続出願である。
(Mutual citation of related applications)
The present disclosure is named “Method and Apparatus For Detecting Insufficient Memory For Data Extraction Processes” filed on September 28, 2001, and named “Method and Apparatus for Detecting Insufficient Memory for the Data Extraction Process”. This is a continuation-in-part of US Patent Application No. 09/967439.
本開示は、一般に、コンピュータ・システムに関し、詳細には、それだけに限らないが、1つのコンピュータ・システムから別のコンピュータ・システムにデータを転送することに関する。 The present disclosure relates generally to computer systems, and more particularly, but not exclusively, to transferring data from one computer system to another.
パーム(Palm)、ハンドスプリング(Handspring)、ヒューレットパッカード(Hewlett Packard)、ソニー(Sony)、カシオ(Casio)、サイオン(Psion)などのベンダから入手可能な携帯情報端末(PDA)など、携帯用コンピューティング・デバイス(本明細書で、ハンドヘルド・デバイスとも呼ぶ)は、ビジネス界においてますます受け入れられている。一部のユーザは、シーベル・システムズ社(Siebel Systems,Inc.)、オラクル・コーポレーション他によって提供されるものなど、企業ビジネス・アプリケーションと対話するのに自身のハンドヘルド・デバイスを使用する必要性がある。それらの企業ビジネス・アプリケーションは、何人ものユーザが、いつでもアクセスし、かつ/または更新することができる大型データベース群を含んでいる。 Portable computing devices such as personal digital assistants (PDAs) available from vendors such as Palm, Handspring, Hewlett Packard, Sony, Casio, and Pion. Devices (also referred to herein as handheld devices) are increasingly accepted in the business world. Some users need to use their handheld devices to interact with enterprise business applications, such as those provided by Siebel Systems, Inc., Oracle Corporation et al. . These enterprise business applications include large databases that can be accessed and / or updated by any number of users at any time.
ハンドヘルド・デバイスを介して企業ビジネス・アプリケーションへアクセスすることは、通常のハンドヘルド・デバイス上で利用できるコンピューティング・パワー、エネルギー貯蔵量、メモリの量が比較的限られていることに起因して、大きな問題に直面することがある。例えば、ユーザが、企業ビジネス・アプリケーションをサポートするのに使用されているサーバの中に存在するデータを抽出することを所望することがある。ハンドヘルド・デバイスのリソースが限られていることに鑑みて、ハンドヘルド・デバイスは、抽出されたデータを効率的に受け取るように設計され、構成されることが一般に望ましい。 Accessing enterprise business applications through handheld devices is due to the relatively limited amount of computing power, energy storage, and memory available on regular handheld devices, You may face big problems. For example, a user may desire to extract data that resides in a server that is used to support enterprise business applications. In view of the limited resources of handheld devices, it is generally desirable for handheld devices to be designed and configured to efficiently receive extracted data.
本発明の態様によれば、サーバのメイン・データベースとハンドヘルド・デバイスのローカル・データベースを同期させるための方法とシステムが提供される。ユーザは、ハンドヘルド・デバイスの中に存在するアプリケーションを使用して、ローカル・データベースの中でトランザクションを行うことができる。本発明の一態様では、ハンドヘルド・デバイスは、(1)サーバと同期クライアントの間で接続を確立し、(2)サーバからメイン・データベースの構造の識別子を受け取り、(3)ハンドヘルド・アプリケーションのバージョンの識別子を受け取り、(4)トランザクション情報をサーバに送り、(5)ハンドヘルド・アプリケーションを更新するメタデータを受け取り、(6)サーバからのメイン・データベースから抽出されたデータを受け取るように構成された同期クライアントに関連する。この態様は、ハンドヘルド・デバイスが同期中にどのデータベースのデータとメタデータを必要とするかをシステムが判定することができ、さらにシステムは、ユーザによって行われたトランザクションをローカル・データベースの中にアップロードすることができるので有利である。 In accordance with aspects of the present invention, a method and system for synchronizing a main database of a server and a local database of a handheld device is provided. A user can perform transactions in a local database using an application residing in the handheld device. In one aspect of the invention, the handheld device (1) establishes a connection between the server and the sync client, (2) receives an identifier of the structure of the main database from the server, and (3) a version of the handheld application Configured to receive (4) send transaction information to the server, (5) receive metadata to update the handheld application, and (6) receive data extracted from the main database from the server Related to sync client. This aspect allows the system to determine which database data and metadata the handheld device needs during synchronization, and the system uploads transactions performed by the user into the local database. This is advantageous.
本発明の別の態様では、同期クライアントは、メイン・データベースの完全抽出をハンドヘルド・デバイスにダウンロードするか、またはデルタ抽出(すなわち、前回の同期オペレーション以降に変更されているメイン・データベースの中のデータだけ)をダウンロードするかを決定するように構成される。この態様は、システムが、適切な場合、デルタ抽出ダウンロードを実行して、同期オペレーションを完了するのに必要とされる時間を短縮できるようにすることが可能であるという利点がある。 In another aspect of the invention, the sync client downloads a full extract of the main database to the handheld device, or a delta extract (ie, data in the main database that has changed since the last sync operation). Just configured to decide what to download). This aspect has the advantage that the system can perform a delta extract download where appropriate to reduce the time required to complete the synchronization operation.
本発明のさらに別の態様では、同期クライアントは、サーバによって使用されるフィルタ情報を更新して、ハンドヘルド・デバイスにダウンロードされるメイン・データベースからのデータをフィルタリングするように構成される。 In yet another aspect of the invention, the sync client is configured to update the filter information used by the server to filter data from the main database downloaded to the handheld device.
本発明の限定的でなく、網羅的ではない実施形態を以下の図を参照して説明する。特に明記しない限り、様々な図のすべてで、同様の符号は、同様の部分を指す。 Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following figures. Unless otherwise noted, like numerals refer to like parts throughout the various figures.
データ抽出プロセス中に不足のメモリ条件を検出するためのシステムと方法の実施形態を以下に説明する。以下の説明では、本発明の実施形態を完全に理解させるために多数の具体的な詳細を示す。ただし、本発明は、その具体的な詳細の1つまたは複数なしに、または他の方法、コンポーネント、材料などを使用して実現できることをも当業者なら理解できるであろう。その他、周知の構造、材料、またはオペレーションは、本発明の態様を不明瞭にするのを避けるため、詳細に図示されても述べられてもいない。 Embodiments of a system and method for detecting insufficient memory conditions during the data extraction process are described below. In the following description, numerous specific details are set forth in order to provide a thorough understanding of embodiments of the present invention. However, one skilled in the art will also understand that the invention may be practiced without one or more of its specific details or using other methods, components, materials, and the like. In other instances, well-known structures, materials, or operations have not been shown or described in detail to avoid obscuring aspects of the invention.
本明細書全体で、「一実施形態」または「実施形態」について述べることは、その実施形態に関連して説明する特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。このため、本明細書全体の様々な箇所における「一実施形態では」または「実施形態では」という句の出現は、必ずしもすべて同一の実施形態を指しているわけではない。さらに、特定の特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な形で組み合わせることができる。 Throughout this specification, reference to “an embodiment” or “an embodiment” includes a particular feature, structure, or characteristic described in connection with that embodiment is included in at least one embodiment of the invention. Means that Thus, the appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
以下の説明では、説明の目的で、本発明を完全に理解させるために特定の用語を示すことがある。ただし、説明を読んだ後、それらの特定の詳細は、本発明を実施するために必須ではないことが当業者には明白であろう。 In the following description, for purposes of explanation, specific terminology may be set forth in order to provide a thorough understanding of the present invention. However, after reading the description, it will be apparent to one skilled in the art that those specific details are not required in order to practice the invention.
以下の詳細な説明のいくつかの部分は、コンピュータ・メモリの中に格納された情報に対するアルゴリズムや記号表現の形で提示することができる。それらのアルゴリズム上の説明や表現は、当業者が他の当業者に自身の作業の内容を伝えるのに使用することができる。アルゴリズムは、本明細書で、また一般的にも、所望の結果をもたらす自己矛盾のない一連のステップまたはオペレーションと考えられる。それらのステップまたはオペレーションは、物理量の物理的操作を要することがある。通常、ただし、必然的にではないが、それらの量は、格納、転送、結合、比較、またはそれ以外の操作を行うことが可能な電気信号、磁気信号、または電磁信号の形態をとる。それらの信号は、本明細書で、または一般的にも、ビット、バイト、語、値、要素、記号、文字、項、数などと呼ばれる。 Some portions of the detailed descriptions that follow may be presented in the form of algorithms or symbolic representations of information stored in computer memory. Those algorithmic descriptions and representations can be used by those skilled in the art to convey the substance of their work to others skilled in the art. An algorithm is herein and generally considered a self-consistent sequence of steps or operations that yields the desired result. Those steps or operations may require physical manipulation of physical quantities. Usually, but not necessarily, these quantities take the form of electrical, magnetic, or electromagnetic signals capable of being stored, transferred, combined, compared, or otherwise manipulated. These signals are referred to herein or generally as bits, bytes, words, values, elements, symbols, characters, terms, numbers, and the like.
特に明記しない限り、「処理する」、「算出する(computing)」、「計算する」、「判定する」、「表示する」などの用語は、コンピュータ・システム、または他の類似した電子コンピューティング・デバイスのアクションとプロセスを指す。詳細には、それらのアクションとプロセスは、コンピュータ・システムのレジスタ内部やメモリ内部の物理量(前述した)として表されたデータを操作し、コンピュータ・システムのメモリまたはレジスタ、または他の情報記憶デバイス、情報伝送デバイス、または情報表示デバイスの内部の物理量として同様に表される別のデータに変形する。 Unless otherwise stated, terms such as “processing”, “computing”, “computing”, “determining”, “displaying”, etc. refer to computer systems or other similar electronic computing Refers to device actions and processes. Specifically, these actions and processes operate on data represented as physical quantities (described above) within a computer system register or within a memory, and the computer system memory or register, or other information storage device, The data is transformed into another data that is similarly represented as an internal physical quantity of the information transmission device or the information display device.
本発明は、本明細書で説明するオペレーションを実行するための1つまたは複数の装置にも関連する。ある装置は、要求された目的のために特別に構築されることがあり、またはコンピュータ内部に格納されたコンピュータ・プログラムによって選択的にアクティブにされたり、構成される汎用コンピュータを含むこともある。そのようなコンピュータ・プログラムを、フロッピー(登録商標)・ディスク、光ディスク、コンパクト・ディスク(CD)、光磁気ディスクを含む、あらゆるタイプのディスクなどの、ただし、それらには限定されないコンピュータ可読記憶媒体の中に格納することができる。その他の記憶媒体には、消去可能なプログラマブルROMや電気的に消去可能なプログラマブルROM(EPROMおよびEEPROM)を含む読み取り専用メモリ(ROM)、スタティックRAMとダイナミックRAMを含むランダム・アクセス・メモリ(RAM)、さらに磁気カードまたは光カードが含まれる。 The invention also relates to one or more devices for performing the operations described herein. Some devices may be specially constructed for the required purpose, or may include a general purpose computer selectively activated or configured by a computer program stored within the computer. Such computer programs can be stored on any computer readable storage medium, including but not limited to floppy disks, optical disks, compact disks (CDs), magneto-optical disks, and any other type of disk. Can be stored inside. Other storage media include read-only memory (ROM) including erasable programmable ROM, electrically erasable programmable ROM (EPROM and EEPROM), and random access memory (RAM) including static RAM and dynamic RAM Further, a magnetic card or an optical card is included.
本明細書で提示するアルゴリズムとディスプレイは、特に明記しない限り、いずれの特定のコンピュータまたは他の装置に始めから関連しているものではない。様々な汎用システムだけでなく専用装置を、本明細書の教示によるプログラムとともに使用することができる。さらに、本発明を特定のプログラミング言語に関連して説明することはしない。本開示に鑑みて、当業者は、様々なプログラミング言語を使用して、実験を必要以上に行わずに本開示の教示を実現することができる。 The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus unless specifically stated otherwise. Dedicated devices as well as various general purpose systems can be used with programs according to the teachings herein. In addition, the present invention is not described with reference to any particular programming language. In view of the present disclosure, those skilled in the art can use the various programming languages to implement the teachings of the present disclosure without undue experimentation.
システムの概要
図1は、本発明の一実施形態によるハンドヘルド・デバイスを介してユーザがアクセスすることができるデータベースを有するシステム100を示している。システム100は、メイン・データベース12を有するメイン・コンピュータ・システム110とそのデータベース112に接続されたサーバを含む。第1の可能な実施形態では、サーバは、サーバ114として実装される。第2の可能な実施形態では、サーバは、同期エンジン118を含むサーバ116として実装される。第3の可能な実施形態では、メイン・コンピュータ・システム110が、サーバ114とサーバ116をともに含むことが可能である。サーバ114と116はともに、便宜上、図1に示している。ただし、前述した第1の実施形態や第2の実施形態は、このサーバのどちらかを省略することもできる。
System Overview FIG. 1 illustrates a
システム100は、メイン・データベース112に遠隔でアクセスするためにユーザが使用するハンドヘルド・デバイスも含む。ハンドヘルド・デバイス120−1、120−2、120−3、120−4、120−5を図1に示している。サーバ114がシステム100内に存在する場合、ユーザは、ハンドヘルド・デバイス120−1を使用して、サーバ114に対する接続122を介して、メイン・データベース112に遠隔からアクセスすることができる。一実施形態では、接続122は、標準の電話モデムや、ハンドヘルド・デバイス製造業者によって定義されたシリアル・インターフェースを使用して実装される。
別法として、ユーザは、接続126を介してサーバ114に接続された中間コンピュータ・デバイス(本明細書で、コンパニオン・デバイスとも呼ぶ)124を介してメイン・データベース112に遠隔からアクセスすることもできる。通常、コンパニオン・デバイス124は、通常のハンドヘルド・デバイスと比べてより強力なコンピューティング・デバイス(すなわち、より多くのメモリ、より高性能のプロセッサ、より大きい電源などを有する)である。例えば、コンパニオン・デバイスは、デスクトップ・コンピュータまたはノートブック・コンピュータとすることが可能である。ハンドヘルド・デバイス120−2とコンパニオン・デバイス124は、接続127を介して情報を転送する。一実施形態では、接続127は、通常、ハンドヘルド・デバイスとともに提供されるシリアル・インターフェースを使用して実装される。例えば、接続127は、シリアル・ポートプロトコル、パラレル・ポートプロトコル、またはその他のバス・プロトコルを使用して実装することができる。一部のハンドヘルド・デバイスは、ハンドヘルド・デバイスとコンパニオン・デバイスの間の物理的な相互接続を提供するクレイドル・アセンブリを含む。
Alternatively, a user may remotely access main database 112 via an intermediate computer device (also referred to herein as a companion device) 124 connected to
この実施形態では、コンパニオン・デバイス124は、同期エンジン128と同期マネージャ130を含む。同期エンジン128は、サーバ116の同期エンジン118と同様の機能を実行する。一部の実施形態では、同期マネージャ130と同期エンジン118、128は、コンパニオン・デバイス124またはサーバ116の1つまたは複数のプロセッサによって実行されるソフトウェアで実装される。さらに、図1には示していないが、ハンドヘルド・デバイス120−1のこの実施形態は、同期エンジン128や同期マネージャ130と基本的に同一の機能を果たす同期エンジンと同期マネージャを含む。
In this embodiment,
サーバ116がメイン・コンピュータ・システム110内に存在する場合、ユーザは、ハンドヘルド・デバイス120−3を使用して、サーバ116に対する接続132を介してメイン・データベース112にアクセスすることができる。接続132は、接続122に関して前述したように、電話モデム接続や、サーバ116とハンドヘルド・デバイス120−3の両方によってサポートされる他の任意のタイプの接続でよい。図示していないが、ハンドヘルド・デバイス120−3のこの実施形態は、同期マネージャ130と基本的に同一の機能を提供する同期マネージャを含む。前述したとおり、サーバ116を介してメイン・データベース112にアクセスするデバイスが独自の同期エンジンを持たなくてもいいように、サーバ116が同期エンジン118を備えている。
If
別法として、ユーザは、ハンドヘルド・デバイス120−4を使用して、コンパニオン・デバイス134を介してメイン・データベース112にアクセスすることができる。デバイス134は、接続136を介してハンドヘルド・デバイスに接続されている。接続136は、通常、ハンドヘルド・デバイス・ベンダによって提供されるシリアル・インターフェースである。コンパニオン・デバイス134は、接続138を介してサーバ116に接続されている。この実施形態では、ハンドヘルド・デバイス120−4は、ハンドヘルド・デバイス120−3と同様に同期マネージャ・コンポーネント(図示せず)を含む。コンパニオン・デバイス134は、可能なサーバ116とハンドヘルド・デバイス120−4の間のデータ転送を可能にするインターフェース・コンポーネント(本明細書で、プロキシとも呼ぶ)140を含む。プロキシでなくても良い。例えば、一実施形態では、接続138(すなわち、サーバ−コンパニオン・デバイス間の接続)は、HTTP(ハイパーテキスト・トランスポート・プロトコル)接続(例えば、インターネット接続)とすることが可能であり、他方、接続136(すなわち、コンパニオン・デバイス−ハンドヘルド・デバイス間の接続)は、独自のハンドヘルド・デバイス同期接続(例えば、シリアル・バス)とすることが可能である。このため、インターフェース・コンポーネント140は、実際上、サーバ116とハンドヘルド・デバイス120−4の間のプロキシの役割をする。
Alternatively, a user can access main database 112 via
さらに、ユーザは、ハンドヘルド・デバイス120−5を使用して、コンパニオン・デバイス144を介してメイン・データベース112にアクセスすることができる。デバイス144は、接続146を介してハンドヘルド・デバイス120−5に接続されている。この実施形態では、コンパニオン・デバイス144は、接続150を介してサーバ116と通信する同期マネージャ148を含む。コンパニオン・デバイス144の同期マネージャ148により、ハンドヘルド・デバイス120−5は、同期マネージャ・コンポーネントを持つ必要がない。
Further, the user can access the main database 112 via the
実際、数名のユーザが、前述した5つのパス(すなわち、メイン・データベース112とハンドヘルド・デバイス120−1ないし120−5の間の通信パス)のそれぞれを介して、ハンドヘルド・デバイスを用いてメイン・データベース112にアクセスすることができる。このため、例えば、1つのハンドヘルド・デバイス120−3だけが、サーバ116に直接に結合されるように図1に示しているが、数名のユーザが、ハンドヘルド・デバイス120−3と実質的に同一の形で構成されたハンドヘルド・デバイスを使用して、メイン・データベース112に基本的に同一の形でアクセスすることができる。
In fact, several users can use the handheld device to main through each of the five paths described above (ie, the communication path between the main database 112 and the handheld devices 120-1 to 120-5). Can access the database 112 Thus, for example, although only one handheld device 120-3 is shown in FIG. 1 as being directly coupled to the
さらに、前述した5つのパスの様々な組み合わせ、または並べ替えを使用して、システム100の他の実施形態を実装することもできる。例えば、システム100は、メイン・データベース112とハンドヘルド・デバイス120−3(サーバ116と直接接続132を介して)、およびデータベース112とハンドヘルド・デバイス120−4(サーバ116とコンパニオン・デバイス134を介して)の間のパスだけをサポートするように実装することができる。この典型的な実施形態により、同期マネージャを備えるように構成されたハンドヘルド・デバイスは、直接同期またはコンパニオン同期(プロキシ140を介して)を実行することができる。
Furthermore, other embodiments of the
さらに、電話モデム接続、HTTP接続、標準のハンドヘルド同期接続について前述したが、他の実施形態では、任意の適切な接続を使用することができる。例えば、他の実施形態は、HTTP以外のプロトコルを使用することができる。さらに、この接続によって使用される信号伝搬媒体は、有線(例えば、より対線、ケーブル、光ファイバなどの媒体を使用する)であっても、無線(例えば、赤外線技術、無線周波数技術、光技術などの技術を使用する)であってもよい。 Furthermore, while telephone modem connections, HTTP connections, and standard handheld synchronous connections have been described above, in any other embodiment, any suitable connection can be used. For example, other embodiments can use protocols other than HTTP. Furthermore, even if the signal propagation medium used by this connection is wired (for example, using a medium such as twisted pair, cable, optical fiber), it is wireless (for example, infrared technology, radio frequency technology, optical technology). May be used).
システム100の機能の1つは、メイン・コンピュータ・システム110とハンドヘルド・デバイスの間で選択された情報を同期させることである。例えば、情報は、メイン・データベース112や、ハンドヘルド・デバイスのローカル・データベース(図示せず)の中に格納されたデータベースのデータとすることが可能である。システム100のオペレーション中、データベースのデータは、ユーザによって頻繁に更新される。更新されたデータベースのデータは、同期プロセスを介してユーザに配信される。さらに、同期されるべき情報には、ハンドヘルド・デバイスで実行されるアプリケーションによって使用される定義(本明細書で、メタデータとも呼ぶ)が含まれることもある。同期プロセス中に実行されるオペレーションのいくつかを図2に関連して以下に説明する。
One function of the
図2は、本発明の一実施形態によるデータを同期させる際のハンドヘルド・デバイス202と他のコンピュータ・システム204の間におけるデータフローを示している。例えば、コンピュータ・システム204は、(a)サーバ114または116のどちらか、または(b)コンパニオン・デバイス124、または(c)サーバ114または116のどちらかと結合されたコンパニオン・デバイス134、または(d)サーバ114または116のどちらかと結合されたコンパニオン・デバイス144によって実現される。図2のデータフロー・オペレーションの一部の特定の実施形態を図3〜11に関連して以下に説明する。
FIG. 2 illustrates the data flow between the
図2を再び参照すると、ハンドヘルド・デバイス202が、図2に矢印210で示したコンピュータ・システム204との接続を開始する。一実施形態では、ハンドヘルド・デバイス202は、モデムを使用してログインすることにより(例えば、インターネット接続を介して)、コンピュータ・システム204とのこの接続を開始する。例えば、この接続は、標準のHTTP接続とすることが可能である。別の実施形態では、ハンドヘルド・デバイス202は、ハンドヘルド・デバイス・ベンダによって提供される同期インターフェース・アプリケーションやハードウェアを使用して、コンパニオン・デバイスに対してこの接続を開始させることができる。例えば、ユーザが、ハンドヘルド・デバイス202をクレイドル・アクセサリに入れて、クレイドル上の同期ボタンをアクティブにしたときにこの接続が開始するようにすることが可能である。
Referring again to FIG. 2, the
この実施形態では、コンピュータ・システム204が、次に、図2に矢印212で示されているように、ハンドヘルド・デバイス202に初期設定データを提供する。一実施形態では、初期設定情報は、メイン・データベース112の最新バージョンに関連する情報を含むことが可能である。例えば、新規のテーブルが、メイン・データベース112に追加されていることがある。さらに、初期設定情報は、コンピュータ・システム204にアップロードされた最新のトランザクション(以下の説明を参照)に関連する情報を含ませることもできる。一実施形態では、接続が確立された後、この初期設定情報をハンドヘルド・デバイス202がプルする。別法として、コンピュータ・システム204が、接続が確立されたことに応答して初期設定情報をハンドヘルド・デバイス202にプッシュするようにしてもよい。
In this embodiment,
図2の矢印213で示すとおり、コンピュータ・システム204が、次に、アプリケーション定義情報をハンドヘルド・デバイス202に転送する。一実施形態では、このアプリケーション定義情報には、ハンドヘルド・デバイス202のローカル・データベースにアクセスするためにユーザが使用するアプリケーション(本明細書で、ハンドヘルド・アプリケーションとも呼ぶ)において使用される定義に関連する情報を含む。例えば、このアプリケーション定義情報には、ユーザ・インターフェースを提供する際にハンドヘルド・アプリケーションによって表示されるビューとスクリーンとを含むことが可能である。一実施形態では、ハンドヘルド・デバイス202は、自らのローカル・アプリケーション定義を更新する必要があるかどうかを判定し(初期設定情報を使用して)、必要がある場合、上記の情報をコンピュータ・システム204からプルする。他の実施形態では、コンピュータ・システム204は、ハンドヘルド・デバイス204から、ハンドヘルド・デバイス202のアプリケーション定義のバージョンを示す情報を受け取ることができる。次に、コンピュータ・システム204は、ハンドヘルド・デバイス202が更新されたアプリケーション定義情報を必要とするかどうかを判定し、必要とする場合、更新されたアプリケーション定義をハンドヘルド・デバイス202にプッシュする。
As indicated by arrow 213 in FIG. 2,
ハンドヘルド・デバイス202は、図2の矢印214で示すとおり、トランザクション情報をコンピュータ・システム204に転送する。一実施形態では、ユーザによってハンドヘルド・デバイス202に入力されたローカル・データベース・トランザクションのすべてが記録される。この記録されたトランザクション情報は、コンピュータ・システム204に転送され、次に、コンピュータ・システム204が、メイン・データベース112(図1)の中でトランザクションを実行する。一部の実施形態では、ハンドヘルド・デバイス202は、トランザクション情報を1つのブロックとしてコンピュータ・システム204に転送する。ブロック全体を受け取った後、コンピュータ・システム204は、ブロックが適切に受け取ったかどうかを判定する。他の実施形態では、ハンドヘルド・デバイス202は、いくつかの比較的小さいブロックでトランザクション情報を転送する。それぞれの小さいブロックを受け取った後、コンピュータ・システム204は、そのブロックを適切に受け取ったかどうかを判定し、そのブロックを再送するか、または次のブロックを送るようにハンドヘルド・デバイス202にメッセージまたは信号を送る。このため、転送中に問題または中断が生じた場合、ハンドヘルド・デバイス202は、トランザクション情報のすべてを再送するのではなく、適切に受け取られなかったブロックを転送するだけでよい。
次に、コンピュータ・システム204は、図2の矢印216で示すとおり、エラー情報をハンドヘルド・デバイス202に転送する。一実施形態では、このエラー情報は、(a)システム100(図1)は、ユーザが、1名または複数名の他のユーザによって変更されたデータに対してトランザクションを行うことを許さないというトランザクションに関する情報、および(b)サーバによってトランザクションに対して行われた変更に関する情報を含む。次に、ユーザが、ハンドヘルド・デバイス202上でそれらのエラーを手動で訂正する、または処理することができる。
さらに、ハンドヘルド・デバイス202とコンピュータ・システム204は、図2の矢印218で示すとおり、フィルタ設定を更新することができる。フィルタ設定は、不要な情報または不必要な情報が、ハンドヘルド・デバイス202とコンピュータ・システム204の間で転送されず、ハンドヘルド・デバイス202上の限られたリソースが節約されるように設定される。この実施形態では、ユーザは、ハンドヘルド・デバイス202のフィルタ設定を更新した後、その設定をコンピュータ・システム204にアップロードすることができる。このため、コンピュータ・システム204は、その後、ユーザが望まない情報をダウンロードすることを回避することができる。さらに、この実施形態では、コンピュータ・システム204は、フィルタ設定が確実に適切であるように、ハンドヘルド・デバイス202から受け取ったフィルタ設定を処理する。例えば、適切に実行しようとして、ハンドヘルド・デバイス202で現在実行されているアプリケーションによって要求された情報を、ユーザがフィルタリングして除こうと試みている可能性がある。
In addition, the
次に、コンピュータ・システム204は、図2の矢印220で示すとおり、データベースのデータをハンドヘルド・デバイス202に転送する。このオペレーションを本明細書では、「データ抽出」とも呼ぶ。一実施形態では、コンピュータ・システム204は、ハンドヘルド・デバイス202に可視であり、フィルタリングされた後、データベースのデータのすべてのイメージを形成する。このイメージを本明細書では抽出とも呼ぶ。次に、コンピュータ・システム204は、この抽出をハンドヘルド・デバイス202にダウンロードする。一実施形態では、コンピュータ・システム204は、抽出を一連の比較的小さいブロックでダウンロードし、ハンドヘルド・デバイス202が、それぞれの小さいブロックの受け取りを確認する。
Next, the
別の実施形態では、コンピュータ・システム204は、各ダウンロードの後、抽出を格納する。次のデータ抽出オペレーション時に、コンピュータ・システム204は、現在の抽出を以前の抽出と比較し、変更されているデータベースのデータだけをダウンロードする(本明細書で、デルタ抽出とも呼ぶ)。次に、以前の抽出を削除することができる。さらなる改良形態では、ある状況において、コンピュータ・システム204は、以前の抽出を無視し、代わりに、現在の抽出全体をダウンロードすることができる。例えば、以前の抽出以降、メイン・データベース112(図1)の構造が変化している場合、コンピュータ・システム204は、デルタ抽出を実行しようと試みるのではなく、完全抽出を実行する。次に、ハンドヘルド・デバイス202が、図2の矢印222で示すとおり、コンピュータ・システム204からの接続を解除する。
In another embodiment,
図3は、本発明の一実施形態による同期オペレーションにおいて使用される同期エンジン116(図1)とハンドヘルド・デバイス300のコンポーネントを示している。あらゆるハンドヘルド・デバイス120−3ないし120−5(図1)を実装するためにハンドヘルド・デバイス300を使用することができる。
FIG. 3 illustrates the components of the synchronization engine 116 (FIG. 1) and
この実施形態では、同期エンジン116は、メタデータ・エクストラクタ301、トランザクション・プロセッサ303、データ・エクストラクタ305を含む。ハンドヘルド・デバイス300は、ローカル・データベース308を含み、かつメタデータ・インポータ311、トランザクション・レコーダ313、データ・インポータ315を有する同期クライアント(同期クライアント)310を含む。この実施形態では、同期クライアント310とそのコンポーネントはソフトウェアで実装される。
In this embodiment, the
同期エンジン116と、同期クライアント300の前述した要素は、次のように互いに接続される。同期エンジン116のメタデータ・ジェネレータ/エクストラクタ301が、破線317で示すとおり、同期クライアント310のメタデータ・インポータ311に動作上、結合される。同期エンジン116のトランザクション・プロセッサ303が、破線319で示すとおり、同期クライアント310のトランザクション・レコーダ313に動作上、結合される。同期エンジン116のデータ・エクストラクタ305が、破線321で示すとおり、同期クライアント310のデータ・インポータ315に動作上、結合される。同期クライアント310は、線323で示すとおり、ローカル・データベース308にアクセスすることができる。以上のコンポーネントは、以下とおり動作する。
The above-described elements of the
この実施形態では、メタデータ・ジェネレータ/エクストラクタ301の主要な機能の一部は、同期クライアント310が、更新されたメタデータを必要とするかどうかを判定し、サーバ116上に格納されたメタデータを抽出し、抽出されたメタデータをハンドヘルド・デバイス300に転送することである。メタデータは、ローカル・データベース308にアクセスするのに使用されるハンドヘルド・アプリケーション(図示せず)のためのスクリーン、ビュー、フィールドなどの定義を含む。メタデータ・ジェネレータ/エクストラクタ301は、メタデータ(サーバ116の中に特定のフォーマットで格納された)を抽出し、同期クライアント310に伝送するために、そのメタデータを含むメッセージまたはデータグラムを形成する。
In this embodiment, some of the key functions of the metadata generator /
同期クライアント310のメタデータ・インポータ311は、メタデータ・ジェネレータ/エクストラクタ301にから送られたメタデータを処理して、ハンドヘルド・デバイス300内部のハンドヘルド・アプリケーションを更新する。例えば、一実施形態では、メタデータ・インポータ311は、メタデータをダウンロードするように同期エンジン116に要求する前に、ハンドヘルド・デバイスが、そのメタデータを格納するのに十分なメモリを有するかどうかを判定する。ハンドヘルド・デバイス300がメタデータを格納した後、次に、メタデータ・インポータ311が、メタデータの中に含まれる新しいアプリケーション定義を使用してハンドヘルド・アプリケーション(図示せず)を更新することができる。このオペレーションの一実施形態を図9に関連して以下でより詳細に説明する。
The
この実施形態では、ハンドヘルド・デバイス300内部のトランザクション・レコーダ313が、ユーザによって行われたローカル・データベース308に対するトランザクションに関連する情報を記録する。例えば、ユーザが、ローカル・データベース308の中のデータを変更するたびに毎回、トランザクション・レコーダ313は、トランザクション識別子(トランザクションID)を割り当て、そのトランザクションIDと、トランザクションに関する他の関連する情報を記録する。別の実施形態では、トランザクションIDは、同期プロセスが実行されるときに割り当てることができる。前述した他の関連する情報は、例えば、メイン・データベース112(図1)上で変更されたレコードを見つける、または新規のレコードを作成するためにサーバ116によって使用される、変更されているフィールド、以前のデータと新規のデータ、レコード識別子とレコード名、さらにレコード関係の明細を含む。次に、トランザクション・レコーダ313は、トランザクションを同期エンジン116のトランザクション・プロセッサ303にアップロードすることができる。
In this embodiment, a
トランザクション・プロセッサ303は、ハンドヘルド・デバイス300からトランザクションを受け取り、各トランザクションを実行してメイン・データベース112(図1)を更新する。トランザクションは、別のユーザからの別のトランザクションと矛盾する可能性があり、矛盾している場合、トランザクション・プロセッサ303は、そのトランザクションを実行することなしに、エラーを報告する。このオペレーションの一実施形態を図7に関連して以下でより詳細に説明する。別の実施形態では、トランザクション・プロセッサ303は、トランザクションが成功するようにトランザクションの1つまたは複数の部分を変更する。次に、トランザクション・プロセッサ303は、実行された変更をユーザに知らせるメッセージをハンドヘルド・デバイス300に送ることができる。
この実施形態では、同期エンジン116のデータ・エクストラクタ305は、メイン・データベース112(図1)からハンドヘルド・デバイス300に可視であるデータベースのデータを抽出する。可視性という用語は、データベースのリモート・アクセスという周知の意味を有する(例えば、米国特許第6216135号および第6233617号参照)。さらに、この実施形態では、データ・エクストラクタ305は、フィルタ設定(図2の矢印218に関連して前述した)に従ってデータを抽出することを避けることができる。また、データ・エクストラクタ305は、抽出済みのデータベースのデータをハンドヘルド・デバイス300にダウンロードされるファイルに形成する。一実施形態では、同期エンジン116は、一連の小さいメッセージまたはデータグラムでファイルをハンドヘルド・デバイス300に送ることができる。
In this embodiment, the
ハンドヘルド・デバイス300のデータ・インポータ315が、そのファイルを受け取り、ローカル・データベース308を更新するためにそのファイルを一時的に格納する。以下に説明するとおり、このファイルは、更新されたデータベースのデータをローカル・データベース308のものとは異なるフォーマットで含むことが可能である。そのような場合、別個のコンポーネントを使用してそのデータを処理して、ローカル・データベース308のフォーマットにすることができる。
A
ハンドヘルド・デバイス
図4は、本発明の一実施形態によるハンドヘルド・デバイス120−3(図1)を示している。この実施形態では、ハンドヘルド・デバイス120−3は、サーバ116と直接に同期するように構成されている。ローカル・データベース308に加え、ハンドヘルド・デバイス120−3は、同期クライアント401、同期ログ(同期ログ)403、トランザクション・データベース405、データ格納アプリケーション(本明細書で、データ・ストアラとも呼ぶ)407、データ・ストア409を有している。この実施形態では、同期クライアント401は、コンパニオン・デバイス内に存在する同期マネージャ130と148(図1)に関して説明したのと実質的に同様の諸機能を実行する。特に、同期クライアント401は、同期クライアント310(図3)のメタデータ・インポータ311、トランザクション・レコーダ313、データ・インポータ315の機能を実行する。
Handheld Device FIG. 4 illustrates a handheld device 120-3 (FIG. 1) according to one embodiment of the present invention. In this embodiment, handheld device 120-3 is configured to synchronize directly with
同期ログ403は、同期オペレーション(例えば、図2のオペレーションを参照)中に送られたすべてのメッセージのリストを表示するために使用され、このリストは、後に、同期中に問題が生じた場合、情報を復元するのに使用することができる。トランザクション・データベース405は、各トランザクションに関連する情報(例えば、図3のトランザクション・レコーダ313によって生成された情報)を格納するのに使用される。一実施形態では、同期マネージャが、トランザクション情報をトランザクション・データベース405の中に格納する。別法として、ハンドヘルド・アプリケーション(図示せず)が、トランザクション情報をトランザクション・データベース405の中に格納する。この実施形態のデータ・ストアラ407は、ダウンロード済みのデータベースのデータをローカル・データベース308のフォーマットになるように処理するのに使用される。データ・ストア409は、フィルタ設定、ローカル・データベース308のバージョン、ハンドヘルド・アプリケーション(図示せず)のバージョン、ローカル・データベースのスキーマを定義するファイル、メタデータからの前述したアプリケーション定義を格納するのに使用される。また、データ・ストア409は、トランザクション・エラーメッセージを格納するのにも使用される。この実施形態では、ローカル・データベースとハンドヘルド・アプリケーションのバージョンはそれぞれ、本明細書で抽出IDおよびリポジトリIDと呼ぶ。一部の実施形態では、データ・ストア409は、オペレーティング・システムのレジストリ(例えば、Windows(登録商標)オペレーティング・システムまたはLinuxオペレーティング・システムにおけるような)を含むことが可能である。
The
同期クライアント401が、ローカル・データベース308、同期ログ403、トランザクション・データベース405、データ・ストアラ407、データ・ストア409に結合されている。また、同期クライアント401は、接続132を介してサーバ116(図1)にも結合されている。さらに、データ・ストアラ407が、ローカル・データベース308に結合されている。ハンドヘルド・デバイス120−3のこの実施形態のオペレーションを図6に関連して以下で説明する。
A
図5は、本発明の一実施形態によるハンドヘルド・デバイス120−2(図1)とコンパニオン・デバイス124(図1)のコンポーネントを示している。ハンドヘルド・デバイス120−2とコンパニオン・デバイス124のこの実施形態は、ハンドヘルド・デバイス120−3(図4)において前述したものと同様のコンポーネントを含む。詳細には、ハンドヘルド・デバイス120−2は、ローカル・データベース308、トランザクション・データベース405、データ・ストアラ407、データ・ストア409を有している。コンパニオン・デバイス124は、同期クライアント501と同期ログ503を有し、同期クライアント501と同期ログ503はともに、ハンドヘルド・デバイス120−3の同期クライアント401(図3)および同期ログ403(図3)のものと同様の機能を実行する。さらに、コンパニオン・デバイス124は、同期エンジン505とコンパニオン・ローカル・データベース508を有している。クライアント同期エンジン505は、メイン・データベース112(図1)にアクセスする際、同期エンジン118(図1)のものと同様の諸機能を提供する。
FIG. 5 illustrates the components of handheld device 120-2 (FIG. 1) and companion device 124 (FIG. 1) according to one embodiment of the present invention. This embodiment of handheld device 120-2 and
この実施形態では、同期クライアント501は、ハンドヘルド・デバイス120−2のローカル・データベース308、トランザクション・データベース405、データ・ストアラ407、データ・ストア409に結合されている。この相互接続は、接続127(図1)を介して実施することができる。さらに、同期クライアント501は、同期ログ503、クライアント同期マネージャ505、コンパニオン・ローカル・データベース508に結合される。一実施形態では、コンパニオン・ローカル・データベース508は、ハンドヘルド・デバイス120−2のローカル・データベース405のイメージを格納することができる。そのような実施形態では、コンパニオン・デバイス124は、コンパニオン・ローカル・データベース508をメイン・データベース112(図1)と同期させるように構成することができる。ハンドヘルド・デバイス120−2のその後の同期が、ハンドヘルド・デバイス120−2のローカル・データベース308を現時点で同期済みのコンパニオン・ローカル・データベース508と同期させる。
In this embodiment,
同期クライアント・プロセス
図6は、本発明の一実施形態による同期プロセス中の同期クライアントのオペレーションを示している。この実施形態では、同期クライアントは、サーバへの直接接続を有するハンドヘルド・デバイスである。例えば、ハンドヘルド・デバイスとサーバは、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)とすることが可能である。別法として、同期クライアントは、コンパニオン・デバイスとハンドヘルド・デバイス(例えば、図5におけるようなコンパニオン・デバイス124とハンドヘルド・デバイス120−2)の組み合わせによって実装することが可能である。便宜上、同期クライアントのオペレーションをハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。
Sync Client Process FIG. 6 illustrates the operation of the sync client during the sync process according to one embodiment of the invention. In this embodiment, the sync client is a handheld device that has a direct connection to the server. For example, the handheld device and server may be handheld device 120-3 (FIG. 4) and server 116 (FIG. 1). Alternatively, the sync client can be implemented by a combination of a companion device and a handheld device (eg,
図4、図6を参照すると、同期クライアントの一実施形態は、次のとおり動作する。ブロック601で、同期クライアントを、サーバ(他の実施形態ではコンパニオン・デバイス)に接続する。一実施形態では、同期クライアント401は、ユーザがログイン・プロセスを実行した際にサーバ116に接続される。一実施形態では、同期クライアント401は、サーバ116に直接にアクセスするようにモデムを動作させるインターフェースまたはドライバを実行する。他の実施形態では、この接続は、インターネット接続とすることが可能である。さらに他の実施形態では、接続は、RF技術または光技術を使用して、直接の通信リンク、Webベースの通信リンク、または他のタイプの通信リンクを実施する無線接続とすることが可能である。
Referring to FIGS. 4 and 6, one embodiment of the sync client operates as follows. At
ブロック603で、同期クライアントは初期設定データを受け取る。一実施形態では、同期クライアント401が、接続132を介してサーバ116から初期設定データを受け取る。図2に関連して前述したとおり、この初期設定データは、メイン・データベース112の最新バージョン(例えば、抽出ID)、サーバ116にアップロードされた最新のトランザクション、さらにハンドヘルド・アプリケーションの最新バージョン(例えば、リポジトリID)に関連する情報を含むことが可能である。この実施形態では、同期クライアント401は、初期設定情報をデータ・ストア409の中に格納する。
At
ブロック605で、同期クライアントはアプリケーション定義バージョンを受け取る。ブロック605は、ハンドヘルド・アプリケーション定義がブロック603で受け取った初期設定データの一部として含まれる場合、省略することができる。一実施形態では、サーバ116が、アプリケーション定義バージョン(更新されていない可能性がある)を同期クライアント401に送る。同期クライアント401は、新たに受け取ったアプリケーション定義バージョンをデータ・ストア409の中に既に格納されているアプリケーション・バージョン(すなわち、ハンドヘルド・アプリケーションの現行バージョン)と比較することができる。次に、同期クライアント401は、新規のアプリケーション定義バージョンをデータ・ストア409の中に格納する。
At
ブロック607で、同期クライアントはトランザクション情報をサーバまたはコンパニオン・デバイスに提供する。一実施形態では、同期クライアント401が、トランザクション・データベース405の中に格納されたトランザクション情報をサーバ116に送る。例えば、同期クライアント401は、記録済みのトランザクションのすべてに関するトランザクション情報を1つのデータ・ブロックで送ることができる。別法として、同期クライアント401は、トランザクション情報をいくつかのより小さいブロックで送り、次のより小さいブロックを送る前に、サーバ116からの受取確認を待つようにしても良い。このオペレーションの実施形態を図7、図8に関連して以下により詳細に説明する。
At
ブロック609で、同期クライアントはサーバからメタデータを取得する。一実施形態では、同期クライアント401がサーバ116からメタデータを受け取る。前述したとおり、このメタデータは、ハンドヘルド・アプリケーションに関するアプリケーション定義を含む。この実施形態では、同期クライアント401は、ブロック605で受け取ったアプリケーション定義バージョンが、ローカルに格納されているアプリケーション定義バージョンと一致しない場合(例えば、この状況は、アプリケーション定義が更新されている場合に生じる可能性がある)、ブロック609を実行する。このオペレーションの一実施形態を図9に関連して以下でより詳細に説明する。別の実施形態では、同期クライアント401は、アプリケーション定義バージョンの比較を行わず、代わりに、サーバ116からメタデータを常に要求する。次に、サーバ116が、アプリケーション定義を更新する必要があるかどうかを判定する。
At
ブロック611で、同期クライアントは自らのローカル・データベースを更新する。一実施形態では、同期クライアント401が、サーバ116が、データ抽出オペレーションを開始して、更新されたデータベースのデータをハンドヘルド・デバイス120−3に提供することを要求する。この実施形態では、ユーザは、同期クライアント401に、サーバ116からデータベースのデータを取得する前に、フィルタを更新させることができる。このため、サーバ116は、不要なデータベースのデータをダウンロードすることを回避する。これは、電池の電力を節約するのに役立ち、同期プロセスを完了するのに必要な時間を短縮することができる。一実施形態では、サーバ116は、データ抽出全体(すなわち、同期クライアントに可視であり、フィルタリングした後のデータ)を単一の大きいブロックでダウンロードする。代替の実施形態では、サーバ116は、同期クライアント401による要求に応答して、データ抽出の比較的小さいブロックをダウンロードすることができる。ハンドヘルド・デバイス120−3が、このブロックを適切に受け取った場合、同期クライアント401は、次のブロックを求める要求を送ることができ、ハンドヘルド・デバイス120−3が、サーバ116から抽出全体を受け取るまで、以下同様に続ける。
At
さらなる改良形態では、同期クライアント401はまず、完全抽出を受け取るか、またはデルタ抽出を受け取るかを決めることができる。例えば、データベースのバージョンが変更されている場合(ブロック603を参照)、同期クライアント401は、サーバ116から完全抽出を要求することができる。しかし、データベースのバージョンが変更されていない場合、同期クライアント401は、サーバ116からデルタ抽出を要求することができる。例えば、デルタ抽出では、サーバ116は、ハンドヘルド・デバイス120−3への以前のダウンロードの完全抽出を現在の完全抽出と比較する。次に、サーバ116は、以前の抽出の中の対応するレコードとは異なる現在の完全抽出からのレコードだけをダウンロードする。
In a further refinement, the
ブロック613で、同期クライアントは、サーバ(またはコンパニオン・デバイス)から切り離される。この実施形態では、ユーザからの入力に応答して、同期クライアント401は、ログアウト・プロセスを実行してサーバ116から切り離される。
At
図7は、本発明によるブロック607(図6)の一実施形態をより詳細に示している。同期クライアントが、図7のオペレーションを実行する。この実施形態では、同期クライアントは、サーバ116との直接接続を有するハンドヘルド・デバイス120−3内に存在する。図6の説明の場合と同様に、ブロック607のトランザクション処理オペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4、図7を参照すると、ブロック607は、この典型的な実施形態において以下のとおり実行される。
FIG. 7 illustrates in more detail one embodiment of block 607 (FIG. 6) according to the present invention. The sync client performs the operation of FIG. In this embodiment, the sync client resides in handheld device 120-3 that has a direct connection with
ブロック701で、同期クライアントはサーバまたは(コンパニオン・デバイス)にアップロードされた最新のトランザクションに関連する情報を受け取る。一実施形態では、同期クライアント401が、サーバ116からトランザクション識別子(トランザクションID)を取得する。このトランザクションIDは、サーバ116によって受け取られた最新のトランザクションの識別子である。一実施形態では、ハンドヘルド・デバイス120−3は、初期設定された際、擬似ユニークIDジェネレータを使用してトランザクションIDを生成する。別の実施形態では、ID生成は、ユニークであることが保証される。次に、同期クライアント401は、トランザクションに関して記録された情報をハンドヘルド・デバイス120−3がサーバ116にアップロードする(本明細書で、「トランザクションをアップロードする」という言い方もする)たびに毎回、この擬似ユニークIDを増分する。この実施形態では、同期クライアント401は、次に、受け取ったトランザクションIDをトランザクション・データベース405の中のトランザクション情報と比較して、未処理のトランザクション情報(すなわち、サーバ116から受け取ったトランザクションIDより大きいトランザクションIDを有するトランザクション)を送る。
At
ブロック703で、同期クライアントはアップロードされるべき未処理のトランザクションを圧縮する。一実施形態では、同期クライアント401が、任意の適切な圧縮アルゴリズムを使用してトランザクション情報を圧縮する。次に、同期クライアント401は、圧縮済みの情報をハンドヘルド・デバイス120−3とサーバ116の間の接続によってサポートされているフォーマット(例えば、HTTP接続で使用するためのテキスト)に変換することもできる。代替の実施形態では、ブロック703は、省略してもよい(すなわち、情報を圧縮する必要はない)。
At
ブロック705で、同期クライアントは、次に、未処理のトランザクションの情報をアップロードする。一実施形態では、同期クライアント401が、トランザクション情報をサーバ116に単一の大きいブロックで送る。別法として、同期クライアント401は、トランザクション情報を一連のより小さいブロックで送ることができる。1つのそのような実施形態では、サーバ116は、ハンドヘルド・デバイス120−3からそれぞれのより小さいブロックを適切に受け取った後、受取確認を提供する。このオペレーションの一実施形態を図8に関連して以下でより詳細に説明する。
At
ブロック707で、同期クライアントは、ブロック705中に生じたエラー(存在する場合)に関する情報を取得する。一実施形態では、サーバ116は、トランザクションを処理している際に生じたエラーのすべてを記録に残す。例えば、エラーは、トランザクションが、ハンドヘルド・デバイス120−3のユーザより前に同期を行った別のユーザによってより新しく更新されたフィールドを更新しようと試みたことである。他の例には、ハンドヘルド・アプリケーションが課していない、サーバが課している他のデータ検証規則にトランザクションが違反した場合に生じるエラーが含まれる。
At
ブロック709で、同期クライアントは、次に、トランザクション・エラーを処理する。一実施形態では、同期クライアント401が、手動でエラーを訂正するようにユーザに促す。別の実施形態では、エラーは、ユーザが見ることを選択することができる別個のエラー・スクリーン上で提供され、手動で訂正されるか、または無視される。
At
図8は、本発明の一実施形態によるブロック705(図7)をより詳細に示している。同期クライアントが図8のオペレーションを実行する。この実施形態では、同期クライアントは、サーバ116に対する直接接続を有するハンドヘルド・デバイス120−3内に存在する。図6の説明の場合と同様に、ブロック705のトランザクション処理オペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4、図8を参照すると、ブロック705は、この典型的な実施形態において以下のとおり実行される。
FIG. 8 illustrates in more detail block 705 (FIG. 7) according to one embodiment of the present invention. The sync client performs the operation of FIG. In this embodiment, the sync client resides in handheld device 120-3 that has a direct connection to
ブロック801で、ブロック701(図7)で受け取ったトランザクションIDが、トランザクション・データベース405(図4)の中に格納されたかどうかを同期クライアント401が判定する。受け取ったトランザクションIDがトランザクション・データベース405の中にある場合、その受け取ったトランザクションIDに対応するトランザクションより前に作成されたトランザクション・データベース405の中のトランザクション・レコードのすべてが、サーバ116によって既に受け取り済みであり、したがって、もはや必要とされない。一実施形態では、同期クライアント401は、ブロック803を実行する。ブロック803で、同期クライアント401は、受け取ったトランザクションIDより小さい(すなわち、前に作成された)トランザクションIDを有するトランザクション・データベース405の中のトランザクション・レコードのすべてを削除する。
At
しかし、ブロック801で、同期クライアント401が、受け取ったトランザクションIDがトランザクション・データベース405の中にないと判定した場合、トランザクション・データベース405の中に残っているトランザクション・レコードのいずれも、サーバ116によって適切に受け取られていない。ブロック805で、同期クライアント401は、トランザクション・データベース405の中に格納されている未処理のトランザクション・レコードの数を特定する。一実施形態では、この数は、変数(本明細書で、便宜上、TXNCOUNTと呼ぶ)の中に格納される。ブロック805も、ブロック803の完了後、実行される。
However, if at
ブロック807で、同期クライアント401は、処理済みのトランザクション・レコードの数が、TXNCOUNT未満であるかどうかを判定する。つまり、ブロック805後、ブロック705の現在の実行における処理済みのトランザクション・レコードの数は、ゼロに設定される。トランザクション・データベース405の中の各トランザクション・レコードが処理される(例えば、サーバ116にアップロードされる)につれ、処理済みのトランザクション・レコードの数は、増分される。処理済みのトランザクション・レコードの数が、TXNCOUNTの値に達した時点で、トランザクション・データベース405の中のトランザクション・レコードのすべてが処理済みとなる。その場合、プロセスは、ブロック809に進み、トランザクション・データベース405の中に格納されたトランザクション・レコードのすべてが削除され、ブロック705が終了する。
At
しかし、処理済みのトランザクション・レコードの数が、TXNCOUNTの値未満である場合、プロセスは、ブロック811に進み、同期クライアント401が、トランザクション・データベース405から次のトランザクション・レコードを取得する。
However, if the number of processed transaction records is less than the value of TXNCOUNT, the process proceeds to block 811 where
ブロック813で、同期クライアント401は、トランザクション・レコードをサーバ116にアップロードされるべきトランザクション・ストリングまたはトランザクション・メッセージに追加する。一実施形態では、同期クライアント401は、トランザクション・レコードをサーバ116にアップロードされるべきトランザクション・ストリングの中にパックする。一部の他の実施形態では、トランザクション・レコードは、一連の小さいミニトランザクション・レコードとしてトランザクション・データベース405の中に格納することができる(特に、トランザクションが、複雑なトランザクションまたは大きいトランザクションである場合)。ブロック813で、同期クライアント401が、ミニトランザクション・レコードを既存のトランザクション・ストリングと連結する。
At block 813, the
ブロック815で、同期クライアント401は、トランザクション・レコードがミニトランザクション・レコードであるかどうかを判定する。例えば、一実施形態では、トランザクションの各ミニトランザクション・レコードは、同一のトランザクションIDを有する。同期クライアント401は、現在のトランザクション・レコードのトランザクションIDを前のトランザクション・レコードのトランザクションIDと比較することにより、トランザクション・レコードがミニトランザクション・レコードであるかどうかを判定することができる。トランザクション・レコードがミニトランザクション・レコードであった場合、オペレーションの流れは、ブロック811にループして戻る。しかし、トランザクション・レコードがミニトランザクションではなかった場合、ブロック817が実行される。
At
ブロック817で、この実施形態では、トランザクション・ストリング(ブロック813からの)は、HTTP接続を介してサーバ116に送ることができるように、URL(ユニバーサル・リソース・ロケータ)符号化される。一実施形態では、同期クライアント401が、トランザクション・ストリングをURL符号化する。
At
ブロック819で、URL符号化されたトランザクション・ストリングがアップロードされる。一実施形態では、同期クライアント401は、符号化済みのトランザクション・ストリングをHTTP要求のヘッダの中に入れ、サーバ116に送る。トランザクション・ストリングがあまりにも大きい(例えば、2キロバイトより大きい)場合、ストリングは、複数のHTTP要求を使用してアップロードされる。トランザクション・ストリングがアップロードされた後、プロセスは、ブロック807に戻る。プロセスは、トランザクション・データベース405の中のトランザクション・レコードのすべてが処理されるまで、繰り返される。
At block 819, the URL encoded transaction string is uploaded. In one embodiment, the
図9は、本発明の一実施形態によるメタデータを更新するためのブロック609(図6)を示している。同期クライアントが、図9のオペレーションを実行する。この実施形態では、同期クライアントは、サーバ116(図1)に対する直接接続を有するハンドヘルド・デバイス120−3(図4)内に存在する。図6の説明の場合と同様に、ブロック609のトランザクション処理オペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4と図9を参照すると、ブロック609は、この典型的な実施形態において以下のとおり実行される。
FIG. 9 shows a block 609 (FIG. 6) for updating metadata according to one embodiment of the present invention. The sync client performs the operation of FIG. In this embodiment, the sync client resides in handheld device 120-3 (FIG. 4) that has a direct connection to server 116 (FIG. 1). As with the description of FIG. 6, the transaction processing operation of
ブロック901で、同期クライアント401が、ローカルに格納されているリポジトリID(すなわち、データ・ストア409の中に格納された)をサーバ116からのリポジトリIDと比較する(図6のブロック605を参照)。ローカルに格納されているリポジトリIDは、ハンドヘルド・デバイス120−3内に存在するハンドヘルド・アプリケーションのバージョンを示すのに対し、サーバ116からのリポジトリIDは、ハンドヘルド・デバイス120−3が有すべきハンドヘルド・アプリケーションのバージョンを示す(例えば、ハンドヘルド・アプリケーションは、前回にハンドヘルド・デバイス120−3が同期されて以降に更新されている可能性がある)。
At
ブロック903で、同期クライアント401は、リポジトリIDが一致するかどうかを判定する。リポジトリIDが一致する場合、ハンドヘルド・デバイス120−3は、ハンドヘルド・アプリケーションの正しいバージョンを有しており、ブロック609が終了する。しかし、リポジトリIDが一致しない場合、ハンドヘルド・デバイス120−3は、ハンドヘルド・アプリケーションの正しいバージョンで更新されなければならない。このため、ブロック903でリポジトリIDが一致しない場合、プロセスは、ブロック905に進む。
At
ブロック905で、同期クライアント401はメタデータのサイズを取得する。一実施形態では、同期クライアント401がサーバ116からメタデータのサイズを取得する。ただし、このサイズは、ダウンロードされ、データ・ストアの中に格納された際に、そのメタデータがハンドヘルド・デバイス120−3内部で占めるサイズを表していない。
At
ブロック907で、同期クライアント401は、ブロック905で受け取ったサイズにスケーリング・ファクタを適用して、実行されたメタデータの予期される最大サイズを特定する。一実施形態では、このスケーリング・ファクタは経験的に決められる。他の実施形態では、スケーリング・ファクタは、構成可能であるか、または動的に決めることができる。このスケーリング・ファクタは、実行されたメタデータの実際のサイズを、確実に予期される最大サイズ以下にする。
At
ブロック909で、同期クライアント401は、ハンドヘルド・デバイス120−3で利用可能なメモリが、メタデータを格納するのに十分であるかどうかどうかを判定する。一実施形態では、同期クライアント401は、ブロック907で特定された予期される最大サイズを利用可能なメモリと比較する。
At
十分な利用可能なメモリが存在する場合、同期クライアント401は、ブロック911で、サーバ116からメタデータを取得する。一実施形態では、同期クライアント401は、メタデータをサーバ116から1回の転送でプルする。別の実施形態では、同期クライアント401は、メタデータをサーバ116から一連のより小さい転送でプルする。
If there is sufficient available memory, the
ブロック909で、十分な利用可能なメモリが存在しない場合、プロセスは、ブロック913に進む。ブロック913で、同期クライアント401は、エラー・ルーチンを実行してブロック609を優美に終了する。例えば、同期クライアント401は、ハンドヘルド・デバイス120−3が、同期プロセスを完了させるのに利用可能なメモリが不十分であるというメッセージをユーザに表示して、ユーザが、不必要なファイルを削除して、同期プロセスを再試行するように示唆する。別の実施形態では、ブロック913のエラー・ルーチンは、メモリ空間を開放するようにユーザに促し、ユーザがそうした後、終了するのではなく、ブロック909に戻る。
If at
図10は、本発明の一実施形態によるデータベースのデータを抽出するためのブロック611(図6)を示している。同期クライアントが図10のオペレーションを実行する。この実施形態では、同期クライアントは、サーバ116(図1)に対する直接接続を有するハンドヘルド・デバイス120−3(図4)内に存在する。図6の説明の場合と同様に、ブロック611のトランザクション処理オペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4、図10を参照すると、ブロック611は、この典型的な実施形態において以下のとおり実行される。
FIG. 10 shows a block 611 (FIG. 6) for extracting database data according to one embodiment of the present invention. The sync client performs the operation of FIG. In this embodiment, the sync client resides in handheld device 120-3 (FIG. 4) that has a direct connection to server 116 (FIG. 1). As in the description of FIG. 6, the transaction processing operation of
ブロック1001で、同期クライアント401は、サーバ116から抽出IDを取得する。一実施形態では、同期クライアント401は、この情報をブロック603(図6)で初期設定情報の一部として取得する。この抽出IDは、ハンドヘルド・デバイス120−3が有すべきデータベースのバージョンを示す。さらに、ハンドヘルド・デバイス120−3は、ハンドヘルド・デバイス120−3の中に現在、存在するデータベースのバージョンを示す抽出IDをローカルで格納する(例えば、データ・ストア409の中に)。これらの抽出IDは、データベース・アーキテクチャが、前回にハンドヘルド・デバイス120−3が同期されて以降に更新されている場合、異なることがある。例えば、メイン・データベース112(図1)が更新されて、フィールドまたはテーブルが追加され、かつ/または削除されていることがある。
In
ブロック1003で、同期クライアント401はフィルタを処理する。一実施形態では、ユーザが、ハンドヘルド・デバイス120−3上のフィルタ設定を変更している可能性がある。前述したとおり、フィルタ設定は、ユーザが所望するデータベースのデータだけをダウンロードするためにサーバによって使用される。このフィルタリングの1つの利点は、フィルタリングすることにより、ハンドヘルド・デバイス120−3のメモリの中に入ることが可能なサイズまでダウンロードされるデータの量が縮減されることである。同期クライアント401は、サーバ116の中に格納されたフィルタ設定をダウンロードし、そのフィルタ設定を使用してローカルで更新されたフィルタ設定を更新することができる。また、同期クライアント401は、ユーザが変更したフィルタ設定をサーバ116にアップロードすることもできる。サーバは、ユーザが変更したフィルタ設定が妥当な設定であることを確実にする。妥当な新規のフィルタ設定は、データベースのデータをハンドヘルド・デバイス120−3にダウンロードする際にサーバによって使用される。このフィルタ設定を図10Aに関連して以下でより詳細に説明する。
At
ブロック1005で、同期クライアント401は、ハンドヘルド・デバイス120−3が、サーバ116によってダウンロードされるデータベースのデータを格納するのに利用できる十分なメモリを有するかどうかを判定する。一実施形態では、同期マネージャ116が、データ抽出のサイズをサーバ116から取得する。前述したとおり、サーバ116は、ハンドヘルド・デバイス120−3に可視であり、ハンドヘルド・デバイスからアップロードされた妥当なフィルタ設定に従ってフィルタリング済みのデータベースのデータの抽出を作成するために、メイン・データベース112(図1)にアクセスする。サーバ116は、データ抽出のサイズ(完全抽出またはデルタ抽出)を同期クライアント401に提供し、次に、同期クライアント401が、ハンドヘルド・デバイス120−3内部で利用可能な十分なメモリが存在するかどうかを判定する。
At
十分なメモリが存在する場合、同期クライアント401は、ブロック1007で、サーバ116からデータ抽出(完全またはデルタ)をプルする。同期マネージャ410が、データ抽出を1回だけの転送で、または一連のより小さい転送でプルすることができる。ブロック1009で、同期クライアント401は、抽出をローカル・データベース308の中に格納する。
If there is sufficient memory,
しかし、ハンドヘルド・デバイス120−3が、抽出を格納するのに利用できる十分なメモリを有さない場合、ブロック611は終了する。例えば、同期クライアント401は、ブロック913(図9)と同様のエラー・ルーチンを実行して、ブロック611を優美に終了する。
However, if the handheld device 120-3 does not have enough memory available to store the extraction, block 611 ends. For example,
ブロック1011で、同期クライアント401は、サーバ116から新規の抽出IDを取得する。同期クライアント401は、ローカルに格納されていた抽出IDが、ブロック1001でサーバ116から受け取った抽出IDと同一である場合、ブロック1011を省略することができる。
In
図10Aは、本発明の一実施形態によるブロック1003(図10)で説明したフィルタを示している。この実施形態では、フィルタは、メタデータによって定義されたスクリーン(図3および図9に関連して前述した)に関連している。前述したとおり、スクリーンは、ハンドヘルド・デバイスにおいて実行されるハンドヘルド・アプリケーションによって表示されて、ユーザ・インターフェースをハンドヘルド・デバイスのローカル・データベースに提供する。例えば、スクリーンは、ユーザがより容易に使用し、データを理解することができるようにするフォーマット/構成で選択されたグループのデータベースのデータを表示することができる。 FIG. 10A shows the filter described in block 1003 (FIG. 10) according to one embodiment of the invention. In this embodiment, the filter is associated with the screen defined by the metadata (described above in connection with FIGS. 3 and 9). As described above, the screen is displayed by a handheld application running on the handheld device to provide a user interface to the local database of the handheld device. For example, the screen may display data from a selected group of databases in a format / configuration that allows the user to more easily use and understand the data.
図10Aに示すとおり、フィルタは、SCREEN_1ないしSCREEN_Mとして示す複数のスクリーンを有する。ハンドヘルド・アプリケーションが実行されているとき、ユーザは、様々なスクリーンを移動させて、ハンドヘルド・デバイスに所望のデータベースのデータを表示させることができる。各スクリーンは、少なくとも1つのビジネス・オブジェクトを有する。例えば、スクリーンSCREEN_1は、BUSOBJ_1ないしBUSOBJ_Nとして示すいくつかのビジネス・オブジェクトを有する。ビジネス・オブジェクトは、ハンドヘルド・デバイスによって表示されるべきグループの関連するデータを定義するようにあらかじめ設定されている。スクリーンは、ブロック1003(図10)における処理を単純化するように1つのスクリーン当たり1つだけのビジネス・オブジェクトを有するように定義される。 As shown in FIG. 10A, the filter has a plurality of screens denoted SCREEN_1 through SCREEN_M. When the handheld application is running, the user can move various screens to display the desired database data on the handheld device. Each screen has at least one business object. For example, the screen SCREEN_1 has several business objects shown as BUSOBJ_1 to BUSOBJ_N. The business object is preconfigured to define group related data to be displayed by the handheld device. Screens are defined to have only one business object per screen to simplify the processing in block 1003 (FIG. 10).
図11は、本発明の一実施形態によるフィルタを処理するためのブロック1003(図10)を示している。この実施形態では、同期クライアントが、ブロック1003のオペレーションを実行する。この実施形態では、同期クライアントは、サーバ116(図1)に対する直接接続を有するハンドヘルド・デバイス120−3(図4)の中に存在する。図10の説明の場合と同様に、ブロック1003のオペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4、図11を参照すると、ブロック1003は、この典型的な実施形態において以下のとおり実行される。
FIG. 11 shows a block 1003 (FIG. 10) for processing a filter according to one embodiment of the invention. In this embodiment, the sync client performs the operation of
ブロック1101で、同期クライアント401が、サーバ116(図1)からフィルタ情報をダウンロードする。このフィルタ情報は、サーバ116が、以前の同期オペレーションで同期クライアント401に対して使用したフィルタ設定を含む。さらに、このフィルタ情報は、システム管理者により、または同期クライアント401のベンダにより、または同期エンジン118(図1)により提供されたフィルタに対する更新を含むことがある。このフィルタ情報は、(a)スクリーン識別子、(b)各スクリーンに関連するビジネス・オブジェクトの識別子、(c)各ビジネス・オブジェクトの関連するフィルタなどを含む。スクリーンはそれぞれ、1つだけの関連するビジネス・オブジェクトを有するため、フィルタ情報を、スクリーンとそれに関連するフィルタだけを含むファイルとしてダウンロードすることができる。この実施形態では、ダウンロードされたファイルは、同期クライアント401がアクセスするために、ハンドヘルド・デバイス120−3(図1)の中に一時的に格納される。
At
ブロック1103で、同期クライアント401は、ローカルに格納されているフィルタ設定のファイル(本明細書で、フィルタ設定ファイルとも呼ぶ)を取得する。このフィルタ設定ファイルは、前の同期オペレーション後にユーザによって変更されたフィルタ設定を含んでもよい。次に、同期クライアント401は、ブロック1103中にそのフィルタ設定にアクセスすることができる。
At block 1103, the
ブロック1105で、同期クライアント401は、フィルタ設定ファイルと、ブロック1101でダウンロードされたフィルタ情報の両方からの情報を含むようにフィルタ情報を更新する。さらに、同期クライアント401は、ビジネス・オブジェクトに関するデフォルトのフィルタ設定を使用してフィルタ情報を更新することもできる。一実施形態では、同期クライアント401は、ユーザにフィルタ設定を選択させるコンポーネント(例えば、ダイアログ)を含む。例えば、フィルタ設定選択をユーザが行うことができるようにするメニューとともにそのコンポーネントがスクリーンを表示することができる。その後、ユーザが、所望に応じて設定を変更することができるように次のスクリーンが表示される。スクリーンのすべてが表示されるまで、これが繰り返される。フィルタ設定ファイルは、フィルタ設定選択を反映するように更新される。
At
ブロック1107で、同期クライアント401が、更新されたフィルタ情報を含むようにフィルタ設定ファイルを更新する。この更新されたフィルタ設定ファイルは、ハンドヘルド・デバイス120−3の中にローカルで保存される。
At
ブロック1109で、同期クライアント401が、更新されたフィルタ情報をサーバ116に提供する。一実施形態では、同期クライアント401は、更新されたフィルタ情報をXMLストリングの形態でサーバ116にアップロードする。同期クライアント401がフィルタ設定情報をサーバ116に送る前に、そのXMLストリングをURL符号化する。他の実施形態では、フィルタ情報は、ビジネス・オブジェクトをフィルタ設定とリンクさせるため、および、次のビジネス・オブジェクトを示すために使用される、あらかじめ選択された文字とともにパックされたストリングの形態である。
At
図12は、本発明の一実施形態によるブロック1103、1105、1107(図11)をより詳細に示している。この実施形態では、同期クライアントがオペレーションを実行する。一実施形態では、同期クライアントは、サーバ116(図1)に対する直接接続を有するハンドヘルド・デバイス120−3(図4)の中に存在する。図11の説明の場合と同様に、ブロック1103、1105、1107のオペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4、図11を参照すると、ブロック1103、1105、1107は、この典型的な実施形態において以下のとおり実行される。
FIG. 12 illustrates in
ブロック1201で、同期クライアント401が、ダウンロードされたフィルタ情報を解析する(図11のブロック1101を参照)。一実施形態では、ダウンロードされたフィルタ情報はXML符号化されたストリームの形態である。同期クライアント401は、ダウンロードされた情報から解析されたフィルタ情報を格納するためのデータ構造をセットアップする。一実施形態では、データ構造はリンクされたリストである。別の実施形態では、データ構造は、例えば、XML、SGML、またはHTMLなどのマークアップ言語ファイルである。
At
ブロック1203で、同期クライアント401は、解析済みのダウンロードされたフィルタ情報の中で次のスクリーンを探索する。同期クライアント401は、スクリーンを見つけた場合、ブロック1205で、そのスクリーンをデータ構造の中に入れる。例えば、リンクされたリストの実施形態では、同期クライアント401は、見つかったスクリーンに関するリンクを作成することができる。XMLの実施形態では、同期クライアント401がスクリーンに関するタグまたは属性を作成する。
At
ブロック1207で、同期クライアント401は、ブロック1203のスクリーンに関連する次のビジネス・オブジェクトを探索する。同期クライアント401は、ビジネス・オブジェクトを見つけた場合、ブロック1209で、そのビジネス・オブジェクトをデータ構造の中に、そのビジネス・オブジェクトとスクリーンの間の関係を示す機構とともに入れる。前述したリンクされたリストの例を続けると、同期クライアント401は、ブロック1203で見つかったスクリーンからブロック1207で見つかったビジネス・オブジェクトへのリンクを作成することができる。XMLの実施形態では、同期クライアント401は、ビジネス・オブジェクトのタグまたは属性を作成することができる。
At
ブロック1211で、同期クライアント401は、ブロック1207のビジネス・オブジェクトに関連する次のフィルタを探索する。同期クライアント401は、フィルタを見つけた場合、ブロック1213で、そのフィルタをデータ構造の中に入れる。前述したリンクされたリストの例を続けると、同期クライアント401は、ブロック1207で見つかったビジネス・オブジェクトからブロック1211で見つかったフィルタへのリンクを作成する。XMLの実施形態では、同期クライアント401は、フィルタに関するタグまたは属性を作成する。図10Aに関連して前述したとおり、ビジネス・オブジェクトは、複数のフィルタを有している。ただし、この実施形態では、一度に1つフィルタだけがアクティブとされる。
At
ブロック1215で、同期クライアント401は、ブロック1207で見つかったビジネス・オブジェクトに関するアクティブなフィルタが選択されているかどうかを判定する。一実施形態では、データ構造は、ブロック1207で見つかったビジネス・オブジェクトに対応するアクティブな・フィルタをポイントする別個の「アクティブなフィルタ」ポインタを含む。同期クライアント401は、このポインタが埋められている(すなわち、アドレスをポイントしている)かどうかを検査する。ポインタが空である場合、ビジネス・オブジェクトに関するアクティブなフィルタは選択されていない。
At
アクティブなフィルタが選択されている場合、オペレーションの流れは、ブロック1211に戻り、次のフィルタを探索する。しかし、アクティブなフィルタが選択されていない場合、同期クライアント401は、ブロック1217で、ブロック1207で見つかったフィルタがデフォルトのフィルタであるかどうかを判定する。デフォルトのフィルタである場合、ブロック1219で、同期クライアント401は、そのフィルタをデフォルトのフィルタとして設定する。例えば、同期クライアント401は、デフォルトのフィルタのアドレスを有する「アクティブなフィルタ」ポインタを読み込み、オペレーションの流れは、ブロック1211に戻る。ブロック1217で、フィルタがデフォルトのフィルタではない場合、オペレーションの流れは、ブロック1211に戻って、次のフィルタを探す。
If an active filter has been selected, operation flow returns to block 1211 to search for the next filter. However, if no active filter is selected, the
ブロック1207に戻ると、同期クライアント401が、次のビジネス・オブジェクトを見つけられなかった場合、オペレーションの流れはブロック1221に進む。例えば、同期クライアント401は、スクリーンに関するビジネス・オブジェクトのすべてが見つかっている場合、または同期クライアント401が、現在のビジネス・オブジェクト(すなわち、ブロック1207の前回の実行で見つかった)に関するデフォルトのフィルタを探し出せない場合、次のビジネス・オブジェクトを見出させないことがある。ブロック1221で、同期クライアント401は、現在のビジネス・オブジェクトに関してアクティブなフィルタが選択済みであるかどうかを判定する。同期クライアント401は、アクティブなフィルタが選択済みであると判定した場合(例えば、現在のビジネス・オブジェクトに関するフィルタのすべてが見つかっており、1つがデフォルトのフィルタである場合)、オペレーションの流れは、ブロック1203に戻り、次のスクリーンを探す。しかし、同期クライアント401が、アクティブなフィルタがまったく選択されていないと判定した場合(例えば、現在のビジネス・フィルタに関してフィルタがまったく見つかっていない、または見つかったフィルタのいずれもデフォルトのフィルタではない場合)、オペレーションの流れは、ブロック1223に進む。
Returning to block 1207, if the
ブロック1223で、同期クライアント401は、「フィルタなし」フィルタではないフィルタを求めて現在のビジネス・オブジェクトのための見つかったフィルタ(群)を探索する(すなわち、ブロック1211〜1219の1回または複数回の繰り返しによって)。より詳細には、前述したとおり、ビジネス・オブジェクトは、アクティブなフィルタを有さなくてもよい。その場合、この実施形態は、「フィルタなし」フィルタを使用して、ビジネス・オブジェクトがアクティブなフィルタを有さないことを示す。ブロック1223で、同期クライアント401が、見つかったフィルタ(群)のなかで「フィルタなし」フィルタであるフィルタを見つけた場合、ブロック1225で、同期クライアント401は、そのフィルタをアクティブなフィルタとして選択する。
At
しかし、ブロック1223で、そのようなフィルタがまったく見つからなかった場合、オペレーションの流れはブロック1227に進む。ブロック1227の一実施形態では、同期クライアント401は、「フィルタなし」フィルタを求めて見つかったフィルタ(群)を探索する。同期クライアント401は、「フィルタなし」フィルタを見つけた場合、ブロック1229で、そのフィルタをアクティブなフィルタとして選択する。しかし、ブロック1227で、同期クライアント401が「フィルタなし」フィルタを見つけられなかった場合は、ブロック1231で示すとおり、アクティブなフィルタはまったく選択されない。ブロック1229、1231のいずれの後にも、オペレーションの流れは、ブロック1203に戻り、次のスクリーンを探す。
However, if at
ブロック1203で、同期クライアント401がスクリーンを見つけられなかった(例えば、スクリーンのすべてが、ブロック1203の以前の繰り返しで見つかっている)場合、オペレーションの流れはブロック1240に進む。ブロック1240のこの実施形態では、同期クライアント401は、フィルタ設定ファイルを取得する(前述したブロック1103を参照)。前述したとおり、フィルタ設定ファイルは、前回の同期オペレーション後にユーザが変更したフィルタ設定も含む。この実施形態では、フィルタ設定は、各ビジネス・オブジェクトと関連するアクティブ化されたフィルタ(すなわち、ビジネス・オブジェクト/フィルタのペア)を含む。
If, at
ブロック1242で、同期クライアント401は、フィルタ設定ファイルからの次のビジネス・オブジェクト/フィルタのペアを解析する。同期クライアント401は、フィルタ設定ファイルからビジネス・オブジェクト/フィルタのペアのすべてが解析されるまで、ループしてブロック1242に戻る(以下に説明するとおり)。
At
ブロック1244で、同期クライアント401は、ビジネス・オブジェクト/フィルタのペアが空である(すなわち、前回の同期オペレーションにおいてアクティブなフィルタがまったく選択されていない)かどうかを判定する。ビジネス・オブジェクト/フィルタのペアが空である場合、オペレーションの流れはブロック1242に戻り、次のビジネス・オブジェクト/フィルタのペアを解析して取り出す。
At block 1244, the
しかし、ブロック1244で、同期クライアント401が、ビジネス・オブジェクト/フィルタのペアが空でないと判定した場合、オペレーションの流れはブロック1246に進む。ブロック1246で、同期クライアント401は、ビジネス・オブジェクト/フィルタのペアによって示されるビジネス・オブジェクトを求めてデータ構造を探索する(ブロック1205〜1213を参照)。ブロック1246は、ビジネス・オブジェクトが、例えば、ハンドヘルド・アプリケーションの更新の中でもはや存在しない可能性があるため、有用である。ブロック1246で、同期クライアント401が、データ構造の中でビジネス・オブジェクトを見つけられなかった場合、オペレーションの流れはブロック1242に戻り、次のビジネス・オブジェクト/フィルタのペアを解析して取り出す。
However, if at block 1244 the
しかし、同期クライアント401が、ブロック1246でビジネス・オブジェクトを見つけた場合、オペレーションの流れはブロック1248に進む。ブロック1248で、同期クライアント401は、そのフィルタを求めて前述したデータ構造を探索する。ビジネス・オブジェクトに関して前述したとおり、フィルタは、ハンドヘルド・アプリケーションの更新に起因してもはや存在しない可能性がある。ブロック1248で、同期クライアント401が、データ構造の中でフィルタを見つけられなかった場合、オペレーションの流れはブロック1242に戻り、次のビジネス・オブジェクト/フィルタのペアを解析して取り出す。しかし、同期クライアント401は、データ構造の中でフィルタを見つけた場合、その見つかったフィルタをブロック1250でアクティブなフィルタとして設定する。次に、オペレーションの流れはブロック1242に戻り、次のビジネス・オブジェクト/フィルタのペアを解析して取り出す。
However, if the
図12の実施形態のオペレーションの流れは、実際、同期クライアントに関してサーバの中に格納されている最新のフィルタ設定を取り出した後、そのフィルタ設定をデフォルトのアクティブなフィルタに再設定する。次に、前回の同期オペレーションからのローカルに格納されているユーザ設定を使用して、ビジネス・オブジェクトとフィルタに関するデフォルトのアクティブなフィルタを更新する。この実施形態は、ハンドヘルド・アプリケーションが更新されたときに、確実にフィルタ設定が正しくなるのに役立つ。 The operational flow of the embodiment of FIG. 12 actually retrieves the latest filter settings stored in the server for the sync client and then resets the filter settings to the default active filter. It then updates the default active filter for business objects and filters using the locally stored user settings from the previous sync operation. This embodiment helps to ensure that the filter settings are correct when the handheld application is updated.
図13は、本発明の一実施形態によるデータを抽出するためのブロック1007(図10)を示している。この実施形態では、同期クライアントが、ブロック1007のオペレーションを実行する。図10の説明の場合と同様に、ブロック1007のオペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4と図13を参照すると、ブロック1007は、この典型的な実施形態において以下のとおり実行される。
FIG. 13 shows a block 1007 (FIG. 10) for extracting data according to one embodiment of the present invention. In this embodiment, the sync client performs the operation of
ブロック1301で、同期クライアント401が、比較のために、サーバ116からダウンロードされた抽出IDとローカルに格納されていた抽出IDを取得する。前述したとおり、抽出IDにより、データベース抽出のバージョンが識別される。例えば、サーバ116上のデータベース構造が変更された場合、双方の抽出IDは相違する。
In block 1301, the
ブロック1303で、同期クライアント401は、ローカルに格納されていた抽出IDとダウンロードされた抽出IDが一致するかどうかを判定する。抽出IDが一致する場合、オペレーションの流れはブロック1305に進む。ブロック1305で、同期クライアント401は、サーバ116からのデルタ抽出を要求する。前述したとおり、デルタ抽出は、前回の同期オペレーションのときから変更されているデータベースのデータだけを含む。例えば、一実施形態では、各同期クライアントのために、同期エンジン(例えば、図1の同期エンジン118または128)が、各同期オペレーションの後、抽出のコピーを保持する。次に、現在の同期オペレーション中、同期エンジン(例えば、同期エンジン118または128)は、メイン・データベース112(図1)から同期クライアントに関する完全抽出を取り出す。デルタ抽出の場合、同期クライアント401は、格納されている抽出をメイン・データベース112から取り出された完全抽出と比較し、変更されているデータベースのデータだけを同期エンジン(118または128)に伝送する。このデルタ抽出が、次に、同期クライアント401によって受け取られる。
In
反対に、同期クライアント401が、ブロック1303で、双方の抽出IDが一致しないと判定した場合、オペレーションの流れはブロック1307に進む。ブロック1307で、同期クライアント401は、サーバ116からの完全抽出を要求する。すると、サーバ116は、完全抽出を提供し、この完全抽出が、同期クライアント401によって受け取られる。
Conversely, if the
図14は、本発明の一実施形態による圧縮オペレーションを示している。この圧縮オペレーションは、同期クライアント(例えば、図4の同期クライアント401)またはサーバ(例えば、図1のサーバ114または116)によって実行することが可能である。例えば、この圧縮オペレーションは、データベースのデータ(例えば、デルタ抽出)を同期クライアント401に送る前に、サーバ116によって実行することが可能である。この圧縮アルゴリズムは、同期クライアント401が情報をサーバ116に送り返すのに使用することもできる。例えば、この圧縮オペレーションは、ブロック703(図7)を実施するのに使用することができる。この圧縮オペレーションにより、サーバと同期クライアントの間で情報を転送するのに必要とされる時間が短縮される。
FIG. 14 illustrates a compression operation according to one embodiment of the present invention. This compression operation can be performed by a sync client (eg,
ブロック1401で、伝送される情報が圧縮される。一実施形態では、情報は、データベースのデータ、トランザクション・データまたはメタデータなどのバイナリ・データである。任意の適切な圧縮アルゴリズムを使用することができる。一実施形態では、バイナリ情報は、www.info−zip.orgから入手可能なZIP2.3圧縮ユーティリティーを使用して圧縮される。他の実施形態では、他の圧縮アルゴリズムを使用することができる。
At
ブロック1403で、圧縮済みのバイナリ・データがテキストに変換される。一実施形態では、圧縮済みのバイナリ・データは、標準のBase64符号化を使用してテキストに変換される。テキストへの変換は、伝送プロセス中のデータの破壊を減少させるのに役立つ。さらなる改良形態では、テキスト・データは、XML(拡張マークアップ言語)またはHTML(ハイパーテキストマークアップ言語)などのマークアップ言語を使用するマークアップを含むことが可能である。
At
ブロック1405で、ブロック1403で生成されたテキスト・データが、サーバと同期クライアントの間の接続用のプロトコルを使用して符号化される。一実施形態では、標準のハイパーテキスト転送プロトコル(HTTP)を使用して、インターネットを介する伝送のためにテキスト・データを符号化する。他の実施形態では、サーバと同期クライアントの間における接続の性質に応じて、異なるプロトコルを使用することができる。例えば、他の実施形態では、テキスト・データは、ファイル転送プロトコル(FTP)符号化することが可能である。次に、この圧縮され、符号化された情報を宛先の受取側に送る。一部の実施形態では、ブロック1403は、ブロック1405がテキストの代わりにブロック1401からの圧縮済みのバイナリ・データを符号化して、省略することができる。
At
このオペレーションのさらなる改良形態では、送られる情報は、より小さいユニットに分割することができ、このより小さいユニットが、次に、ブロック1401、1403、1405に従って別々に圧縮され、符号化される。このより小さいユニットが、受取側に別々に送られて、情報の次のユニットを受け取る前に、受取側が、(a)圧縮された情報ユニットを格納し、(b)格納済みの圧縮された情報ユニットを圧縮解除し、(c)圧縮解除された情報ユニットを格納し、(d)圧縮された情報ユニットを削除する。この改良形態により、受取側が伝送された情報を適切に受け取り、圧縮解除するのに必要とする利用可能なメモリの量が減少する。
In a further refinement of this operation, the information sent can be divided into smaller units, which are then separately compressed and encoded according to
サーバ・プロセス
図15は、本発明の一実施形態によるサーバの同期プロセスを示している。この実施形態では、サーバは、同期クライアントに接続される。例えば、同期クライアントは、サーバに対する直接接続を有するハンドヘルド・デバイス内に存在する。一実施形態では、ハンドヘルド・デバイスとサーバは、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)とすることが可能である。別法として、同期クライアントは、コンパニオン・デバイスとハンドヘルド・デバイス(例えば、図5におけるようなコンパニオン・デバイス124やハンドヘルド・デバイス120−2)の組み合わせによって実装することもできる。便宜上、サーバのオペレーションを、サーバ116(図1)とハンドヘルド・デバイス120−3(図4)に関連させて説明する。本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。
Server Process FIG. 15 illustrates a server synchronization process according to one embodiment of the invention. In this embodiment, the server is connected to a sync client. For example, the sync client resides in a handheld device that has a direct connection to the server. In one embodiment, the handheld device and server may be handheld device 120-3 (FIG. 4) and server 116 (FIG. 1). Alternatively, the sync client can be implemented by a combination of a companion device and a handheld device (eg,
図4、図15を参照すると、サーバの一実施形態が、以下のとおり同期クライアントに連携して動作する。ブロック1501で、サーバが同期クライアントに接続される。同期クライアントは、何らかの実施形態におけるコンパニオン・デバイス内に存在することが可能である。この実施形態では、サーバ116は、ユーザがログインしたことに応答して同期クライアント401に接続される。一実施形態では、サーバ116は、モデムを動作させて同期クライアント401に直接にアクセスするインターフェースまたはドライバを実行する。他の実施形態では、この接続はインターネット接続である。さらに他の実施形態では、接続は、RF技術または光技術を使用して直接の通信リンク、Webベースの通信リンク、または他のタイプの通信リンクを実施する無線接続である。
4 and 15, one embodiment of the server operates in cooperation with the synchronization client as follows. At
ブロック1503で、サーバは、初期設定データを同期クライアントにダウンロードする。一実施形態では、サーバ116が、接続132を介して初期設定データを同期クライアント401にダウンロードする。前述したとおり、この初期設定データは、メイン・データベース112の最新バージョン(例えば、抽出ID)、同期クライアント401によってサーバ116にアップロードされた最新のトランザクションの識別子、さらにハンドヘルド・アプリケーションの最新バージョン(例えば、リポジトリID)に関連する情報を含む。
At
ブロック1505で、サーバは、同期クライアントからトランザクション情報を受け取る。一実施形態では、サーバ116が、同期クライアント401からトランザクション情報を受け取り、そのトランザクション情報をコンピュータ・システム(図1)のメモリ(図示せず)に格納する。例えば、サーバ116は、同期クライアント401からの記録済みのトランザクションのすべてに関するトランザクション情報を1つの比較的大きいブロックのデータで受け取る。別法として、サーバ116は、同期クライアント401からいくつかのより小さいブロックでトランザクション情報を受け取っても良い。この代替の実施形態では、サーバ116は、それぞれのより小さいブロックを受け取った後、次のより小さいブロックを送るように同期クライアント401に知らせる受取確認をその同期クライアント401に提供する。
At
ブロック1507で、サーバは同期クライアントへメタデータを送る。一実施形態では、サーバ116が同期クライアント401にメタデータを送る。前述したとおり、このメタデータは、ハンドヘルド・アプリケーションに関するアプリケーション定義を含む。この実施形態では、サーバ116は、同期クライアント401からの要求に応答してブロック1507を実行する。前述したとおり、同期クライアント401は、サーバ116の中に格納された(最新の同期オペレーションから)アプリケーションが、ローカルに格納されているアプリケーション定義バージョンと一致しない場合、メタデータを要求する。この状況は、アプリケーション定義が、前回の同期オペレーション後に更新されている場合に生じることがある。別の実施形態では、同期クライアント401が、バージョンを比較することなしに、同期オペレーション中、メタデータを常に要求するように構成される。この代替の実施形態では、サーバ116は、前回の同期オペレーション以降、アプリケーション定義が更新されているかどうかを判定し、更新されている場合、メタデータを同期クライアント401に送る。この代替の実施形態のさらなる改良形態では、サーバ116は、同期クライアント401からの要求を待つことなしに、以上のオペレーションを自動的に実行し、アプリケーション定義が更新されている場合、メタデータを同期クライアント401にプッシュすることができる。
At
ブロック1509で、サーバは、同期クライアントのローカル・データベースを更新する。一実施形態では、サーバ116が、同期クライアント401から要求を受け取って、データ抽出オペレーションを開始する。この実施形態では、サーバ116は、データ抽出オペレーションを実行する前に更新されたフィルタ設定(上記の図11、図12の説明を参照)を受け取ることができる。このため、サーバ116は、データ、不要なデータベースのデータをダウンロードすることを回避し、これは、電池の電力を節約し、同期プロセスを完了させるのに必要とされる時間を短縮するのに役立つ。一実施形態では、サーバ116は、データ抽出全体(すなわち、同期クライアントに可視であり、フィルタリングした後のデータ)を単一の大きいブロックでダウンロードする。代替の実施形態では、サーバ116は、同期クライアント401による要求に応答して比較的小さいブロックのデータ抽出をダウンロードしてもよい。同期クライアント401が、この比較的小さいブロックを適切に受け取った場合、同期クライアント401は、次の比較的小さいブロックを求める要求を送り、同期クライアント401がサーバ116からデータ抽出全体を受け取るまで、以下同様に行われる。このデータ抽出は、完全抽出またはデルタ抽出とすることが可能である(図16に関連して以下により詳細に説明する)。
At
ブロック1511で、サーバが同期クライアントから切り離される。この実施形態では、サーバ116が、ユーザが開始した(または同期オペレーションの完了時に同期クライアント401によって自動的に実行された)ログアウト・プロセスに応答して、同期クライアント401から切り離される。代替の実施形態では、ブロック1509のオペレーションを実行した後、サーバ116が同期クライアント401から自動的に切り離される。
At block 1511, the server is disconnected from the sync client. In this embodiment, the
図16は、本発明の一実施形態によるブロック1509(図15)を示している。この実施形態では、サーバがブロック1509のオペレーションを実行する。図15の説明の場合と同様に、ブロック1509のオペレーションを、ハンドヘルド・デバイス120−3(図4)とサーバ116(図1)に関連させて説明する。ただし、本開示に鑑みて、以下の説明は、必要以上に実験を行うことなしに、他のタイプの同期クライアントにも当てはまることは当業者には理解できるであろう。図4、図16を参照すると、ブロック1509は、この典型的な実施形態において以下のとおり実行される。
FIG. 16 shows block 1509 (FIG. 15) according to one embodiment of the invention. In this embodiment, the server performs the operation of
ブロック1601で、サーバ116が、同期クライアント401に可視であるデータをメイン・データベース112から抽出する。さらに、サーバ116は、同期クライアント401によってサーバ116に提供されたフィルタ設定に従ってそのデータをフィルタリングする(図11、図12に関連して説明した)。
At
ブロック1603で、サーバ116は、後の同期オペレーションにおいて後に使用するために、抽出済みのデータのファイルをメモリ(図示せず)に保存する。ブロック1605で、サーバ116は、この抽出を前回の同期オペレーションからの抽出されたデータを含むファイルと比較する。対応するデータベース・レコードからのデータが異なる場合、ブロック1607で、サーバ116は、より新しい抽出からのデータ(すなわち、「デルタ」)を本明細書でデルタ抽出ファイルと呼ぶ別のファイルの中に保存する。一実施形態では、サーバ116は、デルタ抽出を同期クライアント401が受け取ると、同期クライアント401はそのデルタ抽出から解析することができるレコード/データのペアとして各デルタを格納する。この実施形態では、予約されたデリミタが、各レコード内のフィールドを分離し、異なる予約されたデリミタがレコードを分離する。一実施形態では、エスケープ機構を使用して、これらの予約されたデリミタが、レコード・フィールド値とともに現れるようにすることができる。さらに、一部の実施形態では、デルタ抽出ファイルは、レコードが削除されているか、新規であるか、または変更されているかを示す各レコード/データのペアに関するインジケータを含むこともある。
At
さらなる改良形態では、デルタ抽出は、デルタ抽出ファイルのサイズをさらに小さくするために、レコード・レベル(いくつかのフィールドを含む可能性がある)ではなく、フィールド・レベルで実行される。 In a further refinement, delta extraction is performed at the field level rather than the record level (which may include several fields) to further reduce the size of the delta extraction file.
次に、ブロック1609で、サーバ116は、同期クライアント401に完全抽出をダウンロードするか、デルタ抽出をダウンロードするかを判定する。一実施形態では、サーバ116は、完全抽出か、またはデルタ抽出を求める要求を同期クライアント401から受け取る。前述したとおり、一実施形態では、同期クライアント401は、サーバ116からダウンロードされた抽出IDが同期クライアント401によってローカルに格納されていた抽出IDに一致するかどうかに基づいてこの要求を行う。1つの典型的な実施形態では、ローカル・データベース308の構造が、前回の同期オペレーション以降に変更されている(例えば、メイン・データベース112または可視性規則の変更に起因して)場合、双方の抽出IDが相違し、同期クライアントは完全抽出を要求する。ローカル・データベース308の構造が変更されていない場合、双方の抽出IDは同一であり、同期クライアント401はデルタ抽出を要求する。ブロック1609の結果に応じて、サーバ116は、ブロック1611または1613で、同期クライアント401に、それぞれ、完全抽出を送るか、またはデルタ抽出を送る。
Next, at
別の実施形態では、サーバ116は、同期クライアントからローカルに記憶されていた抽出IDを受け取り、その受け取った抽出IDをサーバ116の中に格納されている最新の抽出IDと比較する。例えば、サーバ116は、そのデータを同期クライアント401へ要求することができ、あるいは、これは、データ抽出プロセス(例えば、抽出IDの代わりに、同期クライアントが、自らのローカル抽出IDを提供すること以外は、図10のブロック1101と同様である)の一環であってもよい。次に、サーバ116は、適宜、デルタ抽出をダウンロードするか、または完全抽出をダウンロードするかを判定することができる。例えば、サーバ116が、同期クライアント401の代わりに、ブロック1301、1303(図13)を実行することもできる。
In another embodiment, the
同様な形で、サーバ116は、メタデータを同期クライアント401に提供するかどうかを判定する際(図6のブロック609を参照)、リポジトリIDを受け取る。例えば、サーバ116は、そのデータを同期クライアント401へ要求することができ、あるいは、これは、データ抽出プロセスの一環(例えば、リポジトリIDを取得する代わりに、同期クライアントが自らのローカルに格納されているリポジトリIDを提供すること以外は、図6のブロック605と同様である)であってもよい。次に、サーバ116は、メタデータをダウンロードするかどうかを判定することができる。例えば、サーバ116が、同期クライアント401の代わりにブロック901および903(図9)を実行するように構成される。
In a similar manner, the
要約書で説明していることを含め、本発明の例示した実施形態の以上の説明は、本発明を網羅する、または開示した形態そのものに限定するものではない。本発明の特定の実施形態、および例を本明細書で、例示の目的で説明しているが、当業者なら理解できるように、本発明の範囲内で様々な均等な変更が可能である。 The above description of illustrated embodiments of the invention, including what is described in the abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While particular embodiments and examples of the present invention have been described herein for purposes of illustration, various equivalent modifications are possible within the scope of the present invention, as will be appreciated by those skilled in the art.
以上の詳細な説明に鑑みて、それらの変更を本発明に対して行うことができる。以下の特許請求の範囲で使用する用語は、本明細書および特許請求の範囲で開示する特定の実施形態に本発明を限定するものと解釈してはならない。むしろ、本発明の範囲は、請求項解釈の既成の原則に従って解釈されるべき特許請求の範囲によって完全に確定されるべきものである。 In light of the above detailed description, these changes can be made to the invention. The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification and the claims. Rather, the scope of the present invention is to be determined entirely by the following claims, which are to be construed in accordance with established principles of claim interpretation.
Claims (19)
前記サーバが、前記ハンドヘルド・デバイス上で実行するソフトウェア処理である同期クライアントからフィルタ情報をデータ接続を介して受け取るステップと、
前記サーバが、前記第1のデータベースを前記フィルタ情報に基づいてフィルタリングするステップと、
前記サーバが、前記第1のデータベースのフィルタされたデータを格納するファイルを作成するステップであって、このファイルに格納されたフィルタされたデータは前記第1のデータベースに格納された、すべてのデータではなくて一部のデータのコピーである、前記作成するステップと、
前記サーバが、前記フィルタされたデータを前回作成されたファイルのデータと比較するステップであって、前記前回作成されたファイルは前記第1と第2のデータベースを同期させる前回のオペレーション中に前記サーバによってフィルタされた前記第1のデータベースのデータのコピーを含む、前記比較するステップと、
前記サーバが、前記フィルタされたデータのサブセットのみを前記同期クライアントに伝送するステップであって、前記サブセットは前回作成されたファイルのデータに匹敵しない前記ファイルのフィルタされたデータを含む、前記伝送するステップとを具備する方法。 A method of synchronizing the first and second databases of the server and handheld device, respectively,
Receiving, via a data connection, filter information from a sync client, the server being a software process executing on the handheld device;
The server filtering the first database based on the filter information;
The server creating a file storing filtered data of the first database, wherein the filtered data stored in the file is all data stored in the first database; And the creating step, which is a copy of some of the data,
Said server comparing said filtered data with data of a previously created file, wherein said previously created file synchronizes said first and second databases during said previous operation. The comparing comprising a copy of the data of the first database filtered by
The server transmits only a subset of the filtered data to the sync client, the subset including the filtered data of the file that is not comparable to the data of the previously created file. Comprising a step .
前記サーバが、前記第1と第2のデータベースを同期させる前回のオペレーションが実行されたときに前記ハンドヘルド・デバイスに格納された前記第1のデータベースの構造を示す情報を前記同期クライアントから受け取るステップと、
前記サーバが、前記構造を示す情報を前記第1のデータベースの現在の構造を示す情報と比較するステップとを含む請求項2に記載の方法。It said first structure determining whether the updated since the last the Operation synchronizing the first and second database database,
The server, the synchronization client structure shown to information of the first database stored in the handheld device when the first and last the Operation synchronizing the second database is performed Receiving steps from
Said server The method of claim 2 including the step of comparing the information indicating the current structure of the information indicating the structure of the first database.
前記サーバが、前記ハンドヘルド・デバイス上で実行しているアプリケーションのバージョンを示し、かつ、前記ハンドヘルド・デバイスに格納された情報を前記同期クライアントから受け取るステップと、
前記サーバが、前記ハンドヘルド・デバイス上で実行しているアプリケーションの前記バージョンを示す情報を前記ハンドヘルド・デバイス上で実行していない前記アプリケーションの現在のバージョンを示す情報と比較するステップとを含む請求項4に記載の方法。 Wherein determining whether the application is updated Rubeki running on handheld devices,
The server indicating a version of an application running on the handheld device and receiving information stored on the handheld device from the sync client;
Claims, including a step in which the server is compared with the information indicating the current version of the application that the information indicating the version of the application running is not running on the handheld device on the handheld device 4. The method according to 4 .
前記サーバが、前記同期クライアントに提供された最新の受け取ったトランザクションの識別子を受け取るステップと、
前記サーバが、前記最新の受け取ったトランザクション後に行われた各トランザクションの識別子を含むトランザクション情報を前記同期クライアントから受け取るステップとを含む請求項1に記載の方法。 The server, the information of the transaction that the user performs on the second database via the handheld device, comprising: receiving from the synchronization client, Ru is performed for the second database transaction The step of receiving the information of
A step wherein the server, that receive an identifier of a transaction received Recently provided to the synchronization client,
Said server The method of claim 1, the transaction information including the identifier of each transaction made after transactions received of said date and a step of receiving from the synchronization client.
トランザクション・エラーが検出された際、そのエラー情報を前記同期クライアントに送るステップを更に含む請求項6に記載の方法。 Receiving information of a transaction that will be performed on the second database,
When a transaction error is detected, The method of claim 6 step further including up to send the error information to the synchronization client.
ユーザ独自のフィルタ情報を同期クライアントから受け取る手段と、
前記ハンドヘルド・デバイスのユーザに見えるデータを前記第1のデータベース内で指示する手段と、
前記ユーザ独自のフィルタ情報に基づいて前記指示された情報をフィルタリングする手段と、
このフィルタされたデータのコピーをファイルに格納する手段と、
前記ファイルに格納されたフィルタされたデータを前回作成されたファイルのデータと比較する手段であって、前記前回作成されたファイルは前記第1と第2のデータベースを同期させる前回のオペレーション中にフィルタされた前記第1のデータベースのデータのコピーを含む、前記比較する手段と、
前記フィルタされたデータのサブセットのみを前記同期クライアントに伝送する手段であって、前記サブセットは前回作成されたファイルのデータに匹敵しない前記ファイルのフィルタされたデータを含む、前記伝送する手段とから構成されるシステム。 A system for synchronizing the first and second databases of the server and the handheld device, respectively;
Means for receiving user-specific filter information from the sync client;
Means for instructing the data may look to the user of the handheld device within the first database,
It means for filtering the instruction information based on the user-specific filter information,
Means for storing a copy of this filtered data in a file;
Means for comparing the filtered data stored in the file with data of a previously created file, wherein the previously created file is filtered during a previous operation of synchronizing the first and second databases; Said means for comparing comprising a copy of said first database data
And means for transmitting only a subset of the filtered data to the synchronization client, wherein the subset comprises the filtered data of the file which is not comparable to the data of the file that was previously created, composed of a means for the transmission System.
前記第1と第2のデータベースを同期させる前回のオペレーションが実行されたときに前記ハンドヘルド・デバイスに格納された前記第1のデータベースの構造を示す情報を受け取る手段と、
前記構造を示す情報を前記第1のデータベースの現在の構造を示す情報と比較する手段とを含む請求項9に記載のシステム。Wherein said means for determining whether the updated since the last the Operation of the structure of the first database synchronizing the first and second databases,
It means for receiving said first and structure shown to information of the first database stored in said handheld device when the previous operation to be synchronized is executed a second database,
10. The system of claim 9 , comprising means for comparing information indicative of the structure with information indicative of a current structure of the first database .
前記ハンドヘルド・デバイス上で実行している前記アプリケーションのバージョンを示し、かつ、前記ハンドヘルド・デバイスに格納された情報を受け取る手段と、
前記格納された情報を前記ハンドヘルド・デバイス上で実行していない前記アプリケーションの現在のバージョンを示す情報と比較する手段とを含む請求項11に記載のシステム。 Said means for determining whether the said application updates running Rubeki on handheld devices,
It indicates the version of the application running on the handheld device, and means for receiving a pre-Symbol information stored in the handheld device,
The system of claim 11 including means for comparing the information indicating the current version of the application that is not running the stored information on the handheld device.
最新の受け取ったトランザクションの識別子を提供する手段と、
前記最新の受け取ったトランザクション後に行われた各トランザクションの識別子を含むトランザクション情報を受け取る手段とを含む請求項9に記載のシステム。 The information of the transaction that the user performs on the second database via the handheld device, comprising: means for receiving from the synchronization client, receives information of the transaction that will be performed on the second database means,
Means for providing an identifier for the latest received transaction;
10. The system of claim 9 , further comprising means for receiving transaction information including an identifier for each transaction performed after the most recently received transaction.
トランザクション・エラーが検出された際、そのエラー情報を前記同期クライアントに送る手段を更に含む請求項13に記載のシステム。Means for receiving information of transactions executed on the second database;
14. The system of claim 13 , further comprising means for sending error information to the sync client when a transaction error is detected.
第2のデータベースを含むハンドヘルド・デバイスのユーザに見えるデータを第1のデータベース内で指示するオペレーションと、
前記ユーザ独自のフィルタ情報に基づいて前記指示されたデータをフィルタリングするオペレーションと、
このフィルタされたデータのコピーをファイルに格納するオペレーションと、
前記ファイルに格納された前記フィルタされたデータを前回作成されたファイルのデータと比較するオペレーションであって、前記前回作成されたファイルは前記第1と第2のデータベースを同期させる前回のオペレーション中にフィルタされた前記第1のデータベースのデータのコピーを含む、前記比較するオペレーションと、
前記フィルタされたデータのサブセットを前記同期クライアントに伝送するオペレーションであって、前記サブセットは前回作成されたファイルのデータに匹敵しない前記ファイルのフィルタされたデータを含む、前記伝送するオペレーションとを実行させる複数の命令を格納したマシン可読媒体。When executed by a computer,
An operation in the first database indicating data visible to a user of a handheld device that includes the second database ;
And operations of filtering the instruction data based on the user-specific filter information,
An operation to store a copy of this filtered data in a file;
An operation of comparing the filtered data stored in the file with data of a previously created file, wherein the previously created file is synchronized during a previous operation of synchronizing the first and second databases. The comparing operation comprising a filtered copy of the first database data;
A operation of transmitting a subset of the filtered data to the synchronization client, wherein the subset comprises the filtered data of the file which is not comparable to the data files created last time, to perform the operations that the transmission A machine-readable medium that stores multiple instructions.
前記第1と第2のデータベースを同期させる前記前回のオペレーションが実行されたときに前記ハンドヘルド・デバイス上に格納された前記第1のデータベースの構造を示す情報を前記同期クライアントから受け取るオペレーションと、
前記構造を示す情報を前記第1のデータベースの現在の構造を示す情報と比較するオペレーションとを実行させる命令を含む請求項16に記載のマシン可読媒体。The instruction is executed by the computer running the first and the operation determines whether the structure of the first database to turn Bae subsequent translation of the last synchronizing is updated second database When the computer
The receive structure of the first database stored on the handheld device to indicate to information from the synchronization client when the first and the last the Operation synchronizing the second database is performed Operations,
Machine-readable medium of claim 16 comprising instructions to perform the operations to be compared with the information indicating the current structure of the information indicating the structure of the first database.
前記ハンドヘルド・デバイス上で実行している前記アプリケーションのバージョンを示し、かつ、前記ハンドヘルド・デバイスに格納された情報を前記同期クライアントから受け取るオペレーションと、
前記情報を前記ハンドヘルド・デバイス上で実行していない前記アプリケーションの現在のバージョンを示す情報と比較するオペレーションとを実行させる命令を含む請求項18に記載のマシン可読媒体。 Wherein the instructions, when executed by the computer to perform the operation for determining whether or not the application is updated Rubeki, the computer,
And operations shows the version of the application running on the handheld device, and to receive the pre-Symbol information stored in the handheld device report from the synchronization client,
Machine-readable medium of claim 18 comprising instructions to perform the operations to be compared with the information indicating the current version of the application that is not running the information on the handheld device.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8462802A | 2002-02-25 | 2002-02-25 | |
PCT/US2003/005773 WO2003073292A1 (en) | 2002-02-25 | 2003-02-25 | Method and system for server-based operations in server synchronization with a computing device |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005518605A JP2005518605A (en) | 2005-06-23 |
JP2005518605A5 JP2005518605A5 (en) | 2006-04-27 |
JP4343704B2 true JP4343704B2 (en) | 2009-10-14 |
Family
ID=27765324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003571918A Expired - Lifetime JP4343704B2 (en) | 2002-02-25 | 2003-02-25 | Method and system for server-based operations in server synchronization with computing devices |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1490770A4 (en) |
JP (1) | JP4343704B2 (en) |
AU (1) | AU2003219896A1 (en) |
WO (1) | WO2003073292A1 (en) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395446B2 (en) * | 2004-05-03 | 2008-07-01 | Microsoft Corporation | Systems and methods for the implementation of a peer-to-peer rule-based pull autonomous synchronization system |
US20050262166A1 (en) * | 2004-05-05 | 2005-11-24 | Microsoft Corporation | Method and system for synchronizing data between electronic devices |
EP1812848A4 (en) * | 2004-09-15 | 2009-04-29 | Adesso Systems Inc | System and method for managing data in a distributed computer system |
US20100325153A1 (en) * | 2009-06-17 | 2010-12-23 | Microsoft Corporation | Synchronized distributed media assets |
US7953696B2 (en) * | 2005-09-09 | 2011-05-31 | Microsoft Corporation | Real-time synchronization of XML data between applications |
US9514163B2 (en) | 2005-11-17 | 2016-12-06 | International Business Machines Corporation | Database consolidation tool |
US7739410B2 (en) | 2007-01-07 | 2010-06-15 | Apple Inc. | Synchronization methods and systems |
US7660831B2 (en) | 2007-01-07 | 2010-02-09 | Apple Inc. | Synchronization methods and systems |
US7805403B2 (en) | 2007-01-07 | 2010-09-28 | Apple Inc. | Synchronization methods and systems |
US7778971B2 (en) | 2007-01-07 | 2010-08-17 | Apple Inc. | Synchronization methods and systems |
US8239504B2 (en) | 2007-01-07 | 2012-08-07 | Apple Inc. | Synchronization methods and systems |
US7761414B2 (en) | 2007-01-07 | 2010-07-20 | Apple Inc. | Asynchronous data synchronization amongst devices |
US9240015B2 (en) * | 2009-05-08 | 2016-01-19 | A2Zlogix, Inc. | Method and system for synchronizing delivery of promotional material to computing devices |
US9836770B2 (en) | 2012-02-24 | 2017-12-05 | Ad Persistence, Llc | Data capture for user interaction with promotional materials |
DE112016004861T5 (en) | 2015-10-23 | 2018-07-19 | Kodiak Networks Inc. | System and method for geofencing |
WO2017070551A1 (en) * | 2015-10-23 | 2017-04-27 | Kodiak Networks Inc. | System and method for content messaging |
JP6720792B2 (en) * | 2016-09-15 | 2020-07-08 | セイコーエプソン株式会社 | Device management device and device management program |
CN108076081B (en) * | 2016-11-09 | 2021-02-26 | 菜鸟智能物流控股有限公司 | Method, device and system for synchronizing service data |
CN107066594B (en) * | 2017-04-19 | 2021-02-26 | 浪潮集团有限公司 | Metadata synchronization method |
CN110442588A (en) * | 2019-07-05 | 2019-11-12 | 深圳壹账通智能科技有限公司 | Information synchronous updating method, device, computer equipment and storage medium |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884323A (en) * | 1995-10-13 | 1999-03-16 | 3Com Corporation | Extendible method and apparatus for synchronizing files on two different computer systems |
US5857201A (en) * | 1996-06-18 | 1999-01-05 | Wright Strategies, Inc. | Enterprise connectivity to handheld devices |
WO1998040805A2 (en) * | 1997-02-27 | 1998-09-17 | Siebel Systems, Inc. | Method of synchronizing independently distributed software and database schema |
US6295541B1 (en) * | 1997-12-16 | 2001-09-25 | Starfish Software, Inc. | System and methods for synchronizing two or more datasets |
US6205448B1 (en) * | 1998-01-30 | 2001-03-20 | 3Com Corporation | Method and apparatus of synchronizing two computer systems supporting multiple synchronization techniques |
US6304882B1 (en) * | 1998-05-05 | 2001-10-16 | Informix Software, Inc. | Data replication system and method |
WO2000033217A1 (en) * | 1998-11-30 | 2000-06-08 | Siebel Systems, Inc. | Client server system with thin client architecture |
-
2003
- 2003-02-25 EP EP03716180A patent/EP1490770A4/en not_active Ceased
- 2003-02-25 JP JP2003571918A patent/JP4343704B2/en not_active Expired - Lifetime
- 2003-02-25 WO PCT/US2003/005773 patent/WO2003073292A1/en active Application Filing
- 2003-02-25 AU AU2003219896A patent/AU2003219896A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2005518605A (en) | 2005-06-23 |
EP1490770A4 (en) | 2007-02-28 |
AU2003219896A1 (en) | 2003-09-09 |
WO2003073292A1 (en) | 2003-09-04 |
EP1490770A1 (en) | 2004-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4344324B2 (en) | Method and system for server synchronization with a computing device | |
US7526575B2 (en) | Method and system for client-based operations in server synchronization with a computing device | |
JP4343704B2 (en) | Method and system for server-based operations in server synchronization with computing devices | |
US7415539B2 (en) | Method and apparatus for detecting insufficient memory for data extraction processes | |
US7257649B2 (en) | Method and system for transferring information during server synchronization with a computing device | |
US8463944B2 (en) | Optimal compression process selection methods | |
US7013316B1 (en) | System and method for synchronizing multiple database files | |
US20020073076A1 (en) | System and method for enabling off-line database functionality | |
US8131819B2 (en) | System and method for effectively implementing an electronic image manager device | |
US6163779A (en) | Method of saving a web page to a local hard drive to enable client-side browsing | |
US20020174206A1 (en) | Web-based file manipulating system | |
KR20050043689A (en) | Optimizing file replication using binary comparisons | |
US20020029228A1 (en) | Remote access of archived compressed data files | |
KR101138549B1 (en) | Synchronizati0n methods and systems | |
JP2005115920A (en) | Electronic device, network apparatus, management method, software update method, management program, software update program, and recording medium | |
EP2615563A1 (en) | Device for synchronously sharing files and method for synchronously sharing files | |
US6714950B1 (en) | Methods for reproducing and recreating original data | |
JP2000200233A (en) | Device and method for data acquisition notification and recording medium | |
JP2019074954A (en) | Information processing device, management server, information processing method, and program | |
JP2002251348A (en) | System and program for reading contents data | |
US7246126B2 (en) | Communications system for retrieving instruction files from a server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060227 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060227 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060307 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081125 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090225 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090304 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090325 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090401 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090423 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090501 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090525 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090623 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090709 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120717 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4343704 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120717 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130717 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |