(57)【要約】【課題】業務仕様の枠組みの中でセッションを維持するために用意するセッション変数を定義しておくだけで、ユーザが手動でプログラミング等を行うことなく、セッション変数を取得・保存するプログラムコードを自動生成できるようにし、Ｊａｖａ（登録商標）等のプログラム知識を必要とせず、高品質でスピーディー且つ保守性に優れたウェブアプリケーションの開発を容易にすること。【解決手段】入出力テーブル１０９で定義されたウェブアプリケーションの複数ページ間で共有したいデータ項目（セッション変数）の定義情報に基づいて、コード生成部が、「定義されたデータ項目に対応する情報を、ウェブアプリケーションの複数ページ間で共有可能な記憶領域（セッションオブジェクト）に格納する処理を含むプログラム」を生成する構成を特徴とする。【選択図】      図１０
2005070830.tif 000002
【特許請求の範囲】
【請求項１】
ウェブアプリケーションプログラムを生成するプログラム生成装置において、
前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第１の定義情報を記憶する記憶手段と、
前記記憶手段に記憶される第１の定義情報に基づいて、「前記第１の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成手段と、
を有することを特徴とするプログラム生成装置。
【請求項２】
前記記憶手段は、前記第１の定義情報により定義されたデータ項目に対応する情報の前記記憶領域への格納タイミングを定義した第２の定義情報をも記憶するものであり、
前記生成手段は、前記記憶手段に記憶される第２の定義情報に基づいて、「前記第１の定義情報により定義された各データ項目に対応する情報を、前記第２の定義情報により定義された格納タイミングに対応するタイミングで前記記憶領域に格納する処理を含むプログラム」を生成することを特徴とする請求項１記載のプログラム生成装置。
【請求項３】
前記格納タイミングは、前記第１の定義情報により定義された各データ項目毎又は前記複数のデータ項目に対応させて定義可能であることを特徴とする請求項２記載のプログラム生成装置。
【請求項４】
前記格納タイミングは、所定のイベントの発生に対応付けて定義されることを特徴とする請求項２又は３記載のプログラム生成装置。
【請求項５】
前記生成手段は、「前記第１の定義情報により定義されたデータ項目に対応する情報を、前記記憶領域から削除する処理を含むプログラム」を生成することを特徴とする請求項１〜４のいずれかに記載のプログラム生成装置。
【請求項６】
前記記憶手段は、前記第１の定義情報により定義されたデータ項目に対応する情報の前記記憶領域からの削除タイミングを定義した第３の定義情報をも記憶するものであり、
前記生成手段は、前記記憶手段に記憶される第３の定義情報に基づいて、「前記第１の定義情報により定義されたデータ項目に対応する情報を、前記第３の定義情報により定義された削除タイミングで前記記憶領域から削除する処理を含むプログラム」を生成することを特徴とする請求項５記載のプログラム生成装置。
【請求項７】
前記削除タイミングは、前記第１の定義情報により定義された各データ項目毎又は複数のデータ項目に対応させて定義可能であることを特徴とする請求項６記載のプログラム生成装置。
【請求項８】
前記削除タイミングは、所定のイベントの発生タイミングに対応付けて定義されることを特徴とする請求項６又は７記載のプログラム生成装置。
【請求項９】
前記生成手段は、「前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする請求項１〜８のいずれかに記載のプログラム生成装置。
【請求項１０】
前記生成手段は、前記第３の定義情報において前記第１の定義情報により定義された全てのデータ項目に対応する削除タイミングが定義されていた場合、「前記削除タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする請求項６〜８のいずれかに記載のプログラム生成装置。
【請求項１１】
前記記憶手段は、前記記憶領域の無効化タイミングを定義した第４の定義情報をも記憶するものであり、
前記生成手段は、前記記憶手段に記憶される第４の定義情報に基づいて、「前記第４の定義情報により定義された無効化タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする請求項９又は１０記載のプログラム生成装置。
【請求項１２】
前記無効化タイミングは、所定のイベントの発生タイミングに対応付けて定義されることを特徴とする請求項１１記載のプログラム生成装置。
【請求項１３】
前記無効化タイミングは、クライアントからのアクセス間隔に対応付けて定義されることを特徴とする請求項１１記載のプログラム生成装置。
【請求項１４】
前記記憶領域は、セッションオブジェクトであり、
前記第１の定義情報は、前記セッションオブジェクトにセッション変数として設定するデータ項目を定義することを特徴とする請求項１〜１３のいずれかに記載のプログラム生成装置。
【請求項１５】
前記生成手段は、「クライアントのクッキー享受の有無を判定し、当該クライアントがクッキーを受け取らない場合には、当該クライアントとのセッションＩＤをＵＲＬパラメータとして当該クライアントに送信する処理を含むプログラム」を生成することを特徴とする請求項１４記載のプログラム生成装置。
【請求項１６】
前記記憶手段は、前記生成されるウェブアプリケーションプログラムで用いる複数のデータ項目のデータベースへの配置を定義した第５の定義情報をも記憶するものであり、
前記生成手段は、前記記憶手段に記憶される第５の定義情報に基づいて、「前記第５の定義情報により定義されたデータ項目に対応するデータをデータベースへ格納する処理，該データベースから前記データ項目に対応するデータを取得する処理を含むプログラム」を生成することを特徴とする請求項１〜１５のいずれかに記載のプログラム生成装置。
【請求項１７】
前記記憶手段は、前記生成されるウェブアプリケーションプログラムにおいて表示項目とする複数のデータ項目を定義した第６の定義情報をも記憶するものであり、
前記生成手段は、前記記憶手段に記憶される第６の定義情報に基づいて、「前記第６の定義情報により定義されたデータ項目に対応するデータをクライアントから入力する処理，前記データ項目に対応するデータをクライアントに出力する処理を含むプログラム」を生成することを特徴とする請求項１〜１６のいずれかに記載のプログラム生成装置。
【請求項１８】
ウェブアプリケーションプログラムを生成するプログラム生成装置におけるプログラム生成方法において、
前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第１の定義情報に基づいて、「前記第１の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成工程を有することを特徴とするプログラム生成方法。
【請求項１９】
請求項１８に記載されたプログラム生成方法を実行するためのプログラム。
【請求項２０】
請求項１８に記載されたプログラム生成方法を実行するためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ウェブアプリケーション開発支援システムに係わり、サーバサイドプログラムが各クライアントにセッションを維持するために用意するセッション変数を自在に活用可能なプログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体に関するものである。
【０００２】
【従来の技術】
Ｗｅｂ（ウェブ）環境において使用される通信プロトコルＨＴＴＰは、セッションレスであるため、ウェブブラウザとアプリケーションサーバとの間の通信は毎回（ページ毎に）切断されている。しかし、基幹システムでは、例えばログインしたユーザ情報をウェブブラウザで表示される複数ページ間で引き継ぐ必要があり、何らかのセッション管理の仕組みを作りこむ必要がある。
【０００３】
しかし、こうした仕組みを考慮しながらプログラムを作成すると、生産性の大きな低下は避けられず、また、プログラム作成中での考慮漏れなどによる品質の低下が懸念される。
【０００４】
こうした問題に対して、特開２００１−３２５０９８号公報（特許文献１）に開示された「アプリケーションプログラムの作成方法、データベース操作方法、項目オブジェクト管理方法、モジュール動作制御方法ならびにデータベース操作方法、項目オブジェクト管理方法およびモジュール動作制御方法を実現するためのプログラムを記録したコンピュータ可読な記憶媒体」では、Ｗｅｂアプリケーション開発支援ツールにおいて、ブラウザ（クライアント）からのリクエストによってセッション変数からログイン情報や前の画面の情報を取得し、アクセス権限や画面遷移の正当性を検査するためのセッション変数取得や次回アクセスのためのセッション変数保管といった仕組みをフレームワークとして予め実装し、フレームワーク内部でこれらの問題を解決できるようにしている。
【０００５】
【特許文献１】特開２００１−３２５０９８号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、上述したようなフレームワークは、それ以後開発される全てのシステムのベースとなることを目的としたもので、一旦フレームワークをリリースした後は、フレームワークに関して大きな変更を行うことは想定されていない。
【０００７】
つまり、上記特許文献１のセッション管理の方法は、セッション変数を含めセッションの維持形態をある程度固定した汎用的なものとなっている。
【０００８】
実際のＷｅｂアプリケーションにおいては、サーバサイドのプログラムが各クライアントごとにセッションを維持するための形態（セッションオブジェクトに設定されるセッション変数の種類，数等）は、例えばログイン処理以外にも遷移画面間でのデータの受け渡しのためにセッション変数を用いるといった具合に、各Ｗｅｂアプリケーションプログラム毎に異なっており、上述のセッション管理方法で個別に対応するには、適当であるとは言いがたい。
【０００９】
セッションオブジェクトは、クライアント毎に作成され、通常メモリに常駐されるため、ログオンしたユーザが増加すると、メモリ消費も増大する。
【００１０】
さらに、セッションオブジェクトが保持されている間は、そのセッションオブジェクトに設定されたセッション変数も全てメモリ中に保持されるため、アクセス数の多いウェブアプリケーションの場合、一つ一つのセッション変数は小さくても、セッション変数の数が多くなるとサーバのパフォーマンスを悪化させてしまう。
【００１１】
よって、使用されなくなったセッション変数は、速やかにセッションオブジェクトから削除する必要がある。また、セッションのタイムアウトに関しても、ウェブアプリケーションの性質を考慮して設定する必要がある。
【００１２】
しかしながら、上記特許文献１では、汎用的なウェブアプリケーションであるため、前の画面の情報を常にセッションオブジェクトに設定する等の処理を行っており、必ずしも必要ではない情報までもセッション変数として設定してしまったり、また、セッションのタイムアウトも、ウェブアプリケーションの性質を考慮して設定する等の細かなセッション管理を行うことができず、ユーザ数が増大した場合、パフォーマンスを悪化させてしまう恐れがあるという問題点があった。
【００１３】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、生成されるウェブアプリケーションの複数ページ間で共有したいデータ項目（セッション変数）を定義しておき、該定義情報に基づいて、「定義されたデータ項目に対応する情報を、ウェブアプリケーションの複数ページ間で共有可能な記憶領域（セッションオブジェクト）に格納する処理を含むプログラム」を生成することにより、業務仕様の枠組みの中でセッションを維持するために用意するセッション変数を定義しておくだけで、ユーザが手動でプログラミング等を行うことなく、セッション変数を取得・保存するプログラムコードを自動生成できるので、Ｊａｖａ（登録商標）等のプログラム知識を必要とせず、高品質でスピーディー且つ保守性に優れたウェブアプリケーションを容易に開発することができるプログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体を提供することである。
【００１４】
【課題を解決するための手段】
本発明の第１の発明は、ウェブアプリケーションプログラムを生成するプログラム生成装置において、前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第１の定義情報（５列のＩＯ区分＝「Ｓ」のデータ項目）を記憶する記憶手段（図１に示す外部記憶装置に記憶される入出力テーブル１０９（図５，図６））と、前記記憶手段に記憶される第１の定義情報に基づいて、「前記第１の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成手段（図１に示すコード生成部１０７，図１０のＳｔｅｐ１００５，図１８）とを有することを特徴とする。
【００１５】
本発明の第２の発明は、前記記憶手段（図１に示す入出力テーブル１０９）は、前記第１の定義情報により定義されたデータ項目に対応する情報の前記記憶領域への格納タイミングを定義した第２の定義情報（セッション変数への操作を７列の加工機能＝「Ｓ」のデータ項目に対応するイベントが発生するタイミングにより定義）をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第２の定義情報に基づいて、「前記第１の定義情報により定義された各データ項目に対応する情報を、前記第２の定義情報により定義された格納タイミングに対応するタイミングで前記記憶領域に格納する処理を含むプログラム」を生成することを特徴とする。
【００１６】
本発明の第３の発明は、前記格納タイミングは、前記第１の定義情報により定義された各データ項目毎又は前記複数のデータ項目に対応させて定義可能である（セッション変数への操作を７列の加工機能＝「Ｓ」のデータ項目の８列の加工式で個別又は複数定義可能）ことを特徴とする。
【００１７】
本発明の第４の発明は、前記格納タイミングは、所定のイベントの発生に対応付けて定義されることを特徴とする。
【００１８】
本発明の第５の発明は、前記生成手段は、「前記第１の定義情報により定義されたデータ項目に対応する情報を、前記記憶領域から削除する処理を含むプログラム」を生成する（図１８のステップＳ５０９）ことを特徴とする。
【００１９】
本発明の第６の発明は、前記記憶手段は、前記第１の定義情報により定義されたデータ項目に対応する情報の前記記憶領域からの削除タイミングを定義した第３の定義情報（セッション変数への操作を７列の加工機能＝「Ｅ」のデータ項目に対応するイベントが発生するタイミングにより定義）をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第３の定義情報に基づいて、「前記第１の定義情報により定義されたデータ項目に対応する情報を、前記第３の定義情報により定義された削除タイミングで前記記憶領域から削除する処理を含むプログラム」を生成することを特徴とする。
【００２０】
本発明の第７の発明は、前記削除タイミングは、前記第１の定義情報により定義された各データ項目毎又は複数のデータ項目に対応させて定義可能である（セッション変数への操作を７列の加工機能＝「Ｅ」のデータ項目の８列の加工式で個別又は複数定義可能）ことを特徴とする。
【００２１】
本発明の第８の発明は、前記削除タイミングは、所定のイベントの発生タイミングに対応付けて定義されることを特徴とする。
【００２２】
本発明の第９の発明は、前記生成手段は、「前記記憶領域を無効化する処理を含むプログラム」を生成する（図１８のステップＳ５０９）ことを特徴とする。
【００２３】
本発明の第１０の発明は、前記生成手段は、前記第３の定義情報において前記第１の定義情報により定義された全てのデータ項目に対応する削除タイミングが定義されていた場合（セッション変数への操作を７列の加工機能＝「Ｅ」のデータ項目の８列の加工式で「Ａｌｌ  Ｏｆｆ」が設定されていた場合）、「前記削除タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする。
【００２４】
本発明の第１１の発明は、前記記憶手段は、前記記憶領域の無効化タイミングを定義した第４の定義情報（セッション変数への操作を７列の加工機能＝「Ｅ」のデータ項目の８列の加工式で「Ａｌｌ  Ｏｆｆ」の設定、又は、図示しないタイムアウト時間の設定）をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第４の定義情報に基づいて、「前記第４の定義情報により定義された無効化タイミングで前記記憶領域を無効化する処理を含むプログラム」を生成することを特徴とする。
【００２５】
本発明の第１２の発明は、前記無効化タイミングは、所定のイベントの発生タイミングに対応付けて定義される（セッション変数への操作を７列の加工機能＝「Ｅ」のデータ項目の８列の加工式で「Ａｌｌ  Ｏｆｆ」の設定）ことを特徴とする。
【００２６】
本発明の第１３の発明は、前記無効化タイミングは、クライアントからのアクセス間隔に対応付けて定義される（図示しないタイムアウト時間の設定）ことを特徴とする。
【００２７】
本発明の第１４の発明は、前記記憶領域は、セッションオブジェクトであり、前記第１の定義情報は、前記セッションオブジェクトにセッション変数として設定するデータ項目を定義することを特徴とする。
【００２８】
本発明の第１５の発明は、生成手段は、「クライアントのクッキー享受の有無を判定し、当該クライアントがクッキーを受け取らない場合には、当該クライアントとのセッションＩＤをＵＲＬパラメータとして当該クライアントに送信する処理を含むプログラム」を生成することを特徴とする。
【００２９】
本発明の第１６の発明は、前記記憶手段は、前記生成されるウェブアプリケーションで用いる複数のデータ項目のデータベースへの配置を定義した第５の定義情報（５列のＩＯ区分＝「Ｆ」のデータ項目）をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第５の定義情報に基づいて、「前記第５の定義情報により定義されたデータ項目に対応するデータをデータベースへ格納する処理，該データベースから前記データ項目に対応するデータを取得する処理を含むプログラム」を生成する（図１０のステップＳ１００３（図１７））ことを特徴とする。
【００３０】
本発明の第１７の発明は、前記記憶手段は、前記生成されるウェブアプリケーションプログラムにおいて表示項目とする複数のデータ項目を定義した第６の定義情報（５列のＩＯ区分＝「Ｄ＊」のデータ項目）をも記憶するものであり、前記生成手段は、前記記憶手段に記憶される第６の定義情報に基づいて、「前記第６の定義情報により定義されたデータ項目に対応するデータをクライアントから入力する処理，前記データ項目に対応するデータをクライアントに出力する処理を含むプログラム」を生成する（図１０のステップＳ１００２（図１９，図２０））ことを特徴とする。
【００３１】
本発明の第１８の発明は、ウェブアプリケーションプログラムを生成するプログラム生成装置におけるプログラム生成方法において、前記生成されるウェブアプリケーションプログラムの複数ページ間で共有したいデータ項目を定義した第１の定義情報に基づいて、「前記第１の定義情報により定義されたデータ項目に対応する情報を、ウェブアプリケーションプログラムの複数ページ間で共有可能な記憶領域に格納する処理を含むプログラム」を生成する生成工程（図１に示すコード生成部１０７，図１０のＳｔｅｐ１００５，図１８）とを有することを特徴とする。
【００３２】
本発明の第１９の発明は、第１８の発明に記載されたプログラム生成方法を実行するためのプログラムであることを特徴とする。
【００３３】
本発明の第２０の発明は、第１８の発明に記載されたプログラム生成方法を実行するためのプログラムを記録媒体にコンピュータが読み取り可能に記憶させたことを特徴とする。
【００３４】
【発明の実施の形態】
以下、図を参照して本発明のアプリケーション開発システムについて説明する。
【００３５】
図１は、本発明の一実施形態を示すプログラム生成装置の構成を示すブロック図である。
【００３６】
図において、１０１は入力装置で、キーボードやマウス等のポインティングデバイス等に相当し、業務仕様情報（テーブル，データ項目のデータベースへの配置とデータ項目間の関係、即ちあるデータがどのような条件のもとにどのようなデータから求められるかを示す情報等）の入力等を行うことが可能である。
【００３７】
１０２は表示装置で、ＣＲＴ，ＬＣＤ等で構成され、業務仕様情報の入力画面や、該入力画面から入力された業務仕様情報、生成されたプログラムコード等を表示可能である。１０４はハードディスク等の外部記憶装置で、入力された業務仕様情報を記憶するための入出力テーブル１０９や生成されたプログラムコード（ＪＳＰコード１１２，サーブレット（Ｓｅｒｖｌｅｔ）コード１１３，Ｂｅａｎコード１１４）等を記憶するものである。
【００３８】
１０３は処理装置で、ＣＰＵ，ＲＯＭ，ＲＡＭ等から構成され、ＣＰＵがＲＯＭ，外部記憶装置１０４又はその他の記録媒体に格納されるプログラムをＲＡＭ上にロードして実行することにより実現されるものであり、画面制御部１０５，仕様解析部１０６，コード生成部１０７を備える。
【００３９】
画面制御部１０５は、入力装置１０１から業務仕様情報を入力するために表示装置１０２の画面（不図示）を制御する業務仕様記述部１１６を備える。
【００４０】
仕様解析部１０６は、入力装置１０１から入力された又は外部記憶装置１０４から読み出された業務仕様情報に対して字句解析や文法解析を行う。コード生成部１０７は、仕様解析部１０６により仕様解析された業務仕様情報に基づいてプログラムコード（ＪＳＰコード１１２，サーブレット（Ｓｅｒｖｌｅｔ）コード１１３，Ｂｅａｎコード１１４）を生成し、外部記憶装置１０４に記憶させる。また、コード生成部１０７は、外部記憶装置１０４から読み出された業務仕様情報（入出力テーブル１０９）に基づいて図示しないデータベース（ＤＢ）システムに対してデータベースの作成（ＣＲＥＡＴＥ）及びテーブルの作成（ＣＲＥＡＴＥ  ＴＡＢＬＥ）等を行うものとする。
【００４１】
１０８は全体制御部で、画面制御部１０５，仕様解析部１０６，コード生成部１０７等の各部の制御を行う。
【００４２】
図２は、図１に示したコード生成部１０７によって生成したサーブレット、ＪＳＰ、およびＢｅａｎを利用したウェブアプリケーションシステムの全体構成の一例を示す図である。
【００４３】
コード生成部１０７によって生成されたサーブレット、ＪＳＰ、およびＢｅａｎは、それぞれ実行可能な状態で、サーバ３０４側のアプリケーションサーバ３０６上に配置される。
【００４４】
このＷｅｂアプリケーションシステムは、クライアント３０１からウェブブラウザ３０２によって利用される。ウェブブラウザ３０２からＪＳＰ３０９にアクセスすることにより、ＨＴＭＬページを生成し、クライアント３０１側に返送する。そして、ウェブブラウザ３０２上には、ＪＳＰ３０９から送信されるＨＴＭＬページ３０３が表示される。
【００４５】
また、Ｗｅｂブラウザ３０２からのリクエストは、ＨＴＴＰ経由でサーバ３０４側に送信される。サーバ３０４にはＨＴＴＰサーバ３０５とアプリケーションサーバ３０６があり、アプリケーションサーバ３０６にはサーブレットやＪＳＰの実行環境が含まれている。
【００４６】
サーバ３０４側にリクエストが送信されると、リクエストに応じて該当するサーブレット３０７が起動される。サーブレット３０７は、対応するＢｅａｎ３０８に処理を要求する。さらに、Ｂｅａｎ３０８はＤＢアクセスオブジェクト３１０を利用してデータベース３１１にアクセスし、業務に関する処理やデータ加工などを行い、その処理結果を保持する。ＤＢアクセスオブジェクト３１０は、業務を分析、設計した結果、作成されるクラスや、再利用可能な既存のクラスである。
【００４７】
次に、サーブレット３０７からＪＳＰ３０９にＢｅａｎ３０８を渡し、ＪＳＰ３０９を呼び出す。ＪＳＰ３０９は、Ｂｅａｎ３０８で保持する処理結果を参照して、ＨＴＭＬページを生成し、クライアント３０１側に返送する。なお、ＪＳＰ３０９から直接Ｂｅａｎ３０８を実行させ、該Ｂｅａｎの処理を参照して、ＨＴＭＬページを生成し、クライアント３０１側に返送するように構成してもよい。クライアント３０１側に返送されたＨＴＭＬページ３０３は、Ｗｅｂブラウザ３０２上に表示される。
【００４８】
サーブレット３０７は、Ｗｅｂブラウザ３０２からのリクエストの受け付け、Ｂｅａｎ３０８への処理要求やＪＳＰ３０９の呼び出しという、それぞれの間をつなぎ、制御する役割を持つ。ＪＳＰ３０９はＨＴＭＬページを出力するための表示に関することを受け持ち、Ｂｅａｎ３０８はデータベース３１１へのアクセス等の業務に関する処理を受け持つ。Ｂｅａｎ３０８やＪＳＰ３０９を利用せず、サーブレット３０７のみでＷｅｂブラウザ３０２からのリクエストを処理することは可能であるが、Ｂｅａｎ３０８やＪＳＰ３０９を利用することでそれぞれの役割を明確に分離することで、機能分担を簡潔に把握することができる。
【００４９】
図３は、図１に示したコード生成部１０７によって生成したウェブアプリケーションシステムのアプリケーションサーバを構成するＷｅｂサーバのシステム構成を示す図である。
【００５０】
Ｗｅｂサーバ４００は、ネットワーク４０４を介して送信される複数のクライアントＰＣ４０５上で動作するブラウザ等からのリクエストを処理するためのＪａｖａ（登録商標）サーブレットエンジン（サーブレットコンテナ）４０１と、Ｊａｖａ（登録商標）サーブレットエンジン４０１を介して与えられるクライアントブラウザからのリクエストを処理するためのメインプログラム（サーブレット）４０２と、メインプログラム４０２が各クライアントにセッションを維持するために用意するセッション変数を格納するセッションオブジェクト４０３で成り立っている。
【００５１】
サーブレットのセッション管理機能は、複数のウェブページ間（複数のＨＴＴＰプロトコル間）の連続性を維持するメカニズム（セッションメカニズム）として、それぞれのセッションごとに専用の記憶領域を提供しており、セッションが続いている限りデータを保持できるようになっている。このような記憶領域のことをセッションオブジェクトと呼び、上記セッションオブジェクト４０３はこれに相当する。
【００５２】
図４は、本発明のプログラム生成装置における第１の制御処理手順の一例を示すフローチャートであり、図１に示した処理装置１０３の全体制御部１０８の動作に対応する。なお、Ｓ１０１〜Ｓ１０６は各ステップを示す。
【００５３】
図１に示した処理装置１０３は、コード生成する業務仕様（入出力テーブル）の入力を行う入力モードと、入力された業務仕様（入出力テーブル）からプログラムコードを生成する生成モードとを有する。
【００５４】
まず、全体制御部１０８が起動されると、ステップＳ１０１において、入力装置１０１からオペレータの指示により選択されたモードが生成モードか入力モードかを判定し、入力モードが選択されたと判定した場合には、ステップＳ１０２に進み、全体制御部１０８は、画面制御部１０５を起動する。
【００５５】
起動された画面制御部１０５は、ステップＳ１０３において、業務仕様記述部１１６により業務仕様入力部を起動して、図示しない入力画面を表示させ、生成するウェブアプリケーションのアプリケーション名，オペレータからの業務仕様の一形態である入出力テーブル（詳細は後述する図５，図６に示す）への項目入力を受け付け、該入出力テーブル（図５，図６）を外部記憶装置１０４に格納し、処理を終了する。
【００５６】
一方、ステップＳ１０１において、入力装置１０１からオペレータの指示により選択されたモードが生成モードであると判定した場合には、ステップＳ１０４に進み、全体制御部１０８は、オペレータから指示されたアプリケーション名に基づいて、外部記憶装置１０４に格納された入出力テーブル（業務仕様情報；詳細は後述する図５，図６に示す）を読み出すとともに、仕様解析部１０６を起動させて、読み出した入出力テーブルの字句解析，文法解析を行い、その情報をＲＡＭ又は外部記憶装置１０４内のワーク領域に格納しておく。これらワーク領域に格納された情報は、以下のステップＳ１０５で起動されるコード生成部１０７によるコード生成処理時に使用される。なお、このワーク領域には、アプリケーション名も格納されるもとする。
【００５７】
次に、ステップＳ１０５において、全体制御部１０８は、コード生成部１０７を起動させて、仕様解析部１０６で字句解析，文法解析が行われた入出力テーブルに基づいて図示しないデータベースシステムに対するテーブルの登録及びコード生成を行う。
【００５８】
そして、ステップＳ１０６において、全体制御部１０８は、生成されたコードを、オペレータの指示により表示装置１０２に表示したり、ユーザの指示した場所（例えば、外部記憶装置１０４やネットワークに接続された他の装置の記憶装置）に書き込む出力処理を行う。
【００５９】
以下、各処理を具体的に説明する。
【００６０】
まず、オペレータによって入力モードが選択された場合について説明する。
【００６１】
入力モードの選択により、全体制御部１０８は業務仕様記述部１１６を起動する。これにより、表示装置１０２に図示しない業務仕様入力画面が表示され、オペレータはこの業務仕様入力画面より業務仕様を入力装置１０１を用いて入力する。
【００６２】
以下、図５，図６を参照して、本発明のプログラム生成装置における業務仕様（入出力テーブル）について説明する。
【００６３】
図５，図６は、本発明のプログラム生成装置における業務仕様（入出力テーブル）について説明する模式図である。
【００６４】
図において、１列は、項番を指定するものである。２列，３列は、データ項目のデータベースの配置とデータ項目間の関係を記述した情報（業務仕様）を表したもので、２列は、入出力のためのデータファイル番号を示したものであり、データファイル番号を構成するフィールドとしてデータ項目枝番（３列）がある。なお、データファイル番号（２列）に「Ｂｕｔｔｏｎ」が指定されていた場合、その項目は何らかの処理を伴ったボタンが生成されることを意味する。
【００６５】
４列はデータ項目名で、データ項目枝番（３列）に対応するフィールドの名称である。
【００６６】
なお、この入出力テーブルは、ファイル項目と表示項目とセッション項目で構成されており、その識別は、５列のＩＯ区分でなされる。その分類を図７に示す。
【００６７】
図７に示すように、このＩＯ区分（５列）が「Ｆ」の場合には、当該データ項目枝番がファイル項目であることを示す。詳細には、生成されるウェブアプリケーションで用いる複数のデータ項目の定義と前記各データ項目のデータベースへの配置の定義を示す。
【００６８】
また、このＩＯ区分（５列）が「Ｓ」の場合には、当該データ項目枝番がセッションオブジェクトに登録するデータ（ウェブアプリケーションの複数ページ間で共有したいデータ項目の定義であり、このように定義されたデータ項目を、以下セッション変数と称する）であることを示し、「Ｄ＊」（「＊」は任意の文字列を示す）の場合には、当該データ項目枝番が画面の表示アイテムであることを示す。
【００６９】
なお、ＩＯ区分＝「Ｓ」で定義されるセッション変数は、アプリケーション名とクライアントＩＤの組み合わせにより、そのスコープが決まるため、セッション変数の属性名称は、同一アプリケーションのデータ項目名（ファイル項目または表示項目）の中に存在する必要がある。例えば、入出力テーブルの項番７〜９はセッション変数に割り当てられたデータ項目名であるが、各データ項目名は、同一のアプリケーションのデータ項目（項番１〜３）に存在する。
【００７０】
また、画面の表示アイテムであることを示す「Ｄ＊」には、当該データ項目枝番がテキスト出力用アイテムであることを示す「ＤＯ」、テキスト入力用アイテムであることを示す「ＤＩ」、ボタンアイテムであることを示す「ＤＢ＊」等がある。
【００７１】
また、画面のボタンアイテムであることを示す「ＤＢ＊」には、後述する列７の加工機能の指定によりセッション変数に対する様々な処理を指定することができる。
【００７２】
さらに、画面のボタンアイテムであることを示す「ＤＢ＊」には、当該ボタンアイテムが業務処理属性を有しないことを示す「ＤＢ」、認証処理属性を有することを示す「ＤＢＮｉｎｓｙｏ」、データベースへの追加処理属性を有することを示す「ＤＢＴｓｕｉｋａ」等がある。
【００７３】
例えば、項番６に示すように、「ＤＢＮｉｎｓｙｏ」が指定されて生成されたログインボタンが指示されると、サーブレットは、９列の参照先データファイル番号で示されたデータファイル「Ｌｏｇｉｎ」内を検索し、参照先データ項目枝番で示された「ＵｓｒＩＤ」，「ＰａｓｓＷｄ」の双方を用いて認証処理を行う。そして、認証結果を示すメッセージアラート（「認証が成功しました」／「ユーザＩＤが登録されていません」／「パスワードが違います」等）を生成し、認証結果がＯＫの場合にのみ次の処理に進むようにする。
【００７４】
また、項番３０に示すように、「ＤＢＴｓｕｉｋａ」が指定されて生成されたログインボタンが指示されると、サーブレットは、ウェブブラウザから取得した情報に基づいて、９列の参照先データファイル番号で示されたデータファイル「Ｏｒｄｒ」を追加更新する追加処理を行う。そして、追加処理結果がＯＫの場合にのみ次の処理に進み、追加処理結果がＮＧの場合にはメッセージアラートを生成するようにする。なお、これらのメッセージを、メッセージテーブル等により定義可能に構成してもよい。
【００７５】
６列は、当該データ項目の検索キーの種別を示しており、その分類を図８に示す。
【００７６】
図８に示すように、このキー種別（６列）が「Ｋ」の場合には、当該データ項目枝番が主キー（プライマリキー）であることを示す。
【００７７】
また、このキー種別（６列）が「Ｔ」の場合には、当該データ項目枝番に対応する画面の表示アイテムが指示された場合に画面遷移があることを示す。これにより、画面遷移を生起させるボタンの定義と、定義されたボタンが押下されたときの遷移画面（アプリケーションプログラム）名称を、業務仕様の枠組みの中で定義できる。
【００７８】
７列は、当該データ項目に対する加工機能の種別を表しており、その分類を図９に示す。
【００７９】
図９に示すように、加工機能（７列）が「Ｓ」の場合には、セッション変数を操作することを示しており、そのセッション変数の操作内容は８列に記述される。
【００８０】
例えば、項番６の場合、左辺の括弧の内容は、値がセットされるセッション変数の組を表し、右辺の括弧は、値をセットする入出力項番の組を示している。この定義で生成されたボタンが指示されると、サーブレットは、項番７，８，９のセッション変数（ユーザＩＤ，名前，パスワード）に項番１，２，３の値（ユーザＩＤ，名前，パスワード）を投入する。
【００８１】
また、項番２１の場合のように、加工式が「ＩＦ（第１項，第２項，第３項）」のような形式で記載された場合、この定義で生成されたボタンが指示されると、サーブレットは、第１項の演算式の結果が「真」の場合に第２項の演算式を実行し、一方、第１項の演算式の結果が「偽」の場合に第３項の演算式を実行し、セッション変数を操作する。なお、演算式に「−」が記載されているものは、何もしない処理であることを示す。
【００８２】
即ち、「個数（項番２０）＞０」の場合に、商品コード（項番１８），商品名（項番１９），個数（項番２０）をセッション変数（項番２２，項番２３，項番２４）に格納（追加更新）することを示している。
【００８３】
即ち、これらは、セッション変数のセッションオブジェクトへの格納（設定）タイミングをボタン指示（イベント発生）に対応付けて定義している。また、上述したように、これらの格納タイミングは、各セッション変数毎（１つでも複数でも可）に定義可能である。
【００８４】
また、図９の加工機能分類一覧に示すように、加工機能に「Ｅ」が記述されている場合は、当該データ項目の定義により生成されたボタンが指示されると、セッションを明示的に開放処理（セッションオブジェクトから対応するセッション変数を削除する処理）することを示している。そのセッション変数の開放内容は、８列に記述され、開放したいセッション変数の項番を括弧の中に組として記述する形式をとる。ただし、全てのセッションを開放するときに限り「Ａｌｌ  Ｏｆｆ」を記述する。
【００８５】
例えば、項番３４のログアウトボタンの定義では加工機能（列７）に「Ｅ」が指定され、加工式に「Ａｌｌ  Ｏｆｆ」が記述されているので、全てのセッションを開放する定義であることを示している。この定義で生成されたボタン（即ち、ログアウトボタン）が指示されると、生成されるサーブレットは、全てのセッション変数をシステムから開放する。
【００８６】
また、項番３０の注文決定ボタンの定義では加工機能に「Ｅ」が指定され、加工式に開放したいセッション変数を組で定義している。この定義では項番２２，２３，２４のセッションを開放している。
【００８７】
即ち、これらは、セッション変数をセッションオブジェクトから削除（開放）するタイミングをボタン指示（イベント発生）に対応付けて定義している。また、上述したように、これらのタイミングは、各セッション変数毎（１つでも複数でも可）に定義可能である。
【００８８】
なお、全てのセッション変数を削除（開放）するタイミングが定義されていた場合（加工式に「Ａｌｌ  Ｏｆｆ」が記述されていた場合）、セッションオブジェクト自体を無効化（開放）するタイミング（イベント発生に対応したタイミング）の定義を示すものとする。
【００８９】
また、図５，図６には示していないが、セッションオブジェクト自体を無効化（開放）するタイミングを、クライアントからのアクセス間隔に対応付けて定義するように構成してもよい。即ち、クライアントが所定時間アクセスしなかった場合に、タイムアウトとする時間を設定するように構成してもよい。このタイムアウトの時間の設定は、図５，図６に示した入出力テーブルであっても、その他の設定ファイルであってもよい。
【００９０】
次に、９列，１０列は、参照先データファイル番号，参照先データ項目枝番を示すものであり、ＩＯ区分（５列）で「ＤＢＮｉｎｓｙｏ」が指定されている場合には、認証処理で用いるデータファイル番号，データ項目枝番を参照先データファイル番号（９列），参照先データ項目枝番（１０列）に示す。
【００９１】
また、ＩＯ区分（５列）で「ＤＢＴｓｕｉｋａ」が指定されている場合には、追加処理で用いるデータファイル番号を参照先データファイル番号（９列）に示す。
【００９２】
さらに、ＩＯ区分（５列）で「ＤＯ」が指定され、且つキー機能（６列）で「Ｔ」が指定されている場合には、当該データ項目に対応するデータの値を遷移先画面に渡すパラメータとして渡される。なお、画面遷移時にパラメータを引き渡す場合、セッション変数を用いて実現するのは一般的な手法ではあるが、１つのパラメータをただ１度の画面遷移実現のためにセッション変数を設定することは、セッション変数の本質ではない。そこで、このような場合、セッション変数を明示的に定義することなく、即ちサーバ側にセッション維持をさせることなく、画面間のパラメータの受け渡しすることを定義できるようにした。なお、この時の画面遷移とパラメータの受け渡しは、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔにより行われる。このように、データ項目の表示アイテム（ＩＯ区分＝「ＤＯ」）に遷移先画面が定義されていた場合に限り、セッション変数を明示的に定義することなく、画面間のデータ受け渡しを行うことができる。従って、複数画面間でセッションを用いたデータ受け渡しと、セッションを用いないデータ受け渡しを自由に使い分けた、ユーザの所望の最適なウェブアプリケーションを容易に生成することができる。
【００９３】
１１列は遷移先画面ＩＤで、キー機能（６列）で「Ｔ」が指定されている場合には、遷移先となる画面ＩＤを示す。
【００９４】
１２列は画面ＩＤ，１３列は画面名で、画面のＩＤ，画面名を示す。
【００９５】
１４列は画面属性で、画面が有する業務処理属性を示すものである。この画面属性には、１５列の対象データファイル番号で指定されるデータファイル番号を用いてデータベースへの検索処理を行う「Ｋｅｎｓａｋｕ」がある。なお、当該画面の呼び出し時にパラメータが指定されている場合には、当該パラメータを検索条件として検索処理を行うものとする。また、１５列の対象データファイル番号で「Ｓｅｓｓｉｏｎ」が指定されている場合は、データベースへの検索処理のかわりにセッション変数を検索処理する。
【００９６】
なお、図５，図６に示した入出力テーブルは、図示しない業務仕様入力部より入力されたアプリケーション名（例えば、「ＳｙｏｕｈｉｎＴｙｕｍｏｎ」）に対応付けられて外部記憶装置１０４に格納されるものとする。
【００９７】
また、図５，図６には示していないが、セッションオブジェクトのタイムアウト時間（クライアントのアクセスが一定時間以上行われない場合に、セションを終了するための時間）を図５，図６に示した入出力テーブル又は図示しない設定ファイル等に設定可能に構成してもよい。
【００９８】
なお、本実施形態では、図５，図６に示した入出力テーブルを、図示しない入力画面から入力する構成について説明したが、入出力テーブルをテキストファイルやＣＳＶファイル等で構成し、ユーザがテキストエディタやその他のアプリケーションで作成し、外部記憶装置１０４に格納するように構成してもよい。
【００９９】
図１０は、本発明のプログラム生成装置におけるプログラム生成処理の概念（処理の構成）を示す模式図である。
【０１００】
図５，図６に示した入出力テーブル１０９の情報のうち、ＩＯ区分が「Ｆ」のデータファイルから、データベース（ＤＢ）の作成とテーブルの作成を行う（Ｓｔｅｐ１００１（後述する図１６に相当））。
【０１０１】
例えば、アプリケーション名（図示しないユーザインタフェースから入力される）でデータベースを作成（ＣＲＥＡＴＥ）し、該作成したデータベースに対して、図５，図６に示した項番１〜３よりテーブル名を「Ｌｏｇｉｎ」、テーブル内の各項目を「ＵｓｒＩＤ」，「Ｎａｍｅ」，「ＰａｓｓＷｄ」とするテーブルを作成する。
【０１０２】
さらに、ＩＯ区分が「Ｄ＊」のデータファイルから、ＪＳＰとＪａｖａ（登録商標）Ｓｃｒｉｐｔによる表示プログラムコードの生成を行う（Ｓｔｅｐ１００２（後述する図１９，図２０に相当））。詳細には、ＩＯ区分が「ＤＩ」のデータ項目に対応するデータをクライアントから入力処理，ＩＯ区分が「ＤＯ」のデータ項目に対応するデータをクライアントに出力処理するための表示プログラムコードの生成を行う。
【０１０３】
また、ＩＯ区分が「Ｆ」のデータファイルから、データベース（ＤＢ）に対するデータ操作プログラムコードの作成を行う（Ｓｔｅｐ１００３（後述する図１７に相当））。詳細には、ＩＯ区分が「Ｆ」のデータ項目に対応するデータのデータベースへの格納処理（新規／追加処理），該データベースから前記データ項目に対応するデータの取得処理（検索処理）のデータ操作プログラムコードの生成を行う。
【０１０４】
また、ＩＯ区分が「ＤＢ＊」のデータファイルから、業務処理を行うプログラムコードの作成を行う。
【０１０５】
さらに、ＩＯ区分が「ＤＢ＊」且つ加工機能が「Ｓ」又は「Ｅ」のデータファイル及びＩＯ区分が「Ｓ」のデータファイルから、セッション変数操作を行うプログラムコードの作成を行う。詳細には、ＩＯ区分が「ＤＢ＊」且つ加工機能が「Ｓ」のデータ項目（ボタン）の加工式に示されるＩＯ区分が「Ｓ」のデータ項目（セッション変数）に対応する情報を、当該ボタンが指示されたタイミング（ボタン押下イベントの発生タイミング）でセッションオブジェクトに格納（設定）する処理、また、ＩＯ区分が「ＤＢ＊」且つ加工機能が「Ｅ」のデータ項目（ボタン）の加工式に示されるＩＯ区分が「Ｓ」のデータ項目（セッション変数）に対応する情報を、当該ボタンが指示されたタイミング（ボタン押下イベントの発生タイミング）でセッションオブジェクトから削除（開放）する処理（なお、加工式が「Ａｌｌ  Ｏｆｆ」の場合は、セッションオブジェクト自体を無効化（開放）する処理）を行うセッション変数操作プログラムの生成を行う。
【０１０６】
また、ＩＯ区分が「ＤＢ＊」且つキー機能が「Ｔ」のデータファイルから、画面遷移処理を行うプログラムコードの作成を行う。以上説明したＳｔｅｐ１００４の業務処理プログラム，セッション変数操作プログラム，画面遷移プログラムは、後述する図１８に相当する。
【０１０７】
なお、ＩＯ区分が「ＤＯ」且つキー機能が「Ｔ」の場合に限り、当該データ項目の表示アイテムが指示されたことを示すイベントにより当該データ項目のデータを遷移先画面に渡すパラメータに指定して遷移先画面を呼び出すＪａｖａ（登録商標）Ｓｃｒｉｐｔコードの作成を行う（後述する図２０のステップＳ６０６，Ｓ６０７に相当）。これにより、セッション変数を使用しない、画面表示プログラム（ＪＳＰ）と画面遷移アクションプログラム（ＪＳＰで呼び出されるＪａｖａ（登録商標）Ｓｃｒｉｐｔ）を自動生成することができる。
【０１０８】
以上のように、画面とデータベースの項目を対応させ、画面ごとに遷移画面を定義し、複雑な条件判断や付随的なデータの取り扱いについては業務仕様と業務ロジックの定義からプログラムコードを自動生成することができる。
【０１０９】
なお、上記図１０は概念図であり、詳細は後述する図１５〜図２０のフローチャートに示す。
【０１１０】
以下、図１１〜図１４を参照して、図５，図６で示した入出力テーブルに基づいて生成されるウェブアプリケーションプログラムについて具体的且つ詳細に説明する。
【０１１１】
図１１〜図１４は、本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【０１１２】
図５，図６で示した入出力テーブルの項番１〜３は、テーブル名を「Ｌｏｇｉｎ」、テーブル内の各項目名を「ＵｓｒＩＤ」，「Ｎａｍｅ」，「ＰａｓｓＷｄ」とし、「ＵｓｒＩＤ」をプライマリキーとするテーブルが図示しないデータベースシステムに対して作成することを定義している。
【０１１３】
また、項番４〜６は、図１１に示すようなログイン（Ｌｏｇｉｎ）画面１１００の表示とその処理を制御するコードを生成することを定義している。
【０１１４】
詳細には、項番４，５は、ユーザＩＤ（ＵｓｒＩＤ），パスワード（ＰａｓｓＷｄ）を入力するためのラベル１１０１，１１０２とテキストボックス１１０３，１１０４の生成を定義している。
【０１１５】
また、項番６は、５列のＩＯ区分で「ＤＢＮｉｎｓｙｏ」が指定されていることより、９列に示すデータベース（「Ｌｏｇｉｎ」テーブル）のユーザＩＤ（ＵｓｒＩＤ），パスワード（ＰａｓｓＷｄ）を用いた認証処理を行った後、８列の加工式に基づいて項番１，２，３の値を項番７，８，９で定義しているセッション変数オブジェクトに投入し（セッション変数としてセッションオブジェクトに格納し）、図１２に示すショッピングカート（Ｃａｒｔ）画面１２００に遷移する（即ち、認証処理が正常に終了するとユーザ情報をセッション変数に維持して、ショッピングカート画面１２００に遷移する）機能を持つ「ログイン」ボタン１１０５を生成することを定義している。
【０１１６】
なお、この認証処理は、ログイン画面から入力されたプライマリキー（ユーザＩＤ）を用いてデータベース（「Ｌｏｇｉｎ」テーブル）の検索を行い、データベースに登録されたユーザＩＤとパスワードを取得し、入力されたユーザＩＤがデータベースに登録されていない場合や、入力されたパスワードと登録パスワードが等しくない場合には図示しないアラート表示を行い、一方、入力されたパスワードと登録パスワードが等しい場合には、１１０６に示すような表示を行い、次の処理に移る等の処理とする。
【０１１７】
また、項番１０〜１３は、テーブル名を「ＳｈｏｈｉｎＭ」、テーブル内の各項目名を「ＳｈｏｈｉｎＣｏｄｅ」，「ＳｈｏｈｉｎＮａｍｅ」，「ＳｈｏｈｉｎＴａｎｋａ」，「ＳｈｏｈｉｎＳｅｔｓｕｍｅｉ」とし、「ＳｈｏｈｉｎＣｏｄｅ」をプライマリキーとするテーブルを図示しないデータベースシステムに対して作成することを定義している。
【０１１８】
項番１４〜１７は、図１２に示すような商品マスタ（ＳｈｏｈｉｎＭ）画面１１２０４を表示制御するコードを生成することを定義している。この商品マスタ画面１２０４では、１４列の画面属性に「Ｋｅｎｓａｋｕ」が指定されていることより、１５列のデータベース（「ＳｈｏｈｉｎＭ」テーブル）を検索し（パラメータが指定されるときは、そのパラメータをキーとして検索し）、該検索結果を一覧表示する処理を組み込むことを定義している。
【０１１９】
詳細には、項番１４，１５，１６，１７は、商品コード（ＳｈｏｈｉｎＣｏｄｅ），商品名（ＳｈｏｈｉｎＮａｍｅ），単価（ＳｈｏｈｉｎＴａｎｋａ），説明（ＳｈｏｈｉｎＳｅｔｓｕｍｅｉ）の検索結果を一覧表示するためのコードを生成することを定義している。
【０１２０】
また、項番１８〜２１は、図１２に示すようなショッピングカート（Ｃａｒｔ）画面１２００を表示制御するコードを生成することを定義している。このショッピングカート画面１２００では、１４列の画面属性に「Ｋｅｎｓａｋｕ」が指定されていることより、１５列に示されるデータベース（「ＳｈｏｈｉｎＭ」テーブル）を検索し（パラメータが指定されるときは、そのパラメータをキーとして検索し）、該検索結果を一覧表示する処理を組み込むことを定義している。
【０１２１】
詳細には、項番１８，１９は、商品コード（ＳｈｏｈｉｎＣｏｄｅ），商品名（ＳｈｏｈｉｎＮａｍｅ）の検索結果を表示するためのコードを生成することを定義している。また、項番２０は、個数（Ｋｏｓｕ）を入力するためのテキストボックスを生成することを定義している。さらに、項番２１は、８列の加工式に基づいて項番２０の値が正のとき、項番１８，１９，２０の値を項番２２，２３，２４で定義しているセッション変数オブジェクトに投入し、注文内容確認画面（ｋａｋｕｎｉｎ）へ遷移する「注文へ」ボタン１２０２を生成することを定義している。また、項番１８に示す商品コードは、５列のＩＯ区分が「ＤＯ」で且つ６列のキー機能が「Ｔ」と指定されていることにより、この表示をマウス等で指示することで商品マスタ（ＳｈｏｈｉｎＭ）画面１２０４に遷移することが定義されている。なお、この時、商品コードがパラメータとして商品マスタ画面１２０４に渡される。
【０１２２】
また、項番２５〜３０は、図１３に示すような注文確認画面（Ｋａｋｕｎｉｎ）１３００と注文確認画面の表示処理を制御するコードを生成することを定義している。この注文確認画面では、１４列の画面属性に「Ｋｅｎｓａｋｕ」が指定されていることより、１５列に示されるセッション変数オブジェクト（Ｓｅｓｓｉｏｎ）を検索し（パラメータが指定されるときは、そのパラメータをキーとしてセッションオブジェクトに保持されているセッション変数を検索し）、該検索結果を一覧表示する処理が組み込まれる。
【０１２３】
詳細には、項番２５，２６，２７は、商品コード（ＳｈｏｈｉｎＣｏｄｅ），商品名（ＳｈｏｈｉｎＮａｍｅ），個数（Ｋｏｓｕ）の検索結果を表示するためのコードを生成することを定義している。また、項番２８は、８列の加工式に基づいて項番２２，２３，２４で定義しているセッション変数オブジェクトを開放し（セッション変数をセッションオブジェクトから削除し）、図１２に示したショッピングカート（Ｃａｒｔ）画面１２００へ遷移する「全て取消」ボタン１２０１を生成することを定義している。さらに、項番２９は、ショッピングカート（Ｃａｒｔ）画面１２００へ遷移する「ショッピングを続ける」ボタン１３０２を生成することを定義している。また、項番３０は、５列のＩＯ区分で「ＤＢＴｓｕｉｋａ」が指定されていることより、９列に示すデータベース（「Ｏｒｄｅｒ」テーブル）に対して、この注文確認画面の内容を登録処理した後、８列の加工式に基づいて項番２２，２３，２４で定義しているセッション変数オブジェクトを開放し、図１３に示すログアウト（Ｌｏｇｏｕｔ）画面へ遷移する「注文決定」ボタン１３０３を生成することを定義している。
【０１２４】
また、項目３１〜３３は、テーブル名を「Ｏｒｄｅｒ」、テーブル内の各項目名を「ＵｓｒＩＤ」，「ＳｈｏｈｉｎＣｏｄｅ」，「Ｋｏｓｕ」とし、「ＵｓｒＩＤ」をプライマリキーとするテーブルをデータベースに作成することを定義している。
【０１２５】
さらに、項番３４，３５は、図１４に示すようなログアウト（Ｌｏｇｏｕｔ）画面１４００を生成することを定義している。
【０１２６】
詳細には、項番３４は、加工式（Ａｌｌ  Ｏｆｆ）に基づいて全てのセッション変数オブジェクトを開放し（セッションオブジェクト自体を無効化し）、図１１に示したログイン画面（Ｌｏｇｉｎ）１１００へ遷移する「ログアウト」ボタン１４０１を生成することを定義している。
【０１２７】
また、項番３５は、図１２に示したショッピングカート画面（Ｃａｒｔ）１２００へ遷移する「ショッピング」ボタン１４０２を生成することを定義している。
【０１２８】
以上説明したように、図５，図６で示した入出力テーブルに基づいて生成されるアプリケーションは、ウェブブラウザから図１１に示したログイン画面１１００に対応するＪＳＰが起動されると、ログイン画面１１００がクライアントのウェブブラウザ上に表示される。
【０１２９】
次に、表示されたログイン画面１１００に対し、ユーザＩＤとパスワードの入力が行われ、ログインボタン１１０５が指示されると、サーブレットへデータが転送され、サーブレットにより認証処理が実行され、認証が成功するとその旨が通知され（図１１に示す通知画面１１０６）、遷移先画面である図１２に示したショッピングカート画面１２００に対応するＪＳＰが起動される。すると、ショッピングカート画面がクライアントのウェブブラウザ上に表示される。このショッピングカート画面では表示されている商品の数量欄に数値を入力し、「注文へ」ボタン１２０２を指示することにより、商品の購入予約が出来る。
【０１３０】
次に、上記ショッピングカート画面１２００において、商品コード１２０１が指示されると、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔにより、商品マスタ画面１２０４に対応するＪＳＰが別ウィンドウで起動される（指示された商品コードをパラメータとして起動される）。すると、商品マスタ画面がクライアントのウェブブラウザ上に表示される。この処理では、セッション変数を使用することなしに、指示された商品コードを商品マスタ画面１２０４に渡し、該商品コードをキーとした商品マスタの詳細を表示することができる。例えば、商品マスタ画面１２０４の例では、商品コード「００１」で商品マスタを検索した結果の明細画面が表示される。
【０１３１】
また、表示されたショッピングカート画面１２００において、「注文」ボタン１２０２が指示されると、サーブレットへデータが転送され、サーブレットにより、注文内容となる「商品コード」，「商品名」，「個数」のデータをセッション変数に格納する処理が実行され、遷移先画面である図１３に示した注文内容確認画面１３００に対応するＪＳＰが起動される。すると、注文内容確認画面１３００がクライアントのウェブブラウザ上に表示される。
【０１３２】
図１３に示した注文内容確認画面１３００では、図１２のショッピングカート画面１２００で入力された内容をセッション変数に基づき表示される。
【０１３３】
次に、表示された注文内容確認画面１３００において、「全て取消」ボタン１３０１が指示されると、サーブレットへデータが転送され、サーブレットにより、「商品コード」「商品名」「個数」のセッション変数を開放する処理が実行され、遷移先画面であるショッピングカート画面１２００に対応するＪＳＰが起動される。すると、図１２に示したショッピングカート画面１２００がクライアントのウェブブラウザ上に表示される。
【０１３４】
また、注文内容確認画面１３００において、「ショッピングを続ける」ボタン１３０２が指示されると、サーブレットへデータが転送され、サーブレットにより、遷移先画面であるショッピングカート画面に対応するＪＳＰが起動される。すると、ショッピングカート画面１２００がクライアントのウェブブラウザ上に表示される。
【０１３５】
さらに、注文内容確認画面１３００において、「注文決定」ボタン１３０３が指示されると、サーブレットへデータが転送され、サーブレットにより、転送データに基づくデータベースのテーブルＯｒｄｅｒに対する追加更新処理が実行され、追加更新処理が成功すると、「商品コード」「商品名」「個数」のセッション変数を開放する処理が実行され、遷移先画面であるログアウト画面１４００に対応するＪＳＰが起動される。すると、図１４に示すログアウト画面１４００がクライアントのウェブブラウザ上に表示される。
【０１３６】
次に、表示されたログアウト画面１４００において、「ログアウト」ボタン１４０１が指示されると、サーブレットへデータが転送され、サーブレットにより、全セッション変数を開放する処理が実行され、遷移先画面であるログイン画面に対応するＪＳＰが起動される。すると、図１１に示したログイン画面１１００がクライアントのウェブブラウザ上に表示される。
【０１３７】
また、ログアウト画面１４００において、「ショッピング」ボタン１４０２が指示されると、サーブレットへデータが転送され、サーブレットにより、遷移先画面であるショッピングカート画面に対応するＪＳＰが起動される。すると、ショッピングカート画面１２００がクライアントのウェブブラウザ上に表示される。
【０１３８】
以上が、図５，図６に示した入出力テーブルに基づいて生成されるアプリケーションの基本的な流れである。
【０１３９】
以下、図１５〜図２０のフローチャートを参照して、図１に示したコード生成部１０７によるコード生成処理について説明する。
【０１４０】
図１５は、本発明の第２の制御処理手順の一例を示すフローチャートであり、図１に示したコード生成部１０７によるコード生成処理に対応する。なお、Ｓ２０１〜Ｓ２０４は各ステップを示す。
【０１４１】
まず、ステップＳ２０１において、入出力テーブル１０９に格納された業務仕様情報に基づいて、図示しないＤＢシステムにアクセスし、データベース（ＤＢ）を作成する（詳細は図１６に示す）。
【０１４２】
次に、ステップＳ２０２において、入力データチェック処理及びステップＳ２０１で作成したデータベースに対するデータ操作処理を行うＢｅａｎコード１１４を、入出力テーブル１０９に基づいて生成する（詳細は図１７に示す）。
【０１４３】
次に、ステップＳ２０３において、入出力テーブル１０９に基づいて、ウェブブラウザからの入力データを取得してウェブアプリケーション全体を制御するサーブレットコード１１３を生成する（詳細は図１８に示す）。
【０１４４】
次に、ステップＳ２０４において、ウェブブラウザへの表示を制御する（図１１〜図１４に示した各画面のウェブブラウザへの出力を制御する）ＪＳＰコード１１２を生成し（詳細は図１９，図２０に示す）、処理を終了して図４のフローチャートにリターンする。
【０１４５】
図１６は、本発明の第３の制御処理手順の一例を示すフローチャートであり、図１５のステップＳ２０１に示したＤＢ作成処理に対応する。なお、Ｓ３０１〜Ｓ３０５は各ステップを示す。
【０１４６】
まず、ステップＳ３０１において、図示しないＤＢシステムに対して、ワーク領域からアプリケーション名を取得し、該アプリケーション名をデータベース名とするＤＢを作成するコマンドを発行する。次に、ステップＳ３０２において、ステップＳ３０１で作成したＤＢに接続する。
【０１４７】
そして、ステップＳ３０３において、ワーク領域から入出力テーブル１０９で定義されたＩＯ区分（５列）＝「Ｆ」のデータファイル番号を１つ取得し、該データファイル番号をテーブル名、該データファイル番号内のデータ項目枝番をテーブル内の項目名としたテーブルを作成するＳＱＬ文を生成し、該ＳＱＬ文のクエリを実行する。
【０１４８】
次に、ステップＳ３０４において、ＩＯ区分（５列）＝「Ｆ」の全データファイルについてステップＳ３０３の処理が終了したか否かを判定し、まだ終了していない場合には、ステップＳ３０３に戻り、一方、既に終了したと判定した場合には、ステップＳ３０５に進む。
【０１４９】
ステップＳ３０５において、データベースから切断する処理を行い、処理を終了して図１５のフローチャートにリターンする。
【０１５０】
図１７は、本発明の第４の制御処理手順の一例を示すフローチャートであり、図１５のステップＳ２０２に示した業務処理用Ｂｅａｎ生成処理に対応する。なお、Ｓ４０１〜Ｓ４０５は各ステップを示す。
【０１５１】
まず、ステップＳ４０１において、ワーク領域から入出力テーブル１０９で定義されたＩＯ区分（５列）＝「Ｆ」のデータファイル番号を１つ取得し、該データファイル番号に対応する業務処理用のＢｅａｎファイルを生成する。なお、Ｂｅａｎファイル名は、例えば、アプリケーション名にデータファイル番号及び文字列“Ｂｅａｎ”を付加し拡張子を“ｊａｖａ（登録商標）”としたＢｅａｎファイルとする。また、このとき、作成したＢｅａｎファイル内の先頭に、「パッケージ名（例えば、アプリケーション名にデータファイル番号及び文字列“Ｂｅａｎ”を付加したもの）の宣言、「ｊａｖａ（登録商標）．ｓｑｌ」パッケージのインポート、Ｊａｖａ（登録商標）Ｂｅａｎｓを利用するために必要なインタフェースの実装等を行うコード」を格納しておく。
【０１５２】
次に、ステップＳ４０２において、検索処理コードを生成する。詳細には、「ＤＢに接続し（この時、セッション変数内に格納されたユーザＩＤ（ＵｓｒＩＤ），パスワード（ＰａｓｓＷＤ）を用いるように構成してもよい）、指定されたパラメータを検索条件として当該データファイル番号に対応するテーブルに対する検索処理を行うためのＳＱＬ文のクエリを実行し、検索結果を返し、ＤＢから切断するコード（検索メソッド）」を当該Ｂｅａｎファイル内に生成する。
【０１５３】
次に、ステップＳ４０３において、新規／追加処理コードを生成する。詳細には、「ＤＢに接続し、指定されたパラメータを新規追加データとして当該データファイル番号に対応するテーブルに対して追加処理を行うためのＳＱＬ文のクエリを実行し、新規追加結果を返し、ＤＢから切断するコード（追加メソッド）」を当該Ｂｅａｎファイル内に生成する。
【０１５４】
次に、ステップＳ４０４において、削除処理コードを生成する。詳細には、「ＤＢに接続し、指定されたパラメータにより削除対象レコードを指定して削除処理を行うためのＳＱＬ文のクエリを実行し、削除結果を返し、ＤＢから切断するコード（削除メソッド）」を当該Ｂｅａｎファイル内に生成する。
【０１５５】
そして、ステップＳ４０５において、ＩＯ区分（５列）＝「Ｆ」の全データファイルについてステップＳ４０１〜Ｓ４０５の処理が終了したか否かを判定し、まだ終了していない場合には、ステップＳ４０１に戻り、一方、既に終了したと判定した場合には、処理を終了して図１５のフローチャートにリターンする。
【０１５６】
なお、上記ステップＳ４０２，Ｓ４０３，Ｓ４０４により当該Ｂｅａｎファイル内に生成されるコードには、「ドライバクラスをロードする処理、データベースに接続する処理、ＳＱＬステートメントオブジェクトを生成する処理、サーブレットから渡されたデータに基づくＳＱＬ文のクエリを実行して結果を取得する処理、結果をセットする処理、ＳＱＬステートメントオブジェクトとデータベース接続オブジェクトをクローズする処理を行うためのコード」等が記載されているものとする。
【０１５７】
また、ステップＳ４０２，Ｓ４０３，Ｓ４０４で生成する検索処理コード，新規／追加処理コード，削除処理コードは、Ｂｅａｎファイル内で定義される業務処理用のクラス（例えば、クラス名：データファイル名に文字列“ＤＢＡｃｃｅｓｓ”を追加）内の検索メソッド，認証メソッド，追加メソッド，削除メソッドとして生成するものとする。
【０１５８】
さらに、図１７のフローチャートでは、入出力テーブルで定義されたＩＯ区分の「Ｆ」の全データファイルに対して、検索処理コード，新規追加処理コード，削除処理コードを生成する構成について示したが、入出力テーブルで定義されている処理コードのみ生成するように構成してもよい。
【０１５９】
例えば、図５，図６に示した入出力テーブルでは、項番６では、ＩＯ区分（５列）＝「ＤＢＮｉｎｓｙｏ」，参照先データファイル番号（９列）＝「Ｌｏｇｉｎ」と定義されているため、データベースの「Ｌｏｇｉｎ」テーブルに対する検索処理コードを生成する。また、項番１４〜１７では、画面属性（１４列）＝「Ｋｅｎｓａｋｕ」、対象データファイル番号（１５列）＝「ＳｈｏｈｉｎＭ」と定義されているため、データベースの「ＳｈｏｈｉｎＭ」テーブルに対する検索処理コードを生成する。さらに、項番３０では、ＩＯ区分（５列）＝「ＤＢＴｓｕｉｋａ」，参照先データファイル番号（９列）＝「Ｏｒｄｅｒ」と定義されているため、データベースの「Ｏｒｄｅｒ」テーブルに対する追加処理コードを生成するように構成してもよい。
【０１６０】
図１８は、本発明の第５の制御処理手順の一例を示すフローチャートであり、図１３のステップＳ２０３に示したサーブレット生成処理に対応する。なお、Ｓ５０１〜Ｓ５１３は各ステップを示す。
【０１６１】
まず、ステップＳ５０１において、ワーク領域から入出力テーブル１０９で定義されたＩＯ区分（５列）＝「Ｄ＊」のデータファイル番号を１つ取得し、当該データファイル番号にボタンに対応するデータ項目（ＩＯ区分＝「ＤＢ＊」）があるか否かを判定し、ボタンに対応するデータ項目がないと判定した場合には、そのままステップＳ５１３に進む。
【０１６２】
一方、ステップＳ５０１で、当該データファイル番号にボタンに対応するデータ項目があると判定した場合には、ステップＳ５０２において、サーブレットファイルを生成する。なお、サーブレットファイル名は、例えば、アプリケーション名にデータファイル番号と文字列“Ｓｅｒｖｌｅｔ”を付加し拡張子を“ｊａｖａ（登録商標）”としたサーブレットファイルとする。なお、このとき、サーブレットファイル内の先頭に、「使用するＢｅａｎパッケージ及びその他必要なパッケージをインポートするコード、アクセス修飾子，クラスの定義，クラス（例えば、ＨｔｔｐＳｅｒｖｌｅｔクラス）の継承、ウェブブラウザ（ＨＴＭＬフォーム）から送信されたパラメータ（送信情報）を受け取るためのメソッドを示すコード」を格納しておく。
【０１６３】
次に、ステップＳ５０３において、「ウェブブラウザからの送信情報（入力情報）を受け取るコード」を当該サーブレットファイル内に生成する。
【０１６４】
次に、ステップＳ５０４において、当該データファイル番号内のボタンに対応するデータ項目を１つ取得し、当該ボタンに対応するデータ項目が業務処理を伴うボタン（ＩＯ区分（５列）が「ＤＢＮｉｎｓｙｏ」，「ＤＢＫｅｎｓａｋｕ」，「ＤＢＴｓｕｉｋａ」，「ＤＢＳａｋｕｚｙｏ」）か否かを判定し、業務処理を伴うボタンでないと判定した場合には、ステップＳ５０６に進む。
【０１６５】
一方、ステップＳ５０４で、業務処理を伴うボタンであると判定した場合には、ステップＳ５０５において、「当該ボタンが指示された場合に、対応する業務処理を実行するコード」を当該サーブレットファイル内に生成する。
【０１６６】
詳細には、当該ボタンが「ＤＢＮｉｎｓｙｏ」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータのうちプライマリキーとなるデータを検索条件として、参照先データファイル番号（９列）で指定されたデータファイルに対応する検索メソッドを実行し、検索結果と参照先データ項目枝番（１０列）の指定に対応するウェブブラウザからの取得データとの比較等により認証処理を行い、認証が失敗した場合には処理を終了するコード」を当該サーブレットファイル内に生成する。
【０１６７】
また、当該ボタンが「ＤＢＫｅｎｓａｋｕ」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータを検索条件として、参照先データファイル番号（９列）で指定されたデータファイルに対応する検索メソッドを実行して検索結果を取得するコード」を生成する。
【０１６８】
また、当該ボタンが「ＤＢＴｓｕｉｋａ」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータを追加データとして、参照先データファイル番号（９列）で指定されたデータファイルに対応する追加メソッドを実行するコード」を生成する。
【０１６９】
また、当該ボタンが「ＤＢＳａｋｕｚｙｏ」の場合には、「当該ボタンが指示された場合に、ウェブブラウザから取得したデータを削除対象データとして、参照先データファイル番号（９列）で指定されたデータファイルに対応する削除メソッドを実行するコード」を生成する。
【０１７０】
次に、ステップＳ５０６において、当該ボタンに対応するデータ項目の加工機能＝「Ｓ」か否かを判定し、「Ｓ」でないと判定した場合には、ステップＳ５０８に進む。
【０１７１】
一方、ステップＳ５０６で、当該ボタンに対応するデータ項目の加工機能（７列）＝「Ｓ」であると判定した場合には、ステップＳ５０７において、図示しないが「セッションオブジェクトを取得（存在しない場合は生成）するコード」をサーブレットファイル内に生成し（不図示）、加工式（８列）の定義に基づいて「当該ボタンが指示された場合に、セッションオブジェクトにセッション変数（加工式での指定に基づくセッション変数）を追加更新するコード」をサーブレットファイル内に生成する。
【０１７２】
なお、セッションオブジェクトの取得には、ｇｅｔＳｅｓｓｉｏｎ（）メソッドをクリエイトモードで用いるものとする。また、セッションオブジェクトへのセッション変数の設定は、ｓｅｔＡｔｔｒｉｂｕｔｅ（）メソッドを用いるものとする。さらに、セッションオブジェクトからセッション変数を参照するには、ｇｅｔＡｔｔｒｉｂｕｔｅ（）メソッドを用いるものとする。
【０１７３】
次に、ステップＳ５０８において、当該ボタンに対応するデータ項目の加工機能＝「Ｅ」か否かを判定し、加工機能＝「Ｅ」でないと判定した場合には、ステップＳ５１０に進む。
【０１７４】
一方、ステップＳ５０８で、当該ボタンに対応するデータ項目の加工機能（７列）＝「Ｅ」であると判定した場合には、ステップＳ５０９において、図示しないが「セッションオブジェクトを取得するコード」をサーブレットファイル内に生成し（不図示）、加工式（８列）の定義に基づいて「当該ボタンが指示された場合に、セッションオブジェクト内の属性（加工式で指定されたセッション変数に対応する属性）を開放（削除）するコード」を当該サーブレットファイル内に生成する。なお、加工式に「Ａｌｌ  Ｏｆｆ」が指定されていたい場合には、当該ユーザのセッションオブジェクトそのものを開放（無効化）するコードを生成するものとする。
【０１７５】
なお、セッションオブジェクトの取得には、ｇｅｔＳｅｓｓｉｏｎ（）メソッドをクリエイトモードで用いるものとする。また、セッションオブジェクトからセッション変数を削除するには、ｒｅｍｏｖｅＡｔｔｒｉｂｕｔｅ（）メソッドを用いるものとする。さらに、セッションオブジェクト自体を無効化するには、ｉｎｖａｌｉｄａｔｅ（）メソッドを用いるものとする。
【０１７６】
また、加工機能にその他の演算処理を示す「Ｇ」を設け、例えば、当該ボタンに対応するデータ項目の加工機能（７列）＝「Ｇ」であると判定した場合には、加工式（８列）の定義に基づいて「当該ボタンが指示された場合に、加工式で指定された演算処理を実行するコード」を当該サーブレットファイル内に生成するように構成してもよい。
【０１７７】
次に、ステップＳ５１０において、当該ボタンに対応するデータ項目のキー種別（６列）＝「Ｔ」か否かを判定し、キー種別＝「Ｔ」でないと判定した場合には、ステップＳ５１２に進む。
【０１７８】
一方、ステップＳ５１０で、当該ボタンに対応するデータ項目のキー種別＝「Ｔ」であると判定した場合には、ステップＳ５１１において、遷移先画面ＩＤ（１１列）の指示に基づいて「当該ボタンが指示された場合に、遷移先画面に対応するＪＳＰを呼び出すコード」を当該サーブレットファイル内に生成する。
【０１７９】
次に、ステップＳ５１２において、当該データファイル内の全ボタンについてステップＳ５０４〜Ｓ５１１の処理が終了したか否かを判定し、まだ終了していない場合には、ステップＳ５０４に戻り、一方、既に終了したと判定した場合には、ステップＳ５１３に進む。
【０１８０】
ステップＳ５１３では、ＩＯ区分（５列）＝「Ｄ＊」の全データファイルについてステップＳ５０１〜Ｓ５１２の処理が終了したか否かを判定し、まだ終了していない場合には、ステップＳ５０１に戻り、一方、既に終了したと判定した場合には、処理を終了して図１５のフローチャートにリターンする。
【０１８１】
なお、図５，図６に示した入出力テーブル又は図示しない設定ファイルに、セッションオブジェクトのタイムアウト時間が設定されていた場合には、サーブレットファイル内に、「指定されたタイムアウト時間でセッションオブジェクトをタイムアウトするように設定する処理を行うコード」を生成するように構成してもよい。
【０１８２】
図１９，図２０は、本発明の第６の制御処理手順の一例を示すフローチャートであり、図１５のステップＳ２０４に示したＪＳＰ生成処理に対応する。なお、Ｓ６０１〜Ｓ６１５は各ステップを示す。
【０１８３】
まず、ステップＳ６０１において、ワーク領域から入出力テーブル１０９で定義されたＩＯ区分（５列）＝「Ｄ＊」のデータファイル番号を１つ取得し、当該データファイルに対応するＪＳＰファイルを生成する。このＪＳＰファイルのファイル名は、例えば、アプリケーション名にデータファイル名を付加し拡張子を“ｊｓｐ”とする。なお、このＪＳＰファイル内には、「ＪＳＰページのＭＩＭＥタイプとエンコードするキャラクタセットを設定するコード、当該データファイルに対応するＢｅａｎをインスタンスするコード、ｈｔｍｌのタグである“＜ｈｔｍｌ＞＜ｈｅａｄ＞＜ｔｉｔｌｅ＞アプリケーション名＜／ｔｉｔｌｅ＞”等」を生成し格納しておくものとする。
【０１８４】
次に、ステップＳ６０２において、当該データファイル番号にＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」であるデータ項目があるか否かを判定し、ないと判定した場合には、ステップＳ６０４に進む。
【０１８５】
一方、ステップＳ６０２で、当該データファイル番号にＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」であるデータ項目があると判定した場合には、ステップＳ６０３において、「新たなウィンドウを表示し、該ウィンドウから遷移先画面に対応するＪＳＰにアクセスするための画面遷移用Ｊａｖａ（登録商標）Ｓｃｒｉｐｔコード」を当該ＪＳＰファイル内に生成する。なお、このとき、遷移先の画面には、当該データ項目の値をパラメータとして遷移先画面に渡すようにプログラムコードを生成するものとする。
【０１８６】
次に、ｈｔｍｌのタグである“＜／ｈｅａｄ＞＜ｂｏｄｙ＞”等を格納した後、ステップＳ６０４において、当該データファイル番号の画面属性（１４列）に「Ｋｅｎｓａｋｕ」が指定されているかを判定し、指定されていないと判定した場合には、ステップＳ６０６に進む。
【０１８７】
一方、ステップＳ６０４で、当該データファイル番号の画面属性（１４列）に「Ｋｅｎｓａｋｕ」が指定されていると判定した場合には、ステップＳ６０５において、「Ｂｅａｎを用いて検索用処理を実行し、結果を取得するコード」を生成し、ステップＳ６０６に進む。
【０１８８】
次に、ステップＳ６０６おいて、当該データファイル番号内からデータ項目を１つ取り出し、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」であるか否かを判定し、ＩＯ区分＝「ＤＯ」且つキー種別＝「Ｔ」でないと判定した場合には、ステップＳ６０８に進む。
【０１８９】
一方、ステップＳ６０６で、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」と判定した場合には、ステップＳ６０７において、「当該データ項目を表示する出力アイテムを生成するコード」を当該ＪＳＰファイル内に生成する。但し、このコードは、当該出力アイテムが指示された場合に、当該データ項目の値をパラメータとし、遷移先画面ＩＤ（１１列）を指定して上記画面遷移用Ｊａｖａ（登録商標）Ｓｃｒｉｐｔを起動するように生成する。
【０１９０】
次に、ステップＳ６０８において、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）≠「Ｔ」であるか否かを判定し、ＩＯ区分＝「ＤＯ」且つキー種別≠「Ｔ」でないと判定した場合には、ステップＳ６１０に進む。
【０１９１】
一方、ステップＳ６０８で、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）≠「Ｔ」であると判定した場合には、ステップＳ６０９において、「当該データ項目を表示する表示出力アイテムを生成するコード」を当該ＪＳＰファイル内に生成する。
【０１９２】
次に、ステップＳ６１０において、当該データ項目のＩＯ区分（５列）＝「ＤＩ」であるか否かを判定し、ＩＯ区分＝「ＤＩ」でないと判定した場合には、ステップＳ６１２に進む。
【０１９３】
一方、ステップＳ６１０で、当該データ項目のＩＯ区分（５列）＝「ＤＩ」であると判定した場合には、ステップＳ６１１において、「当該データ項目を入力するためのテキストボックスを生成するコード」を当該ＪＳＰファイル内に生成する。
【０１９４】
次に、ステップＳ６１２において、当該データ項目のＩＯ区分（５列）＝「ＤＢ＊」であるか否かを判定し、ＩＯ区分＝「ＤＢ＊」でないと判定した場合には、ステップＳ６１４に進む。
【０１９５】
一方、ステップＳ６１２で、当該データ項目のＩＯ区分（５列）＝「ＤＢ＊」であると判定した場合には、ステップＳ６１３において、「当該データ項目に対応するボタンを生成するコード」をＪＳＰファイル内に生成する。但し、当該ボタンが指示された場合に、対応するサーブレットを起動し、当該フォームのデータをサーブレットに送信するようにコードを生成する。
【０１９６】
次に、ステップＳ６１４おいて、当該データファイル内の全データ項目について、ステップＳ６０６〜Ｓ６１３の処理が終了したか否かを判定し、終了していないと判定した場合には、ステップＳ６０６に戻る。
【０１９７】
一方、ステップＳ６１４で、当該データファイル内の全データ項目について、ステップＳ６０６〜Ｓ６１３の処理が終了したと判定した場合には、ｈｔｍｌのタグである“＜／ｂｏｄｙ＞＜／ｈｔｍｌ＞”等を当該ＪＳＰファイル内に格納した後、ステップＳ６１５に進む。
【０１９８】
次に、ステップＳ６１５おいて、ＩＯ区分（５列）＝「Ｄ＊」の全データファイルについて、ステップＳ６０１〜Ｓ６１４の処理が終了したか否かを判定し、終了していないと判定した場合には、ステップＳ６０１に戻る。
【０１９９】
一方、ステップＳ６１５で、ステップＳ６０６〜Ｓ６１３の処理が終了したと判定した場合には、処理を終了して図１５のフローチャートにリターンする。
【０２００】
なお、本フローチャートでは、ステップＳ６０６，Ｓ６０７で示したように、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」と判定した場合、当該データ項目が指示された場合に画面遷移用Ｊａｖａ（登録商標）Ｓｃｒｉｐｔを起動するようにコードを生成する構成について説明したが、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」であって、且つ当該データ項目が遷移先画面ＩＤ（１１列）に対応するデータベースのプライマリキーであると判定した場合に限り、当該データ項目が指示された場合に画面遷移用Ｊａｖａ（登録商標）Ｓｃｒｉｐｔを起動するようにコードを生成し、一方、当該データ項目のＩＯ区分（５列）＝「ＤＯ」且つキー種別（６列）＝「Ｔ」であっても、当該データ項目が遷移先画面ＩＤ（１１列）に対応するデータベースのプライマリキーでないと判定した場合には、当該データ項目が指示された場合に対応するサーブレットを起動し当該フォームのデータをサーブレットに送信するようにコードを生成する構成としてもよい。
【０２０１】
なお、ＨＴＴＰセッションは、セッションＩＤをクッキー（Ｃｏｏｋｉｅ）に設定して、クライアント側に送出し、このクッキー内のセッションＩＤにより、ウェブブラウザは、セッションオブジェクトを利用することができる。しかしながら、ウェブブラウザにこのクッキーを受け取らないような設定が成されている場合や、携帯電話等の携帯端末のウェブブラウザではクッキーを受け取ることができないものもある。このようなウェブブラウザに対応するため、ウェブアプリケーションの実行環境のウェブサーバのリライティングを有効に設定しておくようにし、「ウェブブラウザにダミーのクッキーを送信する等により、ウェブブラウザのクッキー享受の有無を判定し、当該クライアントがクッキーを受け取らない場合には、当該クライアントとのセッションＩＤをＵＲＬパラメータとして当該クライアントに送信する処理を含むコード」を生成するように構成してもよい。
【０２０２】
これにより、クッキーを受け取ることができないウェブブラウザにも対応可能なウェブアプリケーションを自動生成することができる。
【０２０３】
以上の処理により生成されるプログラムコードにより、業務設計を行い、セッション変数をデータ項目とした入出力テーブルを生成し、入出力テーブル間の関係を定義することを開発作業の中心とすることで、セッション変数を用いたシステム開発を容易に行うことができ、かつ開発作業を軽減できるため、開発期間を短縮することができる。
【０２０４】
また、業務仕様からセッション変数オブジェクトを自動生成することによって、Ｊａｖａ（登録商標）の特別な知識を必要とはせず、セッション変数を用いた複雑且つ高度なプログラミングを簡単に行うことができ、開発作業を軽減することができる。
【０２０５】
さらに、入出力テーブルからウェブアプリケーションを自動生成できるので、システム環境の変化に柔軟に対応できる保守性に優れたＷｅｂアプリケーションの開発を容易に行うことができる。
【０２０６】
また、セッション変数を自由なタイミングで、選択して開放できるため、サーバ側の無駄なリソースが減り、サーバに対する負荷を軽減できる優れたウェブアプリケーションを容易に生成することができる。
【０２０７】
以上のように、サーバサイドのプログラムが各クライアントにセッションを維持するためのセッション変数を業務仕様の枠組み（入出力テーブル）の中で定義でき、セッション変数をユーザの所望の最適なタイミングで取得保存するウェブアプリケーションを自動生成できることができる。
【０２０８】
また、セッション変数を自由なタイミングで選択して開放できる仕組みを業務仕様の枠組みの中で定義でき、セッション変数をユーザ所望の最適なタイミングで開放するウェブアプリケーションを自動生成することができる。
【０２０９】
また、業務仕様の枠組みの中で、画面遷移を定義できることで、各状態とその状態における画面名を全て把握する必要はなく、連続する２画面間において、ボタンと遷移先画面の関係のみを把握しておくだけで、大規模なシステムであっても容易に画面遷移を定義することができ、システム全体の可読性を低下させることなく、システム開発を容易に行うことができ、かつ開発作業を軽減できるため、開発期間を短縮することができる。
【０２１０】
また、業務仕様から画面遷移プログラムを自動生成することによって、Ｊａｖａ（登録商標）等のプログラムコードの特別な知識を必要とせず、ウェブアプリケーションのプログラミングコードを生成することができ、開発作業を軽減することができる。
【０２１１】
このような、可読性の高い定義情報からウェブアプリケーションを自動生成することにより、システム環境が変化した場合であっても、柔軟に対応できる保守性に優れたウェブアプリケーションの開発を容易に行うことができる。
【０２１２】
なお、本実施形態では、サーバサイドのＪａｖａ（登録商標）プログラムを用いたウェブアプリケーションを生成する場合について説明したが、生成されるプログラムコードは、Ｊａｖａ（登録商標）に限られるものではなく、ＡＳＰ（Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ），ＰＨＰ（Ｈｙｐｅｒｔｅｘｔ  Ｐｒｅｐｒｏｓｅｓｓｏｒ）等によるウェブアプリケーションであってもよい。
【０２１３】
また、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔを用いる場合について説明したが、その他のスクリプト言語を用いてもよい。
【０２１４】
以上のように、データ項目のデータベースの配置とデータ項目間の関係を記述した業務仕様の一部としてセッション変数を定義しておくだけで、定義されたセッションに係わる業務仕様からセッション変数を取得・保存・開放するウェブアプリケーションを自動生成することができる。
【０２１５】
なお、本発明のプログラム生成装置は、ＨＴＴＰプロトコルだけではなく、セッションレスのプロトコルであれば、どのようなプロトコルにも適用可能である。
【０２１６】
また、生成するウェブアプリケーションの複数ページ間で共有したいデータ項目をセッションを用いて保持するウェブアプリケーションを生成する場合について説明したが、上記複数ページ間で共有したいデータを、クッキーに設定したり、クライアントに渡すフォームのｈｉｄｄｅｎフィールドに設定するように構成してもよい。しかしながら、セキュリティ面を考えると、セッションを用いるほうが適切であると考えられる。
【０２１７】
また、上述した各変形例を合わせた構成も全て本発明の適用範囲である。
【０２１８】
さらに、図５，図６の入出力テーブルの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０２１９】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２２０】
なお、本実施形態で示したプログラム生成装置は、図５，図６に示した入出力テーブルに基づいて、Ｗｅｂアプリケーションで必要な全てのコードを生成するものであり、本発明のプログラム生成装置のユーザはＪａｖａ（登録商標）プログラミングを一切行う必要がない。これに対して、従来の技術の欄に示した特許文献１に示されるアプリケーションプログラム作成方法では、フレームワークを予め準備することにより、ユーザが個別にプログラミングする個別プログラムの量を少なくするものであり、少なくなったとはいえプログラミングを行う必要がある。この点において、本発明のプログラム生成装置とは根本的に異なるものである。
【０２２１】
それゆえに、本実施形態のプログラム生成装置では、上記特許文献１で示される汎用的なフレームワークの抱える問題点（汎用的であるがゆえに最適化されておらず、業務処理に即したセッション管理（セッション変数の種類，数，開放タイミング等）が行えず、メモリを圧迫し、サーバのパフォーマンスが低下してしまう等の問題点（多数のクライアントが同時にアクセスする可能性のあるサーバサイドプログラムでは深刻な問題点である））を解決した業務仕様に応じて最適化されたウェブアプリケーションを生成することができる。
【０２２２】
このように、本発明のプログラム生成装置では、コーディングの必要なく業務処理に応じたセッション管理を行うウェブアプリケーションを生成することができ、上記特許文献１の抱える致命的な欠点を解決するものである。
【０２２３】
以上示した点は、本実施形態で示したプログラム生成装置と、上記特許文献１に記載されるような汎用的なサーバサイドプログラムとの相違を考察する上で、特に留意すべき事項と考える。
【０２２４】
以下、図２１に示すメモリマップを参照して本発明に係るプログラム生成装置で読み出し可能なデータ処理プログラムの構成について説明する。
【０２２５】
図２１は、本発明に係るプログラム生成装置で読み出し可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０２２６】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２２７】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２２８】
本実施形態における図４，図１５，図１６，図１７，図１８，図１９，図２０に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２２９】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２３０】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０２３１】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０２３２】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３３】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３４】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウエアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０２３５】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０２３６】
【発明の効果】
以上説明したように、本発明によれば、生成されるウェブアプリケーションの複数ページ間で共有したいデータ項目（セッション変数）を定義しておき、該定義情報に基づいて、「定義されたデータ項目に対応する情報を、ウェブアプリケーションの複数ページ間で共有可能な記憶領域（セッションオブジェクト）に格納する処理を含むプログラム」を生成するので、業務仕様の枠組みの中でセッションを維持するために用意するセッション変数を定義しておくだけで、ユーザが手動でプログラミング等を行うことなく、セッション変数を取得・保存するプログラムコードを自動生成でき、Ｊａｖａ（登録商標）等のプログラム知識を必要とせず、高品質でスピーディー且つ保守性に優れたウェブアプリケーションを容易に開発することができる。
【０２３７】
また、セッション変数を自由なタイミングで、選択して開放できるため無駄なリソースが減り、サーバに対する負荷を軽減することができる等の効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すプログラム生成装置の構成を示すブロック図である。
【図２】図１に示したコード生成部によって生成したサーブレット、ＪＳＰ、およびＢｅａｎを利用したウェブアプリケーションシステムの全体構成の一例を示す図である。
【図３】図１に示したコード生成部によって生成したウェブアプリケーションシステムのアプリケーションサーバを構成するＷｅｂサーバのシステム構成を示す図である。
【図４】本発明のプログラム生成装置における第１の制御処理手順の一例を示すフローチャートである。
【図５】本発明のプログラム生成装置における業務仕様（入出力テーブル）について説明する模式図である。
【図６】本発明のプログラム生成装置における業務仕様（入出力テーブル）について説明する模式図である。
【図７】図５，図６に示した入出力テーブルにおけるＩＯ区分の分類を示す図である。
【図８】図５，図６に示した入出力テーブルにおけるキー種別の分類を示す図である。
【図９】図５，図６に示した入出力テーブルにおける加工機能の分類を示す図である。
【図１０】本発明のプログラム生成装置におけるプログラム生成処理の概念（処理の構成）を示す模式図である。
【図１１】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図１２】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図１３】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図１４】本発明のプログラム生成装置において生成されるウェブアプリケーションの一例を示す模式図である。
【図１５】本発明の第２の制御処理手順の一例を示すフローチャートである。
【図１６】本発明の第３の制御処理手順の一例を示すフローチャートである。
【図１７】本発明の第４の制御処理手順の一例を示すフローチャートである。
【図１８】本発明の第５の制御処理手順の一例を示すフローチャートである。
【図１９】本発明の第６の制御処理手順の一例を示すフローチャートである。
【図２０】本発明の第６の制御処理手順の一例を示すフローチャートである。
【図２１】本発明に係るプログラム生成装置で読み出し可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【符号の説明】
１０１  入力装置
１０２  表示装置
１０３  処理装置（ＣＰＵ，ＲＡＭ，ＲＯＭ）
１０４  外部記憶装置（ハードディスク）
１０５  画面制御部
１１６  業務仕様記述部
１０６  仕様解析部
１０７  コード生成部
１０８  全体制御部
１０９  入出力テーブル
１１２  ＪＳＰコード
１１３  Ｓｅｒｖｌｅｔコード
１１４  Ｂｅａｎコード
【図１】
2005070830.tif 000003
【図２】
2005070830.tif 000004
【図３】
2005070830.tif 000005
【図４】
2005070830.tif 000006
【図５】
2005070830.tif 000007
【図６】
2005070830.tif 000008
【図７】
2005070830.tif 000009
【図８】
2005070830.tif 000010
【図９】
2005070830.tif 000011
【図１０】
2005070830.tif 000012
【図１１】
2005070830.tif 000013
【図１２】
2005070830.tif 000014
【図１３】
2005070830.tif 000015
【図１４】
2005070830.tif 000016
【図１５】
2005070830.tif 000017
【図１６】
2005070830.tif 000018
【図１７】
2005070830.tif 000019
【図１８】
2005070830.tif 000020
【図１９】
2005070830.tif 000021
【図２０】
2005070830.tif 000022
【図２１】
2005070830.tif 000023