(57)【特許請求の範囲】
【請求項１】
サーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報を更新するサーバ側更新部と、
前記第１の情報が更新されたことを検知するサーバ側検知部と、
前記サーバ側検知部により第１の情報が更新されたことが検知された場合に、前記第１の情報が更新されたことを示す情報を端末装置に通知するサーバ側同期部と、
を有するサーバ装置と、
ウェブアプリケーションが実行されることによって機能するアプリ実行部であって、
前記サーバ装置から前記第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する端末側同期部、および、利用者の操作に応じて前記第２の情報に基づく処理を実行する処理実行部を含むアプリ実行部と、
を有する端末装置と、を備え、
前記第１の情報および前記第２の情報は、それぞれ、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号とを含む、
ウェブアプリケーションシステム。
【請求項２】
前記第１の情報は、更に更新フラグを含み、
前記サーバ側検知部は、前記更新フラグが変更されていることを検知することで、前記第１の情報の変数の値が更新されたことを検知する、
請求項１に記載のウェブアプリケーションシステム。
【請求項３】
前記サーバ側同期部は、前記第１の情報のリビジョン番号が、同期済みリビジョン番号と合致していない場合に、前記第２の情報を前記第１の情報と同期させ、前記第２の情報を前記第１の情報との同期が完了した場合に、前記第１の情報の同期済みリビジョン番号を、前記リビジョン番号の値に合致させる、
請求項１または２に記載のウェブアプリケーションシステム。
【請求項４】
サーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報を更新するサーバ側更新部と、
前記第１の情報が更新されたことを検知するサーバ側検知部と、
前記サーバ側検知部により第１の情報が更新されたことが検知された場合に、前記第１の情報が更新されたことを示す情報を端末装置に通知するサーバ側同期部と、
を有するサーバ装置と、
ウェブアプリケーションが実行されることによって機能するアプリ実行部であって、前記サーバ装置から前記第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する端末側同期部、および、利用者の操作に応じて前記第２の情報に基づく処理を実行する処理実行部を含むアプリ実行部と、
を有する端末装置と、を備え、
前記アプリ実行部は、前記第２の情報の内容が更新されたことを検知した場合に、前記第２の情報が更新されたことを示す情報を前記サーバ装置に通知し、前記端末装置に記憶された第２の情報との同期を行い、
前記第２の情報は、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号と、更新フラグとを含み、
前記アプリ実行部は、前記更新フラグが変更されていることを検知することで、前記第２の情報の変数の値が更新されたことを検知する、
ウェブアプリケーションシステム。
【請求項５】
サーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報を更新するサーバ側更新部と、
前記第１の情報が更新されたことを検知するサーバ側検知部と、
前記サーバ側検知部により第１の情報が更新されたことが検知された場合に、前記第１の情報が更新されたことを示す情報を端末装置に通知するサーバ側同期部と、
を有するサーバ装置と、
ウェブアプリケーションが実行されることによって機能するアプリ実行部であって、前記サーバ装置から前記第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する端末側同期部、および、利用者の操作に応じて前記第２の情報に基づく処理を実行する処理実行部を含むアプリ実行部と、
を有する端末装置と、を備え、
更に、前記第１の情報を生成するサーバ側情報管理部と、
前記サーバ側情報管理部から得られる前記第１の情報の構造情報に基づいて、前記第２の情報を生成する端末側情報管理部と、を備え、
前記サーバ側同期部は、前記端末装置との通信が断絶したことを検知し、
前記サーバ側情報管理部は、前記サーバ側同期部により前記通信が断絶したことが検知されてから所定時間が経過した場合に、前記第１の情報を破棄する、
ウェブアプリケーションシステム。
【請求項６】
前記サーバ側情報管理部は、前記端末装置との通信の断絶の状況に基づいて、前記第１の情報を破棄する、
請求項５に記載のウェブアプリケーションシステム。
【請求項７】
前記アプリ実行部は、前記サーバ装置との通信が断絶したことを検知し、
前記端末側情報管理部は、前記アプリ実行部により前記通信が断絶したことが検知された場合に、前記第２の情報の復元を前記サーバ側情報管理部に要求する、
請求項５に記載のウェブアプリケーションシステム。
【請求項８】
前記アプリ実行部は、前記サーバ装置との通信が断絶した後に前記通信が復旧したことを検知し、
前記端末側情報管理部は、前記アプリ実行部により前記通信が復旧したことが検知された場合に、前記第２の情報の復元を前記サーバ側情報管理部に要求する、
請求項５に記載のウェブアプリケーションシステム。
【請求項９】
前記サーバ側記憶部は、前記第１の情報の変数名ごとに、前記端末装置に対する認証認可レベルを定義した情報定義データを記憶し、
前記サーバ側情報管理部は、前記アプリ実行部による前記第１の情報の取得要求に対し、前記サーバ側記憶部に記憶された前記情報定義データに基づいて前記第１の情報を生成する、
請求項５に記載のウェブアプリケーションシステム。
【請求項１０】
前記情報定義データを生成する情報定義生成部を更に備える、
請求項９に記載のウェブアプリケーションシステム。
【請求項１１】
前記サーバ側情報管理部は、所定の通信プロトコルによる前記端末装置の認証認可結果に基づいて、前記サーバ側記憶部に記憶された前記情報定義データの中から前記端末装置に対応付けられた情報定義データを選択し、選択した情報定義データに基づいて前記第１の情報を生成する、
請求項９に記載のウェブアプリケーションシステム。
【請求項１２】
画像を表示する表示部と、
複数のサーバ装置のそれぞれの第１の情報に同期させた前記第２の情報に基づいて、前記表示部に画像を表示させる表示制御部と、を更に備える、
請求項１に記載のウェブアプリケーションシステム。
【請求項１３】
サーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報を更新するサーバ側更新部と、
前記第１の情報が更新されたことを検知するサーバ側検知部と、
前記サーバ側検知部により第１の情報が更新されたことが検知された場合に、前記第１の情報が更新されたことを示す情報を端末装置に通知するサーバ側同期部と、
前記端末装置のブラウザからの要求に応じて、前記端末装置を、前記第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する端末側同期部および利用者の操作に応じて前記第２の情報に基づく処理を実行する処理実行部を含むアプリ実行部として機能させるためのプログラムを提供するプログラム提供部と、
を備え、
前記第１の情報および前記第２の情報は、それぞれ、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号とを含む、
サーバ装置。
【請求項１４】
ウェブアプリケーションが実行されることによって機能するアプリ実行部であって、サーバ装置で実行されるサーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する端末側同期部、および、利用者の操作に応じて前記第２の情報に基づく処理を実行する処理実行部を含むアプリ実行部と、
を備え、
前記第１の情報および前記第２の情報は、それぞれ、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号とを含む、
端末装置。
【請求項１５】
サーバ装置のコンピュータに、
サーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報を更新させ、
前記第１の情報が更新されたことを検知させ、
前記第１の情報が更新されたことが検知された場合に、前記第１の情報が更新されたことを示す情報を端末装置に通知させ、
前記端末装置のブラウザからの要求に応じて、前記端末装置を、前記第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する端末側同期部および利用者の操作に応じて前記第２の情報に基づく処理を実行する処理実行部を含むアプリ実行部として機能させるためのプログラムを提供させ、
前記第１の情報および前記第２の情報は、それぞれ、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号とを含む、
プログラム。
【請求項１６】
端末装置に、ウェブアプリケーションの一部としてダウンロードされるプログラムであって、
前記端末装置のコンピュータに、
サーバ装置で実行されるサーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始させ、
利用者の操作に応じて前記第２の情報に基づく処理を実行させ、
前記第１の情報および前記第２の情報は、それぞれ、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号とを含む、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ウェブアプリケーションシステム、サーバ装置、端末装置、およびプログラムに関する。
【背景技術】
【０００２】
従来、端末装置のブラウザ上で動作するプログラムと、サーバ装置側のプログラムとが協調することによって動作するウェブアプリケーションが知られている。ウェブアプリケーションを利用する場合、利用者は、ブラウザ画面上に表示される項目等を操作して、端末装置からサーバ装置にリクエストを行わせることで、サーバ装置に所定の処理を実行させたり、サーバ装置で管理される情報を取得してブラウザ画面に表示させたりすることができる。従って、端末装置とサーバ装置との通信が断絶した場合には、サーバ装置から情報を取得することができず、ウェブアプリケーションの利用を継続するのが困難な場合があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３４１８５００号公報
【特許文献２】特表２００４−５１５８３３号公報
【特許文献３】米国特許第５７６８５１０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、利用継続性を向上させることができるウェブアプリケーションシステム、サーバ装置、端末装置、およびプログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のウェブアプリケーションシステムは、サーバ装置と、端末装置とを持つ。サーバ装置は、サーバ側更新部と、サーバ側検知部と、サーバ側同期部とを持つ。端末装置は、アプリ実行部を持つ。サーバ側更新部は、サーバ側イベントに基づいて、サーバ側記憶部に記憶された第１の情報を更新する。サーバ側検知部は、前記第１の情報が更新されたことを検知する。サーバ側同期部は、前記サーバ側検知部により第１の情報が更新されたことが検知された場合に、前記第１の情報が更新されたことを示す情報を端末装置に通知する。アプリ実行部は、ウェブアプリケーションが実行されることによって機能する。アプリ実行部は、端末側同期部と、処理実行部とを持つ。端末側同期部は、前記サーバ装置から前記第１の情報が更新されたことを示す情報を受け付けた場合に、端末側記憶部に記憶された第２の情報を前記第１の情報に同期させることを開始する。処理実行部は、利用者の操作に応じて前記第２の情報に基づく処理を実行する。第１の情報および第２の情報は、それぞれ、前記サーバ側イベントにおいて使用される変数名と、変数の値と、前記変数の更新に対応付けられたリビジョン番号と、前記第１の情報と前記第２の情報とが同期済みであるか否かを判定するための同期済みリビジョン番号とを含む。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態のウェブアプリケーションシステム１のシステム起動前の状態を示す図。
【図２】第１の実施形態のウェブアプリケーションシステム１の機能構成例を示す図。
【図３】アプリ実行部２２０の機能構成例を示す図。
【図４】第１の実施形態のウェブアプリケーションシステム１のアーキテクチャについて説明するための図。
【図５】第１の情報１７４の内容の一例を示す図。
【図６】検索部１６０により更新された第１の情報１７４の内容の一例を示す図。
【図７】サーバ側検知部１３０により更新された第１の情報１７４の内容の一例を示す図。
【図８】端末側同期部２２３により更新された第２の情報２５４の内容の一例を示す図。
【図９】表示部２４０に表示される画面の一例を示す図。
【図１０】端末側情報管理部２２１の処理の一例を示すフローチャート。
【図１１】サーバ側情報管理部１２０の処理の一例を示すフローチャート。
【図１２】端末側検知部２２２の処理の一例を示すフローチャート。
【図１３】サーバ側検知部１３０の処理の一例を示すフローチャート。
【図１４】端末側通知部２２４の処理の一例を示すフローチャート。
【図１５】サーバ側通知部１５０の処理の一例を示すフローチャート。
【図１６】端末側同期部２２３の処理の一例を示すフローチャート。
【図１７】サーバ側同期部１４０の処理の一例を示すフローチャート。
【図１８】第２の実施形態のウェブアプリケーションシステム２の一例を示す図。
【図１９】第２の実施形態のウェブアプリケーションシステム２のアーキテクチャについて説明するための図。
【図２０】情報定義生成元データ１８２の内容の一例を示す図。
【図２１】情報定義データ１７６の内容の一例を示す図。
【図２２】情報定義生成部１８０の処理の一例を示すフローチャート。
【図２３】第２の実施形態のサーバ側情報管理部１２０Ａの処理の一例を示すフローチャート。
【図２４】サーバ側同期部１４０の処理の一例を示すフローチャート。
【図２５】端末側同期部２２３の処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施形態のウェブアプリケーションシステム、サーバ装置、端末装置、およびプログラムを、図面を参照して説明する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のウェブアプリケーションシステム１のシステム起動前の状態を示す図である。ウェブアプリケーションシステム１は、例えば、一以上のサーバ装置１００と、一以上の端末装置２００とを備える。サーバ装置１００と、端末装置２００とは、インターネットやＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等を含むネットワークＮＷを介して通信する。
【０００９】
サーバ装置１００は、例えば、所定のウェブサイトを提供するウェブサーバである。サーバ装置１００は、例えば、サーバ側通信部１１０と、ウェブサーバ機能部１１２とを備える。ウェブサーバ機能部１１２は、「プログラム提供部」の一例である。
【００１０】
サーバ側通信部１１０は、ネットワークＮＷを介して、端末側通信部２１０と通信する。サーバ側通信部１１０は、例えば、ＮＩＣ（Network Interface Card）や無線通信モジュール等の通信インターフェースである。
【００１１】
ウェブサーバ機能部１１２は、端末装置２００のブラウザ２１２からのリクエストをサーバ側通信部１１０が受け付けると、ウェブアプリケーション機能を実現するためのプログラム（例えば、JavaScript（登録商標）で記述されたプログラム）を埋め込んだウェブページを端末装置２００に送信（提供）する。
【００１２】
端末装置２００は、例えば、端末側通信部２１０と、ブラウザ２１２とを備える。端末側通信部２１０は、ネットワークＮＷを介してサーバ装置１００と通信する。端末側通信部２１０は、例えば、ＮＩＣや無線通信モジュール等の通信インターフェースである。
【００１３】
ブラウザ２１２は、サーバ装置１００の所定のウェブサイトにアクセスし、サーバ装置１００からダウンロードされるプログラムを実行する。これにより、端末装置２００は、ブラウザ２１２によりウェブアプリケーションシステム１の各機能を実現することができる。
【００１４】
図２は、第１の実施形態のウェブアプリケーションシステム１の機能構成例を示す図である。以下において、図１で説明した構成については、同一の名称および符号を用いることとし、具体的な説明は省略する。
【００１５】
まず、サーバ装置１００の機能構成例について説明する。サーバ装置１００は、例えば、サーバ側通信部１１０と、サーバ側情報管理部１２０と、サーバ側検知部１３０と、サーバ側同期部１４０と、サーバ側通知部１５０と、検索部１６０と、サーバ側記憶部１７０とを備える。サーバ側情報管理部１２０、サーバ側検知部１３０、サーバ側同期部１４０、サーバ側通知部１５０、および検索部１６０は、ＣＰＵ（Central Processing Unit）等のハードウェアプロセッサがサーバ側記憶部１７０に記憶されたプログラム（ソフトウェアコンポーネンツ）を実行することにより実現される。プログラムは、例えば、ネットワークＮＷを介してアプリケーションサーバ（不図示）からダウンロードされてもよいし、ＳＤカード等の可搬型記憶媒体に格納されたものがサーバ装置１００にインストールされてもよい。また、検索部１６０は、「サーバ側更新部」の一例である。
【００１６】
サーバ側情報管理部１２０は、サーバ側記憶部１７０に記憶された第１の情報１７４を管理する。第１の情報１７４は、端末装置２００で管理される第２の情報２５４と同期される情報である。第１の情報１７４の詳細については後述する。サーバ側情報管理部１２０は、サーバ側イベントに応じて、第１の情報１７４の生成や読み取り、削除等を行う。サーバ側イベントとは、例えば、端末装置２００からの要求とは無関係に発生するイベントであり、データの取得や出力、演算等の各種処理が含まれる。また、サーバ側情報管理部１２０は、端末側情報管理部２２１からの構造情報の取得要求に対して、第１の情報１７４の構造情報を端末装置２００に送信する。構造情報とは、例えば、第１の情報１７４のデータ構造を示す型、変数等の情報を識別する識別情報（ＩＤ）、およびＩＤに対応する値を含む。
【００１７】
サーバ側検知部１３０は、第１の情報１７４の内容が更新されたことを検知する。第１の情報１７４の内容が更新されるとは、例えば、サーバ装置１００がサーバ側イベントにより所定の処理を実行することで、第１の情報１７４に新たな情報が追加されたり、既に記憶されている情報が変更されたり、削除される場合である。また、第１の情報１７４の内容が更新されるとは、例えば、端末装置２００からセンサー情報等の取得要求が第１の情報１７４に書き込まれる場合が含まれてもよい。
【００１８】
サーバ側同期部１４０は、サーバ側検知部１３０により第１の情報１７４の内容が更新されたことが検知されると、第１の情報１７４と端末装置２００の第２の情報とを同期させる同期処理を行う。サーバ側同期部１４０の機能の詳細については後述する。
【００１９】
サーバ側通知部１５０は、サーバ側検知部１３０から第１の情報１７４に取得要求が書き込まれた場合に、取得要求が書き込まれたことを示す情報を、検索部１６０に通知する。
【００２０】
検索部１６０は、サーバ側通知部１５０により通知された情報に基づいて第１の情報１７４からセンサー情報の取得要求を取得し、取得したセンサー情報の取得要求に基づいて、サーバ側記憶部１７０に記憶されたセンサー情報１７２の中から要求に対応するセンサー情報を抽出する。センサー情報１７２とは、例えば、サーバ側イベントによってサーバ装置１００の監視制御対象に設置された各種センサーから定期的または所定のタイミングで取得される検出値である。また、監視制御対象とは、例えば、変電所、送電網における電力値、上下水道における水量、高速道路における交通量、気象レーダーにおける気圧値等の社会インフラや、家庭における空調や照明の使用量、太陽光発電等のエネルギー量、納品した装置、ロジック回路の動作確認等により検出された値等である。
【００２１】
また、センサー情報１７２は、サーバ側記憶部１７０に記憶されずに、サーバ装置１００の外部に設けられたデータベースに記憶されていてもよい。この場合、サーバ装置１００は、端末装置２００からのセンサー情報の取得要求に基づいて、外部のデータベースにアクセスし、記憶されたセンサー情報１７２から、対象のセンサー情報を取得してよい。
【００２２】
サーバ側記憶部１７０は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、フラッシュメモリ等により実現される。サーバ側記憶部１７０には、例えば、センサー情報１７２、一以上の第１の情報１７４およびその他の情報が記憶される。
【００２３】
次に、端末装置２００の機能構成例について説明する。端末装置２００は、例えば、端末側通信部２１０と、アプリ実行部２２０と、ＡＰＩ（Application Programming Interface）２３０と、表示部２４０と、端末側記憶部２５０とを備える。アプリ実行部２２０は、ＣＰＵ等のハードウェアプロセッサがプログラムを実行することで実現される。
【００２４】
アプリ実行部２２０は、端末側記憶部２５０に記憶されたブラウザ２１２を起動して所定のウェブサイトにアクセスすることでダウンロードされるプログラムが実行されることで実現される。図３は、アプリ実行部２２０の機能構成例を示す図である。アプリ実行部２２０は、例えば、端末側情報管理部２２１と、端末側検知部２２２と、端末側同期部２２３と、端末側通知部２２４と、更新部２２５と、処理実行部２２６と、表示制御部２２７とを備える。
【００２５】
端末側情報管理部２２１は、端末側記憶部２５０に記憶された第２の情報２５４を管理する。第２の情報２５４は、サーバ装置１００で管理される第１の情報１７４と同期される情報である。第２の情報２５４の詳細については後述する。端末側情報管理部２２１は、サーバ側情報管理部１２０に対して第１の情報１７４の構造情報の要求を行い、要求により取得した構造情報に基づいて、第１の情報１７４と同じ構造情報を有する第２の情報２５４を生成する。
【００２６】
端末側検知部２２２は、第２の情報２５４の内容が更新されたことを検知する。第２の情報２５４の内容が更新されるとは、例えば、サーバ装置１００がサーバ側イベントにより所定の処理を実行し、これに応じて端末装置２００が所定の処理を実行することで、第２の情報２５４に新たな情報が追加されたり、既に記憶されている情報が更新されたり、削除される場合である。また、第２の情報２５４の内容が更新されるとは、例えば、ＡＰＩ２３０により利用者から指示されたセンサー情報等の取得要求が書き込まれる場合が含まれてもよい。
【００２７】
端末側同期部２２３は、サーバ側同期部１４０と同期処理を行い、第１の情報１７４と、第２の情報２５４とを同期させる同期処理を行う。端末側同期部２２３の機能の詳細については後述する。
【００２８】
端末側通知部２２４は、端末側検知部２２２から第２の情報２５４が更新されたことを検知すると、第２の情報２５４が更新されたことを示す情報を、更新部２２５に通知する。
【００２９】
更新部２２５は、第２の情報２５４が更新されたことを示す情報の通知を受け付けると、第２の情報２５４を読み取り、読み取った情報に基づいて、処理実行部２２６に出力対象情報２５６を更新させる。出力対象情報２５６とは、例えば、表示部２４０画面に表示されるセンサー情報である。
【００３０】
処理実行部２２６は、利用者の操作に応じて第２の情報２５４に基づく所定の処理を実行する。所定の処理とは、例えば、第２の情報２５４に基づいて出力対象情報２５６を更新する処理である。また、所定の処理とは、利用者によりブラウザ画面から指示されたセンサー情報等の取得要求を、ＡＰＩ２３０によりサーバ装置１００に出力させる処理である。
【００３１】
表示制御部２２７は、ブラウザ画面を表示するように表示部２４０を制御する。また、表示制御部２２７は、例えば、利用者により指示された特定の設備におけるセンサー情報の取得要求を受け付け、受け付けた取得要求に基づいて、出力対象情報２５６から取得要求に対応するセンサー情報を抽出し、抽出したセンサー情報を表示部２４０に表示させる。
【００３２】
図１に戻り、ＡＰＩ２３０は、処理実行部２２６により要求されたセンサー情報の取得リクエストをサーバ装置１００に送信するための機能である。ＡＰＩ２３０は、例えば、第２の情報２５４に、取得対象のセンサー情報を識別するＩＤを書き込む。
【００３３】
表示部２４０は、例えば、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Electro Luminescence）表示装置等である。表示部２４０は、表示制御部２２７の制御により、端末側記憶部２５０に記憶された出力対象情報２５６のうち、利用者から指示された情報を表示する。
【００３４】
端末側記憶部２５０は、ＲＡＭやＲＯＭ、ＨＤＤ、フラッシュメモリ等により実現される。端末側記憶部２５０には、例えば、ブラウザ２１２、一以上の第２の情報２５４、出力対象情報２５６およびその他の情報が記憶される。
【００３５】
次に、ウェブアプリケーションシステム１のアーキテクチャについて図を用いて説明する。図４は、第１の実施形態のウェブアプリケーションシステム１のアーキテクチャについて説明するための図である。ウェブアプリケーションシステム１は、サーバ装置１００で管理している第１の情報１７４を複製した第２の情報２５４を端末装置２００で管理させ、第１の情報１７４と第２の情報２５４とを同期させる。これにより、端末装置２００は、表示部２４０に情報を表示する場合に、サーバ装置１００と端末装置２００とのネットワーク境界を跨がずに表示対象の情報を取得することができるため、通信断時の操作継続性を維持することができ、システムの安定性を向上させることができる。
【００３６】
例えば、第１の実施形態において、まず、利用者の指示等によりブラウザ２１２の起動によるウェブアプリケーションが実行されると、アプリ実行部２２０の端末側情報管理部２２１は、サーバ側情報管理部１２０に対して、第１の情報１７４の構造情報を要求する。サーバ側情報管理部１２０は、端末側情報管理部２２１からの要求に基づいて、第１の情報１７４の構造情報を端末側情報管理部２２１に送信する。
【００３７】
図５は、第１の情報１７４の内容の一例を示す図である。第１の情報１７４には、「変数」と、「状態」と、「リビジョン番号」と、「同期済みリビジョン番号」と、「更新フラグ」とが含まれる。「変数」は、情報を識別するＩＤである。「状態」は、「変数」に対応する値である。「状態」には、変数に対応付けられる値の型（例えば、浮動小数点、整数、８ビットのビット列）に関する情報が含まれる。
【００３８】
「リビジョン番号」、「同期済みリビジョン番号」、および「更新フラグ」は、後述する第２の情報２５４との同期処理のために使用される番号である。「リビジョン番号」は、変数の更新を管理する改訂番号である。例えば、変数の内容に変更があると、まず更新フラグが「Ｆａｌｓｅ」から「Ｔｒｕｅ」に変更される。このとき、リビジョン番号は、更新されない。次に、更新フラグが「Ｔｒｕｅ」であることを検知したサーバ側検知部１３０は、更新フラグを「Ｆａｌｓｅ」に変更し、且つリビジョン番号を更新する。リビジョン番号は、例えば、更新するごとに値が１つ増加する。
【００３９】
「同期済みリビジョン番号」は、第１の情報１７４と、第２の情報２５４との同期が取れているか否かの同期判定に用いられる番号である。例えば、サーバ側同期部１４０は、リビジョン番号と、同期済みリビジョン番号とが合致している場合には、同期が取れている（同期済みである）と判定し、合致していない場合には、同期していないと判定する。合致するとは、例えば、値が完全に一致することである。また、合致するとは、部分的に一致したり、１２３をＡＢＣに置き換えた関係を一致すると見なしたり、ハッシュ化したら一致する場合等を含んでもよい。
【００４０】
「更新フラグ」は、変数の更新を検知させるためのフラグである。例えば、サーバ側検知部１３０は、更新フラグが「Ｔｒｕｅ」であることを検知すると、更新フラグを「Ｆａｌｓｅ」に変更し、リビジョン番号を更新して、サーバ側同期部１４０とサーバ側通知部１５０に通知する。
【００４１】
なお、第１の情報１７４に「更新フラグ」を設けない場合には、例えば「状態」の項目に加えて「通知済み状態」という項目を追加し、サーバ側検知部１３０は、「状態」の内容と「通知済み状態」の内容とが合致するか否かにより更新の有無を判定してもよい。また、サーバ側検知部１３０は、「通知済み状態」の代わりに、「状態」の内容をハッシュ化した「通知済み状態のハッシュ値」を用いて更新の有無を判定してもよい。上述した「更新フラグ」を設けることで、簡便に更新の有無を判定できるとともに、「状態」の内容を用いて他の情報と比較して更新の有無を判定するといった高コストな演算を行う必要がなくなる。
【００４２】
端末側情報管理部２２１は、サーバ側情報管理部１２０により構造情報として、第１の情報１７４の変数、状態、状態の型、およびリビジョン番号等を受け付け、受け付けた構造情報に基づいて、第１の情報１７４と同じ構造情報を有する第２の情報２５４を生成する。
【００４３】
ここで、表示制御部２２７は、利用者により特定の設備に設けられたセンサー情報をブラウザ上に表示して監視するプロセスフローの選択を受け付けたとする。処理実行部２２６は、選択されたプロセスフローに対する監視要求を実行するＡＰＩ２３０を呼び出す。ＡＰＩ２３０は、第２の情報２５４に、センサー情報の取得要求として、対象フローに関連する変数（ＩＤ）を第２の情報２５４に書き込む。
【００４４】
端末側検知部２２２は、第２の情報２５４の内容が更新されたことを検知した場合に、端末側同期部２２３に第２の情報２５４の内容が更新されたことを示す情報を通知する。
【００４５】
端末側同期部２２３は、通知を受け付けると、第２の情報２５４から「リビジョン番号」と「同期済みリビジョン番号」とが合致しないものを読み込み、その情報をサーバ側同期部１４０に送信する。
【００４６】
サーバ側同期部１４０は、端末側同期部２２３により得られた情報を第１の情報１７４に書き込む。サーバ側検知部１３０は、サーバ側同期部１４０からの通知により、第１の情報１７４が更新されたことを検知する。また、サーバ側検知部１３０は、上述したように「更新フラグ」を変更する。また、サーバ側検知部１３０は、更新されたことを示す情報をサーバ側通知部１５０に出力する。
【００４７】
サーバ側通知部１５０は、第１の情報１７４が更新されたことを示す情報を検索部１６０に出力する。
【００４８】
検索部１６０は、第１の情報１７４を参照し、利用者が要求したセンサー情報を、サーバ側記憶部１７０に記憶されたセンサー情報１７２から取得する。
【００４９】
検索部１６０は、検索により抽出された情報に基づいて、第１の情報に書き込む。図６は、検索部１６０により更新された第１の情報１７４の内容の一例を示す図である。図６に示す第１の情報１７４では、変数「ｓｕｍｍａｒｙ１」の状態を、空の状態から、対象のセンサーから得られたセンサー情報の整数列｛４０，４０，４０，６０，１５０，１３３，１１５｝に更新する。ここで、検索部１６０は、第１の情報１７４の更新フラグを「Ｆａｌｓｅ」から「Ｔｒｕｅ」に変更する。
【００５０】
次に、サーバ側検知部１３０は、第１の情報１７４の更新フラグを参照し、更新フラグが「Ｔｒｕｅ」である場合に、サーバ側同期部１４０に第１の情報１７４が更新されたことを示す情報を通知する。なお、サーバ側検知部１３０は、通知前に更新フラグを「Ｆａｌｓｅ」に戻し、且つ、リビジョン番号を更新する。通知前に上記の処理を行うのは、サーバ側同期部１４０が「リビジョン番号」と「同期済みリビジョン番号」とが合致するか否かにより同期状態を管理しているためである。
【００５１】
図７は、サーバ側検知部１３０により更新された第１の情報１７４の内容の一例を示す図である。サーバ側検知部１３０は、更新フラグが「Ｔｒｕｅ」である場合に、更新フラグを変更前の状態（「Ｆａｌｓｅ」）に戻し、第１の情報１７４のリビジョン番号に１を加算する。
【００５２】
サーバ側同期部１４０は、サーバ側検知部１３０から第１の情報１７４が更新されたことを示す情報の通知を受け付け、第１の情報１７４のうち、リビジョン番号が同期済みリビジョン番号より大きい行を抽出する。そして、サーバ側同期部１４０は、一行以上抽出された場合に、抽出された行の一部を端末側同期部２２３に送信する。行の一部とは、例えば、変数、状態、およびリビジョン番号である。
【００５３】
端末側同期部２２３は、サーバ側同期部１４０から受信した第１の情報１７４の更新分のデータに基づいて、第２の情報２５４の該当する変数の状態を更新する。図８は、端末側同期部２２３により更新された第２の情報２５４の内容の一例を示す図である。端末側同期部２２３は、サーバ側同期部１４０により送信された変数に対応する変数を有する第２の情報２５４の状態およびリビジョン番号を、サーバ側同期部１４０により送信された状態およびリビジョン番号に更新する。具体的には、端末側同期部２２３は、例えば、サーバ側同期部１４０から送信されたリビジョン番号が、第２の情報２５４のリビジョン番号と同じか、より大きい場合に、第２の情報２５４の状態およびリビジョン番号を、サーバ側同期部１４０により送信された状態およびリビジョン番号に更新する。
【００５４】
更に、端末側同期部２２３は、同期済みリビジョン番号をリビジョン番号と同じ値に更新する。また、端末側同期部２２３は、変数「ｓｕｍｍａｒｙ１」と、同期済みリビジョン番号「１」との組を、サーバ側同期部１４０に送信する。
【００５５】
サーバ側同期部１４０は、第１の情報１７４のうち、受信した変数に対応する変数を有する行の「同期済みリビジョン番号」を更新する。具体的には、サーバ側同期部１４０は、例えば、端末側同期部２２３から送信された同期済みリビジョン番号が、第１の情報１７４の同期済みリビジョン番号より大きい場合に、第１の情報１７４の同期済みリビジョン番号を、端末側同期部２２３により送信された同期済みリビジョン番号に更新する。更新された第１の情報１７４の変数「ｓｕｍｍａｒｙ１」は、図８に示す第２の情報２５４と同じ「状態」、「リビジョン番号」、「同期済みリビジョン番号」、および「更新フラグ」となる。この状態が、第１の情報１７４と第２の情報２５４とが同期した状態である。
【００５６】
端末側同期部２２３は、端末側検知部２２２に第２の情報２５４が更新されたことを示す情報を出力する。端末側検知部２２２は、端末側通知部２２４に第２の情報２５４が更新されたことを示す情報を通知する。
【００５７】
端末側通知部２２４は、端末側検知部２２２から第２の情報２５４が更新されたことを示す情報を取得し、取得した情報を更新部２２５に出力する。更新部２２５は、第２の情報２５４を参照し、更新された第２の情報２５４を取得し、処理実行部２２６に出力対象情報２５６の更新を実行させる。
【００５８】
次に、表示制御部２２７は、出力対象情報２５６に基づいて、表示部２４０に表示する情報の描画を行い、描画された画像を表示部２４０に表示させる。
【００５９】
図９は、表示部２４０に表示される画面の一例を示す図である。図９に示す画像３００は、例えば、ブラウザ上に表示される画像である。画像３００には、第１の領域３１０と、第２の領域３２０とが示されている。第１の領域３１０には、例えば、サーバ装置１００が監視するガス処理プラントに設けられた４つのセンサーを示す画像３１２ａ〜３１２ｄが、センサーの設置位置に対応付けて示されている。表示制御部２２７は、サーバ装置１００から取得した４つのセンサーのセンサー情報を出力対象情報２５６から取得し、取得したセンサー情報に対応する色または模様の画像を４つのセンサーを示す画像３１２ａ〜３１２ｄに対応付けて表示する。これにより、利用者は、それぞれのセンサーの状態を容易に把握することができる。
【００６０】
また、第２の領域３２０には、時間経過に伴う電力消費量をグラフ化した画像３２２を示している。この画像３２２を生成するための情報は、例えば、ガス処理プラントを監視するサーバ装置１００とは異なるサーバ装置から取得して第２の情報２５４から得られる情報であってもよい。つまり、表示制御部２２７は、ネットワークＮＷに接続される複数のサーバ装置との同期によって得られる複数の第２の情報に基づく情報を、表示部２４０の画面上に表示させる。
【００６１】
なお、第１の実施形態において、端末装置２００は、例えば、ＡＰＩ２３０により利用者の入力指示等に基づいて第２の情報２５４の内容が更新された場合、第２の情報２５４のリビジョン番号、同期済みリビジョン番号、および更新フラグ等に基づいて、第１の情報１７４と同期処理を行ってもよい。この場合、上述した第２の情報２５４を第１の情報１７４に同期させる手順とは逆の手順で、第１の情報１７４を第２の情報２５４に同期させる。
【００６２】
この場合、例えば、ＡＰＩ２３０は、第２の情報２５４の状態を更新するとともに、更新フラグを「Ｆａｌｓｅ」から「Ｔｒｕｅ」に変更する。端末側検知部２２２は、更新フラグが「Ｔｒｕｅ」であることを検知すると、更新フラグを「Ｔｒｕｅ」から「Ｆａｌｓｅ」に変更するとともに、リビジョン番号を更新する。その後、端末側検知部２２２は、第２の情報２５４が更新されたことを端末側同期部２２３に通知する。端末側同期部２２３は、第２の情報２５４が更新されたことを示す情報をサーバ側同期部１４０に送信する。サーバ側同期部１４０は、第２の情報２５４が更新されたことを示す情報を受け付けた場合に、第１の情報１７４を第２の情報２５４に同期させる。
【００６３】
次に、第１の実施形態の各構成部における処理フローについて説明する。図１０は、端末側情報管理部２２１の処理の一例を示すフローチャートである。端末側情報管理部２２１は、サーバ側情報管理部１２０に第１の情報１７４の型とＩＤと値とを含む構造情報を要求する（ステップＳ１００）。次に、端末側情報管理部２２１は、サーバ側情報管理部１２０から構造情報を受信したか否かを判定する（ステップＳ１０２）。端末側情報管理部２２１は、構造情報を受信するまで待機し、構造情報を受信した場合に、受信した構造情報に基づいて第２の情報２５４を生成する（ステップＳ１０４）。これにより、本フローチャートの処理は終了する。
【００６４】
図１１は、サーバ側情報管理部１２０の処理の一例を示すフローチャートである。サーバ側情報管理部１２０は、第１の情報１７４を生成する（ステップＳ２００）。次に、サーバ側情報管理部１２０は、端末側情報管理部２２１から第１の情報１７４の構造情報の取得要求を受信したか否かを判定する（ステップＳ２０２）。サーバ側情報管理部１２０は、端末側情報管理部２２１から第１の情報の構造情報の取得要求を受信するまで待機し、取得要求を受信した場合に、第１の情報１７４の構造情報を端末側情報管理部２２１に送信する（ステップＳ２０４）。
【００６５】
次に、サーバ側情報管理部１２０は、処理を終了するか否かを判定する（ステップＳ２０６）。処理を終了しない場合、サーバ側情報管理部１２０は、ステップＳ２０２の処理に戻る。また、サーバ側情報管理部１２０は、例えば、サーバ装置１００の停止等により処理を終了する場合、本フローチャートの処理を終了する。
【００６６】
図１２は、端末側検知部２２２の処理の一例を示すフローチャートである。端末側検知部２２２は、第２の情報２５４の内容が更新されたことを検知したか否かを判定する（ステップＳ３００）。端末側検知部２２２は、第２の情報２５４の内容が更新されたことを検知するまで待機し、更新されたことを検知した場合に、端末側同期部２２３および端末側通知部２２４に、第２の情報２５４の内容が更新されたことを示す情報を通知する（ステップＳ３０２）。
【００６７】
次に、端末側検知部２２２は、処理を終了するか否かを判定する（ステップＳ３０４）。処理を終了しない場合、端末側検知部２２２は、ステップＳ３００の処理に戻る。また、端末側検知部２２２は、例えば、表示部２４０に表示されたブラウザ画面の実行コンテキストが終了した場合、本フローチャートの処理を終了する。実行コンテキストとは、例えば、ブラウザ画面に表示されたウェブページにおいて実行される処理である。
【００６８】
図１３は、サーバ側検知部１３０の処理の一例を示すフローチャートである。サーバ側検知部１３０は、第１の情報１７４の内容が更新されたことを検知したか否かを判定する（ステップＳ４００）。サーバ側検知部１３０は、第１の情報１７４の内容が更新されたことを検知するまで待機し、更新されたことを検知した場合に、サーバ側同期部１４０およびサーバ側通知部１５０に、第１の情報１７４の内容が更新されたことを示す情報を通知する（ステップＳ４０２）。
【００６９】
次に、サーバ側検知部１３０は、処理を終了するか否かを判定する（ステップＳ４０４）。処理を終了しない場合、サーバ側検知部１３０は、ステップＳ４００の処理に戻る。また、サーバ側情報管理部１２０は、例えば、サーバ装置１００の停止等により処理を終了する場合、本フローチャートの処理を終了する。
【００７０】
図１４は、端末側通知部２２４の処理の一例を示すフローチャートである。端末側通知部２２４は、第２の情報２５４の内容が更新されたことを示す通知を受け付けたか否かを判定する（ステップＳ５００）。端末側通知部２２４は、第２の情報２５４の内容が更新されたことを示す情報を受け付けるまで待機し、通知を受け付けた場合に、第２の情報２５４の内容が更新されたことを示す情報を更新部２２５に通知する（ステップＳ５０２）。
【００７１】
次に、端末側通知部２２４は、処理を終了するか否かを判定する（ステップＳ５０４）。処理を終了しない場合、端末側通知部２２４は、ステップＳ５００の処理に戻る。また、端末側通知部２２４は、例えば、表示部２４０のブラウザ画面の実行コンテキストが終了した場合、本フローチャートの処理を終了する。
【００７２】
図１５は、サーバ側通知部１５０の処理の一例を示すフローチャートである。サーバ側通知部１５０は、第１の情報１７４の内容が更新されたことを示す情報の通知を受け付けたか否かを判定する（ステップＳ６００）。サーバ側通知部１５０は、第１の情報１７４の内容が更新されたことを示す情報の通知を受け付けるまで待機し、通知を受け付けた場合に、第１の情報１７４の内容が更新されたことを示す情報を検索部１６０に通知する（ステップＳ６０２）。
【００７３】
次に、サーバ側通知部１５０は、処理を終了するか否かを判定する（ステップＳ６０４）。処理を終了しない場合、サーバ側通知部１５０は、ステップＳ６００の処理に戻る。また、サーバ側通知部１５０は、例えば、サーバ装置１００の停止等により処理を終了する場合、本フローチャートの処理を終了する。
【００７４】
図１６は、端末側同期部２２３の処理の一例を示すフローチャートである。端末側同期部２２３は、端末側検知部２２２から第２の情報２５４の内容が更新されたことを示す情報の通知を受け付けたか否かを判定する（ステップＳ７００）。第２の情報２５４の内容が更新されたことを示す情報の通知を受け付けた場合、端末側同期部２２３は、サーバ側同期部１４０に同期要求を送信する（ステップＳ７０２）。次に、端末側同期部２２３は、サーバ側同期部１４０から同期要求を受信したか否かを判定する（ステップＳ７０４）。同期要求を受信した場合、端末側同期部２２３は、サーバ側同期部１４０との同期処理を実行する（ステップＳ７０６）。
【００７５】
次に、端末側同期部２２３は、処理を終了するか否かを判定する（ステップＳ７０８）。処理を終了しない場合、端末側同期部２２３は、ステップＳ７００の処理に戻る。また、端末側同期部２２３は、例えば、表示部２４０のブラウザ画面の実行コンテキストが終了した場合、本フローチャートの処理を終了する。
【００７６】
図１７は、サーバ側同期部１４０の処理の一例を示すフローチャートである。サーバ側同期部１４０は、サーバ側検知部１３０から第１の情報１７４の内容が更新されたことを示す情報の通知を受け付けたか否かを判定する（ステップＳ８００）。第１の情報１７４の内容が更新されたことを示す情報の通知を受け付けた場合、サーバ側同期部１４０は、端末側同期部２２３に同期要求を送信する（ステップＳ８０２）。次に、サーバ側同期部１４０は、端末側同期部２２３から同期要求を受信したか否かを判定する（ステップＳ８０４）。同期要求を受信した場合、サーバ側同期部１４０は、端末側同期部２２３との同期処理を実行する（ステップＳ８０６）。
【００７７】
次に、サーバ側同期部１４０は、処理を終了するか否かを判定する（ステップＳ８０８）。処理を終了しない場合、サーバ側同期部１４０は、ステップＳ８００の処理に戻る。また、サーバ側同期部１４０は、例えば、サーバ装置１００の停止等により処理を終了する場合、本フローチャートの処理を終了する。
【００７８】
上述したように、第１の実施形態によれば、ウェブアプリケーションシステム１の利用継続性を向上させることができる。具体的には、第１の実施形態によれば、ウェブアプリケーションの実行により、サーバ装置１００から情報を取得する処理が行われる場合（例えば、図４に示す点線部分のループの処理が行われる）に、端末装置２００とサーバ装置１００の間のネットワーク境界を跨がないため、端末装置２００における通信断時の操作継続性を維持することができる。
【００７９】
（第２の実施形態）
次に、ウェブアプリケーションシステムの第２の実施形態について説明する。以下において、第１の実施形態と同様の機能を備える構成については、同一の名称および符号を用いることとし、具体的な説明は省略する。
【００８０】
図１８は、第２の実施形態のウェブアプリケーションシステム２の一例を示す図である。ウェブアプリケーションシステム２は、サーバ装置１００Ａと、端末装置２００Ａとを備える。サーバ装置１００Ａは、情報定義生成部１８０、認証認可部１９０、およびサーバ側情報管理部１２０Ａを備える。また、端末装置２００Ａは、アプリ実行部２２０Ａを備える。その他の構成要素の機能は、第１の実施形態と同様である。
【００８１】
情報定義生成部１８０は、第１の情報１７４の変数ごとに、端末装置２００の利用者ごとの認証認可レベルを定義して、情報定義データ１７６としてサーバ側記憶部１７０に記憶する。情報定義生成部１８０の機能の詳細については後述する。
【００８２】
認証認可部１９０は、例えば、ＨＴＴＰ（Hypertext Transfer Protocol）等の通信プロトコルに基づいて、利用者（端末装置２００）の認証、および利用者のアクセス権限に基づくデータ利用の認可を行う。例えば、認証認可部１９０は、端末装置２００から入力されるユーザＩＤやパスワード等を用いて認証、認可を行う。
【００８３】
サーバ側情報管理部１２０Ａは、認証認可部１９０により得られる認証認可情報に基づいて、サーバ側記憶部１７０に記憶された情報定義データ１７６の中から利用者の利用が許可される変数の情報定義データを選択し、選択した情報定義データに基づいて第１の情報１７４を生成する。このように、第２の実施形態では、例えば、ＨＴＴＰベースの認証認可情報に基づいて情報定義データを選択し、選択した情報定義データに基づいて第１の情報１７４を生成することで、第１の情報１７４に認証認可結果が反映される。
【００８４】
次に、ウェブアプリケーションシステム２のアーキテクチャについて図を用いて説明する。図１９は、第２の実施形態のウェブアプリケーションシステム２のアーキテクチャについて説明するための図である。
【００８５】
図１９の例では、情報定義生成部１８０は、サーバ管理者またはネットワークＮＷを介して接続される外部装置から情報定義生成元データ１８２を取得し、取得した情報定義生成元データ１８２に基づいて、情報定義データ１７６を生成する。
【００８６】
図２０は、情報定義生成元データ１８２の内容の一例を示す図である。図２０の例では、情報定義生成元データ１８２として、二つのプログラムコード１８２Ａ、１８２Ｂを示している。
【００８７】
プログラムコード１８２Ａは、クラス“Ｐｏｗｅｒ”をアドレス“／ｐｏｗｅｒ”と関連付けている。また、プログラムコード１８２Ｂは、アクセス権限に対する認可情報として、管理者（ＡＤＭＩＮ）レベルを有していることを条件としている。
【００８８】
図２０の例において、情報定義生成部１８０は、例えば、＠Ｃｏｎｔｒｏｌｌｅｒの指定があるクラスを検索し、ＰｏｗｅｒクラスとＰｏｗｅｒＡｄｍｉｎクラスを抽出する。また、情報定義生成部１８０は、ＰｏｗｅｒクラスおよびＰｏｗｅｒＡｄｍｉｎクラス内の変数を検索し、例えば、ＳＬｉｓｔ＜Ｉｎｔｅｇｅｒ＞型の変数「ｓｕｍｍａｒｙ」を取得する。また、情報定義生成部１８０は、ＰｏｗｅｒクラスおよびＰｏｗｅｒＡｄｍｉｎクラスの複製を端末装置２００側で生成するために、ＰｏｗｅｒクラスおよびＰｏｗｅｒＡｄｍｉｎクラスの情報定義データ１７６を生成する。
【００８９】
図２１は、情報定義データ１７６の内容の一例を示す図である。情報定義データ１７６には、例えば、対象クラス、認証、認可、変数の型、変数名、および書き込み可否に関する情報が含まれる。
【００９０】
情報定義生成部１８０は、ＰｏｗｅｒクラスおよびＰｏｗｅｒＡｄｍｉｎクラスを端末装置２００からＨＴＴＰにて要求できるように”／ｐｏｗｅｒ”というアドレスに対して処理を行うサーバ側情報管理部１２０Ａに、ＰｏｗｅｒクラスおよびＰｏｗｅｒＡｄｍｉｎクラスの情報定義を関連付ける。
【００９１】
アプリ実行部２２０Ａの端末側情報管理部２２１Ａは、例えば、Ｐｏｗｅｒクラスの複製を生成するため、ＨＴＴＰにてアドレス”／ｐｏｗｅｒ”に対してデータ要求（例えば、ＨＴＴＰ  ＧＥＴ）を出力する。この場合、データ要求を行ったアドレスが”／ｐｏｗｅｒ”であるため、サーバ側情報管理部１２０Ａの処理が開始される。
【００９２】
サーバ側情報管理部１２０Ａは、認証認可部１９０で認証認可を行う。サーバ側情報管理部１２０Ａは、端末装置２００の利用者の認証が“要”（ログイン済みの状態）であって、かつ、認可が“ＡＤＭＩＮ”の権限を持っている場合は、ＰｏｗｅｒＡｄｍｉｎクラスの情報定義データ１７６を選択する。なお、サーバ側情報管理部１２０Ａは、上述の認証認可条件を満たさない場合は、Ｐｏｗｅｒクラスの情報定義データ１７６を選択してもよい。また、サーバ側情報管理部１２０Ａは、選択された情報定義データ１７６に基づいて、対象のクラス（ＰｏｗｅｒまたはＰｏｗｅｒＡｄｍｉｎ）に対応するインスタンス（第１の情報１７４）を生成する。
【００９３】
また、サーバ側情報管理部１２０Ａは、変数名「ｓｕｍｍａｒｙ」に対応する情報を取得し、第１の情報１７４に格納する。サーバ側情報管理部１２０Ａは、情報定義データと、第１の情報１７４の構造情報とを、端末側情報管理部２２１Ａに送信する。
【００９４】
端末側情報管理部２２１Ａは、受信した情報定義と構造情報とに基づいて、第１の情報１７４と同一の構造情報を有する第２の情報２５４を生成する。
【００９５】
次に、第２の実施形態の情報定義生成部１８０およびサーバ側情報管理部１２０Ａにおける処理フローについて説明する。図２２は、情報定義生成部１８０の処理の一例を示すフローチャートである。情報定義生成部１８０は、情報定義データ１７６を生成するための情報定義生成元データ１８２を取得し（ステップＳ９００）、取得した情報定義生成元データ１８２に基づいて情報定義データ１７６を生成する（ステップＳ９０２）。
【００９６】
次に、情報定義生成部１８０は、処理を終了するか否かを判定する（ステップＳ９０４）。処理を終了しない場合、情報定義生成部１８０は、ステップＳ９００の処理に戻る。また、情報定義生成部１８０は、例えば、サーバ装置１００の停止等により処理を終了する場合、本フローチャートの処理を終了する。
【００９７】
図２３は、第２の実施形態のサーバ側情報管理部１２０Ａの処理の一例を示すフローチャートである。サーバ側情報管理部１２０Ａは、端末側情報管理部２２１Ａから第１の情報１７４の構造情報の取得要求を受信したか否かを判定する（ステップＳ１０００）。サーバ側情報管理部１２０Ａは、第１の情報１７４の構造情報の取得要求を受信するまで待機し、取得要求を受信した場合に、認証認可部１９０によりＨＴＴＰ等の通信プロトコルに基づき、利用者に対する認証認可処理を実行させる（ステップＳ１００２）。
【００９８】
次に、サーバ側情報管理部１２０Ａは、認証認可部１９０による認証認可結果に基づいてサーバ側記憶部１７０に記憶された情報定義データ１７６の中から、対象の情報定義データを選択し（ステップＳ１００４）、選択された情報定義データに基づいて第１の情報１７４を生成する（ステップＳ１００６）。
【００９９】
次に、サーバ側情報管理部１２０Ａは、選択された情報定義データおよび第１の情報の構造情報を端末側情報管理部２２１Ａに送信する（ステップＳ１００８）。
【０１００】
次に、サーバ側情報管理部１２０Ａは、処理を終了するか否かを判定する（ステップＳ１０１０）。処理を終了しない場合、サーバ側情報管理部１２０Ａは、ステップＳ１０００の処理に戻る。また、サーバ側情報管理部１２０Ａは、例えば、サーバ装置１００の停止等により処理を終了する場合、本フローチャートの処理を終了する。図２３に示す処理の実行によって、端末側情報管理部２２１Ａは、サーバ側情報管理部１２０Ａから送信された情報定義データおよび構造情報に基づいて、第１の情報と同じ構造情報を有する第２の情報２５４を生成する。
【０１０１】
上述したように、第２の実施形態によれば、第１の実施形態と同様の効果を奏する他、ＨＴＴＰベースの認証認可部１９０で取得した認証認可情報に基づいて、第１の情報１７４を生成する。これにより、第１の情報１７４には、認証認可情報が含まれるため、応答性が求められる同期処理においてＨＴＴＰを使用する必要がなくなり、同期処理を速やかに実行することができる。また、第２の実施形態によれば、同期処理時に使用される通信経路において、独自の認証認可処理を行う必要がなく、サーバ側から端末側へのプッシュ通信を実現でき、結果として高い応答性を実現できる。
【０１０２】
（第３の実施形態）
次に、ウェブアプリケーションシステムの第３の実施形態について説明する。第３の実施形態では、サーバ装置１００と端末装置２００との間で、通信断等の異常が発生した場合の処理について説明する。以下の説明では、一例として、第２の実施形態におけるウェブアプリケーションシステム２の構成を用いて説明するが、第１の実施形態においても同様に適用できる。
【０１０３】
第３の実施形態において、サーバ側同期部１４０は、第１の情報１７４のうち、リビジョン番号が同期済みリビジョン番号より大きい行を抽出し、一行以上の行が抽出された場合、抽出された行の一部を端末側同期部２２３に送信する。ここで、サーバ側同期部１４０は、端末側同期部２２３との通信が断絶したことを検知したものとする。「通信が断絶する」とは、例えば、無線通信において電波の受信強度が所定値以下となり、データの送受信が行えない場合、または、ネットワークＮＷの通信過多によりデータの送受信が一時的に停止されるような場合である。また、「通信が断絶する」とは、端末装置２００の電源がオフ等になっていたり、サーバ側通信部１１０または端末側通信部２１０の故障等のハードウェアに付随する理由により、通信の早期復旧の見込みがないものが含まれてよい。
【０１０４】
ここで、サーバ側同期部１４０は、例えば、通信断により抽出した行の送信に失敗した場合、所定時間ごとに上述した行の抽出および抽出した行の送信を繰り返す。これにより、通信が復旧した場合には、第１の情報１７４と第２の情報２５４との同期処理が再開される。
【０１０５】
なお、サーバ側同期部１４０は、送信するデータごとに単調増加するユニークな番号（例えば、メッセージ番号）を付与して管理してもよい。この場合、端末側同期部２２３は、サーバ側同期部１４０との通信が遮断された場合にメッセージ番号を記憶しておき、サーバ側同期部１４０との通信が復旧した場合に、記憶したメッセージ番号をサーバ側同期部１４０に送信する。これにより、サーバ側同期部１４０は、端末側同期部２２３がどのデータまでを受信しているのかを把握することができ、未受信データを再送信することができる。これにより、ウェブアプリケーションシステム２は、通信断絶に対する耐性を向上させることができる。
【０１０６】
また、サーバ側同期部１４０は、端末側同期部２２３との通信が断絶したことを検知すると、通信が断絶したことを示す情報をサーバ側情報管理部１２０Ａに出力する。サーバ側情報管理部１２０Ａは、サーバ側同期部１４０からの通信が断絶したことを示す情報を取得してから所定時間が経過したか否かを判定し、所定時間が経過した場合であって、且つ、通信の断絶状態が継続している場合に、第１の情報１７４を破棄する。
【０１０７】
また、サーバ側情報管理部１２０Ａは、端末装置２００の通信の断絶の状況が所定の条件を満たす場合に、第１の情報１７４を破棄してもよい。所定の条件とは、例えば、端末装置２００の電源がオフである場合等である。これにより、不要な情報を長期間保持することを抑制することができる。
【０１０８】
また、アプリ実行部２２０Ａの端末側同期部２２３は、サーバ側同期部１４０との通信が断絶したことを検知すると、通信が断絶したことを示す情報を端末側情報管理部２２１Ａに通知する。端末側情報管理部２２１Ａは、サーバ側同期部１４０から通信が断絶したことを示す情報の通知を受け付けると、第２の情報２５４の復元要求をサーバ側情報管理部１２０Ａに送信する。
【０１０９】
また、端末側同期部２２３は、サーバ側同期部１４０との通信が断絶した後に、通信が復旧したことを検知してもよい。この場合、端末側同期部２２３は、通信が復旧したことを検知した場合に、復旧を検知したことを示す情報を端末側情報管理部２２１Ａに通知する。端末側情報管理部２２１Ａは、端末側同期部２２３から通信が復旧したことを示す情報の通知を受け付けた場合に、第２の情報２５４の復元要求をサーバ側情報管理部１２０Ａに送信してもよい。
【０１１０】
サーバ側情報管理部１２０Ａは、端末側情報管理部２２１Ａからの復元要求を受け付けた場合に、サーバ側同期部１４０により第１の情報１７４と第２の情報２５４とを同期させる。なお、復元要求を受け付けた場合であって、第１の情報１７４が既に破棄されている場合には、サーバ側情報管理部１２０Ａは、端末装置２００に対応する前回の情報定義データ１７６を用いて第１の情報１７４を新たに生成し、生成した第１の情報１７４の構造情報を端末側情報管理部２２１Ａに送信してもよい。端末装置２００に対応する前回の情報定義データ１７６は、例えば、サーバ側記憶部１７０に記憶される。
【０１１１】
次に、第３の実施形態のサーバ側同期部１４０および端末側同期部２２３の処理フローについて説明する。図２４は、サーバ側同期部１４０の処理の一例を示すフローチャートである。サーバ側同期部１４０は、例えば、同期処理の実行中に端末側同期部２２３との通信の断絶を検知したか否かを判定する（ステップＳ１１００）。
【０１１２】
次に、通信の断絶を検知した場合、サーバ側同期部１４０は、断絶の状況が、早期の復旧を見込めないものであるか否かを判定する（ステップＳ１１０２）。早期の復旧を見込めないものである場合、サーバ側同期部１４０は、サーバ側情報管理部１２０Ａに第１の情報を削除させる（ステップＳ１１０４）。また、断絶の状況が早期を見込めるものである場合、サーバ側同期部１４０は、通信の断絶状態が所定時間以上継続しているか否かを判定する（ステップＳ１１０６）。
【０１１３】
通信の断絶状態が所定時間以上継続していない場合、ステップＳ１１００の処理に戻る。通信の断絶状態が所定時間以上継続している場合、サーバ側同期部１４０は、サーバ側情報管理部１２０Ａに第１の情報を破棄させる（ステップＳ１１０８）。
【０１１４】
次に、サーバ側同期部１４０は、ステップＳ１１００の処理において、通信の断絶を検知していない場合、あるいはステップＳ１１０４またはステップＳ１１０８の処理後、処理を終了するか否かを判定する（ステップＳ１１１０）。処理を終了しない場合、ステップＳ１１００の処理に戻る。また、サーバ側同期部１４０は、第１の情報１７４と第２の情報２５４との同期が完了した場合や、サーバの停止等により、処理を終了する場合、サーバ側同期部１４０は、本フローチャートの処理を終了する。
【０１１５】
図２５は、端末側同期部２２３の処理の一例を示すフローチャートである。端末側同期部２２３は、例えば、同期処理の実行中にサーバ側同期部１４０との通信の断絶を検知したか否かを判定する（ステップＳ１２００）。通信の断絶を検知した場合、端末側同期部２２３は、通信が復旧したか否かを判定する（ステップＳ１２０２）。
【０１１６】
端末側同期部２２３は、通信が復旧していない場合には、通信が回復するまで待機し、通信が回復した場合に、第２の情報２５４の復元要求をサーバ側情報管理部１２０に出力する（ステップＳ１２０４）。次に、端末側同期部２２３は、ステップＳ１２００の処理において、通信の断絶を検知していない場合、あるいはステップＳ１２０４の処理後、処理を終了するか否かを判定する（ステップＳ１２０６）。処理を終了しない場合、端末側同期部２２３は、ステップＳ１２００の処理に戻る。また、実行コンテキストの終了等により、処理を終了する場合、端末側同期部２２３は、本フローチャートの処理を終了する。
【０１１７】
以上説明した第３実施形態によれば、第１および第２の実施形態と同様の効果を奏する他、通信の異常が発生した場合でも、通信復旧後に速やかに同期処理を行うことができる。したがって、ウェブアプリケーションシステムの安定性を向上させることができる。
【０１１８】
以上説明した少なくとも一つの実施形態によれば、サーバ側イベントに基づいて、サーバ側記憶部１７０に記憶された第１の情報１７４を更新する検索部１６０と、第１の情報１７４が更新されたことを検知するサーバ側検知部１３０と、サーバ側検知部１３０により第１の情報１７４が更新されたことが検知された場合に、第１の情報１７４が更新されたことを示す情報を端末装置２００に通知するサーバ側同期部１４０と、を有するサーバ装置１００と、ウェブアプリケーションが実行されることによって機能するアプリ実行部２２０であって、サーバ装置１００から第１の情報１７４が更新されたことを示す情報を受け付けた場合に、端末側記憶部２５０に記憶された第２の情報２５４を第１の情報１７４に同期させることを開始する端末側同期部２２３、および、利用者の操作に応じて第２の情報に基づく処理を実行する処理実行部２２６を含むアプリ実行部２２０と、を有する端末装置２００と、を持つことにより、利用継続性を向上させることができる。
【０１１９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【図１】
0006600100.tif 000002
【図２】
0006600100.tif 000003
【図３】
0006600100.tif 000004
【図４】
0006600100.tif 000005
【図５】
0006600100.tif 000006
【図６】
0006600100.tif 000007
【図７】
0006600100.tif 000008
【図８】
0006600100.tif 000009
【図９】
0006600100.tif 000010
【図１０】
0006600100.tif 000011
【図１１】
0006600100.tif 000012
【図１２】
0006600100.tif 000013
【図１３】
0006600100.tif 000014
【図１４】
0006600100.tif 000015
【図１５】
0006600100.tif 000016
【図１６】
0006600100.tif 000017
【図１７】
0006600100.tif 000018
【図１８】
0006600100.tif 000019
【図１９】
0006600100.tif 000020
【図２０】
0006600100.tif 000021
【図２１】
0006600100.tif 000022
【図２２】
0006600100.tif 000023
【図２３】
0006600100.tif 000024
【図２４】
0006600100.tif 000025
【図２５】
0006600100.tif 000026