(57)【要約】      （修正有）【課題】複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供する。【解決手段】データベースに接続するアプリケーションを構築する情報処理装置であって、データベースのデータの操作に用いるデータモデルの定義を記憶するデータモデル記憶手段と、データモデル記憶手段に記憶されているデータモデル定義に第１の所定の値が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いて、データベースのデータを操作するアプリケーションを構築するアプリケーション構築手段と、を備える。【選択図】図３
2019053637.tif 000002
【特許請求の範囲】
【請求項１】
データベースに接続するアプリケーションを構築する情報処理装置であって、
前記データベースのデータの操作に用いるデータモデルの定義を記憶するデータモデル記憶手段と
前記データモデル記憶手段に記憶されているデータモデル定義に第１の所定の値が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築するアプリケーション構築手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記データモデル記憶手段に記憶されているデータモデル定義に第２の所定の値が設定されているか否かを判定する第１判定手段を更に備え、
前記アプリケーション構築手段は、
前記第１判定手段の判定に従って、データベースのデータを更新するときにタイムゾーンを指定するクエリを用いるアプリケーションを構築するか、データベースのデータを更新するときにタイムゾーンを指定しないクエリを用いるアプリケーションを構築するかを制御すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アプリケーションを利用するユーザのセッションに所定のセッションキーが存在するか否かを判定する第２判定手段を更に備え、
前記アプリケーション構築手段は、
前記第２判定手段により所定のセッションキーが存在する場合、当該セッションキーに対応する値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築すること
を特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
データベースに接続するアプリケーションを構築する情報処理装置であって、
前記アプリケーションを利用するユーザのセッションとして記憶されている値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築するアプリケーション構築手段と
を備えることを特徴とする情報処理装置。
【請求項５】
データベースのデータの操作に用いるデータモデルの定義を記憶するデータモデル記憶手段を備え、前記データベースに接続するアプリケーションを構築する情報処理装置における処理方法であって、
前記情報処理装置が、
前記データモデル記憶手段に記憶されているデータモデル定義に第１の所定の値が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築するアプリケーション構築ステップ
を実行することを特徴とする処理方法。
【請求項６】
データベースのデータの操作に用いるデータモデルの定義を記憶するデータモデル記憶手段を備え、前記データベースに接続するアプリケーションを構築する情報処理装置で実行可能なプログラムであって、
前記情報処理装置を、
前記データモデル記憶手段に記憶されているデータモデル定義に第１の所定の値が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築するアプリケーション構築手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに接続するアプリケーションを構築するための情報処理装置と、その処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、入出力定義やデータモデル定義などを設定し、アプリケーションを構築するツールやサービスが存在する。
【０００３】
それらのツールやサービスを用いて構築したアプリケーションは、設定されたデータモデル定義を用いてデータベースのデータを操作（検索、挿入、更新、削除等）する。その操作のうち、挿入、更新（論理削除を含む）等を行った場合、データベースの当該データの処理日時をタイムスタンプとして記憶することが一般的である。通常、そのタイムスタンプには、アプリケーションサーバ１０５やデータベースサーバ１０３のシステム日付が使用されるため、それらサーバの設置場所のタイムゾーンが適用される。また、グローバルで利用されるアプリケーションにおいて、そのタイムスタンプに監査等の目的で特定のタイムゾーン（標準時を同じくする地帯）が指定されることもある。
【０００４】
一方、昨今では、構築したアプリケーションをクラウド環境で動作させるケースも増えてきており、そのため上記タイムスタンプのタイムゾーンとアプリケーションを利用するエンドユーザの住む地域とのタイムゾーンが異なるケースが発生する可能性も高まってきている。つまり、エンドユーザが閲覧する日時情報（例：画面に表示する日時情報）には、エンドユーザの住む地域とのタイムゾーンを利用し、それ以外の日時情報（監査用等）には、異なるタイムゾーン（例：システム日時）を利用したいケースがある。また、世界各国のエンドユーザがアプリケーションを利用するケースもある。
【０００５】
以上から、データベースの１つのテーブルにおいても、複数のタイムゾーンを使い分ける必要性が出てきた。
【０００６】
特許文献１には、システム設置場所によらず柔軟に時刻表示できる時期情報変換プログラムの仕組みが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−０９３５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１の仕組みは、複数のタイムゾーンを使い分けるプログラムの仕組みであるため、当該プログラムや当該プログラムによって動作するアプリケーションを構築することはできない。
【０００９】
そこで、本発明の目的は、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することである。
【課題を解決するための手段】
【００１０】
データベースに接続するアプリケーションを構築する情報処理装置であって、前記データベースのデータの操作に用いるデータモデルの定義を記憶するデータモデル記憶手段と前記データモデル記憶手段に記憶されているデータモデル定義に第１の所定の値が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築するアプリケーション構築手段とを備えることを特徴とする情報処理装置。
【発明の効果】
【００１１】
本発明によれば、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明に係るプログラム生成装置、プログラム生成サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバの構成の一例を示すシステム構成図である。
【図２】本発明に係るプログラム生成装置、プログラム生成サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバとして適用可能な各ハードウェア構成の一例を示すブロック図である。
【図３】本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。
【図４】本発明に係るプログラム生成装置の構成図である。
【図５】アプリケーション生成のフローチャートの一例を示す図である。
【図６】ＳＱＬ文生成のフローチャートの一例を示す図である。
【図７】日付時刻更新のフローチャートの一例を示す図である。
【図８】データモデル定義画面の一例を示す図である。
【図９】データモデル定義ＸＭＬの一例を示す図である。
【図１０】ＩＮＳＥＲＴ押下前画面、ＩＮＳＥＲＴ押下後画面の一例を示す図である。
【図１１】ＩＮＳＥＲＴ  ＳＱＬ文、ＩＮＳＥＲＴ押下後ＤＢレコードの一例を示す図である。
【図１２】ＵＰＤＡＴＥ押下前画面、ＵＰＤＡＴＥ押下後画面の一例を示す図である。
【図１３】ＵＰＤＡＴＥ押下前ＤＢレコード、ＵＰＤＡＴＥ  ＳＱＬ文、ＵＰＤＡＴＥ押下後ＤＢレコードの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
【００１４】
図１は、本発明に係わるプログラム生成装置（開発者がＷｅｂアプリケーション生成のために使用する情報処理装置）、プログラム生成サーバ、データベースサーバ、アプリケーションクライアント（クライアント装置）、アプリケーションサーバ、Ｗｅｂサーバの構成の一例を示すシステム（情報処理システム）構成図である。
【００１５】
プログラム生成装置１０１は、開発者の操作に従って画面レイアウト及びデータベース検索指示などを定義する。なお、プログラム生成装置１０１では、開発者の入力受付を行い、後述するプログラム生成サーバ１０２に実際のプログラム生成処理、アプリケーション生成処理を行うというように役割を分けてもよいし、プログラム生成装置１０１単体でプログラム生成、アプリケーション生成までを行ってもよい。
【００１６】
なお、この実施形態においては、プログラム生成装置１０１で生成するアプリケーションはＷｅｂアプリケーションとしたが、これに限定するものではなく、携帯電話・スマートフォン・タブレットなどの情報処理装置で動作するアプリケーションや組込みソフトウェアなど、Ｗｅｂ技術による通信を利用しないアプリケーションやシステムであってもよい。
【００１７】
また、本実施形態においては、プログラム生成装置１０１によってアプリケーションのプログラムを生成するとしたが、プログラムの生成に限定するものではなく、開発者の操作に従って設定された定義を用いて、アプリケーションやシステムが動作する環境を構築するとしてもよい。
【００１８】
プログラム生成サーバ１０２ａ〜１０２ｂ（情報処理装置）は、プログラム生成装置１０１により入力された開発者の設定及び指示に従って、プログラムを生成する。プログラム生成サーバ１０２ａはＬＡＮなどのネットワーク１０７内に配置されてもよいし、プログラム生成サーバ１０２ｂはインターネット上やクラウド上に配置されてもよい。
【００１９】
データベースサーバ１０３ａ〜１０３ｂ（情報処理装置）は、開発されたアプリケーションが使用するデータベースであり、また本発明では開発時にも動作確認などのために利用してもよい。例えば、開発者が利用するためにデータベースサーバ１０３は、プログラム生成装置１０１と同一の装置で構成されていてもよいし、ＬＡＮなどのネットワーク１０７内に配置されてもよい（データベースサーバ１０３ａ）。またインターネット上やクラウド上に配置されてもよい（データベースサーバ１０３ｂ）。また、プログラム生成装置１０１が、プログラム生成サーバ１０２と協調する場合には、プログラム生成サーバ１０２とデータベースサーバ１０３が同一の装置内に構成されていてもよい。
【００２０】
アプリケーションサーバ１０５（情報処理装置）は、プログラム生成装置１０１で生成されたアプリケーションプログラムを実行する。アプリケーションサーバ１０５は、ＬＡＮなどのネットワーク１０７内に配置されてもよい（アプリケーションサーバ１０５）し、またインターネット上やクラウド上に配置されてもよい（アプリケーションサーバ１０５ｂ）。また、ネットワーク１０７、インターネット、クラウド上のデータベースサーバ１０３と接続して動作することが可能である。
【００２１】
アプリケーションクライアント１０４ａ〜１０４ｂ（情報処理装置）は、アプリケーションサーバ１０５と協調してプログラム生成装置１０１で開発したアプリケーションプログラムを動作させる、ユーザの入力端末である。ＬＡＮなどのネットワーク１０７内に配置されてもよい（アプリケーションクライアント１０４ａ）し、またインターネット上やクラウド上に配置されてもよい（アプリケーションクライアント１０４ｂ）。携帯端末などの情報処理装置であってもよい。
【００２２】
Ｗｅｂサーバ１０６（情報処理装置）は、プログラム生成装置１０１で生成された画面仕様ドキュメント４４３をアプリケーションクライアント１０４からのリクエストに応じて送信する。Ｗｅｂサーバ１０６は、ＬＡＮなどのネットワーク１０７内に配置されてもよいし、またインターネット上やクラウド上等に配置されてもよい。
【００２３】
なお、本実施形態においては、アプリケーションサーバ１０５とＷｅｂサーバ１０６は別筐体の情報処理装置としたが、これに限定するものではなく、１つの情報処理装置であっても、仮想環境上に構築されてもよい。
【００２４】
図２は、本発明に係わるプログラム生成装置１０１、プログラム生成サーバ１０２、データベースサーバ１０３、アプリケーションクライアント１０４、アプリケーションサーバ１０５として適用可能な各ハードウェア構成の一例を示すブロック図である。
【００２５】
図２において、ＣＰＵ２０１は、システムバス２０４に接続される各デバイスを統括的に制御する。
【００２６】
また、ＲＯＭ２０３あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるオペレーティングシステム（ＯＳ）や、各サーバ、クライアント、装置など情報処理装置の後述する各種機能を実現するためのプログラムが記憶されている。
【００２７】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア、一時待避領域等として機能する。
【００２８】
入力コントローラ２０５は、入力部２０９からの入力を制御する。この入力部２０９としては、情報処理装置では、キーボード、マウス等のポインティングデバイスが挙げられる。
【００２９】
出力コントローラ２０６は、出力部２１０の表示を制御する。この出力部２１０としては、例えば、ＣＲＴや液晶ディスプレイ等が挙げられる。
【００３０】
外部メモリコントローラ２０７は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ２１１へのアクセスを制御する。加えて、各サーバ、クライアント、装置等の各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ２１１としては、ハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）、ＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）、スマートメディア等が挙げられる。
【００３１】
通信Ｉ／Ｆコントローラ２０８は、ネットワークを介して外部機器との通信制御処理を実行する。
【００３２】
本発明を実現するためのプログラム２１２は外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０２にロードされることによりＣＰＵ２０１によって実行されるものである。
【００３３】
図３は、本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。
【００３４】
プログラム生成装置１０１は、以下の機能部を備える。
【００３５】
データモデル記憶部３０１は、データベースのデータの操作に用いるデータモデルの定義を記憶する機能部である。
【００３６】
アプリケーション構築部３０２は、データモデル記憶部３０１に記憶されているデータモデル定義に第１の所定の値が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築する機能部である。
【００３７】
第１判定部３０３は、データモデル記憶部３０１に記憶されているデータモデル定義に第２の所定の値が設定されているか否かを判定する機能部である。
【００３８】
アプリケーション構築部３０２は、第１判定部３０３の判定に従って、データベースのデータを更新するときにタイムゾーンを指定するクエリを用いるアプリケーションを構築するか、データベースのデータを更新するときにタイムゾーンを指定しないクエリを用いるアプリケーションを構築するかを制御する機能部である。
【００３９】
第２判定部３０４は、アプリケーションを利用するユーザのセッションに所定のセッションキーが存在するか否かを判定する機能部である。
【００４０】
アプリケーション構築部３０２は、第２判定部３０４により所定のセッションキーが存在する場合、当該セッションキーに対応する値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築する機能部である。
【００４１】
アプリケーション構築部３０２は、アプリケーションを利用するユーザのセッションとして記憶されている値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築する機能部である。
【００４２】
図４は、プログラム生成装置１０１の構成図である。
【００４３】
プログラム生成装置１０１は、リポジトリ定義部４０１及びＷｅｂアプリケーション生成部４０７を備える。
【００４４】
プログラム生成装置１０１は、Ｗｅｂアプリケーションを開発する開発者により設定されたリポジトリ定義部４０１の各定義を用いて、Ｗｅｂアプリケーション生成部４０７によりＷｅｂアプリケーションを生成する。
【００４５】
リポジトリ定義部４０１には、アプリケーション定義４０２、入出力定義４０３、データモデル定義４０４、ビジネスプロセス定義４０５、データベース定義４０６が記憶されている。これら４０２〜４０６の定義は、Ｗｅｂアプリケーション構築ツールを介して、開発者によって入力設定または配置される。
【００４６】
なお、入出力定義４０３は、入力項目定義情報及び出力項目定義情報を含む。入力項目定義情報は、生成されたＷｅｂアプリケーションの画面を介して当該Ｗｅｂアプリケーションのユーザが入力する入力項目を定義した情報である。出力項目定義情報は、生成されたＷｅｂアプリケーションの画面に出力する出力項目を定義した情報である。以降、「入力項目定義情報」及び「出力項目定義情報」をまとめて「入出力項目定義情報」と呼ぶ。
【００４７】
Ｗｅｂアプリケーション生成部４０７は、Ｗｅｂアプリケーション生成用のリポジトリ定義解析部４０８を用いてリポジトリ定義部４０１に記憶されている各定義を解析し、Ｗｅｂアプリケーションコード生成部４１０及びソースコードコンパイル部４１１を介し、コンパイル済Ｊａｖａ（登録商標）コード４１３及びＨＴＭＬ／ＪＳＰ／ＪａｖａＳｃｒｉｐｔ（登録商標）４１２を含むＷｅｂアプリケーションを生成する。すなわち、設定された定義を用いて、アプリケーションとして用いられるプログラムを生成する手段の一例である。
【００４８】
図５は、アプリケーション生成のフローチャートの一例を示す図である。
【００４９】
プログラム生成装置１０１は、ディレクトリ構造を用いて、リポジトリ定義部４０１の各定義をファイルとして管理する。なお、本実施形態においては、ディレクトリ構造６００を用いて、リポジトリ定義部４０１の各定義をファイルとして管理するとしたが、これに限定するものではなく、例えば、データベースを用いてリポジトリ定義部４０１の各定義を管理してもよいし、クラウドなどネットワーク上の記憶装置を用いて管理する等としてもよい。
【００５０】
アプリケーション生成のフローチャートについて説明する。
ステップＳ５０１において、プログラム生成装置１０１は、アプリケーション定義４０２の設定を受け付ける。具体的には、アプリケーション構築ツールの画面を介して、アプリケーション開発者から入出力定義４０３、データモデル定義４０４、ビジネスプロセス定義４０５及びデータベース定義４０６の設定を受け付ける。
【００５１】
図８は、データモデル定義４０４の設定を受け付けるデータモデル定義画面８００の一例を示す図である。アプリケーション開発者は、データモデル定義画面８００を介して、データモデル定義４０４の設定をする。すなわち、データモデル定義４０４は、データベースのデータの操作に用いるデータモデルの定義を記憶する手段の一例である。
図８の加工式８０１のようにして、テーブルのカラムに対応する項目コード毎にタイムゾーンの指定をする。
【００５２】
これにより、データベースの１つのテーブルにおいても、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができる。つまり、構築したアプリケーションをクラウド環境で動作させるケース等、エンドユーザが閲覧する日時情報（例：画面に表示する日時情報）には、エンドユーザの住む地域とのタイムゾーンを利用し、それ以外の日時情報（監査用等）には、異なるタイムゾーン（例：システム日時）を利用したいケースにおいても、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができるようになる。また、世界各国のエンドユーザがアプリケーションを利用するケースであっても、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができるようになる。
【００５３】
タイムゾーンの指定を指定する場合、加工式８０１に“＠ＤＢＺＯＮＥＤＡＴＥ：［ＩＮＳＥＲＴ］［：タイムゾーン文字列］”形式で設定をする。この設定方法について、具体的に説明する。“ＩＮＳＥＲＴ”を付けると、レコード挿入時のみこの項目コードに日時が記録される（つまり、レコード更新時には記録されない）。“ＩＮＳＥＲＴ”を省略する場合は“＠ＤＢＺＯＮＥＤＡＴＥ：：タイムゾーン文字列”と設定する（つまり、レコード挿入時及びレコード更新時にタイムゾーン日時が記録される）。
【００５４】
タイムゾーン文字列として、“＠ＬＯＣＡＬ”が指定された場合は、データベースサーバ１０３のシステム日時を使用する。（つまり、ＳＱＬ文に、“ＡＴ  ＴＩＭＥ  ＺＯＮＥ”句を付加しない）。タイムゾーン文字列は、ＳＱＬ文にそのまま渡される（つまり、ＤＢＭＳに準拠したタイムゾーンを指定することができる）。
【００５５】
タイムゾーン文字列を省略すると、ＳＱＬ生成時、ＳＱＬ文にタイムゾーンが付加されない。つまり、データベースサーバ１０３のシステム日時が登録される。
【００５６】
また、タイムゾーン日時に未対応のＤＢＭＳの場合、データベースサーバ１０３又はアプリケーションサーバ１０５の日時を登録する。具体的には、データベース定義４０６に定義された接続先データベースサーバ１０３のＤＢＭＳがタイムゾーン日時に対応しているか否かを判定し、対応していない場合はＳＱＬ生成時にタイムゾーン日時の指定を行わないようにする。これにより、タイムゾーン日時に未対応のＤＢＭＳであっても、ＳＱＬエラーにならず、処理を続けることが可能になる。
【００５７】
また、アプリケーション実行時、アプリケーション利用者のＨＴＴＰセッションにセッションキー“＠ＴＩＭＥ＿ＺＯＮＥ”として値が設定されている場合は、“タイムゾーン文字列”の指定の有無にかかわらず、セッション値を使用する。
【００５８】
以上から、項目コード８０４〜８０６の加工式は、“＠ＤＢＺＯＮＥＤＡＴＥ：：タイムゾーン文字列”形式であるため、レコード挿入時及びレコード更新時に指定された各タイムゾーンで処理日時を記録する。項目コード８０７の加工式は、“＠ＤＢＺＯＮＥＤＡＴＥ：：＠ＬＯＣＡＬ”形式であるため、レコード挿入時及びレコード更新時に指定された各タイムゾーンでデータベースサーバ１０３のシステム日時を記録する。項目コード８０８〜８１０の加工式は、“＠ＤＢＺＯＮＥＤＡＴＥ：ＩＮＳＥＲＴ：タイムゾーン文字列”形式であるため、レコード挿入時に指定された各タイムゾーンで処理日時を記録する。項目コード８１１の加工式は、“＠ＤＢＺＯＮＥＤＡＴＥ：ＩＮＳＥＲＴ：＠ＬＯＣＡＬ”形式であるため、レコード挿入時に指定された各タイムゾーンでデータベースサーバ１０３のシステム日時を記録する。
【００５９】
なお、本実施形態においては、“＠ＬＯＣＡＬ”が指定された場合は、データベースサーバ１０３のシステム日杖ｋを使用するとしたが、これに限定するものではなく、アプリケーションサーバ１０５であっても、アプリケーションサーバ１０５又はデータベースサーバ１０３を選択できるとしてもよい。
【００６０】
また、本実施形態においては、各データモデルの各項目コード（各テーブルの各カラムに対応）にタイムゾーン設定をするとしたが、これに限定するものではなく、複数のデータモデルや複数の項目コードに対して、一括的にタイムゾーンを指定できるとしてもよい。
【００６１】
ステップＳ５０１にて、受け付けたアプリケーション定義４０２（入出力定義４０３、データモデル定義４０４、ビジネスプロセス定義４０５及びデータベース定義４０６）の設定は、リポジトリ定義部４０１にＸＭＬファイル形式で記憶する。例えば、データモデル定義画面８００を介して受け付けた「商品データモデル」は、リポジトリ定義部４０１にデータモデル定義ＸＭＬ９００（図９）のような形式で記憶する。
【００６２】
図９は、データモデル定義ＸＭＬの一例を示す図である。項目コード毎の設定が、＜ｄｍ−ｉｔｅｍ＞〜＜／ｄｍ−ｉｔｅｍ＞部分に記載されている。加工式８０１の設定は、＜ｓｔａｔｅｍｅｎｔ＞〜＜／ｓｔａｔｅｍｅｎｔ＞部分に記載される。
【００６３】
なお、本実施形態においては、データモデル定義４０４等のアプリケーション定義４０２をＸＭＬファイル形式で記憶するとしたが、これに限定するものではなく、他のファイル形式やデータベースに登録する等の他の記憶方法であってもよい。
【００６４】
ステップＳ５０２において、プログラム生成装置１０１は、アプリケーション生成の指示を受け付ける。
【００６５】
ステップＳ５０３において、プログラム生成装置１０１は、リポジトリ定義部４０１からアプリケーション定義４０２を取得する。リポジトリ定義解析部４０８は、読み込んだ定義を解析したうえでメモリに保管しておき、解析された定義は各生成部から適宜参照される。
【００６６】
ステップＳ５０４において、プログラム生成装置１０１は、リポジトリ定義部４０１からデータモデル定義４０４を取得する。
【００６７】
ステップＳ５０５において、プログラム生成装置１０１は、リポジトリ定義部４０１から入出力定義４０３を取得する。
【００６８】
ステップＳ５０６において、プログラム生成装置１０１は、リポジトリ定義部４０１からビジネスプロセス定義４０５を取得する。
【００６９】
ステップＳ５０７において、プログラム生成装置１０１は、リポジトリ定義部４０１からデータベース定義４０６を取得する。
【００７０】
ステップＳ５０８において、プログラム生成装置１０１は、Ｗｅｂアプリケーション生成部４０７を用いて、Ｗｅｂアプリケーションに用いるプログラムを生成する。すなわち、ステップＳ５０８は、アプリケーションを構築する処理の一例を示すステップである。
【００７１】
ステップＳ５０９において、プログラム生成装置１０１は、ＳＱＬ文を生成する（詳細は、図６の説明にて後述する）。
【００７２】
ステップＳ５１０において、プログラム生成装置１０１は、ステップＳ５０８にて生成したプログラム及びステップＳ５０９にて生成したＳＱＬ文をアプリケーションサーバ１０５に配置（デプロイ）する。これにより、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができる。
【００７３】
以上で、図５の説明を終了する。
【００７４】
図６は、ＳＱＬ文生成のフローチャートの一例を示す図である。
【００７５】
ステップＳ６０１において、プログラム生成装置１０１は、ステップＳ５０４にて取得したデータモデル定義４０４の加工式８０１（図９の＜ｓｔａｔｅｍｅｎｔ＞〜＜／ｓｔａｔｅｍｅｎｔ＞部分）に“＠ＤＢＺＯＮＥＤＡＴＥ”が設定されているかを判定し、設定されている場合はステップＳ６０２に進み、設定されていない場合は図６の処理を終了する。
【００７６】
ステップＳ６０２において、プログラム生成装置１０１は、ステップＳ５０４にて取得したデータモデル定義４０４の加工式８０１に“＠ＬＯＣＡＬ”が設定されているか判定し、設定されている場合はステップＳ６０３に進み、設定されていない場合はステップＳ６０４に進む。
【００７７】
ステップＳ６０３において、プログラム生成装置１０１は、データベースサーバ１０３の日付を取得するＳＱＬ文を作成する（例：図１１の１１１０又は図１３の１３２０の対象カラム名＝ＣＵＲＲＥＮＴ＿ＴＩＭＥＳＴＡＭＰ）。なお、本実施形態においては、データベースサーバ１０３の日付を“ＣＵＲＲＥＮＴ＿ＴＩＭＥＳＴＡＭＰ”としたが、これに限定するものではなく、ＤＢＭＳの種類によっては、“ＳＹＳＴＩＭＥＳＴＡＭＰ”等、他の表現方法であってもよい。
【００７８】
ステップＳ６０４において、プログラム生成装置１０１は、“ＡＴ  ＴＩＭＥ  ＺＯＮＥ”付のＳＱＬ文を作成する（例：図１１の１１１０又は図１３の１３２０の対象カラム名＝ＣＵＲＲＥＮＴ＿ＴＩＭＥＳＴＡＭＰ  ＡＴ  ＴＩＭＥ  ＺＯＮＥ  タイムゾーン文字列）。すなわち、ステップＳ６０４は、データモデル定義に第１の所定の値（タイムゾーン文字列）が設定されている場合に、当該第１の所定の値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築する処理の一例を示すステップである。
【００７９】
なお、本実施形態においては、データベースサーバ１０３の日付を“ＣＵＲＲＥＮＴ＿ＴＩＭＥＳＴＡＭＰ  ＡＴ  ＴＩＭＥ  ＺＯＮＥ  タイムゾーン文字列”としたが、これに限定するものではなく、ＤＢＭＳの種類によっては、“ＳＹＳＴＩＭＥＳＴＡＭＰ  ＡＴ  ＴＩＭＥ  ＺＯＮＥ  タイムゾーン文字列”等、他の表現方法であってもよい。ただし、タイムゾーン文字列については、データベースの種類によってその指定方法が異なる場合があるため、加工式８０１に設定されたタイムゾーン文字列をそのまま利用するとした方が、汎用性が高まるため好ましい。
【００８０】
ステップＳ６０５において、プログラム生成装置１０１は、データモデル定義４０４の加工式８０１の“＠ＤＢＺＯＮＥＤＡＴＥ”に“ＩＮＳＥＲＴ”が設定されているか判定し、設定されている場合はステップＳ６０６に進み、設定されていない場合はステップＳ６０７に進む。つまり、“＠ＤＢＺＯＮＥＤＡＴＥ”に“ＩＮＳＥＲＴ”が設定されている場合は、レコード挿入時のみこの項目コードに日時が記録される。すなわち、ステップＳ６０５は、記憶されているデータモデル定義に第２の所定の値（“ＩＮＳＥＲＴ”）が設定されているか否かを判定する処理の一例を示すステップである。また、ステップＳ６０５は、判定に従って、データベースのデータを更新するときにタイムゾーンを指定するクエリを用いるアプリケーションを構築するか、データベースのデータを更新するときにタイムゾーンを指定しないクエリを用いるアプリケーションを構築するかを制御する処理の一例を示すステップである。
【００８１】
ステップＳ６０６において、プログラム生成装置１０１は、ステップＳ５０５にて取得した入出力定義４０３のアクション定義に“＠ＩＮＳＥＲＴ”が定義されているか判定し、設定されている場合はステップＳ６０８に進み、設定されていない場合は図６の処理を終了する。つまり、レコード挿入を行うアクション（例；挿入ボタン押下時）によって実行される処理の場合は、ＩＮＳＥＲＴ  ＳＱＬ文に日付時刻のＳＱＬを付加すべく、ステップＳ６０８に進む。
【００８２】
ステップＳ６０７において、プログラム生成装置１０１は、ステップＳ５０５にて取得した入出力定義４０３のアクション定義に“＠ＩＮＳＥＲＴ”又は“＠ＵＰＤＡＴＥ”が定義されているか判定し、設定されている場合はステップＳ６０８に進み、設定されていない場合は図６の処理を終了する。つまり、レコード挿入又はレコード更新を行うアクション（例；挿入ボタン又は更新ボタン押下時）によって実行される処理の場合は、ＩＮＳＥＲＴ  ＳＱＬ文又はＵＰＤＡＴＥ  ＳＱＬ文に日付時刻のＳＱＬを付加すべく、ステップＳ６０８に進む。
【００８３】
ステップＳ６０８において、プログラム生成装置１０１は、ステップＳ６０３又はステップＳ６０４で作成した日付時刻のＳＱＬを処理ＳＱＬ文に付加する。
【００８４】
以上で、図６の説明を終了する。
【００８５】
図７は、図５・図６の処理により構築されたアプリケーションが日付時刻を更新する処理のフローチャートの一例を示す図である。
【００８６】
ステップＳ７０１において、アプリケーションサーバ１０５は、デプロイしたコンパイル済Ｊａｖａ（登録商標）コード４１３を実行し、生成されたＳＱＬ文に“ＡＴ  ＴＩＭＥ  ＺＯＮＥ”句が無い且つアプリケーション利用者のＨＴＴＰセッションにセッションキー“＠ＴＩＭＥ＿ＺＯＮＥ”として値が設定されているか判定し、Ｙｅｓの場合はステップＳ７０３に進み、Ｎｏの場合はステップＳ７０２に進む。すなわち、ステップＳ７０１は、アプリケーションを利用するユーザのセッションに所定のセッションキーが存在するか否かを判定する処理の一例を示すステップである。
【００８７】
ステップＳ７０２において、アプリケーションサーバ１０５は、図６の処理により生成されたＳＱＬ文を実行する。
【００８８】
具体的には、「ＩＮＳＥＲＴ押下前画面１０１０（図１０）」でＩＮＳＥＲＴボタン１０１１の押下を受け付けた場合、このＩＮＳＥＲＴボタン１０１１（＝ＩＮＳＥＲＴアクション）に対応付けられて生成された「ＩＮＳＥＲＴ  ＳＱＬ文  １１１０（図１１）」が実行されることによって、「ＩＮＳＥＲＴ後  ＤＢレコード１１２０（図１１）」がデータベースに登録され、「ＩＮＳＥＲＴ押下後画面１０２０（図１０）」のような画面が表示される。
【００８９】
同様に、「ＵＰＤＡＴＥ押下前画面１２１０（図１２）」でＵＰＤＡＴＥボタン１２１１の押下を受け付けた場合、このＵＰＤＡＴＥボタン１２１１（＝ＵＰＤＡＴＥアクション）に対応付けられて生成された「ＵＰＤＡＴＥ  ＳＱＬ文  １３２０（図１３）」が実行されることによって、データベースに記憶されている「ＵＰＤＡＴＥ前  ＤＢレコード１３１０（図１３）」が、「ＵＰＤＡＴＥ後  ＤＢレコード１３３０（図１３）」に更新され、ＵＰＤＡＴＥ押下後画面１２２０（図１２）」のような画面が表示される。つまり、データモデル定義画面８００の加工式８０１に“ＩＮＳＥＲＴ”を付けた項目コードについては、レコード更新時に日付は記録されない。
【００９０】
これにより、アプリケーション開発者が定義したデータモデル定義４０４の加工式８０１のタイムゾーン文字列に従って、挿入日時又は更新日時を記録することができるようになる。つまり、アプリケーション設計のタイムゾーンに合わせた日時の記録及びその後の日時表示ができるようになる。
【００９１】
ステップＳ７０３において、アプリケーションサーバ１０５は、図６の処理により生成されたＳＱＬ文とセッションキー“＠ＴＩＭＥ＿ＺＯＮＥ”の値とを用いて動的にＳＱＬ文を生成し実行する。すなわち、ステップＳ７０３は、所定のセッションキーが存在する場合、当該セッションキーに対応する値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築する処理の一例を示すステップである。また、ステップＳ７０３は、所定のセッションキーが存在する場合、当該セッションキーに対応する値に応じたタイムゾーンを指定するクエリを用いてデータベースのデータを操作するアプリケーションを構築する処理の一例を示すステップである。
【００９２】
具体的には、アプリケーション利用者のＨＴＴＰセッションに＠ＴＩＭＥ＿ＺＯＮＥ＝“Ａｍｅｒｉｃａ／Ｎｅｗ＿Ｙｏｒｋ”と記録されていた場合、図８の加工式８０１の“タイムゾーン文字列”の指定に関わらず、図６の処理により生成されたＳＱＬ文中のタイムゾーン文字列を“Ａｍｅｒｉｃａ／Ｎｅｗ＿Ｙｏｒｋ”に置換して、動的にＳＱＬ文を生成し実行する。これにより、アプリケーション開発者が定義したデータモデル定義４０４の加工式８０１のタイムゾーン文字列に関わらず、アプリケーション利用者のタイムゾーン文字列に従って、挿入日時又は更新日時を記録することができるようになる。つまり、アプリケーション利用者のタイムゾーンに合わせた日時の記録及びその後の日時表示ができるようになる。
【００９３】
以上で、図７の説明を終了する。
【００９４】
以上により、これにより、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができる。仕組みを提供することができる。また、データベースの１つのテーブルにおいても、複数のタイムゾーンを使い分けるアプリケーションを構築する仕組みを提供することができる。
【００９５】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【００９６】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【００９７】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ、シリコンディスク等を用いることが出来る。
【００９８】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１００】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１０１】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、ＯＳ（オペレーティングシステム）に供給されるスクリプトデータ等の形態から成ってもよい。
【０１０２】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１０３】
１０１  プログラム生成装置
１０２  プログラム生成サーバ
１０３  データベースサーバ
１０４  アプリケーションクライアント
１０５  アプリケーションサーバ
１０６  Ｗｅｂサーバ
１０７  ネットワーク
【図１】
2019053637.tif 000003
【図２】
2019053637.tif 000004
【図３】
2019053637.tif 000005
【図４】
2019053637.tif 000006
【図５】
2019053637.tif 000007
【図６】
2019053637.tif 000008
【図７】
2019053637.tif 000009
【図８】
2019053637.tif 000010
【図９】
2019053637.tif 000011
【図１０】
2019053637.tif 000012
【図１１】
2019053637.tif 000013
【図１２】
2019053637.tif 000014
【図１３】
2019053637.tif 000015