(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションが出力する日付又は数値の形式のうち、前記アプリケーションが起動されるときにコンパイルする形式を特定する値を記憶する第2記憶手段を更に備え、
前記アプリケーション構築手段は、
前記アプリケーションが起動されるときに、前記第2記憶手段により記憶されている値に基づく形式をコンパイルするアプリケーションを構築すること
を特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
前記アプリケーションに入力されるファイル又は前記アプリケーションが出力するファイルに含まれる日付若しくは数値の形式を特定する値を記憶する第3記憶手段を更に備え、
前記アプリケーション構築手段は、
前記第3記憶手段により記憶されている値に基づく形式に従って、前記アプリケーションに入力されるファイルに含まれる日付若しくは数値をチェックする又は前記アプリケーションが出力するファイルに含まれる日付若しくは数値を出力するように制御するアプリケーションを構築すること
を特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
アプリケーションを構築し、前記アプリケーションが出力する日付又は数値の形式を特定する値を記憶する第1記憶手段を備える情報処理装置で実行可能なプログラムであって、
前記情報処理装置を、
前記第1記憶手段により記憶されている値に基づく形式で日付又は数値を出力するか、前記アプリケーションを利用するエンドユーザのセッションから取得した値に基づく形式で日付又は数値を出力するかを制御するアプリケーションを構築するアプリケーション構築手段
として機能させるためのプログラム。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
【0013】
図1は、本発明に係わるプログラム生成装置101(開発者がWebアプリケーション生成のために使用する情報処理装置)、プログラム生成サーバ102、データベースサーバ103、アプリケーションクライアント104(クライアント装置)、アプリケーションサーバ105の構成の一例を示すシステム(情報処理システム)構成図である。
【0014】
プログラム生成装置101は、開発者の操作に従って画面レイアウト及びデータベース検索指示などを定義する。なお、プログラム生成装置101では、開発者の入力受付を行い、後述するプログラム生成サーバ102に実際のプログラム生成処理、アプリケーション生成処理を行うというように役割を分けてもよいし、プログラム生成装置101単体でプログラム生成、アプリケーション生成までを行ってもよい。
【0015】
なお、この実施形態においては、プログラム生成装置101で生成するアプリケーションはWebアプリケーションとしたが、これに限定するものではなく、携帯電話・スマートフォン・タブレットなどの情報処理装置で動作するアプリケーションや組込みソフトウェアなど、Web技術による通信を利用しないアプリケーションやシステムであってもよい。
【0016】
また、本実施形態においては、プログラム生成装置101によってアプリケーションのプログラムを生成するとしたが、プログラムの生成に限定するものではなく、開発者の操作に従って設定された定義を用いて、アプリケーションやシステムが動作する環境を構築するとしてもよい。
【0017】
プログラム生成サーバ102a〜102bは情報処理装置であって、プログラム生成装置101により入力された開発者の設定及び指示に従って、プログラムを生成する。プログラム生成サーバ102aはLANなどのネットワーク106内に配置されてもよいし、プログラム生成サーバ102bはインターネット上やクラウド上に配置されてもよい。
【0018】
データベースサーバ103a〜103bは情報処理装置であって、開発されたアプリケーションが使用するデータベースであり、また本発明では開発時にも動作確認などのために利用してもよい。例えば、開発者が利用するためにデータベースサーバ103は、プログラム生成装置101と同一の装置で構成されていてもよいし、LANなどのネットワーク106内に配置されてもよい(データベースサーバ103a)。またインターネット上やクラウド上に配置されてもよい(データベースサーバ103b)。また、プログラム生成装置101が、プログラム生成サーバ102と協調する場合には、プログラム生成サーバ102とデータベースサーバ103が同一の装置内に構成されていてもよい。
【0019】
アプリケーションサーバ105は情報処理装置であって、プログラム生成装置101で生成されたアプリケーションプログラムを実行する。アプリケーションサーバ105は、LANなどのネットワーク106内に配置されてもよい(アプリケーションサーバ105)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションサーバ105b)。また、ネットワーク106、インターネット、クラウド上のデータベースサーバ103と接続して動作することが可能である。
【0020】
アプリケーションクライアント104a〜104bは情報処理装置であって、アプリケーションサーバ105と協調してプログラム生成装置101で開発したアプリケーションプログラムを動作させる、アプリケーションのエンドユーザの入力端末である。LANなどのネットワーク106内に配置されてもよい(アプリケーションクライアント104a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションクライアント104b)。携帯端末などの情報処理装置であってもよい。
【0021】
図2は、本発明に係わるプログラム生成装置101、プログラム生成サーバ102、データベースサーバ103、アプリケーションクライアント104、アプリケーションサーバ105として適用可能な各ハードウェア構成の一例を示すブロック図である。
【0022】
図2において、CPU201は、システムバス204に接続される各デバイスを統括的に制御する。
【0023】
また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるオペレーティングシステム(OS)や、各サーバ、クライアント、装置など情報処理装置の後述する各種機能を実現するためのプログラムが記憶されている。
【0024】
RAM202は、CPU201の主メモリ、ワークエリア、一時待避領域等として機能する。
【0025】
入力コントローラ205は、入力部209からの入力を制御する。この入力部209としては、情報処理装置では、キーボード、マウス等のポインティングデバイスが挙げられる。
【0026】
出力コントローラ206は、出力部210の表示を制御する。この出力部210としては、例えば、CRTや液晶ディスプレイ等が挙げられる。
【0027】
外部メモリコントローラ207は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ211へのアクセスを制御する。加えて、各サーバ、クライアント、装置等の各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ211としては、ハードディスク(HD)やフレキシブルディスク(FD)、PCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)、スマートメディア等が挙げられる。
【0028】
通信I/Fコントローラ208は、ネットワークを介して外部機器との通信制御処理を実行する。
【0029】
本発明を実現するためのプログラム212は外部メモリ211に記録されており、必要に応じてRAM202にロードされることによりCPU201によって実行されるものである。
【0030】
図3は、本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。
【0031】
プログラム生成装置101は、以下の機能部を備える。
【0032】
第1記憶部301は、アプリケーションが出力する日付又は数値の形式を特定する値を記憶する機能部である。
【0033】
アプリケーション構築部302は、第1記憶部301により記憶されている値に基づく形式で日付又は数値を出力するか、アプリケーションを利用するエンドユーザのセッションから取得した値に基づく形式で日付又は数値を出力するかを制御するアプリケーションを構築する機能部である。
【0034】
アプリケーション構築部302は、アプリケーションを利用するエンドユーザのセッションから、日付又は数値を出力する形式を特定する値を取得できた場合は当該値に基づく形式で日付又は数値を出力し、当該値を取得できなかった場合は第1記憶部301により記憶されている値に基づく形式で日付又は数値を出力するよう制御するアプリケーションを構築する機能部である。
【0035】
アプリケーション構築部302は、アプリケーションを利用するエンドユーザのセッションから取得した値に従って、当該値に基づく形式で日付又は数値を出力するか第1記憶部301により記憶されている値に基づく形式で日付又は数値を出力するかを制御するアプリケーションを構築する機能部である。
【0036】
アプリケーション構築部302は、アプリケーションを利用するエンドユーザのセッションから取得した値に基づく形式に従って、当該エンドユーザが入力した日付又は数値をチェックするアプリケーションを構築する機能部である。
【0037】
第2記憶部303は、アプリケーションが出力する日付又は数値の形式のうち、アプリケーションが起動されるときにコンパイルする形式を特定する値を記憶する機能部である。
【0038】
アプリケーション構築部302は、アプリケーションが起動されるときに、第2記憶部303により記憶されている値に基づく形式をコンパイルするアプリケーションを構築する機能部である。
【0039】
第3記憶部304は、アプリケーションに入力されるファイル又はアプリケーションが出力するファイルに含まれる日付若しくは数値の形式を特定する値を記憶する機能部である。
【0040】
アプリケーション構築部302は、第3記憶部304により記憶されている値に基づく形式に従って、アプリケーションに入力されるファイルに含まれる日付若しくは数値をチェックする又はアプリケーションが出力するファイルに含まれる日付若しくは数値を出力するように制御するアプリケーションを構築する機能部である。
【0041】
図4は、プログラム生成装置101、アプリケーションサーバ105及びアプリケーションクライアント104の構成図である。
【0042】
プログラム生成装置101は、リポジトリ定義部401及びアプリケーション生成部410を備える。
【0043】
プログラム生成装置101は、アプリケーションを開発する開発者により設定されたリポジトリ定義部401の各定義を用いて、アプリケーション生成部410によりアプリケーションを生成する。
【0044】
リポジトリ定義部401には、アプリケーション定義402、入出力定義403、データモデル定義404、ビジネスプロセス定義405、データベース定義406が記憶されている。これら402〜406の定義は、アプリケーション構築ツールを介して、開発者によって入力設定または配置される。
【0045】
なお、入出力定義403は、入力項目定義情報及び出力項目定義情報を含む。入力項目定義情報は、生成されたアプリケーションの画面を介して当該アプリケーションのエンドユーザが入力する入力項目を定義した情報である。出力項目定義情報は、生成されたアプリケーションの画面に出力する出力項目を定義した情報である。以降、「入力項目定義情報」及び「出力項目定義情報」をまとめて「入出力項目定義情報」と呼ぶ。
【0046】
アプリケーション生成部410は、アプリケーション生成用のリポジトリ定義解析部411を用いてリポジトリ定義部401に記憶されている各定義を解析し、アプリケーションコード生成部413及びソースコードコンパイル部414を介し、コンパイル済Java(登録商標)コード421及びHTML/JSP/JavaScript(登録商標)422を含むアプリケーションを生成する。すなわち、アプリケーション生成部410は、設定された定義を用いて、アプリケーションとして用いられるプログラムを生成する手段の一例である。
【0047】
図5は、アプリケーション生成のフローチャートの一例を示す図である。
【0048】
ステップS501において、プログラム生成装置101は、アプリケーション定義402の設定を受け付ける。具体的には、アプリケーション構築ツールの画面を介して、アプリケーション開発者から入出力定義403、データモデル定義404、ビジネスプロセス定義405及びデータベース定義406の設定を受け付ける。
【0049】
ステップS502において、プログラム生成装置101は、アプリケーション生成の指示を受け付ける。
【0050】
ステップS503において、プログラム生成装置101は、リポジトリ定義部401からアプリケーション定義402を取得する。リポジトリ定義解析部411は、読み込んだ定義を解析したうえでメモリに記憶しておき、解析された定義はアプリケーション生成の各処理において適宜参照される。
【0051】
ステップS504において、プログラム生成装置101は、リポジトリ定義部401からデータモデル定義404を取得する。
【0052】
ステップS505において、プログラム生成装置101は、リポジトリ定義部401から入出力定義403を取得する。
【0053】
ステップS506において、プログラム生成装置101は、リポジトリ定義部401からビジネスプロセス定義405を取得する。
【0054】
ステップS507において、プログラム生成装置101は、リポジトリ定義部401からデータベース定義406を取得する。
【0055】
ステップS508において、プログラム生成装置101は、生成設定情報を取得する(詳細は、
図6の説明にて後述する)。
【0056】
ステップS509において、プログラム生成装置101は、アプリケーションコード生成部413を用いて、アプリケーションの実行に用いるプログラムを生成する。すなわち、ステップS509は、アプリケーションを構築する処理の一例を示すステップである。
【0057】
ステップS509により生成されるプログラムは、例えば、Java(登録商標)、JSP、JavaScript(登録商標)、スタイルシート、HTML、XML、バッチファイル、リソースファイル、各種設定ファイル等であり、アプリケーションサーバ105にて、これらのプログラムが実行されることにより、
図7〜
図10のフローチャートの処理が実行される。
【0058】
すなわち、ステップS509は、記憶されている値に基づく形式で日付又は数値を出力するか、アプリケーションを利用するエンドユーザのセッションから取得した値に基づく形式で日付又は数値を出力するかを制御するアプリケーションを構築する処理の一例を示すステップである。(構築されたアプリケーションの動作は、ステップS801〜S804の処理が該当する)
また、ステップS509は、アプリケーションを利用するエンドユーザのセッションから、日付又は数値を出力する形式を特定する値を取得できた場合は当該値に基づく形式で日付又は数値を出力し、当該値を取得できなかった場合は記憶されている値に基づく形式で日付又は数値を出力するよう制御するアプリケーションを構築する処理の一例を示すステップである。(構築されたアプリケーションの動作は、ステップS801〜S804の処理が該当する)
また、ステップS509は、アプリケーションを利用するエンドユーザのセッションから取得した値に従って、当該値に基づく形式で日付又は数値を出力するか記憶されている値に基づく形式で日付又は数値を出力するかを制御するアプリケーションを構築する処理の一例を示すステップである。(構築されたアプリケーションの動作は、ステップS801〜S804の処理が該当する)
また、ステップS509は、アプリケーションを利用するエンドユーザのセッションから取得した値に基づく形式に従って、当該エンドユーザが入力した日付又は数値をチェックするアプリケーションを構築する処理の一例を示すステップである。(構築されたアプリケーションの動作は、ステップS801〜S804の処理が該当する)
また、ステップS509は、アプリケーションが起動されるときに、記憶されている値に基づく形式をコンパイルするアプリケーションを構築する処理の一例を示すステップである。(構築されたアプリケーションの動作は、ステップS703〜S705の処理が該当する)
また、ステップS509は、記憶されている値に基づく形式に従って、アプリケーションに入力されるファイルに含まれる日付若しくは数値をチェックする又はアプリケーションが出力するファイルに含まれる日付若しくは数値を出力するように制御するアプリケーションを構築する処理の一例を示すステップである。(構築されたアプリケーションの動作は、ステップS908〜S910の処理が該当する)
ステップS510において、プログラム生成装置101は、ステップS509にて生成したプログラムをアプリケーションサーバ105に配置(デプロイ)する。デプロイ後、アプリケーションサーバ105は、デプロイされたアプリケーションを起動させ、アプリケーションが動作する状態にする。
【0060】
図6は、アプリケーション設定出力のフローチャートの一例を示す図である。
【0061】
ステップS601において、プログラム生成装置101は、外部メモリ211に記憶されているアプリケーション生成設定情報ファイル1000(
図10)の内容を読み込む。アプリケーション生成設定情報ファイル1000は、アプリケーション構築ツールにおけるアプリケーション生成に係る設定を記憶したファイルである。すなわち、アプリケーション生成設定情報ファイル1000は、アプリケーションが出力する日付又は数値の形式を特定する値を記憶する手段の一例である。
【0062】
ステップS602において、プログラム生成装置101は、アプリケーション生成設定情報ファイル1000にロケール設定がされているか否かを判定し、設定されている場合はステップS603に進み、設定されていない場合はステップS608に進む。
【0063】
ロケール設定とは、言語(又は地域)別の設定(例:日付、単位、通貨、数値の表示等の設定)であり、具体的には
図10の1001及び1002のように記述する。なお、“|”は言語別設定の区切りを表す記号である。
【0064】
1001は言語別の日付フォーマット設定であり、日本語:YMD形式(例:2017/12/31)、英語:MDY形式(例:12/31/2017)、フランス語:DMY形式(例:31/12/2017)で日付を出力するという設定例である。
【0065】
1002は言語別の数値フォーマット設定であり、日本語:桁数区切にカンマ&小数点にドット(例:1,234,567.99)、英語:桁数区切にカンマ&小数点にドット、フランス語:桁数区切にドット&小数点にカンマ(例:1.234.567,99)で数値を出力するという設定例である。
【0066】
ステップS603において、ステップS604からステップS606までの処理をアプリケーション生成設定情報ファイル1000に記述されているロケール分繰り返す。
【0067】
ステップS604において、プログラム生成装置101は、ロケールに対応するリソースファイルの有無を判定し、有る場合はステップS605に進み、無い場合はステップS607に進む。ここで、リソースファイルとは言語別設定ファイルであり、具体的には
図11のように記述される。リソースファイル1100は日本語のリソースファイルの例である。
【0068】
ステップS605において、プログラム生成装置101は、リソースファイル1100に数値フォーマットロケール設定を出力する(
図11の1101)。num.grouping.separator=,(桁数区切にカンマを用いる)、num.decimal.separator=.(小数点にドットを用いる)のように設定を出力する。
【0069】
ステップS606において、プログラム生成装置101は、リソースファイル1100に日付フォーマットロケール設定を出力する(
図11の1102)。date.format=YMD(YMD形式で日付を出力)のように設定を出力する。
【0070】
つまり、ステップS605及びステップS606の処理により、アプリケーション生成設定情報ファイル1000で設定されたロケール設定をリソースファイル1100へ出力する。
【0071】
ステップS608において、プログラム生成装置101は、アプリケーション生成設定情報ファイル1000に事前コンパイル設定1003がされているか否かを判定し、設定がされている場合はステップS609に進み、設定がされていない場合は
図6のフローチャートを終了する。
【0072】
事前コンパイル設定1003(
図10)は、アプリケーションサーバ105がアプリケーションの初回起動時に数値フォーマットをコンパイルしておくための設定である。なお、本実施形態においては、事前コンパイル設定1003で設定できるのは数値フォーマットのみとしたが、数値フォーマットに限定するものではなく、日付フォーマット用の事前コンパイル設定1003があってもよい。
【0073】
すなわち、アプリケーション生成設定情報ファイル1000は、アプリケーションが出力する日付又は数値の形式のうち、アプリケーションが起動されるときにコンパイルする形式を特定する値を記憶する手段の一例である。
【0074】
図10の事前コンパイル設定1003は、「,.」(桁数区切にカンマ&小数点にドット)、「.,」(桁数区切にドット&小数点にカンマ)、「 ,」(桁数区切にスペース&小数点にカンマ)の3通りのパターンを事前コンパイルしておくための設定例である。なお、各設定ファイルにおいて、スペースは“¥u0020”と表現する。
【0075】
ステップS609において、プログラム生成装置101は、ステップS608にて読取った事前コンパイル設定1003をアプリケーション設定ファイル1200へ出力する(
図12の1201)。
【0077】
図7は、アプリケーション起動及び実行のフローチャートの一例を示す図である。
【0078】
ステップS701において、アプリケーションサーバ105は、日付フォーマットをコンパイルし、外部メモリ211に記憶する。なお、日付フォーマットについては、一般的にYMD、MDY、DMYの3種類しか存在しないため、この3つのフォーマットをコンパイルし、コンパイルにより生成されたファイルを外部メモリ211に記憶する。
【0079】
ステップS702において、アプリケーションサーバ105は、数値デフォルトフォーマットをコンパイルし、コンパイルにより生成されたファイルを外部メモリ211に記憶する。数値デフォルトフォーマットとは、数値フォーマットの設定がない場合に利用されるデフォルトの数値フォーマットであり、具体的には、「,.」(桁数区切にカンマ&小数点にドット)形式のフォーマットである。
【0080】
ステップS703において、アプリケーションサーバ105は、アプリケーション設定ファイル1200に事前コンパイル設定1201が設定されているか否かを判定し、設定されている場合はステップS704に進み、設定されていない場合はステップS706に進む。
【0081】
ステップS704において、アプリケーションサーバ105は、事前コンパイル設定1201に設定されている数値フォーマットのパターン数だけステップS705を繰り返す。
図12の1201では、事前コンパイル設定1201に、「,.」(桁数区切にカンマ&小数点にドット)、「.,」(桁数区切にドット&小数点にカンマ)、「 ,」(桁数区切にスペース&小数点にカンマ。例:1 234 567,99)の3通りのパターンが設定されているため、この3つのパターンについてステップS705の処理を繰り返す。
【0082】
ステップS705において、アプリケーションサーバ105は、数値フォーマットの事前コンパイルを行い、コンパイルにより生成されたファイルを外部メモリ211に記憶する。
【0083】
なお、本発明により、柔軟な形式に基づいて日付又は数値を出力するアプリケーションを構築することができるようになるが、フォーマットのパターンが増えると、後に説明するステップS904のフォーマットのコンパイル処理が多く実行されることになり、アプリケーション全体の動作が遅くなってしまう。そのような場合は、アプリケーション開発時に利用されることが想定されるフォーマットを事前コンパイル設定1201に記載しておくことで、ステップS703〜S705の処理によってアプリケーション実行時のフォーマットのコンパイル処理(ステップS904)の実行頻度を抑えることができるため、アプリケーション実行時にアプリケーション全体の動作が遅くなることを防止できる。
【0084】
以上のステップS701〜S705は、アプリケーション起動に係る処理であり、以下のステップS706〜S709は、アプリケーション起動後にエンドユーザからリクエストを受信したときのアプリケーション実行に係る処理である。
【0085】
ステップS706において、アプリケーションサーバ105は、日付項目の出力処理か否かを判定し、日付項目の出力処理の場合はステップS707に進み、日付項目の出力処理でない場合はステップS708に進む。
【0086】
ステップS707において、アプリケーションサーバ105は、アプリケーション実行(日付項目出力)処理を行う。
【0087】
ステップS708において、アプリケーションサーバ105は、数値項目の出力処理か否かを判定し、数値項目の出力処理の場合はステップS709に進み、数値項目の出力処理でない場合は
図7のフローチャートを終了する。なお、数値項目には、金額などの貨幣項目も含む。
【0088】
ステップS709において、アプリケーションサーバ105は、アプリケーション実行(数値項目出力)の処理を行う。
【0090】
図8は、アプリケーション実行(日付項目出力)のフローチャートの一例を示す図である。
【0091】
ステップS801において、アプリケーションサーバ105は、アプリケーションを利用するエンドユーザのセッションに日付フォーマット設定の有無を判定し、有る場合はステップS802に進み、無い場合はステップS803に進む。具体的には、エンドユーザのセッションにキー=@DATE_LAYOUTに対応する値の有無に従って判定する。なお、本実施形態においては、セッションにおける日付フォーマット設定の有無で判定するとしたが、この方法に限定するものではなく、セッションにおける日付フォーマット設定の値に従って判定する方法、セッションに設定された所定の値に従って判定する方法等であってもよい。
【0092】
なお、エンドユーザのセッションに日付フォーマットを設定しておく方法は、様々な方法が考えられる。例えば、
(ア) アプケーションのログイン処理時等に、エンドユーザのユーザID、言語又は利用地域等に対応付けられてデータベース等で管理されている日付フォーマットを取得し、当該エンドユーザのセッションに日付フォーマットとして設定する
(イ) エンドユーザが選択又は入力した値に従って、当該エンドユーザのセッションに日付フォーマットとして設定する
(ウ) アプリケーション構築ツールにより構築したアプリケーションよりも上位システム(例:ポータル等のログイン管理アプリケーション)が、エンドユーザのセッションに日付フォーマットを設定する
等の方法が考えられる。
【0093】
上記(ア)〜(ウ)等の方法によって、生成したアプリケーションが当該エンドユーザのセッションにキー=@DATE_LAYOUTに対応する値として、例えば「DMY」を設定することにより、エンドユーザの属すロケールの日付フォーマット設定以外のフォーマットで日付を表示することができるようになる。つまり、日本においてフランス人が操作するアプリケーションのように、ロケールと異なる設定でアプリケーション画面を表示させたいユースケースにも対応可能な、柔軟な形式に基づいて日付又は数値を出力するアプリケーションを構築することができるようになる。
【0094】
なお、本実施形態においては、セッションから取得した値を日付フォーマットとするとしたが、この方法に限定するものではなく、セッションから取得した値に基づく値を日付フォーマットとする、エンドユーザの識別情報に基づいて特定された値を日付フォーマットとする等の方法であってもよい。
【0095】
ステップS802において、アプリケーションサーバ105は、ステップS801にて取得した日付フォーマットがコンパイル済か否かを判定し、コンパイル済の場合はステップS804に進み、コンパイル済でない場合はステップS803に進む。具体的には、ステップS801にて取得した日付フォーマットのコンパイル済ファイルが外部メモリ211に記憶されているか否かによって判定する。つまり、ユーザセッションの日付フォーマットがYMD、MDY、DMYの3種類以外の場合、ステップS803に進むことになる。
【0096】
なお、本実施形態においては、フォーマットのコンパイル済ファイルが外部メモリ211に記憶されているか否かによって、コンパイル済か否かを判定するとしたが、この方法に限定するものではなく、例えば、コンパイル済のフォーマットをリスト又はデータベース管理しておき、そのリスト又はデータベースにおける有無によって判定する等の方法であってもよい。
【0097】
ステップS803において、アプリケーションサーバ105は、ロケールのリソースファイル1100に日付フォーマット設定1102の有無を判定し、設定が有る場合はステップS804に進み、設定が無い場合はステップS805に進む。
【0098】
ステップS804において、アプリケーションサーバ105は、ステップS801又はステップS803にて取得した日付フォーマット設定をアプリケーションの動作に反映させた後、そのフォーマットを用いて日付を表示する。
【0099】
「アプリケーションの動作に反映させる」とは、ステップS801又はステップS803にて取得した日付フォーマット設定1102を、例えば
(1) アプリケーション画面に表示する日付
(2) アプリケーションが出力(エクスポート)するファイルに含む日付
(3) ユーザが画面にて入力する日付のバリデーション(クライアント又はサーバにおける入力チェック
(4) アプリケーションに入力(インポート)するファイルに含まれる日付
(5) アプリケーション構築ツールのプレビュー画面やレイアウトエディタに表示する日付
等のフォーマットとして適用することである。
【0100】
具体的には、上記(1)(2)(5)の場合は、ステップS801又はステップS803にて取得した日付フォーマットを日付の表示及びファイル出力時に適用し、上記(3)(4)の場合は、バリデーションを行うプログラム(例:JavaScript(登録商標)やJava(登録商標)等)がステップS801又はステップS803にて取得した日付フォーマットを参照する等の様にして実現する。
【0101】
ステップS805において、アプリケーションサーバ105は、日付デフォルトフォーマット設定をアプリケーションに反映させた後、そのフォーマットを用いて日付を表示する。なお、日付デフォルトフォーマット設定はYMD形式である。
【0102】
以上から、日付フォーマットは、エンドユーザセッションにおける設定、ロケールにおける設定、アプリケーションにおけるデフォルト設定の優先順位で適用される。つまり、ロケール設定やデフォルト設定に満足できないエンドユーザのみセッションにおけるフォーマット設定をすれば良いため、従来のロケール設定を用いるアプリケーションの仕組みを大きく変えることなく、カスタマイズが必要なユーザに対応することができるようになる。
【0104】
図9は、アプリケーション実行(数値項目出力)のフローチャートの一例を示す図である。
【0105】
ステップS901において、アプリケーションサーバ105は、アプリケーションを利用するエンドユーザのセッションに数値フォーマット設定の有無を判定し、有る場合はステップS903に進み、無い場合はステップS902に進む。具体的には、エンドユーザのセッションにキー=@NUM_SEPARATORに対応する値の有無に従って判定する。なお、本実施形態においては、セッションにおける数値フォーマット設定の有無で判定するとしたが、この方法に限定するものではなく、セッションにおける数値フォーマット設定の値に従って判定する方法、セッションに設定された所定の値に従って判定する方法等であってもよい。
【0106】
なお、エンドユーザのセッションに数値フォーマットを設定しておく方法は、様々な方法が考えられる。例えば、
(ア) アプケーションのログイン処理時等に、エンドユーザのユーザID、言語又は利用地域等に対応付けられてデータベース等で管理されている数値フォーマットを取得し、当該エンドユーザのセッションに数値フォーマットとして設定する
(イ) エンドユーザが選択又は入力した値に従って、当該エンドユーザのセッションに数値フォーマットとして設定する
(ウ) アプリケーション構築ツールにより構築したアプリケーションよりも上位システム(例:ポータル等のログイン管理アプリケーション)が、エンドユーザのセッションに数値フォーマットを設定する
等の方法が考えられる。
【0107】
上記(ア)〜(ウ)等の方法によって、生成したアプリケーションが当該エンドユーザのセッションにキー=@NUM_SEPARATORに対応する値として、例えば「 ,」(桁数区切にスペース&小数点にカンマ。例:1 234 567,99)を設定することにより、エンドユーザの属すロケールの数値フォーマット設定以外のフォーマットで数値を表示することができるようになる。つまり、日本においてフランス人が操作するアプリケーションのように、ロケールと異なる設定でアプリケーション画面を表示させたいユースケースにも対応可能な、柔軟な形式に基づいて日付又は数値を出力するアプリケーションを構築することができるようになる。
【0108】
また、上記(ア)〜(ウ)等の方法で、生成したアプリケーションが、当該エンドユーザのセッションにキー=@NUM_SEPARATORに対応する値として、例えば「’.」(桁数区切にアポストロフィ&小数点にドット。例:1’234’567.99)を設定することにより、数値フォーマット設定1002及び事前コンパイル設定1003に設定されていないフォーマットで数値を表示することができるようになる。つまり、アプリケーション設計時やアプリケーション運用開始時には想定していなかったフォーマットをエンドユーザが自由に選択できるアプリケーションを構築することができるようになる。
【0109】
なお、本実施形態においては、セッションから取得した値を数値フォーマットとするとしたが、この方法に限定するものではなく、セッションから取得した値に基づく値を数値フォーマットとする、エンドユーザの識別情報に基づいて特定された値を数値フォーマットとする等の方法であってもよい。
【0110】
ステップS902において、アプリケーションサーバ105は、ロケールのリソースファイル1100に数値フォーマット設定1101の有無を判定し、有る場合はステップS903に進み、無い場合はステップS907に進む。
【0111】
ステップS903において、アプリケーションサーバ105は、ステップS901又はステップS902にて取得した数値フォーマットがコンパイル済か否かを判定し、コンパイル済の場合はステップS906に進み、コンパイル済でない場合はステップS904に進む。具体的には、ステップS901又はステップS902にて取得した数値フォーマットのコンパイル済ファイルが外部メモリ211に記憶されているか否かによって判定する。つまり、ユーザセッション又はロケールの数値フォーマットがコンパイルされていない場合、ステップS904に進むことになる。
【0112】
なお、本実施形態においては、フォーマットのコンパイル済ファイルが外部メモリ211に記憶されているか否かによって、コンパイル済か否かを判定するとしたが、この方法に限定するものではなく、例えば、コンパイル済のフォーマットをリスト又はデータベース管理しておき、そのリスト又はデータベースにおける有無によって判定する等の方法であってもよい。
【0113】
ステップS904において、アプリケーションサーバ105は、コンパイル済でない数値フォーマットをコンパイルする。
【0114】
ステップS905において、アプリケーションサーバ105は、コンパイルにより生成されたファイルを外部メモリ211に記憶する。
【0115】
ステップS906において、アプリケーションサーバ105は、ステップS901又はステップS902にて取得した数値フォーマット設定をアプリケーションの動作に反映させた後、そのフォーマットを用いて数値を表示する。
【0116】
「アプリケーションの動作に反映させる」とは、ステップS901又はステップS902にて取得した数値フォーマットを、例えば、
(1) アプリケーション画面に表示する数値
(2) アプリケーションが出力(エクスポート)するファイルに含む数値
(3) ユーザが画面にて入力する数値のバリデーション(クライアント又はサーバにおける入力チェック
(4) アプリケーションに入力(インポート)するファイルに含まれる数値のバリデーション
(5) アプリケーション構築ツールのプレビュー画面やレイアウトエディタに表示する数値
等のフォーマットとして適用することである。
【0117】
具体的には、上記(1)(2)(5)の場合は、ステップS901又はステップS902にて取得した数値フォーマットを数値の表示及びファイル出力時に適用し、上記(3)(4)の場合は、バリデーションを行うプログラム(例:JavaScript(登録商標)やJava(登録商標)等)がステップS901又はステップS902にて取得した数値フォーマットを参照する等の様にして実現する。
【0118】
ステップS907において、アプリケーションサーバ105は、数値デフォルトフォーマットをアプリケーションの動作に反映させた後、そのフォーマットを用いて数値を表示する。
【0119】
ステップS908において、アプリケーションサーバ105は、エンドユーザからのリクエストがデータアップロードか否かを判定し、データアップロードの場合はステップS909に進み、データアップロードでない場合は
図9のフローチャートを終了する。
【0120】
ステップS909において、アプリケーションサーバ105は、データアップロードが行われた画面について共通フォーマット設定1004(
図10)の有無を判定し、設定が有る場合はステップS910に進み、設定が無い場合は
図9のフローチャートを終了する。
【0121】
共通フォーマット設定1004とは、セッションやロケールの数値フォーマット設定に関わらず、アップロードされたデータを共通フォーマット(桁数区切なし&小数点にドット)に従ってインポートするか否かをアップロードが行われる画面毎に行う設定である。すなわち、アプリケーション生成設定情報ファイル1000は、アプリケーションに入力されるファイル又はアプリケーションが出力するファイルに含まれる日付若しくは数値の形式を特定する値を記憶する手段の一例である。
【0122】
共通フォーマット設定1004は、画面ID.import.num.separator.default=true/falseで表し、trueの場合はセッションやロケールの数値フォーマット設定に関わらず共通フォーマット(例:桁数区切なし&小数点にドット)に従ってデータをインポートし、falseの場合はセッションやロケールの数値フォーマット設定に従ってデータをインポートする。これにより、共通フォーマットを設定しておけば、どのロケールから利用された場合であっても、統一したフォーマットを用いることができるようになる。
【0123】
ステップS910において、アプリケーションサーバ105は、数値デフォルトフォーマットを反映させた後、そのフォーマットを用いて数値データをインポートする。なお、数値デフォルトフォーマット設定は「,.」(桁数区切にカンマ&小数点にドット。例:1,234,567.99)である。
【0124】
なお、本実施形態においては、共通フォーマット設定1004をアップロードされたデータのインポート時の形式に用いるとしたが、インポート時に限定するものではなく、ダウンロードさせるデータのエクスポート時の形式に用いるとしてもよい。
【0125】
以上から、数値フォーマットは、エンドユーザセッションにおける設定、ロケールにおける設定、アプリケーションにおけるデフォルト設定の優先順位で適用される。つまり、ロケール設定やデフォルト設定に満足できないエンドユーザのみセッションにおけるフォーマット設定をすれば良いため、従来のロケール設定を用いるアプリケーションの仕組みを大きく変えることなく、カスタマイズが必要なユーザに対応することができるようになる。
【0127】
以上により、ロケールに基づく形式ではなく、アプリケーションを利用するエンドユーザのセッションから取得した値に基づく形式で日付又は数値を出力することができるようになるため、柔軟な形式に基づいて日付又は数値を出力するアプリケーションを構築する仕組みを提供することができる。
【0128】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0129】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0130】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
【0131】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0132】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0133】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0134】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。
【0135】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。