本発明の実施の形態を図1〜図19を用いて説明すれば以下のとおりである。
図2(a)は、本実施の形態に係る通信システムを示すブロック図である。図2(a)に示されるように、通信システム1には、3つのノード、すなわちサーバAと、デスクトップパソコンなどのパソコンBと、PDA等のモバイル端末Cとを備えている。
そして、各ノード(A〜C)は、入力を行う入力部(図示せず)と、出力を画面表示する表示部(図示せず)とを備えている。このデータベース4A〜4Cはスケジュールアプリケーション内のデータベースであり、以下、このスケジュールアプリケーション内のデータをレコードと称する。
同期処理は、各ノード(A〜C)間の同期情報の送受信によって行われる。すなわち、モバイル端末CがパソコンBへ第1の同期情報を送信し、これを受けてパソコンBがサーバAに第2の同期情報を送信し、これを受けてサーバAがパソコンBへ第3の同期情報を送信し、これを受けてパソコンBがモバイル端末Cへ第4の同期情報を送信する。
ここで、上記の第1〜4の同期情報とは、各ノード(A〜C)を同期するためにこれらから送信されるレコード(レコードを含む必要のない場合は送信なし信号)である。(なお、各ノード(A〜C)が他のノードにレコード等のデータを送信する際、これをパケットにして送信するものとする)
また、上記のレコードは、レコードIDと更新時刻とを含む複数のデータフィールドから構成されている。なお、データ内容が含まれた複数のデータフィールドをまとめて1レコード単位と数える。図2(b)に、このレコードの具体例を示す。同図に示されるように、図2(b)の例では、「レコードID」、「更新時刻」、「予定日」、「場所」の4つデータフィールドをもって1レコード単位とされる。
レコードIDは、レコードを認識するためのものである。また、更新時刻とは、各ノード(A〜C)において、レコード内のいずれかのデータが最後に更新された時刻を示す。
図2(b)の例では、「レコードID」、「更新時刻」、「予定日」、「場所」がそれぞれ、「000001」、「2003年10月1日17時00分」、「2003年10月5日」、「Aビル」となる。すなわち、このレコードID00001のレコードは、2003年10月1日17時00分に最後に更新され、その時点での内容は、予定日が2003年10月5日、場所がAビルとなっている。
〔実施の形態1〕
本発明の実施の形態1を図1、図3〜図8に基づいて説明すれば、以下のとおりである。
図1は、本実施の形態に係る通信システム1をより詳細に示したブロック図である。まず、同期処理手順の概略を以下に説明する。
図1に示されるとおり、通信システム1の同期処理においては、モバイル端末C(第1の通信機器)を始点とし、パソコンB(通信機器、中継用通信機器)を経由して、サーバA(第1の通信機器)へ向けて同期処理が実行される。このとき、サーバAからモバイル端末Cへの同期経路の途中でパソコンBを必ず通過することとし、プロキシ部7B(同期情報処理部)は、モバイル端末CもしくはサーバAから送信されるレコードを取得し、これとパソコンB(データベース4B)内のレコードとの同期を行う。
すなわち、第1の同期情報として、モバイル端末CにてレコードCB(第1のレコード、モバイル端末Cで更新されたレコード)が生成され、これがパソコンBへ送信される。なお、モバイル端末Cで更新されたレコードが存在しない場合には、第1の同期情報として送信なし信号が送信される。
パソコンBは、このレコードCBを受けて第2の同期情報となるレコードBA(第2のレコード)を生成し、これをサーバAへ送信する。なお、モバイル端末C・パソコンBのいずれにおいても更新されたレコードが存在しない場合には、第2の同期情報として送信なし信号が送信される。
サーバAは、このレコードBAを受けて第3の同期情報となるレコードAB(第3のレコード)を生成し、これをパソコンBへ送信する。なお、例えば、サーバAで更新されたレコードが存在しない場合には、第3の同期情報として送信なし信号が送信される。
パソコンBは、このレコードABを受けて第4の同期情報となるレコードBC(第4のレコード、)をモバイル端末Cへ送信する。なお、例えば、パソコンB・サーバAのいずれにおいても更新されたレコードが存在しない場合には、第4の同期情報として送信なし信号が送信される。
また、本実施の形態では、各ノード(A〜C)おいて、受信したレコードとその相当レコードとの優先基準を両レコードがもつ更新時刻のデータとする。すなわち、一番新しい更新時刻をもつレコードの内容を基準として、通信システム1の各ノード(モバイル端末C、パソコンB、サーバA)の同期が行われる。
なお、モバイル端末Cからは同期開始を意味する同期開始信号(モバイル端末CのデバイスIDに相当するもの)がパソコンBへ送信され、また、これを受けたパソコンBも同期開始信号(パソコンBのデバイスIDに相当するもの)がサーバAへ送信される。同期開始信号を受信したノード(パソコンB・サーバA)は取得したデバイスIDを基に同期の相手を認識する。
また、同期終了を意味する信号として、同期(終了)時刻がサーバAからパソコンBへ送信され、同期時刻を受けたパソコンBはモバイル端末Cへこれを転送する。サーバA、パソコンBは同期(終了)時刻を送信することをもって同期処理を終了する。またモバイル端末Cは受信した同期(終了)時刻を同期時刻記録部5Cに上書き更新することをもって同期処理を終了する。
次に、各ノード(サーバA、パソコンB、モバイル端末C)の具体的構成と機能を説明する。図1に示されるように、サーバA(第1の通信機器)は、同期管理部3A(同期情報管理部)およびレコード管理部2Aを有する同期エンジン部7Aと、データベース4Aと、同期時刻記録部5Aとを備えている。パソコンBは、同期制御部3B(判定手段)およびレコード管理部2B(更新手段)並びに送信記憶部8B(記憶手段)を有するプロキシ部7Bと、データベース4Bと、同期時刻記録部5Bとを備えている。モバイル端末Cは、同期管理部3C(同期情報管理部)およびレコード管理部2Cを有する同期エンジン部7Cと、データベース4Cと、同期時刻記録部5Cとを備えている。
サーバAのレコード管理部2Aは、データベース4Aに対して、必要なレコードの検索を行う。また、このレコード管理部2Aは、同期管理部3Aの要求に従いデータベース4Aのレコードの更新を行う。同期時刻記録部5Aは、各ノード(A〜C)が最後に同期した時刻を記録する。同期管理部3Aは、パソコンBの同期制御部3Bから送信されてきたレコードBAを受信し、その更新時刻を取得する。また、同期管理部3Aは、相当レコードba(後述)の検索をレコード管理部2Aに指示し、この結果データベース4Aから送られた相当レコードbaの更新時刻を取得する。そして、この2つ(受信レコードABとその相当レコードbaと)の更新時刻を比較する。また、同期管理部3Aは、同期時刻記録部5Aに記録された同期時刻と、残りデータ(後述)の更新時刻とを比較する。さらに、これらの比較結果に基づいてパソコンBの同期制御部3Bに対して、レコードABを送信する。
パソコンBのレコード管理部2Bは、データベース4Cに対して、必要なレコードの検索を行う。また、このレコード管理部2Bは、同期制御部3Bの要求に従い、データベース4B内のレコードの更新を行う。
同期制御部3Bは、他のノード(モバイル端末C/サーバA)から送信されてきたレコード(CB/AB)を受信し、その更新時刻を取得する。また、同期制御部3Bは、それらの相当レコード(cb/ab)の検索をレコード管理部2Bに指示し、この結果データベース4Bから送られた相当レコード(cb/ab)の更新時刻を取得する。そして、この2つ(受信レコードとその相当レコード)の更新時刻を比較する。また、同期制御部3Bは、同期時刻記録部5Bに記録された同期時刻と、残りデータ(後述)の更新時刻とを比較する。さらに、これらの比較結果に基づいてサーバAやモバイル端末Cの同期管理部(3A/3C)に対して、レコード(BA/BC)を送信する。
送信記憶部8Bは、同期制御部3Bの要求に従い、サーバAへ送信したレコードBAのID(レコードID)やサーバAから受信したレコードABのIDを記憶する。同期時刻記録部5Bは、サーバAから受信した同期時刻を、各ノード(A〜C)が最後に同期した時刻として記録する。
モバイル端末Cのレコード管理部2Cは、データベース4Cに対して、必要なレコードの検索を行う。また、このレコード管理部2Cは、同期管理部3Cの要求に従い、データベース4C内のレコードの更新を行う。同期管理部3Cは、データベース4Cに必要なレコードの検索をレコード管理部2Cに指示し、その結果データベース4Cから送られてきたレコードの更新時刻と、同期時刻記録部に記録された同期時刻とを比較する。さらに、これらの比較結果に基づいてパソコンBの同期制御部3Bに対して、レコードCBを送信する。同期時刻記録部5Cは、パソコンBのプロキシ部7Bから受信した同期時刻を、各ノード(A〜C)が最後に同期した時刻として記録する。
以下に、実施の形態1におけるノード(A〜C)ごとの同期フローを詳細に説明する。
(PDAでの同期フロー)
図3は、モバイル端末Cにおける同期工程を示すフローチャートである。以下、図3および図1を用いて各工程(ステップ)を説明する。
まず、ステップ(以下、Sと略記する)10で、同期開始信号をパソコンBの同期制御部3Bへ送信する。ついでS11では、同期管理部3Cが、同期時刻記録部5Cから同期時刻を取得するとともに、データベース4Cから全レコードの更新時刻を取得し、この同期時刻と更新時刻とを比較する。
S12では、同期管理部3CにてS11で取得した各レコードの同期時刻と更新時刻とが等しいか異なるかを判定する。上記の同期時刻と更新時刻とが異なる場合には、NOで示されたとおりS13へ進み、前回の同期後にモバイル端末Cで更新されたレコード(レコードCB、図1参照)をパソコンBの同期制御部3Bへ送信する。なお、前回の同期後に更新されたレコードがない場合にはレコードCBの代わりに、送信なし信号をパソコンB(同期制御部3B)に送信する。
一方、上記の同期時刻と更新時刻とが等しい場合には、YESで示されたとおりS14へ進み、全レコードについて比較を行ったかを判定する。S14で残されたレコードがある場合、NOで示されたとおりS12へ戻り、残りの各レコードにつき、上記の同期時刻と更新時刻とを比較する。そして、すべてのレコードが比較済になれば、YESで示されたとおりS15へ進み、送信終了信号をパソコンBへ送信する。(この後、パソコンBおよびサーバAで同期作業が行われる。)
S16では、パソコンBの同期制御部3Bから、前回の同期後に各ノード(モバイル端末C、パソコンBサーバA)で更新された(同一のレコードが複数のノードで更新された場合はより新しく更新された)レコード(レコードBC、図1参照)を同期管理部3Cにて受信する。S17では、レコード管理部2Cが、データベース4Cに存在する、上記レコードBCと同じレコードIDを有するレコード(相当レコードbc)を、レコードBCの内容に従って(レコードBCと同一内容になるよう)更新する。
なお、S16において、上記のレコードBCを受信せず、代わりに、送信なし信号をパソコンBから受信することもある(例えば、パソコンBやサーバAでレコードの更新が行われなかった場合)。このようなときには、S17でデータベース4Cの更新は行われない。
S18では、パソコンBから同期時刻(図1参照)を受信する。S19ではこの同期時刻を同期時刻記録部5Cに記録するとともに、レコード管理部2Cが、データベース4C内の全レコードの更新時刻をこの同期時刻に更新する。以上にてモバイル端末Cでの同期工程を終了する。
(PCでの同期フロー)
図4は、パソコンBにおける同期工程を示すフローチャートである。以下、図1および図4を用いて各工程(ステップ)を説明する。
まず、S30でモバイル端末Cから同期開始信号(図1参照)を受信し、この同期開始信号をサーバAに送信する。送サーバAに信する。ついで、S31では、モバイル端末CからレコードCB(前回の同期後にモバイル端末Cで更新されたレコード)を受信するとともに、レコード管理部2Bがデータベース4Bに対し、レコードCBと同一のレコードIDを有するレコード(以下、相当レコードcb)を検索するよう命令する。そして、同期制御部3Bがデータベース4Bから上記相当レコードcbの更新時刻を取得する。
S32では、S31で取得したレコードCBの更新時刻が上記の相当レコードcbの更新時刻より新しいか否かを判定する。
レコードCBの更新時刻が相当レコードcbの更新時刻より新しい場合には、YESで示されたとおりS33に進み、レコード管理部2Bが、データベース4Bに対して、相当レコードcbがモバイル端末Cから受信したレコードCBと同一内容になるよう、更新(上書き)命令を出す。併せて、このレコードCBをサーバAへ送信する。
一方、レコードCBの更新時刻がCB相当レコードの更新時刻より古い場合には、NOで示されたとおりS34へ進み、レコード管理部2Bが、データベース4Bに対して、モバイル端末Cより送信されたレコードCBを破棄するよう命令し、かつ、レコードCBのレコードIDを送信記憶部8Bに記録する。さらに、レコード管理部2Bが、データベース4Bに対して、相当レコードcb(データベース4Bに存在する、レコードCBと同一のレコードIDを有するレコード)をサーバAに送信するように命令する。
S35ではモバイル端末Cより受信したレコードBCすべてを比較したかを判定する。その結果、比較されていないレコードがある場合、NOで示されたとおりS32へ戻る。すべて比較された場合にはYESで示されたとおりS36へ進む。
S36では、同期制御部Bが、同期時刻記録部5Bから同期時刻を取得するとともに、データベース4Bから、残りレコード(データベース4Bにおける、相当レコードbc以外のレコード)の更新時刻を取得する。S37では、S36で取得された同期時刻と更新時刻とを比較する。
時刻が異なる場合、YESで示されたとおりS38へ進み、送信記憶部8Bに、該当するレコード(すなわち、パソコンBでのみ更新されたレコード)のレコードIDを記録するとともに、これをサーバAに送信する。
一方、時刻が等しい場合、NOで示されたとおりS39へ進み、残りレコードの全てが比較されたか否かを判定する。その結果、比較されていない残りレコードが存在する場合は、NOで示されたとおりS37へ戻る。残りレコードの全てが比較された場合には、YESで示されたとおりS40へ進む。
なお、図1におけるレコードBAには、パソコンBからサーバAに送られる、レコードCB(あるいは相当レコードcb)と、S37に該当する(YESである)残りレコード(すなわち、パソコンBでのみ更新されたレコード)とが含まれている。また、モバイル端末Cから送信なし信号が送信され(データベース4Cに更新されたレコードがない場合)、かつ、データベース4Bにも更新されたレコードがない場合には、パソコンBからサーバAへ送信なし信号が送信される。
S40では送信終了信号をサーバAへ送信する。(この後、サーバAで同期作業が行われる。)
S41では、サーバAから、前回の同期後に各ノード(モバイル端末C、パソコンBサーバA)で更新された(同一のレコードが複数のノードで更新された場合はより新しく更新された)レコード(レコードAB、図1参照)を受信する。そして、サーバAの送信終了信号を受信するとS42に進む。S42では、レコード管理部2Bが、データベース4Bに存在する、レコードABと同じレコードIDを有するレコード(相当レコードab)を、レコードABの内容に従って(レコードABと同一内容になるよう)更新し、かつ、そのレコードIDを送信記憶部8Bに記録する。
S43では、レコード管理部2Bが、送信記憶部8Bに記録されているレコードIDに該当するレコードを、データベース4Bより取得し、モバイル端末Cへ送信する。
なお、S41において、サーバAから送信なし信号を受信することがある(例えば、サーバAでレコードの更新が行われなかった場合)。このような場合には、送信記憶部8Bに記録されたレコードIDに該当するレコードを、データベース4Bより取得し、これをモバイル端末Cへ送信する(S34・38参照)。ただし、S34やS38を経由せず、送信記憶部8BにレコードIDが記録されていない場合には、送信なし信号をモバイル端末Cへ送信する。
S44ではサーバAより同期時刻を受信する。S45では同期時刻記録部5Bの同期時刻と、データベース4B内の全レコードの更新時刻とをこの同期時刻に更新する。S46ではモバイル端末Cにこの同期時刻を送信する。
以上にてパソコンBでの同期工程を終了する。
(サーバでの同期フロー)
図5は、サーバAにおける同期工程を示すフローチャートである。以下、図5および図1を用いて各工程(ステップ)を説明する。
まず、S60でパソコンBから同期開始信号(図1参照)を受信する。S61では、パソコンBからレコードBAを受信する。上記のとおり、このレコードBAには、レコードCB(あるいは、相当レコードcb)とS37に該当する(YESである)残りレコード(すなわち、パソコンBでのみ更新されたレコード)とが含まれている。ここで、レコード管理部2Aが、データベース4Aに対し、レコードBAと同一のレコードIDを有するレコード(以下、相当レコードba)を検索するよう命令する。これにより、同期管理部3Aは、データベース4Aから、相当レコードbaの更新時刻を取得する。
S62では、各レコードにつき、S61で取得したレコードBAの更新時刻が相当レコードbaの更新時刻より新しいか否かを判定する。レコードBAの更新時刻が相当レコードbaの更新時刻より新しい場合には、YESで示されたとおりS63に進み、レコード管理部2Aが、データベース4Aに対して、相当レコードba(データベース4Aに存在する、レコードBAと同一のレコードIDを有するレコード)がレコードBAと同一内容になるよう、更新(上書き)命令を出す。なお、この場合には、レコードBAをパソコンBへ送信しない(このレコードBAのレコードIDは、パソコンBの送信記憶部に記録されているため)。
一方、レコードBAの更新時刻が相当レコードの更新時刻より古い場合には、NOで示されたとおりS64へ進み、レコード管理部2Aが、データベース4Aに対して、パソコンBより送信されたレコードBAを破棄するよう命令し、かつ、レコード管理部2Aが、データベース4Aに対して、相当レコードbaをパソコンBに送信するように命令する。
S65ではパソコンBより受信したレコードBAすべてを比較したかを判定する。そして、比較されていないレコードがある場合、NOで示されたとおりS62へ戻る。すべて比較された場合にはYESで示されたとおりS66へ進む。
S66では、同期管理部3Aが、同期時刻記録部5Aから同期時刻を取得するとともに、データベース4Aから、残りレコード(データベース4Aに存在する、相当レコードba以外のレコード)の更新時刻を取得する。S67では、S66で取得された同期時刻と更新時刻とを比較する。
時刻が異なる場合、YESで示されたとおりS68へ進み、レコード管理部2Aが、データベース4Aに対し、該当するレコード(サーバAでのみ更新されたレコード)をパソコンBに送信するよう命令する。
一方、時刻が等しい場合、NOで示されたとおりS69へ進み、残りレコードの全てが比較されたか否かを判定する。その結果、比較されていない残りレコードが存在する場合は、NOで示されたとおりS67へ戻る。残りレコードの全てが比較された場合には、YESで示されたとおりS70へ進む。
S70では送信終了信号をパソコンBへ送信する。S71では同期時刻としてサーバの時計から現在時刻を取得する。S72では、同期時刻記録部5Aの同期時刻と、データベース4A内の全レコードの更新時刻とをこの同期時刻に更新する。S73ではパソコンBにこの同期時刻を送信する。
以上にてサーバAでの同期工程を終了する。
このように、モバイル端末CからパソコンB、パソコンBからサーバA、サーバAからパソコンB、パソコンBからモバイル端末Cというように、パソコンBがモバイル端末CとサーバAとの中継機能を担うことで、各ノード(A〜C)は、他のノードが更新したレコードを効率的に認識することができる。
これにより、三者(ノードA〜C)間情報同期の際に最大のネックとなるサーバA・モバイル端末C間の相互通信が不要となる。すなわち、通信速度の劣るモバイル端末Cの送受信回数が減り、迅速な情報同期が可能になる。加えて、サーバA側においても、モバイル端末Cとの同期処理を逐一行う必要がなくなり、その負担が大幅に軽減される。特に、パソコンBのユーザとモバイル端末Cのユーザとが同一の個人である場合、ユーザは、自己が保有するパソコンBおよびモバイル端末Cの情報と、(共有)サーバAの情報とをすばやく同期させることができ、大変便利である。
以下に、本実施の形態における同期作業の流れを時系列に沿って説明する。図6〜図8は、いずれかのノード(端末)のレコードのみが更新されている場合の同期シーケンス図である。
以下では、時刻t0で同期したレコードをR(t0)、t以降で更新が行われたレコードをR'(t1)と表記する。なお、以下の説明中に記載されているステップ番号は、図3〜図5に示すフローチャートのステップ番号に対応している。
図8は、モバイル端末CのレコードがR'(t1)であり、パソコンBおよびサーバAのレコードがR(t0)である状態で同期を開始し、所定の時刻Tにて各ノード(A〜C)を同期させた場合のシーケンス図である(t1はt0より後の時間)。
まず、同期開始信号が、モバイル端末CからパソコンBへ(S10)、ついでパソコンBからサーバAへ送信される(S30)。ついで、モバイル端末Cにおいて、同期時刻記録部5Cにある前回の同期時間t0とデータベース4CにあるR'(t1)の更新時間とが比較され(S11・12)、t1はt0より後の時刻であることから、モバイル端末Cは、このデータベース4CにあるR'(t1)をレコードCBとしてパソコンBへ向けて送信する(S13)。
パソコンBでは、受信したR'(t1)の更新時間(t1)と、データベース4Bの相当レコードR(t0)の更新時刻(前回の同期時間t0)とを比較し(S31・32)、t1はt0より後の時刻であることから、パソコンBは、データベース4Bの相当レコードをR'(t1)に更新するとともに、このR'(t1)をレコードBAとしてサーバAへ送信する(S33)。
サーバAでは、受信したR'(t1)の更新時間(t1)と、データベース4Aの相当レコードR(t0)の更新時刻(前回の同期時間t0)とを比較し(S61・62)、t1はt0より後の時刻であることから、サーバAは、データベース4Aの相当レコードをR'(t1)に更新する。ただし、パソコンBより受信したR'(t1)によってデータベース4Aの相当レコードが更新されており、残りレコード(データベース4Aに存在する、上記相当レコード以外のレコード)にサーバAでのみ更新されたレコードがない場合には、パソコンBに送信すべきレコードはない。よって、サーバAはパソコンBへ送信なし信号を送信する。
ついで、サーバAは、同期時刻としてTを取得し(S71)、データベース4AのレコードR'(t1)をR'(T)に更新する(S72)。ついで、TをパソコンBへ送信しサーバAの同期処理が終了する(S73)。
パソコンBでは、上記のとおり、R'(t)の受信はなく、Tを受信し(S44)、データベース4BのレコードR'(t1)をR'(T)に更新する(S45)。また、パソコンBで更新されたレコードがないため送信記憶部8Bに記録されたレコードIDもなく、モバイル端末Cへはレコードを送信せず、代わりに送信なし信号を送信する。最後に、同期時刻Tをモバイル端末Cに送信し、パソコンBの同期処理は終了する(S46)。
上記のとおり、モバイル端末Cは、パソコンBからレコードを受信せず、同期時刻Tのみを受信する(S18)。モバイル端末Cは、データベース4CのレコードR'(t1)をR'(T)に更新し(S19)、同期を終了する。
図7は、パソコンBのレコードがR'(t1)であり、モバイル端末CおよびサーバAのレコードがR(t0)である状態で同期を開始し、所定の時刻Tにて各ノード(A〜C)を同期させた場合のシーケンス図である(t1はt0より後の時刻)。
まず、モバイル端末Cが同期開始信号をパソコンBへ送信し、(S10)、ついでパソコンBが同期開始信号をサーバAへ送信する(S30)。ついで、モバイル端末Cにおいて、同期時刻記録部5Cにある前回の同期時間t0とデータベース4CにあるR(t0)の更新時間とが比較される(S11・12)。ここで、前回の同期時間とR(t0)の更新時刻とが同じ時刻である(モバイル端末Cではレコードの更新がなかった)ことから、モバイル端末CがパソコンBへ送信すべきレコードはなく、代わりに、送信なし信号をパソコンBへ送信する。
パソコンBでは、上記のとおり、モバイル端末Cからレコードを受信しないため、残りレコード(この場合、データベース4Bの全レコードになる)の更新時刻と、前回の同期時刻との比較を行う(S36)。そして、パソコンBは、残りレコードのうち、パソコンBで更新されたR'(t1)をサーバAへ送信するとともに、このR'(t)のレコードIDを送信記憶部8Bに記録する(S38)。
サーバAでは、パソコンBから受信したR'(t1)とデータベース4Aにある相当レコードR(t0)との比較を行い、t1はt0より後の時刻であることから、この相当レコードR(t0)をR'(t1)に更新する。ただし、パソコンBより受信したR'(t1)によってデータベース4Aの相当レコードが更新されており、残りレコードのうちサーバAでのみ更新されたレコードもない場合には、パソコンBに送信すべきレコードはない。よって、サーバAはパソコンBへ送信なし信号を送信する。
ついで、サーバAは、同期時刻としてTを取得し(S71)、データベース4AのレコードR'(t1)をR'(T)に更新する(S72)。ついで、サーバAは、TをパソコンBへ送信し、その同期処理を終了する(S73)。
パソコンBでは、上記のとおり、サーバAからの受信はなく、送信記憶部8Bに記録されたレコードIDに基づいて、R'(t1)をモバイル端末Cへ送信する(S43)。ついで、パソコンBは、同期時刻TをサーバAから受信し(S44)、データベース4BのレコードR'(t1)をR'(T)に更新する(S45)とともに、この同期時刻Tをモバイル端末Cに送信し、その同期処理は終了する(S46)。
モバイル端末Cは、データベース4CのレコードR(t0)を、パソコンBから受信したR'(t1)に更新する(S16、17)。ついで、モバイル端末Cは、パソコンBから同期時刻Tを受信し、データベース4CのレコードR'(t1)をR'(T)に更新し、その同期処理を終了する。
図9は、サーバAのレコードがR'(t1)であり、モバイル端末CおよびパソコンBのレコードがR(t0)である状態で同期を開始し、所定の時刻Tにて各ノード(A〜C)を同期させた場合のシーケンス図である(t1はt0より後の時刻)。
まず、モバイル端末Cが同期開始信号をパソコンBへ送信し、パソコンBがこの同期開始信号をサーバAへ送信する。ついで、モバイル端末Cにおいて、同期時刻記録部5Cにある前回の同期時間t0とデータベース4CにあるR(t0)の更新時間とが比較される(S11・12)。ここで、前回の同期時間とR(t0)の更新時刻とが同じ時刻である(モバイル端末Cではレコードの更新がなかった)ことから、モバイル端末CがパソコンBへ送信すべきレコードはなく、代わりに、送信なし信号をパソコンBへ送信する。
パソコンBはレコードを受信していないため、残りレコード(この場合、データベース4Bの全レコードになる)の更新時刻と、前回の同期時刻との比較を行う(S36)。ここで、データベース4BのR(t0)の更新時刻(t0)は前回の同期時刻(t0)と等しいのでサーバAへの送信を行わず(S37)、代わりに、送信なし信号を送信する。
サーバAはレコードを受信していないため、残りレコード(この場合、データベース4Aの全レコードになる)R'(t1)の更新時刻(t1)と、前回の同期時刻(t0)との比較を行う(S67)。ここでt1はt0より後の時刻であることから、サーバAは、データベース4AにあるR'(t1)をレコードCBとしてパソコンBへ向けて送信する(S67、68)。ついで、サーバAは、同期時刻としてTを取得し、データベース4AのレコードR'(t1)をR'(T)に更新するとともに、TをパソコンBへ送信し同期処理を終了する。
パソコンBはサーバAからR'(t1)を受信するため、相当レコードをR'(t1)に更新するとともに送信記憶部8BにこのレコードIDを記録する(S41、42)。ついで、パソコンBは、送信記憶部8Bに記録されたレコードIDに基づいて、このIDに該当するレコードR'(t1)をモバイル端末Cへ送信する。さらに、パソコンBは、サーバAよりT(今回の同期時刻)を受信し、レコードR'(t1)をR'(T)に更新するとともに、このTをモバイル端末Cへ送信し、その同期処理を終了する。
モバイル端末CはR'(t1)を受信し、その相当レコードR(t0)をR'(t1)に更新する。ついで、モバイル端末Cは、パソコンBより今回の同期時刻Tを受信し、データベース4CのレコードR'(t1)をR'(T)に更新してその同期処理を終了する。
なお、本実施の形態では、同期時は各ノード(サーバA、パソコンB、モバイル端末C)で所持するレコード群の各レコードIDが一致する場合について説明した。しかし、ある時点での同期以降、次の同期の間までにレコードを新規に作成する、あるいは削除することも考えられ、この場合には、同期開始時にノード間のレコード群が異なることになる。このような場合には、以下のように対応することが好ましい。
すなわち、いずれかのノードで新レコードが作成され、同期時に他のノードが対応するレコードがないと判断した場合には、当該ノードは、この新レコードを新規に作成して同期処理を行う。また、各ノードでレコードを削除した場合に、これを他のノードで反映するには、レコードに削除フラグに相当するようなデータを付与し、レコード削除の際にレコードIDと削除フラグデータ以外を削除するようにする。そして、レコードを削除したノードは、同期時にそのレコードIDと削除フラグデータとを他ノードに送信する。これにより、各ノードにてレコードの新規作成や削除があった場合にも、これを反映した同期処理を行うことができる。
〔実施の形態2〕
本発明の実施の形態2について、図9〜図12に基づいて説明すれば以下のとおりである。
本実施の形態では、同一のレコードIDをもつレコードが、各ノードにおいて異なる数のデータフィールドを有する場合について説明する。図10(a)〜(c)は、実施の形態2において各ノードが所持するレコード例を示す。
図10(a)〜(c)に示されるように、レコードID・更新時刻・予定日・場所の4つのデータフィールドは全ノード(モバイル端末C、パソコンB、サーバA)で共通しているが、パソコンBは、この共通のデータフィールドに加え、取引先を示す1つのデータフィールドを有し、サーバAは、この共通のデータフィールドに加え、取引先および担当者を示すの2つデータフィールドを備えている。すなわち、同一のレコードIDをもつレコードが、ノードごとに異なるデータフィールドを持っている。なお、例えば、図10(a)に示されるサーバAのレコードにおいては、6個のデータフィールドである、レコードID、更新時刻、予定日、場所、取引先、担当者が、それぞれ000001、2003年10月1日17時0分、2003年10月5日、Aビル、B社、Cであることをあらわしている。
実施の形態2におけるパソコンBのプロキシ部を、図9に示す。なお、他のノードであるモバイル端末CおよびサーバAの構成は図1に示されるものと同じであり、通信システム1自体も、図1うや図2(a)示されるように構成されている。
図9に示されるように、パソコンBのプロキシ部7Bは、同期制御部3Bとレコード管理部2Bと送信記憶部8Bとノード別レコード判定テーブル9B(レコード判定テーブル)とを備え、該ノード別レコード判定テーブル9Bには各ノードがもつレコードのデータフィールドが記録されている。これを図11に示す。図11に示されるように、ノード別レコード判定テーブルでは、データが存在するデータフィールドが1と表記され、データが存在しないデータフィールドが0と表記されている。すなわち、サーバAは、日時・場所・取引先・担当者の4つのデータフィールドを有し、パソコンBは、日時・場所・取引の3つのデータフィールドを有し、モバイル端末Cは、日時・場所の2つのデータフィールドを有する。このように、ノード別レコード判定テーブル9Bは、レコードについて受信したレコードをデータフィールド単位で判定するために用いられる。
なお、以下の説明においては、図10(a)〜(c)に示されるように、各ノードが有するレコードのデータフィールド数が、サーバAが1番多く、パソコンBがその次に多く、モバイル端末Cのように小さい機器が1番少ない場合を前提としている。また、各ノードでの同期処理においては、レコードの更新時刻に基づいて一番新しい更新時刻をもつレコードに同期されるものとする。例えば、サーバAで10月1日に予定日が更新されたレコードがあり、パソコンBでは10月2日に取引先データが更新されたレコードがある場合、更新時刻はパソコンBの方が後であることから、パソコンBの取引先データと予定日データとに基づいて、サーバAとパソコンBとを同期させる。
次に、各ノードにおける具体的な同期処理を説明する。なお、モバイル端末CおよびサーバAにおける同期工程は、図3や図5で示される、モバイル端末CおよびサーバAの同期工程と同じであるため、ここでは説明を省略し、パソコンBにおける同期工程を図12を用いて説明する。図12は、各ノードでレコード内容が異なる場合のパソコンBでの同期工程を示すフローチャートである。
まず、S30でモバイル端末Cから同期開始信号を受信し、この同期開始信号をサーバAに送信する。送サーバAに信する。ついで、S31では、モバイル端末CからレコードCB(前回の同期後にモバイル端末Cで更新されたレコード)を受信するとともに、レコード管理部2Bがデータベース4Bに対し、レコードCBと同一のレコードIDを有するレコード(以下、相当レコードcb)を検索するよう命令する。そして、同期制御部3Bがデータベース4Bから上記相当レコードcbの更新時刻を取得する。
S32では、S31で取得したレコードCBの更新時刻が上記の相当レコードcbの更新時刻より新しいか否かを判定する。
レコードCBの更新時刻が相当レコードcbの更新時刻より新しい場合には、YESで示されたとおりS33に進み、レコード管理部2Bが、データベース4Bに対して、相当レコードcbがモバイル端末Cから受信したレコードCBと同一内容になるよう、更新(上書き)命令を出す。併せて、このレコードCBをサーバAへ送信する。
一方、レコードCBの更新時刻がCB相当レコードの更新時刻より古い場合には、NOで示されたとおりS34へ進み、レコード管理部2Bが、データベース4Bに対して、モバイル端末Cより送信されたレコードCBを破棄するよう命令し、かつ、レコードCBのレコードIDを送信記憶部8Bに記録する。さらに、レコード管理部2Bが、データベース4Bに対して、相当レコードcb(データベース4Bに存在する、レコードCBと同一のレコードIDを有するレコード)をサーバAに送信するように命令する。
S35ではモバイル端末Cより受信したレコードBCすべてを比較したかを判定する。その結果、比較されていないレコードがある場合、NOで示されたとおりS32へ戻る。すべて比較された場合にはYESで示されたとおりS36へ進む。
S36では、同期制御部Bが、同期時刻記録部5Bから同期時刻を取得するとともに、データベース4Bから、残りレコード(データベース4Bにおける、相当レコードbc以外のレコード)の更新時刻を取得する。S37では、S36で取得された同期時刻と更新時刻とを比較する。
時刻が異なる場合、YESで示されたとおりS38へ進み、送信記憶部8Bに、該当するレコード(すなわち、パソコンBでのみ更新されたレコード)のレコードIDを記録するとともに、これをサーバAに送信する。
一方、時刻が等しい場合、NOで示されたとおりS39へ進み、残りレコードの全てが比較されたか否かを判定する。その結果、比較されていない残りレコードが存在する場合は、NOで示されたとおりS37へ戻る。残りレコードの全てが比較された場合には、YESで示されたとおりS40へ進む。
なお、レコードBA(図1参照)には、パソコンBからサーバAに送られる、レコードCB(あるいは相当レコードcb)と、S37に該当する(YESである)残りレコード(すなわち、パソコンBでのみ更新されたレコード)とが含まれている。また、モバイル端末Cから送信なし信号が送信され(データベース4Cに更新されたレコードがない場合)、かつ、データベース4Bにも更新されたレコードがない場合には、パソコンBからサーバAへ送信なし信号が送信される。
S40では送信終了信号をサーバAへ送信する。(この後、サーバAで同期作業が行われる。)
S41では、サーバAから、前回の同期後に各ノード(モバイル端末C、パソコンBサーバA)で更新された(同一のレコードが複数のノードで更新された場合はより新しく更新された)レコード(レコードAB)を受信する。そして、サーバAの送信終了信号を受信するとS74aに進む。
ここで、サーバAから送信されたレコードABには、図10(a)に示されるように、レコードID、更新時刻のほかに、予定日、場所、取引先および担当者の4個のデータフィールドが含まれており、パソコンBにおける相当レコードab(データベース4Bに存在する、レコードABと同一のレコードIDを有するレコード)とは、データフィールド数が異なる(図10(b)(c)参照)。
そこで、S74aでは、ノード別レコード判定テーブル9Bを参照してS74bに進み、レコードAB内の所定のデータフィールドがデータベース4Bの相当レコードabに存在するか否かを判定する。
上記所定のデータフィールドが相当レコードabに存在する場合、YESで示されたとおりS74cに進み、レコード管理部2Bが、相当レコードabの該当するデータフィールドのデータを、レコードABの内容に従って(レコードABと同一内容になるよう)更新する。
上記所定のデータフィールドが相当レコードabに存在しない場合、NOで示されたとおりS75に進み、全てのデータフィールドについて上記の存在判定が行われたかを判定する。そして、判定を行っていないデータフィールドがある場合には、NOで示されたとおりS73に戻り、次のデータフィールドが相当レコードabに存在するかを判定する。
全てのデータフィールド(予定日、場所、取引先および担当者の4個のデータフィールド)を判定し終えた場合には、該当するレコードのレコードIDを送信記憶部8Bに記録し、YESで示されたとおりS76へ進む。S76では、サーバAより受信した全レコードについてパソコンBで同期したかを判定する。残っている場合、NOで示されたとおりS73に戻り、次のレコードについて引き続き判定を行う。
レコードABの全てのレコードを判定した場合には、YESで示されたとおりS77に進み、送信記憶部8Bに記録されたレコードIDを有するレコード(これをレコードBC’とする)を全て取得する。そして、モバイル端末Cに送信するレコードBCを作成するためにS79に進む。
S79では、同期制御部3Bがノード別レコード判定テーブル9B(図9・図11参照)を参照して、上記レコードBC’内の所定のデータフィールドが、モバイル端末Cのレコードに存在するか否かを判定する(図10(b)(c)・図11参照)。
上記所定のデータフィールドがモバイル端末Cのレコードに存在しない場合、NOで示されたとおりS80に進み、同期制御部3Bが上記レコードBC’から、該当するデータフィールドの具体的データを削除する。一方、上記所定のデータフィールドがモバイル端末Cのレコードに存在する場合、YESで示されたとおりS81に進み、全てのデータフィールドについて上記の存在判定が行われたかを判定する。そして、判定を行っていないデータフィールドがある場合には、NOで示されたとおりS79に戻り、次のデータフィールドがモバイル端末Cのレコードに存在するかを判定する。
なお、S77〜S81の代わりに、以下のようにしてレコードBCを生成してもかまわない。
すなわち、S76の後に、同期制御部3B(図9参照)が送信記憶部8Bに記録されたレコードIDに対応する空レコードを用意する。ついで、同期制御部3Bがノード別レコード判定テーブル9Bを参照して、上記空レコードの所定のデータフィールドが、モバイル端末Cのレコードに存在するか否かを判定する(図9・図10(b)(c)・図11参照)。
上記所定のデータフィールドがモバイル端末Cのレコードに存在する場合には、同期制御部3Bが上記空レコードの所定のデータフィールドに具体的データを追加する。一方、上記所定のデータフィールドがモバイル端末Cのレコードに存在しない場合、全てのデータフィールドについて上記の存在判定が行われたかを判定する。
そして、全てのデータフィールド(予定日、場所および取引先の3個のデータフィールド)を判定し終えた場合には、YESで示されたとおりS82へ進み、該当するレコード(レコードBC)をモバイル端末Cへ送信する。
S83では、取得したレコードBC’のすべてのデータについて、データフィールド存在判定をしたかを判定する。すべて判定した場合には、YESで示されたとおりS84へ進む。まだ未判定レコードが残っている場合、NOで示されたとおりS79に戻り、次のレコードについて引き続きデータフィールド存在判定を行う。
S84ではモバイル端末Cへ送信終了信号を送信する。S85ではサーバAより同期時刻を受信するとともに、同期時刻記録部5Bの同期時刻と、データベース4B内の全レコードの更新時刻とをこの同期時刻に更新する。S86ではモバイル端末Cにこの同期時刻を送信する。
以上にてパソコンBでの同期工程を終了する。
上記の説明では、サーバAのレコード長が長い(データフィールドの数が多い)のを前提としているため、パソコンBからサーバAへのレコード送信の際、レコードの更新時刻の比較を行うのみで、データフィールドの存在についての判定は行っていない(図12のS32〜39参照)。
しかしながら、上位ノード(サーバA)のレコード長が短い(データフィールドの数が少ない)場合も考えられ、その場合、パソコンBからサーバAへレコードを送信する際にノード別レコード判定テーブル9Bを参照してサーバAへ送信すべきレコードBAを作成することも可能である。その際、対応関係のない(サーバAの相当レコードにない)データフィールドへは空データを入れ込めば良い。
また、各ノード(A〜C)でデータフィールドの包含関係が混在している場合が考えられる。例えば、パソコンBには予定日を示すデータフィールドはあるが場所を示すデータフィールドがなく、逆にモバイル端末Cは場所を示すデータフィールドはあるが予定日を示すデータフィールドがなく、サーバAには予定日と場所との双方を示すデータフィールドが存在する場合である。
このような場合には、パソコンBが受信したレコードについて送信先のノードを問わずノード別レコード判定テーブル9Bを参照し、これに基づいて送信用のレコードを作成すればよい。その際、受信先のノードにおけるレコードの更新時刻を参考にし、空データフィールド部分を補完することでより正確な同期を行うことが可能となる。
例えば、更新時刻について、パソコンBが最新、サーバAがその次に新しく、モバイル端末Cが一番古いとする。このとき、パソコンBとモバイル端末Cには対応するデータフィールドはないが、モバイル端末CのレコードよりサーバAのレコードの更新時刻が新しいことから、パソコンBがレコードBCを作成する際、サーバAにおける場所のデータを挿入することが望ましい。なお、この場合、パソコンBはサーバAに対して自らが更新を行わないデータフィールドに関するデータ(場所のデータ)についてもこれを要求することになる。これにより、モバイル端末Cをより正確に同期させることができる。
さらに、上記の説明においては、同期処理の際に中継端末となるパソコンBを通過することを前提としている。中継端末(パソコンB)を通さずに、サーバA・モバイル端末C間で同期する場合、例えば、サーバAでは同期相手のデバイスIDを同期開始時に受信することで同期相手を判定し、相手によって送信時のレコードを相手ノードに対応したレコードを作成することで可能になる。例えば、サーバAが相手をモバイル端末Cと認識した場合、モバイル端末Cから送られてきたレコードのレコード長に基づいてモバイル端末Cへ送信すべきレコードをサーバA内で作成する。なお、モバイル端末Cのように処理能力の遅いノード(端末)では上記のとおり送信レコードを作成する。また、サーバAが相手をパソコンB(中継端末)と認識した場合にも、サーバAは上記のとおりの処理を行う。なお、モバイル端末Cがレコードのデータ長を判定し、場合分けすることで、処理の多いサーバA等の上位ノードの負担を減らすことも可能である。
〔実施の形態3〕
本発明に係る実施の形態3について、図13〜図19を用いて説明すれば以下のとおりである。本実施の形態では、優先順位を示すデータフィールドを有するレコードを同期する場合について説明する。
すなわち、各ノード(A〜C)が同期された後に、別々のノードで同一のレコードIDを有するレコードが更新されたが、そのレコードが、上記のように優先順位のデータを持っていた場合に、各ノード(A〜C)の同期処理をいかに行うかを考えている。例えば、
1つのノードにてあるレコード(高優先順位)が更新され、その後、このレコードと同一のレコードIDを有するレコード(低優先順位)が他ノードで更新された場合、実施の形態1・2のように同期の基準を更新時刻とすれば、後で更新されたレコードが優先されるが、本実施の形態では、高い優先順位のレコードを優先させるため、先に更新された高優先順位のレコードが優先される。
図14(a)〜(c)に、各ノードにおける優先順位のデータを持つレコードの例を示す。同図(a)〜(c)に示される各レコードは、レコードID(同一)、重要度ID、案件状況、更新時刻、予定日および場所の6つのデータフィールドを備えている。重要度IDは同期時の判定基準のためのデータフィールドであり、その値の小さいレコードが高い優先度を保持することを意味する。この重要度IDは案件状況と対応しており、案件状況のデータである「保留」、「依頼」、「決定」に対応し、それぞれ重要度IDのデータである3、2、1が割り振られている。
図(a)に示されたサーバAのレコードは、「案件状況」、「重要度ID」、「レコードID」、「更新時刻」、「予定日」、「場所」がそれぞれ、「保留」、「3」、「000001」、「2003年10月1日17時0分」、「2003年10月5日」、「Aビル」である。図(b)に示されたパソコンBのレコードは、「案件状況」、「重要度ID」がそれぞれ、「依頼」、「2」であり、図(c)に示されたモバイル端末Cのレコードは、「案件状況」、「重要度ID」がそれぞれ、「決定」、「1」である。
実際の同期ではこの重要度IDを参照し、一番小さい値のモバイル端末Cのレコードが優先されて同期が行われる。上記のとおり、本実施の形態では、重要度IDの小さいレコードを優先的して同期を行う。
次に、本実施の形態に用いられるパソコンBのプロキシ部を、図13に示す。なお、他のノードであるモバイル端末CおよびサーバAの構成は図1に示されるものと同じであり、通信システム1自体も、図2(a)に示されるように構成されている。
図13に示されるように、本実施の形態では、パソコンBのプロキシ部7Bが、同期制御部3Bとレコード管理部2Bと送信記憶部8Bと競合回避用優先順位テーブル10B(優先度テーブル)とを備え、この競合回避用優先順位テーブルBには、競合回避項目と優先順位とが格納されている。図15に、この競合回避用優先順位テーブル10Bの例を示す。同図に示されるように、競合回避項目として重要度IDと更新時刻があり、優先順位はそれぞれが1番目、2番目に優先されることを意味する。競合回避用優先順位テーブル10Bに競合回避項目が複数記載されている場合、優先順位の数字の小さい順に同期の比較を行う。例えば、重要度IDが同じレコードについては、優先度が2番目の更新時刻について比較をする。上記のとおり、案件状況の優先順位と重要度IDとは対応し、重要度IDを元に同期の判定を行うため、競合回避用優先順位テーブル10Bには案件状況の項目は存在しない。また、競合回避用優先順位テーブル10Bのデータ(ルール)を他ノードに送ることで、他ノードでも競合回避用優先順位テーブルBに示されたルールにしたがった同期処理が可能である。なお、これ以外の優先ルールは存在しない。
これにより、同期制御部Bは、モバイル端末Cから受信したレコード(レコードCB)の相当レコードをデータベース4Bから取得し、この競合回避用優先順位テーブル10Bを参照して、優先順位が1番目の重要度IDを基準として両者(レコードBC、その相当レコード)を比較する。そして、この同期制御部3Bによる比較結果に基づいて、レコード管理部2Bがデータベース4Bに、更新やサーバAへの送信を命令する。
なお、本実施の形態の以外の構成(例えば、実施の形態1・2)においても、競合回避項目が複数ある場合には、上記のように優先順位にしたがった同期作業を行うことが可能である。
以下に、実施の形態3における各ノード(A〜C)の同期フローを図16・図17を用いて詳細に説明する。なお、本実施の形態におけるモバイル端末Cのフローは実施の形態1におけるフロー(図3参照)と同じである。
まず、パソコンBでの同期フローを図16を用いて説明する。S90ではモバイル端末Cから同期開始信号を受信し、これを競合回避用優先順位テーブル10BとともにサーバAに送信する。S91では、同期制御部3Bが競合回避用優先順位テーブル10Bを選択し、同期の基準を決定する。ここでは、図15に示される競合回避用優先順位テーブル10Bを用い、同期の基準として、重要度IDを優先順位1、優更新時刻を優先順位2とする。さらに、この決定された同期の基準をサーバAの同期管理部3Aに送信する。
S92では、同期制御部3Bにてモバイル端末CからのレコードCBを受信し、レコードCBの重要度IDと更新時刻とを取得する。さらに、レコードCBのレコードIDを基にレコード管理部2Bがデータベース4Bの検索を行い、同期制御部3Bで相当レコードcbの重要度ID、更新時刻を取得する。さらに、この相当レコードbcの重要度IDと上記したレコードCBの重要度IDとを比較する。
S93では、各レコードのもつ重要度IDの判定を行う。モバイル端末Cから受信したレコードCBの重要度IDが小さい場合はS94へ進む。そして、同期制御部3Bの要求に従いレコード管理部2Bがデータベース4B内の相当レコードcbをレコードCBの内容に更新し、かつこのレコードCBをサーバAの同期管理部3Aへ送信する。
レコードCBの重要度IDが相当レコードcbのそれより大きい場合S95へ進む。そして、同期制御部3BがレコードCBを破棄し、送信記憶部8BにそのレコードIDを記録する。あわせてデータベース4Bの相当レコードbcをサーバAの同期管理部3Aへ送信する。また、レコードCBの重要度IDが相当レコードcbのそれと同じ場合はS96へ進む。そして、重要度IDが同じレコードについて、更新時刻の判定を行う。
レコードCBの更新時刻が新しい場合、YESで示されたとおり上記のS94へ進む。そして、レコードCBの更新時刻が古い場合、NOで示されたとおり上記のS95へ進む。
更新時刻が同じ場合S35へ進む。S35ではレコードCBのすべてが比較されたかどうかを判定する。その結果、比較されていないレコードCBがある場合は、NOで示されたとおりS93へ戻り、次のレコードCBについて引き続き判定を行う。レコードCBのすべての比較が終わった場合、YESで示されたとおりS36へ進む。
S36では、同期制御部Bが、同期時刻記録部5Bから同期時刻を取得するとともに、データベース4Bから、残りレコード(データベース4Bにおける、相当レコードbc以外のレコード)の更新時刻を取得する。S37では、S36で取得された同期時刻と更新時刻とを比較する。
時刻が異なる場合、YESで示されたとおりS38へ進み、送信記憶部8Bに、該当するレコード(すなわち、パソコンBでのみ更新されたレコード)のレコードIDを記録するとともに、これをサーバAに送信する。
一方、時刻が等しい場合、NOで示されたとおりS39へ進み、残りレコードの全てが比較されたか否かを判定する。その結果、比較されていない残りレコードが存在する場合は、NOで示されたとおりS37へ戻る。残りレコードの全てが比較された場合には、YESで示されたとおりS40へ進む。
なお、図1におけるレコードBAには、パソコンBからサーバAに送られる、レコードCB(あるいは相当レコードcb)と、S37に該当する(YESである)残りレコード(すなわち、パソコンBでのみ更新されたレコード)とが含まれている。また、モバイル端末Cから送信なし信号が送信され(データベース4Cに更新されたレコードがない場合)、かつ、データベース4Bにも更新されたレコードがない場合には、パソコンBからサーバAへ送信なし信号が送信される。
S40では送信終了信号をサーバAへ送信する。(この後、サーバAで同期作業が行われる。)
S41では、サーバAから、前回の同期後に各ノード(モバイル端末C、パソコンBサーバA)で更新された(同一のレコードが複数のノードで更新された場合はより新しく更新された)レコード(レコードAB、図1参照)を受信する。そして、サーバAの送信終了信号を受信するとS42に進む。S42では、レコード管理部2Bが、データベース4Bに存在する、レコードABと同じレコードIDを有するレコード(相当レコードab)を、レコードABの内容に従って(レコードABと同一内容になるよう)更新し、かつ、そのレコードIDを送信記憶部8Bに記録する。
S43では、レコード管理部2Bが、送信記憶部8Bに記録されているレコードIDに該当するレコードを、データベース4Bより取得し、モバイル端末Cへ送信する。
なお、S41において、サーバAから送信なし信号を受信することがある(例えば、サーバAでレコードの更新が行われなかった場合)。このような場合には、送信記憶部8Bに記録されたレコードIDに該当するレコードを、データベース4Bより取得し、これをモバイル端末Cへ送信する(S34・38参照)。ただし、S34やS38を経由せず、送信記憶部8BにレコードIDが記録されていない場合には、送信なし信号をモバイル端末Cへ送信する。
S44ではサーバAより同期時刻を受信する。S45では同期時刻記録部5Bの同期時刻と、データベース4B内の全レコードの更新時刻とをこの同期時刻に更新する。S46ではモバイル端末Cにこの同期時刻を送信する。
以上でパソコンBでの同期が終了する。
次に、サーバAでの同期フローを図17を用いて説明する。まず、S97ではパソコンBから同期開始信号を受信し、それとともに競合回避用優先順位テーブル10Bを受信する。
S98では、パソコンBから同期の基準を受信する。この結果、重要度IDを優先順位1、優更新時刻を優先順位2とする同期の基準(優先度判定基準)を認識する。
S99では、同期管理部3AにてパソコンBからのレコードBAを受信し、レコードBAの重要度IDと更新時刻とを取得する。さらに、レコードBAのレコードIDを基にレコード管理部2Aがデータベース4Aの検索を行い、同期管理部3Aで相当レコードbaの重要度ID、更新時刻を取得する。さらに、この相当レコードbaの重要度IDと上記したレコードBAの重要度IDとを比較する。
S100では、各レコードのもつ重要度IDの判定を行う。パソコンBから受信したレコードBAの重要度IDが小さい場合はS101へ進む。そして、同期管理部3Aの要求に従いレコード管理部2Aがデータベース4A内の相当レコードbaをレコードBAの内容に上書きし、これを更新する。
レコードBAの重要度IDが相当レコードbaのそれより大きい場合S102へ進む。そして、同期管理部3AがレコードBAを破棄するとともに、データベース4Aの相当レコードbaをパソコンBの同期制御部3Bへ送信する。
また、レコードBAの重要度IDが相当レコードbaのそれと同じ場合はS103へ進む。そして、重要度IDが同じレコードについて、更新時刻の判定を行う。レコードBAの更新時刻が新しい場合、YESで示されたとおり上記のS101へ進む。そして、レコードBAの更新時刻が古い場合、NOで示されたとおり上記のS102へ進む。更新時刻が同じ場合S65へ進む。S65ではレコードBAのすべてが比較されたかどうかを判定する。その結果、比較されていないレコードBAがある場合は、NOで示されたとおりS100へ戻り、次のレコードBAについて引き続き判定を行う。レコードBAのすべての比較が終わった場合、YESで示されたとおりS66へ進む。
S66では、同期管理部3Aが、同期時刻記録部5Aから同期時刻を取得するとともに、データベース4Aから、残りレコード(データベース4Aに存在する、相当レコードba以外のレコード)の更新時刻を取得する。S67では、S66で取得された同期時刻と更新時刻とを比較する。
時刻が異なる場合、YESで示されたとおりS68へ進み、レコード管理部2Aが、データベース4Aに対し、該当するレコード(サーバAでのみ更新されたレコード)をパソコンBに送信するよう命令する。
一方、時刻が等しい場合、NOで示されたとおりS69へ進み、残りレコードの全てが比較されたか否かを判定する。その結果、比較されていない残りレコードが存在する場合は、NOで示されたとおりS67へ戻る。残りレコードの全てが比較された場合には、YESで示されたとおりS70へ進む。
S70では送信終了信号をパソコンBへ送信する。S71では同期時刻としてサーバの時計から現在時刻を取得する。S72では、同期時刻記録部5Aの同期時刻と、データベース4A内の全レコードの更新時刻とをこの同期時刻に更新する。S73ではパソコンBにこの同期時刻を送信する。
以上でサーバAでの同期が終了する。
以下に、本実施の形態における同期作業の流れを時系列に沿って図18・図19を用いて説明する。図18は、重要度IDが異なるレコード(レコードIDは同一)が各ノードで同時刻に更新された場合の同期シーケンス図である。また、図19は、重要度IDが同じ(レコードIDも同一)レコードが2つのノードで異なる時刻に更新され、もうひとつのノードで、他の2つとは重要度IDも更新時刻も異なる更新がなされた場合の同期シーケンス図である。
なお、以下の説明では、時刻t0で前回の同期が行われ、時刻Tにおいて同期を実行する場合を考えている。また、時刻tで更新した重要度IDが1のレコードをR1(t)、時刻tで同期した重要度IDが2のレコードをR2(t)、時刻tで同期した重要度IDが3のレコードをR3(t)としている。さらに、時刻t1で更新された重要度IDが3のレコードをR3(t1)、時刻t2で更新された重要度IDが3のレコードをR3(t2)としている。ただし、t0、t、t1、t2、Tの順に新しい時刻になるものとする。また、以下の説明中に記載されているステップ番号は、本実施の形態のフローチャート(図16・17)のステップ番号に対応している。
図18は、サーバAのレコードがR1(t)、パソコンBのレコードがR2(t)、モバイル端末CのレコードがR3(t)の場合を示している。まず、モバイル端末Cから同期開始信号がパソコンBへ、パソコンBからサーバAへ送信されるこのとき、競合回避用優先順位テーブル10BがパソコンBからサーバAへ送信される(S90)。
モバイル端末C上では同期時刻(t0)と更新時刻(t)の比較が行われ、同期時刻と更新時刻とが異なることからR1(t)がレコードCBとしてパソコンBへ向けて送信される。パソコンBでは、まず重要度IDを元に比較を行う。受信したR1(t)と相当レコードR2(t)とについて、比較が行われ(S92)、R1(t)の重要度IDの優先順位が高いことから相当レコードR2(t)が受信したレコードR1(t)に更新され、R1(t)がサーバAへ送信される(S94)。
サーバAでは受信した競合回避用優先順位テーブル10Bによって重要度IDを元に比較を行う。受信したレコードR1(t)とその相当レコードR3(t)との比較が行われ(S99)、R1(t)の重要度IDの優先順位が高いことから、相当レコードR3(t)はR1(t)に更新される。更新された場合、パソコンBへのレコード送信はなされない。
ついで、同期時刻としてTを取得し、R1(T)に更新される。TをパソコンBへ送信しサーバAの同期処理は終了する。
パソコンBではR1(t)より新しい受信はないため、Tを受信し、レコードR1(t)をR1(T)に更新する。送信記憶部8BにレコードIDはないのでモバイル端末Cへはレコードの送信を行わない。そこで、Tのみをモバイル端末Cに送信し、パソコンBの同期処理は終了する。モバイル端末CではR1(t)の受信はなく、Tのみを受信する。そして、レコードR1(t)をR1(T)に更新し、モバイル端末Cの同期を終了する。以上ですべてのノードにて同期処理が終了する。
図19は、サーバAのレコードがR3(t1)、パソコンBのレコードがR3(t2)、モバイル端末CのレコードがR1(t)の場合を示している。なお、図中の不等号は優先度の高さ(大きさ)を意味する。
まず、モバイル端末Cから同期開始信号が送信される。モバイル端末C上で同期時刻と、更新時刻との比較が行われ、R3(t1)がレコードCBとしてパソコンBへ向けて送信される。パソコンBでは、まず重要度IDを元に比較を行う。
受信したレコードR3(t1)と、その相当レコードR3(t2)について重要度IDが同じことから、次に更新時刻の比較が行われる。パソコンBのR3(t2)が新しいことから更新は行われず、R3(t2)がサーバAへ送信される。あわせてそのレコードIDが送信記憶部8Bに記録される。
サーバAでは受信したR3(t2)と相当レコードR1(t)の重要度IDの比較が行われR1(t)の重要度IDの優先順位が高いことからレコードR3(t2)は破棄され、上書きは行われない。そして、相当レコードR1(t)をパソコンBへ送信する。
ついで、同期時刻としてTを取得し、R1(t)をR1(T)に更新する。そして、TをパソコンBへ送信しサーバAの同期処理を終了する。
パソコンBでは、サーバAよりレコードR1(t)の受信があり相当レコードR3(t2)をR1(t)に更新するとともに、送信記憶部8Bに記録されたレコードIDに基づき、モバイル端末CへR1(t)を送信する。ついで、パソコンBは、サーバAよりTを受信し、レコードR1(t)をR1(T)に更新する。そして、同期時刻Tのみをモバイル端末Cに送信し、パソコンBの同期処理を終了する。
モバイル端末CはパソコンBよりレコードを受信し、R3(t1)をR1(t)に更新する。ついで、パソコンBより同期時刻Tを受信し、データベース4CのレコードR1(t)をR1(T)に更新し、モバイル端末Cの同期処理を終了する。
以上ですべての同期処理が終了する。
なお、上記通信機器は、ハードウェアで実現してもよいし、プログラムをコンピュータに実行させることによって実現してもよい。具体的には、本発明に係るプログラムは、通信手段としてコンピュータを動作させるプログラムであり、本発明に係る記録媒体には、当該プログラムが記録されている。
これらのプログラムがコンピュータによって実行されると、当該コンピュータは、上記通信機器として動作する。したがって、上記通信機器と同様に、通信できる。
また、上記各実施形態では、通信機器を構成する各部材が、「CPUなどの演算手段がROMやRAMなどの記録媒体に格納されたプログラムコードを実行することで実現される機能ブロックである」場合を例にして説明したが、同様の処理を行うハードウェアで実現してもよい。また、処理の一部を行うハードウェアと、当該ハードウェアの制御や残余の処理を行うプログラムコードを実行する上記演算手段とを組み合わせても実現することもできる。さらに、上記各部材のうち、ハードウェアとして説明した部材であっても、処理の一部を行うハードウェアと、当該ハードウェアの制御や残余の処理を行うプログラムコードを実行する上記演算手段とを組み合わせても実現することもできる。なお、上記演算手段は、単体であってもよいし、装置内部のバスや種々の通信路を介して接続された複数の演算手段が共同してプログラムコードを実行してもよい。また、上記各部材のうちの送信記憶部は、メモリなどの記憶装置自体であってもよい。
上記演算手段によって直接実行可能なプログラムコード自体、または、後述する解凍などの処理によってプログラムコードを生成可能なデータとしてのプログラムは、当該プログラム(プログラムコードまたは上記データ)を記録媒体に格納し、当該記録媒体を配付したり、あるいは、上記プログラムを、有線または無線の通信路を介して伝送するための通信手段で送信したりして配付され、上記演算手段で実行される。
なお、通信路を介して伝送する場合、通信路を構成する各伝送媒体が、プログラムを示す信号列を伝搬し合うことによって、当該通信路を介して、上記プログラムが伝送される。また、信号列を伝送する際、送信装置が、プログラムを示す信号列により搬送波を変調することによって、上記信号列を搬送波に重畳してもよい。この場合、受信装置が搬送波を復調することによって信号列が復元される。一方、上記信号列を伝送する際、送信装置が、デジタルデータ列としての信号列をパケット分割して伝送してもよい。この場合、受信装置は、受信したパケット群を連結して、上記信号列を復元する。また、送信装置が、信号列を送信する際、時分割/周波数分割/符号分割などの方法で、信号列を他の信号列と多重化して伝送してもよい。この場合、受信装置は、多重化された信号列から、個々の信号列を抽出して復元する。いずれの場合であっても、通信路を介してプログラムを伝送できれば、同様の効果が得られる。
ここで、プログラムを配付する際の記録媒体は、取外し可能である方が好ましいが、プログラムを配付した後の記録媒体は、取外し可能か否かを問わない。また、上記記録媒体は、プログラムが記憶されていれば、書換え(書き込み)可能か否か、揮発性か否か、記録方法および形状を問わない。記録媒体の一例として、磁気テープやカセットテープなどのテープ、あるいは、フロッピー(登録商標)ディスクやハードディスクなどの磁気ディスク、または、CD−ROMや光磁気ディスク(MO)、ミニディスク(MD)やデジタルビデオディスク(DVD)などのディスクが挙げられる。また、記録媒体は、ICカードや光カードのようなカード、あるいは、マスクROMやEPROM、EEPROMまたはフラッシュROMなどのような半導体メモリであってもよい。あるいは、CPUなどの演算手段内に形成されたメモリであってもよい。
なお、上記プログラムコードは、上記各処理の全手順を上記演算手段へ指示するコードであってもよいし、所定の手順で呼び出すことで、上記各処理の一部または全部を実行可能な基本プログラム(例えば、オペレーティングシステムやライブラリなど)が既に存在していれば、当該基本プログラムの呼び出しを上記演算手段へ指示するコードやポインタなどで、上記全手順の一部または全部を置き換えてもよい。
また、上記記録媒体にプログラムを格納する際の形式は、例えば、実メモリに配置した状態のように、演算手段がアクセスして実行可能な格納形式であってもよいし、実メモリに配置する前で、演算手段が常時アクセス可能なローカルな記録媒体(例えば、実メモリやハードディスクなど)にインストールした後の格納形式、あるいは、ネットワークや搬送可能な記録媒体などから上記ローカルな記録媒体にインストールする前の格納形式などであってもよい。また、プログラムは、コンパイル後のオブジェクトコードに限るものではなく、ソースコードや、インタプリトまたはコンパイルの途中で生成される中間コードとして格納されていてもよい。いずれの場合であっても、圧縮された情報の解凍、符号化された情報の復号、インタプリト、コンパイル、リンク、または、実メモリへの配置などの処理、あるいは、各処理の組み合わせによって、上記演算手段が実行可能な形式に変換可能であれば、プログラムを記録媒体に格納する際の形式に拘わらず、同様の効果を得ることができる。