以下、本発明の実施の形態を、図面を参照して詳細に説明する。
図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の構成図を用いて説明する。なお、本実施形態における特徴となる処理の詳細については、図5A〜図5C、図10のフローチャートを用いて説明する。
図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プログラムが生成され、生成された直後にコンパイルされてclassファイルになり、そのclassファイルがデプロイされる。クライアント用はJSP/JavaScript(登録商標)/CSSが生成され、それらはコンパイルされず、そのままデプロイされる。
デプロイされたモジュールがWebアプリケーションモジュール451である。具体的には、デプロイすると「.war」の拡張子を有するファイルがアプリケーションサーバに配置される。すなわち、Webアプリケーションコード生成部422は、Webアプリケーションに用いられるプログラムを生成するルールを記憶している。例えば、予め決められたルールに従って、図13、図14、図16のソースコードが生成される。特に、図15の画面でデータグリッド(一般にグリッドともいう)が設定され、このデータグリッドの入出力定義が設定されると、481のデータグリッド部品(ハンズオンテーブル)が読み込まれ、このデータグリッド部品を用いて計算処理した結果をグリッド表示するソースコードが生成される。
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によりクライアントからの要求を処理する。具体的には、データベースと通信しデータの検索要求や登録要求などに基づき、データの取得や更新を行う。
サーバ処理部460は、リポジトリ定義部400として登録されたビジネスプロセス定義に基づき、生成されるビジネスプロセス処理部461を備えている。
また、リポジトリ定義部400として登録されたデータモデル定義に基づき、生成されるデータモデル処理部462を備えている。
さらに、アプリケーションサーバ105で計算処理を実行する入出力サーバ計算処理部463を有している。この入出力サーバ計算処理部463が、アプリケーションクライアント104の入出力クライアント計算処理部484の要求に応じて、計算処理を実行し、計算結果をアプリケーションクライアント104に出力する。
クライアント処理部470は、実行時にクライアント(アプリケーションクライアント104)のブラウザを介してダウンロードするものであり、クライアント側の処理を実現させるファイル群(スクリプトが記述されたファイルがインクルードされたHTMLファイル)である。具体的には、クライアントから所定のURLが指定されることにより、データグリッド用JSP471に基づくHTML形式のWeb画面、データグリッド用CSS472、データグリッド部品481、入出力クライアント計算処理部484をクライアントに送信する。
以下、データグリッド用JSP471、データグリッド用CSS472、データグリッド部品481、入出力クライアント計算処理部484について説明する。
データグリッド用JSP471は、グリッドを表示することが可能なHTMLを含むJSPファイルであり、JSPの実行時に動的にデータをHTMLに含め、クライアントにダウンロードさせ、表示させるものである。データグリッド用JSP471には、グリッドの位置を示す情報や、図15で設定した画面部品の情報が記述される。
このデータグリッド用JSP471は、データグリッド用CSS472、データグリッド部品481、入出力クライアント計算処理部484をインクルードしたファイルである。
データグリッド用CSS472は、グリッドの色や文字の大きさなどの情報を含んでいるファイルである。
データグリッド部品481は、Webアプリケーション用にJavaScript(登録商標)で書かれた、一覧表示・編集用のコンポーネントである。例えばハンズオンテーブルと呼ばれるグリッド表示するファイルである。
入出力クライアント計算処理部484は、アプリケーションクライアント104で、データグリッドで入力された値を図8の803の設定に基づき計算処理を実行するファイルである。また、アプリケーションサーバ105の入出力サーバ計算処理部463で図8の803の設定に基づき計算処理を実行させる要求をすることが可能なファイルである。入出力クライアント計算処理部484では、クライアントで計算するかサーバで計算するかを判定するJavaScript(登録商標)の記述がされている(図16)。
ブラウザ490は、Webアプリケーションを利用するエンドユーザが利用するアプリケーションであり、クライアント処理部470で渡されるHTMLファイルを表示するアプリケーションである。
図5A、図5B、図5Cは、Webアプリケーション生成のフローチャートの一例を示す図である。なお、以下のフローチャートの各ステップは、各装置のCPU201が実行する。
まず図5Aを用いて、Webアプリケーション生成の全体の処理について説明する。
ステップS501において、プログラム開発装置101は、ユーザによるWebアプリケーション生成指示を受け付けると、外部メモリ211に記憶されているリポジトリ定義部400のアプリケーション定義402をRAM202に読み込む。具体的には、開発したWebアプリケーション(プロジェクト)を決定するものである。このWebアプリケーション定義に、データモデル定義、入出力定義、ビジネスプロセス定義を設定する。これらの定義は、Webアプリケーション自動生成する設定画面でユーザが任意に設定するものとするが、予め生成された定義を読み込む構成であってもよい。
ステップS502において、プログラム開発装置101は、データモデル定義403を生成する。生成されたデータモデル定義403は、リポジトリ定義部400として登録される。具体的には、データモデル設定画面(不図示)でデータベース上の項目をマッピングする。一般的には、1テーブル1データモデルが作成される。データモデル定義の作成はWebアプリケーションの開発において既知の技術であるため説明を省略する。
ステップS503において、プログラム開発装置101は、Webシステムで用いるクライアント装置で表示する画面の定義(入出力定義)を入出力定義画面(設定画面)上で設定し、入出力定義404を生成する。生成された入出力定義404は、リポジトリ定義部400として登録される。図6の入出力定義画面でWeb画面のグリッド定義を行う。
具体的には、まず、画面レイアウト設定画面(図15)上で、画面エディタ上にグリッドの部品1501をドラッグアンドドロップ操作等により配置する。すなわち、グリッドオブジェクトを配置する配置処理の一例を示すものである。
グリッドの部品を配置したタイミングでは、単なる格子状のグリッドが表示されるため、この表にどのデータモデルのどの項目を表示させるかを設定する。この項目の設定も図15の1502からデータモデルをドラッグアンドドロップすることにより設定される。すなわち、配置したグリッドオブジェクトに対して、データモデルを設定するデータモデル設定処理の一例を示すものである。
次に、グリッドが配置された画面の入出力定義を行うため、図6の入出力定義画面に遷移する。
グリッドが配置された画面の場合、入出力定義画面601でグリッドに対応する定義情報602が表示される。項目タイプには「Gグループ」、項目コード「G」、名前「重さ」などが設定される。名前については、画面レイアウト設定画面でグリッドを配置する際に設定されたデータモデルの名前が設定される。
このグリッドで各列の定義情報610が、定義情報602の下に設定される。レベル611によって、定義情報602の配下の定義情報と判定できるようになっている。定義情報602はレベル「1」、定義情報610はレベル「2」。
次に、602の定義情報を選択すると、入出力項目プロパティが表示され、603にはグループタイプ(種別)が「DATAGRID」が設定される。
さらに、図7と図8を用いて、本実施形態の図6の定義情報610のより詳細な設定について説明する。
まず、図7の入出力定義画面(入出力定義・項目一覧701)で、項目を選択する。ここでは702の「kilogram(キログラム)」を選択した例を示している。
702を選択すると、図8の入出力定義・項目編集画面801で、702で選択した項目に対する制御の設定を受け付ける。加工式欄802において、任意の計算式を受け付ける。
802の例では、「ton*1000」の計算式(計算処理情報)が入力されている。803の「ton」は、図7の項目コードを示している。すなわち、他の項目の値に対して1000倍する計算式が入力されていることを示している。
すなわち、Webシステムで用いるクライアント装置で表示する画面の定義であって、グリッドに係る計算処理情報を含む入出力定義を設定する処理の一例を示している。
さらに、入出力定義の設定画面(図9)の901において、クライアント側計算閾値902を設定する。このクライアント側計算閾値は、データグリッドにおいて値が入力された際の影響する項目数を指定するものであり、影響度を示す値である。また、開発者により、任意の値が入力されるものとするが、予め決定された値を用いてもよい。
ステップS504において、プログラム開発装置101は、ビジネスプロセス定義405を生成する。生成されたビジネスプロセス定義405は、リポジトリ定義部400として登録される。具体的には、受け付けたデータの処理の流れを定義したものである。例えば、入力したデータの重複をチェックして、登録するといったロジックを定義したものである。ビジネスプロセル定義についても、Webアプリケーションの開発において既知の技術であるため説明を省略する。
ステップS505において、プログラム開発装置101は、外部メモリ211に記憶されているリポジトリ定義部400のデータベース定義401をRAM202に読み込む。データベース定義401は予め生成されているものとする。
ステップS506において、プログラム開発装置101は、設定・読み込みしたリポジトリ定義部400の各定義・各ファイルから情報を取得し、サーバ処理部のソースコードを生成する。具体的には、「ビジネスプロセス定義」に基づき、ビジネスプロセス処理部461を生成する。
ステップS507において、プログラム開発装置101は、設定・読み込みしたリポジトリ定義部400の各定義・各ファイルから情報を取得し、サーバ処理部のソースコードを生成する。具体的には、「データモデル定義」に基づき、データモデル処理部462を生成する。
ステップS508において、プログラム開発装置101は、設定・読み込みしたリポジトリ定義部400の各定義・各ファイルから情報を取得し、クライアント処理部の入出力処理部480のファイル群を生成する。なお、データグリッド部品481はプログラム開発装置101が予め有している部品をコピーするものとする。
図15の画面設定の情報や図6の入出力定義の情報(入出力定義404)を用いて、ソースコードを生成し、データグリッド用JSP471とデータグリッド用CSS472のファイルが生成される。
なお、生成されたソースコードにはプログラミング言語が記載されたファイル(例えば、データグリッド用JSP471)に加え、HTML、JSP、JavaScript(登録商標)等のWebアプリケーションの提供に利用される他のファイルも含まれる。
ステップS508までの処理により、Webアプリケーションを構築するための基本的なプログラムが生成される。ステップS509からの処理により、本実施形態における特徴的な処理を実行するプログラムが生成されるが、ステップS506〜ステップS510の処理手順に限定されるものではない。
ステップS509において、入出力定義404から情報を取得し、計算場所判定情報1701を生成する。計算場所判定情報1701は、入出力定義の入出力項目毎に、その項目の影響範囲項目を保持するものである。
すなわち、計算処理情報に従って、前記グリッドに値が入力された場合の計算処理に係る影響度を算出する処理の一例を示している。
ステップS509の詳細な処理については、図5Bのフローチャートを用いて後述する。
ステップS510において、入出力定義404から情報と、計算場所判定情報1701に応じて、入出力サーバ計算処理部463、および入出力クライアント計算処理部484のソースコードを生成する。
ステップS510の詳細な処理については、図5Cのフローチャートを用いて後述する。
すなわち、算出された影響度が所定の条件を満たす場合に、前記計算処理情報に対応する計算処理をサーバで実行するプログラムを生成し、当該影響度が所定の条件を満たさない場合に、前記計算処理情報に対応する計算処理をクライアントで実行するプログラムを生成する処理を示している。
ステップS501において、プログラム開発装置101は、生成したソースコード(ファイル)をアプリケーションサーバ105に配置(デプロイ)する。これにより、アプリケーションサーバ105上でWebアプリケーションが動作するようになる。デプロイした際のアプリケーションサーバの構成は、図4の460、470である。
ここで、ソースコード生成処理について具体的に説明する。
ソースコードを生成する基となる入出力定義の定義情報を読み出す。そして、入出力定義の定義情報に入出力項目プロパティに設定されているグリッドタイプが、DATAGRIDの定義情報(例えば、602のレコード)があるか否かを判定する。すなわち、ソースコードを生成する際に、Web画面にグリッドが含まれるか否かを判定する処理である。グリッドが含まれるWeb画面に対応するWebアプリケーションのソースコードを生成する場合には、データグリッド用JSP471を作成する。具体的には、入出力定義の定義情報に従って、JSPファイルに、HTML画面上でのグリッドを表示するための位置やインクルードするファイルを設定する。また、図15で設定した画面上の他の部品の定義情報(制御情報)も書き込まれる。
また、データグリッド用CSS472を作成する。具体的にはグリッドのヘッダー(1行目)の色、フォント情報が記述されている。本実施形態では、アプリケーション生成部410が予め有している固定値を用いるものとするが、ユーザが任意に設定することも可能である。CSSファイル内に記載されている情報について、CSSファイルは既知の技術であるため詳細な説明を省略する。
また、データグリッド部品481を複製する。これは、アプリケーション生成部410が予め有しているデータグリッド部品を用いて、プログラムを生成するためである。なお、他のファイルは、設定された定義情報に基づいて、新たなファイル(例えば、484)を作っているため、ここではデータグリッド部品を複製する。
その他、例えば、データグリッドデフォルトスタイルといったファイルを生成する。デフォルトスタイルには、データグリッドの各列の項目名と順番(項目名の並び順が項目名の表示順となる)を示すように記載されている。なお、図15の列名を設定した情報を基にデフォルトスタイルが決定される。グリッドのセルの幅はデータグリッド部品481が自動で決定するものとする。
次に、ステップS509の入出力計算場所判定情報生成処理の詳細を、図5Bのフローチャートを用いて説明する。
ステップS521では、入出力定義に定義された入出力数、以下の処理を繰り返す。具体的には、図7の701のレコードを繰り返し処理するものとする。
ステップS522では、処理対象の定義にデータグリッドが定義されているか否かを判定する。図6の603で示すように、DATAGRIDで設定されている定義がデータグリッドに関する定義と判定する。
データグリッドであると判定された場合には、ステップS523へ処理を移し、データグリッドでないと判定された場合には、ステップS526へ処理を移す。
ステップS523では、データグリッド内の項目数(定義数)分処理を繰り返す。具体的には、703の数分処理を繰り返す。これは、データグリッドに値が入力された場合に影響するセルがどの程度あるか(影響度)をチェックするための入出力計算場所判定情報を生成するためである。
ステップS524では、対象項目の影響範囲を導出する。具体的には、対象項目で設定された加工式の中で使用している他項目を列挙し、図17の計算場所判定情報1701に格納する。図8の例では、803の「ton」が列挙され、「kilogram」の項目コードに対応して格納される。計算場所判定情報1701では、図面では便宜上Item101などの表記になっているが、「ton」「kilogram」などの表記であってもよいことは言うまでもない。
また、入出力コードの「PAGE1」は、データグリッドを識別するためのものであり、データグリッドごとに管理できるようになっている。
ステップS525では、データグリッド内の項目数、処理を繰り返すと終了する。これにより、項目ごとに、影響する項目の数が特定できる。なお、本実施形態では、影響を受ける項目の項目コードを用いるようにしたが、項目(列)の代わりに、セルのセルIDを用いてもよい。この場合、加工式にセルIDが含まれているものとする。
ステップS526では、入出力数分(定義数分)、処理を繰り返すと終了する。
次に、ステップS510の入出力計算処理部生成処理の詳細を、図5Cのフローチャートを用いて説明する。
ステップS531では、計算場所判定情報1701のレコードのデータを取得し、処理を開始する。レコード数分、処理を繰り返す。
ステップS532では、図9の902で設定され、入出力定義404に記憶されたクライアント側計算閾値を取得する。
ステップS533では、計算場所判定情報1701のレコードから、影響項目数を算出(特定)し、クライアント側計算閾値を超えるか否かを判定する。
具体的には、図17の例を参照すると、1レコード目の「入出力項目コード:Item001」の影響する項目は「Item101」であるため、影響項目数は「1」となる。そして、図9の例では、クライアント側計算閾値は「5」であるため、クライアント側計算閾値を超えないと判定される。また、2レコード目の「入出力項目コード:Item002」の影響する項目は「Item011,Item012,Item013,Item014,Item015,Item016」であるため、影響項目数は「6」となり、クライアント側計算閾値を超えると判定される。
このように、クライアント側計算閾値を影響度条件として、この条件を満たすか否かによって、処理を切り替える。
クライアント側計算閾値を超える(条件を満たす)場合には、ステップS534へ処理を移し、クライアント側計算閾値を超えない(条件を満たさない)場合には、ステップ535へ処理を移す。
すなわち、計算処理情報から、前記グリッドの項目を特定し、特定された項目から影響度を算出する処理を示している。また、影響度が所定の条件を満たすか否かを判定する処理を示している。
クライアント側計算閾値を超える(条件を満たす)場合とは、例えば、複雑な計算処理が発生し、多くの項目に処理が走ることで、クライアントに処理負荷がかかる(処理が遅くなる)場合である。そのため、サーバ側で処理させるため、サーバに計算処理要求を実行できるプログラムをステップS534で生成する。
一方、クライアント側計算閾値を超えない(条件を満たさない)場合とは、例えば、単純な計算処理で、影響する項目が少なく、クライアントに処理負荷がかからない場合である。そのため、クライアント側で処理させるため、クライアントで計算処理を実行できるプログラムをステップS535で生成する。
ステップS534では、影響項目の計算をサーバで行うために、入出力サーバ計算処理部463のソースコードを生成する。生成されたソースコードの例が、図13の1301である。図13の1301は、サーバ側で実行されるプログラムのソースコードである。加工式「ton*1000」を例にしたソースコードとなっている。
ステップS535では、影響項目の計算をクライアントで行うために、入出力クライアント計算処理部484のソースコードを生成する。生成されたソースコードの例が、図14の1401である。加工式「ton*1000」を例にしたソースコードとなっている。
ステップS536では、ステップS534で入出力サーバ計算処理部463を生成した場合には、サーバに要求し、サーバから要求を受け取るソースコードを生成し、入出力クライアント計算処理部484に出力する。また、ステップS535で入出力クライアント計算処理部484を生成した場合には、クライアントで計算させるため図14の1401の関数を呼び出すソースコードを生成し、入出力クライアント計算処理部484に出力する。ステップS537で生成されるソースコードの例が、図16の1601である。
図16の1601のソースコードでは、クライアントで処理する項目を判定し、クライアントで処理する項目と判定されると、クライアントの計算処理(例えば、1401)が呼び出される記述がされている。また、クライアントで処理する項目でない(サーバで処理する項目)と判定されると、サーバへ入力値と項目コードのパラメータを含む要求が出力され、要求の結果(計算結果)を受け付ける処理が記述されている。さらに、クライアント又はサーバでの計算結果をデータグリッドに反映させるため、データグリッド部品481に渡す処理が記述されている。
ステップS537では、計算場所判定情報1701のレコード数、処理を繰り返し、処理を終了する。
次に、アプリケーションクライアント104でデータグリッドに値が入力された際の計算処理について、図10のフローチャートを用いて説明する。
ステップS1001〜ステップS1003、ステップS1007は、アプリケーションクライアント104の処理である。ステップS1004〜ステップS1006は、アプリケーションサーバ105の処理である。
ステップS1001では、ユーザの操作によりデータグリッドへの値の入力を受け付ける。データグリッド部品481より項目コードや入力値が入出力クライアント計算処理部484に渡される。
値の入力前の状態を示す画面例が、図11の1101である。例えば、1102の箇所を選択して、値を入力する。本実施形態では「5」を「55」に変更する例とする。
ステップS1002では、入出力クライアント計算処理部484において、クライアントで計算する項目コードか否かを判定する。クライアントで計算する項目コードであると判定した場合には、ステップS1003へ処理を移す。サーバで計算する項目コードであると判定した場合には、ステップS1004へ処理を移す。
ステップS1003では、計算処理する関数(例えば、1401)を呼び出し、計算を実行する。
ステップS1004では、取得した入力値と項目コードを含む計算要求をアプリケーションサーバ105へ送信する。
ステップS1005では、アプリケーションクライアント104から計算要求を受信し、入出力サーバ計算処理部463が項目コードに対応する関数(例えば、1301)を呼び出し、計算を実行する。
ステップS1006では、入出力サーバ計算処理部463が実行された計算結果を取得し、アプリケーションクライアント104に計算結果を送信する。
ステップS1007では、クライアントで計算した結果又はサーバで計算した結果を入出力クライアント計算処理部484で取得して、データグリッド部品481に受け渡し、入力された項目に関連する項目の値を更新する。
値の入力後に計算が実行された状態を示す画面例が、図12の1201である。例えば、1202の箇所が「55」に変更されたため、他の項目の値も設定された加工式の通りの計算結果が反映される。
また、変更されたレコードについて、識別可能にマーク(1203)が表示される。
本実施形態では、入力された項目によって影響度が変わるため、同じ画面であっても項目によってサーバとクライアントの計算処理を切り替えている。
他の実施形態として、入出力定義の設定(例えば、図9)で、計算処理を実行する装置を統一する設定を設け、統一する設定がなされた場合には、データグリッド全体でサーバで処理する項目が多い場合には、すべての入力値における計算をサーバで行うようにソースコードを生成する。データグリッド全体でクライアントで処理する項目が多い場合には、すべての入力値における計算をクライアントで行うようにソースコードを生成する。
なお、入出力定義の設定(例えば、図9)において、クライアントで計算処理するか、サーバで計算処理するかを自動判定させず、クライアントのみで計算処理をさせる設定を開発者が任意に行うことが可能である。
また、Webアプリケーションを生成し構築するシステムとして説明したが、XML形式でやり取りするWebサービスとして動作するシステムであってもよい。
次に、図18を用いて、本実施形態における、特徴を示す機能構成の一例について説明する。
なお、図18の機能構成は、プログラム開発装置101の機能構成であるが、プログラム開発が可能な装置であればサーバであってもよい。すなわち、クラウド環境で開発できるシステムを利用する場合、サーバの機能構成に置き換えることも可能である。すなわち、Webシステムで実行するプログラムを生成する情報処理装置と言い換えることが可能である。
設定部1601は、Webシステムで用いるクライアント装置で表示する画面の定義であって、グリッドに係る計算処理情報を含む入出力定義を設定する機能部である。また、前記グリッドの項目ごとに計算処理情報を設定する機能部である。
影響度算出部1602は、計算処理情報に従って、前記グリッドに値が入力された場合の計算処理に係る影響度を算出する機能部である。また、前記計算処理情報から、前記グリッドの項目を特定し、特定された項目から影響度を算出する機能部である。また、項目ごとに影響度を算出する。
生成部1603は、算出された影響度が所定の条件を満たす場合に、前記計算処理情報に対応する計算処理をサーバで実行するプログラムを生成し、当該影響度が所定の条件を満たさない場合に、前記計算処理情報に対応する計算処理をクライアントで実行するプログラムを生成する機能部である。
また、前記項目の影響度が所定の条件を満たすか否かによって、項目ごとに計算処理をサーバで実行するプログラムかクライアントで実行するプログラムを生成する機能部である。
また、前記影響度が所定の条件を満たす場合に、前記計算処理情報に対応する計算処理を実行するサーバ実行用のプログラムと、クライアントで値が入力された際に、前記サーバ実行用のプログラムでの計算を実行するためのクライアントプログラムを生成する機能部である。
なお、計算処理情報は、項目の項目識別情報を含む計算式である。
以上、本実施形態の詳細な説明を終了する。
本実施形態によれば、データグリッドに関する処理を効率化するWebシステムのプログラムを容易に開発することができる。
特に、データグリッドの項目に設定された加工式(計算処理情報)により、クライアントで計算処理をするか、サーバで計算処理するかを自動で判定してプログラムを自動生成するため、計算処理の負荷を軽減し、処理を効率化したWebシステムのプログラムを容易に開発することができる。
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。