(57)【要約】【課題】  ユーザが操作するアプリケーション自身が利用するデータをアプリケーション動作基盤から参照するだけでデータの提供元を意識せずにデータの更新、削除、取得が可能なようにすること。【解決手段】  アプリケーション動作基盤上で動作するアプリケーションは、データの取得や更新の処理をアプリケーション動作基盤から呼び出す。呼び出されたアプリケーション動作基盤は、サーバにある変数データ設定ファイルの情報やクライアントＰＣのデータベースにあるアプリケーション設定テーブルの情報を比較してデータの取得と更新を実行する。実行後、アプリケーション動作基盤からアプリケーションへ更新データを反映させる。【選択図】      図１
2010055584.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータに実装され、クライアントコンピュータのアプリケーションの動作を制御するアプリケーション動作基盤と、前記アプリケーションが所定の処理を実行するのに必要なデータを保持したサーバとから構成されたアプリケーション動作基盤システムであって、
前記アプリケーション動作基盤が、
前記アプリケーションからの呼出しを受け、当該アプリケーションが所定の処理を実行するのに必要なデータを前記サーバから取得し、呼出し元のアプリケーションに渡すと共に、渡したデータのサーバにおける更新時刻をクライアントコンピュータのローカルデータベースの変数データテーブルに記録する第１の手段を備え、
前記サーバが、
呼出し元のアプリケーションから要求されたデータをサーバデータベースの変数データテーブルから取得し、呼出し元のアプリケーションに送信する第２の手段を備え、
前記アプリケーション動作基盤が、
前記ローカルデータベースの変数データテーブルに格納された各データのサーバにおける更新時刻と前記アプリケーションを操作するユーザによる更新時刻との差を計算し、更新時刻差が所定時間以上のデータについては前記サーバから最新の更新時刻のデータを取得し、前記ローカルデータベースの変数データテーブルに反映させる第３の手段を備え、
前記サーバが、
前記サーバデータベースの変数データテーブルに設定された各データの属性のうち「データプッシュ可」の属性のデータについては前記サーバデータベースにおける変数データテーブルのデータが更新される都度、更新されたデータを前記アプリケーションに送信する第４の手段を備え、
前記サーバが、
複数の前記クライアントコンピュータにある前記アプリケーションからのデータの更新処理の要求に対して、要求を受け取った時刻と、データ更新による更新対象外のデータへの更新の影響を考慮し、実行する更新処理を選択する第５の手段を備える
ことを特徴とするアプリケーション動作基盤システム。
【請求項２】
前記アプリケーション動作基盤が、
データの属性として「機密扱い」が設定されていた場合に暗号化する第６の手段を備えることを特徴とする請求項１に記載のアプリケーション動作基盤システム。
【請求項３】
前記アプリケーション動作基盤が、
前記アプリケーションが前記サーバから受け取ったデータを前記ローカルデータベースの前記変数データテーブルへ反映させる場合に、データ間の関連を示すフラグをもとに、データの更新処理により、関連するデータも更新し、前記変数データテーブルの前記更新時刻を更新する第７の手段を備えることを特徴とする請求項１に記載のアプリケーション動作基盤システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントコンピュータに実装されたクライアントアプリケーションにデータの提供元を意識させないようにデータを操作し、クライアントアプリケーションにデータを提供するアプリケーション動作基盤システムに関するものである。
【背景技術】
【０００２】
クライアントコンピュータに実装されたアプリケーションの動作は、複数の処理やデータを組合せることで実行される。さらにその処理内部でも、別に定義された処理を呼出し、実行していることがあり、アプリケーション開発者はそれを意識する必要がある。そうしないと、ある処理を修正したときにデグレードを引き起こす恐れがあり、余計な工数がかかってしまう。それにより、簡単にクライアントアプリケーションを構築できなくなる。
この問題を解決するために、ある基盤上に処理やデータをオブジェクトとして予め用意しておき、そのオブジェクトがどのオブジェクトと関連しているのかを情報として持たせ、それらを組合せることで簡単にクライアントアプリケーションを動作させることができる技術がある。その技術として、下記特許文献１のものが知られている。
下記特許文献１に記載のものは、オブジェクト指向言語によるアプリケーション開発において、アプリケーションを構成する各オブジェクトが関係のあるオブジェクトをリンク情報として持ち、そのリンク情報をもとに複数のオブジェクトやデータを組合せて処理を実行させるプログラム構築装置である。
【０００３】
【特許文献１】特開平７−１０４９８１号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１に記載の技術は、利用するオブジェクトがプログラム構築装置内で閉じており、装置の外部にあるオブジェクトを利用する場合に対処できていない。このため、装置の外部のオブジェクトを含めてアプリケーションを構築すると、開発工数の増加を招き、容易にアプリケーションを作成できないという問題がある。
さらに、上記特許文献１に記載の技術は、各オブジェクト間の関連情報を管理しているが、あるオブジェクトを修正した際に、修正したオブジェクトと関連のあるオブジェクトに対して、修正による動作の影響を管理していない。そのため、あるオブジェクトが仕様変更により、大幅に変更になったときに以前構築したアプリケーションが動作しない恐れがある。
【０００５】
本発明の目的は、アプリケーションが利用するデータの所在が外部のサーバやクライアントＰＣのハードディスク（ＨＤＤ）に存在する場合であっても、アプリケーションがその所在を意識することなく、データを取得し、更新できるアプリケーション動作基盤システムを提供することにある。
さらに、複数のクライアントＰＣによる利用や、データが更新されることによって、更新対象のデータと関連があるデータも更新してしまう場合に対処したアプリケーション動作基盤システムを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明に係るアプリケーション動作基盤システムは、クライアントコンピュータに実装され、クライアントコンピュータのアプリケーションの動作を制御するアプリケーション動作基盤と、前記アプリケーションが所定の処理を実行するのに必要なデータを保持したサーバとから構成されたアプリケーション動作基盤システムであって、
前記アプリケーション動作基盤が、
前記アプリケーションからの呼出しを受け、当該アプリケーションが所定の処理を実行するのに必要なデータを前記サーバから取得し、呼出し元のアプリケーションに渡すと共に、渡したデータのサーバにおける更新時刻をクライアントコンピュータのローカルデータベースの変数データテーブルに記録する第１の手段を備え、
前記サーバが、
呼出し元のアプリケーションから要求されたデータをサーバデータベースの変数データテーブルから取得し、呼出し元のアプリケーションに送信する第２の手段を備え、
前記アプリケーション動作基盤が、
前記ローカルデータベースの変数データテーブルに格納された各データのサーバにおける更新時刻と前記アプリケーションを操作するユーザによる更新時刻との差を計算し、更新時刻差が所定時間以上のデータについては前記サーバから最新の更新時刻のデータを取得し、前記ローカルデータベースの変数データテーブルに反映させる第３の手段を備え、
前記サーバが、
前記サーバデータベースの変数データテーブルに設定された各データの属性のうち「データプッシュ可」の属性のデータについては前記サーバデータベースにおける変数データテーブルのデータが更新される都度、更新されたデータを前記アプリケーションに送信する第４の手段を備え、
前記サーバが、
複数の前記クライアントコンピュータにある前記アプリケーションからのデータの更新処理の要求に対して、要求を受け取った時刻と、データ更新による更新対象外のデータへの更新の影響を考慮し、実行する更新処理を選択する第５の手段を備えることを特徴とする。
また、前記アプリケーション動作基盤が、
データの属性として「機密扱い」が設定されていた場合に暗号化する第６の手段を備えることを特徴とする。
また、前記アプリケーション動作基盤が、
前記アプリケーションが前記サーバから受け取ったデータを前記ローカルデータベースの前記変数データテーブルへ反映させる場合に、データ間の関連を示すフラグをもとに、データの更新処理により、関連するデータも更新し、前記変数データテーブルの前記更新時刻を更新する第７の手段を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、アプリケーション動作基盤システム上で動作するアプリケーションは、扱うデータを全てアプリケーション動作基盤システムから参照することにより、データの処理をデータの提供元を意識することなく実行することが可能になる。
また、全てのアプリケーションをアプリケーション動作基盤システム上で動作するように開発することで、セキュリティやデータ処理などをアプリケーション単位でなく、一元管理することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を用いて本発明を実施する場合の最良の一形態を具体的に説明する。
図１（ａ）は、本発明に係るアプリケーション動作基盤システムの基本構成を示すシステム概要図である。
図１（ａ）において、この実施形態のシステムは、クライアントコンピュータＰＣ、サーバＳＢから構成され、クライアントコンピュータ内には、複数のアプリケーションＡＰＡ〜ＡＰＣの実行環境を提供するオペレーティングシステムＯＳ１及びアプリケーションランタイムＡＰＲ、各アプリケーションが扱うデータを格納するローカルデータベースＬＤＢを備え、さらに複数のアプリケーションＡＰＡ〜ＡＰＣに対し必要なデータを提供するアプリケーション動作基盤ＡＢを備えている。
アプリケーション動作基盤ＡＢは基盤メインプログラムＡＢＰによって構成されている。
一方、サーバＳＢはクライアントコンピュータＰＣの各アプリケーションに対して提供するデータを格納するサーバデータベースＳＤＢ、アプリケーションに変数データとして提供するデータの設定ファイルＶＤＦ（Ａ）〜ＶＤＦ（Ｃ）を備えている。
図１（ｂ）は、複数の端末がアプリケーション動作基盤システムを利用するときの概要図である。
図１（ｂ）において、この実施形態のシステムは、Ｐ１、Ｐ２、Ｐ３からなる複数のクライアントコンピュータＰＣと１つのサーバＳＢとサーバデータベースＳＤＢから構成される。サーバＳＢは複数のＰＣから送信されるデータを制御し、サーバデータベースＳＤＢにデータを格納し、各クライアントコンピュータＰＣにデータを提供する機能を備えている。
【０００９】
図２は、図１のシステムの詳細構成図である。
図２において、ユーザ１は本発明を操作する操作者である。
ＰＣ２はオペレーティングシステム２ａと表示装置３と入力装置４を備えているクライアントコンピュータである。
アプリケーションランタイム２ｂはアプリケーション動作基盤２ｃを動作させるためのアプリケーション実行環境である。
アプリケーション動作基盤２ｃは、アプリケーション２ｄを動作させ、制御するためのプログラムである。
アプリケーション２ｄは、アプリケーション動作基盤２ｃ上で動作し、ユーザ１が実際に操作するアプリケーションである。２つのアプリケーション２ｄはそれぞれ異なるものとする。
アプリケーション動作プログラム２ｅは、基盤メインプログラム２ｆを使用して動作するプログラムである。２つあるアプリケーション動作プログラム２ｅはそれぞれ異なる動作をするものとする。
基盤メインプログラム２ｆは、基盤制御プログラム２ｇと、ＤＢ管理プログラム２ｈと、サーバ通信プログラム２ｉと、復号プログラム２ｊと、暗号化プログラム２ｋを備えているプログラムである。
基盤制御プログラム２ｇは、アプリケーション動作基盤２ｃの動作を制御するプログラムである。アプリケーション動作プログラム２ｅは基盤制御プログラム２ｇ以外のプログラムを直接利用できない。
【００１０】
ＤＢ管理プログラム２ｈは、ローカルＤＢ２ｌを管理するプログラムである。
サーバ通信プログラム２ｉは、サーバ５と通信するためのプログラムである。
復号プログラム２ｊは、ローカルＤＢ２ｌから取得するアプリケーション２ｄのデータが暗号化されている場合に、復号するためのプログラムである。
暗号化プログラム２ｋは、アプリケーション２ｄのデータを暗号化してローカルＤＢ２ｌに保存する際に使用するプログラムである。
ローカルＤＢ２ｌは、オペレーティングシステム２ｂ上で動作するデータベースである。
サーバ５は、変数データ設定ファイル５ａと、リクエスト対応プログラム５ｂと、データプッシュプログラム５ｃと、データ管理プログラム５ｄを備えているサーバである。
【００１１】
変数データ設定ファイル５ａは、アプリケーション２ｄが扱うデータの設定情報を保持するファイルである。これはアプリケーション２ｄの数だけ存在する。
リクエスト対応プログラム５ｂは、ＰＣ２から送信されるリクエストに対して処理を実行するプログラムである。
データプッシュプログラム５ｂは、サーバＤＢ６のデータが更新された際にサーバ５からＰＣ２へ更新データを送信するためのプログラムである。
データ管理プログラム５ｃは、サーバＤＢ６のデータや、変数データ設定ファイル５ａの操作や管理を行うプログラムである。
サーバＤＢ６は、アプリケーション２ｄのデータを保持するデータベースである。
【００１２】
図３（ａ）は、アプリケーション２ｄの一例である売上粗利管理アプリケーションが表示する売上粗利管理画面の表示データ例を示すものである。
売上粗利管理画面２０は、ユーザ１が各部の売上と粗利を期ごとに閲覧、編集する画面である。編集できる箇所は、編集するユーザ１が所属する部の、現在の期にあたる目標売上、目標粗利、現状実績、現状粗利の４箇所であり、他の欄は閲覧のみとなる。また、目標の売上合計と粗利合計は一度確定すると変更できないものとし、例えば、ある部の目標売上の数値が変更されると、売上合計の数値に合わせて、他の部の目標売上の数値が変更になる。本実施例では、目標売上と目標粗利の合計値が変更できないものとする。
文字列２１は、売上粗利管理画面２０に表示されている数値の更新日時を表した文字列である。データが更新されると同時に文字列２１も更新される。
表２２は、各部、各期における売上と粗利の数値を表示する表である。
列２３は、部の名前を表すデータを表示する列である。
列２４ａは、「07上」の目標売上の数値を表示する列である。
列２４ｂは、「07上」の目標粗利の数値を表示する列である。
列２４ｃは、「07上」の実績売上の数値を表示する列である。
列２４ｄは、「07上」の実績粗利の数値を表示する列である。
列２４ｅは、「07下」の目標売上の数値を表示する列である。
列２４ｆは、「07下」の目標粗利の数値を表示する列である。
列２４ｇは、「07下」の現状粗利の数値を表示する列である。
列２４ｈは、「07下」の現状粗利の数値を表示する列である。
【００１３】
図３（ｂ）は、売上粗利管理アプリケーションにおけるデータ衝突画面である。
データ衝突画面５０は、ＰＣ２から更新するデータと、サーバ５で保持されているデータで不整合が生じた場合に表示される画面である。
ラジオボタン５１は、ユーザ１がデータ衝突画面５０以降のアプリケーション２ｄの処理を選択するボタンである。
ボタン５２は、アプリケーション２ｄへの処理を実行するために押すボタンである。
ボタン５３は、アプリケーション２ｄへの処理を中断するために押すボタンである。
【００１４】
図４は、基盤制御プログラム２ｇの内部構造のクラス図の一部分を表すものである。
四角形３０は、DataManagementクラスを表す。DataManagementクラスはアプリケーション２ｄが扱う各データの属性を管理するクラスである。DataManagementクラスはアプリケーション動作プログラム２ｅで利用できないものとする。
四角形３１は、クラスの名称を表す。
四角形３２は、クラスが持つ変数を表す。例えば「time:String」は、timeという変数名で、String型の変数であることを示す。
四角形３３は、クラスが持つ関数を表す。
文字列３３ａは、timeという変数を取得するために使用するget関数である。
文字列３３ｂは、timeという変数に値を格納するために使用するset関数である。四角形３３で並列している文字列は、interval変数、url変数、security変数、push変数のget関数とset関数を表す。例えば「getTime():String」はアプリケーション動作プログラム２ｅ内でgetTime関数を実行すると、String型のデータが返り値として取得できることを示す。
四角形３４は、MyVarsクラスを表す。MyVarsクラスはアプリケーション動作プログラム２ｅから直接利用できるものとする。
文字列３４ａは、アプリケーション２ｄで使用する変数のデータを取得するために、アプリケーション動作プログラム２ｅから呼び出すget関数である。
文字列３４ｂは、アプリケーション２ｄで使用する変数のデータをアプリケーション２ｄから格納するために、アプリケーション動作プログラム２ｅから呼び出すset関数である。
矢印３５は、クラスの継承を表す。クラスの継承とはあるクラスの機能を拡張することを意味する。
【００１５】
図５は、ローカルＤＢ２ｌ内にあるテーブルの例を示す。
テーブル４０は、売上粗利管理画面２０の表２２内の列２４ａと列２４ｂと列２４ｅと列２４ｆの詳細データを保持する目標データテーブルである。この目標データテーブル４０は、サーバＤＢ６も保持している。
列４０ａは、テーブル４０の主キーを表す列である。
列４０ｂは、部名のデータを表す列である。
列４０ｃは、各期のデータを表す列である。
列４０ｄは、各部、各期における売上を暗号化したデータを表す列である。ただし、サーバＤＢ６では暗号化されていないデータで表される。
列４０ｅは、各部、各期における粗利を暗号化したデータを表す列である。
列４０ｆは、他の変数でのデータ更新処理により、影響を受けるデータであることを示すフラグを表す列である。
テーブル４１は、売上粗利管理画面２０の表２２内の列２４ｃと列２４ｄと列２４ｇと列２４ｈの詳細データを保持する現状データテーブルである。この現状データテーブル４１は、サーバＤＢ６も保持している。
列４１ａは、テーブル４１の主キーを表す列である。
列４１ｂは、部名のデータを表す列である
列４１ｃは、各期のデータを表す列である。
列４１ｄは、各部、各期における売上を暗号化したデータを表す列である。ただし、サーバＤＢ６では暗号化されていないデータで表される。
列４１ｅは、各部、各期における粗利を暗号化したデータを表す列である。ただし、サーバＤＢ６では暗号化されていないデータで表される。
列４１ｆは、他の変数にでのデータ更新処理により、影響を受けるデータであることを示すフラグを表す列である。
【００１６】
テーブル４２は、部の名前を保持するセクションテーブルである。このセクションテーブル４２は、サーバＤＢ６も保持している。
列４２ａは、テーブル４２の主キーを表す列である。
列４２ｂは、各部の名前のデータを表す列である。
【００１７】
テーブル４３は、アプリケーション２ｄが使用している変数の属性を保持する変数テーブルである。この変数テーブル４３はローカルＤＢ２ｌのみが保持するテーブルである。
列４３ａは、テーブル４３の主キーを表す列である。
列４３ｂは、アプリケーション２ｄが使用している変数の名前を表す列である。
列４３ｃは、アプリケーション２ｄが使用している変数のデータ更新の間隔を表す列である。
列４３ｄは、アプリケーション２ｄが使用している変数のデータ更新をサーバから受信するかどうかを表す列である。
列４３ｅは、アプリケーション２ｄが使用している変数のデータを保持しているサーバ５の接続先ＵＲＬを表す列である。
列４３ｆは、アプリケーション２ｄが使用している変数のデータをローカルＤＢ２ｍに保持する際に暗号化するかどうかを表す列である。
列４３ｇは、アプリケーション２ｄが使用している変数のデータの更新がサーバ５で行われた日時を表す列である。
列４３ｈは、アプリケーション２ｄが使用している変数のデータの更新がＰＣ２で行われた日時を表す列である。
【００１８】
図６は、サーバ側の変数データ設定ファイル５ａの一例を示す図である。
ファイル５ａは、アプリケーション２ｄが使用している変数の属性の設定がＸＭＬ（拡張マークアップ言語）形式で記述されているファイルである。ファイル５ａはアプリケーション２ｄの数だけ存在する。
文字列６１は、変数データ設定ファイルのルートを表すＸＭＬタグである。
文字列６２は、アプリケーション２ｄが使用している変数の名前や属性の設定内容のルートを表すＸＭＬタグである。
文字列６３は、アプリケーション２ｄが使用している変数名を設定するＸＭＬタグである。
文字列６４は、アプリケーション２ｄが使用している変数のデータがサーバ５側で更新された日時が記述されるＸＭＬタグである。このタグはサーバ５側でデータが更新されるたびに書き換わる。
文字列６５は、アプリケーション２ｄが使用している変数のデータの更新状況を確認するためにＰＣ２からサーバ５へ接続する間隔を設定するＸＭＬタグである。
文字列６６は、アプリケーション２ｄが使用している変数のデータがサーバ５側で更新されたときに、サーバ５からＰＣ２へ更新データを送信するかどうかを設定するＸＭＬタグである。
文字列６７は、アプリケーション２ｄが使用している変数のデータをＰＣ２から取得するために接続する接続先のＵＲＬを設定するＸＭＬタグである。
文字列６８は、アプリケーション２ｄが使用している変数のデータをローカルＤＢ２ｌで保持する場合に、そのデータを暗号化するかどうかを設定するＸＭＬタグである。
文字列６９は、他の変数でのデータ更新処理により、影響を受ける変数であることを示すために設定するＸＭＬタグである。
【００１９】
図７は、アプリケーション２ｄを起動したときの流れを示すフローチャートである。
ユーザ１は、アプリケーション動作基盤２ｃを起動する（ステップ７０１）。
ユーザ１は、アプリケーション２ｄを起動する（ステップ７０２）。
アプリケーション動作基盤２ｃは、起動したアプリケーション２ｄが初期起動かどうかを調べ、初期起動である場合はステップ７０４、初期起動でない場合はステップ７０５へ進む（ステップ７０３）。初期起動であるかどうかの判断はローカルＤＢ２ｌにアプリケーション２ｄのデータの有無で決定する。
初期起動である場合、サーバ５と通信が可能かどうかを調べ、可能である場合はステップ７０６、不可能である場合はアプリケーション２ｄを終了する（ステップ７０４）。
サーバ通信の確認処理はサーバ通信プログラム２ｉで行う。
初期起動でない場合、サーバ５と通信が可能かどうか調べ、可能である場合はステップ７０７、不可能である場合はステップ７０８へ進む（ステップ７０５）。
初期起動で、かつサーバ５との通信が可能な場合、サーバ５からデータの取得を行う（ステップ７０６、図８参照）。
初期起動ではなく、サーバ５との通信が可能な場合、サーバ５から変数データ設定ファイル５ａを取得し、データの整合性を確認する（ステップ７０７、図９参照）。
初期起動ではなく、サーバ５との通信が不可能な場合、アプリケーション２ｄのデータをローカルＤＢ２ｌから取得し、表示する（ステップ７０８、図１０参照）。
【００２０】
図８は、アプリケーション２ｄを初期起動し、サーバ５との通信が可能のときに実行する処理の流れを示すフローチャートである。
まず、アプリケーション２ｄが扱うデータを取得するために、MyVarsクラスのgetVar関数を実行する（ステップ８０１）。getVar関数は取得する変数の数だけ実行される。実行方法は、例えばsection変数のデータを取得する場合は、「getVar("app1","section")」となる。
基盤制御プログラム２ｇがサーバ通信プログラム２ｉを使用し、アプリケーション２ｄの変数データ設定ファイル５ａのデータをサーバ５から取得する（ステップ８０２）。このときサーバ５ではリクエスト対応プログラム５ｂが実行され、ＰＣ２にデータが送信される。
取得した変数データ設定ファイル５ａのデータを、ＤＢ管理プログラム２ｈを使用してローカルＤＢ２ｌのテーブル４３を作成し、登録する（ステップ８０３）。
次に、テーブル４３の列４３ｈに列４３ｇのデータをコピーする（ステップ８０４）。
次に、テーブル４３の内容を基盤制御プログラム２ｇに格納する（ステップ８０５）。格納箇所はDataManagementオブジェクトとし、DataManagementオブジェクトは変数の数だけ生成する。
次に、サーバＤＢ６に保持しているアプリケーション２ｄのデータを取得する（ステップ８０６）。このときサーバ５ではリクエスト対応プログラム５ｂが実行され、ＰＣ２に対象データが送信される。
データ取得後、基盤制御プログラム２ｇが保持し、アプリケーション２ｄの表２２と文字列２１がアプリケーション画面に表示される（ステップ８０７）。
次に、基盤制御プログラム２ｇで、サーバ５から取得したデータのsecurity属性の有効の有無を調べ、trueの場合はステップ８０９、falseの場合はステップ８１０へ進む（ステップ８０８）。ステップ８０３以降の処理は変数の数だけ実行される。
列４３ｆがtrueの場合、暗号化プログラム２ｋで取得した変数のデータを暗号化する（ステップ８０９）。
列４３ｆがfalseの場合、またはステップ８０９の処理終了後、各変数のデータをローカルＤＢ２ｌの各テーブルに格納する（ステップ８１０）。
【００２１】
図９は、アプリケーション２ｄが初期起動ではなく、サーバ５と通信が可能な場合の基盤制御プログラム２ｇの動作の流れを示したフローチャートである。
まず、アプリケーション２ｄに対するローカルＤＢ２ｌのテーブル４３のデータを取得する（ステップ９０１）。
次に、サーバ５から、アプリケーション２ｄの変数データ設定ファイル５ａを取得する（ステップ９０２）。
次に、テーブル４３の各変数において、列４３ｇと列４３ｈの値が一致しているかどうか調べ、一致している場合はステップ９０４、一致していない場合はステップ９０５へ進む（ステップ９０３）。ステップ９０３以降の処理は変数の数だけ実行される。
列４３ｇと列４３ｈの値が一致している場合、列４３ｇと、サーバ５から取得した変数データ設定ファイル５ａのtimeタグの値が一致しているか調べ、一致している場合はステップ９０６、一致していない場合はステップ９０７へ進む（ステップ９０４）。
列４３ｇと列４３ｈの値が一致していない場合、列４３ｇと、サーバから取得した変数データ設定ファイル５ａのtimeタグの値が一致しているか調べ、一致している場合はステップ９０８、一致していない場合はステップ９０９へ進む（ステップ９０５）。
列４３ｇとサーバ５から取得した変数データ設定ファイル５ａのtimeタグの値が一致している場合、ローカルＤＢ２ｌからアプリケーション２ｄで使用するデータを取得する（ステップ９０６、図１０参照）。
列４３ｇとサーバ５から取得した変数データ設定ファイル５ａのtimeタグの値が一致していない場合、サーバＤＢ６から該当するデータを取得する（ステップ９０７）。
サーバＤＢ６から該当データ取得後、該当データをローカルＤＢ２ｌに格納する（ステップ９１０、図１１参照）。
列４３ｇと列４３ｈの値が一致せず、かつ列４３ｇとサーバ５から取得した変数データ設定ファイル５ａのtimeタグの値が一致している場合、ローカルＤＢ２ｌからアプリケーション２ｄで使用するデータを取得する（ステップ９０８、図１０参照）。
ローカルＤＢ２ｌから取得したデータをサーバ５に送信する（ステップ９１１）。
ＰＣ２からのデータを受信したサーバ５は、サーバＤＢ６と変数データ設定ファイル５ａのtimeタグの値を更新する（ステップ９１２）。
列４３ｇと列４３ｈの値が一致せず、かつ列４３ｇとサーバ５から取得した変数データ設定ファイル５ａのtimeタグの値が一致していない場合、データ衝突画面５０を表示する（ステップ９０９）。その後の処理はユーザ１の判断に任せる。
【００２２】
図１０は、基盤制御プログラム２ｇがローカルＤＢ２ｌからデータを取得するときの内部動作を示すフローチャートである。
まず、ＤＢ管理プログラム２ｈを使用して、テーブル４０、テーブル４１、テーブル４２からアプリケーション２ｄのデータを取得する（ステップ１００１）。
次に、取得したデータのsecurity属性の値を調べ、trueの場合はステップ１００３、falseの場合はステップ１００４へ進む（ステップ１００２）。ステップ１００３以降の処理は変数の数だけ実行される。
security属性の値がtrueの場合、復号プログラム２ｊを使用して暗号化されたデータを復号する（ステップ１００３）。
ステップ１００４の処理終了後、またはsecurity属性の値がfalseの場合、基盤制御プログラム２ｆに取得したデータを反映させる（ステップ１００４）。その後、アプリケーション２ｄの表２２と文字列２１に表のデータとデータ更新日が表示される。
【００２３】
図１１は基盤制御プログラム２ｇがデータを暗号化するときの内部動作を示すフローチャートである。
まず、アプリケーション２ｄに表示する各変数のデータに対して、security属性の値を調べ、trueの場合はステップ１１０２、falseの場合はステップ１１０３へ進む（ステップ１１０１）。
ある変数のsecurity属性の値がtrueの場合、暗号化プログラムを使用してデータを暗号化する（ステップ１１０２）。
ステップ１１０２の処理終了後、またはある変数のsecurity属性の値がfalseの場合、ＤＢ管理プログラム２ｈを使用して、ローカルＤＢ２ｌの各テーブルにデータを書き込む（ステップ１１０３）。
次に、テーブル４３の列４３ｇと列４３ｈに、サーバ５から取得した変数データ設定ファイル５ａのtimeタグの値を書き込む（ステップ１１０４）。
次に、基盤制御プログラム２ｇにデータを反映させる（ステップ１１０５）。その後アプリケーション２ｄの表２２と文字列２１に表のデータとデータ更新日が表示される。
【００２４】
図１２は、ユーザ１がアプリケーション２ｄのデータを更新した際の動作の流れを示すフローチャートである。
アプリケーション２ｄ内のアプリケーション動作プログラム２ｅにより、更新されたデータと更新日時を基盤制御プログラム２ｇへ渡す（ステップ１２０１）。渡す処理はMyVarsクラスのset関数を使用する。
更新データを受信した基盤制御プログラム２ｇが一時的に保持する（ステップ１２０２）。
次に、基盤制御プログラム２ｇがサーバ通信プログラム２ｉを使用して、サーバ５と接続可能かどうかを調べ、接続可能である場合はステップ１２０４、接続不可能の場合はステップ１２０５へ進む（ステップ１２０３）。
サーバ５と通信可能の場合、サーバ通信プログラム２ｉで変数データ設定ファイル５ａを取得する（ステップ１２０４）。
次に、サーバ５から取得した変数データ設定ファイル５ａのtimeタグの値と、テーブル４３の列４３ｇの値が一致しているか調べ、一致している場合はステップ１２０７、一致していない場合はステップ１２０８へ進む（ステップ１２０６）。
一致している場合、更新したデータと更新日時をサーバ通信プログラム２ｉでサーバ５へ送信する（ステップ１２０７）。
【００２５】
更新データを受信したサーバ５は更新処理を行う（ステップ１２０９、図１５参照）
サーバ５での更新処理が終了したら、ＰＣ２に対して更新終了メッセージを送信する（ステップ１２１０）。
更新終了メッセージを受信したＰＣ２は、基盤制御プログラム２ｇが一時的に保持していた更新データをローカルＤＢ２ｌに対して更新処理を行う（ステップ１２１１、図１５参照）。ステップ１２１１の処理は、サーバ５が実行していた更新処理をＰＣ２で行うこととする。列４３ｇと列４３ｈはサーバ５がデータを更新した時間を格納する。
更新後、更新データの暗号化処理を行う（ステップ１２１２、図１１参照）。
ステップ１２０６で、サーバ５から取得した変数データ設定ファイル５ａのtimeタグの値と、テーブル４３の列４３ｇの値が一致していない場合、データ衝突画面５０を表示する（ステップ１２０８）。その後の処理はユーザ１に任せる。
ステップ１２０３で、サーバ５と通信不可能の場合、ローカルＤＢ２ｌに対して更新処理を行う（ステップ１２０５）。
懇親処理終了後、更新データに対して暗号化処理を行う（ステップ１２１３、図１１参照）。
【００２６】
図１３は、サーバＤＢ６のデータが更新された場合に、サーバ５からＰＣ２へのデータプッシュ処理の流れを示すフローチャートである。
データ管理プログラム５ｄがサーバＤＢ６のテーブル４１を更新する（ステップ１３０１）。
データ管理プログラム５ｄがサーバＤＢ６のテーブル４１の更新を検知する（ステップ１３０２）。
データ管理プログラム５ｄが更新されたデータに該当する、変数データ設定ファイル５ａのtimeタグの値を更新する（ステップ１３０３）。
更新されたデータによる変数データ設定ファイル５ａのpushタグの値を調べ、trueの場合はステップ１３０５、falseの場合は処理を終了する（ステップ１３０４）。
pushタグの値がtrueの場合、データプッシュプログラム５ｃがＰＣ２と通信可能かどうか調べ、可能な場合はステップ１３０６、不可能の場合は再び通信可能か調べる（ステップ１３０５）。
ＰＣ２と通信可能な場合、データプッシュプログラム５ｃがＰＣ２へ更新データを送信する（ステップ１３０６）。
更新データを受信した基盤制御プログラム２ｇは、ＤＢ管理プログラム２ｈを使用してローカルＤＢ２ｌのテーブル４１を更新する（ステップ１３０７）。
【００２７】
図１４は、テーブル４３の列４３ｃのinterval列を使用した、基盤制御プログラム２ｇによるデータ更新処理の流れを示すフローチャートである。
まず、ＤＢ管理プログラム２ｈで、テーブル４３のデータを取得する（ステップ１４０１）。
オペレーティングシステム２ａが保持するその日の日付と、列４３ｇの差を計算する（ステップ１４０２）。
ステップ１４０２で計算した差と、列４３ｃの値を比較して、差の方が大きい場合はステップ１４０４、小さい場合は処理を終了する（ステップ１４０３）。
ステップ１４０２で計算した差が列４３ｃよりも大きい場合、サーバ５と通信可能かどうか調べ、通信可能な場合はステップ１４０５、通信不可能な場合は再び通信可能か調べる（ステップ１４０４）。
通信可能な場合、テーブル４３から取得した列４３ｅの接続先ＵＲＬへリクエストを送信する（ステップ１４０５）。
リクエストを受信したサーバ５は、リクエスト対応プログラム５ｂとデータ管理プログラム５ｄでサーバＤＢ６から取得したデータと、変数データ設定ファイル５ａのtimeタグの値を、ＰＣ２へデータを送信する（ステップ１４０６）。
データを受信した基盤制御プログラム２ｇは、受信したデータのsecurity属性の値を調べ、trueの場合はステップ１４０８、falseの場合はステップ１４０９へ進む（ステップ１４０７）。
security属性がtrueの場合、暗号化プログラム２ｋを使用して更新データを暗号化する（ステップ１４０８）。
ステップ１４０８の処理終了後、またはsecurity属性がfalseの場合、該当する変数の更新データと列４３ｇと列４３ｈをそれぞれ更新する（ステップ１４０９）。
【００２８】
図１５は、データの更新処理の流れを示すフローチャートである。
更新データを受信したサーバ５または基盤制御プログラム２ｇは、それぞれデータ管理プログラム５ｄ、ＤＢ管理プログラム２ｈを使用して、更新対象のデータをもつテーブルから影響フラグが１かどうか調べ、１である場合はステップ１５０２、１でない場合はステップ１５０３へ進む（ステップ１５０１）。
影響フラグが１の場合、変数名を元にデータ更新後に影響を受けるデータの数値を取得する（ステップ１５０２）。例えば、テーブル４０においてＴ０７２０００１の売上数値を更新する場合、影響フラグが１であるため、更新対象の変数名であるＴ０７２０００１から上４文字の英数字（Ｔ０７２）と取得し、同じ上４文字をもつ変数２つ（Ｔ０７２０００２とＴ０７２０００３）の売上数値を取得する。こうすることで、更新処理により影響のあるデータを抽出することができる。
更新対象のデータに対して、更新前の数値と更新予定の数値の差をとる（ステップ１５０４）。例えば、更新対象のデータＴ０７２０００１に対して、更新前の数値が２２０、更新予定の数値が２４０だった場合、差は−２０となる。
算出した差を、更新処理に影響を受けるデータの数で割り、影響を受けるデータに配分する（ステップ１５０５）。例えば差が−２０だった場合、影響を受けるデータがＴ０７２０００２とＴ０７２０００３の２個のため、−２０を２で割り、結果の−１０をそれぞれＴ０７２０００２とＴ０７２０００３に配分する。
配分後、更新対象のデータと更新処理により影響を受けるデータを全て更新する（ステップ１２１４）。例えば配分の数値が−１０の場合、更新対象のＴ０７２０００１は２２０から２４０に更新し、Ｔ０７２０００２とＴ０７２０００３はそれぞれ２００と２２０から、１９０と２１０に更新する。
更新した全てのデータの更新日時を更新する（ステップ１５０７）。更新日時は、サーバ５ではサーバ５で更新処理を完了した日時、ＰＣ２ではサーバ５の更新処理を完了している場合はサーバ５で更新処理を完了した日時、サーバ５の更新処理を完了していない場合は、ＰＣ２で更新処理を完了した日時とする。
また、データ更新により、影響を受けたデータの更新日時も更新する。この場合の更新日時は、サーバ５で更新処理を完了した日時とする。
【００２９】
図１６は、複数のＰＣ２が同じ時間帯にデータを更新する場合の内部処理の流れを示すフローチャートである。
複数のＰＣ２がそれぞれデータの更新処理をサーバへ要求する（ステップ１６０１）。
サーバに更新処理の要求が同時刻に来たかどうか調べ、同時刻だった場合はステップ１６０３、同時刻ではなかった場合はステップ１６０４へ進む（ステップ１６０２）。
同時刻だった場合、更新対象のデータが重複しているかどうか調べ、重複している場合はステップ１６０５、重複していない場合はステップ１６０６へ進む（ステップ１６０３）。
重複している場合は、重複した更新処理を実行せず、更新処理を却下するメッセージをＰＣに送信する（ステップ１６０５）。
重複していない場合、それぞれの更新処理から、更新処理を実行したときに他のデータも更新し、そのデータが他の更新処理の対象データに該当していないかどうか調べ、該当している場合はステップ１６０５、該当していない場合はステップ１６０７へ進む（ステップ１６０６）。
ステップ１６０６で重複していないことを確認した場合、重複していない更新処理を実行する（ステップ１６０７）。
他に未実行の更新処理があるかどうか調べ、ある場合はステップ１６０６へ戻る（ステップ１６０８）。
ステップ１６０２で更新処理が同時刻に来ていない場合は、最も早く更新処理の要求がきたものを実行する（ステップ１６０４）。その後、未実行の更新処理に対して、更新済みのデータや、他の更新処理の対象データと重複していないか調査する。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施の形態を示すシステム概要図である。
【図２】図１のシステムの詳細構成図である。
【図３】アプリケーション動作基盤上を動作するアプリケーション画面例、サーバ側のデータベースが保持するデータとクライアントＰＣ側のデータベースが保持するデータの整合性が合わないときに表示するデータ衝突画面例を示す図である。
【図４】アプリケーション動作基盤内の基盤制御プログラムの内部構造を示すクラス図である。
【図５】クライアントＰＣのデータベース内で保持するテーブル群を示す図である。
【図６】アプリケーション動作基盤上で動作するサーバ側の変数データ設定ファイルである。
【図７】アプリケーションの起動動作を示すフローチャートである。
【図８】アプリケーションの初期起動時にサーバ通信可能な場合の動作を示すフローチャートである。
【図９】サーバとの通信が可能で、アプリケーションの起動が初回ではない場合の内部動作を示すフローチャートである。
【図１０】復号プログラムの内部動作を示すフローチャートである。
【図１１】暗号化プログラムの内部動作を示すフローチャートである。
【図１２】クライアントＰＣからのデータ更新処理時での内部動作を示すフローチャートである。
【図１３】データプッシュプログラムの内部動作を示すフローチャートである。
【図１４】アプリケーション動作基盤でのデータ更新処理の内部動作を示すフローチャートである。
【図１５】データの更新処理の内部動作を示すフローチャートである。
【図１６】複数のＰＣから同じ時間帯にデータの更新処理が来た場合のサーバの内部動作を示すフローチャートである。
【符号の説明】
【００３１】
１    ユーザ
２    クライアントコンピュータ
３    表示装置
４    入力装置
５    サーバ
６    サーバＤＢ
２ａ    オペレーティングシステム
２ｂ    アプリケーションランタイム
２ｃ    アプリケーション動作基盤
２ｄ    アプリケーション
２ｆ    基盤メインプログラム
２ｇ    基盤制御プログラム
２ｈ    ＤＢ管理プログラム
２ｉ    サーバ通信プログラム
２ｋ    暗号化プログラム
２ｊ    復号プログラム
５ａ    変数データ設定ファイル
５ｂ    リクエスト対応プログラム
５ｃ    データプッシュプログラム
５ｄ    データ管理プログラム
【図１】
2010055584.tif 000003
【図２】
2010055584.tif 000004
【図３】
2010055584.tif 000005
【図４】
2010055584.tif 000006
【図５】
2010055584.tif 000007
【図６】
2010055584.tif 000008
【図７】
2010055584.tif 000009
【図８】
2010055584.tif 000010
【図９】
2010055584.tif 000011
【図１０】
2010055584.tif 000012
【図１１】
2010055584.tif 000013
【図１２】
2010055584.tif 000014
【図１３】
2010055584.tif 000015
【図１４】
2010055584.tif 000016
【図１５】
2010055584.tif 000017
【図１６】
2010055584.tif 000018