(57)【特許請求の範囲】
【請求項１】
営業情報に関するサーバ側データベースをサーバ側データベース管理手段に管理させるサーバ側システムと、営業情報に関する端末側データベースを端末側データベース管理手段に管理させる業者側の端末を含む１又は複数のクライアント端末とを備え、前記サーバ側システムと前記１又は複数のクライアント端末とを結ぶ通信ネットワークを介して、前記サーバ側データベースと前記端末側データベースの間において営業情報の少なくとも一部に関してデータの同期を確保する営業情報同期システムであって、
前記サーバ側データベース管理手段が、複数のトランザクション処理の要請に対する同時実行制御に対応しており、
前記端末側データベース管理手段が、前記同時実行制御に対応しておらず、
前記サーバ側システムが、
前記クライアント端末から送信されたデータを受信するサーバ側データ受信手段と、
前記サーバ側データ受信手段が受信したデータが示す営業情報に基づいて前記データベース管理手段に前記サーバ側データベースを更新させるサーバ側データ更新手段と、
前記サーバ側データベースに格納された営業情報の少なくとも一部を前記サーバ側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記業者側端末に送信するための第１のデータフォーマットに従って生成するサーバ側データ生成手段と、
前記サーバ側データ生成手段が生成したデータを前記業者側端末へと送信するサーバ側データ送信手段とを備えており、
前記業者側端末が、
ユーザインタフェースと、
前記データ送信手段から送信されたデータを受信する端末側データ受信手段と、
前記端末側データ受信手段が受信したデータが示す営業情報に基づいて前記端末側データベース管理手段に前記端末側データベースを更新させる端末側データ更新手段と、
前記端末側データベースに格納された営業情報の少なくとも一部を前記端末側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記サーバ側システムに送信するための第２のデータフォーマットに従って生成する端末側データ生成手段と、
前記端末側データ生成手段が生成したデータを前記サーバ側システムへと送信する端末側データ送信手段と、
前記ユーザインタフェースを介したユーザ入力に起因する処理であって前記端末側データベース管理手段によるトランザクション処理が必要な処理であるユーザ起因処理を実行するユーザ起因処理実行手段とを備えており、
前記サーバ側システム及び前記業者側端末が、前記サーバ側データベース及び前記業者側データベースに格納されたデータを、その一部ずつを互いに送信し合うことにより同期させる同期処理を実行し、
前記業者側端末において前記ユーザ起因処理の要請が発生した際に前記同期処理を実行中であった場合に、（イ）前記サーバ側システム及び前記業者側端末が当該同期処理を中断すると共に、（ロ）前記業者側端末が、前記ユーザ起因処理に必要なトランザクション処理を前記同期処理に係るトランザクション処理より優先的に実行し、（ハ）前記端末側データベース管理手段が前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記サーバ側システム及び前記業者側端末が、同期対象となるデータのうちの中断によって同期が完了していない部分に関する処理を含むように当該同期処理を途中から実行することを特徴とする営業情報同期システム。
【請求項２】
営業情報に関するサーバ側データベースをサーバ側データベース管理手段に管理させるサーバ側システムと、営業情報に関する端末側データベースを端末側データベース管理手段に管理させる業者側の端末を含む１又は複数のクライアント端末とを備え、前記サーバ側システムと前記１又は複数のクライアント端末とを結ぶ通信ネットワークを介して、前記サーバ側データベースと前記端末側データベースの間において営業情報の少なくとも一部に関してデータの同期を確保する営業情報同期システムであって、
前記サーバ側データベース管理手段が、複数のトランザクション処理の要請に対する同時実行制御に対応しており、
前記端末側データベース管理手段が、前記同時実行制御に対応しておらず、
前記サーバ側システムが、
前記クライアント端末から送信されたデータを受信するサーバ側データ受信手段と、
前記サーバ側データ受信手段が受信したデータが示す営業情報に基づいて前記データベース管理手段に前記サーバ側データベースを更新させるサーバ側データ更新手段と、
前記サーバ側データベースに格納された営業情報の少なくとも一部を前記サーバ側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記業者側端末に送信するための第１のデータフォーマットに従って生成するサーバ側データ生成手段と、
前記サーバ側データ生成手段が生成したデータを前記業者側端末へと送信するサーバ側データ送信手段とを備えており、
前記業者側端末が、
ユーザインタフェースと、
前記データ送信手段から送信されたデータを受信する端末側データ受信手段と、
前記端末側データ受信手段が受信したデータが示す営業情報に基づいて前記端末側データベース管理手段に前記端末側データベースを更新させる端末側データ更新手段と、
前記端末側データベースに格納された営業情報の少なくとも一部を前記端末側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記サーバ側システムに送信するための第２のデータフォーマットに従って生成する端末側データ生成手段と、
前記端末側データ生成手段が生成したデータを前記サーバ側システムへと送信する端末側データ送信手段と、
前記ユーザインタフェースを介したユーザ入力に起因する処理であって前記端末側データベース管理手段によるトランザクション処理が必要な処理であるユーザ起因処理を実行するユーザ起因処理実行手段とを備えており、
前記業者側端末が、
前記ユーザ起因処理の要請が発生した際に、前記端末側データベース管理手段によるトランザクション処理が必要な別の処理が実行中であった場合に、当該別の処理の実行を停止すると共に、前記端末側データベース管理手段が前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記別の処理を実行させるユーザ起因処理優先化処理を実行し、
前記サーバ側データベース及び前記端末側データベースのそれぞれにおいて、営業情報を示すデータが、親データテーブル、及び、当該親データテーブルを参照する子データテーブルを含んでおり、
前記ユーザ起因処理優先化処理が、
前記別の処理を中断する時点で前記子データテーブルに係る処理が実行中であった場合に、前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記親データテーブルに係る処理から前記別の処理を実行する処理であることを特徴とする営業情報同期システム。
【請求項３】
前記別の処理が、
前記端末側データ受信手段がデータを受信する処理、前記端末側データ更新手段が前記端末側データベース管理手段に前記端末側データベースを更新させる処理、前記端末側データ生成手段が前記端末側データベース管理手段から営業情報を受け取る処理、及び、前記端末側データ生成手段がデータを生成する処理の少なくともいずれかを含む処理であることを特徴とする請求項２に記載の営業情報同期システム。
【請求項４】
前記ユーザ起因処理優先化処理が、
前記別の処理におけるデータの受信、データの生成、情報の更新及び情報の受け取りの少なくともいずれかを中断すると共に、前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記別の処理のうち、中断によって実行していない処理を少なくとも実行すると共に、前記別の処理を途中から実行する処理であることを特徴とする請求項３に記載の営業情報同期システム。
【請求項５】
前記第１及び第２のデータフォーマットが、いずれも、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）形式であることを特徴とする請求項１〜４のいずれか１項に記載の営業情報同期システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ側システム及びクライアント端末を備える営業情報同期システムに関する。
【背景技術】
【０００２】
従来、サービス提供業者におけるサービスの予約情報などの営業情報を管理するシステムがある。このようなシステムが、店舗などに設置された業者側のクライアント端末とサーバとで構成される場合がある。特許文献１の診療予約システムは、かかるシステムの一例である。このようなシステムでは、サーバとクライアント端末との間でデータベースを同期する必要が生じる。例えば、サーバと店舗側のクライアント端末とで予約情報が異なると、予約の重複などの不具合が生じるためである。クライアント端末とサーバからなるシステムでは、いわゆるクライアント・サーバ型のデータベースが採用されることが多い。クライアント・サーバ型のデータベースでは、そもそもデータベース管理システム自体が、サーバとクライアント間でデータベースの同期を内部処理として実行する。特許文献１においても、サーバとクライアントの同期を処理するのはデータベース管理手段である。この場合、データベースを利用する側のシステムは、データベース管理手段に同期を取るように指令を送るだけでよい。したがって、通常、クライアント端末とサーバからなるシステムにはクライアント・サーバ型のデータベースが採用される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２６７１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
クライアント・サーバ型のデータベースは、比較的、高性能なクライアント端末を要求する場合が多い。一方、近年、ユーザビリティやコストダウンの観点から、クライアント端末をハードウェア及びソフトウェアの両面においてコンパクトに設計することが求められている。
【０００５】
本発明の目的は、クライアント端末のデータベースとサーバ側システムのデータベースとで同期を確保しつつ、クライアント端末をハードウェア及びソフトウェアのいずれの観点でも比較的コンパクトに設計できる営業情報同期システムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の営業情報同期システムは、営業情報に関するサーバ側データベースをサーバ側データベース管理手段に管理させるサーバ側システムと、営業情報に関する端末側データベースを端末側データベース管理手段に管理させる業者側の端末を含む１又は複数のクライアント端末とを備え、前記サーバ側システムと前記１又は複数のクライアント端末とを結ぶ通信ネットワークを介して、前記サーバ側データベースと前記端末側データベースの間において営業情報の少なくとも一部に関してデータの同期を確保する営業情報同期システムであって、前記サーバ側データベース管理手段が、複数のトランザクション処理の要請に対する同時実行制御に対応しており、前記端末側データベース管理手段が、前記同時実行制御に対応しておらず、前記サーバ側システムが、前記クライアント端末から送信されたデータを受信するサーバ側データ受信手段と、前記サーバ側データ受信手段が受信したデータが示す営業情報に基づいて前記データベース管理手段に前記サーバ側データベースを更新させるサーバ側データ更新手段と、前記サーバ側データベースに格納された営業情報の少なくとも一部を前記サーバ側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記業者側端末に送信するための第１のデータフォーマットに従って生成するサーバ側データ生成手段と、前記サーバ側データ生成手段が生成したデータを前記業者側端末へと送信するサーバ側データ送信手段とを備えており、前記業者側端末が、ユーザインタフェースと、前記データ送信手段から送信されたデータを受信する端末側データ受信手段と、前記端末側データ受信手段が受信したデータが示す営業情報に基づいて前記端末側データベース管理手段に前記端末側データベースを更新させる端末側データ更新手段と、前記端末側データベースに格納された営業情報の少なくとも一部を前記端末側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記サーバ側システムに送信するための第２のデータフォーマットに従って生成する端末側データ生成手段と、前記端末側データ生成手段が生成したデータを前記サーバ側システムへと送信する端末側データ送信手段と、前記ユーザインタフェースを介したユーザ入力に起因する処理であって前記端末側データベース管理手段によるトランザクション処理が必要な処理であるユーザ起因処理を実行するユーザ起因処理実行手段とを備えており、前記サーバ側システム及び前記業者側端末が、前記サーバ側データベース及び前記業者側データベースに格納されたデータを、その一部ずつを互いに送信し合うことにより同期させる同期処理を実行し、前記業者側端末において前記ユーザ起因処理の要請が発生した際に前記同期処理を実行中であった場合に、（イ）前記サーバ側システム及び前記業者側端末が当該同期処理を中断すると共に、（ロ）前記業者側端末が、前記ユーザ起因処理に必要なトランザクション処理を前記同期処理に係るトランザクション処理より優先的に実行し、（ハ）前記端末側データベース管理手段が前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記サーバ側システム及び前記業者側端末が、同期対象となるデータのうちの中断によって同期が完了していない部分に関する処理を含むように当該同期処理を途中から実行する。別の観点では、本発明の営業情報同期システムは、営業情報に関するサーバ側データベースをサーバ側データベース管理手段に管理させるサーバ側システムと、営業情報に関する端末側データベースを端末側データベース管理手段に管理させる業者側の端末を含む１又は複数のクライアント端末とを備え、前記サーバ側システムと前記１又は複数のクライアント端末とを結ぶ通信ネットワークを介して、前記サーバ側データベースと前記端末側データベースの間において営業情報の少なくとも一部に関してデータの同期を確保する営業情報同期システムであって、前記サーバ側データベース管理手段が、複数のトランザクション処理の要請に対する同時実行制御に対応しており、前記端末側データベース管理手段が、前記同時実行制御に対応しておらず、前記サーバ側システムが、前記クライアント端末から送信されたデータを受信するサーバ側データ受信手段と、前記サーバ側データ受信手段が受信したデータが示す営業情報に基づいて前記データベース管理手段に前記サーバ側データベースを更新させるサーバ側データ更新手段と、前記サーバ側データベースに格納された営業情報の少なくとも一部を前記サーバ側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記業者側端末に送信するための第１のデータフォーマットに従って生成するサーバ側データ生成手段と、前記サーバ側データ生成手段が生成したデータを前記業者側端末へと送信するサーバ側データ送信手段とを備えており、前記業者側端末が、ユーザインタフェースと、前記データ送信手段から送信されたデータを受信する端末側データ受信手段と、前記端末側データ受信手段が受信したデータが示す営業情報に基づいて前記端末側データベース管理手段に前記端末側データベースを更新させる端末側データ更新手段と、前記端末側データベースに格納された営業情報の少なくとも一部を前記端末側データベース管理手段から受け取ると共に、当該受け取った情報を示すデータを前記サーバ側システムに送信するための第２のデータフォーマットに従って生成する端末側データ生成手段と、前記端末側データ生成手段が生成したデータを前記サーバ側システムへと送信する端末側データ送信手段と、前記ユーザインタフェースを介したユーザ入力に起因する処理であって前記端末側データベース管理手段によるトランザクション処理が必要な処理であるユーザ起因処理を実行するユーザ起因処理実行手段とを備えており、前記業者側端末が、前記ユーザ起因処理の要請が発生した際に、前記端末側データベース管理手段によるトランザクション処理が必要な別の処理が実行中であった場合に、当該別の処理の実行を停止すると共に、前記端末側データベース管理手段が前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記別の処理を実行させるユーザ起因処理優先化処理を実行し、前記サーバ側データベース及び前記端末側データベースのそれぞれにおいて、営業情報を示すデータが、親データテーブル、及び、当該親データテーブルを参照する子データテーブルを含んでおり、前記ユーザ起因処理優先化処理が、前記別の処理を中断する時点で前記子データテーブルに係る処理が実行中であった場合に、前記ユーザ起因処理に必要なトランザクション処理の実行を完了した後に、前記親データテーブルに係る処理から前記別の処理を実行する処理である。
【０００７】
本発明の営業情報同期システムによると、同時実行制御に対応していないデータベースを業者側端末に採用する。クライアント・サーバ型のデータベースは、複数のクライアントからアクセスを受けることを前提に設計されるため、通常、同時実行制御に対応している。本発明者は、クライアント・サーバ型のデータベースが同時実行制御に対応していることがクライアント端末に高性能を要求する一因となっていることに着目した。そして、同時実行制御に対応していないデータベースを本発明のサービス提供側端末に採用することとした。これにより、データベースやその管理手段がコンパクトなもので済むと共に、業者側端末が高性能なものでなくて済む。よって、クライアント端末をハードウェア及びソフトウェアのいずれの観点でも比較的コンパクトに設計できる。一方で、サーバ側システムには同時実行制御に対応したデータベースが採用されているので、サーバ側データベースとしての機能が確保されている。
【０００８】
一方、本発明者は、同時実行制御に対応していない端末側データベースを業者側端末に採用すると、以下のような２つの問題が生じることに気付いた。第１に、あらかじめクライアント・サーバ型として設計されたデータベースであれば、クライアント端末及びサーバ間のデータの同期は、データベース管理手段の内部処理として実行される。しかしながら、同時実行制御に対応していない端末側データベースを採用した本発明の場合には、クライアント・サーバ型として設計されていることが期待できない。このため、データベース管理手段の内部処理として同期処理を実行することは期待できない。そこで、本発明では、データベースから営業情報を受け取り、通信用のデータフォーマットに従ってデータを生成すると共に、生成したデータをサーバ側システム及び業者側端末間で送信することとした。これにより、データベース管理手段の内部処理に頼ることなく、サーバ側システム及び業者側端末間でデータベースの同期を確保できる。
【０００９】
第２に、業者側端末は、同期処理も含め、各種のトランザクション処理をデータベース管理手段に実行させる。その一方で、ユーザインタフェースを介してユーザ入力があった際には、業者側端末は、そのユーザ入力に起因した処理としてトランザクション処理を実行しなければならない場合がある。しかしながら、端末側データベースは同時実行制御に対応していないため、端末側データベース管理手段が既に何らかのトランザクション処理を実行中であった場合には、端末側データベース管理手段に新たなトランザクション処理を、実行中のトランザクション処理と同時に実行させることができない。仮に、既に実行中のトランザクション処理が最後まで終了してから新たなトランザクション処理を実行することにすると、新たなトランザクション処理の実行まで時間がかかる。したがって、ユーザ起因処理として新たなトランザクション処理を実行する際に実行中のトランザクション処理があった場合には、新たなトランザクション処理を実行するまで、ユーザを待たせることになる。これでは、クライアント端末をコンパクトにすることで向上したユーザビリティがかえって犠牲になるおそれがある。
【００１０】
そこで、本発明では、新たなトランザクション処理が必要なユーザ起因処理の要請が発生した際に、トランザクション処理が必要な別の処理が実行中であった場合には、その別の処理をデータベース管理手段に停止させ、ユーザ起因処理に必要なトランザクション処理を優先的に実行させる。このようなユーザ起因処理側のトランザクション処理の優先化により、ユーザ起因処理の実行を速やかに開始できる。これによって、ユーザビリティが犠牲になることを回避できる。
【００１１】
なお、サーバ側システムとは、１つ以上のサーバを有するシステムを意味し、単一のサーバからなるシステムであることを妨げない。本発明のサーバ側システムが有する機能は、サーバやコンピュータからなる複数の情報処理装置によって分担されてもよいし、単一のサーバが担ってもよい。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係る営業情報管理システムの構成を示す機能ブロック図である。
【図２】図１の営業情報管理システムにおいてデータベース内に格納されるテーブルの一例である。
【図３】図１の営業情報管理システムにおいて管理サーバシステム及び店舗端末間でやり取りされるデータの形式を示している。
【図４】店舗端末のディスプレイに表示される画像の一例を示している。
【図５】店舗端末において実行されるプロセスのシーケンス図である。
【図６】店舗端末において実行される同期処理ルーチンのフローチャートである。
【図７】管理サーバシステムにおいて実行される同期処理ルーチンのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための一形態である営業情報管理システム１（営業情報同期システム）について、図面を参照しつつ説明する。本実施形態の営業情報管理システム１は、美容室やエステサロンなどの美容業に係るサービスを提供する業者への利用が想定されている。
【００１４】
営業情報管理システム１は、図１に示すように、管理サーバシステム１００（サーバ側システム）、店舗端末２００（業者側端末）及びエンドユーザ端末３００を有している。これらはいずれもインターネット９９（通信ネットワーク）に接続されており、インターネット９９を介して互いに通信可能である。管理サーバシステム１００、店舗端末２００及びエンドユーザ端末３００は、それぞれ、サーバやパーソナルコンピュータ、携帯端末などを有している。これらの装置は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスク、Ｉ／Ｏインタフェースなどのハードウェアと、ＲＯＭ、ＲＡＭ、ハードディスクなどの記憶装置に格納されたプログラムやデータベースなどのソフトウェアとを含んでいる。以下に説明する各装置の種々の機能は、ソフトウェアがそのような機能を発揮するようにハードウェアを機能させることによって実現されている。
【００１５】
営業情報管理システム１は、顧客情報、顧客の予約状況、商品情報、在庫情報、売上情報、提供可能なサービスなど、業者における営業情報を管理する。管理サーバシステム１００及び店舗端末２００には、営業情報を格納するデータベースが設けられる。管理サーバシステム１００及び店舗端末２００は、それぞれ独立にデータベースの内容を更新することがある。このため、データベース間で営業情報が齟齬をきたさないように、データベース間の同期を確保する必要がある。以下、営業情報管理システム１において、データベース間の同期を取る処理を「同期処理」とする。本システムでは、少なくとも、店舗端末２００側のデータベースがクライアント・サーバ型のデータベースとして設計されていない。したがって、同期処理は、データベース管理手段の内部処理として実行することはできない。本実施形態の同期処理においては、管理サーバシステム１００及び店舗端末２００間で、データベース内に含まれる各種のテーブルのうちの少なくとも一部が、所定のテーブルリストに基づいて順に送信される。テーブルリストは、同期処理の対象となるのがいずれのテーブルであるかと同期の順序とを示す。
【００１６】
管理サーバシステム１００は、データベース１１０、データベース管理サーバ１２０（サーバ側データベース管理手段）及び営業情報管理サーバ１３０を有している。サーバ同士はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）で互いに通信可能に接続されている。データベース１１０はハードディスクに格納されており、このハードディスクは、データベース管理サーバ１２０にシリアルインタフェースやＬＡＮ等によって接続されるか、データベース管理サーバ１２０内に内蔵される。データベース１１０は、業者の顧客情報などの営業情報を示すデータを含んでいる。
【００１７】
例えば、顧客情報は、各顧客の名前、住所、電話番号等からなる。データベース１１０は、顧客情報を示す顧客テーブルを含んでいる。顧客テーブルは、図２（ａ）に示すように、「顧客名」「住所」「電話番号」をカラムとして含んでいると共に、各カラムに関して「Ａ子」「Ａ市Ｂ町」「ｘｘｘ−ｘｘｘ−ｘｘｘｘ」等の値を含んでいる。また、顧客の予約状況は、顧客、予約日時、サービス内容、担当等を含んでいる。データベース１１０は、予約状況を示す予約状況テーブルを含んでいる。予約状況テーブルは、図２（ｂ）に示すように、「顧客」「予約日時」「サービス内容」「担当」をカラムとして含んでいると共に、各カラムに関して「Ａ子」「９月３０日１０時」「カット」「店長」等の値を含んでいる。予約状況テーブルは、顧客テーブルを親テーブルとして参照する子テーブルとしてデータベース１１０内に含まれる。子テーブルである予約状況テーブルにおいて顧客名に含まれる値は、親テーブルである顧客テーブルの顧客名にも含まれる。また、データベース１１０内には、提供可能なサービス内容を示すサービステーブルが含まれている。
【００１８】
データベース管理サーバ１２０は、外部からの要請に基づいて、データベース１１０中のデータに対して、データの検索、追加、変更などの処理を実行する。また、データベース管理サーバ１２０は、外部から受け取ったデータに基づいて、データベース１１０中のデータを更新する。また、データベース管理サーバ１２０は、外部からの要請を受けて、データベース１１０中のデータを取り出し、要請元へと引き渡す。データベース管理サーバ１２０は、複数のトランザクション処理に関する同時実行制御が可能である。同時実行制御が可能なデータベースが採用されているのは、店舗端末２００やエンドユーザ端末３００からなる複数のクライアント端末からデータが送信され、送信されたデータに基づいてデータベース１１０が更新されることが想定されているためである。
【００１９】
営業情報管理サーバ１３０は、データ更新部１３１（サーバ側データ更新手段）、データ生成部１３２（サーバ側データ生成手段）及び同期データ通信部１３３（サーバ側データ受信手段及びサーバ側データ送信手段）を有している。データ更新部１３１は、店舗端末２００又はエンドユーザ端末３００から営業情報を示すデータが送信された場合に、その営業情報を示すデータに基づいて、データベース管理サーバ１２０にデータベース１１０のデータを更新させる。例えば、店舗端末２００からは、後述の通り、同期処理用のデータが送信されてくる。これに応じ、データ更新部１３１は、同期処理の対象となるテーブルに関して、店舗端末２００からの同期処理用のデータが示す内容にデータベース１１０のデータを更新するように、データベース管理サーバ１２０に要請する。また、エンドユーザ端末３００からは、後述の通り、予約情報を更新するためのデータが送信されてくる。これに応じ、データ更新部１３１は、エンドユーザ端末３００からの予約更新用のデータが示す更新内容に従ってデータベース１１０の予約状況テーブルを更新するように、データベース管理サーバ１２０に要請する。
【００２０】
店舗端末２００からの同期処理用のデータは、データ送信用の所定のフォーマット（第２のデータフォーマット）で生成されている。本実施形態では、このフォーマットとして、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）形式が用いられる。ＪＳＯＮ形式は、ＪａｖａＳｃｒｉｐｔ（登録商標）におけるオブジェクトの表記法をベースにしたデータ記述形式である。ＪＳＯＮ形式は、サーバ・クライアント間のデータ通信等に用いる場合、通信トラフィックが低下したり、データ変換の負担が小さくなったりといったメリットがある。
【００２１】
図３は、ＪＳＯＮ形式で記述されたデータテーブルの一例である。この図に示すように、オブジェクトにおけるキーとその値がコロン（“：”）を挟んで対とされる。また、“［ａ，ｂ，ｃ，…］”の形式で配列値が記述される。図３の例では、“ａｌｌＤａｔａＬｉｓｔ”、“ｃｏｌｕｍｎＬｉｓｔ”、“ｓｙｎｃＤａｔｅ”、“ｔａｂｌｅＮａｍｅ”及び“ｔｙｐｅＬｉｓｔ”がキーであり、コロンを挟んで次の行がその値である。キー“ａｌｌＤａｔａＬｉｓｔ”は、データテーブルのデータ値を示す。“ｃｏｌｕｍｎＬｉｓｔ”はデータベースにおけるカラム名を示す。“ｓｙｎｃＤａｔｅ”は、データベースの同期処理を実行したタイミングを示す。“ｔａｂｌｅＮａｍｅ”は、当該ＪＳＯＮ形式のデータテーブルに対応するデータベースのテーブル名を示す。“ｔｙｐｅＬｉｓｔ”は、“ａｌｌＤａｔａＬｉｓｔ”におけるデータ値の型名を示す。
【００２２】
図２（ａ）の顧客テーブルについて生成されるＪＳＯＮ形式のデータの記述例は以下のとおりである。“ａｌｌＤａｔａＬｉｓｔ”の値として「Ａ子」「Ａ市Ｂ町」「ｘｘｘ−ｘｘｘ−ｘｘｘｘ」…が記述される。“ｃｏｌｕｍｎＬｉｓｔ”の値として「顧客名」「住所」「電話番号」に対応するカラム名が記述される。“ｓｙｎｃＤａｔｅ”の値として、店舗端末２００にデータが送信されるタイミングが記述される。“ｔａｂｌｅＮａｍｅ”の値として、「顧客テーブル」に対応するテーブル名が記述される。“ｔｙｐｅＬｉｓｔ”の値として、「顧客名」の値の型名、「住所」の値の型名、「電話番号」の値の型名が記述される。
【００２３】
データ更新部１３１は、このフォーマットに従って店舗端末２００からのデータを解釈すると共に、その解釈結果に基づいて、データベース１１０のデータを更新するようにデータベース管理サーバ１２０に要請する。例えば、店舗端末２００からのデータが顧客テーブルに対応するＪＳＯＮ形式のデータであった場合には、データ更新部１３１は、かかるデータをＪＳＯＮ形式のフォーマットに従って解釈することにより、図２（ａ）に示すような顧客テーブルのテーブル名、カラム名、各カラムの値、及び、各カラムの型名を取得する。そして、データ更新部１３１は、取得したテーブル名やカラム名等に基づき、その内容に沿ってデータベース１１０のデータを更新するようにデータベース管理サーバ１２０に要請する。
【００２４】
データ生成部１３２は、店舗端末２００へと同期処理用のデータを送信するために、データベース１１０に格納された営業情報を示すデータを所定のフォーマット（第１のデータフォーマット）に変換する。本実施形態では、このフォーマットにもＪＳＯＮ形式が用いられる。なお、管理サーバシステム１００から店舗端末２００へとデータが送信される場合と、その逆方向にデータが送信される場合とで、データフォーマットが異なっていてもよい。同期処理の対象となるデータテーブルはあらかじめ定められており、営業情報の全部に相当してもよいし、一部に相当してもよい。本実施形態では、同期処理対象となる営業情報に、顧客テーブル及び予約状況テーブルが含まれる。データ生成部１３２は、データベース管理サーバ１２０から営業情報を、同期処理の対象となるテーブルごとに受け取ると共に、受け取った営業情報のテーブルを示すデータを上記フォーマットで生成する。
【００２５】
同期データ通信部１３３は、データ生成部１３２が生成したデータをＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）通信で、店舗端末２００へと送信する。また、同期データ通信部１３３は、店舗端末２００から送信される同期処理用のデータをＨＴＭＬ通信で受信する。受信した同期処理用のデータは、上記の通り、データ更新部１３１によってデータベース１１０のデータの更新に用いられる。
【００２６】
管理サーバシステム１００には、店舗端末２００やエンドユーザ端末３００などの複数のクライアント端末からデータが送信される。このため、データ更新部１３１によるデータベース１１０の更新要請が立て続けに発生する場合がある。これについては、上記の通り、データベース管理サーバ１２０が同時実行制御に対応している。したがって、例えば、店舗端末２００から送信されたデータに基づき、データ更新部１３１からデータの更新要請があった場合に、データベース管理サーバ１２０が更新のためのトランザクションを開始したとする。このトランザクション処理が完了する（つまり、コミットがなされる）までに、エンドユーザ端末３００から送信されたデータに基づいて、データ更新部１３１からデータの更新要請があった場合に、データベース管理サーバ１２０は、かかるデータの更新要請に関する新たなトランザクションを開始する。そして、データベース管理サーバ１２０は、先に立ち上げたトランザクションと後に立ち上げたトランザクションとに関して同時実行制御を行う。
【００２７】
店舗端末２００は、データベース２１０（端末側データベース）、データベース管理部２２０（端末側データベース管理手段）、タッチパネル式ディスプレイ２３０、情報入力処理部２４０、データ更新部２５０（端末側データ更新手段）、データ生成部２６０（端末側データ生成手段）及び同期データ通信部２７０（端末側データ送信手段及び端末側データ受信手段）を有している。データベース２１０は、店舗端末２００に内蔵されたハードディスク内に、単一のデータファイルとして格納されている。なお、複数のデータファイルとして格納されていてもよいし、その他の形式でハードディスク以外の記憶装置に格納されていてもよい。データベース２１０は、営業情報を示すデータを含んでいる。データベース２１０のうち、同期処理の対象となるテーブルについては、管理サーバシステム１００におけるデータベース１１０と共通のカラムを含んでいる。
【００２８】
データベース管理部２２０は、外部からの要請に基づいて、データベース２１０中のデータに対して、データの検索、追加、変更などの処理を実行する。また、データベース管理部２２０は、外部から受け取ったデータに基づいて、データベース２１０中のデータを更新する。また、データベース管理部２２０は、外部からの要請を受けて、データベース２１０中のデータを取り出し、要請元へと引き渡す。データベース管理部２２０は、複数のトランザクション処理に関する同時実行制御に対応していない。何らかのトランザクションを開始し、それがまだ完了していない間に、外部から新たな要請があったときには、データベース管理部２２０は、処理中のトランザクションが完了するまで、新たな要請に関するトランザクションを開始しない。なおこの場合、処理中のトランザクションが完了してから新たな要請に関するトランザクションが開始されてもよい。また、データベース管理部２２０は、処理中のトランザクションが完了した後に新たな要請がなされるまでは要請に応えないように構成されていてもよいし、別途の要請がなくても処理中のトランザクション処理が完了したら要請に基づくトランザクション処理を実行するように構成されていてもよい。
【００２９】
このように、データベース管理部２２０が同時実行制御に対応していないことにより、データベース２１０やデータベース管理部２２０を実現するためのアプリケーションなどのソフトウェア自体がコンパクトなもので済む。また、データベース管理部２２０の機能を担う店舗端末２００にもそれほど高い性能が要求されなくて済む。したがって、店舗端末２００は、ハードウェア及びソフトウェアのいずれの観点においても、比較的コンパクトに設計され得る。
【００３０】
タッチパネル式ディスプレイ２３０（以下、ディスプレイ２３０とする）は、ユーザに対してＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ；グラフィカルユーザインタフェース）を提供する。一例としてディスプレイ２３０には、図４に示すＧＵＩ画面が表示される。この画面には、日付、時間帯、担当者及び予約状況が表形式で表示される。担当者と予約状況は、データベース管理部２２０を通じてデータベース２１０から取得された営業情報に基づいて表示される。
【００３１】
情報入力処理部２４０は、ディスプレイ２３０の画面においてユーザがタッチした位置に基づいて所定の処理を実行する。例えば、タッチ位置がいずれかの担当者のいずれかの時間帯に対応する箇所である場合には、情報入力処理部２４０は、タッチ位置がいずれの担当者及びいずれの時間帯に対応するかを判定する。そして、情報入力処理部２４０は、データベース管理部２２０を通じてデータベース２１０から取得した顧客テーブルやサービステーブルに基づき、ディスプレイ２３０に顧客リスト及びサービスリストを表示させる。この状態でユーザが画面上の顧客リスト及びサービスリストに対応する箇所をタッチすると、情報入力処理部２４０は、タッチ位置に対応した顧客及びサービスを選択する。また、情報入力処理部２４０は、登録された予約を削除するための手順でユーザが画面をタッチしたか否かを判定する。
【００３２】
データ更新部２５０は、情報入力処理部２４０が判定した担当者及び時間帯に関して、情報入力処理部２４０が選択した顧客及びサービスについての予約を新規に登録する。具体的には、データ更新部２５０は、情報入力処理部２４０の処理内容に基づき、データベース１１０の予約状況テーブルを更新するように、データベース管理部２２０に要請する。これにより、新たな予約情報がデータベース２１０に登録される。また、予約削除の手順でユーザが画面をタッチしたと情報入力処理部２４０が判定した場合には、データ更新部２５０は、情報入力処理部２４０の判定内容に基づき、データベース１１０の予約状況テーブルから所定の予約情報を削除するように、データベース管理部２２０に要請する。
【００３３】
また、データ更新部２５０は、管理サーバシステム１００から送信された同期処理用のデータに基づき、同期処理の対象となるテーブルに関して、当該同期処理用のデータが示す内容にデータベース２１０のデータを更新するように、データベース管理部２２０に要請する。例えば、管理サーバシステム１００からのデータが予約状況テーブルに対応するＪＳＯＮ形式のデータであった場合には、データ更新部２５０は、かかるデータをＪＳＯＮ形式のフォーマットに従って解釈することにより、図２（ｂ）に示すような予約状況テーブルのテーブル名、カラム名、各カラムの値、及び、各カラムの型名を取得する。そして、データ更新部２５０は、取得したテーブル名やカラム名等に基づき、その内容に沿ってデータベース２１０のデータを更新するようにデータベース管理部２２０に要請する。
【００３４】
データ生成部２６０は、管理サーバシステム１００へと同期処理用のデータを送信するために、データベース２１０に格納された営業情報を示すデータをＪＳＯＮ形式に変換する。データ生成部２６０は、データベース管理部２２０から営業情報を、同期処理の対象となるテーブルごとに受け取ると共に、受け取った営業情報のテーブルを示すデータをＪＳＯＮ形式で生成する。
【００３５】
同期データ通信部２７０は、データ生成部２６０が生成したデータをＨＴＭＬ通信で、管理サーバシステム１００へと送信する。また、同期データ通信部２７０は、管理サーバシステム１００から送信される同期処理用のデータをＨＴＭＬ通信で受信する。受信した同期処理用のデータは、上記の通り、データ更新部２５０によってデータベース２１０のデータの更新に用いられる。
【００３６】
エンドユーザ端末３００は、業者にとっての顧客（以下、「エンドユーザ」とする）が所持する端末である。エンドユーザ端末３００としては、スマートフォンやタブレットＰＣなどの携帯端末や、デスクトップＰＣなどが想定される。エンドユーザ端末３００は、インターネット９９を介し、営業情報を示すデータを管理サーバシステム１００に送信する。このデータ通信は、エンドユーザ端末３００に搭載されたウェブブラウザを利用してブラウザベースで行われてもよいし、エンドユーザ端末３００にインストールされた専用アプリケーション（以下、「アプリ」とする）を利用して行われてもよい。アプリは、アプリダウンロードサーバからインターネット９９を介してエンドユーザ端末３００にダウンロードされ、インストールされてもよい。
【００３７】
本実施形態のエンドユーザ端末３００は、営業情報を示すデータとして、予約状況テーブルを更新するためのデータを管理サーバシステム１００に送信する。予約状況テーブルを更新するためのデータは、エンドユーザによってエンドユーザ端末３００に入力される情報に基づき、端末において実行されるアプリやブラウザソフトのプロセスによって生成される。例えば、エンドユーザ端末３００に搭載された、又は接続されたディスプレイに図４と同様の画面が表示され、この画面を介してエンドユーザ端末３００に予約情報が入力されてもよい。また、エンドユーザ端末３００側の画面は、図４とは異なる画面であってもよい。これにより、エンドユーザは、自身が所持する端末を用いて、業者が提供する各種サービスの予約を登録することができる。
【００３８】
以下、同期処理について、図５〜図７を参照しつつより詳細に説明する。店舗端末２００は、フォアグランドでメインプロセスを実行するのに対して、図５に示すように、サブプロセスとしてバックグランドで同期処理を実行する。つまり、メインプロセスの実行経過はディスプレイ２３０に表示されるのに対し、バックグラウンドでサブプロセスとして実行される同期処理の実行経過はディスプレイ２３０に表示されない。同期処理においては、上記の通り、データベース管理部２２０がトランザクション処理を実行する必要がある。一方、データベース管理部２２０は同時実行制御に対応していない。このため、店舗端末２００は、メインプロセスにおいてデータベース管理部２２０にトランザクション処理を実行させない期間に限り、サブプロセスにおいて同期処理のためのトランザクション処理をデータベース管理部２２０に実行させることができる。
【００３９】
ところが、サブプロセスでの同期処理の実行中に、メインプロセスにおいてデータベース管理部２２０にトランザクションを開始させることが必要になることがある。例えば、同期処理の実行中にユーザが図４のＧＵＩ画面にアクセスすることにより、予約状況テーブルの更新が必要になる場合などである。以下、ＧＵＩなどのユーザインタフェースを介したユーザ入力に起因する処理であって、データベース管理部２２０にトランザクションを開始させることが必要になる処理を「ユーザ起因処理」とする。ユーザ起因処理の要請が発生した場合、店舗端末２００は、メインプロセスにおいてユーザ起因処理を実行する。ユーザ起因処理の一例としては、上記のように、情報入力処理部２４０の処理に応じてデータ更新部２５０がデータベース管理部２２０に予約状況テーブルを更新させる処理がある。この場合、ユーザ起因処理の要請は、情報入力処理部２４０がユーザ入力に基づいて、担当者や時間帯を判定したり、顧客やサービスを選択したり、登録された予約を削除するための手順でユーザが画面をタッチしたことを判定したりした際に発生する。このように、情報入力処理部２４０及びデータ更新部２５０は、協働してユーザ起因処理を実行する。したがって、情報入力処理部２４０及びデータ更新部２５０は、協働で、本発明のユーザ起因処理実行手段の機能を実行する。
【００４０】
ユーザ起因処理の要請が発生した場合に、サブプロセスの同期処理をどのように取り扱えばよいかについては、２つの方法が考えられる。１つ目の方法は、メインプロセスにおいてすぐにはユーザ起因処理を開始せず、サブプロセスにおいて同期処理が完了したら、ユーザ起因処理を開始する方法である。しかしながら、ユーザ起因処理は、ユーザがＧＵＩ等にアクセスすることで、意図的に店舗端末２００に実行させようとする処理である。したがって、ユーザは、インタフェースにアクセスした直後にユーザ起因処理が開始されることを期待する。このため、同期処理を完了してからユーザ起因処理を実行すると、ユーザを待たせることになり、ユーザビリティの観点で好ましくない。また、同期処理はサブプロセスとしてメインプロセスのバックグラウンドで実行される。このため、ユーザは、ユーザ起因処理が開始されない理由をディスプレイ２３０の表示からは把握できない。したがって、ユーザにとっては待機を強いられる理由が分かりにくいため、ますますユーザビリティが損なわれやすい。
【００４１】
そこで、本実施形態では、図５に示す２つ目の方法が採用される。まず、店舗端末２００は、メインプロセスにおいて、同期処理を開始する要請を発生させる（Ｓ１）。同期処理を開始する要請は、例えば、あらかじめ設定されたスケジュールに基づき、定期的に発生してもよい。これに応じ、同期処理ルーチンが呼び出され、サブプロセスとしてその実行が開始される。次に、ユーザがユーザインタフェースにアクセスすることによりユーザ起因処理の要請が発生する（Ｓ２）と、店舗端末２００は、メインプロセスにおいて、サブプロセスに対して同期処理を中断する要請を発生させる（Ｓ３）。そして、店舗端末２００はサブプロセスを中断する。本実施形態では、店舗端末２００は、サブプロセスの同期処理ルーチンにおいていずれのステップが実行中であっても、同期処理ルーチンの実行を強制的に終了する。次に、店舗端末２００は、メインプロセスにおいてユーザ起因処理を実行する（Ｓ４）。ユーザ起因処理が終了すると、店舗端末２００は、メインプロセスにおいて、同期処理を再開する要請を発生させる（Ｓ５）。そして、店舗端末２００は、サブプロセスにおいて同期処理を再開する。本実施形態では、同期処理ルーチンが呼び出されると共に、その最初のステップから実行が再開される。
【００４２】
この２つ目の方法を採用することにより、同期処理が実行中であっても、ユーザ起因処理が優先的に開始される。このため、ユーザビリティが損なわれにくい。なお、この２つ目の方法により、同期処理を停止してユーザ起因処理を優先的に実行する処理が、本発明におけるユーザ起因処理優先化処理に対応する。
【００４３】
以下、店舗端末２００において実行される同期処理ルーチンについて図６を参照しつつ説明する。この同期処理においては、同期処理の対象となるテーブルを示すデータが、所定のテーブルリストで設定された順序で処理される。本実施形態では、上記の通り、同期処理が最初から実行される場合（図５のＳ１）と、一旦中断された同期処理が再開される場合（図５のＳ５）とがある。図６の同期処理ルーチンは、いずれの場合においても共通に呼び出され、最初のステップから実行される。したがって、同期処理ルーチンは、同期処理を最初のテーブルから実行する場合と中断されたものから再開する場合との両方に対応している必要がある。そこで、店舗端末２００は、処理対象のテーブルを示す同期テーブルステータスを保持している。同期テーブルステータスは、デフォルトの状態ではテーブルリストの最初のテーブルを示す。一方、同期処理が再開された場合には、同期テーブルステータスは、後述の通り、同期処理の中断直前まで処理していたテーブルを示す。このステータスは、店舗端末２００に搭載された、又は接続されたいずれかの記憶装置内に格納されている。
【００４４】
店舗端末２００は、同期テーブルステータスが子テーブルを示しているか否かを判定する（Ｔ１）。ステータスが子テーブルを示している場合、同期処理の中断時に子テーブルに関して同期処理が実行中であったことになる。そこで、同期テーブルステータスが子テーブルを示していると判定すると（Ｔ２、子テーブル）、店舗端末２００は、その子テーブルに対する親テーブルを示す内容にステータスの内容を更新する（Ｔ２）。そして、店舗端末２００は、Ｔ３の処理に移る。ステータスがこのように更新される理由については後述する。なお、その子テーブルの親テーブルにさらに親テーブルがある場合など、３つ以上の階層で親子関係がある場合には、最も上位の親テーブルを示すようにステータスの内容が更新されることが好ましい。一方、同期テーブルステータスが子テーブルを示していないと判定すると（Ｔ２、その他）、店舗端末２００は、そのままＴ３の処理に移る。
【００４５】
Ｔ３において、店舗端末２００のデータ生成部２６０は、同期テーブルステータスが示すテーブルに関して、データベース管理部２２０からテーブルを示すデータを受け取る（Ｔ３）。そして、データ生成部２６０は、管理サーバシステム１００に送信するべきデータがあるか否かを判定する（Ｔ４）。この判定は、前回の同期処理において管理サーバシステム１００に送信したデータテーブルとデータベース管理部２２０から今回受け取ったデータとを照合し、今回受け取ったデータに前回送信したデータと異なるデータが含まれるか否かに基づいて行われる。今回受け取ったデータに前回送信したデータと異なるデータが含まれる場合には、データ生成部２６０は、管理サーバシステム１００に送信するべきデータがあると判定する。今回受け取ったデータに前回送信したデータと異なるデータが含まれていない場合には、データ生成部２６０は、管理サーバシステム１００に送信するべきデータがないと判定する。管理サーバシステム１００に送信するべきデータがないと判定された場合（Ｔ４、Ｎｏ）には、店舗端末２００は、同期すべきデータがない旨を管理サーバシステム１００に送信する（Ｔ１５）と共に、Ｔ７の処理に移る。これにより、前回からデータの変更がないテーブルに関しては、管理サーバシステム１００へのデータ送信がなされない。
【００４６】
管理サーバシステム１００に送信するべきデータがあると判定された場合（Ｔ４、Ｙｅｓ）には、データ生成部２６０は、Ｔ３において取得したテーブルを示すデータに基づいてＪＳＯＮ形式のデータを生成する（Ｔ５）。同期データ通信部２７０は、Ｔ５で生成されたＪＳＯＮ形式のデータを管理サーバシステム１００に送信する（Ｔ６）。次に、店舗端末２００は、同期テーブルステータスが示すテーブルについて同期処理用のデータを送信するように要請するリクエストを管理サーバシステム１００に送信する（Ｔ７）。同期データ通信部２７０は、これに応じて管理サーバシステム１００から送信されてくる同期処理用のデータを受信する（Ｔ８）。そして、データ更新部２５０は、Ｔ８において同期データ通信部２７０が受信したデータに基づき、データベース管理部２２０にデータベース２１０を更新させる（Ｔ９）。なお、Ｔ８において、同期すべきデータがない旨を管理サーバシステム１００から同期データ通信部２７０が受信した場合には、Ｔ９において、データ更新部２５０はデータベース２１０の更新を実行しない。
【００４７】
次に、店舗端末２００は、同期テーブルステータスに基づき、同期処理の対象となるテーブルでまだ同期処理を実行していないものがあるかを判定する（Ｔ１０）。そして、まだ同期処理を実行していないテーブルがあると判定した場合（Ｔ１０、Ｙｅｓ）、店舗端末２００は、同期テーブルステータスをテーブルリストにおける次のテーブルを示す内容に更新する（Ｔ１３）。そして、店舗端末２００は、管理サーバシステム１００に完了報告を送信する（Ｔ１４）と共に、Ｔ３からの処理に移る。これにより、同期処理の対象となる一連のテーブルに関して順番に同期処理が実行される。本実施形態では、親子関係のあるテーブルに関しては、先に親テーブルについて同期処理が実行され、その後に子テーブルについて同期処理が実行される。
【００４８】
一方、同期処理を実行していないテーブルがないと判定した場合（Ｔ１０、Ｎｏ）、店舗端末２００は、同期テーブルステータスをリセットする（Ｔ１１）。これにより、ステータスは、デフォルトの状態、つまり、テーブルリストの最初のテーブルを示す状態になる。そして、店舗端末２００は、管理サーバシステム１００に完了報告を送信する（Ｔ１２）と共に、同期処理を完了する。
【００４９】
以上の同期処理ルーチンがサブプロセスとして実行されるに当たり、メインプロセスにおいて同期処理を中断する要請が発生した場合（図５のＳ３）には、Ｔ１〜Ｔ１２のいずれのステップが実行中であっても、一旦ルーチンが強制的に終了される。このとき、同期テーブルステータスは、ルーチンが終了される直前に処理中であったテーブルを示すことになる。したがって、次に同期処理ルーチンが呼び出されたときには、同期テーブルステータスが子テーブルを示すものでなければ、中断直前に処理中であったテーブルから同期処理が再開されることになる（Ｔ１、その他→Ｔ３）。
【００５０】
これに対し、同期処理の再開時に同期テーブルステータスが子テーブルを示している場合には、ステータスの内容が、その子テーブルの親テーブルを示すように更新される（Ｔ２、子テーブル→Ｔ２）。したがって、同期処理は、中断時に処理中であった子テーブルではなく、その親テーブルから再開されることになる（Ｔ３〜）。
【００５１】
このようにステータスが更新されるのは以下の理由による。同期処理が中断してから再開するまでに、ユーザ起因処理が実行されることから、ある程度の時間が経過する。したがって、同期処理が中断してから再開するまでの間には、管理サーバシステム１００や店舗端末２００において、データベースの内容が変更されているおそれがある。よって、子テーブルを処理中に同期処理が中断された後、仮にその子テーブルから同期処理を再開する場合には、それより以前に同期処理がなされた親テーブルとこれから同期処理を行おうとする子テーブルとの間に不整合が生じるおそれがある。なぜなら、この場合、親テーブルに関して同期処理を実行する時点と子テーブルに関して同期処理を再開する時点とが時間的に離れることになり、これによって、その間に親テーブルの内容が変更される可能性が高まるからである。これに対して上記の通り、同期処理の再開時に同期テーブルステータスが子テーブルを示している場合には、その子テーブルの親テーブルにさかのぼって同期処理が再開される。これにより、同期処理が中断している間に親テーブルに変更があったとしても、その親テーブルから同期処理が再開される。そして、その後にすぐに子テーブルに関して同期処理がなされるので、親テーブルの同期処理から子テーブルの同期処理までが時間的に離れない。したがって、親テーブルと子テーブルとの間に不整合が生じにくくなる。
【００５２】
次に、管理サーバシステム１００（営業情報管理サーバ１３０）において実行される同期処理ルーチンについて図７を参照しつつ説明する。営業情報管理サーバ１３０は、店舗端末２００からデータ送信があったか否か判定し（Ｔ２１）、データ送信があるまで待機する（Ｔ２１、Ｎｏ）。データ送信があったと判定すると（Ｔ２１，Ｙｅｓ）、営業情報管理サーバ１３０の同期データ通信部１３３は、店舗端末２００からのデータを受信する（Ｔ２２）。このとき、同期データ通信部１３３は、データ受信が正常に完了したか否かを判定する（Ｔ２３）。店舗端末２００において、同期処理が中断する場合もあるからである。
【００５３】
データ受信が正常に完了していないと判定された場合には（Ｔ２３、Ｎｏ）、管理サーバシステム１００は、Ｔ２１の処理に戻る。データ受信が正常に完了したと判定された場合には（Ｔ２３、Ｙｅｓ）、営業情報管理サーバ１３０は、同期処理用のデータを送信するように要請するリクエストが、Ｔ２２におけるデータ受信の完了から所定時間内に店舗端末２００から送信されたか否かを判定する（Ｔ２４）。データ受信の完了から所定時間内に店舗端末２００からリクエストが送信されていないと判定した場合に（Ｔ２４、Ｎｏ）、営業情報管理サーバ１３０は、Ｔ２１の処理に戻る。データ受信の完了から所定時間内に店舗端末２００からリクエストが送信されたと判定した場合に（Ｔ２４、Ｙｅｓ）、営業情報管理サーバ１３０のデータ生成部１３２は、リクエストに係るテーブルに関してデータベース管理サーバ１２０からデータテーブルを受け取る（Ｔ２５）。
【００５４】
次に、データ生成部１３２は、店舗端末２００に送信するべきデータがあるか否かを判定する（Ｔ２６）。この判定は、前回の同期処理において店舗端末２００に送信したデータテーブルとデータベース管理サーバ１２０から今回受け取ったデータとを照合し、今回受け取ったデータに前回送信したデータと異なるデータが含まれるか否かに基づいて行われる。今回受け取ったデータに前回送信したデータと異なるデータが含まれる場合には、データ生成部１３２は、店舗端末２００に送信するべきデータがあると判定する。今回受け取ったデータに前回送信したデータと異なるデータが含まれていない場合には、データ生成部１３２は、店舗端末２００に送信するべきデータがないと判定する。
【００５５】
店舗端末２００に送信するべきデータがないと判定された場合（Ｔ２６、Ｎｏ）には、営業情報管理サーバ１３０は、同期すべきデータがない旨を店舗端末２００に送信し（Ｔ３１）、Ｔ２９の処理に移る。店舗端末２００に送信するべきデータがあると判定された場合（Ｔ２６、Ｙｅｓ）には、営業情報管理サーバ１３０のデータ生成部１３２は、Ｔ２５において取得したテーブルを示すデータに基づいてＪＳＯＮ形式のデータを生成する（Ｔ２７）。同期データ通信部２７０は、Ｔ２７で生成されたＪＳＯＮ形式のデータを店舗端末２００に送信する（Ｔ２８）。
【００５６】
次に、営業情報管理サーバ１３０は、店舗端末２００から完了報告があったか否かを判定する（Ｔ２９）。店舗端末２００から完了報告がないと判定した場合には（Ｔ２９、Ｎｏ）、営業情報管理サーバ１３０は、Ｔ２１の処理に戻る。店舗端末２００から完了報告があったと判定した場合には（Ｔ２９，Ｙｅｓ）、営業情報管理サーバ１３０のデータ更新部１３１は、Ｔ２２において同期データ通信部１３３が受信したデータに基づき、データベース管理サーバ１２０にデータベース１１０を更新させる（Ｔ３０）。なお、Ｔ２２において、同期すべきデータがない旨を店舗端末２００から同期データ通信部１３３が受信した場合には、Ｔ３０において、データ更新部１３１は、データベース１１０の更新を実行しない。
【００５７】
このように、Ｔ２３、Ｔ２４又はＴ２９において、店舗端末２００からのデータ受信が正常に完了しなかったり、店舗端末２００からリクエストや完了報告が送信されなかったりする場合には、Ｔ３０におけるデータベース１１０の更新がなされない。これは、このような場合には店舗端末２００において同期処理が途中で中断したと考えられるためである。店舗端末２００において同期処理が途中で中断すると、上記の通り、ユーザ起因処理が終了してから同期処理が再開される。そして、同期処理が再開される場合には、少なくとも中断時に処理中であったテーブルについて同期処理が実行される。このため、店舗端末２００において同期処理が途中で中断したのであれば、営業情報管理サーバ１３０においては、Ｔ２でデータを受信していたとしてもデータベース１１０を更新する必要がない。
【００５８】
本実施形態の営業情報管理システム１では、以上のように、店舗端末２００から管理サーバシステム１００へのデータ送信がトリガーとなり、一連の同期処理が実行されるが、管理サーバシステム１００から店舗端末２００へのデータ送信がトリガーとなってもよい。
【００５９】
以上説明した本実施形態の概要は以下のとおりである：（１）店舗端末２００側のデータベース管理部２２０が同時実行制御に対応していないため、店舗端末２００をコンパクトに設計できる。（２）店舗端末２００において同期処理中にユーザ起因処理の要請が発生した場合に、同期処理を一旦中断してユーザ起因処理を実行してから同期処理を再開する。このため、ユーザを待たせることが少なくなり、ユーザビリティが向上する。（３）店舗端末２００において同期処理を一旦中断した後に再開する際に、同期テーブルステータスが子テーブルを示していた場合、その子テーブルから同期処理を再開せず、その子テーブルの親テーブルから同期処理を再開する。このため、子テーブルに関して処理中に同期処理が中断された場合であって、同期処理を中断していた間に親テーブルが変更された場合でも、親テーブルと子テーブルとの間の整合が確保される。（４）店舗端末２００において、中断された同期処理が再開される際、テーブルリストの最初から同期処理が実行されるとは限らず、同期テーブルステータスが示すテーブル（又は、その親テーブル）、つまり、中断直前に処理中であったテーブルから同期処理が再開される。このため、中断によって同期処理が実行されなかったテーブルについて同期処理を確保できると共に、テーブルリストの最初から再開される場合と比べて、重複して処理されるテーブルを少なくできる。なお、このように、同期テーブルステータスが示すテーブル（又は、その親テーブル）から同期処理を再開することが、本発明における「別の処理を途中から実行する」ことに対応する。
【００６０】
＜変形例＞
以上は、本発明の好適な実施形態についての説明であるが、本発明は上述の実施形態に限られるものではなく、課題を解決するための手段に記載された範囲の限りにおいて様々な変更が可能なものである。
【００６１】
例えば、上述の実施形態では、ユーザ起因処理が完了してから同期処理が再開される。しかし、ユーザ起因処理が実行中であっても、データベース管理部２２０によるトランザクション処理が完了すれば、同期処理が再開されてもよい。例えば、１回のユーザ入力がなされた場合であって、当該入力によって必要なトランザクション処理がすべて終了した場合には、ユーザ起因処理として必要な処理がまだ残っていても、同期処理が再開されてもよい。
【００６２】
また、上述の実施形態では、メインプロセスにおいて中断要請が発生すれば、図６のいずれのステップにおいても一旦ルーチンが中断される。しかし、メインプロセスにおいて中断要請が発生しても、図６のいずれかのステップを実行してから同期処理が中断されてもよい。例えば、中断要請が発生した際に同期処理中であったテーブルに関して、Ｔ９までの処理がすべて完了してから、同期処理が中断されてもよい。この場合、中断の際に、同期テーブルステータスが次のテーブルを示すように更新されてもよい。
【００６３】
また、上述の実施形態では、ユーザ起因処理の要請が発生した時点で同期処理が実行中であった場合に、同期処理が中断されると共にユーザ起因処理が優先的に実行される。しかし、ユーザ起因処理の要請が発生した時点で同期処理以外の処理が実行中であった場合に、その同期処理以外の処理が中断されると共にユーザ起因処理が優先的に実行されてもよい。ここで想定される同期処理以外の処理は、少なくとも、データベース管理部２２０にトランザクション処理の実行を要求する処理であればよい。例えば、その処理は、（イ）店舗端末２００が外部からデータを受信する処理、（ロ）データベース２１０を更新する必要がある処理、（ハ）データベース管理部２２０からデータベース２１０の営業情報を受け取る処理、及び、（ニ）データベース管理部２２０から受け取った営業情報から何らかのデータを生成する処理の少なくともいずれかを含んだ処理である。処理が中断された場合には、ユーザ起因処理の完了後に、中断によって実行されなかった処理が少なくとも実行されればよい。
【００６４】
また、上述の実施形態では、管理サーバシステム１００から店舗端末２００にデータが送らされる際にも、その逆方向にデータが送られる際にも、ＪＳＯＮ形式が用いられる。しかし、いずれか一方にＪＳＯＮ形式が用いられ、他方にはその他の形式が用いられてもよい。また、いずれの場合にもＪＳＯＮ形式以外の形式が用いられてもよい。この場合にも、管理サーバシステム１００から店舗端末２００への方向とその逆方向とで互いに異なる形式が用いられてもよい。
【００６５】
また、上述の実施形態の営業情報管理システム１において、複数の店舗端末２００や複数のエンドユーザ端末３００が管理サーバシステム１００に接続されてもよい。例えば、業者がチェーン展開している場合には、店舗端末２００は、店舗ごとに設けられることになる。この場合には、複数の店舗端末２００が管理サーバシステム１００に接続される。また、エンドユーザ端末３００も、複数のエンドユーザのそれぞれが所持することになる。この場合には、複数のエンドユーザ端末３００が管理サーバシステム１００に接続される。
【００６６】
また、上述の実施形態では、ユーザ起因処理は、ＧＵＩを介したユーザ入力に起因する処理である。しかし、その他のユーザインタフェースを介したユーザ入力に起因する処理であってもよい。ユーザインタフェースは、マウスやキーボードなどの入力装置を介したインタフェースも考えられる。
【符号の説明】
【００６７】
１        営業情報管理システム
９９      インターネット
１００    管理サーバシステム
１１０、２１０  データベース
１２０  データベース管理サーバ
１３０  営業情報管理サーバ
１３１、２５０  データ更新部
１３２、２６０  データ生成部
１３３、２７０  同期データ通信部
２００  店舗端末
２２０  データベース管理部
２４０  情報入力処理部
３００  エンドユーザ端末
【要約】
【課題】クライアント端末のデータベースとサーバ側システムのデータベースとで同期を確保しつつ、クライアント端末をハードウェア及びソフトウェアのいずれの観点でも比較的コンパクトに設計できる。
【解決手段】店舗端末２００のデータベース管理部２２０は、同時実行制御に対応していない。したがって、店舗端末２００は、同期処理を実行中に、タッチパネル式ディスプレイ２３０を介したユーザ入力がなされることで新たなトランザクション処理の実行要求が発生した場合に、同期処理を一旦中断し、新たなトランザクション処理を含むユーザ入力に起因する処理を実行する。その後、店舗端末２００は、同期処理を再開する。
【選択図】図１【図１】
0005504452.tif 000002
【図２】
0005504452.tif 000003
【図３】
0005504452.tif 000004
【図４】
0005504452.tif 000005
【図５】
0005504452.tif 000006
【図６】
0005504452.tif 000007
【図７】
0005504452.tif 000008