説明

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

【課題】複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムであって、入力されたデータの複数項目間の関連チェックが可能なプログラムを自動生成すること。
【解決手段】複数の入力項目の定義情報と前記いずれか複数の項目間の関係を示す複数の関連定義情報とを入力画面項目定義テーブル102に記憶しておき、プログラム生成部104が、前記各項目の定義情報に基づいて、「前記各項目に対応するデータを入力するための入力画面を表示する第1のプログラムコード」を生成し、また、前記各関連定義情報に基づいて、「前記第1のプログラムコードに対応する入力画面から入力される前記各項目に対応する各データの項目間の関係が前記関連定義情報を満たしているか否かそれぞれを判定するための各関連チェック処理を行う第2のプログラムコード」を生成する構成を特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムを生成するプログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体に関する。
【背景技術】
【0002】
特許文献1には、伝票入力プログラム生成方式において、入力すべき項目名や入力データの上限、下限、妥当性といった項目情報から、項目毎に入力値チェック、妥当性チェックを行って伝票等を入力する画面プログラムを作成する技術が記載されている。
【特許文献1】特開2004-157927号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、項目入力の前後で項目間に関連がある場合、先の項目を修正すれば、後の項目も関連してチェックし、かつ操作者に関連する項目の再入力を促すようなきめ細かい整合化処理は、特にプログラムの自動生成には困難な課題であった。
【0004】
すなわち、従来の伝票入力プログラム生成方式では、データ入力後の妥当性チェック等を行う画面を生成することはできたが、入力された複数の項目にまたがる項目関連チェックなどのきめ細かいチェックをするという複雑なプログラムを生成することができなかった。
【0005】
また、エラーになった全項目について、ユーザにその理由を表示し、どの項目がどのように修正すればよいか適切なメッセージを示すプログラムを生成することができなかった。
【0006】
このため、特許文献1で生成されたプログラムを使用するユーザは、エラーを修正するに当たり、画面を見て、エラー項目を判断し、当該項目を修正する場合に、ユーザの判断に頼り、一つずつカーソル移動させ、修正させるという手間のかかるものとなってしまうという問題点があった。
【0007】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムを生成するプログラム生成装置において、入力されたデータの複数項目間のチェックを含むきめ細かな妥当性チェックを行うことができるプログラムを生成する仕組を提供する。また、上記項目間のチェックの結果エラーとなった場合、チェックに抵触したエラー全てについてのメッセージを示し、さらに修正項目を明示してユーザがその修正すべき項目の箇所と内容を容易に判断できるプログラムを生成する仕組を提供する。
【課題を解決するための手段】
【0008】
本発明は、複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムを生成するプログラム生成装置において、前記複数の項目の定義情報と前記いずれか複数の項目間の関係を示す複数の関連定義情報とを記憶する記憶手段と、前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記各項目に対応するデータを入力するための入力画面を表示する第1のプログラムコード」を生成する第1の生成手段と、前記記憶手段に記憶される前記各関連定義情報に基づいて、「前記第1のプログラムコードに対応する入力画面から入力される前記各項目に対応する各データの項目間の関係が前記関連定義情報を満たしているか否かそれぞれを判定するための各関連チェック処理を行う第2のプログラムコード」を生成する第2の生成手段とを有することを特徴とする。
【発明の効果】
【0009】
本発明によれば、複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムを生成するプログラム生成装置において、前記複数の項目の定義情報と前記いずれか複数の項目間の関係を示す複数の関連定義情報とを記憶手段に記憶しておき、前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記各項目に対応するデータを入力するための入力画面を表示する第1のプログラムコード」を生成し、また、前記記憶手段に記憶される前記各関連定義情報に基づいて、「前記第1のプログラムコードに対応する入力画面から入力される前記各項目に対応する各データの項目間の関係が前記関連定義情報を満たしているか否かそれぞれを判定するための各関連チェック処理を行う第2のプログラムコード」を生成するので、複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムにおいて、入力されたデータの複数項目間のチェックを含むきめ細かな妥当性チェックを行うことができるプログラムを生成することができる。
【0010】
また、上記項目間のチェックの結果エラーとなった場合、チェックに抵触したエラー全てについてのメッセージを示し、修正項目を明示して、ユーザがその修正すべき項目の箇所と内容を容易に判断できるプログラムを生成することができる。
【0011】
従って、簡潔な入力項目情報(項目の定義情報)、項目間の入力チェック情報(関連定義情報)をテーブルに指定するだけで、伝票入力プログラムのような複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムの生成において、従来の技術では自動生成できなかった、項目間の関連チェック,関連チェックエラーメッセージ表示,関連チェックエラー項目の明示等の機能を実現するプログラムを自動で(ユーザによるコーディングなしに)生成することができる等の効果を奏する。
【発明を実施するための最良の形態】
【0012】
〔第1実施形態〕
図1は、本発明の一実施形態を示すプログラム生成装置を適用可能なシステムの全体構造を示す図である。
【0013】
図1において、101は画面構成情報であり、画面に表示すべき項目を記述した入力画面項目定義テーブル102、画面に表示するメッセージを管理するメッセージテーブル103を含む。なお、入力画面項目定義テーブル102,メッセージテーブル103の詳細は、後述する図3,図4に示す。
【0014】
100は画面項目管理部であり、表示装置110に表示される画面に従って入力装置111からプログラム生成指示が入力されると、画面構成情報101内の入力画面項目定義テーブル102,メッセージテーブル103から画面構成情報(入力画面項目定義情報,メッセージ情報等)を抽出する。
【0015】
104はプログラム生成部であり、画面表示プログラム出力部105、項目チェックプログラム出力部106、関連チェックプログラム出力部107、エラー情報表示プログラム出力部108から構成される。このプログラム生成部104は、画面項目管理部100で抽出された画面構成情報に基づいて、画面表示プログラム(入力画面を表示するHTML),項目チェックプログラム(サーブレット),関連チェックプログラム(サーブレット),エラー情報表示プログラム(再入力画面を表示するJSP)等を含むプログラム109を生成する。
【0016】
なお、生成されるプログラム109は、画面表示プログラムにより表示される入力画面から複数の項目に対応するデータを入力させ該入力される各項目のデータを項目チェックプログラムでチェックし、また、各項目間の関係を関連チェックプログラムでチェックし、エラーとなった場合には、エラー情報表示プログラムでエラーメッセージ及び再入力画面(エラー項目の背景色変更、エラー項目にカーソル移動)を表示して再入力させるものである。なお、プログラム109は、エラーでない場合には、入力される各項目のデータに基づいて所定の処理を実行するものである。
【0017】
図2は、図1に示したプログラム生成装置を実施可能な情報処理装置のハードウエア構成の一例を示すブロック図である。
【0018】
図2において、201はCPUであり、ROM203、外部メモリ204、又は、その他の記録媒体に格納されたプログラムを、RAM202上で実行することにより、図1に示した画面項目管理部100,プログラム生成部104の機能を実現して、プログラム生成装置全体を制御する。RAM202は、CPU201のワーク領域として使用される。
【0019】
外部メモリ204上には、図1に示した画面構成情報101が保持されている。また外部メモリ204は、プログラム生成部104により生成されるプログラム109が格納される。
【0020】
図3は、図1に示した入力画面項目定義テーブル102のデータ構造を示すデータ構成図である。
【0021】
図3に示すように、入力画面項目定義テーブル102は、項目名301,レイアウト302,IOタイプ303,定義タイプ304,桁数305,必須306,計算式307の各項目から構成される。
【0022】
項目名301は、画面に表示されるラベルを示す。また、レイアウト302は、画面の配置方法を示す。例えば、レイアウト302の定義が「詳細」の場合は、当該項目が単一項目として画面に配置されることを示し、また、レイアウト302の定義が「一覧」の場合は、当該項目が表形式で画面に配置されることを示す。
【0023】
IOタイプ303は、当該項目が「入出力」項目であるか、「出力」項目であるかを示す。IOタイプ303が「入出力」の場合は、当該項目が画面上からユーザ入力可能な項目であることを示し、IOタイプ303が「出力」の場合は、当該項目がプログラムによって値が表示されユーザは変更不可な項目であることを示す。
【0024】
定義タイプ304は、当該項目のタイプを示す。例えば、定義タイプ304が「数値」,「日付」,「コード」,「文字列」,「通貨」である場合には、当該項目が数値,日付,コード,文字,通貨であることを示す。また、定義タイプ304が「チェック」である場合には、当該項目が複数の項目間のチェック項目である(入出力項目でない)ことを示す。
【0025】
桁数305は、当該項目の桁数を示す。必須306は当該項目が必須入力項目であるか否かを示す。必須306が「Y」の場合は、当該項目が必須入力項目である。計算式307は、複数の項目間の制約を定義する計算式を示す。
【0026】
例えば、図3に示した「数量単価チェック」では、数量,単価にはどちらの項目にもデータが入力されているか、両方とも空であるかの制約を計算式「(数量 > 0 AND 単価 > 0) OR (数量 = '' AND 単価='')」で表し、項目「数量」と項目「単価」の関係(制約)を定義している。
【0027】
また、「在庫数チェック」では、計算式「数量 <= 商品マスタ{商品コード}.在庫数」により、「商品コード」をキーとして商品マスターテーブルより在庫数を読み出し、「数量」以上であることを項目間の制約として定義している。このように画面項目とデータベース上の値における制約を定義してもよい。
【0028】
さらに、「案件原価チェック」では、計算式「案件マスタ{案件No}.重要度 < 2 AND 商品マスタ{商品コード}.原価 <= 単価」により、「案件No」に対応する重要度(例えば取引の重要性)に応じて入力された単価が商品原価を下回ってはいけないという項目間の制約を定義している。なお、重要度が2以上のときは、単価が原価を下回ってもよいが、重要度が2未満のときは下回った場合入力エラーとなる。
【0029】
また、「日付チェック」では、計算式「日付 <= 納品日」により、「日付」に入力された日付が「納品日」に入力された日付以前でなくてはならないという項目間の制約を定義している。
【0030】
以上のように入力画面項目定義テーブル102は構成されている。
【0031】
画面生成プログラム出力部105は、項目名301、レイアウト302、IOタイプ303、桁数305等に基づいて、各項目に対応するアイテムを画面に表示するプログラムコードを生成する。
【0032】
項目チェックプログラム出力部106は、定義タイプ304、桁数305、必須306で定義した内容に関するチェックを行う項目チェックプログラムを出力する。
【0033】
例えば、項目チェックプログラム出力部106は、定義タイプ304に基づいて、各項目に入力されたデータが、数値,通貨,コード,文字列,日付等のタイプにおいて、入力可能な文字種,入力可能なフォーマットに合っているかをチェックする処理に対応するプログラムコードを生成する。
【0034】
また、項目チェックプログラム出力部106は、桁数305に基づいて、各項目に入力されたデータの文字数が、桁数以内であるかチェックする処理に対応するプログラムコードを生成する。
【0035】
さらに、項目チェックプログラム出力部106は、必須306に基づいて、各項目にデータが入力されているかチェックする処理に対応するプログラムコードを生成する。具体的には、図3の1行目の「伝票番号」については、項目チェックプログラム出力部106は、数値のみ5桁まで入力可能でデータが入力されている(必須である)ことをチェックする処理に対応するプログラムコードを生成することとなる。
【0036】
また、関連チェックプログラム出力部107は、入出力項目定義テーブルで定義タイプ「チェック」の項目情報の計算式307に項目間の式を定義しその条件を満たしているかどうかチェックするコードを生成する。
【0037】
以上のように、入力画面項目定義テーブル102は、複数の項目の定義情報(定義タイプ304が「チェック」以外の項目定義)と前記いずれか複数の項目間の関係を示す複数の関連定義情報(定義タイプ304が「チェック」となっている項目定義)とを記憶するものである。
【0038】
図4は、図1に示したメッセージテーブル103の構成を示すデータ構成図である。
【0039】
図3に示した定義タイプ304が「チェック」の計算式307に基づいて行われる項目間のチェックがエラーとなった場合、その「チェック」に対応する表示メッセージを定義する。
【0040】
図4に示すように、メッセージテーブル103内で各エラーメッセージ402は、各チェック項目名401(定義タイプ304が「チェック」の項目定義)にそれぞれ紐付けられて記憶されている。
【0041】
なお、ここでは図示していないが、図3に示した入力画面項目定義テーブル102,図4に示したメッセージテーブル103は、業務処理名,画面名,アプリケーション名等に紐付けられて画面構成情報101として管理されている。また、ここでは示さないが、上記業務処理名に対応する業務処理を定義し、該業務処理に対応するコードを、プログラム生成部104で、生成させることも可能である。
【0042】
また、図3に示した入力画面項目定義テーブル102,図4に示したメッセージテーブル103は、CSV形式のデータであっても、テキストデータであっても、その他の形式のデータであってもよい。また、図3に示した入力画面項目定義テーブル102,図4に示したメッセージテーブル103を入力するためのツールを用いる構成であってもよい。
【0043】
以下、図5〜図12を参照して、本発明のプログラム生成装置におけるプログラム生成手順の一例を説明する。
【0044】
図5は、本発明のプログラム生成装置における第1の制御処理手順の一例を示すフローチャートであり、本発明のプログラム生成装置におけるプログラム生成手順に対応する。
【0045】
図6は、本発明のプログラム生成装置における第2の制御処理手順の一例を示すフローチャートであり、本発明の関連チェックコード出力処理手順に対応する。なお、図5,図6のフローチャートの処理は、図2に示したCPU201が外部メモリ204に格納されたプログラムをRAM202上で実行することにより実現されるプログラム生成部104(図1)による処理に対応する。なお、図5中のS501〜S510,図6中のS601〜S608は各ステップを示す。また、ここでは、プログラム生成部104が生成するプログラムコードは、Java(登録商標)サーブレットプログラムコード,JSPプログラムコード,HTMLコードとする。なお、HTMLコードで初期画面を表示し、Java(登録商標)サーブレットでチェック処理を行い、JSPプログラムでエラー表示処理を行わせるように生成する。
【0046】
まず、画面構成情報101(入力画面項目定義テーブル102,エラーメッセージテーブル103)等を作成して外部メモリ204に登録(記憶)しておく。そして、入力装置111からプログラム生成指示が入力されると、画面項目管理部100は、図3に示した入力画面項目定義テーブル102から入力画面項目定義情報,図4に示したメッセージテーブル103からメッセージ情報をそれぞれ読み込み、プログラム生成部104に出力する。
【0047】
これに応じて、プログラム生成部104は、画面項目管理部100より渡された入力画面項目定義情報,メッセージ情報をそれぞれRAM202内に保持する。また、プログラム生成部104は、図2に示した外部メモリ204に格納されたプログラムコード部品701,702,703を読み出してRAM202上に保持して、本フローチャートの処理を開始する。なお、図7は、本発明のプログラム生成装置におけるプログラム生成手順を説明するためのプログラムコード部品の一例を示す図である。図7において、701はサーブレットコード部品、702は初期画面表示用のHTMLコード部品、703はエラー表示用のJSPコード部品に対応する。
【0048】
また、これらのプログラムコード部品は、図2に示した外部メモリ204に格納されているものとする。また、このプログラムコード部品は、プログラム生成手順の理解を容易にするためのものであり、記述を省略している箇所も複数ある。また、本発明のプログラム生成装置が生成するプログラムコードはこのプログラムコード部品の例に限定されるものではない。
【0049】
なお、プログラム生成部104は、サーブレットプログラムとJSPプログラム間でデータの受け渡しを行うためのデータクラス(後述する図12に示すエラー情報を記憶するためのクラス)を定義するコードも、部品として予め図2に示した外部メモリ204に格納されているものとする。
【0050】
まず、ステップS501において、プログラム生成部104は、RAM202内から項目定義を1つ読み込む(以下、この項目をカレントの項目と呼ぶ)。そして、ステップS502において、プログラム生成部104は、カレントの項目の定義タイプ304が「チェック」であるか否かを判定する。
【0051】
ステップS502で、プログラム生成部104が、カレントの項目の定義タイプ304が「チェック」でない(即ち、「数値」「通貨」「コード」「文字」「日付」「送信ボタン」等である)と判定した場合には、ステップS503に処理を遷移させる。
【0052】
そして、ステップS503において、プログラム生成部104(項目チェックプログラム出力部106)は、クライアントから送信されるカレントの項目のデータを取得しメモリ内に格納するコード(例えば、項目名「納品日」の場合「request.getParameter("納品日")」等)、及び、該取得した項目のデータを、当該項目定義内のIOタイプ303,定義タイプ304,桁数305,必須306等に基づいて、当該項目のデータをチェックして、エラー項目名,エラーメッセージを後述する図12に示すエラー情報にセットするコードを、RAM202内に保持している部品701の701aに示す箇所に出力する。
【0053】
なお、ここで、項目のデータをチェックするコードとは、上記取得した項目のデータがカレントの項目の定義タイプ304(「数値」,「日付」,「コード」,「文字列」,「通貨」等)に合っているか、また、該データの桁数が桁数305に合っているか、さらに、必須306が「Y」の場合、該データがNULLでないか等をチェックするコードに対応する。なお、個々の項目を単独にチェックするコードを生成する技術は従来のものであるので、ここでは出力されるコードの具体例は省略する。
【0054】
次に、ステップS504において、プログラム生成部104(画面表示プログラム出力部105)は、カレントの項目の定義情報に基づいて、項目を表示させるコード(例えば、HTMLコード)を、RAM202内に保持している部品702の702aに示す箇所に出力する。例えば、「伝票番号<input type="text" name="伝票番号" maxlength="5">」,「登録<input type="submit" name="登録">」等を出力する。
【0055】
また、このステップでは、プログラム生成部104(画面表示プログラム出力部105)は、カレントの項目の定義情報に基づいて、項目,クライアントから送信される項目のデータを表示させるコード(例えば、JSPコード)を、RAM202内に保持している部品703の703aに示す箇所に出力する。例えば、「伝票番号<input type="text" name="伝票番号" maxlength="5" value=<%= request.getParameter("伝票番号")%>>」等を出力する。
【0056】
そして、ステップS503の処理が終了後、プログラム生成部104は、ステップS506に処理を遷移させる。
【0057】
一方、ステップS502で、プログラム生成部104が、定義タイプ304が「チェック」であると判定した場合には、ステップS505に処理を遷移させる。
【0058】
そして、ステップS505において、プログラム生成部104(関連チェックプログラム出力部107)は、関連チェックコード出力処理(図6)を実行し、ステップS506に処理を遷移させる。
【0059】
以下、図6を参照して関連チェックコード出力処理について説明する。
【0060】
まず、ステップS601において、プログラム生成部104(関連チェックプログラム出力部107)は、クライアントから送信されるデータから当該チェック項目に対応する全ての値を取得し、当該チェック項目の計算式(以下、カレントの計算式)に基づいて、チェックが「OK」か「エラー」かを判定するJava(登録商標)サーブレットプログラムコードを、RAM202内に出力する。
【0061】
詳細には、この処理は、プログラム生成部104(関連チェックプログラム出力部107)が、外部メモリ204に格納されるプログラムコード部品801(図8)を読み出して、該部品801内の801aに示す個所に、カレントの計算式に対応するコードを挿入したコードを、RAM202内に保持されているコード701の701bに示した箇所に出力する。これにより、例えば、カレントの計算式が「日付 <= 納品日」の場合、図9の901に示すようなコードが、コード701の701bに示した箇所に出力される。
【0062】
図8は、本発明のプログラム生成装置におけるプログラム生成手順を説明するためのプログラムコード部品の一例を示す図である。このプログラムコード部品は、図2に示した外部メモリ204に格納されているものとする。
【0063】
図9は、図6に示したフローチャートの処理で生成過程のプログラムコードの一例を示す図である。なお、図8,図9に示したプログラムコード例は、プログラム生成手順の理解を容易にするためのものであり、記述を省略している箇所も複数ある。また、本発明のプログラム生成装置が生成するプログラムコードはこのプログラムコード部品の例に限定されるものではない。
【0064】
次に、図6のステップS602〜S606において、プログラム生成部104(関連チェックプログラム出力部107)は、関連チェック結果がエラーのときに、当該計算式からエラーに関連する項目名を抽出して記憶するコードを出力し、ステップS607に処理を進める。
【0065】
詳細には、ステップS602において、プログラム生成部104(関連チェックプログラム出力部107)は、カレントの計算式に含まれている項目から1つの項目を取得する。次に、ステップS603,S604において、プログラム生成部104は、ステップS602で取得した項目が「画面上に表示される項目」であり、且つ「ユーザが入力可能である項目」であるか(即ち、当該項目が図3に示した入力画面項目定義テーブル102内でIOタイプ303が「入出力」であるか)否かを判定する。
【0066】
そして、ステップS603,S604で、プログラム生成部104(関連チェックプログラム出力部107)が、ステップS602で取得した項目が「画面上に表示される項目」であり、且つ「ユーザが入力可能である項目」であると判定した場合には、ステップS605において、当該項目名をRAM202内に記憶し、ステップS606に処理を遷移させる。
【0067】
一方、ステップS603,S604で、プログラム生成部104(関連チェックプログラム出力部107)が、ステップS602で取得した項目が「画面上に表示される項目」でない、又は「ユーザが入力可能である項目」でないと判定した場合には、プログラム生成部104(関連チェックプログラム出力部107)は、そのままステップS606に処理を遷移させる。
【0068】
次に、ステップS606において、プログラム生成部104(関連チェックプログラム出力部107)は、カレントの計算式の全ての項目についてステップS602〜S605の処理を終了したか否かを判定し、未だ終了していないと判定した場合には、ステップS602に処理を戻す。
【0069】
一方、ステップS606で、プログラム生成部104(関連チェックプログラム出力部107)が、カレントの計算式の全ての項目についてステップS602〜S605の処理を終了したと判定した場合には、ステップS607に処理を遷移させる。
【0070】
以上、ステップS602〜S606の処理により、例えば、カレントの項目の計算式307が「日付 <= 納品日」の場合、RAM202上に「{'日付', '納品日'}」が格納されることになる。
【0071】
次に、ステップS607において、プログラム生成部104(関連チェックプログラム出力部107)は、ステップS602〜S606の処理でRAM202上に記憶した項目名をエラー項目情報としてJava(登録商標)サーブレット実行時にメモリ上に保持されるエラー情報(図12)内に格納コードを出力する。これは、ユーザに修正するべき箇所としてエラーフィールド情報として表示するためである。
【0072】
詳細には、この処理は、プログラム生成部104(関連チェックプログラム出力部107)は、まず、外部メモリ204に格納されるプログラムコード部品802(図8)を読み出して、該部品802内の802aに示す個所に、ステップS602〜S606の処理でRAM202上に記憶した項目名を挿入する。これにより、例えば、カレントの項目の計算式307が「日付 <= 納品日」の場合、図9の902に示すようなコードがRAM202内に保持される。
【0073】
次に、プログラム生成部104(関連チェックプログラム出力部107)は、該エラー項目名を挿入したコード902を、RAM202内のコード701の701b内に保持されるコード801の801bに示す個所に出力する。
【0074】
次に、ステップS608において、プログラム生成部104(関連チェックプログラム出力部107)は、結果がエラーとなったチェック項目に対応する表示メッセージを図4のメッセージテーブルから取得し、エラーメッセージをJava(登録商標)サーブレット実行時にメモリ上に保持されるエラー情報(図12)内に格納コードを出力する。
【0075】
詳細には、この処理は、プログラム生成部104(関連チェックプログラム出力部107)は、まず、外部メモリ204に格納されるプログラムコード部品803(図8)を読み出す。次に、プログラム生成部104は、カレントのチェック項目名に対応する表示メッセージを、図4に示したメッセージテーブルから取得し、前記読み出したプログラムコード部品803内の803aに示す個所に挿入する。これにより、RAM202内に、例えば、カレントの項目の計算式307が「日付 <= 納品日」の場合、図9の903に示すようなコードが生成される。
【0076】
次に、プログラム生成部104(関連チェックプログラム出力部107)は、該表示メッセージを挿入したコード903を、RAM202内のコード701の701b内に保持されるコード801の801cに示した個所に挿入出力し、処理を終了する。
【0077】
以上、図6に示した処理により、図10のフローチャートに対応する図11に示すような関連チェックコードが,図7のコード701の701bに示す箇所に出力される。
【0078】
図10は、図6に示した関連チェックコード出力処理により出力される関連チェックコードによる処理の一例を示したフローチャートである。
【0079】
図11は、図6に示した関連チェックコード出力処理により出力される関連チェックコードの一例を示す図である。なお、図10,図11では、特に、項目名が「日付チェック」の場合を示している。
【0080】
また、図6に示した関連チェックコード生成処理で生成されたプログラム(図10,図11)を実行することにより、図12に示すようなエラー情報がメモリ内に格納される。
【0081】
図12は、図6に示した関連チェックコード生成処理で生成されたプログラムの実行時にメモリ内で保持管理されるエラー情報の一例を示す図である。
【0082】
図12に示すように、エラー情報には、エラー項目名501,エラーメッセージ502の組が複数保持管理される。
【0083】
以下、図5のフローチャートの説明に戻る。
【0084】
次に、ステップS506において、プログラム生成部104は、全ての項目についてステップS501〜S505の処理を終了したか否かを判定し、まだ終了していないと判定した場合には、ステップS501に処理を戻し、次の項目に対する処理に遷移させる。
【0085】
一方、ステップS506で、プログラム生成部104が、全ての項目についてステップS501〜S505の処理が終了したと判定した場合には、ステップS507に処理を遷移させる。
【0086】
次に、ステップS507において、プログラム生成部104(エラー情報表示プログラム出力部108)は、JSP実行時にメモリ上にインスタンスされたクラスのオブジェクトとしてのエラー情報(項目チェック,関連チェック実行時に蓄積されたもの)内の全エラーメッセージ(図12の502)を取得してユーザに表示するエラーメッセージ出力コードを、RAM202内に保持されているコード703の703cに示した箇所に出力する。
【0087】
次に、ステップS508において、プログラム生成部104(エラー情報表示プログラム出力部108)は、上記各エラー情報内の全エラー項目名(図12の501)を取得して、該エラー項目名に対応する全フィールド(即ち、エラーの原因となった全フィールド)の色を変更表示するエラーフィールド表示処理コード(例えば、エラー項目が「日付」の場合「document.myFORM.日付.style.backgroundColor='red';」のようなJava(登録商標)Scriptコード)を、RAM202内に保持されているコード703の703aに示した箇所に出力する。なお、ここでは、エラーフィールドの背景色を変更する(例えば、「赤」に変更)場合について説明したが、エラーフィールドのエッジ部分の色を変更するように構成しても、エラーフィールド内の文字の色やフォントを変更するように構成しても、エラーフィールドの項目名の色やフォントを変更するように構成してもよい。即ち、エラーフィールドに対応する部分の表示形態を変更する。
【0088】
次に、ステップS509において、プログラム生成部104(エラー情報表示プログラム出力部108)は、上述の全エラー項目のフィールド(例えば、エラー項目の先頭のフィールド)にカーソルを移動させるカーソル移動コード(例えば、エラー項目の先頭フィールドが「伝票番号」の場合「document.myFORM.伝票番号.focus();」のようなJava(登録商標)Scriptコード)を、RAM202内に保持されているコード703の703bに示した箇所に出力する。
【0089】
最後に、ステップS510において、プログラム生成部104は、予め設定されている業務処理を実行するコードを、RAM202内に保持されているコード701の701cに示した箇所に出力する。
【0090】
なお、最後に、プログラム生成部104は、以上の処理によりRAM202上に生成出力されたJava(登録商標)サーブレットコード(部品701から生成されたコード),HTMLコード(部品702から生成されたコード),JSPコード(部品703から生成されたコード)をそれぞれ外部メモリ204内にファイル形式で保存するように構成してもよい。
【0091】
なお、本実施形態では、図2に示した外部メモリ204内に図7,図8に示したようなプログラムコード部品を格納しておき、該プログラムコード部品を用いてプログラムコードを生成する場合について説明したが、プログラムコード部品の形式で格納する代わりに、該プログラムコード部品に対応するコードを図6に示したフローチャートに対応するプログラム内に埋め込む形式であってもよい。
【0092】
以上示したように、図1に示した各プログラム出力部105〜108は、プログラム109を生成する。
【0093】
なお、本実施形態では、サーブレットでチェック処理を行い、JSPでエラー時の画面表示処理を行うプログラムコードを生成する場合について説明したが、項目間のエラーチェック,エラーメッセージ表示,フィールド色変更,カーソル移動の処理を、全てJava(登録商標)Scriptで行い、エラーのない場合にのみ、サーバで業務処理を行うプログラムコードを生成するように構成してもよい。
【0094】
以下、図13,図14を参照して、本発明のプログラム生成装置により生成されたプログラムの処理の一例を説明する。
【0095】
図13は、本発明のプログラム生成装置により生成されたプログラムの処理の一例を示すフローチャートである。なお、図中、S1〜S17は各ステップを示す。なお、この処理は、本発明のプログラム生成装置により生成された初期画面に対応するHTMLコードに基づいてクライアントのWebブラウザ上に表示された画面において処理ボタン(登録ボタン)が押下され、クライアントのWebブラウザから、プログラム生成装置により生成されたサーブレットプログラムを実行するサーバに、データが送信された際に処理が開始される。
【0096】
サーブレット(サーバのCPUにより実行される)は、ステップS1において、項目チェック処理を行い(定義タイプ、桁数、必須チェック等を行い)、項目チェックがOKであるか否かを判定する。
【0097】
ステップS1で、サーブレットが、項目チェックがOKでないと判定した場合には、ステップS2において、当該項目の項目名,エラーメッセージをエラー情報に追加する。なお、項目チェックの場合、メッセージはチェック内容によって決める。例えば、項目「伝票番号」は定義タイプ「数値」であるので、入力値が「ABC」である時は、エラーメッセージの内容は「伝票番号は数値を入力してください。」とエラーメッセージをエラー情報に格納する。
【0098】
そして、ステップS2の処理が終了すると、サーバは、ステップS3に処理を遷移させる。
【0099】
一方、ステップS1で、サーブレットが、項目チェックがOKと判定した場合には、そのままステップS3に処理を遷移させる。
【0100】
次に、ステップS3において、サーブレットは、全ての項目について項目チェック処理が終了したか否かを判定し、まだ、全ての項目について項目チェック処理が終了していないと判定した場合には、ステップS1に処理を戻し、次の項目の処理に遷移する。
【0101】
一方、ステップS3で、サーブレットが、全ての項目について項目チェック処理が終了したと判定した場合には、ステップS4に処理を遷移させる。
【0102】
次に、ステップS4において、サーブレットは、関連チェック処理を行い、関連チェックがOKであるか否かを判定する。
【0103】
ステップS4で、サーブレットが、関連チェックがOKでないと判定した場合には、ステップS5,S6において、サーブレットは、当該関連チェックに使用した項目名を全て抽出する。次に、ステップS7において、サーブレットは、ステップS5,S6で抽出した全項目名、対応するエラーメッセージをエラー情報に追加する。例えば、目「日付」の入力値が「2005/6/10」で、項目「納品日」が「2005/6/9」の場合、関連チェック項目である「日付チェック」の計算式「日付<=納品日」の計算を満たさないため、エラーと判断する。そして、計算式に含まれている項目、「日付」「納品日」2つの項目をエラー情報として格納する。このように、計算式からユーザが修正するべきフィールドを導き出すことが可能となる。
【0104】
そして、ステップS7の処理が終了すると、サーバは、ステップS8に処理を遷移させる。
【0105】
一方、ステップS4で、サーブレットが、関連チェックがOKと判定した場合には、そのままステップS8に処理を遷移させる。
【0106】
次に、ステップS8において、サーブレットは、全ての関連チェック処理が終了したか否かを判定し、まだ、全ての関連チェック処理が終了していないと判定した場合には、ステップS4に処理を戻し、次の関連チェック処理に遷移する。
【0107】
一方、ステップS8で、サーブレットが、全ての関連チェック処理が終了したと判定した場合には、ステップS9に処理を遷移させる。
【0108】
次に、ステップS9において、サーブレットは、エラー情報があったか否かを判定し、エラー情報がなかったと判定した場合には、ステップS10に処理を遷移させて、業務処理を実行して、処理を終了する。
【0109】
一方、ステップS9で、サーブレットが、エラー情報があったと判定した場合には、JSPを呼び出し、ステップS11に処理を遷移させる。
【0110】
ステップS11〜S13において、JSP(サーバのCPUにより実行される)は、全てのエラー情報からメッセージを抽出し、該抽出した全てのエラーメッセージをクライアントのWebブラウザに送信する。これにより、クライアントのWebブラウザは、エラーメッセージを図14の1401に示すように表示する。
【0111】
ステップS14〜S16において、JSPは、全てのエラー情報からエラー項目名を抽出し、該抽出した全てのエラー項目名に対応するクライアント画面上のフィールドの背景色を変更、エッジの色を変更、または文字色を変更、あるいはフォントを変更する(即ち、項目の表示形態を変更する)ような、Java(登録商標)Scriptコードを含むHTMLコードを生成して、クライアントのWebブラウザに送信する。これにより、クライアントのWebブラウザは、エラー項目に対応するクフィールドの表示形態を図14の1402〜1404に示すように変更する。
【0112】
次に、ステップS17において、JSPは、ユーザが訂正すべき入力項目にカーソルを移動させなくてもよいように、エラー情報のフィールド(例えば、エラー項目の先頭の項目)にカーソルを移動させるような、Java(登録商標)Scriptコードを含むHTMLコードを生成して、クライアントのWebブラウザに送信し、処理を終了する。これにより、クライアントのWebブラウザは、エラー項目に対応するクフィールドの表示形態を図14の1402〜1404に示すように変更する。
【0113】
以上示したように、画面から複数の項目の情報を入力させて業務処理を実行するプログラムを自動生成するための各種定義情報(即ち、プログラム作成内容)を指定する際、エラーの原因となる複数の項目が関連する場合の関連する項目間のチェック内容,関連エラー時にガイドとなるメッセージ等を、図3に示した入力画面項目定義テーブル102(特に、計算式307),図4に示したメッセージテーブル103に示すように、テーブル形式で簡単に指定でき、このような簡単なプログラム作成内容の指定を行うだけで、画面から複数の項目の情報を入力させて所定の処理を実行するプログラムであって複数の項目が関連する項目間の関連チェック,該関連チェックに対応するエラーメッセージの一斉表示,エラー項目の一斉表示(エラー項目の表示形態変更),エラー項目への自動カーソル移動等の各種機能を備えたプログラムのコードを、自動で(ユーザによる手作業のコーディングをすることなく)生成することができる仕組を提供することができる。
【0114】
図14は、図13に示したプログラム実行時にクライアントのWebブラウザ上に表示される画面の一例を示す図である。
【0115】
図14に示す画面は、本発明のプログラム生成装置により生成されたプログラム実行時に、「伝票番号」が未入力,「納品日」が「日付」以前であり、エラーメッセージ1401が表示され、エラーに関連する項目「伝票番号」1402,「日付」1403,「納品日」1404のフィールドの背景色が変更され、エラー項目「伝票番号」1402にカーソルが移動された結果の画面に対応する。
【0116】
なお、本実施形態では、本発明のプログラム生成装置は、一つの画面の中での関連項目チェックを行うコードを生成する構成について説明したが、複数画面にまたがる関連項目チェックについても同様に行うことが可能である。
【0117】
例えば、伝票に入力する項目が一画面に入らない場合、画面A,B,Cに分けることがある。この場合、各画面にユーザが入力した項目値をメモリ上の画面共通項目エリアに保存し、画面共通項目エリア上の項目値間の関連チェックをするようにサーブレットプログラムコードを生成する構成とする。
【0118】
そして、関連チェックでエラーとなった場合、エラー入力項目の存在する画面を表示し、画面共通項目エリアにからユーザが入力した項目値を画面に表示し、カーソル移動させ、エラーメッセージを画面に表示しユーザに入力を促すようなJSPコードを生成する構成とする。
【0119】
また、エラー項目が複数の画面に存在する場合は、エラーが複数画面あることをユーザに示し、いずれかの画面を選択させ、該選択された画面を表示し、カーソルを移動させる、あるいは、チェック項目の順序によって表示する画面を決定し、カーソルを移動させるようなJSPコードを生成する構成とする。
【0120】
以上のような構成により、本発明のプログラム生成装置は、複数画面にまたがる関連項目チェックを実行可能なプログラムコードを生成することができる。
【0121】
なお、上記実施形態では、Java(登録商標)のコードを生成する場合について説明したが、どのようなプログラム言語のコードであってもよい。
【0122】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0123】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0124】
以下、図15に示すメモリマップを参照して本発明に係るプログラム生成装置で読み取り可能なデータ処理プログラムの構成について説明する。
【0125】
図15は、本発明に係るプログラム生成装置で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【0126】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【0127】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【0128】
本実施形態における図5,図6に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【0129】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0130】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【0131】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0132】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0133】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0134】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0135】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0136】
なお、上記実施形態内の各変形例を組み合わせた構成も全て本発明に含まれるものである。
【図面の簡単な説明】
【0137】
【図1】本発明の一実施形態を示すプログラム生成装置を適用可能なシステムの全体構造を示す図である。
【図2】図1に示したプログラム生成装置を実施可能な情報処理装置のハードウエア構成の一例を示すブロック図である。
【図3】図1に示した入力画面項目定義テーブルのデータ構造を示すデータ構成図である。
【図4】図1に示したメッセージテーブルの構成を示すデータ構成図である。
【図5】本発明のプログラム生成装置における第1の制御処理手順の一例を示すフローチャートである。
【図6】本発明のプログラム生成装置における第2の制御処理手順の一例を示すフローチャートである。
【図7A】本発明のプログラム生成装置におけるプログラム生成手順を説明するためのプログラムコード部品の一例を示す図である。
【図7B】本発明のプログラム生成装置におけるプログラム生成手順を説明するためのプログラムコード部品の一例を示す図である。
【図8】本発明のプログラム生成装置におけるプログラム生成手順を説明するためのプログラムコード部品の一例を示す図である。
【図9】図6に示したフローチャートの処理で生成過程のプログラムコードの一例を示す図である
【図10】図6に示した関連チェックコード出力処理により出力される関連チェックコードによる処理の一例を示したフローチャートである。
【図11】図6に示した関連チェックコード出力処理により出力される関連チェックコードの一例を示す図である。
【図12】図6に示した関連チェックコード生成処理で生成されたプログラムの実行時にメモリ内で保持管理されるエラー情報の一例を示す図である。
【図13A】本発明のプログラム生成装置により生成されたプログラムの処理の一例を示すフローチャートである。
【図13B】本発明のプログラム生成装置により生成されたプログラムの処理の一例を示すフローチャートである。
【図14】図13に示したプログラム実行時にクライアントのWebブラウザ上に表示される画面の一例を示す図である。
【図15】本発明に係るプログラム生成装置で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【符号の説明】
【0138】
100 画面項目管理部
101 画面構成情報
102 入力画面項目定義テーブル
103 メッセージテーブル
104 プログラム生成部
105 画面表示プログラム出力部
106 項目チェックプログラム出力部
107 関連チェックプログラム出力部
108 エラー情報表示プログラム出力部
109 プログラム

【特許請求の範囲】
【請求項1】
複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムを生成するプログラム生成装置において、
前記複数の項目の定義情報と前記いずれか複数の項目間の正常な関係を定義する複数の関連定義情報とを記憶する記憶手段と、
前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記各項目に対応するデータを入力するための入力画面を表示する第1のプログラムコード」を生成する第1の生成手段と、
前記記憶手段に記憶される前記各関連定義情報に基づいて、「前記第1のプログラムコードに対応する入力画面から入力される前記各項目に対応する各データの項目間の関係が正常であるか否かそれぞれを判定するための各関連チェック処理を行う第2のプログラムコード」を生成する第2の生成手段と、
を有することを特徴とするプログラム生成装置。
【請求項2】
前記記憶手段は、前記各関連定義情報にそれぞれ紐付けて、前記各関連定義情報に対応する各エラーメッセージを記憶するものであり、
前記記憶手段に記憶される前記各関連定義情報と前記各エラーメッセージに基づいて、「前記第2のプログラムコードに対応する各関連チェック処理により項目間の関係が正常でないと判定された場合に、対応するエラーメッセージを表示する第3のプログラムコード」を生成する第3の生成手段を設けたことを特徴とする請求項1記載のプログラム生成装置。
【請求項3】
前記第3の生成手段により生成される第3のプログラムコードは、前記第2のプログラムコードに対応する各関連チェック処理により項目間の関係が正常でないと判定されたケースが複数ある場合に、対応する複数のエラーメッセージを一度に表示するプログラムコードであることを特徴とする請求項2記載のプログラム生成装置。
【請求項4】
前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記第2のプログラムコードに対応する各関連チェック処理により項目間の関係が正常でないと判定された場合に、前記各項目に対応するデータを再入力するための入力画面を表示し、さらに表示される各項目のうち、前記項目間の関係が正常でないと判定された各項目の入力エリアの表示形態を変更する第4のプログラムコード」を生成する第4の生成手段を設けたことを特徴とする請求項1〜3のいずれかに記載のプログラム生成装置。
【請求項5】
前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記第2のプログラムコードに対応する各関連チェック処理により項目間の関係が正常でないと判定された場合に、前記各項目に対応するデータを再入力するための入力画面を表示し、さらに表示される各項目のうち、項目間の関係が正常でないと判定されたいずれかの項目の入力エリアに入力カーソルを移動させる第5のプログラムコード」を生成する第5の生成手段を設けたことを特徴とする請求項1〜4のいずれかに記載のプログラム生成装置。
【請求項6】
前記第1の生成手段は、「前記各項目に対応するデータを入力するための1又は複数の入力画面を表示する第1のプログラムコード」を生成するものであり、
前記第2の生成手段は、「前記第1のプログラムコードに対応する1又は複数の入力画面から入力される前記各項目に対応する各データの項目間の関係が正常であるか否かそれぞれを判定するための各関連チェック処理を行う第2のプログラムコード」を生成することを特徴とする請求項1〜5のいずれかに記載のプログラム生成装置。
【請求項7】
前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記第1のプログラムコードに対応する入力画面から入力される前記各項目に対応する各データが対応する項目の定義を満たしているデータか否かそれぞれを判定するための各項目チェック処理を行う第6のプログラムコード」を生成する第6の生成手段を設けたことを特徴とする請求項1〜6のいずれかに記載のプログラム生成装置。
【請求項8】
複数の項目に対応するデータを入力させ該入力される各項目のデータに基づいて所定の処理を実行するプログラムを生成するプログラム生成方法において、
前記複数の項目の定義情報と前記いずれか複数の項目間の正常な関係を定義する複数の関連定義情報とを記憶手段に記憶させる登録ステップと、
前記記憶手段に記憶される前記各項目の定義情報に基づいて、「前記各項目に対応するデータを入力するための入力画面を表示する第1のプログラムコード」を生成する第1の生成ステップと、
前記記憶手段に記憶される前記各関連定義情報に基づいて、「前記第1のプログラムコードに対応する入力画面から入力される前記各項目に対応する各データの項目間の関係が正常であるか否かそれぞれを判定するための各関連チェック処理を行う第2のプログラムコード」を生成する第2の生成ステップと、
を有することを特徴とするプログラム生成方法。
【請求項9】
請求項8に記載されたプログラム生成方法をコンピュータに実行させるためのプログラム。
【請求項10】
請求項8に記載されたプログラム生成方法をコンピュータに実行させるためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2007−41676(P2007−41676A)
【公開日】平成19年2月15日(2007.2.15)
【国際特許分類】
【出願番号】特願2005−222642(P2005−222642)
【出願日】平成17年8月1日(2005.8.1)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【Fターム(参考)】