JP2013025446A - 情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体 - Google Patents

情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体 Download PDF

Info

Publication number
JP2013025446A
JP2013025446A JP2011157726A JP2011157726A JP2013025446A JP 2013025446 A JP2013025446 A JP 2013025446A JP 2011157726 A JP2011157726 A JP 2011157726A JP 2011157726 A JP2011157726 A JP 2011157726A JP 2013025446 A JP2013025446 A JP 2013025446A
Authority
JP
Japan
Prior art keywords
definition
sql statement
phrase
character string
query
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.)
Withdrawn
Application number
JP2011157726A
Other languages
English (en)
Inventor
Atsushi Tsumagari
敦 津曲
Kenji Iinuma
賢治 飯沼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Marketing Japan Inc
Canon IT Solutions Inc
Canon MJ IT Group Holdings Inc
Original Assignee
Canon Marketing Japan Inc
Canon MJ IT Group Holdings Inc
Canon Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Marketing Japan Inc, Canon MJ IT Group Holdings Inc, Canon Software Inc filed Critical Canon Marketing Japan Inc
Priority to JP2011157726A priority Critical patent/JP2013025446A/ja
Publication of JP2013025446A publication Critical patent/JP2013025446A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】検索条件として入力されたパラメータの値に応じて、アプリケーションの要件にとって適切なSQL文を柔軟に生成する技術を提供する。
【解決手段】アプリケーションサーバは、ユーザがアプリケーションクライアントにおいて入力した値を含むデータベース検索要求をパラメータ値として受け取り、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句を生成するための条件句生成定義とから構成されるクエリ定義と、前記データベース検索要求に基づき、SQL文を生成することにより、データベースの検索を柔軟に実行することが可能となる。
【選択図】図16

Description

本発明は、SQL文を動的かつ柔軟に生成する技術に関する。
従来から、業務アプリケーションにおいては、データベースと連携した開発を行うことが多い。従って、データベース処理に関する部分の開発効率を向上させることは、業務アプリケーション全体の開発効率を向上させることになる。
そのための1つの方法として、SQL文を動的に生成する技術が提供されている。
特許文献1では、現在表示している画面(カレントページ)から、他の画面(ネクストページ)に画面遷移する際に、SQL文を生成する。
すなわち、例えばスクリーン部品1には、“ユーザID”を入力する画面生成処理と、該画面生成処理で生成された画面でユーザが入力した“ユーザID”の実際の値をあらかじめ用意したwhere句に当てはめる処理を定義する。一方、スクリーン部品2には、データベースのどのテーブルから、どのデータ項目(カラム)を取得するかという“where句以外のSQL文の部分”と、検索結果を表示する画面生成処理の定義を含む。
アプリケーションの実行時には、スクリーン部品1に基づき生成されるカレントページを表示し、“ユーザID”を入力する。その後、スクリーン部品2に基づき生成されるネクストページとして画面遷移する際、スクリーン部品2の“where句以外のSQL文の部分”と、スクリーン部品1の“where句部分”と結合する。カレントページにおいて入力された“ユーザID”の値は、“where句”に当てはめられることでSQL文を生成し、該SQL文でデータベースを検索した結果を、ネクストページに表示する。
特開2003−308332号公報
特許文献1においては、前述のように“where句以外のSQL部分”と“where句”を実行時に結合して利用する技術が提示されている。
しかしながら、where句の条件として設定するパラメータ(例えば前述の”ユーザID”)に、必ずしもアプリケーションの動作要件を満たすために意図した値が送られてくるとは限らない。
前述の例では、カレントページにおいて、“ユーザID”の入力欄に何も指定されずにSQL文が生成された場合には、“where userid=NULL”となる。SQL文実行の結果としては、データベースの中で“ユーザID”が未定義のレコード一覧がネクストページに表示される。
すなわち、クライアント端末から入力された値を、where句のパラメータに、そのまま値として当てはめてSQL文を生成する方法では、十分に柔軟なSQL文の生成は実現できない。
しかしながら、実際の業務ではユーザが値を入力しない場合であっても、何らかの既定値を利用したり、あるいは条件を付けずに検索したりといったアプリケーションの動作要件としたい場合がある。
本発明は、以上の問題を解決するものであり、検索条件として入力されたパラメータの値に応じて、アプリケーションの要件にとって適切なSQL文を柔軟に生成する技術を提供することを目的とする。
本発明は、クライアント装置とアプリケーションサーバとが通信可能な情報処理システムであって、前記クライアント装置は、指示オブジェクトが選択されることで実行されるイベント処理を含む画面データを表示する表示制御手段と、前記表示制御手段により表示された画面データ上の前記指示オブジェクトに対するユーザ操作に応じて、前記指示オブジェクトに対応付けられたイベント処理に基づくデータベース検索要求を前記アプリケーションサーバに発行する要求発行手段と、を備え、前記アプリケーションサーバは、データベースへ発行するSQL文を生成するための、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句を生成するための条件句生成定義とから構成される、または前記SQL文基本定義から構成されるクエリ定義を記憶するクエリ定義記憶手段と、前記データベース検索要求に従って、前記クエリ定義記憶手段に記憶されている前記クエリ定義を取得するクエリ定義取得手段と、前記クエリ定義取得手段により取得した前記クエリ定義から、前記SQL文基本定義を取得し、文字列として文字列変数に記憶させる代入手段と、前記条件句生成定義と、前記データベース検索要求に含まれる検索条件のパラメータ値に基づき、前記条件句を生成する条件句生成手段と、前記クエリ定義に前記条件句生成定義が含まれない場合には、前記代入手段により前記文字列変数に記憶された前記SQL文基本定義を生成された前記SQL文とし、前記クエリ定義に前記条件句生成定義が含まれている場合には、前記条件句生成手段で生成された前記条件句を文字列として前記文字列変数に連結し、前記文字列変数に記憶されている文字列を生成された前記SQL文とするSQL文生成手段と、を備えることを特徴とする。
本発明により、検索条件として入力されたパラメータの値に応じて、アプリケーションの要件にとって適切なSQL文を柔軟に生成する技術を提供することが可能となる。
本発明に係わるプログラム開発装置、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバの構成の一例を示すシステム構成図である。 本発明に係わるプログラム開発装置、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバとして適用可能な各ハードウェア構成の一例を示すブロック図である。 本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。 データベースサーバが管理するデータベースの一例を示す図である。 本発明の実施の形態におけるアプリケーションを作成する処理の流れの一例を示すフローチャートである。 開発画面の一例である。 本発明の実施の形態における開発処理の流れの一例を示すフローチャートである。 開発画面におけるテキストボックスオブジェクトの配置および属性定義の一例である。 開発画面におけるボタンオブジェクトの配置および属性定義の一例である。 開発画面におけるグリッドオブジェクトの配置および属性定義の一例である。 開発画面におけるボタンオブジェクトとクエリ定義の関連付けの一例である。 クエリ定義を開発する画面の例である。 クエリ定義を開発する画面の例である。 アプリケーションクライアント画面上の指示オブジェクトに対応付けるイベント処理を生成するフローチャートの一例である。 本発明の実施の形態におけるデータベース検索のための画面要求から、検索結果の表示までの流れを示すフローチャートの一例である。 本発明の実施の形態におけるSQL文を生成するフローチャートの一例である。 本発明の実施の形態における条件句または条件句部品を生成するフローチャートの一例である。 データベース検索結果の例である。 データベース検索結果の例である。 クエリ定義を開発する画面の例である。 クエリ定義に基づき生成されたスクリプトの例である。
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
図1は、本発明に係わるプログラム開発装置(開発者端末)、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント(クライアント装置)、アプリケーションサーバの構成の一例を示すシステム構成図である(情報処理システム)。
プログラム開発装置101(情報処理装置)は、開発者の操作に従って画面レイアウトおよびデータベース検索指示などを定義する。プログラム開発装置101単体では、ユーザの入力受付を行い、後述するプログラム開発サーバ102に実際のプログラム生成処理をさせてもよいし、プログラム開発装置単体でプログラム生成まで処理してもよい。
プログラム開発サーバ102a〜102b(情報処理装置)は、プログラム開発装置101により入力された開発者の指示に従って、プログラムを開発する。プログラム開発サーバ102aはLANなどのネットワーク106内に配置されてもよいし、プログラム開発サーバ102bはインターネット上やクラウド上に配置されてもよい。
データベースサーバ103a〜103b(情報処理装置)は、開発されたアプリケーションが使用するデータベースであり、また本発明では開発時にも動作確認などのために利用してもよい。例えば、開発者が利用するためにデータベースサーバ103は、プログラム開発装置101と同一の装置で構成されていてもよいし、LANなどのネットワーク106内に配置されてもよい(データベースサーバ103a)。またインターネット上やクラウド上に配置されてもよい(データベースサーバ103b)。また、プログラム開発装置101が、プログラム開発サーバ102と協調する場合には、プログラム開発サーバ102とデータベースサーバ103が同一の装置内に構成されていてもよい。
アプリケーションサーバ105a〜105b(情報処理装置)は、プログラム開発装置101で開発されたアプリケーションを実行する。LANなどのネットワーク106内に配置されてもよい(アプリケーションサーバ105a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションサーバ105b)。また、ネットワーク106、インターネット、クラウド上のデータベースサーバ103と接続して動作する可能である。
アプリケーションクライアント104a〜104b(情報処理装置)は、アプリケーションサーバ105と協調してプログラム開発装置101で開発したアプリケーションプログラムを動作させる、ユーザの入力端末である。LANなどのネットワーク106内に配置されてもよい(アプリケーションクライアント104a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションクライアント104b)。携帯端末などの情報処理装置であってもよい。
図2は、本発明に係わるプログラム開発装置、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバとして適用可能な各ハードウェア構成の一例を示すブロック図である。
図2において、CPU201は、システムバス204に接続される各デバイスを統括的に制御する。
また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるオペレーティングシステム(OS)や、各サーバ、クライアント、装置など情報処理装置の後述する各種機能を実現するためのプログラムが記憶されている。
RAM202は、CPU201の主メモリ、ワークエリア、一時待避領域等として機能する。
入力コントローラ205は、入力部209からの入力を制御する。この入力部209としては、情報処理装置では、キーボード、マウス等のポインティングデバイスが挙げられる。
出力コントローラ206は、出力部210の表示を制御する。この出力部210としては、例えば、CRTや液晶ディスプレイ等が挙げられる。
外部メモリコントローラ207は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ211へのアクセスを制御する。加えて、各サーバ、クライアント、装置等の各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ211としては、ハードディスク(HD)やフレキシブルディスク(FD)、PCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)、スマートメディア等が挙げられる。
通信I/Fコントローラ208は、ネットワークを介して外部機器との通信制御処理を実行する。
本発明を実現するためのプログラム212は外部メモリ211に記録されており、必要に応じてRAM202にロードされることによりCPU201によって実行されるものである。
図3は、本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。
アプリケーションクライアント104は、表示制御部301、要求発行部302を備えている。
表示制御部301は、アプリケーションの特定の画面が生成される場合には、アプリケーションサーバ105において生成された画面を、アプリケーションクライアント104のアプリケーション上に表示する機能部である。また、既に表示されている場合に、ユーザ操作によりアプリケーションサーバにデータベース検索要求などが発行された場合の処理結果を、アプリケーションの表示に反映する。
要求発行部302は、表示制御部301で表示されているボタンオブジェクトなどが、ユーザ操作により指示(マウスクリックなど)された場合に、データベース検索要求などをアプリケーションサーバ105に発行する機能部である。
アプリケーションサーバ105は、要求受付部311、クエリ定義取得部312、SQL文基本定義取得部313、条件句生成定義取得部314と、代入部315、条件句生成部316、SQL文生成部317、SQL文発行部318、スクリプト生成部319、クエリ定義記憶部321を備える。
要求受付部311は、アプリケーションクライアント104の要求発行部302から要求されたデータベース検索要求を受け取る機能部である。受け取る情報には、データベース検索要求に使用するクエリ定義を特定する情報(クエリID)、SQL文を生成する際のパラメータの値などを含む。要求の受付は、本実施の形態においてはアプリケーションクライアント104から受け付けているが、必ずしも限定するものではない。同一のアプリケーション内の他の機能部や、他のアプリケーションから受け付けてもよい。
クエリ定義取得部312は、前記クエリIDに基づき、後述のクエリ定義記憶部321から対応するクエリ定義を取得する機能部である。
SQL文基本定義取得部313は、前記クエリ定義に含まれるSQL文基本定義を取得する機能部である。SQL文基本定義の詳細については後述する。
条件句生成定義取得部314は、前記クエリ定義に含まれる条件句生成定義を取得する機能部である。条件句生成定義の詳細については後述する。
代入部315は、クエリ定義の中のSQL文基本定義を変数に代入する機能部である。
条件句生成部316は、データベース検索要求を受け付けた際のパラメータの値に基づき、前記条件句生成定義に従って、条件句を生成する機能部である。
SQL文生成部317は、前記クエリ定義および前記パラメータ値に基づき、SQL文を生成する機能部である。条件句生成部316の生成結果がある場合には、SQL文基本定義に、生成結果を連結(結合)することで、SQL文を生成する。
SQL文発行部318は、前記のSQL文生成部317により生成されたSQL文により、データベースサーバ103のデータベースを検索する機能部である。
スクリプト生成部319は、プログラム開発装置101で定義された前記クエリ定義からSQL文生成用のスクリプトを生成する機能部である。
クエリ定義記憶部321は、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句等を生成するための条件句生成定義とから構成される、またはクエリ定義部は、前記SQL基本部から構成されるクエリ定義を記憶する記憶部である。
図4は、データベースサーバが管理するデータベースの一例を示す図である。本実施の形態の説明をするために利用する。
“projectTable”テーブルには、受託開発を行うプロジェクトの情報が記載されている。データ項目には、プロジェクトを一意に特定する案件番号401、該プロジェクトの顧客名402、プロジェクト名称403、該プロジェクトの開始日404および終了日405があり、401〜405により1レコードが構成される。
全てのデータ項目が入力されている前提であるが、入力処理中であったり、プロジェクトが完了していなかったりして一部データ項目が入力されていない(本実施形態では、“Prj07”)場合があるとして以降の説明を行う。
図5は、本発明の実施の形態におけるアプリケーションを作成する処理の流れの一例を示すフローチャートである。
図5は、開発者がプログラム開発装置を操作してアプリケーション画面、データベースを検索するためのアクション定義、クエリ定義などの開発を行う処理の流れを示すものである。本実施の形態では、アプリケーションクライアント104からデータベース検索要求を発行するため、ユーザが条件を入力するテキストボックス、検索要求を発行するボタン、結果を表示するグリッドなどのオブジェクトを配置する。更に前記ボタンに要求発行指示がなされた場合のアクション定義の処理を説明する。
S501において、プログラム開発装置は、プログラム開発装置に表示する開発画面を、プログラム開発サーバに対して要求する。
S502において、プログラム開発サーバは、開発画面の要求を受け付ける。
S503において、プログラム開発サーバは、プログラム開発装置に対して開発画面を送信する。
S504において、プログラム開発装置は、開発画面を受信する。
S505において、プログラム開発装置は、開発画面を表示する。開発画面の一例を図6に示す。開発画面は、メニュー600と、オブジェクト定義フィールド601、オブジェクト選択フィールド602、定義設定フィールド603つの画面から構成される。
開発方法としては、オブジェクト選択フィールド602から任意のオブジェクトを選択してオブジェクト定義フィールド601に登録(配置)を行い、また、そのオブジェクトに対する属性やアクションの定義を定義設定フィールド603から行う。いずれを定義するかは、メニューで選択する。更に、メニューからクエリ定義を選択することで、画面とは別にクエリ定義を作成することが出来る。画面およびクエリ定義の作成が終わった際は、登録ボタン604を押下することで、配置、定義された内容が、保存され、開発を終了することができる。
S506において、プログラム開発装置は、開発処理を行う。この開発処理の流れは、図7〜14を用いて詳しく説明する。
様々なアプリケーションが可能であるが、本実施の形態では前述の通り、まず、アプリケーションクライアント104に画面を表示する。次にデータベース検索の条件となる値をユーザによりテキストボックスに入力させ、ボタンをマウスでクリックするなどにより指示する。すると、アプリケーションサーバ105にアクション定義に従ってデータベースの検索を要求し、検索結果がグリッドオブジェクトに表示されるアプリケーションの開発を例として示す。
図7は、本発明の実施の形態における開発処理の流れの一例を示すフローチャートである。
S701において、プログラム開発装置は、テキストボックスオブジェクトが選択されたかを判定する。Yesの場合、S702へ進み、Noの場合、S703へ進む。ここでは、具体的には、図8に示すテキストボックス指定ボタン801が選択されたかを判定する。テキストボックス指定ボタン801が選択された後、開発者は、まずマウスをドラッグアンドドロップすることでテキストボックスオブジェクト802を、オブジェクト定義フィールド601に配置する。更にテキストボックスオブジェクト802にフォーカス(803)し、メニューから“属性定義”をクリックすることで、開発者に属性を編集させることができる。
ここでは、見出し属性(804)を“終了日”に変更する(S702)。結果は図9のテキストボックスオブジェクト802のようになる。図8では、“終了日”の前に、既に“顧客目”、“開始日”の2つのテキストボックスオブジェクトが配置されているものとしている。
S703において、プログラム開発装置は、ボタンオブジェクトが選択されたかを判定する。Yesの場合、S704へ進み、Noの場合、S705へ進む。ここでは、具体的には、図9に示すボタン指定ボタン901が選択されたかを判定する。ボタン指定ボタン901が選択された後、開発者は、マウスをドラッグアンドドロップすることでボタンオブジェクト902を、オブジェクト定義フィールド601に配置する。更にボタンオブジェクト902にフォーカス(903)し、メニューから“属性定義”をクリックすることで、開発者に属性を編集させることができる。
ここでは、見出し属性を“期間検索”に変更する(S704)。結果は図10の期間検索ボタン1005のようになる。図9では、“期間検索”の前に、既に“顧客検索”のボタンが配置されているものとする。
S705において、プログラム開発装置は、グリッドブジェクトが選択されたかを判定する。Yesの場合、S706へ進み、Noの場合、S707へ進む。ここでは、具体的には、図10に示すグリッド指定ボタン1001が選択されたかを判定する。グリッド指定ボタン1001が選択された後、開発者は、マウスをドラッグアンドドロップすることでグリッドオブジェクト1002を、オブジェクト定義フィールド601に配置し、更にグリッドオブジェクト1002にフォーカス(1003)し、メニューから“属性定義”をクリックすることで、開発者に属性を編集させることができる。
グリッドオブジェクトの場合、属性としては、まず何列分を表示できるか指定させる。図10のグリッドオブジェクト1002では、5列分である。更に、各列に対しての項目の見出し属性を定義させる。ここでは、左から項目1〜項目5を1004a〜1004eの通り、図4のprojectTableのデータ項目に対応する401〜405とする(S706)。結果は図11のグリッドオブジェクト1002のようになる。
S707において、プログラム開発装置は、その他のオブジェクトが選択されたかを判定して、選択された場合は、そのオブジェクトの配置し、定義を受け付け(S708)、SS709へ進む。その他のオブジェクトが選択されない場合は、そのままS709へ進む。
S709において、プログラム開発装置は、“アクション定義”が選択されたかを判定する。具体的には、図11におけるメニュー600から、“アクション定義”が選択されたかを判定する。Yesの場合、S710へ進み、Noの場合、S711へ進む。“アクション定義”が選択される際にオブジェクト定義フィールド601でフォーカスされているオブジェクトに対して、開発者にアクション定義を編集させることができる。
図11を用いて、アクション定義の説明をする。図11は、開発画面におけるボタンオブジェクトとクエリ定義の関連付けの一例である。
図11は、顧客検索ボタン1101(オブジェクトIDはbutton1)にフォーカス(1108)し、メニューの“アクション定義”を選択して、定義設定フィールド603にアクション定義のために必要な入力項目が表示された状態を示している。
具体的には、クエリID定義フィールド1103、パラメータ定義フィールド1104、表示ターゲット定義フィールド1105に必要な項目を指定する。
図11の例では、クエリID定義フィールド1103に“CUSTOM_INFO1”(後述する図12のクエリ定義1200a)を指定している。これにより、アクション定義時にフォーカスしているオブジェクト(本実施例では、顧客検索ボタン1101、オブジェクトIDはbutton1)が、アプリケーション実行時にクリックされた場合には、“CUSTOM_INFO1”のクエリ定義に基づきSQL文が生成され、データベースを検索することが指定される。
パラメータ定義フィールド1104には、“:NAME=textbox1”が指定されている。“textbox1”は、顧客名テキストボックス1102としてのオブジェクトIDである。アプリケーションの実行時には、アプリケーションクライアント104の顧客名テキストボックス1102にユーザが入力した値を、クエリ定義のパラメータ値としてアプリケーションサーバ105に渡すことを意味している。図12のクエリ定義1200aでは、“:NAME”にパラメータ値が設定される。
表示ターゲット定義フィールド1105には、“grid1”が設定されている。これは、グリッドオブジェクト1002のオブジェクトIDであり、アプリケーションサーバ105から受信したデータベース検索結果の表示先を指定する。
各オブジェクトの属性定義においては、必要に応じて、開発者がオブジェクトIDを指定できる(不図示)。グリッドオブジェクトにおいては、各列も1つのオブジェクトとして定義され、従って各列にオブジェクトIDを付与できる。例えば、検索結果のデータ項目名(カラム名)は、対応するオブジェクトIDを持つテキストボックスや、グリッドオブジェクトの列に表示されるよう設定可能である。
なお、本実施例では、顧客検索ボタン1101のアクション定義に、クエリ定義を1つだけ対応付けているが、複数対応付けてもよい。その結果、1つのボタンをクリックすると、2つの異なるデータベース検索が実行され、異なるターゲットに結果を表示することも可能である。
また、詳細の説明は省略するが、後述のアプリケーションを実行する例で使用するため、図11においてアクション定義をもう1つ定義する。
まず、期間検索ボタン1005に対応づけて、クエリIDとしては、図13の“ProjectTerm1”、開始日テキストボックス1106の値をパラメータ“:start”、終了日テキストボックス1107の値をパラメータ“:end”とする。更に、データベース検索結果をgrid1に表示させるとするアクション定義である。
S711において、プログラム開発装置は、メニューの“クエリ定義”が選択されたかを判定する。具体的には、図11におけるメニュー600から、“クエリ定義”が選択されたかを判定する。Yesの場合、S712へ進み、Noの場合、S713へ進む。クエリ定義を開発するためには、図11の開発画面とは別の画面(図12、図13を参照)が表示される。すなわちクエリ定義画面自体は、画面の開発からは独立しており、前述のアクション定義とクエリ定義を関連付けることによって利用される。すなわち、本フローチャートにおいて、メニュー600からクエリ定義のみ開発者に開発させる(S712のみを実行する)ことが可能である。また後からアクション定義と関連付けたり、他の画面開発時に、別の画面用に作成したクエリ定義を再利用したりすることも可能である。クエリ定義については、図12、図13、図20を用いて説明する。
図12、図13、図20は、クエリ定義を開発する画面の一例である。
図12のクエリ定義1200a、1200bの例は、顧客名を指定して図4のデータベースのテーブルを検索する例である。
クエリ定義開発画面は、クエリID定義領域1201と、クエリ定義記述領域1202から構成される。いずれの領域も、開発者により入力される。
クエリID定義領域1201は、クエリ定義を特定するためのIDであり、クエリ定義1200aの例では、アクション定義時に図11のクエリID定義フィールド1103で指定した“CUSTOM_INFO1”が、指定されている。このようにクエリIDにより、アクション定義とクエリ定義が対応づけられる。
クエリ定義記述領域1202には、SQL文を生成するための情報として、少なくとも“SQL文基本定義”と、必要に応じて“条件句生成定義”が記載される。SQL文基本定義はSQL文として単独で実行することが可能な形式を満たしている。一方、条件句生成定義は、SQL文基本定義を単独でSQL文として実行すると、アプリケーションの要件に適さないデータベース検索結果が得られてしまう状況を防ぐため、アプリケーション実行時に動的に条件句を生成しSQL文基本定義に連結して使用するための、条件句を生成する手続きが記載される。
クエリ定義1200aでは、“select * from projectTable”がSQL文基本定義として記載されている。
条件句生成定義には3行の記載があるが、行頭に“−−#”という記載があるスクリプト部分と、条件句として“where 顧客名=:NAME”と、が記載されている。スクリプト部分には条件判定を記載され、これにより処理の流れが分岐する。“:NAME”のように“:”が先頭に付与されている文字列は、パラメータであり、図11のパラメータ定義フィールド1104の記述に対応する。すなわち、顧客名テキストボックス1102(textbox1)に入力された値が、“:NAME”に設定され、スクリプト部分および条件句において使用される。
クエリ定義1200bは、SQL文基本定義のみが記載されたクエリ定義の例である。図13のクエリ定義1300a、1300bの例は、開始日、終了日を指定して図4のデータベースのテーブルを検索する例である。
図13のクエリ定義1300a、1300bでは、さらに複雑な条件句生成定義が記載可能であることを示す。スクリプト部分の条件判定は、入れ子(1300aの3行目と5行目など)の記載が可能である。また、スクリプト部分を最初から最後まで実行するにあたり、条件判定が複数存在する記載も可能である(1300bの3〜7行目と9〜13行目)。
図20のクエリ定義2000の例では、SQL基本定義にテーブル名(from句の後に記述する)も、条件判定の中に記載されてもよいことを示している(4行目)。これにより、例えばアプリケーションクライアントにおいて、ユーザに選択されたボタンによって、異なるテーブルを検索するようにすることも可能である。また、15行目、23行目のように、条件句が必ずしも条件判定の中に含まれていなくともよい。後述の通り、条件句生成定義は、先頭行から最終行まで、順に実行され、その中で条件判定がある場合には、条件分岐して選択される条件句(条件句部品)とそうでないものがあることになる。
S713において、プログラム開発装置は、現在開発中の画面にアクション定義があるかどうかを判定する。具体的には、S710において、アクション定義が作成されているかどうかを判定する。Yesの場合、S714へ進み、Noの場合、図14のフローチャートを完了する。
S714において、図14のフローチャートで記載のプログラムが呼び出され、実行される。
図14は、アプリケーションクライアント画面上の指示オブジェクトに対応付けるイベント処理を生成するフローチャートの一例である。
アプリケーションの実行時に、アプリケーションクライアント104の画面上において、ユーザの操作(マウスクリックなど)による指示オブジェクト(ボタンなど)のイベントが発生すると、そのイベントに対応するイベント処理が実行される。このイベント処理により、アプリケーションサーバ105に対してデータベース検索要求を発行するために必要なパラメータ値を収集するなどの準備がなされる。
前記の処理は、指示オブジェクトに対応するアクション定義(S710で設定したアクション定義)に基づいて生成され、画面内に組み込まれる。前記イベント処理を生成するための処理が図14のフローチャートである。
本実施の形態において、イベント処理は、図14のフローチャート、すなわちプログラム開発装置101において生成されるものとするが、他の構成として、プログラム開発サーバ102で生成してもよいし、実行時にアプリケーションサーバ105において生成してもよい。
S1401において、プログラム開発装置は、指示オブジェクト(図11のアクション定義の例では顧客検索ボタン1101)のオブジェクトID(“button1”)を取得する処理を生成する。すなわち、ユーザがマウスクリックした場合(グラフィカルユーザインタフェース(GUI)上でイベントが発生した場合)、当該指示オブジェクトのオブジェクトID(“button1”)を取得する処理の生成である。
S1402からS1407は、指示オブジェクトに対応付けられたクエリ定義のクエリIDに対する処理を生成するループである。前述の通り、1つのオブジェクトに対応するアクション定義には、複数のクエリ定義を対応付け可能なためである。
S1403において、プログラム開発装置は、着目中のクエリIDを生成中の本処理に保持するためのコードを生成する。
S1404からS1406は、S1405において着目中のクエリIDに引き渡すパラメータ値を取得するためのループである。
S1405において、プログラム開発装置は、図11のパラメータ定義フィールド1104で設定したオブジェクトIDに対応するオブジェクト(アプリケーション実行時にユーザが“顧客名テキストボックス1102”に設定した値)を取得するためのコードを生成する。
パラメータ定義フィールド1104で、複数のパラメータとオブジェクトIDを指定した場合には、S1405は、その数だけ繰り返される。すなわち、複数のテキストボックスなどのオブジェクトからパラメータ値を取得するコードが生成される。
S1408において、プログラム開発装置は、前記取得したクエリID、オブジェクトID、パラメータの値を、検索要求発行部に渡すための処理を生成する。
S1409において、プログラム開発装置は、S1401〜S1408で生成した各処理を、一連の処理として連結する。
以上で図14のフローチャートについての説明を完了する。すなわち図7のS714を完了する。これにより図7のフローチャートについての説明も完了する。また、図5のS506が完了し、S507に進む。
S507において、プログラム開発装置は、登録の指示がなされたかを判定する。Yesの場合、S508に進み、Noの場合、S506に戻り開発を継続する。ここでは、具体的には、図11に示す登録ボタン604が選択されたかを判定する。
S508において、プログラム開発装置は、プログラム開発サーバに対して開発された画面の定義、アクション定義、クエリ定義を登録する指示を行う。
S509において、プログラム開発サーバは、プログラム開発装置から指示された、開発された画面の定義、アクション定義、クエリ定義の登録指示を受け付ける。
S510において、プログラム開発サーバは、前記プログラム開発装置から指示された、開発された画面の定義、アクション定義、クエリ定義の登録処理を実施する。ここで、開発された画面の定義、アクション定義、クエリ定義の登録処理は、プログラム開発サーバが管理する記録媒体に保存、記憶されることになる。また、再度、図5のフローチャートを実行する際に、保存した前記定義を呼び出して、定義の追加、変更、削除などを行うことも出来る。S510において登録された前記定義を、アプリケーションサーバに配置(コピーなど)することにより、アプリケーションとして実行することが可能となる。ただし、プログラム開発サーバとアプリケーションサーバが同一の情報処理装置であってもよく、また前記定義の登録先がアプリケーションサーバである場合には、定義の配置(コピーなど)をしなくてもよい。
アプリケーションサーバには、前記画面の定義、アクション定義、クエリ定義を解釈、実行するプログラムがあらかじめ格納されている。前記プログラムは、アプリケーションクライアント(クライアント装置)のユーザの操作に応じて、前記定義された画面を表示し、アクション定義、クエリ定義に従ってデータベースを検索した結果を、アプリケーションクライアントに表示する。前述の通り、例えば検索結果のデータ項目名(カラム名)は、対応するオブジェクトIDを持つテキストボックスや、グリッドオブジェクトの列に表示されるよう設定し、アプリケーションの実行時に表示を制御することが可能である。
以上で、図5の処理の流れの説明が完了した。
次に、開発されたアプリケーション画面を用いて、一般のユーザがデータベース検索を行う際の、処理の流れを説明する。
図15は、本発明の実施の形態におけるデータベース検索画面の要求から、検索結果の表示までの流れを示すフローチャートである。
ここで、アプリケーションのユーザは、アプリケーションクライアントを操作して、アプリケーション画面の表示を行う。アプリケーション画面は、画面データとして取得するものであり、ブラウザ等に表示されるものである。
S1501において、アプリケーションクライアントは、アプリケーションサーバに対してアプリケーション画面(画面データ)を要求する。
S1502において、アプリケーションサーバは、画面の要求を受け付ける。
S1503において、アプリケーションサーバは、アプリケーションクライアントにおいて、データベース検索のために、ユーザが検索条件を入力し、検索要求を発行するための画面データを、アプリケーションクライアントに送信する。この画面には、図14で生成した処理、すなわちユーザが検索要求を実施した際に発生するイベントに対応する処理が含まれている。
S1504において、アプリケーションクライアントは、画面データを受信する。
S1505において、アプリケーションクライアントは、ユーザの入力を受け付ける。ここでユーザの入力とは、データベース検索条件となるテキストボックスへの値の入力であり、また、前記入力が終わった際には、検索要求をするためのボタンのクリックなどである。
S1506において、アプリケーションクライアントは、図14で生成されたイベント処理を実行する。例えば、図11の顧客検索ボタン1101がクリックされた場合には、顧客名テキストボックス1102に前記ユーザが入力した値をパラメータ値として取得する。さらに、本イベント処理のコードの一部に組み込まれているクエリID(アクション定義時に、クエリID定義フィールド1103フィールドで定義された値)などを次のS1507に引き渡す。
S1507において、S1506から受け取ったパラメータ値、クエリIDを含むデータベース検索要求をアプリケーションサーバに発行する。
S1508において、アプリケーションサーバは、データベース検索要求を受け付ける。
S1509において、アプリケーションサーバは、データベース検索要求に基づき、SQL文生成を実施する。SQL文の生成について、図16のフローチャートを用いて説明する。
図16は、本発明の実施の形態におけるSQL文を生成するフローチャートの一例である。
S1601において、アプリケーションサーバは、データベース検索要求に含まれるクエリIDに基づき記憶されたクエリ定義を取得する。
S1602において、アプリケーションサーバは、前記クエリ定義から、SQL文基本定義を取得し、文字列として文字列変数に記憶する。
S1603において、アプリケーションサーバは、前記クエリ定義に、条件句生成定義の行に記載があるか判断する。行の記載があれば、S1604に進む。なければSQL文生成を終了する。この場合、既に生成されているSQL文が、図15のS1509への生成結果として返される。
S1604において、アプリケーションサーバは、条件句生成を実施する。条件句生成について、図17のフローチャートを用いて説明する。
図17は、本発明の実施の形態における条件句または条件句部品を生成するフローチャートの一例である。
条件句生成定義のうち、行頭に“――#”がある部分はスクリプト部分であり、スクリプト部分に記載された条件判定の結果に従って、条件分岐のうち選択された分岐に進む。選択された分岐内には、SQL文の条件句または条件句部品となる文字列が記載されている。
S1701において、アプリケーションサーバは、条件句生成定義から1行取得する。
S1702において、アプリケーションサーバは、S1701で取得した行の内容がスクリプト部分か、条件句(条件句部品)かを判定する。“Yes”の場合、S1703に進む。“No”の場合、S1705に進む。
S1703において、アプリケーションサーバは、前記取り出したスクリプト部分により条件判定を行う。条件判定の結果が“True”であれば、S1704に進む。“False”であれば、図17のフローチャートを終了する。
S1704において、アプリケーションサーバは、条件判定の結果、選択された分岐内に記載された文字列を取り出す。例えば、クエリ定義2000の9行目は、“:start”が“NULL”である場合は“True”となり、10行目のwhere句が文字列として取り出される。この文字列が、図16のS1604の結果となる。
S1705において、アプリケーションサーバは、S1701で取得した文字列を条件句(条件句部品)とする。例えば、クエリ定義2000の15行目、23行目のように条件分岐の中に入らない行が処理される。この文字列が、図16のS1604の結果となる。
なお、S1703で“False”である場合には、NULL文字列(“”)が結果として返されると考えてよい。
以上で、図17のフローチャートの説明を完了する。
S1605において、アプリケーションサーバは、S1602で取得、記憶したSQL文基本定義と、S1604で生成した条件句を連結して改めて記憶し、S1603に戻る。
再度S1603に進んできた場合には、前記条件句生成定義のうち、既にスクリプト部分として終了している次のステップから開始する。次のステップがある場合には、“Yes”としてS1604に進む。次のステップがない場合、すなわち、スクリプト部分の実行を最後まで終えている場合には、“No”として終了する。
クエリ定義1200aでは、“:NAME=NULL”の場合は、SQL文基本定義である“select * from projectTable”自体が生成されたSQL文である。
また、“:NAME”の値が、“カトーモーターズ”である場合には、“select * from projectTable where 顧客名=‘カトーモーターズ’”が生成されたSQL文である。
また、S1603〜S1605が繰り返し生成される場合があるが、この時、S1605では、既に連結されたSQL文(文字列)に、更に連結し、記憶する処理を繰り返していく。例えば、1回目は、1回目に生成された条件句(条件句部品)を、SQL文基本定義に連結し記憶する。さらに2回目に条件句(条件句部品)が生成された場合には、SQL文基本定義および1回目と2回目に生成された条件句(条件句部品)をすべて連結したものが記憶されることになる。また、このループは、クエリ定義の行が最後に到達するまで繰り返すものである。
以上で、図16のフローチャートの説明を完了する。図15のS1509が完了した時点(SQL文が生成された時点)に説明を戻す。S1509においてSQL文生成が完了すると、S1510に進む。
S1510において、アプリケーションサーバは、S1509において生成されたSQL文を、データベースサーバに発行する。
S1511において、データベースサーバは、発行されたSQL文を実行する。
S1512において、データベースサーバは、SQL文の実行結果をアプリケーションサーバに送信する。
S1513において、アプリケーションサーバは、データベースサーバからSQL文の実行結果を受信する。
S1514において、アプリケーションサーバは、SQL文の実行結果を、アプリケーションクライアントの表示制御部がアプリケーションクライアントに表示可能な画面データとして送信する。
S1515において、アプリケーションクライアントは、SQL文の実行結果を、画面データとして受信する。
S1516において、アプリケーションクライアントは、SQL文の実行結果として受信した画面データを、アクション定義において指定されたターゲット内に表示する。
S1517において、アプリケーションクライアントは、データベース検索のための画面データ表示に対する終了指示を受け付けたかどうかを判定する。具体的には、ユーザの操作により、他の検索画面に移行する、他のアプリケーションに移行する、Webブラウザを閉じる、などにより判定する。判定が“Yes”の場合には、データベース検索のための画面データ表示を終了する。“No”の場合には、S1505に進み、再度データベース検索条件の入力、検索要求のイベント発行のための操作をユーザから受け付ける。
なお、S1514〜S1516では、アプリケーションサーバが、SQL検索結果を画面データとしてアプリケーションクライアントに送信し、アプリケーションクライアントにおいて、指定されたターゲットに検索結果の値を当てはめている。これは、例えばAjaxにより画面遷移を伴わない動的なWebアプリケーション画面を提供することで、アプリケーションクライアントにおいて、アプリケーションサーバと非同期通信を実現できることによる。別の方法として、アプリケーションサーバにおいて、指定されたターゲットに対する検索結果の値の当てはめまで行った画面データを生成し、その画面データをアプリケーションクライアントに送信しても良い。
以上で、図15のフローチャートの説明を完了する。すなわちアプリケーションの実行の流れについて、説明を完了する。
以下、図4のデータベースのテーブル“projectTable”、図11の画面定義、図12、図13のクエリ定義を用いて、検索の実行例を説明する。
また、図18の1800a〜c、図19の1900a〜dは、検索結果として図11のグリッドオブジェクト1002に表示されるものである。
さらに、検索条件として、ユーザは、顧客名テキストボックス1102(顧客検索をする場合)、開始日テキストボックス1106、終了日テキストボックス1107(期間検索をする場合)に、値を入力するものとする。
顧客名テキストボックス1102に“カトーモーターズ”と入力し、顧客検索ボタン1101をクリックすると、図18の1800aが検索結果として表示される。これは、アクション定義に対して、図12のクエリ定義1200a、1200bのいずれが指定されていても同じである。
クエリ定義1200aの場合には、パラメータ値“:NAME”に顧客名テキストボックス1102の“カトーモーターズ”が渡される。このため、スクリプトの条件判定(3行目)において、“True”となる。SQL文として、“select * from projectTable where 顧客名=‘カトーモーターズ’”が生成されるからである。
一方、クエリ定義1200bの場合には、パラメータ値を代入すれば、SQL文基本定義それ自体が“select * from projectTable where 顧客名=‘カトーモーターズ’”になるからである。
しかしながら、例えばユーザが、顧客名テキストボックス1102入力しない可能性もある(パラメータ値としてはNULLまたは“”となる)。
この場合、クエリ定義1200bがアクション定義に指定されている場合には、図18の1800bが検索結果となる。生成されるSQL文は、“select * from projectTable where 顧客名=NULL”であり、案件番号がPrj07であるデータがヒットする。
しかしながら、ユーザが値を入力しない場合、例えば、入力されている全てのデータを表示するといった、アプリケーションの要件として、より効果的な結果を返すように制御することが出来る。
このため、クエリ定義1200aでは、“:NAME!=NULL”の場合のみ、条件句を生成することとしている。言い換えれば、“:NAME==NULL”であれば、敢えて条件句を付けないままSQL文を生成する。すなわち、全てのデータを出力する“select * from projectTable”を生成するように、アクション定義にクエリ定義1200aを設定することができる。この場合、図18の1800cが検索結果となる。
次に期間検索の例を用いて説明する。期間検索は、ユーザにプロジェクトの開始日と終了日を指定させ、指定の開始日以降に開始され、また指定の終了日以前に終了したプロジェクトをAND条件で検索する。
ここで、クエリ定義1300a、1300bで使用される“CURRENT_DATE”は、SQL文を処理する際の情報処理装置の現在日付を取得する、SQL関数とし、現在日付を“2011−5−20”(2011年5月20日)と仮定する。また、“ADD_MONTHS(CURRENT_DATE、−6)”は、第1引数であるCURRENT_DATEから6ヶ月前を意味し、すなわち“2010−11−21”(2010年11月21日)であると仮定する。
まず、ユーザが、開始日に“2011−2−1”(2011年2月1日)、終了日に“2011−3−31”(2011年3月31日)を入力し、期間検索ボタン1005をクリックした場合を考える。
パラメータの値は、開始日は“:start”、終了日は“:end”に渡される。
図13のクエリ定義1300aでは、SQL文基本定義の“select * from projectTable”を取得する。
条件句生成定義のスクリプト部分においては、“:start”に値が入っているため、3〜9行目までは実行されず、10行目の“else”の中の処理を実行する。“else”の次の11行目、“where :start<=開始日”が取得され、SQL文基本定義に連結される。パラメータ“:start”には、“2011−2−1”が代入される。
さらに、“else”中の入れ子の条件判定において、“:end”に値が入っているため、13行目の文字列は選択されず、15行目の“& 終了日<=:end”が選択される。パラメータ“:end”には、“2011−3−31”が代入される。
このように、SQL文基本定義と、複数の条件句部品が連結して、“select * from projectTable where ‘2011−2−1’<=開始日 & 終了日<=‘2011−3−31’”が生成される。
一方、クエリ定義1300bでは、“if〜else”が入れ子の構文にはなっておらず、3行目〜7行目と、9行目〜13行目の2つの“if〜else”が並列にある。それぞれ、前者は開始日、後者は終了日の条件句部品を生成する処理となっている。
以降でも、SQL文の生成過程は特に説明しないが、クエリ定義1300a、クエリ定義1300bは、記載方法は異なるが、パラメータの値が同じであれば、同じSQL文を生成する例としてあげている。
前述のSQL文による図4の“projectTable”を検索した結果は、図19の1900aとなる。ユーザが指定した開始日、終了日の条件を満たすプロジェクトのみがヒットする。
次に、ユーザが終了日を指定しなかった場合を説明する。本発明の実施の形態による、条件句生成定義、および条件句生成の仕組みがなければ、“select * from projectTable where :start<=開始日 & 終了日:<=end”というSQL文が定義され、開始日が2011年2月1日の条件は満たすが、終了日が“NULL”である“Prj07”がヒットするSQL文を実行することになる。
さらに、開始日が2011年2月1日の条件を満たしているにもかかわらず、終了日が“NULL”ではないため、Prj05、Prj06はヒットしない。
クエリ定義1300a〜bによると、終了日が指定されていない場合でも、“CURRENT_DATE”関数を用いる。そして、“select * from projectTable where ‘2011−2−1’<=開始日 & 終了日<=‘2011−5−20’”というSQL文を実行させる。従って、1900bの検索結果が得られる。
次に、ユーザが開始日を指定しなかった場合を説明する。この場合、条件句生成定義により、“ADD_MONTHS(CURRENT_DATE、−6)”、すなわち“2010−11−21”が開始日として設定される。これにより、開始日が“NULL”であるデータがヒットすることなく、また開始日が6ヶ月以上古い(本アプリケーションの要件は、“最近6ヶ月以内”)データがヒットすることもなくなる。この結果、1900cが検索結果として得られる。
最後に、ユーザが、開始日も終了日も入力しなかった場合について説明する。この場合でも、開始日“2010−11−21”および終了日“2011−5−20”となるように、条件句およびSQL文が生成され、1900dが検索結果として得られる効果がある。
以上のように、アプリケーションの要件として適切な既定値を用いた条件句を生成し、あるいは敢えて条件句を生成しないことにより、効果的な検索結果を取得することが出来る。
すなわち、ユーザの入力状況を判断して、SQL文基本定義だけを用いたSQL文や、条件句部品を動的かつ柔軟に組み合わせて、SQL文を生成し、データベース検索結果を得ることが出来る。
以上、図12、図13のクエリ定義から得られる検索結果の例の説明を完了する。
なお、以上の説明では、アプリケーションサーバがクエリ定義のスクリプト部分を解釈しながら処理を進めた。他の実施例として、アプリケーションサーバは、クエリ定義からスクリプト(例えばJavaScript(登録商標))を生成し、スクリプト実行エンジンにスクリプトの処理を要求することで、SQL文生成結果を取得するようにしてもよい。
図21は、クエリ定義に基づき生成されたスクリプトの例である。図21のスクリプトは、図13のクエリ定義1300aからスクリプトを生成した例である。
スクリプトの生成においては、まず、変数“$sql_string”を宣言すると同時に、SQL文基本定義を代入する(1行目)。
また、行頭に“――#”がある行は、“――#”を削除して、そのままスクリプトの1行とする(例えば3行目、5行目、7行目など)。
さらに、条件句(条件句部品)が指定されていた行は、変数“$sql_string”に既に代入されている文字列に、当該行で記述されている文字列を追加するスクリプトとする(例えば、6行目、8行目など)。
さらに、クエリ定義におけるパラメータ(“:start”、“:end”など)については、先頭の“:”を除いた部分(“start”、“end”など)をスクリプトの変数として、データベース検索要求においてパラメータ値として受け付けた値を参照する。
以上のようにスクリプトを生成した後、スクリプト実行エンジンによりSQL文を生成するが、その手続きは、図16、図17のフローチャートで説明したものと同様である。
以上で、クエリ定義からスクリプトを生成し、そのスクリプトに基づきSQL文を生成する説明を完了する。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、本発明におけるプログラムは、図5、図7、図14〜図17に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は図5、図7、図14〜図17をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは図5、図7、図14〜図17の各装置の処理方法ごとのプログラムであってもよい。
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
101 プログラム開発装置
102 プログラム開発サーバ
103 データベース
104 アプリケーションクライアント
105 アプリケーションサーバ
301 表示制御部
302 要求発行部
311 要求受付部
312 クエリ定義取得部
313 SQL文基本定義取得部
314 条件句生成定義取得部
315 代入部
316 条件句生成部
317 SQL文生成部
318 SQL文発行部
319 スクリプト生成部
321 クエリ定義記憶部

Claims (9)

  1. クライアント装置とアプリケーションサーバとが通信可能な情報処理システムであって、
    前記クライアント装置は、
    指示オブジェクトが選択されることで実行されるイベント処理を含む画面データを表示する表示制御手段と、
    前記表示制御手段により表示された画面データ上の前記指示オブジェクトに対するユーザ操作に応じて、前記指示オブジェクトに対応付けられたイベント処理に基づくデータベース検索要求を前記アプリケーションサーバに発行する要求発行手段と、
    を備え、
    前記アプリケーションサーバは、
    データベースへ発行するSQL文を生成するための、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句を生成するための条件句生成定義とから構成される、または前記SQL文基本定義から構成されるクエリ定義を記憶するクエリ定義記憶手段と、
    前記データベース検索要求に従って、前記クエリ定義記憶手段に記憶されている前記クエリ定義を取得するクエリ定義取得手段と、
    前記クエリ定義取得手段により取得した前記クエリ定義から、前記SQL文基本定義を取得し、文字列として文字列変数に記憶させる代入手段と、
    前記条件句生成定義と、前記データベース検索要求に含まれる検索条件のパラメータ値に基づき、前記条件句を生成する条件句生成手段と、
    前記クエリ定義に前記条件句生成定義が含まれない場合には、前記代入手段により前記文字列変数に記憶された前記SQL文基本定義を生成された前記SQL文とし、前記クエリ定義に前記条件句生成定義が含まれている場合には、前記条件句生成手段で生成された前記条件句を文字列として前記文字列変数に連結し、前記文字列変数に記憶されている文字列を生成された前記SQL文とするSQL文生成手段と、
    を備えることを特徴とする情報処理システム。
  2. 前記クエリ定義取得手段により取得された前記クエリ定義に基づき、前記SQL文を生成するためのスクリプトを生成するスクリプト生成手段と、を備え、
    前記代入手段は、前記スクリプト生成手段により生成された前記スクリプトに基づいて、前記SQL文基本定義を文字列として文字列変数に記憶させ、
    前記条件句生成手段は、前記スクリプト生成手段により生成された前記スクリプトと、前記データベース検索要求に含まれる検索条件のパラメータ値とに基づいて条件句を生成し、
    前記SQL文生成手段は、前記スクリプト生成手段により生成された前記スクリプトに基づいて、前記クエリ定義に前記条件句生成定義が含まれない場合には、前記代入手段により前記文字列変数に記憶された前記SQL文基本定義を生成された前記SQL文とし、前記クエリ定義に前記条件句生成定義が含まれている場合には、前記条件句生成手段で生成された前記条件句を文字列として前記文字列変数に連結し、前記文字列変数に記憶されている文字列を生成された前記SQL文とすることを特徴とする請求項1に記載の情報処理システム。
  3. 前記条件句生成定義は、前記条件句を選択するためのスクリプトと、前記条件句から構成され、
    前記条件句生成手段は、前記スクリプトを実行させ、前記スクリプトに定義された条件分岐のうち、前記パラメータ値に基づいて選択された分岐に記載された前記条件句を、前記条件句生成定義により生成された前記条件句とすることを特徴とする請求項1に記載の情報処理システム。
  4. 前記条件句生成定義には、さらに前記条件句の一部を条件句部品として、前記スクリプトに定義された分岐の中に記述することが可能であり、
    前記条件句生成手段は、前記スクリプトを実行させ、前記スクリプトに定義された条件分岐のうち、前記パラメータ値に基づいて選択された分岐に記載された前記条件句部品を選択する毎に、生成された結果の前記条件句部品とし、前記SQL文生成手段は、前記条件句生成手段が前記条件句部品を生成する毎に、前記条件句生成手段で生成された前記条件句を文字列として前記文字列変数に連結することを特徴とする請求項3に記載の情報処理システム。
  5. 前記要求発行手段は、前記指示オブジェクトに対応付けられたイベント処理に基づいて、複数の前記データベース検索要求を前記アプリケーションサーバに発行することが可能であることを特徴とする請求項1乃至請求項4に記載の情報処理システム。
  6. クライアント装置と通信可能な情報処理システムにおけるアプリケーションサーバであって、
    データベースへ発行するSQL文を生成するための、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句を生成するための条件句生成定義とから構成される、または前記SQL文基本定義から構成されるクエリ定義を記憶するクエリ定義記憶手段と、
    前記クライアント装置から受け付けたデータベース検索要求に従って、前記クエリ定義記憶手段に記憶されている前記クエリ定義を取得するクエリ定義取得手段と、
    前記クエリ定義取得手段により取得した前記クエリ定義から、前記SQL文基本定義を取得し、文字列として文字列変数に記憶させる代入手段と、
    前記条件句生成定義と、前記データベース検索要求に含まれる検索条件のパラメータ値に基づき、前記条件句を生成する条件句生成手段と、
    前記クエリ定義に前記条件句生成定義が含まれない場合には、前記代入手段により前記文字列変数に記憶された前記SQL文基本定義を生成された前記SQL文とし、前記クエリ定義に前記条件句生成定義が含まれている場合には、前記条件句生成手段で生成された前記条件句を文字列として前記文字列変数に連結し、前記文字列変数に記憶されている文字列を生成された前記SQL文とするSQL文生成手段と、
    を備えることを特徴とするアプリケーションサーバ。
  7. クライアント装置とアプリケーションサーバとが通信可能な情報処理システムにおける情報処理方法であって、
    前記クライアント装置は、
    指示オブジェクトが選択されることで実行されるイベント処理を含む画面データを表示する表示制御工程と、
    前記表示制御工程により表示された画面データ上の前記指示オブジェクトに対するユーザ操作に応じて、前記指示オブジェクトに対応付けられたイベント処理に基づくデータベース検索要求を前記アプリケーションサーバに発行する要求発行工程と、
    を備え、
    前記アプリケーションサーバは、
    データベースへ発行するSQL文を生成するための、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句を生成するための条件句生成定義とから構成される、または前記SQL文基本定義から構成されるクエリ定義を記憶するクエリ定義記憶手段と、
    前記データベース検索要求に従って、前記クエリ定義記憶手段に記憶されている前記クエリ定義を取得するクエリ定義取得工程と、
    前記クエリ定義取得工程により取得した前記クエリ定義から、前記SQL文基本定義を取得し、文字列として文字列変数に記憶させる代入工程と、
    前記条件句生成定義と、前記データベース検索要求に含まれる検索条件のパラメータ値に基づき、前記条件句を生成する条件句生成工程と、
    前記クエリ定義に前記条件句生成定義が含まれない場合には、前記代入工程により前記文字列変数に記憶された前記SQL文基本定義を生成された前記SQL文とし、前記クエリ定義に前記条件句生成定義が含まれている場合には、前記条件句生成工程で生成された前記条件句を文字列として前記文字列変数に連結し、前記文字列変数に記憶されている文字列を生成された前記SQL文とするSQL文生成工程と、
    を備えることを特徴とする情報処理方法。
  8. クライアント装置とアプリケーションサーバとが通信可能な情報処理システムにおいて実行可能なプログラムであって、
    前記クライアント装置を、
    指示オブジェクトが選択されることで実行されるイベント処理を含む画面データを表示する表示制御手段と、
    前記表示制御手段により表示された画面データ上の前記指示オブジェクトに対するユーザ操作に応じて、前記指示オブジェクトに対応付けられたイベント処理に基づくデータベース検索要求を前記アプリケーションサーバに発行する要求発行手段として機能させ、
    前記アプリケーションサーバを、
    データベースへ発行するSQL文を生成するための、動作内容を定義するSQL文基本定義と、前記SQL文基本定義に付加する条件句を生成するための条件句生成定義とから構成される、または前記SQL文基本定義から構成されるクエリ定義を記憶するクエリ定義記憶手段と、
    前記データベース検索要求に従って、前記クエリ定義記憶手段に記憶されている前記クエリ定義を取得するクエリ定義取得手段と、
    前記クエリ定義取得手段により取得した前記クエリ定義から、前記SQL文基本定義を取得し、文字列として文字列変数に記憶させる代入手段と、
    前記条件句生成定義と、前記データベース検索要求に含まれる検索条件のパラメータ値に基づき、前記条件句を生成する条件句生成手段と、
    前記クエリ定義に前記条件句生成定義が含まれない場合には、前記代入手段により前記文字列変数に記憶された前記SQL文基本定義を生成された前記SQL文とし、前記クエリ定義に前記条件句生成定義が含まれている場合には、前記条件句生成手段で生成された前記条件句を文字列として前記文字列変数に連結し、前記文字列変数に記憶されている文字列を生成された前記SQL文とするSQL文生成手段と機能させることを特徴とするプログラム。
  9. 請求項8に記載されたプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2011157726A 2011-07-19 2011-07-19 情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体 Withdrawn JP2013025446A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011157726A JP2013025446A (ja) 2011-07-19 2011-07-19 情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011157726A JP2013025446A (ja) 2011-07-19 2011-07-19 情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体

Publications (1)

Publication Number Publication Date
JP2013025446A true JP2013025446A (ja) 2013-02-04

Family

ID=47783752

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011157726A Withdrawn JP2013025446A (ja) 2011-07-19 2011-07-19 情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP2013025446A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002355A (zh) * 2018-06-06 2018-12-14 阿里巴巴集团控股有限公司 处理请求的分配方法、装置及设备
CN109643305A (zh) * 2016-08-25 2019-04-16 阿里巴巴集团控股有限公司 数据查询方法、应用和数据库服务器、中间件及系统
CN110297843A (zh) * 2019-07-02 2019-10-01 山东浪潮通软信息科技有限公司 用于b/s系统的数据查询方法及系统、终端
CN110555030A (zh) * 2018-03-28 2019-12-10 北京京东尚科信息技术有限公司 一种sql语句的处理方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109643305A (zh) * 2016-08-25 2019-04-16 阿里巴巴集团控股有限公司 数据查询方法、应用和数据库服务器、中间件及系统
CN110555030A (zh) * 2018-03-28 2019-12-10 北京京东尚科信息技术有限公司 一种sql语句的处理方法和装置
CN109002355A (zh) * 2018-06-06 2018-12-14 阿里巴巴集团控股有限公司 处理请求的分配方法、装置及设备
CN110297843A (zh) * 2019-07-02 2019-10-01 山东浪潮通软信息科技有限公司 用于b/s系统的数据查询方法及系统、终端
CN110297843B (zh) * 2019-07-02 2023-04-28 浪潮通用软件有限公司 用于b/s系统的数据查询方法及系统、终端

Similar Documents

Publication Publication Date Title
CN112099768B (zh) 业务流程处理方法、装置及计算机可读存储介质
CN101710274A (zh) 应用软件帮助信息生成方法及系统
CN110650375A (zh) 视频处理方法、装置、设备及存储介质
JP5267732B2 (ja) Webページの制御方法、計算機システム及びプログラム
JP2013025446A (ja) 情報処理装置、情報処理システム、情報処理方法、プログラムおよび記録媒体
US10922059B2 (en) Integrating application features into a platform interface based on application metadata
JP5164673B2 (ja) サーバ装置、カタログ処理方法及びプログラム
JP6586050B2 (ja) 管理装置、管理方法および管理プログラム
JP2009098791A (ja) 文書管理装置
JP2018181073A (ja) 情報処理装置と、その処理方法及びプログラム
JP2009187401A (ja) 文書管理システム、文書管理装置、文書管理方法及びプログラム
JP2009211599A (ja) マッピング定義作成システムおよびマッピング定義作成プログラム
JPH11288412A (ja) 文書作成方法及びシステム及び文書作成プログラムを記録したコンピュータ読み取り可能な記録媒体
JP5880637B2 (ja) 情報処理装置、その制御方法、及びプログラム、並びに情報処理システム、その制御方法、及びプログラム
JP2016126764A (ja) 情報処理装置、情報処理装置の制御方法およびプログラム
JP2020181516A (ja) テンプレート検索システムおよびテンプレート検索方法
JP6011604B2 (ja) ワークフローシステム、ワークフロー管理装置、ワークフロー管理方法及びプログラム
JP2020009169A (ja) 注釈の付与を支援するための情報処理システム及びプログラム
JP2014235500A (ja) 文書管理サーバ、文書管理サーバの制御方法、およびプログラム
JP2013228958A (ja) ワークフローシステム、ワークフローシステムの制御方法、プログラムおよび記録媒体
JP2010257369A (ja) 文書管理システム及びその方法
JP5447621B2 (ja) プログラム生成装置、プログラム生成方法ならびにプログラム
JP2009080536A (ja) 部品表編集装置、編集プログラム、編集システムおよび編集方法
JP6361770B2 (ja) 情報処理装置とその処理方法及びプログラム
JP2015177276A (ja) 情報処理装置、情報処理装置の制御方法およびプログラム

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130531

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130531

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20141007