JP2005070830A - プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体 - Google Patents

プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体 Download PDF

Info

Publication number
JP2005070830A
JP2005070830A JP2003208472A JP2003208472A JP2005070830A JP 2005070830 A JP2005070830 A JP 2005070830A JP 2003208472 A JP2003208472 A JP 2003208472A JP 2003208472 A JP2003208472 A JP 2003208472A JP 2005070830 A JP2005070830 A JP 2005070830A
Authority
JP
Japan
Prior art keywords
program
definition information
data
session
data item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003208472A
Other languages
English (en)
Other versions
JP4488700B2 (ja
Inventor
Hiroyuki Nakagawa
裕之 中川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon IT Solutions Inc
Original Assignee
Canon Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Software Inc filed Critical Canon Software Inc
Priority to JP2003208472A priority Critical patent/JP4488700B2/ja
Publication of JP2005070830A publication Critical patent/JP2005070830A/ja
Application granted granted Critical
Publication of JP4488700B2 publication Critical patent/JP4488700B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】業務仕様の枠組みの中でセッションを維持するために用意するセッション変数を定義しておくだけで、ユーザが手動でプログラミング等を行うことなく、セッション変数を取得・保存するプログラムコードを自動生成できるようにし、Java(登録商標)等のプログラム知識を必要とせず、高品質でスピーディー且つ保守性に優れたウェブアプリケーションの開発を容易にすること。
【解決手段】入出力テーブル109で定義されたウェブアプリケーションの複数ページ間で共有したいデータ項目(セッション変数)の定義情報に基づいて、コード生成部が、「定義されたデータ項目に対応する情報を、ウェブアプリケーションの複数ページ間で共有可能な記憶領域(セッションオブジェクト)に格納する処理を含むプログラム」を生成する構成を特徴とする。
【選択図】 図10

Description

【0001】
【発明の属する技術分野】
本発明は、ウェブアプリケーション開発支援システムに係わり、サーバサイドプログラムが各クライアントにセッションを維持するために用意するセッション変数を自在に活用可能なプログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体に関するものである。
【0002】
【従来の技術】
Web(ウェブ)環境において使用される通信プロトコルHTTPは、セッションレスであるため、ウェブブラウザとアプリケーションサーバとの間の通信は毎回(ページ毎に)切断されている。しかし、基幹システムでは、例えばログインしたユーザ情報をウェブブラウザで表示される複数ページ間で引き継ぐ必要があり、何らかのセッション管理の仕組みを作りこむ必要がある。
【0003】
しかし、こうした仕組みを考慮しながらプログラムを作成すると、生産性の大きな低下は避けられず、また、プログラム作成中での考慮漏れなどによる品質の低下が懸念される。
【0004】
こうした問題に対して、特開2001−325098号公報(特許文献1)に開示された「アプリケーションプログラムの作成方法、データベース操作方法、項目オブジェクト管理方法、モジュール動作制御方法ならびにデータベース操作方法、項目オブジェクト管理方法およびモジュール動作制御方法を実現するためのプログラムを記録したコンピュータ可読な記憶媒体」では、Webアプリケーション開発支援ツールにおいて、ブラウザ(クライアント)からのリクエストによってセッション変数からログイン情報や前の画面の情報を取得し、アクセス権限や画面遷移の正当性を検査するためのセッション変数取得や次回アクセスのためのセッション変数保管といった仕組みをフレームワークとして予め実装し、フレームワーク内部でこれらの問題を解決できるようにしている。
【0005】
【特許文献1】特開2001−325098号公報
【0006】
【発明が解決しようとする課題】
しかしながら、上述したようなフレームワークは、それ以後開発される全てのシステムのベースとなることを目的としたもので、一旦フレームワークをリリースした後は、フレームワークに関して大きな変更を行うことは想定されていない。
【0007】
つまり、上記特許文献1のセッション管理の方法は、セッション変数を含めセッションの維持形態をある程度固定した汎用的なものとなっている。
【0008】
実際のWebアプリケーションにおいては、サーバサイドのプログラムが各クライアントごとにセッションを維持するための形態(セッションオブジェクトに設定されるセッション変数の種類,数等)は、例えばログイン処理以外にも遷移画面間でのデータの受け渡しのためにセッション変数を用いるといった具合に、各Webアプリケーションプログラム毎に異なっており、上述のセッション管理方法で個別に対応するには、適当であるとは言いがたい。
【0009】
セッションオブジェクトは、クライアント毎に作成され、通常メモリに常駐されるため、ログオンしたユーザが増加すると、メモリ消費も増大する。
【0010】
さらに、セッションオブジェクトが保持されている間は、そのセッションオブジェクトに設定されたセッション変数も全てメモリ中に保持されるため、アクセス数の多いウェブアプリケーションの場合、一つ一つのセッション変数は小さくても、セッション変数の数が多くなるとサーバのパフォーマンスを悪化させてしまう。
【0011】
よって、使用されなくなったセッション変数は、速やかにセッションオブジェクトから削除する必要がある。また、セッションのタイムアウトに関しても、ウェブアプリケーションの性質を考慮して設定する必要がある。
【0012】
しかしながら、上記特許文献1では、汎用的なウェブアプリケーションであるため、前の画面の情報を常にセッションオブジェクトに設定する等の処理を行っており、必ずしも必要ではない情報までもセッション変数として設定してしまったり、また、セッションのタイムアウトも、ウェブアプリケーションの性質を考慮して設定する等の細かなセッション管理を行うことができず、ユーザ数が増大した場合、パフォーマンスを悪化させてしまう恐れがあるという問題点があった。
【0013】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、生成されるウェブアプリケーションの複数ページ間で共有したいデータ項目(セッション変数)を定義しておき、該定義情報に基づいて、「定義されたデータ項目に対応する情報を、ウェブアプリケーションの複数ページ間で共有可能な記憶領域(セッションオブジェクト)に格納する処理を含むプログラム」を生成することにより、業務仕様の枠組みの中でセッションを維持するために用意するセッション変数を定義しておくだけで、ユーザが手動でプログラミング等を行うことなく、セッション変数を取得・保存するプログラムコードを自動生成できるので、Java(登録商標)等のプログラム知識を必要とせず、高品質でスピーディー且つ保守性に優れたウェブアプリケーションを容易に開発することができるプログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体を提供することである。
【0014】
【課題を解決するための手段】
本発明の第1の発明は、ウェブアプリケーションプログラムを生成するプログラム生成装置において、前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第1の定義情報(5列のIO区分=「S」のデータ項目)を記憶する記憶手段(図1に示す外部記憶装置に記憶される入出力テーブル109(図5,図6))と、前記記憶手段に記憶される第1の定義情報に基づいて、「前記第1の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成手段(図1に示すコード生成部107,図10のStep1005,図18)とを有することを特徴とする。
【0015】
本発明の第2の発明は、前記記憶手段(図1に示す入出力テーブル109)は、前記第1の定義情報により定義されたデータ項目に対応する情報の前記記憶領域への格納タイミングを定義した第2の定義情報(セッション変数への操作を7列の加工機能=「S」のデータ項目に対応するイベントが発生するタイミングにより定義)をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第2の定義情報に基づいて、「前記第1の定義情報により定義された各データ項目に対応する情報を、前記第2の定義情報により定義された格納タイミングに対応するタイミングで前記記憶領域に格納する処理を含むプログラム」を生成することを特徴とする。
【0016】
本発明の第3の発明は、前記格納タイミングは、前記第1の定義情報により定義された各データ項目毎又は前記複数のデータ項目に対応させて定義可能である(セッション変数への操作を7列の加工機能=「S」のデータ項目の8列の加工式で個別又は複数定義可能)ことを特徴とする。
【0017】
本発明の第4の発明は、前記格納タイミングは、所定のイベントの発生に対応付けて定義されることを特徴とする。
【0018】
本発明の第5の発明は、前記生成手段は、「前記第1の定義情報により定義されたデータ項目に対応する情報を、前記記憶領域から削除する処理を含むプログラム」を生成する(図18のステップS509)ことを特徴とする。
【0019】
本発明の第6の発明は、前記記憶手段は、前記第1の定義情報により定義されたデータ項目に対応する情報の前記記憶領域からの削除タイミングを定義した第3の定義情報(セッション変数への操作を7列の加工機能=「E」のデータ項目に対応するイベントが発生するタイミングにより定義)をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第3の定義情報に基づいて、「前記第1の定義情報により定義されたデータ項目に対応する情報を、前記第3の定義情報により定義された削除タイミングで前記記憶領域から削除する処理を含むプログラム」を生成することを特徴とする。
【0020】
本発明の第7の発明は、前記削除タイミングは、前記第1の定義情報により定義された各データ項目毎又は複数のデータ項目に対応させて定義可能である(セッション変数への操作を7列の加工機能=「E」のデータ項目の8列の加工式で個別又は複数定義可能)ことを特徴とする。
【0021】
本発明の第8の発明は、前記削除タイミングは、所定のイベントの発生タイミングに対応付けて定義されることを特徴とする。
【0022】
本発明の第9の発明は、前記生成手段は、「前記記憶領域を無効化する処理を含むプログラム」を生成する(図18のステップS509)ことを特徴とする。
【0023】
本発明の第10の発明は、前記生成手段は、前記第3の定義情報において前記第1の定義情報により定義された全てのデータ項目に対応する削除タイミングが定義されていた場合(セッション変数への操作を7列の加工機能=「E」のデータ項目の8列の加工式で「All Off」が設定されていた場合)、「前記削除タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする。
【0024】
本発明の第11の発明は、前記記憶手段は、前記記憶領域の無効化タイミングを定義した第4の定義情報(セッション変数への操作を7列の加工機能=「E」のデータ項目の8列の加工式で「All Off」の設定、又は、図示しないタイムアウト時間の設定)をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第4の定義情報に基づいて、「前記第4の定義情報により定義された無効化タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする。
【0025】
本発明の第12の発明は、前記無効化タイミングは、所定のイベントの発生タイミングに対応付けて定義される(セッション変数への操作を7列の加工機能=「E」のデータ項目の8列の加工式で「All Off」の設定)ことを特徴とする。
【0026】
本発明の第13の発明は、前記無効化タイミングは、クライアントからのアクセス間隔に対応付けて定義される(図示しないタイムアウト時間の設定)ことを特徴とする。
【0027】
本発明の第14の発明は、前記記憶領域は、セッションオブジェクトであり、前記第1の定義情報は、前記セッションオブジェクトにセッション変数として設定するデータ項目を定義することを特徴とする。
【0028】
本発明の第15の発明は、生成手段は、「クライアントのクッキー享受の有無を判定し、当該クライアントがクッキーを受け取らない場合には、当該クライアントとのセッションIDをURLパラメータとして当該クライアントに送信する処理を含むプログラム」を生成することを特徴とする。
【0029】
本発明の第16の発明は、前記記憶手段は、前記生成されるウェブアプリケーションで用いる複数のデータ項目のデータベースへの配置を定義した第5の定義情報(5列のIO区分=「F」のデータ項目)をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第5の定義情報に基づいて、「前記第5の定義情報により定義されたデータ項目に対応するデータをデータベースへ格納する処理,該データベースから前記データ項目に対応するデータを取得する処理を含むプログラム」を生成する(図10のステップS1003(図17))ことを特徴とする。
【0030】
本発明の第17の発明は、前記記憶手段は、前記生成されるウェブアプリケーションプログラムにおいて表示項目とする複数のデータ項目を定義した第6の定義情報(5列のIO区分=「D*」のデータ項目)をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第6の定義情報に基づいて、「前記第6の定義情報により定義されたデータ項目に対応するデータをクライアントから入力する処理,前記データ項目に対応するデータをクライアントに出力する処理を含むプログラム」を生成する(図10のステップS1002(図19,図20))ことを特徴とする。
【0031】
本発明の第18の発明は、ウェブアプリケーションプログラムを生成するプログラム生成装置におけるプログラム生成方法において、前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第1の定義情報に基づいて、「前記第1の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成工程(図1に示すコード生成部107,図10のStep1005,図18)とを有することを特徴とする。
【0032】
本発明の第19の発明は、第18の発明に記載されたプログラム生成方法を実行するためのプログラムであることを特徴とする。
【0033】
本発明の第20の発明は、第18の発明に記載されたプログラム生成方法を実行するためのプログラムを記録媒体にコンピュータが読み取り可能に記憶させたことを特徴とする。
【0034】
【発明の実施の形態】
以下、図を参照して本発明のアプリケーション開発システムについて説明する。
【0035】
図1は、本発明の一実施形態を示すプログラム生成装置の構成を示すブロック図である。
【0036】
図において、101は入力装置で、キーボードやマウス等のポインティングデバイス等に相当し、業務仕様情報(テーブル,データ項目のデータベースへの配置とデータ項目間の関係、即ちあるデータがどのような条件のもとにどのようなデータから求められるかを示す情報等)の入力等を行うことが可能である。
【0037】
102は表示装置で、CRT,LCD等で構成され、業務仕様情報の入力画面や、該入力画面から入力された業務仕様情報、生成されたプログラムコード等を表示可能である。104はハードディスク等の外部記憶装置で、入力された業務仕様情報を記憶するための入出力テーブル109や生成されたプログラムコード(JSPコード112,サーブレット(Servlet)コード113,Beanコード114)等を記憶するものである。
【0038】
103は処理装置で、CPU,ROM,RAM等から構成され、CPUがROM,外部記憶装置104又はその他の記録媒体に格納されるプログラムをRAM上にロードして実行することにより実現されるものであり、画面制御部105,仕様解析部106,コード生成部107を備える。
【0039】
画面制御部105は、入力装置101から業務仕様情報を入力するために表示装置102の画面(不図示)を制御する業務仕様記述部116を備える。
【0040】
仕様解析部106は、入力装置101から入力された又は外部記憶装置104から読み出された業務仕様情報に対して字句解析や文法解析を行う。コード生成部107は、仕様解析部106により仕様解析された業務仕様情報に基づいてプログラムコード(JSPコード112,サーブレット(Servlet)コード113,Beanコード114)を生成し、外部記憶装置104に記憶させる。また、コード生成部107は、外部記憶装置104から読み出された業務仕様情報(入出力テーブル109)に基づいて図示しないデータベース(DB)システムに対してデータベースの作成(CREATE)及びテーブルの作成(CREATE TABLE)等を行うものとする。
【0041】
108は全体制御部で、画面制御部105,仕様解析部106,コード生成部107等の各部の制御を行う。
【0042】
図2は、図1に示したコード生成部107によって生成したサーブレット、JSP、およびBeanを利用したウェブアプリケーションシステムの全体構成の一例を示す図である。
【0043】
コード生成部107によって生成されたサーブレット、JSP、およびBeanは、それぞれ実行可能な状態で、サーバ304側のアプリケーションサーバ306上に配置される。
【0044】
このWebアプリケーションシステムは、クライアント301からウェブブラウザ302によって利用される。ウェブブラウザ302からJSP309にアクセスすることにより、HTMLページを生成し、クライアント301側に返送する。そして、ウェブブラウザ302上には、JSP309から送信されるHTMLページ303が表示される。
【0045】
また、Webブラウザ302からのリクエストは、HTTP経由でサーバ304側に送信される。サーバ304にはHTTPサーバ305とアプリケーションサーバ306があり、アプリケーションサーバ306にはサーブレットやJSPの実行環境が含まれている。
【0046】
サーバ304側にリクエストが送信されると、リクエストに応じて該当するサーブレット307が起動される。サーブレット307は、対応するBean308に処理を要求する。さらに、Bean308はDBアクセスオブジェクト310を利用してデータベース311にアクセスし、業務に関する処理やデータ加工などを行い、その処理結果を保持する。DBアクセスオブジェクト310は、業務を分析、設計した結果、作成されるクラスや、再利用可能な既存のクラスである。
【0047】
次に、サーブレット307からJSP309にBean308を渡し、JSP309を呼び出す。JSP309は、Bean308で保持する処理結果を参照して、HTMLページを生成し、クライアント301側に返送する。なお、JSP309から直接Bean308を実行させ、該Beanの処理を参照して、HTMLページを生成し、クライアント301側に返送するように構成してもよい。クライアント301側に返送されたHTMLページ303は、Webブラウザ302上に表示される。
【0048】
サーブレット307は、Webブラウザ302からのリクエストの受け付け、Bean308への処理要求やJSP309の呼び出しという、それぞれの間をつなぎ、制御する役割を持つ。JSP309はHTMLページを出力するための表示に関することを受け持ち、Bean308はデータベース311へのアクセス等の業務に関する処理を受け持つ。Bean308やJSP309を利用せず、サーブレット307のみでWebブラウザ302からのリクエストを処理することは可能であるが、Bean308やJSP309を利用することでそれぞれの役割を明確に分離することで、機能分担を簡潔に把握することができる。
【0049】
図3は、図1に示したコード生成部107によって生成したウェブアプリケーションシステムのアプリケーションサーバを構成するWebサーバのシステム構成を示す図である。
【0050】
Webサーバ400は、ネットワーク404を介して送信される複数のクライアントPC405上で動作するブラウザ等からのリクエストを処理するためのJava(登録商標)サーブレットエンジン(サーブレットコンテナ)401と、Java(登録商標)サーブレットエンジン401を介して与えられるクライアントブラウザからのリクエストを処理するためのメインプログラム(サーブレット)402と、メインプログラム402が各クライアントにセッションを維持するために用意するセッション変数を格納するセッションオブジェクト403で成り立っている。
【0051】
サーブレットのセッション管理機能は、複数のウェブページ間(複数のHTTPプロトコル間)の連続性を維持するメカニズム(セッションメカニズム)として、それぞれのセッションごとに専用の記憶領域を提供しており、セッションが続いている限りデータを保持できるようになっている。このような記憶領域のことをセッションオブジェクトと呼び、上記セッションオブジェクト403はこれに相当する。
【0052】
図4は、本発明のプログラム生成装置における第1の制御処理手順の一例を示すフローチャートであり、図1に示した処理装置103の全体制御部108の動作に対応する。なお、S101〜S106は各ステップを示す。
【0053】
図1に示した処理装置103は、コード生成する業務仕様(入出力テーブル)の入力を行う入力モードと、入力された業務仕様(入出力テーブル)からプログラムコードを生成する生成モードとを有する。
【0054】
まず、全体制御部108が起動されると、ステップS101において、入力装置101からオペレータの指示により選択されたモードが生成モードか入力モードかを判定し、入力モードが選択されたと判定した場合には、ステップS102に進み、全体制御部108は、画面制御部105を起動する。
【0055】
起動された画面制御部105は、ステップS103において、業務仕様記述部116により業務仕様入力部を起動して、図示しない入力画面を表示させ、生成するウェブアプリケーションのアプリケーション名,オペレータからの業務仕様の一形態である入出力テーブル(詳細は後述する図5,図6に示す)への項目入力を受け付け、該入出力テーブル(図5,図6)を外部記憶装置104に格納し、処理を終了する。
【0056】
一方、ステップS101において、入力装置101からオペレータの指示により選択されたモードが生成モードであると判定した場合には、ステップS104に進み、全体制御部108は、オペレータから指示されたアプリケーション名に基づいて、外部記憶装置104に格納された入出力テーブル(業務仕様情報;詳細は後述する図5,図6に示す)を読み出すとともに、仕様解析部106を起動させて、読み出した入出力テーブルの字句解析,文法解析を行い、その情報をRAM又は外部記憶装置104内のワーク領域に格納しておく。これらワーク領域に格納された情報は、以下のステップS105で起動されるコード生成部107によるコード生成処理時に使用される。なお、このワーク領域には、アプリケーション名も格納されるもとする。
【0057】
次に、ステップS105において、全体制御部108は、コード生成部107を起動させて、仕様解析部106で字句解析,文法解析が行われた入出力テーブルに基づいて図示しないデータベースシステムに対するテーブルの登録及びコード生成を行う。
【0058】
そして、ステップS106において、全体制御部108は、生成されたコードを、オペレータの指示により表示装置102に表示したり、ユーザの指示した場所(例えば、外部記憶装置104やネットワークに接続された他の装置の記憶装置)に書き込む出力処理を行う。
【0059】
以下、各処理を具体的に説明する。
【0060】
まず、オペレータによって入力モードが選択された場合について説明する。
【0061】
入力モードの選択により、全体制御部108は業務仕様記述部116を起動する。これにより、表示装置102に図示しない業務仕様入力画面が表示され、オペレータはこの業務仕様入力画面より業務仕様を入力装置101を用いて入力する。
【0062】
以下、図5,図6を参照して、本発明のプログラム生成装置における業務仕様(入出力テーブル)について説明する。
【0063】
図5,図6は、本発明のプログラム生成装置における業務仕様(入出力テーブル)について説明する模式図である。
【0064】
図において、1列は、項番を指定するものである。2列,3列は、データ項目のデータベースの配置とデータ項目間の関係を記述した情報(業務仕様)を表したもので、2列は、入出力のためのデータファイル番号を示したものであり、データファイル番号を構成するフィールドとしてデータ項目枝番(3列)がある。なお、データファイル番号(2列)に「Button」が指定されていた場合、その項目は何らかの処理を伴ったボタンが生成されることを意味する。
【0065】
4列はデータ項目名で、データ項目枝番(3列)に対応するフィールドの名称である。
【0066】
なお、この入出力テーブルは、ファイル項目と表示項目とセッション項目で構成されており、その識別は、5列のIO区分でなされる。その分類を図7に示す。
【0067】
図7に示すように、このIO区分(5列)が「F」の場合には、当該データ項目枝番がファイル項目であることを示す。詳細には、生成されるウェブアプリケーションで用いる複数のデータ項目の定義と前記各データ項目のデータベースへの配置の定義を示す。
【0068】
また、このIO区分(5列)が「S」の場合には、当該データ項目枝番がセッションオブジェクトに登録するデータ(ウェブアプリケーションの複数ページ間で共有したいデータ項目の定義であり、このように定義されたデータ項目を、以下セッション変数と称する)であることを示し、「D*」(「*」は任意の文字列を示す)の場合には、当該データ項目枝番が画面の表示アイテムであることを示す。
【0069】
なお、IO区分=「S」で定義されるセッション変数は、アプリケーション名とクライアントIDの組み合わせにより、そのスコープが決まるため、セッション変数の属性名称は、同一アプリケーションのデータ項目名(ファイル項目または表示項目)の中に存在する必要がある。例えば、入出力テーブルの項番7〜9はセッション変数に割り当てられたデータ項目名であるが、各データ項目名は、同一のアプリケーションのデータ項目(項番1〜3)に存在する。
【0070】
また、画面の表示アイテムであることを示す「D*」には、当該データ項目枝番がテキスト出力用アイテムであることを示す「DO」、テキスト入力用アイテムであることを示す「DI」、ボタンアイテムであることを示す「DB*」等がある。
【0071】
また、画面のボタンアイテムであることを示す「DB*」には、後述する列7の加工機能の指定によりセッション変数に対する様々な処理を指定することができる。
【0072】
さらに、画面のボタンアイテムであることを示す「DB*」には、当該ボタンアイテムが業務処理属性を有しないことを示す「DB」、認証処理属性を有することを示す「DBNinsyo」、データベースへの追加処理属性を有することを示す「DBTsuika」等がある。
【0073】
例えば、項番6に示すように、「DBNinsyo」が指定されて生成されたログインボタンが指示されると、サーブレットは、9列の参照先データファイル番号で示されたデータファイル「Login」内を検索し、参照先データ項目枝番で示された「UsrID」,「PassWd」の双方を用いて認証処理を行う。そして、認証結果を示すメッセージアラート(「認証が成功しました」/「ユーザIDが登録されていません」/「パスワードが違います」等)を生成し、認証結果がOKの場合にのみ次の処理に進むようにする。
【0074】
また、項番30に示すように、「DBTsuika」が指定されて生成されたログインボタンが指示されると、サーブレットは、ウェブブラウザから取得した情報に基づいて、9列の参照先データファイル番号で示されたデータファイル「Ordr」を追加更新する追加処理を行う。そして、追加処理結果がOKの場合にのみ次の処理に進み、追加処理結果がNGの場合にはメッセージアラートを生成するようにする。なお、これらのメッセージを、メッセージテーブル等により定義可能に構成してもよい。
【0075】
6列は、当該データ項目の検索キーの種別を示しており、その分類を図8に示す。
【0076】
図8に示すように、このキー種別(6列)が「K」の場合には、当該データ項目枝番が主キー(プライマリキー)であることを示す。
【0077】
また、このキー種別(6列)が「T」の場合には、当該データ項目枝番に対応する画面の表示アイテムが指示された場合に画面遷移があることを示す。これにより、画面遷移を生起させるボタンの定義と、定義されたボタンが押下されたときの遷移画面(アプリケーションプログラム)名称を、業務仕様の枠組みの中で定義できる。
【0078】
7列は、当該データ項目に対する加工機能の種別を表しており、その分類を図9に示す。
【0079】
図9に示すように、加工機能(7列)が「S」の場合には、セッション変数を操作することを示しており、そのセッション変数の操作内容は8列に記述される。
【0080】
例えば、項番6の場合、左辺の括弧の内容は、値がセットされるセッション変数の組を表し、右辺の括弧は、値をセットする入出力項番の組を示している。この定義で生成されたボタンが指示されると、サーブレットは、項番7,8,9のセッション変数(ユーザID,名前,パスワード)に項番1,2,3の値(ユーザID,名前,パスワード)を投入する。
【0081】
また、項番21の場合のように、加工式が「IF(第1項,第2項,第3項)」のような形式で記載された場合、この定義で生成されたボタンが指示されると、サーブレットは、第1項の演算式の結果が「真」の場合に第2項の演算式を実行し、一方、第1項の演算式の結果が「偽」の場合に第3項の演算式を実行し、セッション変数を操作する。なお、演算式に「−」が記載されているものは、何もしない処理であることを示す。
【0082】
即ち、「個数(項番20)>0」の場合に、商品コード(項番18),商品名(項番19),個数(項番20)をセッション変数(項番22,項番23,項番24)に格納(追加更新)することを示している。
【0083】
即ち、これらは、セッション変数のセッションオブジェクトへの格納(設定)タイミングをボタン指示(イベント発生)に対応付けて定義している。また、上述したように、これらの格納タイミングは、各セッション変数毎(1つでも複数でも可)に定義可能である。
【0084】
また、図9の加工機能分類一覧に示すように、加工機能に「E」が記述されている場合は、当該データ項目の定義により生成されたボタンが指示されると、セッションを明示的に開放処理(セッションオブジェクトから対応するセッション変数を削除する処理)することを示している。そのセッション変数の開放内容は、8列に記述され、開放したいセッション変数の項番を括弧の中に組として記述する形式をとる。ただし、全てのセッションを開放するときに限り「All Off」を記述する。
【0085】
例えば、項番34のログアウトボタンの定義では加工機能(列7)に「E」が指定され、加工式に「All Off」が記述されているので、全てのセッションを開放する定義であることを示している。この定義で生成されたボタン(即ち、ログアウトボタン)が指示されると、生成されるサーブレットは、全てのセッション変数をシステムから開放する。
【0086】
また、項番30の注文決定ボタンの定義では加工機能に「E」が指定され、加工式に開放したいセッション変数を組で定義している。この定義では項番22,23,24のセッションを開放している。
【0087】
即ち、これらは、セッション変数をセッションオブジェクトから削除(開放)するタイミングをボタン指示(イベント発生)に対応付けて定義している。また、上述したように、これらのタイミングは、各セッション変数毎(1つでも複数でも可)に定義可能である。
【0088】
なお、全てのセッション変数を削除(開放)するタイミングが定義されていた場合(加工式に「All Off」が記述されていた場合)、セッションオブジェクト自体を無効化(開放)するタイミング(イベント発生に対応したタイミング)の定義を示すものとする。
【0089】
また、図5,図6には示していないが、セッションオブジェクト自体を無効化(開放)するタイミングを、クライアントからのアクセス間隔に対応付けて定義するように構成してもよい。即ち、クライアントが所定時間アクセスしなかった場合に、タイムアウトとする時間を設定するように構成してもよい。このタイムアウトの時間の設定は、図5,図6に示した入出力テーブルであっても、その他の設定ファイルであってもよい。
【0090】
次に、9列,10列は、参照先データファイル番号,参照先データ項目枝番を示すものであり、IO区分(5列)で「DBNinsyo」が指定されている場合には、認証処理で用いるデータファイル番号,データ項目枝番を参照先データファイル番号(9列),参照先データ項目枝番(10列)に示す。
【0091】
また、IO区分(5列)で「DBTsuika」が指定されている場合には、追加処理で用いるデータファイル番号を参照先データファイル番号(9列)に示す。
【0092】
さらに、IO区分(5列)で「DO」が指定され、且つキー機能(6列)で「T」が指定されている場合には、当該データ項目に対応するデータの値を遷移先画面に渡すパラメータとして渡される。なお、画面遷移時にパラメータを引き渡す場合、セッション変数を用いて実現するのは一般的な手法ではあるが、1つのパラメータをただ1度の画面遷移実現のためにセッション変数を設定することは、セッション変数の本質ではない。そこで、このような場合、セッション変数を明示的に定義することなく、即ちサーバ側にセッション維持をさせることなく、画面間のパラメータの受け渡しすることを定義できるようにした。なお、この時の画面遷移とパラメータの受け渡しは、Java(登録商標)Scriptにより行われる。このように、データ項目の表示アイテム(IO区分=「DO」)に遷移先画面が定義されていた場合に限り、セッション変数を明示的に定義することなく、画面間のデータ受け渡しを行うことができる。従って、複数画面間でセッションを用いたデータ受け渡しと、セッションを用いないデータ受け渡しを自由に使い分けた、ユーザの所望の最適なウェブアプリケーションを容易に生成することができる。
【0093】
11列は遷移先画面IDで、キー機能(6列)で「T」が指定されている場合には、遷移先となる画面IDを示す。
【0094】
12列は画面ID,13列は画面名で、画面のID,画面名を示す。
【0095】
14列は画面属性で、画面が有する業務処理属性を示すものである。この画面属性には、15列の対象データファイル番号で指定されるデータファイル番号を用いてデータベースへの検索処理を行う「Kensaku」がある。なお、当該画面の呼び出し時にパラメータが指定されている場合には、当該パラメータを検索条件として検索処理を行うものとする。また、15列の対象データファイル番号で「Session」が指定されている場合は、データベースへの検索処理のかわりにセッション変数を検索処理する。
【0096】
なお、図5,図6に示した入出力テーブルは、図示しない業務仕様入力部より入力されたアプリケーション名(例えば、「SyouhinTyumon」)に対応付けられて外部記憶装置104に格納されるものとする。
【0097】
また、図5,図6には示していないが、セッションオブジェクトのタイムアウト時間(クライアントのアクセスが一定時間以上行われない場合に、セションを終了するための時間)を図5,図6に示した入出力テーブル又は図示しない設定ファイル等に設定可能に構成してもよい。
【0098】
なお、本実施形態では、図5,図6に示した入出力テーブルを、図示しない入力画面から入力する構成について説明したが、入出力テーブルをテキストファイルやCSVファイル等で構成し、ユーザがテキストエディタやその他のアプリケーションで作成し、外部記憶装置104に格納するように構成してもよい。
【0099】
図10は、本発明のプログラム生成装置におけるプログラム生成処理の概念(処理の構成)を示す模式図である。
【0100】
図5,図6に示した入出力テーブル109の情報のうち、IO区分が「F」のデータファイルから、データベース(DB)の作成とテーブルの作成を行う(Step1001(後述する図16に相当))。
【0101】
例えば、アプリケーション名(図示しないユーザインタフェースから入力される)でデータベースを作成(CREATE)し、該作成したデータベースに対して、図5,図6に示した項番1〜3よりテーブル名を「Login」、テーブル内の各項目を「UsrID」,「Name」,「PassWd」とするテーブルを作成する。
【0102】
さらに、IO区分が「D*」のデータファイルから、JSPとJava(登録商標)Scriptによる表示プログラムコードの生成を行う(Step1002(後述する図19,図20に相当))。詳細には、IO区分が「DI」のデータ項目に対応するデータをクライアントから入力処理,IO区分が「DO」のデータ項目に対応するデータをクライアントに出力処理するための表示プログラムコードの生成を行う。
【0103】
また、IO区分が「F」のデータファイルから、データベース(DB)に対するデータ操作プログラムコードの作成を行う(Step1003(後述する図17に相当))。詳細には、IO区分が「F」のデータ項目に対応するデータのデータベースへの格納処理(新規/追加処理),該データベースから前記データ項目に対応するデータの取得処理(検索処理)のデータ操作プログラムコードの生成を行う。
【0104】
また、IO区分が「DB*」のデータファイルから、業務処理を行うプログラムコードの作成を行う。
【0105】
さらに、IO区分が「DB*」且つ加工機能が「S」又は「E」のデータファイル及びIO区分が「S」のデータファイルから、セッション変数操作を行うプログラムコードの作成を行う。詳細には、IO区分が「DB*」且つ加工機能が「S」のデータ項目(ボタン)の加工式に示されるIO区分が「S」のデータ項目(セッション変数)に対応する情報を、当該ボタンが指示されたタイミング(ボタン押下イベントの発生タイミング)でセッションオブジェクトに格納(設定)する処理、また、IO区分が「DB*」且つ加工機能が「E」のデータ項目(ボタン)の加工式に示されるIO区分が「S」のデータ項目(セッション変数)に対応する情報を、当該ボタンが指示されたタイミング(ボタン押下イベントの発生タイミング)でセッションオブジェクトから削除(開放)する処理(なお、加工式が「All Off」の場合は、セッションオブジェクト自体を無効化(開放)する処理)を行うセッション変数操作プログラムの生成を行う。
【0106】
また、IO区分が「DB*」且つキー機能が「T」のデータファイルから、画面遷移処理を行うプログラムコードの作成を行う。以上説明したStep1004の業務処理プログラム,セッション変数操作プログラム,画面遷移プログラムは、後述する図18に相当する。
【0107】
なお、IO区分が「DO」且つキー機能が「T」の場合に限り、当該データ項目の表示アイテムが指示されたことを示すイベントにより当該データ項目のデータを遷移先画面に渡すパラメータに指定して遷移先画面を呼び出すJava(登録商標)Scriptコードの作成を行う(後述する図20のステップS606,S607に相当)。これにより、セッション変数を使用しない、画面表示プログラム(JSP)と画面遷移アクションプログラム(JSPで呼び出されるJava(登録商標)Script)を自動生成することができる。
【0108】
以上のように、画面とデータベースの項目を対応させ、画面ごとに遷移画面を定義し、複雑な条件判断や付随的なデータの取り扱いについては業務仕様と業務ロジックの定義からプログラムコードを自動生成することができる。
【0109】
なお、上記図10は概念図であり、詳細は後述する図15〜図20のフローチャートに示す。
【0110】
以下、図11〜図14を参照して、図5,図6で示した入出力テーブルに基づいて生成されるウェブアプリケーションプログラムについて具体的且つ詳細に説明する。
【0111】
図11〜図14は、本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【0112】
図5,図6で示した入出力テーブルの項番1〜3は、テーブル名を「Login」、テーブル内の各項目名を「UsrID」,「Name」,「PassWd」とし、「UsrID」をプライマリキーとするテーブルが図示しないデータベースシステムに対して作成することを定義している。
【0113】
また、項番4〜6は、図11に示すようなログイン(Login)画面1100の表示とその処理を制御するコードを生成することを定義している。
【0114】
詳細には、項番4,5は、ユーザID(UsrID),パスワード(PassWd)を入力するためのラベル1101,1102とテキストボックス1103,1104の生成を定義している。
【0115】
また、項番6は、5列のIO区分で「DBNinsyo」が指定されていることより、9列に示すデータベース(「Login」テーブル)のユーザID(UsrID),パスワード(PassWd)を用いた認証処理を行った後、8列の加工式に基づいて項番1,2,3の値を項番7,8,9で定義しているセッション変数オブジェクトに投入し(セッション変数としてセッションオブジェクトに格納し)、図12に示すショッピングカート(Cart)画面1200に遷移する(即ち、認証処理が正常に終了するとユーザ情報をセッション変数に維持して、ショッピングカート画面1200に遷移する)機能を持つ「ログイン」ボタン1105を生成することを定義している。
【0116】
なお、この認証処理は、ログイン画面から入力されたプライマリキー(ユーザID)を用いてデータベース(「Login」テーブル)の検索を行い、データベースに登録されたユーザIDとパスワードを取得し、入力されたユーザIDがデータベースに登録されていない場合や、入力されたパスワードと登録パスワードが等しくない場合には図示しないアラート表示を行い、一方、入力されたパスワードと登録パスワードが等しい場合には、1106に示すような表示を行い、次の処理に移る等の処理とする。
【0117】
また、項番10〜13は、テーブル名を「ShohinM」、テーブル内の各項目名を「ShohinCode」,「ShohinName」,「ShohinTanka」,「ShohinSetsumei」とし、「ShohinCode」をプライマリキーとするテーブルを図示しないデータベースシステムに対して作成することを定義している。
【0118】
項番14〜17は、図12に示すような商品マスタ(ShohinM)画面11204を表示制御するコードを生成することを定義している。この商品マスタ画面1204では、14列の画面属性に「Kensaku」が指定されていることより、15列のデータベース(「ShohinM」テーブル)を検索し(パラメータが指定されるときは、そのパラメータをキーとして検索し)、該検索結果を一覧表示する処理を組み込むことを定義している。
【0119】
詳細には、項番14,15,16,17は、商品コード(ShohinCode),商品名(ShohinName),単価(ShohinTanka),説明(ShohinSetsumei)の検索結果を一覧表示するためのコードを生成することを定義している。
【0120】
また、項番18〜21は、図12に示すようなショッピングカート(Cart)画面1200を表示制御するコードを生成することを定義している。このショッピングカート画面1200では、14列の画面属性に「Kensaku」が指定されていることより、15列に示されるデータベース(「ShohinM」テーブル)を検索し(パラメータが指定されるときは、そのパラメータをキーとして検索し)、該検索結果を一覧表示する処理を組み込むことを定義している。
【0121】
詳細には、項番18,19は、商品コード(ShohinCode),商品名(ShohinName)の検索結果を表示するためのコードを生成することを定義している。また、項番20は、個数(Kosu)を入力するためのテキストボックスを生成することを定義している。さらに、項番21は、8列の加工式に基づいて項番20の値が正のとき、項番18,19,20の値を項番22,23,24で定義しているセッション変数オブジェクトに投入し、注文内容確認画面(kakunin)へ遷移する「注文へ」ボタン1202を生成することを定義している。また、項番18に示す商品コードは、5列のIO区分が「DO」で且つ6列のキー機能が「T」と指定されていることにより、この表示をマウス等で指示することで商品マスタ(ShohinM)画面1204に遷移することが定義されている。なお、この時、商品コードがパラメータとして商品マスタ画面1204に渡される。
【0122】
また、項番25〜30は、図13に示すような注文確認画面(Kakunin)1300と注文確認画面の表示処理を制御するコードを生成することを定義している。この注文確認画面では、14列の画面属性に「Kensaku」が指定されていることより、15列に示されるセッション変数オブジェクト(Session)を検索し(パラメータが指定されるときは、そのパラメータをキーとしてセッションオブジェクトに保持されているセッション変数を検索し)、該検索結果を一覧表示する処理が組み込まれる。
【0123】
詳細には、項番25,26,27は、商品コード(ShohinCode),商品名(ShohinName),個数(Kosu)の検索結果を表示するためのコードを生成することを定義している。また、項番28は、8列の加工式に基づいて項番22,23,24で定義しているセッション変数オブジェクトを開放し(セッション変数をセッションオブジェクトから削除し)、図12に示したショッピングカート(Cart)画面1200へ遷移する「全て取消」ボタン1201を生成することを定義している。さらに、項番29は、ショッピングカート(Cart)画面1200へ遷移する「ショッピングを続ける」ボタン1302を生成することを定義している。また、項番30は、5列のIO区分で「DBTsuika」が指定されていることより、9列に示すデータベース(「Order」テーブル)に対して、この注文確認画面の内容を登録処理した後、8列の加工式に基づいて項番22,23,24で定義しているセッション変数オブジェクトを開放し、図13に示すログアウト(Logout)画面へ遷移する「注文決定」ボタン1303を生成することを定義している。
【0124】
また、項目31〜33は、テーブル名を「Order」、テーブル内の各項目名を「UsrID」,「ShohinCode」,「Kosu」とし、「UsrID」をプライマリキーとするテーブルをデータベースに作成することを定義している。
【0125】
さらに、項番34,35は、図14に示すようなログアウト(Logout)画面1400を生成することを定義している。
【0126】
詳細には、項番34は、加工式(All Off)に基づいて全てのセッション変数オブジェクトを開放し(セッションオブジェクト自体を無効化し)、図11に示したログイン画面(Login)1100へ遷移する「ログアウト」ボタン1401を生成することを定義している。
【0127】
また、項番35は、図12に示したショッピングカート画面(Cart)1200へ遷移する「ショッピング」ボタン1402を生成することを定義している。
【0128】
以上説明したように、図5,図6で示した入出力テーブルに基づいて生成されるアプリケーションは、ウェブブラウザから図11に示したログイン画面1100に対応するJSPが起動されると、ログイン画面1100がクライアントのウェブブラウザ上に表示される。
【0129】
次に、表示されたログイン画面1100に対し、ユーザIDとパスワードの入力が行われ、ログインボタン1105が指示されると、サーブレットへデータが転送され、サーブレットにより認証処理が実行され、認証が成功するとその旨が通知され(図11に示す通知画面1106)、遷移先画面である図12に示したショッピングカート画面1200に対応するJSPが起動される。すると、ショッピングカート画面がクライアントのウェブブラウザ上に表示される。このショッピングカート画面では表示されている商品の数量欄に数値を入力し、「注文へ」ボタン1202を指示することにより、商品の購入予約が出来る。
【0130】
次に、上記ショッピングカート画面1200において、商品コード1201が指示されると、Java(登録商標)Scriptにより、商品マスタ画面1204に対応するJSPが別ウィンドウで起動される(指示された商品コードをパラメータとして起動される)。すると、商品マスタ画面がクライアントのウェブブラウザ上に表示される。この処理では、セッション変数を使用することなしに、指示された商品コードを商品マスタ画面1204に渡し、該商品コードをキーとした商品マスタの詳細を表示することができる。例えば、商品マスタ画面1204の例では、商品コード「001」で商品マスタを検索した結果の明細画面が表示される。
【0131】
また、表示されたショッピングカート画面1200において、「注文」ボタン1202が指示されると、サーブレットへデータが転送され、サーブレットにより、注文内容となる「商品コード」,「商品名」,「個数」のデータをセッション変数に格納する処理が実行され、遷移先画面である図13に示した注文内容確認画面1300に対応するJSPが起動される。すると、注文内容確認画面1300がクライアントのウェブブラウザ上に表示される。
【0132】
図13に示した注文内容確認画面1300では、図12のショッピングカート画面1200で入力された内容をセッション変数に基づき表示される。
【0133】
次に、表示された注文内容確認画面1300において、「全て取消」ボタン1301が指示されると、サーブレットへデータが転送され、サーブレットにより、「商品コード」「商品名」「個数」のセッション変数を開放する処理が実行され、遷移先画面であるショッピングカート画面1200に対応するJSPが起動される。すると、図12に示したショッピングカート画面1200がクライアントのウェブブラウザ上に表示される。
【0134】
また、注文内容確認画面1300において、「ショッピングを続ける」ボタン1302が指示されると、サーブレットへデータが転送され、サーブレットにより、遷移先画面であるショッピングカート画面に対応するJSPが起動される。すると、ショッピングカート画面1200がクライアントのウェブブラウザ上に表示される。
【0135】
さらに、注文内容確認画面1300において、「注文決定」ボタン1303が指示されると、サーブレットへデータが転送され、サーブレットにより、転送データに基づくデータベースのテーブルOrderに対する追加更新処理が実行され、追加更新処理が成功すると、「商品コード」「商品名」「個数」のセッション変数を開放する処理が実行され、遷移先画面であるログアウト画面1400に対応するJSPが起動される。すると、図14に示すログアウト画面1400がクライアントのウェブブラウザ上に表示される。
【0136】
次に、表示されたログアウト画面1400において、「ログアウト」ボタン1401が指示されると、サーブレットへデータが転送され、サーブレットにより、全セッション変数を開放する処理が実行され、遷移先画面であるログイン画面に対応するJSPが起動される。すると、図11に示したログイン画面1100がクライアントのウェブブラウザ上に表示される。
【0137】
また、ログアウト画面1400において、「ショッピング」ボタン1402が指示されると、サーブレットへデータが転送され、サーブレットにより、遷移先画面であるショッピングカート画面に対応するJSPが起動される。すると、ショッピングカート画面1200がクライアントのウェブブラウザ上に表示される。
【0138】
以上が、図5,図6に示した入出力テーブルに基づいて生成されるアプリケーションの基本的な流れである。
【0139】
以下、図15〜図20のフローチャートを参照して、図1に示したコード生成部107によるコード生成処理について説明する。
【0140】
図15は、本発明の第2の制御処理手順の一例を示すフローチャートであり、図1に示したコード生成部107によるコード生成処理に対応する。なお、S201〜S204は各ステップを示す。
【0141】
まず、ステップS201において、入出力テーブル109に格納された業務仕様情報に基づいて、図示しないDBシステムにアクセスし、データベース(DB)を作成する(詳細は図16に示す)。
【0142】
次に、ステップS202において、入力データチェック処理及びステップS201で作成したデータベースに対するデータ操作処理を行うBeanコード114を、入出力テーブル109に基づいて生成する(詳細は図17に示す)。
【0143】
次に、ステップS203において、入出力テーブル109に基づいて、ウェブブラウザからの入力データを取得してウェブアプリケーション全体を制御するサーブレットコード113を生成する(詳細は図18に示す)。
【0144】
次に、ステップS204において、ウェブブラウザへの表示を制御する(図11〜図14に示した各画面のウェブブラウザへの出力を制御する)JSPコード112を生成し(詳細は図19,図20に示す)、処理を終了して図4のフローチャートにリターンする。
【0145】
図16は、本発明の第3の制御処理手順の一例を示すフローチャートであり、図15のステップS201に示したDB作成処理に対応する。なお、S301〜S305は各ステップを示す。
【0146】
まず、ステップS301において、図示しないDBシステムに対して、ワーク領域からアプリケーション名を取得し、該アプリケーション名をデータベース名とするDBを作成するコマンドを発行する。次に、ステップS302において、ステップS301で作成したDBに接続する。
【0147】
そして、ステップS303において、ワーク領域から入出力テーブル109で定義されたIO区分(5列)=「F」のデータファイル番号を1つ取得し、該データファイル番号をテーブル名、該データファイル番号内のデータ項目枝番をテーブル内の項目名としたテーブルを作成するSQL文を生成し、該SQL文のクエリを実行する。
【0148】
次に、ステップS304において、IO区分(5列)=「F」の全データファイルについてステップS303の処理が終了したか否かを判定し、まだ終了していない場合には、ステップS303に戻り、一方、既に終了したと判定した場合には、ステップS305に進む。
【0149】
ステップS305において、データベースから切断する処理を行い、処理を終了して図15のフローチャートにリターンする。
【0150】
図17は、本発明の第4の制御処理手順の一例を示すフローチャートであり、図15のステップS202に示した業務処理用Bean生成処理に対応する。なお、S401〜S405は各ステップを示す。
【0151】
まず、ステップS401において、ワーク領域から入出力テーブル109で定義されたIO区分(5列)=「F」のデータファイル番号を1つ取得し、該データファイル番号に対応する業務処理用のBeanファイルを生成する。なお、Beanファイル名は、例えば、アプリケーション名にデータファイル番号及び文字列“Bean”を付加し拡張子を“java(登録商標)”としたBeanファイルとする。また、このとき、作成したBeanファイル内の先頭に、「パッケージ名(例えば、アプリケーション名にデータファイル番号及び文字列“Bean”を付加したもの)の宣言、「java(登録商標).sql」パッケージのインポート、Java(登録商標)Beansを利用するために必要なインタフェースの実装等を行うコード」を格納しておく。
【0152】
次に、ステップS402において、検索処理コードを生成する。詳細には、「DBに接続し(この時、セッション変数内に格納されたユーザID(UsrID),パスワード(PassWD)を用いるように構成してもよい)、指定されたパラメータを検索条件として当該データファイル番号に対応するテーブルに対する検索処理を行うためのSQL文のクエリを実行し、検索結果を返し、DBから切断するコード(検索メソッド)」を当該Beanファイル内に生成する。
【0153】
次に、ステップS403において、新規/追加処理コードを生成する。詳細には、「DBに接続し、指定されたパラメータを新規追加データとして当該データファイル番号に対応するテーブルに対して追加処理を行うためのSQL文のクエリを実行し、新規追加結果を返し、DBから切断するコード(追加メソッド)」を当該Beanファイル内に生成する。
【0154】
次に、ステップS404において、削除処理コードを生成する。詳細には、「DBに接続し、指定されたパラメータにより削除対象レコードを指定して削除処理を行うためのSQL文のクエリを実行し、削除結果を返し、DBから切断するコード(削除メソッド)」を当該Beanファイル内に生成する。
【0155】
そして、ステップS405において、IO区分(5列)=「F」の全データファイルについてステップS401〜S405の処理が終了したか否かを判定し、まだ終了していない場合には、ステップS401に戻り、一方、既に終了したと判定した場合には、処理を終了して図15のフローチャートにリターンする。
【0156】
なお、上記ステップS402,S403,S404により当該Beanファイル内に生成されるコードには、「ドライバクラスをロードする処理、データベースに接続する処理、SQLステートメントオブジェクトを生成する処理、サーブレットから渡されたデータに基づくSQL文のクエリを実行して結果を取得する処理、結果をセットする処理、SQLステートメントオブジェクトとデータベース接続オブジェクトをクローズする処理を行うためのコード」等が記載されているものとする。
【0157】
また、ステップS402,S403,S404で生成する検索処理コード,新規/追加処理コード,削除処理コードは、Beanファイル内で定義される業務処理用のクラス(例えば、クラス名:データファイル名に文字列“DBAccess”を追加)内の検索メソッド,認証メソッド,追加メソッド,削除メソッドとして生成するものとする。
【0158】
さらに、図17のフローチャートでは、入出力テーブルで定義されたIO区分の「F」の全データファイルに対して、検索処理コード,新規追加処理コード,削除処理コードを生成する構成について示したが、入出力テーブルで定義されている処理コードのみ生成するように構成してもよい。
【0159】
例えば、図5,図6に示した入出力テーブルでは、項番6では、IO区分(5列)=「DBNinsyo」,参照先データファイル番号(9列)=「Login」と定義されているため、データベースの「Login」テーブルに対する検索処理コードを生成する。また、項番14〜17では、画面属性(14列)=「Kensaku」、対象データファイル番号(15列)=「ShohinM」と定義されているため、データベースの「ShohinM」テーブルに対する検索処理コードを生成する。さらに、項番30では、IO区分(5列)=「DBTsuika」,参照先データファイル番号(9列)=「Order」と定義されているため、データベースの「Order」テーブルに対する追加処理コードを生成するように構成してもよい。
【0160】
図18は、本発明の第5の制御処理手順の一例を示すフローチャートであり、図13のステップS203に示したサーブレット生成処理に対応する。なお、S501〜S513は各ステップを示す。
【0161】
まず、ステップS501において、ワーク領域から入出力テーブル109で定義されたIO区分(5列)=「D*」のデータファイル番号を1つ取得し、当該データファイル番号にボタンに対応するデータ項目(IO区分=「DB*」)があるか否かを判定し、ボタンに対応するデータ項目がないと判定した場合には、そのままステップS513に進む。
【0162】
一方、ステップS501で、当該データファイル番号にボタンに対応するデータ項目があると判定した場合には、ステップS502において、サーブレットファイルを生成する。なお、サーブレットファイル名は、例えば、アプリケーション名にデータファイル番号と文字列“Servlet”を付加し拡張子を“java(登録商標)”としたサーブレットファイルとする。なお、このとき、サーブレットファイル内の先頭に、「使用するBeanパッケージ及びその他必要なパッケージをインポートするコード、アクセス修飾子,クラスの定義,クラス(例えば、HttpServletクラス)の継承、ウェブブラウザ(HTMLフォーム)から送信されたパラメータ(送信情報)を受け取るためのメソッドを示すコード」を格納しておく。
【0163】
次に、ステップS503において、「ウェブブラウザからの送信情報(入力情報)を受け取るコード」を当該サーブレットファイル内に生成する。
【0164】
次に、ステップS504において、当該データファイル番号内のボタンに対応するデータ項目を1つ取得し、当該ボタンに対応するデータ項目が業務処理を伴うボタン(IO区分(5列)が「DBNinsyo」,「DBKensaku」,「DBTsuika」,「DBSakuzyo」)か否かを判定し、業務処理を伴うボタンでないと判定した場合には、ステップS506に進む。
【0165】
一方、ステップS504で、業務処理を伴うボタンであると判定した場合には、ステップS505において、「当該ボタンが指示された場合に、対応する業務処理を実行するコード」を当該サーブレットファイル内に生成する。
【0166】
詳細には、当該ボタンが「DBNinsyo」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータのうちプライマリキーとなるデータを検索条件として、参照先データファイル番号(9列)で指定されたデータファイルに対応する検索メソッドを実行し、検索結果と参照先データ項目枝番(10列)の指定に対応するウェブブラウザからの取得データとの比較等により認証処理を行い、認証が失敗した場合には処理を終了するコード」を当該サーブレットファイル内に生成する。
【0167】
また、当該ボタンが「DBKensaku」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータを検索条件として、参照先データファイル番号(9列)で指定されたデータファイルに対応する検索メソッドを実行して検索結果を取得するコード」を生成する。
【0168】
また、当該ボタンが「DBTsuika」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータを追加データとして、参照先データファイル番号(9列)で指定されたデータファイルに対応する追加メソッドを実行するコード」を生成する。
【0169】
また、当該ボタンが「DBSakuzyo」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータを削除対象データとして、参照先データファイル番号(9列)で指定されたデータファイルに対応する削除メソッドを実行するコード」を生成する。
【0170】
次に、ステップS506において、当該ボタンに対応するデータ項目の加工機能=「S」か否かを判定し、「S」でないと判定した場合には、ステップS508に進む。
【0171】
一方、ステップS506で、当該ボタンに対応するデータ項目の加工機能(7列)=「S」であると判定した場合には、ステップS507において、図示しないが「セッションオブジェクトを取得(存在しない場合は生成)するコード」をサーブレットファイル内に生成し(不図示)、加工式(8列)の定義に基づいて「当該ボタンが指示された場合に、セッションオブジェクトにセッション変数(加工式での指定に基づくセッション変数)を追加更新するコード」をサーブレットファイル内に生成する。
【0172】
なお、セッションオブジェクトの取得には、getSession()メソッドをクリエイトモードで用いるものとする。また、セッションオブジェクトへのセッション変数の設定は、setAttribute()メソッドを用いるものとする。さらに、セッションオブジェクトからセッション変数を参照するには、getAttribute()メソッドを用いるものとする。
【0173】
次に、ステップS508において、当該ボタンに対応するデータ項目の加工機能=「E」か否かを判定し、加工機能=「E」でないと判定した場合には、ステップS510に進む。
【0174】
一方、ステップS508で、当該ボタンに対応するデータ項目の加工機能(7列)=「E」であると判定した場合には、ステップS509において、図示しないが「セッションオブジェクトを取得するコード」をサーブレットファイル内に生成し(不図示)、加工式(8列)の定義に基づいて「当該ボタンが指示された場合に、セッションオブジェクト内の属性(加工式で指定されたセッション変数に対応する属性)を開放(削除)するコード」を当該サーブレットファイル内に生成する。なお、加工式に「All Off」が指定されていたい場合には、当該ユーザのセッションオブジェクトそのものを開放(無効化)するコードを生成するものとする。
【0175】
なお、セッションオブジェクトの取得には、getSession()メソッドをクリエイトモードで用いるものとする。また、セッションオブジェクトからセッション変数を削除するには、removeAttribute()メソッドを用いるものとする。さらに、セッションオブジェクト自体を無効化するには、invalidate()メソッドを用いるものとする。
【0176】
また、加工機能にその他の演算処理を示す「G」を設け、例えば、当該ボタンに対応するデータ項目の加工機能(7列)=「G」であると判定した場合には、加工式(8列)の定義に基づいて「当該ボタンが指示された場合に、加工式で指定された演算処理を実行するコード」を当該サーブレットファイル内に生成するように構成してもよい。
【0177】
次に、ステップS510において、当該ボタンに対応するデータ項目のキー種別(6列)=「T」か否かを判定し、キー種別=「T」でないと判定した場合には、ステップS512に進む。
【0178】
一方、ステップS510で、当該ボタンに対応するデータ項目のキー種別=「T」であると判定した場合には、ステップS511において、遷移先画面ID(11列)の指示に基づいて「当該ボタンが指示された場合に、遷移先画面に対応するJSPを呼び出すコード」を当該サーブレットファイル内に生成する。
【0179】
次に、ステップS512において、当該データファイル内の全ボタンについてステップS504〜S511の処理が終了したか否かを判定し、まだ終了していない場合には、ステップS504に戻り、一方、既に終了したと判定した場合には、ステップS513に進む。
【0180】
ステップS513では、IO区分(5列)=「D*」の全データファイルについてステップS501〜S512の処理が終了したか否かを判定し、まだ終了していない場合には、ステップS501に戻り、一方、既に終了したと判定した場合には、処理を終了して図15のフローチャートにリターンする。
【0181】
なお、図5,図6に示した入出力テーブル又は図示しない設定ファイルに、セッションオブジェクトのタイムアウト時間が設定されていた場合には、サーブレットファイル内に、「指定されたタイムアウト時間でセッションオブジェクトをタイムアウトするように設定する処理を行うコード」を生成するように構成してもよい。
【0182】
図19,図20は、本発明の第6の制御処理手順の一例を示すフローチャートであり、図15のステップS204に示したJSP生成処理に対応する。なお、S601〜S615は各ステップを示す。
【0183】
まず、ステップS601において、ワーク領域から入出力テーブル109で定義されたIO区分(5列)=「D*」のデータファイル番号を1つ取得し、当該データファイルに対応するJSPファイルを生成する。このJSPファイルのファイル名は、例えば、アプリケーション名にデータファイル名を付加し拡張子を“jsp”とする。なお、このJSPファイル内には、「JSPページのMIMEタイプとエンコードするキャラクタセットを設定するコード、当該データファイルに対応するBeanをインスタンスするコード、htmlのタグである“<html><head><title>アプリケーション名</title>”等」を生成し格納しておくものとする。
【0184】
次に、ステップS602において、当該データファイル番号にIO区分(5列)=「DO」且つキー種別(6列)=「T」であるデータ項目があるか否かを判定し、ないと判定した場合には、ステップS604に進む。
【0185】
一方、ステップS602で、当該データファイル番号にIO区分(5列)=「DO」且つキー種別(6列)=「T」であるデータ項目があると判定した場合には、ステップS603において、「新たなウィンドウを表示し、該ウィンドウから遷移先画面に対応するJSPにアクセスするための画面遷移用Java(登録商標)Scriptコード」を当該JSPファイル内に生成する。なお、このとき、遷移先の画面には、当該データ項目の値をパラメータとして遷移先画面に渡すようにプログラムコードを生成するものとする。
【0186】
次に、htmlのタグである“</head><body>”等を格納した後、ステップS604において、当該データファイル番号の画面属性(14列)に「Kensaku」が指定されているかを判定し、指定されていないと判定した場合には、ステップS606に進む。
【0187】
一方、ステップS604で、当該データファイル番号の画面属性(14列)に「Kensaku」が指定されていると判定した場合には、ステップS605において、「Beanを用いて検索用処理を実行し、結果を取得するコード」を生成し、ステップS606に進む。
【0188】
次に、ステップS606おいて、当該データファイル番号内からデータ項目を1つ取り出し、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)=「T」であるか否かを判定し、IO区分=「DO」且つキー種別=「T」でないと判定した場合には、ステップS608に進む。
【0189】
一方、ステップS606で、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)=「T」と判定した場合には、ステップS607において、「当該データ項目を表示する出力アイテムを生成するコード」を当該JSPファイル内に生成する。但し、このコードは、当該出力アイテムが指示された場合に、当該データ項目の値をパラメータとし、遷移先画面ID(11列)を指定して上記画面遷移用Java(登録商標)Scriptを起動するように生成する。
【0190】
次に、ステップS608において、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)≠「T」であるか否かを判定し、IO区分=「DO」且つキー種別≠「T」でないと判定した場合には、ステップS610に進む。
【0191】
一方、ステップS608で、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)≠「T」であると判定した場合には、ステップS609において、「当該データ項目を表示する表示出力アイテムを生成するコード」を当該JSPファイル内に生成する。
【0192】
次に、ステップS610において、当該データ項目のIO区分(5列)=「DI」であるか否かを判定し、IO区分=「DI」でないと判定した場合には、ステップS612に進む。
【0193】
一方、ステップS610で、当該データ項目のIO区分(5列)=「DI」であると判定した場合には、ステップS611において、「当該データ項目を入力するためのテキストボックスを生成するコード」を当該JSPファイル内に生成する。
【0194】
次に、ステップS612において、当該データ項目のIO区分(5列)=「DB*」であるか否かを判定し、IO区分=「DB*」でないと判定した場合には、ステップS614に進む。
【0195】
一方、ステップS612で、当該データ項目のIO区分(5列)=「DB*」であると判定した場合には、ステップS613において、「当該データ項目に対応するボタンを生成するコード」をJSPファイル内に生成する。但し、当該ボタンが指示された場合に、対応するサーブレットを起動し、当該フォームのデータをサーブレットに送信するようにコードを生成する。
【0196】
次に、ステップS614おいて、当該データファイル内の全データ項目について、ステップS606〜S613の処理が終了したか否かを判定し、終了していないと判定した場合には、ステップS606に戻る。
【0197】
一方、ステップS614で、当該データファイル内の全データ項目について、ステップS606〜S613の処理が終了したと判定した場合には、htmlのタグである“</body></html>”等を当該JSPファイル内に格納した後、ステップS615に進む。
【0198】
次に、ステップS615おいて、IO区分(5列)=「D*」の全データファイルについて、ステップS601〜S614の処理が終了したか否かを判定し、終了していないと判定した場合には、ステップS601に戻る。
【0199】
一方、ステップS615で、ステップS606〜S613の処理が終了したと判定した場合には、処理を終了して図15のフローチャートにリターンする。
【0200】
なお、本フローチャートでは、ステップS606,S607で示したように、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)=「T」と判定した場合、当該データ項目が指示された場合に画面遷移用Java(登録商標)Scriptを起動するようにコードを生成する構成について説明したが、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)=「T」であって、且つ当該データ項目が遷移先画面ID(11列)に対応するデータベースのプライマリキーであると判定した場合に限り、当該データ項目が指示された場合に画面遷移用Java(登録商標)Scriptを起動するようにコードを生成し、一方、当該データ項目のIO区分(5列)=「DO」且つキー種別(6列)=「T」であっても、当該データ項目が遷移先画面ID(11列)に対応するデータベースのプライマリキーでないと判定した場合には、当該データ項目が指示された場合に対応するサーブレットを起動し当該フォームのデータをサーブレットに送信するようにコードを生成する構成としてもよい。
【0201】
なお、HTTPセッションは、セッションIDをクッキー(Cookie)に設定して、クライアント側に送出し、このクッキー内のセッションIDにより、ウェブブラウザは、セッションオブジェクトを利用することができる。しかしながら、ウェブブラウザにこのクッキーを受け取らないような設定が成されている場合や、携帯電話等の携帯端末のウェブブラウザではクッキーを受け取ることができないものもある。このようなウェブブラウザに対応するため、ウェブアプリケーションの実行環境のウェブサーバのリライティングを有効に設定しておくようにし、「ウェブブラウザにダミーのクッキーを送信する等により、ウェブブラウザのクッキー享受の有無を判定し、当該クライアントがクッキーを受け取らない場合には、当該クライアントとのセッションIDをURLパラメータとして当該クライアントに送信する処理を含むコード」を生成するように構成してもよい。
【0202】
これにより、クッキーを受け取ることができないウェブブラウザにも対応可能なウェブアプリケーションを自動生成することができる。
【0203】
以上の処理により生成されるプログラムコードにより、業務設計を行い、セッション変数をデータ項目とした入出力テーブルを生成し、入出力テーブル間の関係を定義することを開発作業の中心とすることで、セッション変数を用いたシステム開発を容易に行うことができ、かつ開発作業を軽減できるため、開発期間を短縮することができる。
【0204】
また、業務仕様からセッション変数オブジェクトを自動生成することによって、Java(登録商標)の特別な知識を必要とはせず、セッション変数を用いた複雑且つ高度なプログラミングを簡単に行うことができ、開発作業を軽減することができる。
【0205】
さらに、入出力テーブルからウェブアプリケーションを自動生成できるので、システム環境の変化に柔軟に対応できる保守性に優れたWebアプリケーションの開発を容易に行うことができる。
【0206】
また、セッション変数を自由なタイミングで、選択して開放できるため、サーバ側の無駄なリソースが減り、サーバに対する負荷を軽減できる優れたウェブアプリケーションを容易に生成することができる。
【0207】
以上のように、サーバサイドのプログラムが各クライアントにセッションを維持するためのセッション変数を業務仕様の枠組み(入出力テーブル)の中で定義でき、セッション変数をユーザの所望の最適なタイミングで取得保存するウェブアプリケーションを自動生成できることができる。
【0208】
また、セッション変数を自由なタイミングで選択して開放できる仕組みを業務仕様の枠組みの中で定義でき、セッション変数をユーザ所望の最適なタイミングで開放するウェブアプリケーションを自動生成することができる。
【0209】
また、業務仕様の枠組みの中で、画面遷移を定義できることで、各状態とその状態における画面名を全て把握する必要はなく、連続する2画面間において、ボタンと遷移先画面の関係のみを把握しておくだけで、大規模なシステムであっても容易に画面遷移を定義することができ、システム全体の可読性を低下させることなく、システム開発を容易に行うことができ、かつ開発作業を軽減できるため、開発期間を短縮することができる。
【0210】
また、業務仕様から画面遷移プログラムを自動生成することによって、Java(登録商標)等のプログラムコードの特別な知識を必要とせず、ウェブアプリケーションのプログラミングコードを生成することができ、開発作業を軽減することができる。
【0211】
このような、可読性の高い定義情報からウェブアプリケーションを自動生成することにより、システム環境が変化した場合であっても、柔軟に対応できる保守性に優れたウェブアプリケーションの開発を容易に行うことができる。
【0212】
なお、本実施形態では、サーバサイドのJava(登録商標)プログラムを用いたウェブアプリケーションを生成する場合について説明したが、生成されるプログラムコードは、Java(登録商標)に限られるものではなく、ASP(Active Server Pages),PHP(Hypertext Preprosessor)等によるウェブアプリケーションであってもよい。
【0213】
また、Java(登録商標)Scriptを用いる場合について説明したが、その他のスクリプト言語を用いてもよい。
【0214】
以上のように、データ項目のデータベースの配置とデータ項目間の関係を記述した業務仕様の一部としてセッション変数を定義しておくだけで、定義されたセッションに係わる業務仕様からセッション変数を取得・保存・開放するウェブアプリケーションを自動生成することができる。
【0215】
なお、本発明のプログラム生成装置は、HTTPプロトコルだけではなく、セッションレスのプロトコルであれば、どのようなプロトコルにも適用可能である。
【0216】
また、生成するウェブアプリケーションの複数ページ間で共有したいデータ項目をセッションを用いて保持するウェブアプリケーションを生成する場合について説明したが、上記複数ページ間で共有したいデータを、クッキーに設定したり、クライアントに渡すフォームのhiddenフィールドに設定するように構成してもよい。しかしながら、セキュリティ面を考えると、セッションを用いるほうが適切であると考えられる。
【0217】
また、上述した各変形例を合わせた構成も全て本発明の適用範囲である。
【0218】
さらに、図5,図6の入出力テーブルの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0219】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0220】
なお、本実施形態で示したプログラム生成装置は、図5,図6に示した入出力テーブルに基づいて、Webアプリケーションで必要な全てのコードを生成するものであり、本発明のプログラム生成装置のユーザはJava(登録商標)プログラミングを一切行う必要がない。これに対して、従来の技術の欄に示した特許文献1に示されるアプリケーションプログラム作成方法では、フレームワークを予め準備することにより、ユーザが個別にプログラミングする個別プログラムの量を少なくするものであり、少なくなったとはいえプログラミングを行う必要がある。この点において、本発明のプログラム生成装置とは根本的に異なるものである。
【0221】
それゆえに、本実施形態のプログラム生成装置では、上記特許文献1で示される汎用的なフレームワークの抱える問題点(汎用的であるがゆえに最適化されておらず、業務処理に即したセッション管理(セッション変数の種類,数,開放タイミング等)が行えず、メモリを圧迫し、サーバのパフォーマンスが低下してしまう等の問題点(多数のクライアントが同時にアクセスする可能性のあるサーバサイドプログラムでは深刻な問題点である))を解決した業務仕様に応じて最適化されたウェブアプリケーションを生成することができる。
【0222】
このように、本発明のプログラム生成装置では、コーディングの必要なく業務処理に応じたセッション管理を行うウェブアプリケーションを生成することができ、上記特許文献1の抱える致命的な欠点を解決するものである。
【0223】
以上示した点は、本実施形態で示したプログラム生成装置と、上記特許文献1に記載されるような汎用的なサーバサイドプログラムとの相違を考察する上で、特に留意すべき事項と考える。
【0224】
以下、図21に示すメモリマップを参照して本発明に係るプログラム生成装置で読み出し可能なデータ処理プログラムの構成について説明する。
【0225】
図21は、本発明に係るプログラム生成装置で読み出し可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【0226】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【0227】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【0228】
本実施形態における図4,図15,図16,図17,図18,図19,図20に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【0229】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0230】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【0231】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0232】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0233】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0234】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウエアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0235】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0236】
【発明の効果】
以上説明したように、本発明によれば、生成されるウェブアプリケーションの複数ページ間で共有したいデータ項目(セッション変数)を定義しておき、該定義情報に基づいて、「定義されたデータ項目に対応する情報を、ウェブアプリケーションの複数ページ間で共有可能な記憶領域(セッションオブジェクト)に格納する処理を含むプログラム」を生成するので、業務仕様の枠組みの中でセッションを維持するために用意するセッション変数を定義しておくだけで、ユーザが手動でプログラミング等を行うことなく、セッション変数を取得・保存するプログラムコードを自動生成でき、Java(登録商標)等のプログラム知識を必要とせず、高品質でスピーディー且つ保守性に優れたウェブアプリケーションを容易に開発することができる。
【0237】
また、セッション変数を自由なタイミングで、選択して開放できるため無駄なリソースが減り、サーバに対する負荷を軽減することができる等の効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施形態を示すプログラム生成装置の構成を示すブロック図である。
【図2】図1に示したコード生成部によって生成したサーブレット、JSP、およびBeanを利用したウェブアプリケーションシステムの全体構成の一例を示す図である。
【図3】図1に示したコード生成部によって生成したウェブアプリケーションシステムのアプリケーションサーバを構成するWebサーバのシステム構成を示す図である。
【図4】本発明のプログラム生成装置における第1の制御処理手順の一例を示すフローチャートである。
【図5】本発明のプログラム生成装置における業務仕様(入出力テーブル)について説明する模式図である。
【図6】本発明のプログラム生成装置における業務仕様(入出力テーブル)について説明する模式図である。
【図7】図5,図6に示した入出力テーブルにおけるIO区分の分類を示す図である。
【図8】図5,図6に示した入出力テーブルにおけるキー種別の分類を示す図である。
【図9】図5,図6に示した入出力テーブルにおける加工機能の分類を示す図である。
【図10】本発明のプログラム生成装置におけるプログラム生成処理の概念(処理の構成)を示す模式図である。
【図11】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図12】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図13】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図14】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図15】本発明の第2の制御処理手順の一例を示すフローチャートである。
【図16】本発明の第3の制御処理手順の一例を示すフローチャートである。
【図17】本発明の第4の制御処理手順の一例を示すフローチャートである。
【図18】本発明の第5の制御処理手順の一例を示すフローチャートである。
【図19】本発明の第6の制御処理手順の一例を示すフローチャートである。
【図20】本発明の第6の制御処理手順の一例を示すフローチャートである。
【図21】本発明に係るプログラム生成装置で読み出し可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【符号の説明】
101 入力装置
102 表示装置
103 処理装置(CPU,RAM,ROM)
104 外部記憶装置(ハードディスク)
105 画面制御部
116 業務仕様記述部
106 仕様解析部
107 コード生成部
108 全体制御部
109 入出力テーブル
112 JSPコード
113 Servletコード
114 Beanコード

Claims (20)

  1. ウェブアプリケーションプログラムを生成するプログラム生成装置において、
    前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第1の定義情報を記憶する記憶手段と、
    前記記憶手段に記憶される第1の定義情報に基づいて、「前記第1の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成手段と、
    を有することを特徴とするプログラム生成装置。
  2. 前記記憶手段は、前記第1の定義情報により定義されたデータ項目に対応する情報の前記記憶領域への格納タイミングを定義した第2の定義情報をも記憶するものであり、
    前記生成手段は、前記記憶手段に記憶される第2の定義情報に基づいて、「前記第1の定義情報により定義された各データ項目に対応する情報を、前記第2の定義情報により定義された格納タイミングに対応するタイミングで前記記憶領域に格納する処理を含むプログラム」を生成することを特徴とする請求項1記載のプログラム生成装置。
  3. 前記格納タイミングは、前記第1の定義情報により定義された各データ項目毎又は前記複数のデータ項目に対応させて定義可能であることを特徴とする請求項2記載のプログラム生成装置。
  4. 前記格納タイミングは、所定のイベントの発生に対応付けて定義されることを特徴とする請求項2又は3記載のプログラム生成装置。
  5. 前記生成手段は、「前記第1の定義情報により定義されたデータ項目に対応する情報を、前記記憶領域から削除する処理を含むプログラム」を生成することを特徴とする請求項1〜4のいずれかに記載のプログラム生成装置。
  6. 前記記憶手段は、前記第1の定義情報により定義されたデータ項目に対応する情報の前記記憶領域からの削除タイミングを定義した第3の定義情報をも記憶するものであり、
    前記生成手段は、前記記憶手段に記憶される第3の定義情報に基づいて、「前記第1の定義情報により定義されたデータ項目に対応する情報を、前記第3の定義情報により定義された削除タイミングで前記記憶領域から削除する処理を含むプログラム」を生成することを特徴とする請求項5記載のプログラム生成装置。
  7. 前記削除タイミングは、前記第1の定義情報により定義された各データ項目毎又は複数のデータ項目に対応させて定義可能であることを特徴とする請求項6記載のプログラム生成装置。
  8. 前記削除タイミングは、所定のイベントの発生タイミングに対応付けて定義されることを特徴とする請求項6又は7記載のプログラム生成装置。
  9. 前記生成手段は、「前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする請求項1〜8のいずれかに記載のプログラム生成装置。
  10. 前記生成手段は、前記第3の定義情報において前記第1の定義情報により定義された全てのデータ項目に対応する削除タイミングが定義されていた場合、「前記削除タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする請求項6〜8のいずれかに記載のプログラム生成装置。
  11. 前記記憶手段は、前記記憶領域の無効化タイミングを定義した第4の定義情報をも記憶するものであり、
    前記生成手段は、前記記憶手段に記憶される第4の定義情報に基づいて、「前記第4の定義情報により定義された無効化タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする請求項9又は10記載のプログラム生成装置。
  12. 前記無効化タイミングは、所定のイベントの発生タイミングに対応付けて定義されることを特徴とする請求項11記載のプログラム生成装置。
  13. 前記無効化タイミングは、クライアントからのアクセス間隔に対応付けて定義されることを特徴とする請求項11記載のプログラム生成装置。
  14. 前記記憶領域は、セッションオブジェクトであり、
    前記第1の定義情報は、前記セッションオブジェクトにセッション変数として設定するデータ項目を定義することを特徴とする請求項1〜13のいずれかに記載のプログラム生成装置。
  15. 前記生成手段は、「クライアントのクッキー享受の有無を判定し、当該クライアントがクッキーを受け取らない場合には、当該クライアントとのセッションIDをURLパラメータとして当該クライアントに送信する処理を含むプログラム」を生成することを特徴とする請求項14記載のプログラム生成装置。
  16. 前記記憶手段は、前記生成されるウェブアプリケーションプログラムで用いる複数のデータ項目のデータベースへの配置を定義した第5の定義情報をも記憶するものであり、
    前記生成手段は、前記記憶手段に記憶される第5の定義情報に基づいて、「前記第5の定義情報により定義されたデータ項目に対応するデータをデータベースへ格納する処理,該データベースから前記データ項目に対応するデータを取得する処理を含むプログラム」を生成することを特徴とする請求項1〜15のいずれかに記載のプログラム生成装置。
  17. 前記記憶手段は、前記生成されるウェブアプリケーションプログラムにおいて表示項目とする複数のデータ項目を定義した第6の定義情報をも記憶するものであり、
    前記生成手段は、前記記憶手段に記憶される第6の定義情報に基づいて、「前記第6の定義情報により定義されたデータ項目に対応するデータをクライアントから入力する処理,前記データ項目に対応するデータをクライアントに出力する処理を含むプログラム」を生成することを特徴とする請求項1〜16のいずれかに記載のプログラム生成装置。
  18. ウェブアプリケーションプログラムを生成するプログラム生成装置におけるプログラム生成方法において、
    前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第1の定義情報に基づいて、「前記第1の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成工程を有することを特徴とするプログラム生成方法。
  19. 請求項18に記載されたプログラム生成方法を実行するためのプログラム。
  20. 請求項18に記載されたプログラム生成方法を実行するためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。
JP2003208472A 2003-08-22 2003-08-22 プログラム生成装置およびプログラム生成方法およびプログラム Expired - Lifetime JP4488700B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003208472A JP4488700B2 (ja) 2003-08-22 2003-08-22 プログラム生成装置およびプログラム生成方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003208472A JP4488700B2 (ja) 2003-08-22 2003-08-22 プログラム生成装置およびプログラム生成方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2005070830A true JP2005070830A (ja) 2005-03-17
JP4488700B2 JP4488700B2 (ja) 2010-06-23

Family

ID=34401747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003208472A Expired - Lifetime JP4488700B2 (ja) 2003-08-22 2003-08-22 プログラム生成装置およびプログラム生成方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4488700B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008191901A (ja) * 2007-02-05 2008-08-21 Kyocera Mita Corp 電子機器、制御プログラム及び電子機器の制御方法。
JP2009064056A (ja) * 2007-09-04 2009-03-26 Hitachi Software Eng Co Ltd Webアプリケーションのセッション管理処理の設計・実装支援システム
JP2010026600A (ja) * 2008-07-15 2010-02-04 Fujitsu Ltd Webアプリケーション検査プログラム、テスト実行装置、およびテスト実行方法
CN101960423A (zh) * 2008-03-21 2011-01-26 日本三菱东京日联银行股份有限公司 应用开发辅助装置、程序以及记录介质
JP2012064250A (ja) * 2012-01-04 2012-03-29 Bank Of Tokyo-Mitsubishi Ufj Ltd オンラインシステム、プログラム生成装置および画面制御プログラム生成装置
JP2013164861A (ja) * 2013-04-19 2013-08-22 Bank Of Tokyo-Mitsubishi Ufj Ltd オンラインシステム、プログラム生成装置および画面制御プログラム生成装置
CN113268267A (zh) * 2021-05-21 2021-08-17 深圳Tcl新技术有限公司 一种数据包生成方法、装置、计算机设备及存储介质
JP2022130612A (ja) * 2017-09-28 2022-09-06 オラクル・インターナショナル・コーポレイション 状態管理永続性

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
JP2002215394A (ja) * 2000-08-15 2002-08-02 Fujitsu Ltd Webアプリケーション開発・実行システム及びWebアプリケーション生成装置
JP2002366514A (ja) * 2001-06-12 2002-12-20 Himacs Ltd 表示情報生成方法、表示情報生成システム及びサーブレットエンジン

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
JP2002215394A (ja) * 2000-08-15 2002-08-02 Fujitsu Ltd Webアプリケーション開発・実行システム及びWebアプリケーション生成装置
JP2002366514A (ja) * 2001-06-12 2002-12-20 Himacs Ltd 表示情報生成方法、表示情報生成システム及びサーブレットエンジン

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008191901A (ja) * 2007-02-05 2008-08-21 Kyocera Mita Corp 電子機器、制御プログラム及び電子機器の制御方法。
JP2009064056A (ja) * 2007-09-04 2009-03-26 Hitachi Software Eng Co Ltd Webアプリケーションのセッション管理処理の設計・実装支援システム
CN101960423A (zh) * 2008-03-21 2011-01-26 日本三菱东京日联银行股份有限公司 应用开发辅助装置、程序以及记录介质
JP2010026600A (ja) * 2008-07-15 2010-02-04 Fujitsu Ltd Webアプリケーション検査プログラム、テスト実行装置、およびテスト実行方法
JP2012064250A (ja) * 2012-01-04 2012-03-29 Bank Of Tokyo-Mitsubishi Ufj Ltd オンラインシステム、プログラム生成装置および画面制御プログラム生成装置
JP2013164861A (ja) * 2013-04-19 2013-08-22 Bank Of Tokyo-Mitsubishi Ufj Ltd オンラインシステム、プログラム生成装置および画面制御プログラム生成装置
JP2022130612A (ja) * 2017-09-28 2022-09-06 オラクル・インターナショナル・コーポレイション 状態管理永続性
JP7434431B2 (ja) 2017-09-28 2024-02-20 オラクル・インターナショナル・コーポレイション 状態管理永続性
CN113268267A (zh) * 2021-05-21 2021-08-17 深圳Tcl新技术有限公司 一种数据包生成方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
JP4488700B2 (ja) 2010-06-23

Similar Documents

Publication Publication Date Title
KR101507629B1 (ko) 기존 애플리케이션들의 커스터마이징 및 분산을 위한 브라우저-기반 프록시 서버
US7343559B1 (en) Computer-readable recorded medium on which image file is recorded, device for producing the recorded medium, medium on which image file creating program is recorded, device for transmitting image file, device for processing image file, and medium on which image file processing program is recorded
JP5089684B2 (ja) サービス・プログラムを生成する技術
JP3771831B2 (ja) デジタル・コンテンツに付加されるアノテーション情報を共有するためのコンピュータ・システムおよびプログラム
US20160226948A1 (en) Utilization of target browsers
KR20050085164A (ko) 리얼타임 웹 공유 시스템
KR20130126901A (ko) 온라인 문서 편집의 동기화
JPH10340252A (ja) 書式作成方法
JPWO2009116163A1 (ja) アプリケーション開発支援装置、プログラム及び記録媒体
JP2002342250A (ja) オブジェクト指向技術を用いた情報共有方法及び装置
JP4440716B2 (ja) 表示データ生成装置、表示装置、表示データ生成システム、表示データ生成装置の制御方法、表示データ生成プログラム、記録媒体、電子装置及び電子装置の制御方法
US6766350B1 (en) Shared management of data objects in a communication network
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
US7062492B1 (en) Remote web site authoring system and method
CN112632919A (zh) 一种文档编辑方法、装置、计算机设备和存储介质
JP4488701B2 (ja) プログラム生成装置およびプログラム生成方法およびプログラム
JP4488700B2 (ja) プログラム生成装置およびプログラム生成方法およびプログラム
US20060080447A1 (en) Operation definition information producing method, operation definition information producing apparatus, operation definition information producing program, recording medium and data structure
JP5039946B2 (ja) クライアント装置およびサーバ装置の間の通信を中継する技術
JP4815481B2 (ja) ネットワーク中継機器、ユーザ情報管理システム、およびユーザ情報管理方法
JP5393242B2 (ja) データ提供方法および中間サーバ装置
EP3502925A1 (en) Computer system and method for extracting dynamic content from websites
JP2006309697A (ja) コンピュータシステム、コンピュータシステム用プログラム、及びこれらのプログラムのうち表計算プログラムに基づくアプリケーションプログラムを生成するプログラム
JP2018010628A (ja) 情報処理装置、サーバ、その処理方法及びプログラム
JP5900050B2 (ja) 情報処理装置、情報処理システム及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060814

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20080403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091013

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100308

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100330

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100330

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4488700

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term