以下、本発明の実施の形態を、図面を参照して詳細に説明する。
図1は、本発明に係わるプログラム開発装置(開発者がWebアプリケーション生成のために使用する情報処理装置)、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント(クライアント装置)、アプリケーションサーバの構成の一例を示すシステム構成図である(情報処理システム)。
プログラム開発装置101は、開発者の操作に従って画面レイアウトおよびデータベース検索指示などを定義する。プログラム開発装置101単体では、開発者の入力受付を行い、後述するプログラム開発サーバ102に実際のプログラム生成処理、アプリケーション生成処理をさせてもよいし、プログラム開発装置101単体でプログラム生成、アプリケーション生成まで処理してもよい。
なお、この実施形態においては、プログラム開発装置101で生成するアプリケーションはWebアプリケーションとしたが、これに限定するものではなく、携帯電話・スマートフォン・タブレットなどの情報処理装置で動作するアプリケーションや組込みソフトウェアなど、Web技術による通信を利用したアプリケーションでなくてもよい。
プログラム開発サーバ102a〜102b(情報処理装置)は、プログラム開発装置101により入力された開発者の指示に従って、プログラムを開発する。プログラム開発サーバ102aはLANなどのネットワーク106内に配置されてもよいし、プログラム開発サーバ102bはインターネット上やクラウド上に配置されてもよい。
データベースサーバ103a〜103b(情報処理装置)は、開発されたアプリケーションが使用するデータベースであり、また本発明では開発時にも動作確認などのために利用してもよい。例えば、開発者が利用するためにデータベースサーバ103は、プログラム開発装置101と同一の装置で構成されていてもよいし、LANなどのネットワーク106内に配置されてもよい(データベースサーバ103a)。またインターネット上やクラウド上に配置されてもよい(データベースサーバ103b)。また、プログラム開発装置101が、プログラム開発サーバ102と協調する場合には、プログラム開発サーバ102とデータベースサーバ103が同一の装置内に構成されていてもよい。
アプリケーションサーバ105a〜105b(情報処理装置)は、プログラム開発装置101で開発されたアプリケーションを実行する。LANなどのネットワーク106内に配置されてもよい(アプリケーションサーバ105a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションサーバ105b)。また、ネットワーク106、インターネット、クラウド上のデータベースサーバ103と接続して動作する可能である。
アプリケーションクライアント104a〜104b(情報処理装置)は、アプリケーションサーバ105と協調してプログラム開発装置101で開発したアプリケーションプログラムを動作させる、ユーザの入力端末である。LANなどのネットワーク106内に配置されてもよい(アプリケーションクライアント104a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションクライアント104b)。携帯端末などの情報処理装置であってもよい。
図2は、本発明に係わるプログラム開発装置101、プログラム開発サーバ102、データベースサーバ103、アプリケーションクライアント104、アプリケーションサーバ105として適用可能な各ハードウェア構成の一例を示すブロック図である。
図2において、CPU201は、システムバス204に接続される各デバイスを統括的に制御する。
また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるオペレーティングシステム(OS)や、各サーバ、クライアント、装置など情報処理装置の後述する各種機能を実現するためのプログラムが記憶されている。
RAM202は、CPU201の主メモリ、ワークエリア、一時待避領域等として機能する。
入力コントローラ205は、入力部209からの入力を制御する。この入力部209としては、情報処理装置では、キーボード、マウス等のポインティングデバイスが挙げられる。
出力コントローラ206は、出力部210の表示を制御する。この出力部210としては、例えば、CRTや液晶ディスプレイ等が挙げられる。
外部メモリコントローラ207は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ211へのアクセスを制御する。加えて、各サーバ、クライアント、装置等の各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ211としては、ハードディスク(HD)やフレキシブルディスク(FD)、PCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)、スマートメディア等が挙げられる。
通信I/Fコントローラ208は、ネットワークを介して外部機器との通信制御処理を実行する。
本発明を実現するためのプログラム212は外部メモリ211に記録されており、必要に応じてRAM202にロードされることによりCPU201によって実行されるものである。
次に本実施形態における基本の処理について、図3、図4の構成図を用いて説明する。なお、本実施形態における特徴となる処理の詳細については、図5、図7のフローチャートを用いて説明する。
図3は、プログラム開発装置101の処理概要を示す構成図である。プログラム開発装置101は、Webアプリケーションを開発する開発者が定義した定義ファイルをもとにWebアプリケーションを自動生成することを目的とした装置である。プログラム開発装置101は、リポジトリ定義部400、アプリケーション生成部410、Webアプリケーションコード生成部420、ソースコードコンパイル部440により構成される。
リポジトリ定義部400は、データベース定義401、アプリケーション定義402、データモデル定義403、入出力定義404、ビジネスプロセス定義405を備える。これらのファイルは、Webアプリケーション開発ツールを介して開発者によって入力され、作成される。
すなわち、リポジトリ定義部400は、プログラムへ引数として入力される項目を定義する入力定義情報と、プログラムから処理結果として出力する項目を定義する出力定義情報とを入出力定義情報として管理している。
次に、Webアプリケーションコード生成部420について説明する。Webアプリケーションコード生成部420で生成された情報は、外部メモリ211に記憶される。
リポジトリ定義解析部421は、リポジトリ定義部400からデータベース定義401、アプリケーション定義402、データモデル定義403、入出力定義404、ビジネスプロセス定義405を読み込み解析する。
Webアプリケーションコード生成部422は、外部メモリ211に記憶されているコード生成ルールと、リポジトリ定義解析部421によって解析された内容とを用いて、ソースコード(JSP)を生成する。このソースコードを取り込みソースコードコンパイル部440でコンパイルされたファイルを生成する。そしてソースコードコンパイル部440がコンパイルされたファイルをアプリケーションサーバへデプロイする。デプロイする際に、図4の471〜484の関連ファイルも合わせてデプロイされる。なお、ソースコード、コンパイルされたファイル、デプロイされたデータを総称してプログラムデータともいう。
より詳細には、生成されるソースコードは、大きくサーバ用(例えば、サーバ処理部460)とクライアント用(クライアント処理部470)に分かれている。サーバ用のソースコードをコンパイルしコンパイルされたファイルが生成され、クライアント用のソースコードはコンパイルされずファイルとしてプログラム開発装置101上に置く。このファイルを用いてアプリケーションサーバ105にデプロイする。
また、サーバ用はJavaプログラム(javaは登録商標)が生成され、生成された直後にコンパイルされてclassファイルになり、そのclassファイルがデプロイされる。クライアント用はJSP/JavaScript/CSSが生成され、それらはコンパイルされず、そのままデプロイされる。
デプロイされたモジュールがWebアプリケーションモジュール451である。具体的には、デプロイすると「.war」の拡張子を有するファイルがアプリケーションサーバに配置される。すなわち、Webアプリケーションコード生成部422は、Webアプリケーションに用いられるプログラムを生成するルールを記憶している。例えば、予め決められたルールに従って、図12や図14のソースコードが生成される。特に、図15の画面でデータグリッド(一般にグリッドともいう)が設定され、このデータグリッドの入出力定義が設定されると、481のデータグリッド部品(ハンズオンテーブル)が読み込まれ、このデータグリッド部品を用いたグリッド表示でレイアウト変更(スタイル変更)した際に、Webストレージにスタイル情報を記憶することが可能な図14のソースコードが生成される。
481のデータグリッド部品(ハンズオンテーブル)は、HTML(Web画面)上で、データベースから取得したデータを表形式(グリッドやテーブル)に挿入して表示する部品である。この部品上のセルをクリックして、データを変更したり、表のレイアウト(項目の並び順や列幅など)を変更可能となっている。このデータグリッド部品は、「.js」という拡張子を持つファイルであり、プログラム開発装置101のアプリケーション生成部410で予めセットされている(保持している)。すなわち、グリッド制御部品は、ハードディスク等に記憶している。なお、本実施形態では、グリッド制御部品をオブジェクト制御部品ともいう。
アプリケーションサーバ105は、生成したWebアプリケーション451を配置する、Webアプリケーションサーバである。
Webアプリケーション451は、データグリッド機能を含む、Web用のサーバアプリケーションである。このWebアプリケーション451は、図3のWebアプリケーションコード生成部422で生成されたソースコードや各種ファイルをまとめたファイルである。
Webアプリケーション451はサーバ処理部460とクライアント処理部470に分かれている。サーバ処理部460とクライアント処理部470それぞれについて、図4を用いて説明する。
図4は、Webアプリケーションコード生成部422で生成されたWebアプリケーション451を説明する構成図である。アプリケーションサーバ105にデプロイした状態の図として説明するが、サーバ処理部460とクライアント処理部470は、プログラム自動生成するプログラム開発装置101で生成してできたファイル群(プログラム開発装置101上に存在するファイル)に置き換えることも可能である。
サーバ処理部460は、サーバ側で動作する機能部であり、データ処理部461によりクライアントからの要求を処理する。具体的には、データベースと通信しデータの検索要求や登録要求などに基づき、データの取得や更新を行う。
クライアント処理部470は、実行時にクライアント(アプリケーションクライアント104)のブラウザを介してダウンロードするものであり、クライアント側の処理を実現させるファイル群(スクリプトが記述されたファイルがインクルードされたHTMLファイル)である。具体的には、クライアントから所定のURLが指定されることにより、データグリッド用JSP471に基づくHTML形式のWeb画面、データグリッド用CSS472、データグリッド部品481、データグリッドデフォルトスタイル482、データグリッドデータ制御部483、データグリッドスタイル制御部484をクライアントに送信する。
以下、データグリッド用JSP471、データグリッド用CSS472、データグリッド部品481、データグリッドデフォルトスタイル482、データグリッドデータ制御部483、データグリッドスタイル制御部484について説明する。
データグリッド用JSP471は、グリッドを表示することが可能なHTMLを含むJSPファイルであり、JSPの実行時に動的にデータをHTMLに含め、クライアントにダウンロードさせ、表示させるものである。データグリッド用JSP471には、グリッドの位置を示す情報や、図15で設定した画面部品の情報が記述される。
このデータグリッド用JSP471は、データグリッド用CSS472、データグリッド部品481、データグリッドデフォルトスタイル482、データグリッドデータ制御部483、データグリッドスタイル制御部484をインクルードしたファイルである。
データグリッド用CSS472は、グリッドの色や文字の大きさなどの情報を含んでいるファイルである。
JavaScript(登録商標)ファイル480は、グリッドに関連する制御を行うJavaScript(登録商標)ファイル群である。
データグリッド部品481は、Webアプリケーション用にJavaScriptで書かれた、一覧表示・編集用のコンポーネントである。例えばハンズオンテーブルと呼ばれるグリッド表示するファイルである。
データグリッドデフォルトスタイル482は、データグリッドの初期表示用のスタイル情報のファイルである。このスタイル情報は、アプリケーション生成部410がユーザの設定に応じてグリッド表示に適用させる情報であり、アプリケーション生成部410で生成されるファイルである。データグリッドデフォルトスタイルの例が、図10の1000である。各列の項目名と順番が記述されている。図15でグリッドにデータモデルを設定した際に列名に設定された値に従って、アプリケーション生成部410が生成する。
データグリッドデータ制御部483は、グリッド(表形式のセル)へデータを設定したり、グリッドからデータを取得したりする制御を記載したファイルである。データグリッドデータ制御部483は、データグリッド部品に対して、データを渡したり、データをアプリケーションサーバに送信する役割を担うものである。
データグリッドスタイル制御部484は、Webストレージ491からスタイル情報を取得して、グリッドのスタイル情報に設定したり、ユーザの操作により変更されたグリッドからスタイル情報を取得し、Webストレージ491へスタイル情報を設定(保存)したりする制御ファイルである。スタイル情報には、「行/列の幅/高さの変更」「ある行/列を固定して、他をスクロール」「行/列の非表示、再表示」「行/列の入れ替え」を制御するための情報が含まれている。
ブラウザ490は、Webアプリケーションを利用するエンドユーザが利用するアプリケーションであり、クライアント処理部470で渡されるHTMLファイルを表示するアプリケーションである。
Webストレージ491は、情報を格納しておくための、ブラウザの機能である。アプリケーションクライアント104のハードディスクにグリッドのスタイル情報を格納している。Webストレージに記憶されている情報の一例を示す図は図13である。Webストレージには、項目名と項目の順番(表示順)なども記憶されている。
図5は、Webアプリケーション生成のフローチャートの一例を示す図である。なお、以下のフローチャートの各ステップは、各装置のCPU201が実行する。
ステップS501において、プログラム開発装置101は、ユーザによるWebアプリケーション生成指示を受け付けると、外部メモリ211に記憶されているリポジトリ定義部400のアプリケーション定義402をRAM202に読み込む。具体的には、開発したWebアプリケーション(プロジェクト)を決定するものである。このWebアプリケーション定義に、データモデル定義、入出力定義、ビジネスプロセス定義を設定する。これらの定義は、Webアプリケーション自動生成する設定画面でユーザが任意に設定するものとするが、予め生成された定義を読み込む構成であってもよい。
ステップS502において、プログラム開発装置101は、データモデル定義403を生成する。生成されたデータモデル定義403は、リポジトリ定義部400として登録される。具体的には、データモデル設定画面(不図示)でデータベース上の項目をマッピングする。一般的には、1テーブル1データモデルが作成される。データモデル定義の作成はWebアプリケーションの開発において既知の技術であるため説明を省略する。
ステップS503において、プログラム開発装置101は、入出力定義404を生成する。生成された入出力定義404は、リポジトリ定義部400として登録される。具体的には、図6の入出力定義画面でWeb画面のグリッド定義を行う。
具体的には、まず、画面レイアウト設定画面(図15)上で、画面エディタ上にグリッドの部品1501をドラッグアンドドロップ操作等により配置する。すなわち、グリッドオブジェクトを配置する配置処理の一例を示すものである。
グリッドの部品を配置したタイミングでは、単なる格子状のグリッドが表示されるため、この表にどのデータモデルのどの項目を表示させるかを設定する。この項目の設定も図15の1502からデータモデルをドラッグアンドドロップすることにより設定される。すなわち、配置したグリッドオブジェクトに対して、データモデルを設定するデータモデル設定処理の一例を示すものである。
次に、グリッドが配置された画面の入出力定義を行うため、図6の入出力定義画面に遷移する。
グリッドが配置された画面の場合、入出力定義画面でグリッドに対応する定義情報601が表示される。項目タイプには「Gグループ」、項目コード「G」、名前「顧客マスタ」などが設定される。名前については、画面レイアウト設定画面でグリッドを配置する際に設定されたデータモデルの名前が設定される。
このグリッドで各列の定義情報610が、定義情報601の下に設定される。レベル611によって、定義情報601の配下の定義情報と判定できるようになっている。定義情報601はレベル「1」、定義情報610はレベル「2」。
次に、601の定義情報を選択すると、入出力項目プロパティが表示され、603にはグループタイプ(種別)が「DATAGRID」が設定される。
ここで、グループタイプ(種別)について、より詳細に説明する。
グループタイプ(種別)は、「DATAGRID」のほか、「TABLE」「GRAPH」があり、選択可能となっている。このグループタイプは、入出力定義画面でユーザの操作により変更できる構成となっている。
例えば、図20のように、2000の入出力定義で「DATAGRID」が設定された場合に、画面レイアウト設定画面では、2010のようにデータグリッド形式で表示される。
また、図21のように、2100の入出力定義で「TABLE」が設定された場合に、画面レイアウト設定画面では、2110のようにHTMLのテーブルタグで構成される表形式で表示される。
また、図22のように、2200の入出力定義で「GRAPH」が設定された場合に、画面レイアウト設定画面では、2210のようにグラフ形式で表示される。グラフの縦軸横軸などはデフォルトの設定を用いて、グラフ表示するものとする。
なお、データグリッドは、アプリケーションクライアント104のブラウザ上でレイアウトやデータを変更できる表であり、テーブルは変更できない表である。また、本実施形態ではグラフにおいてもレイアウトやデータを変更できない表となっている。
このように、開発者がグループタイプ(種別)によって、レイアウトやデータの変更ができるものとできないものを区別し、Webストレージへの保存(書き込み)や取得(読み出し)を制御するソースコードを生成し、変更後の状態を再表示させるという技術的に困難な制御を容易にすることができる。
また、604〜606はユーザが任意に設定可能である。604ではWebストレージへのグリッドのスタイル情報の保存タイミングを設定する。すなわち、グリッドが操作され変更されたグリッドのスタイル情報の記憶タイミングを、グリッドを示す定義情報に設定するタイミング設定処理の一例を示すものである。
保存タイミングとは、例えば、変更操作があった場合、画面が切り替わった場合などである。また、保存しないという設定も可能である。なお、保存しないと設定した場合に、グリッドのスタイルを変更しても、他の画面に遷移して戻ってくるとデフォルトのスタイルでグリッドが表示されることになる。
保存するように設定をした場合には、Webストレージに保存する制御を実行するソースコードが出力され、保存しないように設定をした場合には、Webストレージに保存する制御を実行するソースコードが出力されないようにソースコードを生成する。すなわち、記憶タイミングでクライアント装置のWebストレージへスタイル情報を記憶する制御情報を生成する処理の一例を示すものである。
これにより、開発者がグリッドのスタイルの変更を維持して表示させるか、変更を維持しないで表示させるかのWebアプリケーション(プログラム)を容易に生成することができる。
605では、保存単位を設定する。保存単位とは、ブラウザ単位(ログインユーザ単位)、ウィンドウ単位などである。この設定の単位でWebストレージに保存する制御のソースコードが出力される。
606では、破棄タイミングを設定する。破棄タイミングとは、Webストレージに永続的に残す、ブラウザを閉じると破棄する、ウィンドウを閉じると破棄するなどである。ブラウザを閉じると破棄する設定がされた場合には、ブラウザを閉じる操作を検知すると、Webストレージのスタイル情報を削除する制御のソースコードが出力される。
すなわち、Webシステムで用いるクライアント装置で表示する画面の定義である入出力定義を設定する設定処理の一例を示すステップである。
これらの各種設定により、データモデルの項目名を含む定義情報と、グリッドオブジェクトに対応する定義情報とが生成される(定義情報生成処理の一例を示す)。
ステップS504において、プログラム開発装置101は、ビジネスプロセス定義405を生成する。生成されたビジネスプロセス定義405は、リポジトリ定義部400として登録される。具体的には、受け付けたデータの処理の流れを定義したものである。例えば、入力したデータの重複をチェックして、登録するといったロジックを定義したものである。ビジネスプロセル定義についても、Webアプリケーションの開発において既知の技術であるため説明を省略する。
ステップS505において、プログラム開発装置101は、外部メモリ211に記憶されているリポジトリ定義部400のデータベース定義401をRAM202に読み込む。データベース定義401は予め生成されているものとする。
ステップS506において、プログラム開発装置101は、設定・読み込みしたリポジトリ定義部400の各定義・各ファイルから情報を取得し、サーバ処理部のソースコードを生成する。具体的には、「データモデル定義」「ビジネスプロセス定義」に基づき、サーバ処理部460を生成する。
ステップS507において、プログラム開発装置101は、設定・読み込みしたリポジトリ定義部400の各定義・各ファイルから情報を取得し、クライアント処理部のソースコードを生成する。具体的には、「入出力定義」に基づき、クライアント処理部を生成する。入出力定義には、後述する図15の画面設定の情報も含むものとする。
なお、生成されたソースコードにはプログラミング言語が記載されたファイル(例えば、データグリッド用JSP471)に加え、HTML、JSP、JavaScript(登録商標)等のWebアプリケーションの提供に利用されるファイル(例えば、図4の481〜484)も含まれる。
ステップS508において、プログラム開発装置101は、ステップS506にて生成したソースコード(ファイル)をアプリケーションサーバ105に配置(デプロイ)する。これにより、アプリケーションサーバ105上でWebアプリケーションが動作するようになる。デプロイした際のアプリケーションサーバの構成は、図4の460、470である。
次に、ステップS507の処理の詳細な説明をする。
ステップS510では、ソースコードを生成する基となる入出力定義の定義情報を読み出す。そして、入出力定義の定義情報に入出力項目プロパティに設定されているグループタイプが、DATAGRIDの定義情報(例えば、602のレコード)があるか否かを判定する。すなわち、ソースコードを生成する際に、Web画面にグリッドが含まれるか否かを判定する処理である。(設定された入出力定義にグリッドを示す定義があるか否かを判定する判定処理の一例を示すステップである。)グリッドが含まれるWeb画面に対応するWebアプリケーションのソースコードを生成する場合には、ステップS511へ処理を移す。グリッドが含まれないWeb画面に対応するWebアプリケーションのソースコードを生成する場合には、ステップS517へ処理を移す。
なお、本実施形態では、ソースコード生成時にグリッドを示す定義があるか否かを自動的に判定するようにしているが、ユーザがグリッドを示す定義を手動にて指定して、本実施形態でのソースコード生成処理で生成させ(個々にソースコードを生成し)、このソースコードを結合処理にてまとめてWebアプリケーションを作るようにしてもよい。すなわち、本実施形態の状態変更可能なオブジェクト(例えば、グリッド)の定義の判定は、自動手動のいずれでも定義を特定可能な構成と言い換えることが可能である。
ステップS511では、データグリッド用JSP471を作成する。具体的には、入出力定義の定義情報に従って、JSPファイルに、HTML画面上でのグリッドを表示するための位置やインクルードするファイルを設定する。また、図15で設定した画面上の他の部品の定義情報(制御情報)も書き込まれる。
ステップS512では、データグリッド用CSS472を作成する。具体的にはグリッドのヘッダー(1行目)の色、フォント情報が記述されている。本実施形態では、アプリケーション生成部410が予め有している固定値を用いるものとするが、ユーザが任意に設定することも可能である。CSSファイル内に記載されている情報について、CSSファイルは既知の技術であるため詳細な説明を省略する。
ステップS513では、データグリッド部品481を複製する。これは、アプリケーション生成部410が予め有しているデータグリッド部品を用いて、プログラムを生成するためである。なお、他のファイルは、設定された定義情報に基づいて、新たなファイル(例えば、482〜484)を作っているため、ここではデータグリッド部品を複製する。
ステップS514では、データグリッドデフォルトスタイル482を生成する。上述したように、デフォルトスタイルの一例は、図10の1000であり各列の項目名と順番(項目名の並び順が項目名の表示順となる)を示すように記載されている。なお、図15の列名を設定した情報を基にデフォルトスタイルが決定される。グリッドのセルの幅はデータグリッド部品481が自動で決定するものとする。すなわち、データグリッドデフォルトスタイル482を利用した場合には、データグリッド部品481が項目名を表示する際に幅を決定して表示するものとする。
ステップS515では、データグリッドデータ制御部483を生成する。具体的には、入出力定義の定義情報(601、610)に従って、グリッド(表形式のセル)へデータを設定したり、グリッドからデータを取得したりする制御をするソースコードを生成する。データグリッドデータ制御部483は、データグリッド部品に対して、データを渡したり、データをアプリケーションサーバに送信する役割を担うものである。
生成されたソースコードの一例を示す図が、図11の1100である。1101は、グリッドに表示されるデータを示すものであり、予めデータベースより取得したすべてのデータを含むソースコードが出力される。
1102は、グリッドの実体を生成するための制御のソースコードである。「var _container = $(#g);」によりJSPファイルに記述されたグリッドの位置を取得した後、ハンズオン(データグリッド部品)を呼び出して、グリッドの設定(例えば列の順番など)をする制御のソースコードになっている。
1103は、生成したグリッドに1101のデータを表示させるために、ハンズオン(データグリッド部品)に対して1101を読み込むようにする制御のソースコードになっている。
ステップS516では、データグリッドスタイル制御部484を生成する。具体的には、Webストレージ491からスタイル情報を取得して、グリッドのスタイル情報に設定したり、ユーザの操作により変更されたグリッドからスタイル情報を取得し、Webストレージ491へスタイル情報を設定(保存)したりする制御のソースコードを出力する。なお、生成されたソースコードは、Webストレージにレイアウト情報が保存されているか否かを判断するソースコードも含まれる。
生成されたソースコードの一例を示す図が、図12の1200、図14の1400である。
図12の1200は、Webストレージからスタイル情報を読み出し、グリッドにスタイル情報を設定する制御のソースコードを示している。
1201は、Webストレージから操作されたグリッドに対応するスタイル情報(例えば、各列の幅など)を取得する制御のソースコードである。
1202は、1201で取得したスタイル情報をグリッドに設定するため、ハンズオン(データグリッド部品)に対してスタイル情報を設定する(渡す)制御のソースコードである。
1203は、Webストレージを操作する制御の関数であり、ブラウザの関数を用いて、Webストレージの情報の取得要求を行うソースコードである。
図14の1400は、Webストレージにスタイル情報を書き出すソースコードを示している。Webストレージにスタイル情報を書き出すタイミングは、図6の604で設定されたタイミングである。グリッドへの変更操作があったタイミングでスタイル情報を保存する設定がされた場合には、ハンズオン(データグリッド部品)からイベントを取得して実行される。
1401は、設定された保存タイミングで、ハンズオン(データグリッド部品)からグリッドに対応するスタイル情報(例えば、各列の幅など)を取得し、Webストレージに保存する制御のソースコードである。
1402は、Webストレージを操作する制御の関数であり、ブラウザの関数を用いて、Webストレージへ情報を書き込みするソースコードである。
なお、Webストレージのスタイル情報を破棄(削除)する場合のソースコードは、1400に記載されるものとする。
ステップS511〜ステップS516は、設定された入出力定義にグリッドを示す定義があると判定された場合に、グリッドが操作され変更されたグリッドのスタイル情報を取得し、クライアント装置のWebストレージへスタイル情報を記憶する制御情報を含むプログラムを生成する処理の一例を示すステップである。また、クライアント装置において画面でグリッドを表示する場合に、Webストレージにスタイル情報が記憶されているか否かを判定し、Webストレージにスタイル情報が記憶されていると判定された場合に、当該スタイル情報を用いて、前記グリッドのスタイルを変更制御する制御情報を生成する処理の一例を示すステップである。
ステップS517では、通常制御用JSPを生成する。具体的には、グリッドを用いないWebアプリケーションであるため、入出力定義404の定義情報ごとに、JSPファイルに、画面での制御をコントロールするソースコードが出力される。なお、通常制御用JSPには、利用しないJSファイル、例えば、データグリッド部品がインクルードされないようにソースコードを出力することが望ましい。
ステップS518では、通常制御用CSSを生成する。具体的には、HTMLの画面の装飾をするための情報が記述されている。CSSファイル内に記載されている情報について、CSSファイルは既知の技術であるため詳細な説明を省略する。
なお、本実施形態では、データグリッドに関するソースコードの出力について詳細に説明したが、データグリッド以外の定義情報に関するソースコードも出力されることは言うまでもない。例えば、検索キー入力領域に入力された値を検索する定義情報が有る場合には、検索ボタンを押下した際に、入力された値でアプリケーションサーバ105へ検索要求をする制御のソースコードが出力される。
次に図7を用いて、アプリケーションクライアント104のブラウザに、アプリケーションクライアント104で利用するファイルがダウンロードされた際の処理について説明する。なお、以下のフローチャートの各ステップは、アプリケーションクライアント104のCPU201が実行する。
まず、ブラウザを介し、ユーザの操作に応じて指定されたURLに基づき、アプリケーションクライアント104は、アプリケーションサーバ105へアクセスする。アプリケーションサーバ105は、クライアント処理部470を取得して、アプリケーションクライアント104へ生成されたHTMLファイルを送信する。具体的には、アプリケーションサーバ105のクライアント処理部470の471のJSPファイルから、ブラウザで表示可能なHTMLファイルを生成して、472、480のファイル群(481〜484)とともにアプリケーションクライアント104へ送信する。このファイル群を受信して、ブラウザで画面を表示する。この画面表示の際に、データグリッド部品481が読み出されてスタイル変更やデータ変更可能なグリッドが表示される。
ステップS701では、データグリッドデータ制御部483が、グリッドに配置するデータを取得し、データグリッド部品481に渡すことで、グリッドにデータを設定する。設定するデータは、図11の1101のデータを用いるものとするが、ユーザ操作による検索に応じたデータをデータベースから取得して表示してもよいし、初期表示はデータを表示しないようにしてもよい。
ステップS702では、データグリッドスタイル制御部484が、表示されるグリッドに対応するスタイル情報がWebストレージ491に保存されているか否かを判定する。具体的には、グリッドごとにグリッドの識別情報を有しており、このグリッドの識別情報を基に、Webストレージ491を検索して、対応するスタイル情報を特定する。グリッドの識別情報は、グリッド名やグリッドID、画面名など識別できるものであれば何れであってもよい。
Webストレージ491に保存されているスタイル情報の例が図13である。また、1301が、レイアウト情報のうち、列幅に関する情報である。1301の例では、Keyが「_datagridColumnWidth_to_sales_solution_customer_name.normalizedvalue」、Valueが「248」となっている。キーは、画面「to_sales_solution_customer」の「name(名前列)」の「_datagridColumnWidth(列幅)」の情報を示している。
グリッドに対応するスタイル情報が有る場合には、ステップS703へ処理を移す。グリッドに対応するスタイル情報が無い場合には、ステップS705へ処理を移す。
ステップS703では、データグリッドスタイル制御部484が、Webストレージ491から特定(取得した)したスタイル情報を読み込む。
ステップS704では、データグリッドスタイル制御部484は、読み込んだスタイル情報をデータグリッドに設定する。具体的には、データグリッド部品481に取得したスタイル情報を渡し、スタイル情報を変更したグリッドが表示される。変更されたスタイル情報で表示されたグリッドの例が、図9の900である。900は変更後のレイアウト情報を読み出して設定した例であり、具体的には「顧客名」列の幅を広げている。また、「ふりがな」列を先頭に移動している。「顧客ID」列を固定している。「メールアドレス」列を非表示としている。
ステップS705では、データグリッドスタイル制御部484が、データグリッドデフォルトスタイル482を取得して、データグリッドデフォルトスタイル482から取得した情報をデータグリッドに設定する。具体的には、データグリッド部品481に設定する情報を渡す。デフォルトで表示されたグリッドの例が、図8の800である。なお、列幅などは、データグリッド部品481が自動で決定するものとする。
ステップS706では、Web画面への操作イベント待ちループに入る。ここでは特に、グリッドに対する操作イベント待ちのループとする。検知したい操作イベントは、データグリッド部品481に対して登録することで必要なイベントを取得できる。
ステップS707では、データグリッド部品481が、グリッドへの操作イベント(例えば、列幅の変更、列の非表示、列順の変更など)が発生したことを検知して、データグリッドスタイル制御部484へ渡す。これにより所定の操作イベントが発生したか否かを判定する。グリッドへの操作イベントが発生した場合には、ステップS708へ処理を移す。操作イベントが発生していない場合には、ステップS712へ処理を移す。
ステップS708では、データグリッドスタイル制御部484が、操作イベントが、保存タイミング604で設定された保存対象のタイミングかどうか判定する。この保存タイミングはデータグリッドスタイル制御部484に保存されている。例えば、ユーザが列の幅を変更した場合、列の幅情報が保存対象で、かつ、保存タイミングが「操作毎」となっていれば、「YES」と判定され、ステップS709へ処理を移す。
なお、本実施形態では、保存タイミングは変更した場合に保存するように説明しているが、一定間隔でデータグリッドのスタイルを取得して保存させる制御であってもよい。この場合、変更されていない場合でもWebストレージに保存されるが、いずれかのタイミングで変更されたスタイルが取得され、Webストレージに保存される構成であるため、一定間隔でスタイルを取得して保存させる制御についても本実施形態における効果を得られることは言うまでもない。
ステップS709では、データグリッドスタイル制御部484が、操作により変更されたスタイル情報をデータグリッド部品481から取得し、Webストレージ491へスタイル情報をグリッドの識別情報と対応付けて保存する。保存する際には、保存単位604で設定された保存の単位ごとに保存処理を行う。ブラウザ単位の場合、そのブラウザでのスタイル情報として管理する。
ステップS710では、データグリッドスタイル制御部484が、操作イベントが、破棄タイミング606で設定された破棄のタイミングかどうか判定する。この破棄タイミングはデータグリッドスタイル制御部484に保存されている。破棄のタイミングであれば、ステップS711へ処理を移す。破棄のタイミングでなければ、ステップS712へ処理を移す。破棄タイミング606が「NEVER」であれば、破棄しない設定であるため、ステップS712へ処理を移す。
ステップS711では、グリッドの識別情報に基づき、Webストレージ491から削除する。なおグリッド単位で削除してもよいし、画面単位で削除してもよいし、ブラウザ単位で削除してもよい。
ステップS712では、Web画面へのリロードがあったか否かを判定する。Web画面へのリロードがあった場合には、グリッドの再表示がされるため、ステップS701へ処理を戻す。リロードがなかった場合にはイベント待ちルールとなる。なお、リロードは、グリッドへのリロードであってもよい。
イベントが破棄対象でなかった場合や、Webストレージ491への処理が終わった場合は、イベント待ちループに戻る。
なお、本実施形態では、Webアプリケーションを生成し構築するシステムとして説明したが、XML形式でやり取りするWebサービスとして動作するシステムであってもよい。
次に、図16を用いて、本実施形態における、特徴を示す機能構成の一例について説明する。
なお、図16の機能構成は、プログラム開発装置101の機能構成であるが、プログラム開発が可能な装置であればサーバであってもよい。すなわち、クラウド環境で開発できるシステムを利用する場合、サーバの機能構成に置き換えることも可能である。すなわち、Webシステムで実行するプログラムを生成する情報処理装置と言い換えることが可能である。
また、スタイルやデータを変更可能なグリッドとして説明するが、状態を変更可能なオブジェクトであればよく、グリッドに限るものではないことは言うまでもない。
設定部1601は、Webシステムで用いるクライアント装置で表示する画面の定義である入出力定義を設定する機能部である。
判定部1602は、設定された入出力定義にグリッドを示す定義があるか否かを判定する機能部である。言い換えると、状態変更可能なオブジェクトに対応する定義を特定する機能部である。
生成部1603は、設定された入出力定義にグリッドを示す定義があると判定された場合に、前記グリッドが操作され変更されたグリッドのスタイル情報(変更されたオブジェクトの表示状態の情報)を取得し、前記クライアント装置のWebストレージへ当該スタイル情報を記憶する制御情報を含むプログラムを生成する機能部である。
また、クライアント装置において前記画面でグリッドを再表示する場合に、前記Webストレージにスタイル情報(オブジェクトの表示状態の情報)が記憶されているか否かを判定し、Webストレージにスタイル情報(オブジェクトの表示状態の情報)が記憶されていると判定された場合に、当該スタイル情報を用いて、前記グリッドのスタイル(オブジェクトの表示状態)を変更制御する制御情報を生成する機能部である。
また、記憶タイミングで前記クライアント装置のWebストレージへスタイル情報を記憶する制御情報を生成する機能部である。
また、設定された入出力定義にグリッドを示す定義があると判定された場合に、グリッド制御部品(オブジェクト制御部品)を呼び出す制御情報を含め、グリッド制御部品(オブジェクト制御部品)によりグリッドが変更されたことによるスタイル情報(オブジェクトの表示状態の情報)を、グリッド制御部品(オブジェクト制御部品)から取得して、Webストレージに記憶する制御情報を生成する機能部である。
配置部1604は、グリッドオブジェクトを配置する機能部である。
データモデル設定部1605は、配置したグリッドオブジェクトに対して、データモデルを設定する機能部である。
定義情報生成部1606は、設定されたデータモデルの項目名を含む定義情報と、前記グリッドオブジェクトに対応する定義情報とを生成する機能部である。
タイミング設定部1607は、グリッドが操作され変更されたグリッドのスタイル情報の記憶タイミングを、前記グリッドを示す定義情報に設定する機能部である。
記憶部1608は、グリッド制御部品を記憶する機能部である。
以上、本実施形態の詳細な説明を終了する。
次にその他の実施形態について説明する。なお、上述の実施形態と同じ説明については省略する。
図17を用いて、本実施形態の処理について説明する。図17は、他の実施形態におけるWebアプリケーション生成のフローチャートの一例を示す図である。なお、以下のフローチャートの各ステップは、各装置のCPU201が実行する。
ステップS1701は、ステップS503と同様の処理で、プログラム開発装置101は、入出力定義404を生成する。生成された入出力定義404は、リポジトリ定義部400として登録される。本実施形態では、図19の入出力定義画面でWeb画面のグリッド定義を行う。ここで、1801でデータグリッドにおいて、データが変更され、このデータをWebストレージに保存するか否かを設定することができる。「ON」に設定すると、変更されたデータがWebストレージに保存やWebストレージからデータを取得するソースコードが生成される。
「OFF」に設定すると、変更されたデータはWebストレージに保存されず、レイアウトについてWebストレージに保存し、取得するソースコードが生成される。
なお、データの保存タイミングなどは、図6の604の設定と同様とするが、データの保存タイミングは、別に設定させてもよいことは言うまでもない。
ステップS1702は、ステップS515と同様の処理で、データグリッドデータ制御部483を生成する。具体的には、入出力定義の定義情報(601、610)に従って、グリッド(表形式のセル)へデータを設定したり、グリッドからデータを取得したりする制御をするソースコードを生成する。また、1801が「ON」の場合、ユーザの操作により変更されたグリッドから変更されたデータを取得し、Webストレージ491へデータを設定(保存)したり、Webストレージからデータを取得する制御のソースコードを生成する。データの保存は、変更箇所だけでも、データグリッド全体のデータであってもよい。
なお、不図示であるが、Webストレージにデータが保存されているか否かを判断するソースコードも生成されることは言うまでもない。
データグリッドデータ制御部483は、Webストレージへデータを保存する取得する役割のほか、上述の通りデータグリッド部品に対して、データを渡したり、データをアプリケーションサーバに送信する役割を担うものである。
ステップS510で、入出力定義の定義情報に入出力項目プロパティに設定されているグループタイプが、TABLEかGRAPHであると判定された場合(グループが設定されていない場合含む)には、ステップS1703へ処理を移す。
ステップS1703では、グループタイプが、TABLEかGRAPHかを判定する。GRAPHの場合、ステップS1704へ処理を移す。TABLEの場合には、ステップS517へ処理を移す。ステップS517では、テーブルタグを用いて表を生成するものとする。
ステップS1704では、グラフ用JSPを作成する。具体的には、入出力定義の定義情報に従って、JSPファイルに、HTML画面上でのグラフを表示するための位置やインクルードするファイルを設定する。また、図15で設定した画面上の他の部品の定義情報(制御情報)も書き込まれる。
ステップS1705では、グラフ用CSSを作成する。具体的には棒グラフの色、軸のフォント情報が記述されている。本実施形態では、アプリケーション生成部410が予め有している固定値を用いるものとするが、ユーザが任意に設定することも可能である。CSSファイル内に記載されている情報について、CSSファイルは既知の技術であるため詳細な説明を省略する。
ステップS1706では、グラフ部品(不図示)を複製する。これは、アプリケーション生成部410が予め有しているグラフ部品を用いて、プログラムを生成するためである。なお、他のファイルは、設定された定義情報に基づいて、新たなファイル(例えば、482〜484)を作っているため、ここではグラフ部品を複製する。
ステップS1707では、グラフデータ制御部を生成する。具体的には、入出力定義の定義情報に従って、グラフへデータを設定する制御のソースコードを生成する。グラフデータ制御部は、グラフ部品に対して、データを渡したり、グラフの設定(棒グラフ、折れ線グラフ、軸の設定)を渡す役割を担うものである。なお、グラフの設定は入出力定義で設定できるが、デフォルトの設定を用いてもよい。
なお、本実施形態では、データグリッド、グラフ、テーブルを分けて説明したが、入出力定義にデータグリッド、グラフ、テーブルが混在している場合は、それぞれに対するソースコードが生成されることは言うまでもない。
次に、図18を用いて、本実施形態の処理について説明する。図18は、他の実施形態におけるアプリケーションクライアント104のブラウザに、アプリケーションクライアント104で利用するファイルがダウンロードされた際の処理について説明する。なお、以下のフローチャートの各ステップは、アプリケーションクライアント104のCPU201が実行する。
ステップS1801では、データグリッドスタイル制御部484又はデータグリッドデータ制御部が、表示されるグリッドに対応するスタイル情報又はデータがWebストレージ491に保存されているか否かを判定する。具体的には、グリッドごとにグリッドの識別情報を有しており、このグリッドの識別情報を基に、Webストレージ491を検索して、対応するスタイル情報を特定する。グリッドの識別情報は、グリッド名やグリッドID、画面名など識別できるものであれば何れであってもよい。
グリッドに対応するスタイル情報又はデータが有る場合には、ステップS1802へ処理を移す。グリッドに対応するスタイル情報又はデータが無い場合には、ステップS705へ処理を移す。
ステップS1802では、データグリッドスタイル制御部484又はデータグリッドデータ制御部が、Webストレージ491から特定(取得した)したスタイル情報又はデータを読み込む。
ステップS1803では、データグリッドスタイル制御部484は、読み込んだスタイル情報をデータグリッドに設定する。具体的には、データグリッド部品481に取得したスタイル情報を渡し、スタイル情報を変更したグリッドが表示される。変更されたスタイル情報で表示されたグリッドの例が、図9の900である。900は変更後のレイアウト情報を読み出して設定した例であり、具体的には「顧客名」列の幅を広げている。また、「ふりがな」列を先頭に移動している。「顧客ID」列を固定している。「メールアドレス」列を非表示としている。
また、データグリッドデータ制御部は、読み込んだデータをデータグリッドに設定する。Webストレージには、データとデータグリッドの位置を記憶しており、この位置に応じてデータを反映させる要求をデータグリッド部品481にする。
ステップS707、ステップS708、ステップS710の処理における、データグリッドスタイル制御部484は、データグリッドデータ制御部に置き換えるものとし、データの変更については、データグリッドデータ制御部により保存タイミング、破棄タイミングを判定する。
ステップS1804では、データグリッドスタイル制御部484が、操作により変更されたスタイル情報をデータグリッド部品481から取得し、Webストレージ491へスタイル情報をグリッドの識別情報と対応付けて保存する。保存する際には、保存単位604で設定された保存の単位ごとに保存処理を行う。ブラウザ単位の場合、そのブラウザでのスタイル情報として管理する。
また、データグリッドデータ制御部が、操作により変更されたデータをデータグリッド部品481から取得し、Webストレージ491へデータとデータグリッドの位置とをグリッドの識別情報と対応付けて保存する。
ステップS1805では、グリッドの識別情報に基づき、スタイル情報又はデータをWebストレージ491から削除する。なおグリッド単位で削除してもよいし、画面単位で削除してもよいし、ブラウザ単位で削除してもよい。
なお、破棄タイミングは、アプリケーションクライアント104のブラウザを操作しているユーザにより決定させる形態であってもよい。例えば、データグリッド上で右クリックし、メニューを表示させ、メニューからデータグリッドクリア(初期に戻す)をすると、Webストレージからスタイル情報やデータを削除し、リロードする。
本実施形態では、例えば、Webアプリケーションで用いる画面の定義である入出力定義を設定し、設定された入出力定義にグリッドを示す定義があるか否かを判定する(状態変更が可能なオブジェクトを特定する)。グリッド(状態変更が可能なオブジェクト)を示す定義があると判定された場合に、グリッド部品(状態変更が可能なオブジェクト)を含み、グリッド(状態変更が可能なオブジェクト)が操作された場合に、グリッド部品(状態変更が可能なオブジェクト)により変更されたスタイル情報やデータを取得する。この取得したスタイル情報やデータをWebストレージへスタイル情報を書き込む、読み出す制御情報(例えば、プログラムコード)を埋め込んだWebアプリケーションプログラムを生成する。
また、このWebアプリケーションプログラムを用いてWeb画面でグリッド(状態変更が可能なオブジェクト)を表示する際には、グリッド(状態変更が可能なオブジェクト)に適用するためのスタイル情報やデータがWebストレージにあるか否かを判定し、適用するスタイル情報がない場合には、デフォルトのスタイル情報(CSSファイルとは異なる)を読み出し、Webストレージあるいはアプリケーションサーバから取得したデータを用いてグリッド(状態変更が可能なオブジェクト)を表示する。適用するスタイル情報がある場合には、Webストレージから読み出したスタイル情報を用いてグリッド(状態変更が可能なオブジェクト)を表示するように制御する。
さらに、Webアプリケーション生成時の設定で、変更されたグリッド(状態変更が可能なオブジェクト)のスタイルやデータを記憶させるか、記憶(保存)するタイミング、破棄するタイミングを設定させ、開発者が容易にグリッドのスタイル関する制御を行うプログラムを生成することが可能となる。
すなわち、Web画面を表示する際に、変更された状態(スタイルやデータ)でオブジェクト(グリッド)表示できるWeb画面を利用するWebアプリケーションのプログラムを容易に開発することが可能となる。
特に、開発者がグループタイプ(種別)によって、レイアウトやデータの変更ができるものとできないものを区別し、Webストレージへの保存(書き込み)や取得(読み出し)を制御するソースコードを生成し、変更後の状態を再表示させるという技術的に困難な制御を実現するWebアプリケーションのプログラムを容易に開発することができる。
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。