JP4136271B2 - Application server system - Google Patents

Application server system Download PDF

Info

Publication number
JP4136271B2
JP4136271B2 JP2000143123A JP2000143123A JP4136271B2 JP 4136271 B2 JP4136271 B2 JP 4136271B2 JP 2000143123 A JP2000143123 A JP 2000143123A JP 2000143123 A JP2000143123 A JP 2000143123A JP 4136271 B2 JP4136271 B2 JP 4136271B2
Authority
JP
Japan
Prior art keywords
item
program
data
screen
application server
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.)
Expired - Lifetime
Application number
JP2000143123A
Other languages
Japanese (ja)
Other versions
JP2001325098A (en
Inventor
伸裕 中村
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.)
Sumitomo Electric Industries Ltd
Original Assignee
Sumitomo Electric Industries Ltd
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 Sumitomo Electric Industries Ltd filed Critical Sumitomo Electric Industries Ltd
Priority to JP2000143123A priority Critical patent/JP4136271B2/en
Publication of JP2001325098A publication Critical patent/JP2001325098A/en
Application granted granted Critical
Publication of JP4136271B2 publication Critical patent/JP4136271B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、アプリケーションプログラムの開発および実行方法の改善に関し、特に、いわゆるオブジェクト指向プログラミングにおいて、プログラム間で共用できる部分を大幅に拡大するプログラム開発環境および実行環境の改善に関する。
【0002】
【従来の技術】
従来から、コンピュータを用いたシステム開発においては、開発コストの削減、納期の短縮、品質向上が重要な目標となっている。そのため、たとえば手順中心の設計手法からデータを中心とした設計手法への転換、RAD(rapid application development)開発手法の導入、プログラムの部品化などが試みられ、一定の効果を上げている。
【0003】
たとえばデータ中心設計開発手法の導入によりかなりの生産性の向上が見られた。またRAD開発手法では、ユーザの要求に合わせてプロトタイピングを行ない、その結果によりさらにユーザの要求を確認してプロトタイピングの修正を行なう、というように開発サイクルを短くすることができる。その結果、RAD開発手法を導入したシステムでは、主として外部設計、詳細設計の期間短縮、コスト削減を達成することができた。その結果、プログラム作成のフェーズが、システム開発全体で占める割合が相対的に大きくなって来ている。
【0004】
また、最近では、企業の基幹システムの開発プラットフォームにイントラネットを採用するケースが多くなっている。そうした基幹システムには、アプリケーションサーバを採用してシステム構築を行なうのが、ネットワーク化された企業では効率的である。典型的には、アプリケーションサーバのシステム開発では、HTML(HyperText Markup Language)を拡張したタグ言語が用いられる。そうしたタグ言語は、習得が容易であり、イントラネットの開発ツールとして高い生産性を有するものとして評価されている。
【0005】
しかし、企業を取り巻く環境が一層厳しくなるにつれ、システム開発に対する要求も厳しくなっている。具体的には、より企業のビジネスサイクルが短縮化してきたため、納期の一層の短縮化が求められ、またコストの面でもより低コストで製品を提供できる企業が有利となってきている。
【0006】
そこで、前述のようにシステム開発においてプログラム作成のフェースの占める割合いが相対的に大きくなっていることから、この部分の生産性をさらに向上させることが重要である。そのために最も効率的と思われるのは、プログラムの部品化の促進である。
【0007】
プログラムの部品化は、システム開発に要する工数を引き下げ、その結果システム開発に要する期間の短縮と、そのために要する費用の削減との両方の面でシステム開発の競争力強化に貢献する。また十分に信頼性のおけるプログラムのみを部品化することで、システムの品質向上にも貢献できる。したがって、プログラムの部品化を如何に効率的に行えるか、そしてそのように準備された部品を如何に効率的に組み合わせてアプリケーションプログラムを構築するかが重要である。
【0008】
しかし、従来イントラネットシステムの開発に用いられていたタグ言語では、こうした部品化の機能が弱い。そのため従来のタグ言語をそのまま用いる限り、生産性の向上はあまり望めないことが明白となっている。
【0009】
図32に一般的な、データベース(DB)を利用したイントラネットのシステム構成図を示す。図32を参照して、一般的なイントラネット600は、ネットワーク610を介して互いにHTTPと呼ばれるプロトコルで通信可能なアプリケーションサーバ612、DBサーバ614、および複数個のクライアントPC616を含む。なお「HTTP」はHyper Text Transfer Protocolの省略形である。
【0010】
クライアントPC616上では一般的なブラウザ630が動作する。
DBサーバ614ではRDBMS622が稼動している。
【0011】
アプリケーションサーバ612上ではWWWサーバ618が稼動している。「WWW」はWorld Wide Webの省略形である。WWWサーバ618の実体はJavaサーブレットエンジン620である。Javaサーブレットエンジン620は、ネットワーク610を介してクライアントPC616のブラウザ630から与えられる要求に応じてRDBMS622をアクセスするための画面を形成するための情報(HTMLソース)をブラウザ630に与える。ブラウザ630はこの画面を表示し、ユーザによって入力された情報をJavaサーブレットエンジン620に返す。Javaサーブレットエンジン620は、与えられた情報にしたがってRDBMS622をアクセスし、結果を表示するためのHTMLソースをブラウザ630に返す。ブラウザ630ではこの結果を表示することにより、ユーザの要求に答える。
【0012】
こうして、イントラネット600では、アプリケーションサーバ612上で稼動するWWWサーバ618によって複数個のクライアントPC616からの要求を処理し、結果を各クライアント上のブラウザに返すことでRDBMS622を用いた業務処理を行なっていく。
【0013】
【発明が解決しようとする課題】
しかし、前述したとおりこうしたシステムにおいてJavaサーブレットエンジン620を用いたシステムを開発するために重要なプログラムの部品化およびその再利用は、従来のタグ言語を用いている限り限界に達しているように思われる。従来のプログラム言語では、部品化の対象はアプリケーションから独立して切り出せる部分である。そのため、業務ロジックを含むようなプログラムは部品化することができなかった。たとえば、システムの部品化は全体の2割程度に留まっていた。
【0014】
特に、企業の基幹業務システムではデータベースを取扱うことになるが、データベースの各項目にはそれぞれデータベース固有の名称が与えられている。そのため、データベースを取扱うプログラム内にそうした固有の名称が埋込まれている。業務が異なり、データベースが変わるとそうした名称は変わる。そのため、あるシステムで作成したプログラムを他のシステムの開発において再利用することは困難である。データベースの各項目を処理するプログラムを部品化することができれば、部品化およびその再利用がすすみ、プログラム開発の効率が向上すると思われる。
【0016】
この発明の目的は、データベースの各項目を処理するためのプログラムの部品化およびその再利用をより効率的に行なうことができるアプリケーションサーバシステムを提供することである。
【0017】
【課題を解決するための手段】
この発明のある局面に従うアプリケーションサーバシステムは、データベースを格納するデータベース装置に接続されるアプリケーションサーバシステムであって、データベースのレコードを構成する各項目に対応するデータ項目と、データ項目を参照するために用いられる項目名とは関連付けられており、アプリケーションサーバシステムは、データ項目を使用する画面を表示するクライアント装置にさらに接続されており、クライアント装置から、画面を表示する要求の入力を受け付ける入力手段と、画面におけるデータ項目の表示のために項目名を使用してコーディングされたプログラムと、項目ごとに規定される項目オブジェクトとを格納する記憶手段とを備え項目オブジェクトは、データ項目の属性と、項目名に対応するデータ項目を操作するためのメソッドに対応するメソッドプログラムコードと含み、属性は、項目名と、画面に表示される項目名称とを含み、プログラムは、クライアント装置において画面を表示するためのソースを構成する部品プログラムを含み、プログラムと、項目オブジェクトに対応する処理とを実行する演算手段を備え、演算手段は、プログラムを実行することにより、要求に基づいて、画面の表示に使用されるデータ項目を特定する項目名部品プログラムに与える手段と、項目名に基づいて部品プログラムを実行することにより、データ項目に対応する項目オブジェクトを検索する検索手段と、部品プログラムを実行することにより、検索手段により検索された項目オブジェクトに含まれる項目名称とメソッドプログラムコードとを取得する取得手段と、取得手段により取得された項目名称およびメソッドプログラムコードを用いて部品プログラムを実行することにより、項目名称を含む画面を表示するためのソースを生成する生成手段とを含み、クライアント装置に対して生成手段により生成されたソースを送信する送信手段をさらに備える。
【0019】
好ましくは、演算手段は、クライアント装置からの情報を取得するセッション変数取得手段と、クライアント装置から送信されたデータを取得するデータ取得手段と、データ取得手段により取得されたデータに基づいて、データベースにアクセスするためのアクセス手段とをさらに含む。
【0021】
好ましくは、入力手段は、クライアント装置において入力された更新データの入力をさらに受け付け、演算手段は、更新データに基づいて、データベースに格納されているデータ項目を更新する更新手段をさらに含む
【0023】
好ましくは、属性は、データ項目のデータ型をさらに含み、メソッドは、データ型に基づいてデータ項目のエラーチェックを行なうためロジックを含む
【0025】
好ましくは、項目オブジェクトのデータ定義は、テータベースのデータ定義に基づいている
【0027】
好ましくは、生成手段は、項目オブジェクトの修正のための画面を表示するソースを生成する。
【0029】
さらに好ましくは、生成手段は、タグ言語に基づいてソースを生成する。
【0043】
【発明の実施の形態】
従来、応答速度が遅いため実用化が進まなかったJava言語は、Java VM(Virtual Machine)をサーバ側で動かすサーブレット(Servlet)の形態で米国を中心にその使用が広がりつつ有る。Java言語は、以下の特徴を有している。
【0044】
(1) 幅広いプラットフォームで動作し、次世代OS(Operatingsystem)として期待されるLinuxへの対応も容易である。
【0045】
(2) 多くのベンダが共通のAPI(Application Programming Interface)でツールを提供しており、1社のみのツールベンダに依存することがない。
【0046】
(3) オブジェクト指向言語であり差分プログラミングなど、プログラムの再利用の仕組を持っている。
【0047】
以上のようにJava言語は本発明の目的と合致した特性を持っているため、本実施の形態のシステムではJava言語を採用することとした。ただし、本発明はJava言語を用いたシステムのみに適用可能なわけではなく、オブジェクト指向言語であればどのようなプログラム言語を用いてもよい。たとえばC++、オブジェクトパスカルなどである。
【0048】
そして、本発明では、オブジェクト指向言語におけるプログラム開発およびプログラム実行の上で特徴的な「オブジェクト」として、データベースのレコードを構成する各項目ごとに規定される、「項目オブジェクト」と呼ぶものを用いることとした。項目オブジェクトの内容の詳細については後述することとして、ここでは項目オブジェクトが従来は考えられていなかったもので本発明において新規なものであり、また項目オブジェクトをプログラム開発に用いることによりデータベース操作のためのプログラムの部品化が大きく促進されたことを指摘しておく。
【0049】
Java言語はオブジェクト指向言語であり、部品とフレームワークとの2つの側面でプログラムの再利用が可能である。
【0050】
ここで、部品とは従来から行なわれている手法と同様のものであり、複数のプログラム中で共通する部分を抜き出し、他のプログラムから呼出して再利用するものである。一般的に部品は業務ロジックからは独立したものであることが多い。
【0051】
一方、フレームワークとは、メインルーチンや業務ロジックを含むプログラムの集まりである。たとえば、以下に説明する受注フレームワークは、一般的な受注を実装しており、そのまま利用することも、差分プログラミングによって独自の機能を追加して再利用することもできる。本発明では、一方で項目オブジェクトを導入してデータベース固有の名称などを抽象化し、それによって業務プログラムに共通する共通のロジックとして実装されるべき部分をフレームワークとして構築することが可能となった。そのため、本発明によれば従来の部品化の範囲を超えて、より広い範囲でプログラムの再利用が可能になる。
【0052】
図1に、本発明のシステムを開発するためのパーソナルコンピュータの外観を示す。以下に説明するようにこのパーソナルコンピュータは一般的な構成のものでよい。なお、本発明にしたがって開発されたプログラムによって実現されるアプリケーションサーバが動作するコンピュータも一般的なものでよく、図1に示されるものと同様なものでよい。
【0053】
図1を参照して、このコンピュータシステムは、CD−ROM(Compact Disc Read-Only Memory)ドライブ110およびFD(Flexible Disk)ドライブ112を備えたコンピュータ100と、ディスプレイ102と、プリンタ104と、キーボード106と、マウス108とを含む。
【0054】
図2に、このコンピュータの構成をブロック図形式で示す。図2に示されるようにこのコンピュータ100は、CD−ROMドライブ110およびFDドライブ112に加えて、それぞれバス126に接続されたCPU(Central Processing Unit)116と、オペレーティングシステムのブートアッププログラムなどを記憶したROM(Read Only Memory)118と、実行されるプログラムをロードするための、およびプログラム実行中のデータを記憶するためのRAM(Random Access Memory)120と、作成されたプログラムなどを不揮発的に記憶するためのハードディスク114と、このコンピュータ100をネットワーク132に接続するためのネットワークインタフェース130とを含んでいる。CD−ROMドライブ110にはCD−ROM122が装着される。FDドライブ112にはFD124が装着される。
【0055】
既に述べたようにこのプログラム開発システムは、コンピュータハードウェアと、CPU116により実行されるソフトウェアとにより実現される。一般的にこうしたソフトウェアは、CD−ROM122、FD124などの記憶媒体に格納されて流通し、CD−ROMドライブ110またはFDドライブ112などにより記憶媒体から読取られてハードディスク114に一旦格納される。さらにハードディスク114からRAM120に読出されてCPU116により実行される。図1および図2に示したコンピュータのハードウェア自体は一般的なものである。したがって、本発明の最も本質的な部分はCD−ROM122、FD124、ハードディスク114などの記憶媒体に記憶されたソフトウェアである。
【0056】
なお図1および図2に示したコンピュータ自体の動作は周知であるので、ここではその詳細な説明は繰返さない。
【0057】
また、上記したコンピュータと同様のコンピュータを、アプリケーションサーバとして動作させることも当然考えられる。その場合の上記した各構成要素の役割も上記したものと同様である。
【0058】
[Java フレームワークの検討]
図32に示す一般的なイントラネットでは、ブラウザ630とアプリケーションサーバ612との間ではHTTPプロトコルが使用されている。HTTPプロトコルはセッションレス(ステートレス)のプロトコルである。ブラウザ630に表示される画面はHTMLで構成される。HTTPおよびHTMLは情報を閲覧するために開発された仕様であり、基幹系システムを構築する場合には生産性を悪化させる要因となることが分かった。
【0059】
イントラネットで使用するHTTPプロトコルがセッションレスであるため、ブラウザ630とアプリケーションサーバ612との間の通信は毎回切断されている。しかし、基幹システムではログインしたユーザ情報をブラウザ630で表示されるページ間で引継ぐ必要があり、何らかのセッション管理の仕組みを作り込む必要がある。
【0060】
また、セッションレスであるがために、ブラウザ630に表示される画面の間での遷移の順番が保証されない。そのため、ユーザの側からURL(Uniform Resource Locator)を指定して、本来であれば一連の流れの途中で表示されるべき画面に直接アクセスしたり、アクセス権限のない画面を表示させたりすることができる可能性がある。そうした事態を防止するために、各プログラムでは、ブラウザ630に表示される画面が、設計時に想定した遷移の順番となっているか否かをチェックしたり、表示される画面が所定の権限に基づいてアクセスされたものかどうかをチェックしたりする必要がある。
【0061】
その他にも、ユーザの操作ミスで不正なデータがアプリケーションサーバ612に送信されてくることがある。たとえば最終的にデータをサーバにおくるための指示をするために準備されたボタン(「Submit」ボタンなどと呼ばれる。)が誤って二度押されたりすると、データが二重にサーバに送信されることになる。このため、何らかの手当てをしないとサーバにおいて当該データが二重に処理されたりする可能性があるが、そうした誤動作を防止するための仕組みも必要となる。
【0062】
さらに、通常のクライアント&サーバシステムでは、GUI(Graphical User Interface)によって画面設計を行なうことができるが、イントラネットシステムでは、画面表示のためのHTMLを出力するためのコーディングを手作業で行なわなければならない。すなわち、イントラネットシステムでは、画面で使用するデータ項目全てに対して、項目名称、入力形式(テキストボックス、ラジオボタン等)、および入力桁数等の指定などをソースコード中で行なわなければならない。そのため、通常のGUIを用いたシステム開発と比較して工数が増えることが避けられない。また、HTML出力のコードと業務ロジックのコードとが混在することが多く、プログラムの部品化をさまたげる要因となっている。
【0063】
これらの要因を考慮しながらプログラムを作成すると、生産性の大きな低下が避けられない。それのみでなく、プログラム作成中での考慮もれなどによる品質の低下も懸念される。そこで、フレームワークの内部でこれらの問題を解決し、プログラマーが特に意識しなくても高品質のプログラムが容易に作成できるように、フレームワークの構築を行なうこととした。
【0064】
[フレームワークに必要な機能]
フレームワークは、それ以後開発される全てのシステムのベースとなる可能性が高い。したがって一旦フレームワークをリリースした後に大きな変更を行なうような事態はできるだけ避ける必要がある。今後開発されるいかなるシステムに対しても対応できるように、フレームワークが持つべき機能を検討した結果、下記の機能をフレームワークとして実装することととした。
【0065】
(1) イントラネット固有の問題の隠ぺい
既に述べたようなイントラネットシステムでの生産性悪化の要因を隠ぺいし、プログラマーが特に意識することなくプログラムの開発が行えるようにする。
【0066】
(2) 多国語対応
ビジネスのグローバル化に伴い、ある企業が海外に子会社を持つケースが増加している。そうした場合にも、同一システムを国内と海外との双方で使用することが望ましいが、使用する言語の問題がある。通常のアプローチとしては、最初に日本語版のプログラムを作成したのち、そのプログラムのうち必要な部分(画面に表示される項目名称、メッセージなど)を外国語(たとえば英語)に翻訳することであろう。しかしその場合には、実質的に一つのプログラムを二つの別々のプログラムで実現することとなる。そのようにプログラムを二重に持つのはプログラムの保守性を悪化させることは明らかである。そのため、プログラムの保守性を悪化させることなく多国語に対応できるようなプログラム開発の手法が望まれる。
【0067】
そこで本システムでは、一つのシステム中に予め日本語のみならず外国語の資源も組込んでおき、プログラムの実行時のパラメータ指定によって言語を切り替える仕組みを実装することとした。こうした機能は、後述するように項目オブジェクトを使用することにより簡単に実現することができる。
【0068】
このような仕組みをフレームワークとして実装することにより、たとえばプログラム開発の人件費が安い海外でプログラムを開発し、それを日本語化することも容易に行える。
【0069】
(3) 項目名称のカスタマイズ
ある企業が自社のために開発したシステムをパッケージ化し外販することはよくあることである。しかしその場合、たとえばシステム中で使用されるデータベースの項目名称などを、購入企業での使用形態に合わせてカスタマイズしたい、というニーズが強い。そこで、本システムではそうしたニーズを満足させるべく、フレームワークにそのための機能を実装することとした。この機能も項目オブジェクトを使用すると簡単に実現することができる。
【0070】
[プログラム再利用の形態]
プログラムの再利用を考えた場合、プログラム全体をそのまま利用するもの、データ加工のための単純なサブルーチンレベルで再利用するもの、など様々な粒度のものがある。そこで、プログラムの再利用の形態としてどのようなものがあるかを検討したところ、以下の4つが主要なものとして分類された。
【0071】
(1) 部品
部品はプログラム再利用の最小単位である。部品は業務アプリケーションによって呼出され使用される。
【0072】
(2) プログラムパターン
プログラムパターンとは、部品を組み合わせた業務ロジックを含まないプログラムのことをいう。プログラムパターン中で使用するデータ項目などはパラメータで与えることができる。基本テーブルのメンテナンスなどに使用することができる。
【0073】
(3) フレームワーク
フレームワークとは部品およびプログラムパターンを組合せ、基本的な業務ロジックを組込んだ、再利用可能なプログラムの集合体のことをいう。フレームワーク中のプログラムは、使用するシステムにあわせて差分プログラムを用いることにより、実際の業務に適応させながら再利用することができる。
【0074】
(4) パッケージ
パッケージとは、システム全体をそのまま再利用する再利用形態である。
【0075】
本実施例を実現するにあたっては、まず部品を開発し、プログラムパターン、フレームワークの順に開発を進めることとした。その結果、後に詳述する項目オブジェクトという概念に到達したのである。以下、項目オブジェクトを利用したイントラネットシステム構築の手法、およびそのようなイントラネットシステムの構造と動作とについて述べる。
【0076】
[システム開発の手順]
図3を参照して、本システムの開発手順は以下のとおりである。まず、処理対象となるデータベースの構成に基づいて項目オブジェクトを作成する(140)。そして、そのようにして作成された項目オブジェクトを利用してアプリケーションプログラムの作成を行なう(142)。次に、そのように作成されたアプリケーションを実行することによりイントラネットシステムのアプリケーションサーバを実現する(144)。
【0077】
[項目オブジェクト]
図4を参照して、項目オブジェクト150は、データベースの各項目に対応して設定されるオブジェクトである。項目オブジェクトの例は、受注業務でいえばデータ項目「受注番号」に対応する項目オブジェクト150Aである。この項目オブジェクト150Aは、プログラム開発過程ではオブジェクトクラスであって、プログラム実行時にはこの項目オブジェクトのインスタンスが形成されてプログラム実行に利用される。
【0078】
項目オブジェクト150はオブジェクトクラスであるので、図4に示すとおり、項目名(たとえば「OrderNum」)の他に、プロパティとして項目名称(日本語名、英語名、他の言語による名称など)、データ長、データ型(数値型、ストリング型、など)、入力形式(テキストボックス、ラジオボタン、チェックボックス、プルダウンリスト、プルダウンメニュー、コンボボックス、スライダなど)、対応DB列名など、データ項目を抽象化した場合にそなえておくべき属性一般、および入力されたデータが正しいか否か(たとえばデータ型が数値型のときに、入力されたデータが数値であるか否か、桁数はデータ長以内か、など)のチェックを行なうためのプログラムコードをメソッドの形で備えている。
【0079】
項目オブジェクトの備える属性、メソッドなどについて表1に示す。
【0080】
【表1】

Figure 0004136271
【0081】
表1において「項目名」とは、プログラムのコーディング中でこのデータ項目を参照するために用いられる名称である。通常はDB中の、この項目オブジェクトに対応する列名を使用し、アルファベットと一部の記号のみからなる。
【0082】
「項目名称」とは、プログラム実行時に画面に表示される名称のことをいう。本実施の形態では、項目名称として5通りを設定することが可能である。したがって項目名を画面表示に使用する場合もあわせると、6通りの表示を切替えて項目名称を表示することができる。
【0083】
表1に示されるその他の要素については、当業者にはその意味は明白であろうから、ここではこれ以上の説明は行なわない。
【0084】
[DB定義からの項目オブジェクト定義の抽出]
項目オブジェクトは、本実施の形態のプログラム開発システムではJava言語のクラス定義のソースプログラムの形でテキスト形式で準備される。項目オブジェクトはデータベースと深い関係があるので、データベース定義からそのまま項目オブジェクトのデータ定義を行なうようにすると便利である。
【0085】
図5に、そのようなプログラム開発システムの簡単なシステムブロック図を示す。実際にはこのシステムが図1および図2に示すような一般的なパーソナルコンピュータによって実現可能であることは言うまでもない。
【0086】
図5を参照して、このシステムは、テキスト形式で予め準備されたDB定義情報160からデータベース166を作成したり、DB定義情報160からデータベース166の各項目に対応する項目オブジェクトの定義の原型であるデータ定義168をテキスト形式で出力したり、ディスプレイ102、キーボード106およびマウス108を用いたインタラクティブな処理によりデータ定義168の内容を修正したり、修正されたデータ定義168から項目オブジェクトのクラス定義のためのJavaソース164のファイルを出力したりする処理を行なうDB作成ツール162からなる。
【0087】
DB定義情報160の内容の一例を図6に示す。またデータ定義168の一例を図7に示す。図7に示されるデータ定義168は、図6のDB定義情報160のうち、「/Record」文の直後の「受注番号」で始まる行から抽出された情報に基づいて作成され、さらに後にプログラマーによって必要な項目が補充されたものである。各行は、属性を示すキーワード(たとえば「/LANG」、「/INPUTTYPE」など)と、そのキーワードに対応する属性内容とからなっている。このデータ定義168の内容にさらにデータチェックなどのメソッドに相当するプログラムコーディングの原形を追加する処理もこのときに行なわれる。
【0088】
DB定義情報160からデータ定義168を作成することにより、項目オブジェクト作成のための工数を最小限に抑えることができる。
【0089】
図8に、DB定義情報160からデータ定義168を作成するプログラムの概略フローチャートを示す。図8を参照して、まず最初にプログラマーにより指定されたDB定義ファイルをオープンする(180)。つぎにこのファイルの1行目を読む(182)。その行の内容が「/RECORD」か否かを判定し(184)、読込んだ1行の内容が「/RECORD」となるまでステップ182および184の処理を繰返す。
【0090】
「/RECORD」の一行を読込むと、それ以後はDB定義の一行ごとにデータ定義168を作成し出力する処理を繰返す。具体的には、まずDB定義情報160の次の1行を読み(186)、その行の内容が「/END」か否かを判定する。「/END」でなければ、読込んだ1行の内容からデータ定義168を作成し、項目オブジェクトファイルとして出力して(190)次の行を読込む処理を行なう(186)。もし読込んだ1行の内容が「/END」であれば、DB定義情報160の中の全てのDB項目を処理したということであるから、DB定義ファイルをクローズし(192)処理を終了する。
【0091】
ステップ190での処理はDB定義の書式とデータ定義168との書式との対応関係に基づいて定められる。その内容についてはシステムに依存し、かつ当業者には明らかであるのでここではその詳細は述べない。
【0092】
図5に示されるDB作成ツール162の機能のうち、データ定義168の内容をインタラクティブに修正する処理について、その操作の面から図9〜図12を参照して説明する。開発対象のシステムにもよるが、項目オブジェクトの数は数千に達することもあるため、データ定義168を効率的に修正することが可能となっていることが望ましい。
【0093】
図9を参照して、本実施の形態のシステムでは、DB作成ツール162の基本画面200において、メニュー202から生成メニュー204を選択することによって表示されるプルダウンメニューの中から、「項目オブジェクト編集」というメニュー項目206をポインタ208で選択することによりデータ定義168の修正を行なう処理が起動される。これにより、図10に示されるデータ定義選択画面210が表示される。
【0094】
データ定義選択画面210の上部には、アルファベットのA〜Zまでに対応するボタンからなるアルファベット選択ボタン列212が表示される。この中のたとえば「U」に対応するボタン214をポインタ208で選択することにより、データ定義一覧フィールド216にそのアルファベットで始める項目名を有する項目オブジェクトの一覧が表示される。
【0095】
図11を参照して、この画面220において、データ定義一覧フィールド216に表示された項目名のうち、修正対象となる項目に対応するデータ定義(たとえば「UserID」に対応するデータ定義フィールド222)をポインタ208で選択することにより、選択されたデータ定義の内容が項目オブジェクト情報修正画面として表示される。このときの表示の一例を図12に示す。
【0096】
図12を参照して、項目オブジェクト情報修正画面224では、選択されたデータ定義に対応する項目オブジェクト情報が一覧表示される。これらの内容を修正した後、更新ボタン228を押すことにより、もとのデータ定義ファイルが更新後の情報で上書きされる。
【0097】
図9〜図12に示す処理は通常のGUIを用いたプログラム開発ツールで開発することができる。これら画面によって行なわれる処理の内容は簡単なので、これら画面を実現するためのプログラムの詳細はここでは述べない。しかし当業者にはこれら画面を用いてデータ定義ファイルを更新する方法については明らかであろう。
【0098】
[アプリケーションプログラムの構造]
次に、このようにして準備した項目オブジェクトを用いたアプリケーションの構造について説明する。この説明により、そうしたアプリケーションをどのようにして作成するかについても当業者には明らかとなるであろう。
【0099】
図13に、アプリケーションサーバによってクライアントPC上に実現される画面の一例を示す。この例は、ユーザDB(ユーザテーブル)をメンテナンスするためのプログラムである。図13を参照して、ユーザテーブルメンテナンス画面230は、インラインメニュー240と、ボタン242と、項目名称244および項目フィールドとからなる複数の項目別の行からなる入力フォームとを含む。ブラウザによりこの画面を表示するためのHTMLソースをアプリケーションサーバで作成し、クライアントPCに送って表示させ、クライアントPCから送信されてくる入力データにしたがってユーザテーブルを更新するのがアプリケーションサーバの機能である。
【0100】
従来であれば、この画面で主となる入力フォームの部分を、ユーザテーブルメンテナンスとは別のプログラム、たとえば部署登録の画面で再利用することは困難であった。ユーザ登録のプログラムには、ユーザID、氏名などのようなユーザ登録プログラム特有の項目名称が埋込まれているからである。しかし、項目オブジェクトを導入することにより、プログラムからそうしたデータ項目の属性を分離することができ、フォーム部分を再利用することが可能となった。
【0101】
図14に、このイントラネットシステムのアプリケーションサーバを構成するWWWサーバ250のシステム構成を簡単に示す。図14を参照して、WWWサーバ250は、ネットワーク252を介して複数のクライアントPC上で動作するブラウザ254、256等からのリクエストを処理するためのJavaサーブレットエンジン260と、Javaサーブレットエンジン260を介して与えられるクライアントブラウザからのリクエストを処理するためのメインプログラム262と、メインプログラム262が各クライアントごとにセッションを維持するために用意するセッション変数270、272などを格納するセッション変数オブジェクト264およびメインプログラム262の実行時に参照する項目オブジェクト280、282などを格納するメモリ空間266とを含む。
【0102】
メインプログラム262は、クライアントに送信される部品を構成するフォーム部品290を含んでいる。そして、後述するようにフォーム部品290に表示すべきデータ項目をメモリ空間266内の項目オブジェクトの中から選択することにより所望のフォームを形成するHTMLソースが形成され、クライアントPCのブラウザに送信される。フォーム部品290自体にはデータ項目が埋込まれることがないので、フォーム部品290を他のプログラムに再利用することが可能となる。またユーザテーブルメンテナンスのためのプログラムが実装すべき機能(登録、削除、変更など)のロジック部分は他のDBテーブルのメンテナンスにも使用可能であり、その場合にはフォーム部品290に与える項目オブジェクトを変えればよいので、プログラムの再利用がより効率的に行える。
【0103】
WWWサーバ250が実装すべき機能構造を図15に示す。図15を参照して、WWWサーバ250は、ブラウザ254、256からのリクエストによって起動するJavaプログラムからなる。このプログラム(メインプログラム262)は、セッション変数270からログイン情報や前の画面の情報を取得し、アクセス権限や画面遷移の正統性を検査するためのセッション変数取得部300と、ブラウザ254、256などのブラウザから送信されるデータ(例えば入力された受注番号など)を取得するためのForm/URL変数取得部302と、取得されたデータに基づいてSQL(Structured Query Language)を組み立てるためのSQL組立部304と、組み立てられたSQLを実行してデータベース166にアクセスするためのSQL実行部306と、データベース166から取得したデータに対して、必要に応じてフォーマット変換などの処理を行なうためのデータ加工部308と、こうして得られたデータをHTMLタグとともにブラウザ254、256などに送信する処理を行なうHTML出力部310と、次回のアクセスのためにセッション変数270を保管しておくためのセッション変数の保存部312とを含む。
【0104】
特定のプログラムと連係するために特別なフォーマットでデータファイルを書出すような処理を行なうプログラムを除けば、大半のプログラムは上記の順序で処理を行なう。図15に示す各処理単位を基本部品として、必要な数の部品を予め用意すれば、プログラマは自己が作成しようとするプログラムが実現すべき機能に対応する部品を見つけだして組み合わせることで効率的にプログラムを作成することができる。また上記した処理単位全体をフレームワークとして用意することで、必要な業務ロジックを追加するだけでプログラムを完成させることができる。
【0105】
[項目オブジェクトを利用した画面出力]
さて、メモリ空間266に格納された項目オブジェクトを使用した画面出力(HTMLソース出力)の機構の概略を図16に示す。図16を参照して、メインプログラム262は、フォーム部品290に対して画面で使用する項目を特定する情報を与える。フォーム部品290は、メモリ空間266の中で、メインプログラム262から与えられた項目に対応する項目オブジェクトを探し出す。項目オブジェクトには、画面に表示すべきデータ名称、データ長などに関する情報がすべて含まれているので、フォーム部品290は項目オブジェクトからこれら情報を取得することにより、ブラウザ254、256などに与えるべきHTMLソースを作成することができる。作成されたHTMLソースをブラウザ254、256などに送信することにより、図13に示される画面がクライアントPCの上で動作するブラウザにより表示される。
【0106】
表示される項目の名称、データ長、データ形式などに関する情報は項目オブジェクトから取得されるので、メインプログラム262中にはそれらの情報はコーディングされていない。メインプログラム262の一部の例を図17に示す。図17を参照して、メインプログラム262のプログラム中では、まずパラメータ定義行320でこの処理において使用するべき項目オブジェクト名称のリストである定数「p_fields」を定義しておき、後のロジック中のフォーム部品をコールするCALL命令322において、この定数をパラメータとしてフォーム部品に渡している。つまり、業務に直結した項目オブジェクトの指定は、パラメータ定義行320に見られるのみである。
【0107】
この場合にメインプログラム262がフォーム部品290に与えるパラメータを図17に示されるように{userid,username,furigana,...}とすると、これらパラメータを他の項目オブジェクトの名称のリストに変えるだけで、全く同じメインプログラム262のロジックとと同じフォーム部品290とを用いて、全く別の画面の表示を実現することができる。
【0108】
図18に、フォーム部品を構成するプログラムのロジックをフローチャート形式で示す。与えられたパラメータのうち、最初から順番に1パラメータずつ以下の処理を行なう。すなわち、当該パラメータについて、そのパラメータで指定される項目オブジェクトを参照し、項目名称、データ長などの情報からその項目を入力するためのフォーム部品に相当するHTMLソースを作成する(330)。
【0109】
続いて全てのパラメータを処理したか否かを判定し(332)、全てのパラメータを処理するまでステップ330、332の処理を繰返す。
【0110】
全てのパラメータを処理したと判定された場合、これまでの処理で作成されたHTMLソースをブラウザ254などに対して出力し、処理を終了する。
【0111】
このようにメインプログラムのロジック中には項目特有の情報がコーディングされていない。その結果、メインプログラムを種々の処理において共通に再利用することが可能となった。またフォーム部品290自体も項目特有の情報と分離されているので、フォーム部品290についても種々の処理において共通に再利用することが可能となった。
【0112】
このように、本発明によれば、項目オブジェクトを用いることによりプログラムからユーザインタフェースを分離し、部品化することに成功した。さらに、項目オブジェクト中に当該項目のエラーチェック、DB更新のためのロジックをメソッドとして実装しておくことで、業務に直結するプログラム部分を部品化することが可能となった。
【0113】
なお、項目オブジェクトを実装することで、WWWサーバ250の応答速度が低下する懸念があったので、一度使用した項目オブジェクト(のインスタンス)はメモリー中に常駐するようにし、次のリクエストの処理においても再利用することとした。その結果、項目オブジェクトを利用することによる応答時間の悪化はほとんど見られないか、十分許容範囲内に収まることが確認された。
【0114】
[フレームワークの構築]
図19に基本フレームワークの構造を模式的に示す。図19を参照して、基本フレームワーク340は、セッション変数取得部342、権限チェック部344、DBコネクション取得部346、メイン処理部348、DBコネクション返却部350およびセッション変数保存部352からなる。これらのうち、セッション変数取得部342、権限チェック部344およびセッション変数保存部352は図15に示したセッション変数取得部300、セッション変数の保存部312などに対応する。DBコネクション取得部346およびDBコネクション返却部350は図示しないデータベースの参照、更新に先立ってDBとのコネクションを確立し、処理後にはコネクションをコネクションプールに返却するためのものである。なお、本実施の形態では、DBとのコネクション時間の短縮化を図るために、予め複数個のDBコネクションを確立しておき、リクエストに応じてこれらコネクションをそれら要求に割り当て、処理が終了するとコネクションをプールに返却する構成をとっている。
【0115】
基本フレームワーク340では、メイン処理部348以外の部分については予め実装してあるが、メイン処理部348の内容については何も実装されていない。開発するプログラム部分360は、メイン処理部348に対する差分プログラミングにより実装する。そのためプログラマーとしてはセッション管理、コネクション管理の部分について特に意識する必要はない。
【0116】
開発するプログラム部分360は、フォーム変数取得部362、SQL組立部364、SQL実行部366、データ加工部368およびHTML出力部370を含む。これらはそれぞれ、図15に示すForm/URL変数取得部302、SQL組立部304、SQL実行部306、データ加工部308およびHTML出力部310に相当する。これらの部分についてはいくつかの部品が予め用意されており、プログラマーはその中から必要な部品を選択して使用することができる。その結果、メイン処理のコーディング量を大幅に削減することができる。
【0117】
[項目オブジェクトの管理]
既に述べたように、項目オブジェクトはデータベースの項目自体をオブジェクトクラスとして定義し、アプリケーション実行時にインスタンス生成してメモリに常駐するよう構成されている。このとき、多数のリクエストに対して個別に項目オブジェクトのインスタンスを生成していたのでは、メモリが浪費されることになるので、本実施の形態のシステムでは、項目オブジェクト管理用のクラスを設け、このクラスのインスタンスであるオブジェクトによってデータベースの各項目について一つの項目オブジェクトのインスタンスのみを生成し、複数のアプリケーションでこのインスタンスを共通に利用することとしている。
【0118】
図20にこの概念を示す。図20を参照して、アプリケーションプログラム382、384などは、項目オブジェクト(たとえば項目オブジェクト386)を利用したいときには、項目オブジェクト管理のためのオブジェクト380に対して項目オブジェクト386の要求を出す。項目オブジェクト管理のためのオブジェクト380はこの要求に応答して、項目オブジェクト386がメモリ上にあるか否かを調べ、ある場合には項目オブジェクト386を要求を出したアプリケーションに対して返す。項目オブジェクト386を受けたアプリケーション(たとえばアプリケーションプログラム382)は、こうして受取った項目オブジェクト386を用いて前述したような処理を実行する。項目オブジェクトの要求を受取ったときに、該当する項目オブジェクトがメモリ上に存在していないときには、項目オブジェクト管理のためのオブジェクト380は当該オブジェクトを生成してからその項目オブジェクトをアプリケーションに対して返す。
【0119】
なおここで「項目オブジェクトを返す。」という処理は、C++などでは当該オブジェクトのメモリ上のポインタをアプリケーションに戻り値として返す、ということである。Javaの場合にはポインタが隠ぺいされているため、こうした処理は単に「オブジェクトを返す」と呼ばれる。
【0120】
図21を参照して、項目オブジェクト管理のためのオブジェクト380が実行する処理について説明する。項目オブジェクト管理のためのオブジェクト380は、アプリケーションから項目オブジェクトに関する要求があるか否かを判定し(400)、要求があるまで待機する。実際の実装形式としては、以下の処理は項目オブジェクト管理のためのオブジェクト380が備えている、項目オブジェクトをアプリケーションに返すためのメソッドとなっている。したがってアプリケーションは、自己が必要としている項目オブジェクト名をパラメータとして項目オブジェクト管理のためのオブジェクト380のこのメソッドを呼出すだけでよい。
【0121】
さて、アプリケーションによって呼出されると(ステップ400においてYES)、要求された項目オブジェクトがメモリ上にあるか否かが判定される(402)。実際には、項目オブジェクト管理のためのオブジェクト380は生成済みの項目オブジェクトの管理テーブルを維持しており、この管理テーブル内に当該項目オブジェクト名が存在しているときにはメモリ上にその項目オブジェクトがあり、テーブル内に項目オブジェクト名が存在していないときにはその項目オブジェクトはまだインスタンス生成されていないと判定する。
【0122】
要求された項目オブジェクトがメモリ上にないと判定された場合、その要求された項目オブジェクトのインスタンスを生成する(404)。そしてその項目オブジェクトを管理テーブルに追加する(406)。そして処理はステップ408に進む。一方ステップ402で、要求された項目オブジェクトが既にメモリ上に存在していると判定された場合には直接ステップ408に制御が進む。
【0123】
ステップ408では、こうして生成された項目オブジェクト、または管理テーブル上で見い出された項目オブジェクトを、この項目オブジェクトを要求したアプリケーションに対して返し、再び次の要求を待つ処理(400)に戻る。
【0124】
以上のような制御構造を有するメソッドによって、項目オブジェクト管理のためのオブジェクト380の機能が実装されている。
【0125】
[部品化の効果]
以上のように本実施の形態のシステム開発環境では、フレームワーク、共通部品、および項目オブジェクトを部品化し、再利用することが可能となった。図22(1)に示されるように、従来の部品化の手法では、プログラム全体420のうち共通部品424の部分の比率はかなり低く、アプリケーションごとに個別に作成しなければならない個別プログラム422の部分が相対的に大きな比重を示していた。それに対し本発明によれば、部品よりも低い層の部分に項目オブジェクト438を実装することにより、各部品からデータ項目に対応した情報およびメソッドを取り除き、項目オブジェクトにまとめて定義することができるようになった。その結果、共通部品436の各部品がスリムになり、しかも業務に固有のロジックを各部品で実装する必要が少なくなったため、部品化の対象範囲が広がった。
【0126】
また、項目オブジェクト438の実装により、アプリケーションプログラムにデータ名称やデータ桁数を記述する必要がなくなった。その結果、アプリケーションプログラムをデータと分離してより抽象化することが可能となり、再利用のためのフレームワーク432を準備することが可能となった。その結果、個別にプログラムしなければならない個別プログラム434の部分の比重は相対的に小さくなった。
【0127】
また、データ定義、データの操作のためのメソッドなどを項目オブジェクトにまとめたため、データ名称、データの桁数、エラーチェック方法などを利用者の要求に応じて変更する場合にも、項目オブジェクトの中の変更で済むことになった。アプリケーションプログラム本体の変更を行なう必要はないため、ユーザ要求の変更に伴うプログラムの変更などによってバグが発生するおそれが少なくなり、品質の向上を図ることが可能となった。ユーザの業務にあわせてデータ名称の変更を行なうことも項目オブジェクトの中で行えるため、カスタマイズが容易になるという効果が得られた。
【0128】
さらに、項目オブジェクトに複数種類の項目名称を準備している。たとえば第1の項目名称は日本語、第2の項目名称は英語、などとしておき、プログラム実行時には、与えられたパラメータにしたがって特定の項目名称を選択するようなロジックとしておく。すると、プログラム自体のロジックは全く変更することなく、実行時のパラメータを変えることだけにより、アプリケーションプログラムの言語を容易に切り替えることができる。エラーメッセージなど複数言語での処理が必要な全ての部分について同様の機構を準備しておけば、言語の切替は完全に行えることになる。
【0129】
以上のように本実施の形態では、項目オブジェクトという概念を導入し、項目オブジェクトを実装することによりアプリケーションプログラムの構造を変更し、その結果部品化の範囲を拡大することができた。さらにその結果、フレームワークを準備することにより、さらに個別プログラムの量を少なくすることが可能となった。
【0130】
[再利用可能なプログラムの作成]
フレームワーク構築のポイントは、プログラムの再利用である。しかし、オブジェクト指向言語の特徴である継承による差分プログラミングにはある欠点がある。それは、継承では元となるプログラムの一部を上書きする新しいプログラムを追加するが、そのためには継承元のプログラムの内部構造を全て理解しなければならないということである。さもないと、上書きした結果、プログラム全体として動作がおかしくなる可能性がある。
【0131】
また、継承元のプログラムが修正された場合に、上書きしたプログラムが正常に動作するという保証はない。たとえば上書きされたメソッドの名前が継承元のプログラムにおいて変更された場合には、上書きしたプログラムは正常には動作しなくなるであろう。
【0132】
したがって、継承による差分プログラミングは保守性を考慮して適用していく必要がある。その結果、差分プログラミングを、業務内容の改善にあわせて随時メンテナンスしていく必要のなる業務プログラムへ適用することは必ずしも容易ではない。特に、業務プログラムが稼動するシステムではプログラム本数が数百〜数千本となることもある。その場合、作業を行なうシステムエンジニアおよびプログラマーの数も多くなり、継承による差分プログラミングを考慮しながらプログラムの設計・製造を行なうことは、人材の確保の面でも、開発納期を確保する面でも困難である。
【0133】
そこで、この実施の形態のシステムではさらに、プログラミングの枠組みは第1の実施の形態で述べたように項目オブジェクトによるものとした上で、さらにプログラムをモジュール化し、必要なモジュールを自由に組み合わせることによってプログラムを開発・変更する機構を採用した。
【0134】
[モジュール化構成]
図23に、このシステムにおける図13に示す画面の遷移に関する内部構造の全体イメージを示す。図23を参照して、このシステムでは、メインプログラム450から照会モジュール452、登録モジュール454、更新モジュール456および削除モジュール458に遷移することができる。各モジュールにはページ処理460、462、464、466などが1または複数個準備されており、メインプログラム450からページ番号を指定して各モジュールを呼出すことにより、当該モジュールの指定されたページが表示されるようになっている。
【0135】
図24に、本実施の形態において上記したようなページ遷移を実現するためのシステムの内部構造を示す。図24を参照して、このシステムは、メインプログラム470と、照会モジュール472と、登録モジュール474と、更新モジュール476と、削除モジュール478と、メインプログラム470からパラメータを受取って、指定されたモジュールの指定されたページを表示するように各モジュールを制御するためのコントローラ480とを含む。コントローラ480もまたその実体はコントローラクラスと呼ばれるクラスのインスタンスである。
【0136】
照会モジュール472〜削除モジュール478はいずれもメインプログラム470によって生成されるが、コントローラ480もまたメインプログラム470によってインスタンス生成される。コントローラ480は、対応のメインプログラム470によって生成されたモジュール472〜478が登録される管理テーブルを管理しており、メインプログラム470からパラメータを与えられると、以下に説明するような比較的単純なアルゴリズムによって適切なモジュールの適切なページが表示されるような制御を行なう。
【0137】
図25に照会モジュール472などの各モジュールの基本構造を示す。こうしたモジュールもそれぞれのクラスのインスタンスとしてプログラム実行時に生成される。図25に示されるように、たとえば照会モジュール472は、メニュー表示文字列、パラメータなどを含む各種のプロパティ490と、これらプロパティを用いてメニューにメニュー表示文字列を追加するメソッド、メインプログラム470から与えられるパラメータによって当該モジュール内に適切なページがあればそれを表示する処理を行なうページ制御をするメソッド、第1のページ処理メソッド、第2のページ処理メソッドなどを含む1または複数のメソッド492等を含む。
【0138】
全てのモジュールを通じて、ページ処理メソッドに対応するページ番号は基本的にユニークである。したがって、メインプログラム470があるページ番号を指定してコントローラ480を起動すると、そのページ番号に対応したページ処理メソッドが一意に定まり、実行される。ただし、後述するようにページ番号が重なることも許容されるが、その場合にはそのうちの一つ(最後にコントローラ480に登録されたもの)のみが実行される。そうした機構により、ページ処理の交換が容易に行なえるという効果があるがその詳細について以下に述べる。
【0139】
図26にメインプログラム470の処理の概略をフローチャート形式で示す。図26を参照して、メインプログラム470は最初に自己の処理内で利用するモジュールのインスタンスを全て生成する(500)。次に、メインプログラム470はコントローラ480のインスタンスを生成する(502)。こうして生成されたコントローラ480に予め実装されているモジュール登録メソッドを呼出し、ステップ500でインスタンス生成した全てのモジュールについてコントローラ480に登録する。このときコントローラ480は、モジュールの登録順に関する情報を保存している。
【0140】
続いて、クライアントPC上で実行されているブラウザからの要求を待ち(506)、要求があればその要求に対応した処理を行なうページ番号を指定して、コントローラ480のモジュール実行メソッドを呼ぶ。その結果をブラウザに送信した後、制御はステップ506に戻る。
【0141】
図27にコントローラ480は、自己のメソッドの呼出があると、どの呼出があったかを判断し(520)、その結果にしたがって実行メソッド522、登録メソッド524などを実行する。登録メソッドでは、メインプログラム470が生成したモジュールのインスタンスを特定する情報を管理テーブル内に登録する。このとき、前述したとおり登録順に関する情報も保持される。
【0142】
図28に実行メソッド522の詳細を示す。まず、最初に画面上に表示されるメニューを作成する処理を行なう(530)。この処理については図29を参照して後述する。
【0143】
続いて、図27に示した登録メソッドで管理テーブルに新しく登録された順番で各モジュールを順に呼出していく。このとき、各モジュールにはパラメータとしてページ番号を与える。後述するように各モジュールは、与えられたページ番号と一致するページ処理メソッドがあればそれを実行して「処理済み」という結果を返し、与えられたページ番号と一致するページ処理メソッドがなければ何もせず「未処理」という結果を返す。コントローラ480は、ステップ532の処理の結果、モジュールから「処理済み」という結果が戻って来たか否かを判定し、「未処理」という結果が戻ってきたら次のモジュールに対してステップ532の処理を繰返す。「処理済み」の結果が戻ってきたら実行メソッドは終了である。
【0144】
図29に図28のステップ530の内容を示す。図29を参照して、コントローラ480はまず、空のメニュータグ(ストリング)を作成し、登録テーブルの先頭のモジュールに渡す(550)。各モジュールはメニュータグを受けると、自己が持つメニュー表示文字列のこのメニュータグに追加してコントローラ480に返す。コントローラ480は、モジュールからメニュータグを受取り(552)、全てのモジュールに対してこの処理を行なったか否かを判定する(554)。全てのモジュールに対して処理が完了していないときは、コントローラ480は次のモジュールにメニュータグを渡し(556)、以下ステップ552〜554の処理を繰返す。
【0145】
全てのモジュールに対してメニュータグを渡し、受取る処理が終了したら、その結果得られたメニュータグをブラウザに渡す処理を行なう(558)。この処理により、ブラウザ画面上には、各モジュールが持っているメニュー表示文字列が並んでメニュー形式で表示されることになる。
【0146】
さて、図28のステップ532でコントローラ480によって呼出された各モジュールは以下のようなページ実行メソッドを実行する。図30を参照して、まず当該モジュールは、パラメータとしてコントローラ480から与えられたページ番号に該当するページが自モジュール内にあるか否かを判定する(570)。ある場合にはそのページを実行し(572)、「処理済み」の結果を返す。ない場合には何もせず「未処理」の結果を返す。
【0147】
以上のように、テーブルに新しく登録されたモジュールから順番に遡ってモジュールを呼出していく。その結果、同じページ番号のページ処理メソッドを持つモジュールが複数存在する場合、新しく登録されたモジュールのページ処理メソッドのみが実行され、古いモジュールのページ処理メソッドは実行されない。こうして、特定のページ処理を新しいものと置き換えることができる。この関係を図31に示す。
【0148】
図31を参照して、図24に示されるシステムに新照会モジュール580が追加して登録されたものとする。このモジュール580は照会モジュール472より新しく登録されたので、照会モジュール472よりも先にコントローラ480によって呼出される。また図31に示されるように、新照会モジュール580は、ページ制御メソッドの他にページ番号(11)に相当するページ処理メソッド582を持ち、このページ番号が照会モジュール472が有するページ処理メソッドのうちの一つのページ番号と一致するものとする。すると、ページ番号11を呼出す場合、最初に新照会モジュール580のページ処理メソッド582が呼出される。その結果新照会モジュール580からコントローラ480に対して「処理済み」の結果が返される。照会モジュール472のページ処理(11)のメソッドが呼出されることはない。
【0149】
この構成では、照会モジュール472のページ処理(11)のメソッドを変更しても、新照会モジュール580のページ処理メソッド582は全く影響を受けない。したがってモジュール間、ページ処理メソッド間を独立したものとすることができ、保守性の高い業務プログラムを差分プログラムによって効率良くカスタマイズすることができるようになる。
【0150】
以上のようなモジュール構成でプログラムを開発することにより、以下のような効果を得ることができる。
【0151】
(1) モジュールが処理単位で独立しているため、作成が容易であり、メンテナンスも容易になる。
【0152】
(2) 必要な機能のモジュールを自由に組み合わせて使うことができる。
(3) モジュールの入れ替え・追加が容易に行えるため、プログラムのカスタマイズが容易である。
【0153】
以上、本願発明を実施の形態に基づいて説明してきたが、本願発明はこれら実施の形態のシステムに限定されるわけではない。本願発明の権利範囲は、特許請求の範囲の各請求項の記載によって定められるべきである。本願明細書に開示された実施の形態の各構成要素と均等の構成要素を用いたものも本願発明の権利範囲に含まれる。
【図面の簡単な説明】
【図1】 本願発明に係るプログラム開発システムを実現するためのコンピュータの外観図である。
【図2】 本願発明に係るプログラム開発システムを実現するためのコンピュータのブロック図である。
【図3】 本発明の一実施の形態におけるアプリケーションプログラム作成手順を示すフローチャートである。
【図4】 項目オブジェクトの概念を説明するための模式図である。
【図5】 項目オブジェクトをDB定義情報から抽出するツールのブロック図である。
【図6】 DB定義ファイルの例を示す図である。
【図7】 項目オブジェクトのデータ定義ファイルの例を示す図である。
【図8】 DB定義ファイルから項目オブジェクトのデータ定義ファイルを作成する処理のフローチャートである。
【図9】 項目オブジェクトのデータ定義ファイルをインタラクティブに修正する際の画面を示す図である。
【図10】 項目オブジェクトのデータ定義ファイルをインタラクティブに修正する際の画面を示す図である。
【図11】 項目オブジェクトのデータ定義ファイルをインタラクティブに修正する際の画面を示す図である。
【図12】 項目オブジェクトのデータ定義ファイルをインタラクティブに修正する際の画面を示す図である。
【図13】 業務アプリケーションの画面の一例を示す図である。
【図14】 本発明の一実施の形態において、項目オブジェクトを使用したアプリケーションサーバの概念を説明するための図である。
【図15】 アプリケーションサーバの実装すべき機能を説明するための図である。
【図16】 本発明の一実施の形態にしたがって、項目オブジェクトを利用したアプリケーションが動作する際の、オブジェクトおよびアプリケーション間の関連を示す図である。
【図17】 メインプログラムのコーディング例の一部を示す図である。
【図18】 フォーム部品を実現する処理のフローチャートである。
【図19】 フレームワークと開発するプログラム部分との関係を示す図である。
【図20】 項目オブジェクト管理オブジェクトによる項目オブジェクトの管理方法を説明するための図である。
【図21】 項目オブジェクト管理のための処理のフローチャートである。
【図22】 本発明の一実施の形態によるフレームワーク構築の効果を説明するための図である。
【図23】 本発明の一実施の形態によるモジュール制御の概念を示す図である。
【図24】 本発明の一実施の形態によるモジュール制御のための、オブジェクトおよびアプリケーション間の関連を示す図である。
【図25】 モジュールの構成を概念的に示す図である。
【図26】 モジュール処理を取入れたメインプログラムの概略フローチャートである。
【図27】 コントローラオブジェクトの動作を説明するためのフローチャートである。
【図28】 コントローラオブジェクトの実行メソッドの制御構造を示すフローチャートである。
【図29】 コントローラオブジェクトによるメニュー作成処理のフローチャートである。
【図30】 各モジュールに実装されているページ実行メソッドのフローチャートである。
【図31】 ページの入れ替えを行なう際のオブジェクトおよびアプリケーション間の関連を示す図である。
【図32】 従来のイントラネットワークによって構築したシステムの構成例を示すブロック図である。
【符号の説明】
150,280,282 項目オブジェクト、162 DB作成ツール、254,256 ブラウザ、260 Javaサーブレットエンジン、290 フォーム部品、470 メインプログラム、472 照会モジュール、474 登録モジュール、476 更新モジュール、478 削除モジュール、580 新照会モジュール。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to improvement of an application program development and execution method, and more particularly to improvement of a program development environment and an execution environment for greatly expanding a portion that can be shared between programs in so-called object-oriented programming.
[0002]
[Prior art]
Conventionally, in system development using a computer, reduction of development cost, shortening of delivery time, and improvement of quality have been important goals. For this reason, for example, conversion from a procedure-centric design method to a data-centered design method, introduction of a RAD (rapid application development) development method, program componentization, and the like have been attempted, and certain effects have been achieved.
[0003]
For example, the introduction of data-centric design and development techniques has led to significant productivity improvements. Further, in the RAD development method, the development cycle can be shortened such that prototyping is performed in accordance with the user's request, and the user's request is further confirmed based on the result to correct the prototyping. As a result, in the system that introduced the RAD development method, the external design and the detailed design period were shortened and the cost was reduced. As a result, the proportion of the program creation phase in the overall system development has become relatively large.
[0004]
Recently, intranets are increasingly used as the development platform for enterprise core systems. In such a core system, it is efficient for a networked company to adopt an application server for system construction. Typically, in the application server system development, a tag language that extends HTML (HyperText Markup Language) is used. Such a tag language is easy to learn and is highly regarded as having high productivity as an intranet development tool.
[0005]
However, as the environment surrounding companies becomes more severe, the requirements for system development have become stricter. Specifically, since the business cycle of companies has been shortened, further shortening of the delivery time is required, and companies that can provide products at lower costs are becoming more advantageous.
[0006]
Therefore, as described above, since the ratio of the program creation face in system development is relatively large, it is important to further improve the productivity of this part. For this purpose, the most efficient approach is to promote program componentization.
[0007]
Program componentization reduces the man-hours required for system development, and as a result, contributes to strengthening the competitiveness of system development both in terms of shortening the time required for system development and reducing the cost required for it. In addition, it is possible to contribute to improving the quality of the system by converting only sufficiently reliable programs into parts. Therefore, it is important how efficiently the program can be divided into parts, and how to efficiently combine the prepared parts to construct an application program.
[0008]
However, the tag language that has been used for the development of intranet systems in the past has a weak componentization function. Therefore, as long as the conventional tag language is used as it is, it is clear that improvement in productivity cannot be expected so much.
[0009]
FIG. 32 shows a general system configuration diagram of an intranet using a database (DB). Referring to FIG. 32, a general intranet 600 includes an application server 612, a DB server 614, and a plurality of client PCs 616 that can communicate with each other via a network 610 using a protocol called HTTP. Note that “HTTP” is an abbreviation for Hyper Text Transfer Protocol.
[0010]
A general browser 630 operates on the client PC 616.
In the DB server 614, an RDBMS 622 is operating.
[0011]
A WWW server 618 is running on the application server 612. “WWW” is an abbreviation for World Wide Web. The entity of the WWW server 618 is a Java servlet engine 620. The Java servlet engine 620 provides the browser 630 with information (HTML source) for forming a screen for accessing the RDBMS 622 in response to a request given from the browser 630 of the client PC 616 via the network 610. The browser 630 displays this screen and returns information input by the user to the Java servlet engine 620. The Java servlet engine 620 accesses the RDBMS 622 according to the given information, and returns an HTML source for displaying the result to the browser 630. The browser 630 responds to the user's request by displaying this result.
[0012]
In this way, in the intranet 600, requests from a plurality of client PCs 616 are processed by the WWW server 618 operating on the application server 612, and business processing using the RDBMS 622 is performed by returning the results to the browser on each client. .
[0013]
[Problems to be solved by the invention]
However, as described above, it seems that the componentization and reuse of an important program for developing a system using the Java servlet engine 620 in such a system has reached the limit as long as the conventional tag language is used. It is. In the conventional programming language, the part to be partized is a part that can be cut out independently of the application. For this reason, a program including business logic could not be made into parts. For example, system componentization has remained at about 20% of the total.
[0014]
In particular, a company's core business system handles a database, but each database item is given a unique name. Therefore, such a unique name is embedded in the program that handles the database. The name changes as the business is different and the database changes. For this reason, it is difficult to reuse a program created in one system in the development of another system. If the program that processes each item in the database can be made into parts, it will be possible to make parts and reuse them, and the efficiency of program development will be improved.
[0016]
  This inventionPurpose ofIs an application that can make program parts for processing each item in the database and reuse them more efficientlyServer systemIs to provide.
[0017]
[Means for Solving the Problems]
  Of this inventionis thereaspectApplication server system according to store databaseThe databaseConnected to the deviceAn application server system,The data item corresponding to each item constituting the record of the database is associated with the item name used to refer to the data item, and the application server system provides the client device that displays the screen using the data item. Are also connected,Input means for receiving an input of a request to display a screen from a client device;Item name for display of data items on the screenuseCodedProgram andDefined for each itemStorage means for storing item objects,The field object isData item attributesWhen,itemIn nameCorrespondingdataitemMethods to manipulateMethod program code corresponding toTheThe attribute includes an item name and an item name displayed on the screen, and the program includes a component program that constitutes a source for displaying the screen on the client device,Computation means for executing a program and processing corresponding to the item object, the computation means,By running the programBased on requestData item used to display the screenIdentifyitem nameThePart programMeans to give and itemsCorresponds to a data item by executing a part program based on the nameSearch means for searching for item objects;By executing the part program,Included in item object searched by search meansItem NameAnd methodsProgram codeAnd acquisition means for acquiring and acquired by the acquisition meansItem name andThe methodIncluding the item name by executing the part program using the program codeFor displaying the screenSourceGenerating means for generatingSource generated by the generation meansIs further provided.
[0019]
  Preferably,The computing means accesses the database based on the session variable obtaining means for obtaining information from the client apparatus, the data obtaining means for obtaining data transmitted from the client apparatus, and the data obtained by the data obtaining means. Access means.
[0021]
  Preferably,The input means further accepts input of update data input in the client device, and the calculation means further includes an update means for updating a data item stored in the database based on the update data..
[0023]
  Preferably,The attribute further includes the data type of the data item, and the method includes logic to perform error checking of the data item based on the data type..
[0025]
  Preferably,The data definition of the field object is based on the data definition of the data base.
[0027]
  Preferably,The generation unit generates a source for displaying a screen for correcting the item object.
[0029]
  More preferably,The generation means generates a source based on the tag language.
[0043]
DETAILED DESCRIPTION OF THE INVENTION
Conventionally, the Java language, which has not been put into practical use due to a slow response speed, is increasingly used mainly in the United States in the form of a servlet that moves a Java VM (Virtual Machine) on the server side. The Java language has the following features.
[0044]
(1) It operates on a wide range of platforms, and is easily compatible with Linux, which is expected as a next-generation OS (Operating system).
[0045]
(2) Many vendors provide tools with a common API (Application Programming Interface) and do not depend on tool vendors of only one company.
[0046]
(3) It is an object-oriented language and has a program reuse mechanism such as differential programming.
[0047]
As described above, since the Java language has characteristics consistent with the object of the present invention, the Java language is adopted in the system of the present embodiment. However, the present invention is not applicable only to a system using the Java language, and any programming language may be used as long as it is an object-oriented language. For example, C ++ and object pascal.
[0048]
In the present invention, what is called an “item object” defined for each item constituting a record in the database is used as a characteristic “object” in program development and program execution in an object-oriented language. It was. The details of the contents of the item object will be described later. Here, the item object has not been considered heretofore and is novel in the present invention, and the item object is used for program development for the purpose of program development. It should be pointed out that the program componentization was greatly promoted.
[0049]
The Java language is an object-oriented language, and the program can be reused in two aspects: a component and a framework.
[0050]
Here, the component is the same as a conventional method, and a part common to a plurality of programs is extracted, and is called from another program and reused. In general, parts are often independent of business logic.
[0051]
On the other hand, a framework is a collection of programs including a main routine and business logic. For example, the order receiving framework described below implements general order receiving, and can be used as it is, or can be reused by adding a unique function by differential programming. In the present invention, on the other hand, an item object is introduced to abstract a name unique to a database and the like, thereby making it possible to construct a part to be implemented as a common logic common to business programs as a framework. Therefore, according to the present invention, the program can be reused in a wider range beyond the range of conventional componentization.
[0052]
FIG. 1 shows the appearance of a personal computer for developing the system of the present invention. As will be described below, the personal computer may have a general configuration. The computer on which the application server realized by the program developed according to the present invention operates may be a general computer, and may be the same as that shown in FIG.
[0053]
Referring to FIG. 1, this computer system includes a computer 100 including a CD-ROM (Compact Disc Read-Only Memory) drive 110 and an FD (Flexible Disk) drive 112, a display 102, a printer 104, and a keyboard 106. And a mouse 108.
[0054]
FIG. 2 is a block diagram showing the configuration of this computer. As shown in FIG. 2, in addition to the CD-ROM drive 110 and the FD drive 112, the computer 100 stores a CPU (Central Processing Unit) 116 connected to the bus 126, an operating system boot-up program, and the like. ROM (Read Only Memory) 118, RAM (Random Access Memory) 120 for loading a program to be executed and storing data during program execution, and the created program are stored in a nonvolatile manner And a network interface 130 for connecting the computer 100 to a network 132. A CD-ROM 122 is attached to the CD-ROM drive 110. An FD 124 is attached to the FD drive 112.
[0055]
As described above, this program development system is realized by computer hardware and software executed by the CPU 116. Generally, such software is stored and distributed in a storage medium such as the CD-ROM 122 and the FD 124, read from the storage medium by the CD-ROM drive 110 or the FD drive 112, and temporarily stored in the hard disk 114. Further, it is read from the hard disk 114 to the RAM 120 and executed by the CPU 116. The computer hardware itself shown in FIGS. 1 and 2 is general. Therefore, the most essential part of the present invention is software stored in a storage medium such as the CD-ROM 122, the FD 124, and the hard disk 114.
[0056]
Since the operation of the computer itself shown in FIGS. 1 and 2 is well known, detailed description thereof will not be repeated here.
[0057]
Of course, it is also conceivable to operate a computer similar to the computer described above as an application server. In this case, the role of each component described above is the same as that described above.
[0058]
[Examination of Java framework]
In the general intranet shown in FIG. 32, the HTTP protocol is used between the browser 630 and the application server 612. The HTTP protocol is a sessionless (stateless) protocol. The screen displayed on the browser 630 is composed of HTML. HTTP and HTML are specifications developed for browsing information, and it has been found that when building a backbone system, it becomes a factor that deteriorates productivity.
[0059]
Since the HTTP protocol used in the intranet is sessionless, communication between the browser 630 and the application server 612 is disconnected every time. However, in the basic system, it is necessary to transfer the logged-in user information between pages displayed on the browser 630, and it is necessary to create some kind of session management mechanism.
[0060]
In addition, because of sessionlessness, the order of transition between screens displayed on the browser 630 is not guaranteed. Therefore, it is possible to specify a URL (Uniform Resource Locator) from the user side and directly access a screen that should be displayed in the middle of a series of flows or display a screen without access authority. there is a possibility. In order to prevent such a situation, each program checks whether the screen displayed on the browser 630 is in the order of transition assumed at the time of design, or the displayed screen is based on a predetermined authority. It is necessary to check whether it has been accessed.
[0061]
In addition, illegal data may be transmitted to the application server 612 due to a user operation error. For example, if a button (called a “Submit” button or the like) prepared to give an instruction for finally sending data to the server is accidentally pressed twice, the data is transmitted to the server twice. It will be. For this reason, there is a possibility that the data will be processed twice in the server if some measure is not taken, but a mechanism for preventing such malfunction is also required.
[0062]
Furthermore, in a normal client & server system, a screen can be designed by GUI (Graphical User Interface). However, in an intranet system, coding for outputting HTML for screen display must be performed manually. . That is, in the intranet system, for all data items used on the screen, the item name, input format (text box, radio button, etc.), number of input digits, etc. must be specified in the source code. For this reason, it is inevitable that the number of man-hours is increased as compared with system development using a normal GUI. In addition, HTML output codes and business logic codes often coexist, which is a factor that obstructs program componentization.
[0063]
If a program is created while taking these factors into account, a significant decline in productivity is inevitable. Not only that, there is also concern about quality degradation due to omissions during program creation. Therefore, we decided to solve these problems inside the framework and build a framework so that high-quality programs can be easily created without the programmer's particular awareness.
[0064]
[Functions required for the framework]
The framework is likely to be the basis for all future systems developed. Therefore, it is necessary to avoid situations where major changes are made after the framework has been released. As a result of examining the functions that the framework should have so that it can be applied to any system developed in the future, it was decided to implement the following functions as a framework.
[0065]
(1) Concealing intranet-specific problems
It hides the factors of productivity deterioration in the intranet system as described above so that programmers can develop programs without particular awareness.
[0066]
(2) Multilingual support
With the globalization of business, the number of cases where a company has a subsidiary overseas is increasing. Even in such a case, it is desirable to use the same system both domestically and overseas, but there is a problem of the language used. The usual approach is to first create a Japanese version of the program and then translate the necessary parts of the program (item names, messages, etc. displayed on the screen) into a foreign language (eg English). Let's go. However, in that case, one program is substantially realized by two separate programs. It is clear that having such a program doubles the maintainability of the program. Therefore, a program development technique that can handle multilingual languages without deteriorating the maintainability of the program is desired.
[0067]
Therefore, in this system, we decided to implement a mechanism for switching the language by specifying parameters at the time of program execution by incorporating not only Japanese but also foreign language resources into one system in advance. Such a function can be easily realized by using an item object as described later.
[0068]
By implementing such a mechanism as a framework, for example, it is possible to easily develop a program overseas where the labor cost of program development is low, and to translate it into Japanese.
[0069]
(3) Customizing item names
It is common for a company to package a system developed for itself and sell it externally. However, in that case, there is a strong need to customize, for example, the item names of the database used in the system according to the usage pattern in the purchasing company. Therefore, in this system, in order to satisfy such needs, we decided to implement functions for that purpose in the framework. This function can also be easily realized by using item objects.
[0070]
[Type of program reuse]
When considering the reuse of programs, there are various granularities such as those that use the entire program as it is, those that are reused at a simple subroutine level for data processing, and so on. Therefore, when we examined what types of program reuse were possible, the following four categories were classified.
[0071]
(1) Parts
A component is the smallest unit of program reuse. Parts are called and used by business applications.
[0072]
(2) Program pattern
A program pattern refers to a program that does not include business logic combining components. Data items used in the program pattern can be given as parameters. It can be used for basic table maintenance.
[0073]
(3) Framework
A framework is a collection of reusable programs that combine parts and program patterns and incorporate basic business logic. Programs in the framework can be reused while adapting to actual work by using a differential program according to the system to be used.
[0074]
(4) Package
A package is a reuse form in which the entire system is reused as it is.
[0075]
In order to realize this embodiment, parts are first developed, and development proceeds in the order of program patterns and frameworks. As a result, the concept of item objects, which will be described in detail later, has been reached. In the following, a technique for constructing an intranet system using item objects, and the structure and operation of such an intranet system will be described.
[0076]
[System development procedure]
With reference to FIG. 3, the development procedure of this system is as follows. First, an item object is created based on the configuration of the database to be processed (140). Then, an application program is created using the item object thus created (142). Next, an application server of the intranet system is realized by executing the application thus created (144).
[0077]
Item object
Referring to FIG. 4, item object 150 is an object set corresponding to each item in the database. An example of the item object is the item object 150A corresponding to the data item “order number” in the case of order receiving work. The item object 150A is an object class in the program development process, and an instance of this item object is formed and used for program execution during program execution.
[0078]
Since the item object 150 is an object class, as shown in FIG. 4, in addition to the item name (for example, “OrderNum”), the item name (Japanese name, English name, name in other languages, etc.), data length as properties , Abstracting data items such as data type (numeric type, string type, etc.), input format (text box, radio button, check box, pull-down list, pull-down menu, combo box, slider, etc.), corresponding DB column name, etc. Attributes that should be provided in general, and whether the input data is correct (for example, when the data type is numeric, whether the input data is numeric, whether the number of digits is within the data length, Etc.) in the form of methods.
[0079]
Table 1 shows the attributes, methods, etc. of the item object.
[0080]
[Table 1]
Figure 0004136271
[0081]
In Table 1, “item name” is a name used to refer to this data item during coding of the program. Normally, the column name corresponding to this item object in the DB is used, and consists of only alphabets and some symbols.
[0082]
The “item name” refers to a name displayed on the screen when the program is executed. In the present embodiment, five types of item names can be set. Therefore, when the item name is used for the screen display, the item name can be displayed by switching the display from six ways.
[0083]
The meanings of the other elements shown in Table 1 will be apparent to those skilled in the art and will not be further described here.
[0084]
[Extract item object definition from DB definition]
The item object is prepared in the form of a text in the form of a Java language class definition source program in the program development system of the present embodiment. Since the item object has a deep relationship with the database, it is convenient to define the data of the item object as it is from the database definition.
[0085]
FIG. 5 shows a simple system block diagram of such a program development system. It goes without saying that this system can actually be realized by a general personal computer as shown in FIGS.
[0086]
Referring to FIG. 5, this system creates a database 166 from DB definition information 160 prepared in advance in a text format, or uses a prototype of the definition of item objects corresponding to each item in the database 166 from DB definition information 160. A data definition 168 is output in a text format, the content of the data definition 168 is modified by interactive processing using the display 102, the keyboard 106, and the mouse 108, and the class definition of the item object is changed from the modified data definition 168. A DB creation tool 162 that performs processing for outputting a file of a Java source 164 for the purpose.
[0087]
An example of the contents of the DB definition information 160 is shown in FIG. An example of the data definition 168 is shown in FIG. The data definition 168 shown in FIG. 7 is created based on information extracted from the line starting with “order number” immediately after the “/ Record” statement in the DB definition information 160 of FIG. Necessary items are supplemented. Each line includes a keyword indicating an attribute (for example, “/ LANG”, “/ INPUTTYPE”, etc.) and attribute contents corresponding to the keyword. At this time, the process of adding the original form of program coding corresponding to a method such as data check to the contents of the data definition 168 is also performed.
[0088]
By creating the data definition 168 from the DB definition information 160, the man-hours for creating the item object can be minimized.
[0089]
FIG. 8 shows a schematic flowchart of a program for creating the data definition 168 from the DB definition information 160. Referring to FIG. 8, first, the DB definition file designated by the programmer is opened (180). Next, the first line of this file is read (182). It is determined whether or not the content of the line is “/ RECORD” (184), and the processes of steps 182 and 184 are repeated until the content of the read one line becomes “/ RECORD”.
[0090]
When one line of “/ RECORD” is read, the data definition 168 is created and output for each line of the DB definition thereafter. Specifically, first, the next line of the DB definition information 160 is read (186), and it is determined whether or not the content of the line is “/ END”. If it is not “/ END”, a data definition 168 is created from the contents of the read one line, output as an item object file (190), and the next line is read (186). If the content of one line read is “/ END”, it means that all DB items in the DB definition information 160 have been processed, so the DB definition file is closed (192) and the process is terminated. .
[0091]
The processing in step 190 is determined based on the correspondence between the DB definition format and the data definition 168 format. Since the contents depend on the system and are obvious to those skilled in the art, the details are not described here.
[0092]
Of the functions of the DB creation tool 162 shown in FIG. 5, processing for interactively correcting the contents of the data definition 168 will be described with reference to FIGS. Although depending on the system to be developed, the number of item objects may reach several thousand, so it is desirable that the data definition 168 can be modified efficiently.
[0093]
Referring to FIG. 9, in the system according to the present embodiment, “item object edit” is selected from a pull-down menu displayed by selecting generation menu 204 from menu 202 on basic screen 200 of DB creation tool 162. When the menu item 206 is selected with the pointer 208, processing for correcting the data definition 168 is started. Thereby, the data definition selection screen 210 shown in FIG. 10 is displayed.
[0094]
In the upper part of the data definition selection screen 210, an alphabet selection button row 212 composed of buttons corresponding to alphabets A to Z is displayed. By selecting, for example, the button 214 corresponding to “U” with the pointer 208, a list of item objects having item names starting with the alphabet is displayed in the data definition list field 216.
[0095]
Referring to FIG. 11, in this screen 220, the data definition corresponding to the item to be corrected among the item names displayed in data definition list field 216 (for example, data definition field 222 corresponding to “UserID”) is displayed. By selecting with the pointer 208, the content of the selected data definition is displayed as an item object information correction screen. An example of the display at this time is shown in FIG.
[0096]
Referring to FIG. 12, item object information correction screen 224 displays a list of item object information corresponding to the selected data definition. After these contents are corrected, when the update button 228 is pressed, the original data definition file is overwritten with the updated information.
[0097]
The processing shown in FIGS. 9 to 12 can be developed with a program development tool using a normal GUI. Since the contents of the processing performed by these screens are simple, details of the program for realizing these screens will not be described here. However, it will be clear to those skilled in the art how to update the data definition file using these screens.
[0098]
[Structure of application program]
Next, the structure of an application using item objects prepared in this way will be described. This description will make it clear to those skilled in the art how to create such applications.
[0099]
FIG. 13 shows an example of a screen realized on the client PC by the application server. This example is a program for maintaining a user DB (user table). Referring to FIG. 13, user table maintenance screen 230 includes an inline menu 240, a button 242, and an input form composed of a plurality of item-specific lines including item names 244 and item fields. The function of the application server is to create an HTML source for displaying this screen by the browser on the application server, send it to the client PC for display, and update the user table according to the input data sent from the client PC. .
[0100]
Conventionally, it has been difficult to reuse the main input form part on this screen in a program different from the user table maintenance, for example, the department registration screen. This is because item names unique to the user registration program such as user ID and name are embedded in the user registration program. However, by introducing item objects, the attributes of such data items can be separated from the program, and the form part can be reused.
[0101]
FIG. 14 simply shows the system configuration of the WWW server 250 that constitutes the application server of this intranet system. Referring to FIG. 14, the WWW server 250 includes a Java servlet engine 260 for processing requests from browsers 254, 256, etc. operating on a plurality of client PCs via a network 252, and a Java servlet engine 260. Main program 262 for processing a request from a client browser given by the user, a session variable object 264 for storing a session variable 270, 272 and the like prepared for maintaining a session for each client by the main program 262, and a main program And a memory space 266 for storing item objects 280 and 282 to be referred to when executing H.262.
[0102]
The main program 262 includes a form part 290 that constitutes a part transmitted to the client. Then, as will be described later, an HTML source for forming a desired form is formed by selecting a data item to be displayed on the form component 290 from among the item objects in the memory space 266 and transmitted to the browser of the client PC. . Since no data items are embedded in the form part 290 itself, the form part 290 can be reused for another program. The logic part of functions (registration, deletion, change, etc.) to be implemented by the user table maintenance program can also be used for the maintenance of other DB tables. Because it only needs to be changed, the program can be reused more efficiently.
[0103]
A functional structure to be implemented by the WWW server 250 is shown in FIG. Referring to FIG. 15, WWW server 250 includes a Java program that is activated in response to a request from browsers 254 and 256. This program (main program 262) acquires the login information and the previous screen information from the session variable 270, the session variable acquisition unit 300 for checking the access authority and the legitimacy of the screen transition, browsers 254, 256, etc. Form / URL variable acquisition unit 302 for acquiring data transmitted from the browser (for example, an input order number), and an SQL assembly unit for assembling SQL (Structured Query Language) based on the acquired data 304, an SQL execution unit 306 for executing the assembled SQL and accessing the database 166, and a data processing unit for performing processing such as format conversion on the data acquired from the database 166 as necessary 308 and get this way An HTML output unit 310 that performs processing for transmitting the received data to the browsers 254, 256 and the like together with the HTML tag, and a session variable storage unit 312 for storing the session variable 270 for the next access are included.
[0104]
Except for programs that perform processing that writes data files in a special format in order to link with a specific program, most programs perform processing in the order described above. If each processing unit shown in FIG. 15 is used as a basic component and a necessary number of components are prepared in advance, the programmer can efficiently find and combine components corresponding to functions to be realized by the program he / she wants to create. You can create a program. Also, by preparing the entire processing unit as a framework, the program can be completed simply by adding necessary business logic.
[0105]
[Screen output using item objects]
FIG. 16 shows an outline of a screen output (HTML source output) mechanism using item objects stored in the memory space 266. Referring to FIG. 16, main program 262 gives information specifying items used on the screen to form component 290. The form component 290 searches the memory space 266 for an item object corresponding to the item given from the main program 262. Since the item object includes all information relating to the data name and data length to be displayed on the screen, the form component 290 obtains the information from the item object, thereby providing the HTML to be given to the browsers 254, 256, etc. You can create a source. By transmitting the created HTML source to the browsers 254, 256, etc., the screen shown in FIG. 13 is displayed by the browser operating on the client PC.
[0106]
Since information on the name, data length, data format, and the like of the displayed item is acquired from the item object, the information is not coded in the main program 262. An example of a part of the main program 262 is shown in FIG. Referring to FIG. 17, in the program of main program 262, first, constant “p_fields”, which is a list of item object names to be used in this processing, is defined in parameter definition line 320, and the form in the later logic In the CALL instruction 322 for calling a part, this constant is passed as a parameter to the form part. That is, the designation of the item object directly connected to the business is only seen in the parameter definition line 320.
[0107]
In this case, the parameters given to the form part 290 by the main program 262 are {userid, username, furigana,. . . }, By simply changing these parameters to a list of names of other item objects, it is possible to realize a completely different screen display using the same main program 262 logic and the same form part 290. .
[0108]
FIG. 18 shows the logic of the program constituting the form part in the form of a flowchart. Among the given parameters, the following processing is performed one parameter at a time from the beginning. That is, for the parameter, an item object specified by the parameter is referred to, and an HTML source corresponding to a form part for inputting the item from information such as an item name and a data length is created (330).
[0109]
Subsequently, it is determined whether or not all parameters have been processed (332), and steps 330 and 332 are repeated until all parameters are processed.
[0110]
If it is determined that all parameters have been processed, the HTML source created by the above processing is output to the browser 254 and the like, and the processing is terminated.
[0111]
Thus, item-specific information is not coded in the main program logic. As a result, the main program can be reused in common in various processes. Also, since the form part 290 itself is separated from the item-specific information, the form part 290 can be reused in common in various processes.
[0112]
As described above, according to the present invention, by using the item object, the user interface is separated from the program and succeeded in componentization. Furthermore, by implementing the error check and DB update logic of the item in the item object as a method, the program part directly connected to the business can be made into a component.
[0113]
In addition, since there is a concern that the response speed of the WWW server 250 may be lowered by implementing the item object, the item object (instance) that has been used once is made resident in the memory, and the next request is processed. We decided to reuse. As a result, it was confirmed that there was almost no deterioration in response time due to the use of the item object or it was well within the allowable range.
[0114]
[Building a framework]
FIG. 19 schematically shows the structure of the basic framework. Referring to FIG. 19, the basic framework 340 includes a session variable acquisition unit 342, an authority check unit 344, a DB connection acquisition unit 346, a main processing unit 348, a DB connection return unit 350, and a session variable storage unit 352. Among these, the session variable acquisition unit 342, the authority check unit 344, and the session variable storage unit 352 correspond to the session variable acquisition unit 300, the session variable storage unit 312 shown in FIG. The DB connection acquisition unit 346 and the DB connection return unit 350 are for establishing a connection with a DB prior to referring to and updating a database (not shown) and returning the connection to the connection pool after processing. In this embodiment, in order to shorten the connection time with the DB, a plurality of DB connections are established in advance, and these connections are assigned to these requests according to the request. Is taken back to the pool.
[0115]
In the basic framework 340, portions other than the main processing unit 348 are mounted in advance, but nothing is mounted on the contents of the main processing unit 348. The program part 360 to be developed is implemented by differential programming for the main processing unit 348. Therefore, the programmer does not need to be particularly aware of the session management and connection management parts.
[0116]
The program part 360 to be developed includes a form variable acquisition unit 362, an SQL assembly unit 364, an SQL execution unit 366, a data processing unit 368, and an HTML output unit 370. These correspond to the Form / URL variable acquisition unit 302, the SQL assembly unit 304, the SQL execution unit 306, the data processing unit 308, and the HTML output unit 310 shown in FIG. Several parts are prepared in advance for these parts, and the programmer can select and use the necessary parts. As a result, the coding amount of the main process can be greatly reduced.
[0117]
Item Object Management
As described above, the item object defines the database item itself as an object class, and is configured to be instantiated and resident in the memory when the application is executed. At this time, if an instance of the item object is individually generated for a large number of requests, memory is wasted. Therefore, in the system of the present embodiment, a class for managing the item object is provided, Only one item object instance is generated for each item in the database by an object which is an instance of this class, and this instance is shared by a plurality of applications.
[0118]
FIG. 20 shows this concept. Referring to FIG. 20, application programs 382, 384, and the like issue a request for item object 386 to object 380 for item object management when it is desired to use an item object (for example, item object 386). In response to this request, the item object management object 380 checks whether or not the item object 386 is in memory, and if so, returns the item object 386 to the requesting application. The application (for example, the application program 382) that has received the item object 386 performs the above-described processing using the item object 386 thus received. When a request for an item object is received and the corresponding item object does not exist in the memory, the object 380 for managing the item object generates the object and returns the item object to the application.
[0119]
Here, the process of “returning the item object” means that in C ++ or the like, a pointer on the memory of the object is returned to the application as a return value. In the case of Java, since the pointer is hidden, such processing is simply called “return object”.
[0120]
With reference to FIG. 21, a process executed by the object 380 for managing item objects will be described. The object 380 for managing item objects determines whether there is a request for an item object from the application (400), and waits until there is a request. As an actual mounting format, the following processing is a method for returning the item object to the application, which is provided in the object 380 for managing the item object. Therefore, the application need only call this method of the object 380 for managing the item object with the item object name that it needs as a parameter.
[0121]
When called by the application (YES in step 400), it is determined whether the requested item object is in memory (402). Actually, the object 380 for managing the item object maintains a management table for the generated item object, and when the item object name exists in this management table, the item object exists in the memory. When the item object name does not exist in the table, it is determined that the item object has not been instantiated yet.
[0122]
If it is determined that the requested item object is not in memory, an instance of the requested item object is generated (404). Then, the item object is added to the management table (406). Then, the process proceeds to step 408. On the other hand, if it is determined in step 402 that the requested item object already exists in the memory, the control proceeds directly to step 408.
[0123]
In step 408, the item object thus created or the item object found on the management table is returned to the application that requested the item object, and the process returns to the process (400) waiting for the next request again.
[0124]
The function of the object 380 for managing the item object is implemented by the method having the control structure as described above.
[0125]
[Effect of componentization]
As described above, in the system development environment according to the present embodiment, the framework, common parts, and item objects can be made into parts and reused. As shown in FIG. 22 (1), in the conventional method of componentization, the proportion of the common component 424 in the entire program 420 is quite low, and the portion of the individual program 422 that must be created individually for each application Showed a relatively large specific gravity. On the other hand, according to the present invention, by mounting the item object 438 in a lower layer part than the part, information and methods corresponding to the data items can be removed from each part and can be collectively defined in the item object. Became. As a result, each component of the common component 436 is slimmed, and moreover, it is not necessary to mount business-specific logic on each component, so that the range of componentization has expanded.
[0126]
In addition, the implementation of the item object 438 eliminates the need to describe the data name and the number of data digits in the application program. As a result, it is possible to separate the application program from the data and make it more abstract, and it is possible to prepare a framework 432 for reuse. As a result, the specific gravity of the portion of the individual program 434 that must be individually programmed is relatively small.
[0127]
In addition, since the data definition, data operation methods, etc. are collected in the field object, the data object, the number of digits of data, the error check method, etc. can be changed according to the user's request. The change of was ended. Since there is no need to change the application program body, there is less risk of bugs due to program changes accompanying changes in user requirements, and quality can be improved. Since the data name can be changed in the item object according to the user's work, the effect that customization is easy was obtained.
[0128]
Further, a plurality of types of item names are prepared for the item object. For example, the first item name is set to Japanese, the second item name is set to English, and the logic is such that a specific item name is selected according to a given parameter when the program is executed. Then, the language of the application program can be easily switched by changing only the parameters at the time of execution without changing the logic of the program itself. If a similar mechanism is prepared for all parts that require processing in multiple languages such as error messages, the language can be completely switched.
[0129]
As described above, in the present embodiment, the concept of an item object is introduced, the structure of the application program is changed by mounting the item object, and as a result, the range of componentization can be expanded. As a result, the amount of individual programs can be further reduced by preparing a framework.
[0130]
[Create reusable program]
The point of framework construction is program reuse. However, there is a certain disadvantage in differential programming by inheritance, which is a feature of object-oriented languages. That is, in inheritance, a new program is added that overwrites a part of the original program, but in order to do so, all internal structures of the inheritance source program must be understood. Otherwise, as a result of overwriting, the operation of the whole program may become strange.
[0131]
Further, when the inheritance source program is modified, there is no guarantee that the overwritten program operates normally. For example, if the name of the overwritten method is changed in the inheritance source program, the overwritten program will not work properly.
[0132]
Therefore, it is necessary to apply differential programming by inheritance in consideration of maintainability. As a result, it is not always easy to apply differential programming to business programs that need to be maintained as needed to improve the business content. In particular, in a system in which a business program operates, the number of programs may be hundreds to thousands. In that case, the number of system engineers and programmers who do the work increases, and it is difficult to design and manufacture programs while taking into account differential programming through inheritance, both in terms of securing human resources and ensuring development deadlines. is there.
[0133]
Therefore, in the system of this embodiment, the programming framework is based on item objects as described in the first embodiment, and the program is further modularized and necessary modules can be freely combined. A mechanism for developing and changing programs was adopted.
[0134]
[Modular configuration]
FIG. 23 shows an overall image of the internal structure relating to the transition of the screen shown in FIG. 13 in this system. Referring to FIG. 23, in this system, a transition can be made from main program 450 to inquiry module 452, registration module 454, update module 456, and deletion module 458. Each module is provided with one or a plurality of page processes 460, 462, 464, 466, etc., and by calling each module by specifying a page number from the main program 450, the designated page of the module is displayed. It has come to be.
[0135]
FIG. 24 shows an internal structure of a system for realizing the page transition as described above in the present embodiment. Referring to FIG. 24, this system receives parameters from main program 470, inquiry module 472, registration module 474, update module 476, delete module 478, and main program 470, and executes the specified module. And a controller 480 for controlling each module to display a designated page. The controller 480 is also an instance of a class called a controller class.
[0136]
The inquiry module 472 to the delete module 478 are all generated by the main program 470, but the controller 480 is also instantiated by the main program 470. The controller 480 manages a management table in which modules 472 to 478 generated by the corresponding main program 470 are registered. When parameters are given from the main program 470, a relatively simple algorithm as described below is used. Controls to display an appropriate page of an appropriate module.
[0137]
FIG. 25 shows a basic structure of each module such as the inquiry module 472. These modules are also generated as instances of the respective classes when the program is executed. As shown in FIG. 25, for example, the inquiry module 472 provides various properties 490 including a menu display character string, parameters, and the like, a method for adding a menu display character string to the menu using these properties, and a main program 470. One or a plurality of methods 492 including a page control method for performing processing for displaying an appropriate page in the module if there is an appropriate page in the parameter, a first page processing method, a second page processing method, etc. Including.
[0138]
Throughout all modules, the page number corresponding to the page processing method is basically unique. Accordingly, when the controller 480 is activated by specifying a certain page number with the main program 470, a page processing method corresponding to the page number is uniquely determined and executed. However, as will be described later, page numbers may be overlapped, but in that case, only one of them (the one registered last in the controller 480) is executed. Such a mechanism has an effect of easily exchanging page processing, and details thereof will be described below.
[0139]
FIG. 26 shows an outline of the processing of the main program 470 in the form of a flowchart. Referring to FIG. 26, the main program 470 first generates all instances of modules used in its own processing (500). Next, the main program 470 generates an instance of the controller 480 (502). A module registration method mounted in advance in the controller 480 generated in this way is called, and all modules instantiated in step 500 are registered in the controller 480. At this time, the controller 480 stores information regarding the module registration order.
[0140]
Subsequently, a request from the browser executed on the client PC is waited (506), and if there is a request, a page number to be processed corresponding to the request is designated, and a module execution method of the controller 480 is called. After sending the result to the browser, control returns to step 506.
[0141]
In FIG. 27, when there is a call of its own method, the controller 480 determines which call has been made (520), and executes the execution method 522, the registration method 524, etc. according to the result. In the registration method, information for specifying an instance of a module generated by the main program 470 is registered in the management table. At this time, as described above, information regarding the registration order is also held.
[0142]
FIG. 28 shows details of the execution method 522. First, a process for creating a menu displayed on the screen is performed (530). This process will be described later with reference to FIG.
[0143]
Subsequently, the modules are sequentially called in the order newly registered in the management table by the registration method shown in FIG. At this time, a page number is given to each module as a parameter. As will be described later, each module executes a page processing method that matches the given page number and returns a result of “processed”, and there is no page processing method that matches the given page number. Do nothing and return a result of "unprocessed". The controller 480 determines whether or not the result of “processed” is returned from the module as a result of the process of step 532, and when the result of “unprocessed” is returned, the process of step 532 is performed for the next module. Repeat. When the “processed” result is returned, the execution method is finished.
[0144]
FIG. 29 shows the contents of step 530 in FIG. Referring to FIG. 29, controller 480 first creates an empty menu tag (string) and passes it to the first module in the registration table (550). When each module receives the menu tag, it adds it to the menu tag of its own menu display character string and returns it to the controller 480. The controller 480 receives the menu tag from the module (552), and determines whether or not this processing has been performed for all the modules (554). If the processing has not been completed for all the modules, the controller 480 passes the menu tag to the next module (556), and thereafter repeats the processing of steps 552 to 554.
[0145]
When the menu tag is passed to all modules and the receiving process is completed, a process of passing the menu tag obtained as a result to the browser is performed (558). By this processing, the menu display character strings possessed by the modules are displayed side by side in a menu format on the browser screen.
[0146]
Now, each module called by the controller 480 in Step 532 of FIG. 28 executes the following page execution method. Referring to FIG. 30, first, the module determines whether or not a page corresponding to the page number given from controller 480 as a parameter is in its own module (570). If there is, the page is executed (572), and the result of “processed” is returned. If not, do nothing and return an “unprocessed” result.
[0147]
As described above, modules are called back in order from the module newly registered in the table. As a result, when there are a plurality of modules having the page processing method with the same page number, only the page processing method of the newly registered module is executed, and the page processing method of the old module is not executed. Thus, a specific page process can be replaced with a new one. This relationship is shown in FIG.
[0148]
Referring to FIG. 31, it is assumed that a new inquiry module 580 is added and registered in the system shown in FIG. Since this module 580 is newly registered from the inquiry module 472, it is called by the controller 480 before the inquiry module 472. Further, as shown in FIG. 31, the new inquiry module 580 has a page processing method 582 corresponding to the page number (11) in addition to the page control method, and this page number is included in the page processing methods of the inquiry module 472. It matches with one page number. Then, when calling the page number 11, the page processing method 582 of the new inquiry module 580 is first called. As a result, a “processed” result is returned from the new inquiry module 580 to the controller 480. The page processing (11) method of the inquiry module 472 is never called.
[0149]
In this configuration, even if the page processing (11) method of the query module 472 is changed, the page processing method 582 of the new query module 580 is not affected at all. Therefore, modules and page processing methods can be made independent, and a highly maintainable business program can be efficiently customized by a differential program.
[0150]
By developing a program with the module configuration as described above, the following effects can be obtained.
[0151]
(1) Since modules are independent in processing units, creation is easy and maintenance is easy.
[0152]
(2) Modules with necessary functions can be used in any combination.
(3) Modules can be easily replaced and added, making it easy to customize programs.
[0153]
Although the present invention has been described based on the embodiments, the present invention is not limited to the system of these embodiments. The scope of rights of the present invention should be determined by the description of each claim. What uses the component equivalent to each component of embodiment disclosed by this-application specification is also contained in the right range of this invention.
[Brief description of the drawings]
FIG. 1 is an external view of a computer for realizing a program development system according to the present invention.
FIG. 2 is a block diagram of a computer for realizing a program development system according to the present invention.
FIG. 3 is a flowchart showing an application program creation procedure in an embodiment of the present invention.
FIG. 4 is a schematic diagram for explaining a concept of an item object.
FIG. 5 is a block diagram of a tool for extracting item objects from DB definition information.
FIG. 6 is a diagram illustrating an example of a DB definition file.
FIG. 7 is a diagram illustrating an example of a data definition file of an item object.
FIG. 8 is a flowchart of processing for creating a data definition file of an item object from a DB definition file.
FIG. 9 is a diagram showing a screen when interactively modifying the data definition file of an item object.
FIG. 10 is a diagram showing a screen when interactively modifying the data definition file of an item object.
FIG. 11 is a diagram showing a screen when interactively modifying a data definition file of an item object.
FIG. 12 is a diagram showing a screen when interactively modifying the data definition file of an item object.
FIG. 13 is a diagram illustrating an example of a business application screen.
FIG. 14 is a diagram for describing the concept of an application server using item objects in an embodiment of the present invention.
FIG. 15 is a diagram for explaining functions to be implemented by an application server.
FIG. 16 is a diagram showing a relationship between an object and an application when an application using an item object operates according to an embodiment of the present invention.
FIG. 17 is a diagram illustrating a part of a coding example of a main program.
FIG. 18 is a flowchart of processing for realizing a form part.
FIG. 19 is a diagram illustrating a relationship between a framework and a program part to be developed.
FIG. 20 is a diagram for explaining a method of managing an item object using an item object management object.
FIG. 21 is a flowchart of processing for item object management;
FIG. 22 is a diagram for explaining the effect of framework construction according to an embodiment of the present invention.
FIG. 23 is a diagram showing the concept of module control according to an embodiment of the present invention.
FIG. 24 is a diagram showing the relationship between objects and applications for module control according to an embodiment of the present invention.
FIG. 25 is a diagram conceptually illustrating a configuration of a module.
FIG. 26 is a schematic flowchart of a main program incorporating module processing.
FIG. 27 is a flowchart for explaining the operation of a controller object.
FIG. 28 is a flowchart showing a control structure of an execution method of a controller object.
FIG. 29 is a flowchart of menu creation processing by a controller object.
FIG. 30 is a flowchart of a page execution method implemented in each module.
FIG. 31 is a diagram illustrating a relationship between an object and an application when page replacement is performed.
FIG. 32 is a block diagram illustrating a configuration example of a system constructed by a conventional intra network.
[Explanation of symbols]
150, 280, 282 Item object, 162 DB creation tool, 254, 256 Browser, 260 Java servlet engine, 290 Form parts, 470 Main program, 472 Query module, 474 Registration module, 476 Update module, 478 Delete module, 580 New query module.

Claims (6)

データベースを格納するデータベース装置に接続されるアプリケーションサーバシステムであって、前記データベースのレコードを構成する各項目に対応するデータ項目と、前記データ項目を参照するために用いられる項目名とは関連付けられており、前記アプリケーションサーバシステムは、前記データ項目を使用する画面を表示するクライアント装置にさらに接続されており、
前記クライアント装置から、前記画面を表示する要求の入力を受け付ける入力手段と、
前記画面における前記データ項目の表示のために前記項目名を使用してコーディングされたプログラムと、前記項目ごとに規定される項目オブジェクトとを格納する記憶手段とを備え、
前記項目オブジェクトは、前記データ項目の属性と、前記項目名に対応するデータ項目を操作するためのメソッドに対応するメソッドプログラムコードとを含み、
前記属性は、前記項目名と、前記画面に表示される項目名称とを含み、
前記プログラムは、前記クライアント装置において前記画面を表示するためのソースを構成する部品プログラムを含み、前記データ項目の属性と、前記部品プログラムとは、分離して規定されており、
前記プログラムと、前記項目オブジェクトに対応する処理とを実行する演算手段を備え、
前記演算手段は、
前記クライアント装置からの前記要求に基づいて、前記画面の表示に使用されるデータ項目を特定する項目名を前記部品プログラムに与える手段と、
前記項目名に基づいて前記部品プログラムを実行することにより、前記データ項目に対応する項目オブジェクトを検索する検索手段と、
前記部品プログラムを実行することにより、前記検索手段により検索された項目オブジェクトに含まれる前記項目名称と前記メソッドプログラムコードとを取得する取得手段と、
前記取得手段により取得された前記項目名称および前記メソッドプログラムコードを用いて前記部品プログラムを実行することにより、前記項目名称を含む画面を表示するための前記ソースを生成する生成手段とを含み、
前記クライアント装置に対して前記生成手段により生成されたソースを送信する送信手段をさらに備える、アプリケーションサーバシステム。
An application server system connected to a database device for storing a database, wherein a data item corresponding to each item constituting a record of the database is associated with an item name used for referring to the data item The application server system is further connected to a client device that displays a screen that uses the data item,
Input means for receiving an input of a request to display the screen from the client device;
A storage means for storing a program coded using the item name for display of the data item on the screen, and an item object defined for each item;
The item object includes an attribute of the data item and a method program code corresponding to a method for operating the data item corresponding to the item name,
The attributes include the item name and the item name displayed on the screen,
The program includes a part program that constitutes a source for displaying the screen on the client device, and the attribute of the data item and the part program are separately defined.
Computation means for executing the program and processing corresponding to the item object,
The computing means is
Means for giving the part program an item name for identifying a data item used for displaying the screen based on the request from the client device ;
Search means for searching for an item object corresponding to the data item by executing the component program based on the item name;
An acquisition unit that acquires the item name and the method program code included in the item object searched by the search unit by executing the component program;
Generating means for generating the source for displaying the screen including the item name by executing the component program using the item name and the method program code acquired by the acquiring unit;
An application server system, further comprising a transmission unit that transmits the source generated by the generation unit to the client device.
前記演算手段は、
前記クライアント装置からの情報を取得するセッション変数取得手段と、
前記クライアント装置から送信されたデータを取得するデータ取得手段と、
前記データ取得手段により取得されたデータに基づいて、前記データベースにアクセスするためのアクセス手段とをさらに含む、請求項1に記載のアプリケーションサーバシステム。
The computing means is
Session variable acquisition means for acquiring information from the client device;
Data acquisition means for acquiring data transmitted from the client device;
The application server system according to claim 1, further comprising: access means for accessing the database based on data acquired by the data acquisition means.
前記入力手段は、前記クライアント装置において入力された更新データの入力をさらに受け付け、
前記演算手段は、前記更新データに基づいて、前記データベースに格納されているデータ項目を更新する更新手段をさらに含む、請求項1または2に記載のアプリケーションサーバシステム。
The input means further accepts an input of update data input in the client device;
The application server system according to claim 1, wherein the calculation unit further includes an update unit that updates a data item stored in the database based on the update data.
前記属性は、前記データ項目のデータ型をさらに含み、
前記メソッドは、前記データ型に基づいて前記データ項目のエラーチェックを行なうためロジックを含む、請求項1〜3のいずれかに記載のアプリケーションサーバシステム。
The attribute further includes a data type of the data item,
The application server system according to claim 1, wherein the method includes a logic for performing an error check on the data item based on the data type.
前記項目オブジェクトのデータ定義は、前記テータベースのデータ定義に基づいている、請求項1〜4のいずれかに記載のアプリケーションサーバシステム。  5. The application server system according to claim 1, wherein the data definition of the item object is based on the data definition of the data base. 前記生成手段は、タグ言語に基づいて前記ソースを生成する、請求項1〜5のいずれかに記載のアプリケーションサーバシステム。  The application server system according to claim 1, wherein the generation unit generates the source based on a tag language.
JP2000143123A 2000-05-16 2000-05-16 Application server system Expired - Lifetime JP4136271B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000143123A JP4136271B2 (en) 2000-05-16 2000-05-16 Application server system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000143123A JP4136271B2 (en) 2000-05-16 2000-05-16 Application server system

Publications (2)

Publication Number Publication Date
JP2001325098A JP2001325098A (en) 2001-11-22
JP4136271B2 true JP4136271B2 (en) 2008-08-20

Family

ID=18649986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000143123A Expired - Lifetime JP4136271B2 (en) 2000-05-16 2000-05-16 Application server system

Country Status (1)

Country Link
JP (1) JP4136271B2 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003308332A (en) 2002-04-15 2003-10-31 Sumitomo Electric Ind Ltd Program for accessing database, computer-readable recording medium recorded with the program, and method of operating database
JP4643900B2 (en) * 2003-11-05 2011-03-02 株式会社野村総合研究所 Input check system with check code generation function
JP4495782B2 (en) * 2004-02-25 2010-07-07 株式会社野村総合研究所 Data integration management system and data integration management program
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
JP4280759B2 (en) 2006-07-27 2009-06-17 キヤノン株式会社 Information processing apparatus and user interface control method
US8812962B2 (en) 2009-11-12 2014-08-19 Microsoft Corporation Web service interface and querying
US20130346842A1 (en) * 2011-03-02 2013-12-26 Mitsubishi Electric Corporation Programmable display device and drawing-data creation method
JP5377695B2 (en) * 2012-02-29 2013-12-25 京セラドキュメントソリューションズ株式会社 Device information providing system, electronic device and device information providing program
JP5727413B2 (en) * 2012-05-08 2015-06-03 株式会社野村総合研究所 Application development support system and application development support program
WO2015029193A1 (en) * 2013-08-29 2015-03-05 株式会社野村総合研究所 Web server system, application development assistance system, multilingual support method in web server system, multi-device support method in web server system, and application development assistance method
CN107153528A (en) * 2016-03-02 2017-09-12 阿里巴巴集团控股有限公司 The method and apparatus that mixed model list items are reused
JP6918057B2 (en) * 2019-08-05 2021-08-11 三菱電機株式会社 Screen development support device, screen development support method and screen development support program
CN112947990B (en) * 2021-03-23 2023-04-07 四川虹美智能科技有限公司 Development library creating method, device and computer readable medium

Also Published As

Publication number Publication date
JP2001325098A (en) 2001-11-22

Similar Documents

Publication Publication Date Title
US8375351B2 (en) Extensible rapid application development for disparate data sources
US7191429B2 (en) System and method for managing architectural layers within a software model
US6268852B1 (en) System and method for facilitating generation and editing of event handlers
US20070079282A1 (en) Browser based designer and player
CN1811702B (en) System and method for developing portal applications and automatically deploying them into a portal server application
US7069553B2 (en) Universal deployment tool
US7165073B2 (en) Dynamic, hierarchical data exchange system
US8321879B2 (en) Method and system for creating and providing a multi-tier networked service using separated function and presentation components
Nguyen et al. Accessing relational databases from the World Wide Web
US20060015839A1 (en) Development of software systems
US20070011650A1 (en) Computer method and apparatus for developing web pages and applications
US20040128300A1 (en) Method and apparatus for providing a graphical user interface for creating and editing a mapping of a first structural description to a second structural description
US20020101448A1 (en) Generating a declarative user interface
US7007266B1 (en) Method and software system for modularizing software components for business transaction applications
US20050257210A1 (en) Upgrading pattern configurations
Groenewegen et al. Integration of data validation and user interface concerns in a DSL for web applications
JP4136271B2 (en) Application server system
JP2003186673A (en) Integration method of computer system components, and configuration system
WO2003009177A1 (en) Web site application development method using object model for managing web-based content
US9684640B2 (en) Methods and apparatus for processing markup language documents
US20040012630A1 (en) Process for automatically creating and controlling a set of graphical objects in a client-server environment
US20070094289A1 (en) Dynamic, hierarchical data exchange system
US7657869B2 (en) Integration of external tools into an existing design environment
US20060004887A1 (en) Method and device for generating distributed java applications by means of a central xml configuration file
JP2002366352A (en) Apparatus for supporting web application development

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050506

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050901

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050914

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20051007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080326

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: 20080603

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4136271

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120613

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130613

Year of fee payment: 5

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term