以下、本発明の実施の形態を、図面を参照して詳細に説明する。
図1は、本発明に係わるプログラム開発装置(開発者端末)、プログラム開発サーバ、データベース、アプリケーションクライアント(クライアント端末)、アプリケーションサーバの構成の一例を示すシステム構成図である(情報処理システム)。
プログラム開発装置100(情報処理装置)は、開発者の操作に従って画面レイアウトおよびデータベース検索のアクションなどを定義する。プログラム開発装置100単体では、ユーザの入力受付、後述するプログラム開発サーバ102に実際のプログラム生成処理をさせてもよいし、プログラム開発装置単体でプログラム生成まで処理してもよい。
プログラム開発サーバ102a〜102b(情報処理装置)は、プログラム開発装置100により入力された開発者の指示に従って、プログラムを開発する。プログラム開発サーバ102aはLANなどのネットワーク106内に配置されてもよいし、プログラム開発サーバ102bはインターネット上やクラウド上に配置されてもよい。
データベース103a〜103c(情報処理装置)は、開発されたアプリケーションが使用するデータベースであり、また本発明では開発時にも利用する。例えば、開発者が利用するためにデータベース103aは、プログラム開発装置100と同一の装置で構成されていてもよいし、LANなどのネットワーク106内に配置されてもよい(データベース103b)し、またインターネット上やクラウド上に配置されてもよい(データベース103c)。また、プログラム開発装置100が、プログラム開発サーバ102と協調する場合には、プログラム開発サーバ102とデータベースが同一の装置内に構成されていてもよい。
アプリケーションサーバ105a〜105b(情報処理装置)は、プログラム開発装置100で開発されたアプリケーションを実行する。LANなどのネットワーク106内に配置されてもよい(アプリケーションサーバ105a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションサーバ105b)。また、ネットワーク106、インターネット、クラウド上のデータベース103と接続して動作する可能である。
アプリケーションクライアント104a〜104b(情報処理装置)は、アプリケーションサーバ105と協調してプログラム開発装置100で開発したアプリケーションプログラムを動作させる、ユーザの入力端末である。LANなどのネットワーク106内に配置されてもよい(アプリケーションクライアント104a)し、またインターネット上やクラウド上に配置されてもよい(アプリケーションクライアント104b)。携帯端末などの情報処理装置であってもよい。
次に、図2を参照して、図1に示したプログラム生成装置100およびプログラム開発サーバ102、ならびにデータベースサーバ103、アプリケーションクライアント104、アプリケーションサーバ105のハードウェア構成について説明する。
図2は、本発明の実施形態における各種装置のハードウェア構成を示す図である。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボード209や不図示のマウス等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、ディスプレイ210等の表示器への表示を制御する。表示器はCRTでも良いし、液晶ディスプレイでも構わない。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標 FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
なお、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明を実現するためのプログラムは外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明で生成されるプログラムやプロキシクラスファイル、プログラムが用いる定義ファイル及び各種情報テーブルは外部メモリ211に格納されており、これらについての詳細な説明は後述する。
なお、図1の構成は一例であり、用途や目的に応じて様々な構成例があることは云うまでもない。その他の構成例として、プログラム生成装置が、ネットワークと接続され、通信可能な不図示のパーソナルコンピュータ等の情報処理装置からプログラム生成命令を受けることによって、プログラムの生成を行うことも可能である。
すなわち、本発明の機能が実現されるものであれば、単体の機器であっても、複数の機器からなるシステムであっても、ネットワークを介して処理が行われるシステムであっても本発明を適用することができる。
また、ここで、ハードディスクドライブ(HDD)等の外部メモリ211に記憶された情報は、それぞれデータベース(DB)等に格納されていても良い。
次に、図3を参照して、図1に示したプログラム生成装置100のソフトウェア構成について説明する。
図3は、本発明の実施形態におけるプログラム生成装置100のソフトウェア構成を示す図である。
301は、処理未定義図形オブジェクト提供部であり、開発者ユーザがプログラム生成装置の入力手段によりプログラム生成プログラム上の処理ブロック配置エリア(図12の1206)に配置する処理未定義図形オブジェクト(処理が定義されていない処理未定義ブロック1203)を提供している。
302は、コメント付加部であり、処理未定義図形オブジェクトや処理定義図形オブジェクト(後述)に開発者ユーザがプログラム生成装置の入力手段により付加するコメントを受け付ける機能(図13の1302)を有する。
303は、処理定義変更部であり、処理未定義図形オブジェクト提供部により配置された処理未定義図形オブジェクトの処理定義を開発者ユーザから受け付ける機能(図14の1403)を有する。
304は、ソースプログラム生成部であり、開発者ユーザが作成した処理ロジック(処理ブロック配置エリア(図15の1507))から、各処理ブロックが有する雛型を用いて、ソースプログラムを生成する機能を有する。
305は、処理定義図形オブジェクト提供部であり、開発者ユーザがプログラム生成装置の入力手段によりプログラム生成プログラム上の処理ブロック配置エリア(図15の1507)に配置する処理定義図形オブジェクト(処理が定義されてる処理定義ブロック1202)を提供している。
306は、パラメータ入力部であり、開発者ユーザがプログラム生成装置の入力手段によりプログラム生成プログラム上の処理ブロック配置エリア(図15の1507)に配置された処理定義された処理ブロックのパラメータの入力を受け付ける機能である。
307は、プログラム構成生成部であり、プログラム生成プログラム上に処理定義図形オブジェクト及び処理未定義図形オブジェクトを複数組み合わせて配置し、ソースプログラムの構成を受け付ける処理ブロック配置エリア(図15の1507)である。
次に、プログラム生成装置100の基本的な処理フローについて、図4を参照して説明する。
図4は、本発明の実施形態におけるプログラム生成装置100の基本的な処理フローを示す図の一例である。なお、図4のフローチャートはプログラム生成装置100のCPU201により実行されるものである。
図4のフローチャートは、プログラム生成装置100において、開発者ユーザがプログラムを生成するプログラムを起動した際に開始される。以下、混乱を防ぐために生成される結果のプログラムをソースプログラムと呼び、前記ソースプログラムを生成するプログラムを単にプログラムと呼ぶ。
図4のステップS401において、開発者ユーザはプログラムを起動すると、プログラム生成装置100のCPU201は、図6のような起動画面を生成し、ディスプレイ210に表示する。
図6は、本発明のプログラム生成装置100における処理ロジックを生成する初期画面の模式図である。
以下の説明は、開発者ユーザの操作の一例を示す。
S401において、開発者ユーザは図示しないマウスやキーボード209により、601の「アプリケーション」欄を押下し出力されるドロップダウンリストから、図示しない「新しいアプリケーションを作成する」ボタンを押下する。
新規作成されたアプリケーションのディスプレイ210への表示例を図6の602に示す。
図6の602の場合は、プロジェクトIDが「chizai」、アプリケーションIDが「PC」、アプリケーションタイトルが「PC管理」というアプリケーションが開発者ユーザにより作成された例である。
開発者ユーザは次に、図示しないマウスやキーボード209により、601の「アプリケーション」欄を押下し出力されるドロップダウンリストから、図示しない「新しいフォームを作成する」ボタンを押下する。
「新しいフォームを作成する」ボタンを押下すると、新しいフォームIDとフォームのタイトルを入力する図示しない画面が生成され、開発者ユーザが新しいフォームIDとフォームのタイトルを入力する。
次に、開発者ユーザが図6の「フォーム」欄603を押下すると、プログラム生成装置100のCPU201は、604の欄に新規作成されたフォームIDとフォームタイトル、その他の情報をディスプレイ210に表示する。
新規に作成されたフォームIDの行604を開発者ユーザがダブルクリック等を実施すると、プログラム生成装置100のCPU201は、図7のようなフォーム作成画面を生成し、ディスプレイ210に表示する。
図7は、本発明のプログラム生成装置100におけるソースプログラム生成プログラムが生成するフォーム作成画面の模式図である。
図7の701が、作成するフォーム(画面レイアウト)上に配置するオブジェクトであり、701の中にラベルオブジェクト702や入力テキストオブジェクト703、テキストリンクオブジェクト704、チェックボックスオブジェクト705、ドロップダウンリストオブジェクト706、ラジオボタンオブジェクト707や通常のボタンオブジェクト708などがある。
これらのオブジェクトを開発者ユーザが図7のレイアウトエリア711に配置することにより、アプリケーションの画面レイアウトを作成する。
レイアウトエリア711にオブジェクトを配置した後、配置したオブジェクトを指定すると、719のようなオブジェクト設定エリアを表示する。
オブジェクト設定エリア719では、配置したオブジェクトの名前、キャプション(表示する文字)、項目種別(オブジェクトの種類)などを指定する。
具体的には、例えば、開発者ユーザが713の位置には703の入力テキストオブジェクトを配置する。更に開発者ユーザは、オブジェクト設定エリア719に表示されているように、名前を「PC_NO」、キャプションを「PC管理番号」、項目種別を「入力テキスト」と指定している
同様に、開発者ユーザがレイアウトエリア711の712の位置に702の「PC管理メンテナンス」というキャプション付きのラベルオブジェクトを配置し、714の位置に704の「PC管理番号を入力してここをクリックしてください」というキャプション付きのテキストリンクオブジェクト、715の位置に705の「使用状態」というキャプション付きのチェックボックスオブジェクト、716の位置に706の「メーカー」というキャプション付きのドロップダウンリストオブジェクト、717の位置に707の「取得状態」というキャプション付きのラジオボタンオブジェクト、718の位置に708の「登録」というキャプション付きのボタンオブジェクトをそれぞれ配置する。
なお、図7のアプリケーションの例は、会社や大学など複数のパーソナルコンピュータ(PC)を管理している団体において、PCの使用者やメーカー情報、リースか経費購入か、また設置場所は何階かなどの情報を管理するための画面レイアウトであり、図8のようなデータベースへの登録、修正、削除、データベースの閲覧を実施するための画面レイアウトである。図8を参照して、データベースの例を説明する。
図8は、データベースサーバが管理するデータベースの一例を示す図であり、PCデータテーブルの例である。
図8の801は、管理しているPCのPC管理番号であり、このデータベースのキーとなるユニークなIDである。
802はユーザコードであり、803のユーザ名と紐付けられているPCの使用ユーザを識別するためのIDである。
804は、PCのメーカーであり、805はPCの設置フロアである。806はPCの使用状態を示し、1であれば使用中、0であれば休止中を意味する。また、807は取得状態であり、1は経費購入、2はリースである。
なお、図8のようなデータベースはデータベースサーバが保持していても良いし、プログラム開発装置で保持しておいても良い。図7の画面レイアウトの説明に戻る。
図7のレイアウトエリア711のようにそれぞれのオブジェクトを配置する際、開発者ユーザは関連するオブジェクトをグループオブジェクトとして定義できる。
開発者ユーザは、例えば、図7の721のように使用者でグループ化できる「ユーザコード」と「ユーザ名」をオブジェクト設定エリア719で、グループ名を「group_1」、キャプションを「使用者」として定義する。
同様に722のPC情報としてグループ化できる「メーカー」と「取得状態」とを、グループ名が「group_2」でキャプションが「PC情報」とする。また、723の「設置フロア」を、グループ名が「group_3」でキャプションが「設置場所」のグループと定義する。
なお、上記グループに属していない711のベースエリアに配置されている入力テキストオブジェクト713やテキストリンクオブジェクト714、チェックボックスオブジェクト715、ボタンオブジェクト718は、ベースのグループ名「root」に属していると設定する。
開発者ユーザが画面レイアウトを設定した後、開発者ユーザは項目定義タブ720を押下して、各オブジェクトの入出力項目を定義する。
項目定義タブ720が押下されると、プログラム生成装置100のCPU201は、図9のような項目定義画面を生成し、ディスプレイ210に表示する。(図4のステップS402)
図9は、本発明のプログラム生成装置100におけるソースプログラム生成プログラムが生成する項目を定義する項目定義画面の模式図である。
図9の900では、フォーム作成画面で設定したオブジェクトの内、データを入出力に関わる項目についての項目を開発者ユーザが定義する。
図9の901から904、908は、図7の719のオブジェクト設定エリアでそれぞれ定義された値が表示される。
例えば、719で指定されている名前が「PC_NO」で、キャプションとして「PC管理番号」、項目種別として「入力テキスト」、必須項目にチェックが指定されている入出力項目は、図9の900の1行目(909の行)に該当し、名前901が「PC_NO」、キャプション902が「PC管理番号」、項目種別903が「INPUT_TEXT」、必須項目904が有効となっている。また、グループ名908はベースのグループである「root」となっている。
図9の905から907のデータ型などは、項目定義画面のそれぞれの行を選択し、910に表示される項目詳細定義エリアで指定する。
具体的に、910には909の行を開発者ユーザが指定した場合として、データ型を「STRING」と指定し、入力が必須項目であると開発者ユーザが定義した例である。
図9の項目定義画面でそれぞれの項目の定義をした後、開発者ユーザがアクションタブ920を押下して、図7および図9で定義した上記オブジェクトのアクションを設定する。
アクションタブ920が押下されると、プログラム生成装置100のCPU201は、図10のようなアクション作成画面を生成し、ディスプレイ210に表示する。(図4のステップS403)
図10は、本発明のプログラム生成装置100におけるソースプログラム生成プログラムが生成するアクション作成画面の模式図である。
図10の1001には、図7の711上にあるアクション(ボタン押下やデータ入力、ラジオボタン選択など)を含むオブジェクトが1行ごとに記載されている。
開発者ユーザが各オブジェクト毎にそれぞれのアクションをアクション記入エリア1002に設定する。
例えば、1003の登録ボタンに対応するアクション(図7の登録ボタン718に該当)の行を開発者ユーザが選択すると、アクション記入エリア1002に図7の登録ボタンのclick時のアクションとしてのパラメータ入力画面を表示する。
アクション記入エリア1002にPC管理番号の登録に関するアクションを開発者ユーザが記入する。記入した結果を図11を参照して説明する。
図11は、本発明のプログラム生成装置100におけるソースプログラム生成プログラムが生成するアクション作成画面の模式図である。
図11の1101は、1003で選択されているPC管理情報登録の際のアクションに開発者ユーザが入力した画面であり、図7の718が押下された際に実行するアクションを定義している。
1101の入力欄を詳細に説明すると、図7の登録ボタン718のアクションにはPC管理情報を登録するため、パラメータとして図9の項目定義で定義した全ての情報を構造体のパラメータとして取得する。そのため、登録アクションの入力パラメータ欄1102には、「group_1」、「group_2」、「group_3」とベースのグループ「root」の全てのグループ化された項目の情報1103を開発者ユーザが指定する。
パラメータの指定方法は、1104のボタンを押下して出てくる図示しないグループ名選択欄から、オブジェクト設定エリア719で設定したグループ名を選択する。
選択されたグループ名のパラメータ1103をこれから呼びだす処理ロジックで使用するために、使用するパラメータを1105のパラメータ入力欄に入力する。
具体的には、パラメータとして入力パラメータの領域(フォーム作成画面で作成した領域)が「$I」と定義されている。それぞれのグループ名のパラメータは、1105に記載されているように、呼びだす処理ロジックのパラメータ「root」として、入力パラメータ領域の「$I.root」を定義し、また、呼びだす処理ロジックのパラメータ「g1」として、入力パラメータ領域の「$I.group_1」を定義、呼びだす処理ロジックのパラメータ「g2」として、入力パラメータ領域の「$I.group_2」を定義、呼びだす処理ロジックのパラメータ「g3」として、入力パラメータ領域の「$I.group_3」を定義する。
次に、開発者ユーザは1106ボタンを押下し、呼びだす処理ロジックを指定もしくは新規作成する。
具体的には、1106ボタンが押下されると、プログラム生成装置100のCPU201は、図示しない処理ロジックID入力画面を表示する。その後、既存の処理ロジックIDが指定されるか、新規作成であれば、新規の処理ロジックIDが入力されて、1107のように指定もしくは入力した処理ロジックIDを表示する。表示された処理ロジックID1107はリンクボタンになっており、1107を押下すると、処理ロジックIDの処理ロジック作成画面に移行する。(図4のステップS404)
図4のステップS404の処理の詳細を図5のフローチャートにて後述する。
ステップS404が終了し、処理ロジック作成が終了すると、ステップS405に移行し、それぞれの処理ブロック(後述する)毎のソースプログラムの雛型を利用して、実行可能なソースプログラムを生成して、処理を終了する。
以下、図4のステップS404の処理の詳細を図5のフローチャートを参照して説明する。
以降は、登録処理ロジック(図7の登録ボタン718のロジック)を作成する場合について説明する。
図5は、本発明の実施形態におけるプログラム生成装置100のロジック入力の処理フローを示す図の一例である。なお、図5のフローチャートはプログラム生成装置100のCPU201により実行されるものである。
図5のフローチャートは、プログラム生成装置100において、開発者ユーザが処理ブロックを生成するプログラムを処理ロジックID1107のリンクボタンを押下した際などに開始される。
まず、図5のステップS501において、プログラム生成装置100のCPU201は、図12のような起動画面を生成し、ディスプレイ210に表示する。図12〜図17を参照して、本発明の実施形態を説明する。
図12は、本発明のプログラム生成装置100におけるソースプログラム生成プログラムが生成する処理ロジック生成画面の初期画面の模式図である。
図12のパラメータ欄1201に、図11のパラメータ入力欄1105で指定されたパラメータを読み込み、自動的にパラメータを入力する。
次に図5のステップS502において、プログラム生成装置100のCPU201は、開発者ユーザからのボタン入力を受け付ける。
処理ロジックを記載する際に受け付けるボタンとしては、処理定義ブロックボタン(処理定義図形オブジェクト)1202、処理未定義ブロックボタン(処理未定義図形オブジェクト)1203、処理ブロック位置移動ボタン(処理定義図形オブジェクト位置移動)、1204、処理内容表示非表示ボタン(処理内容非表示)1205である。
処理定義ブロックボタン1202は、処理の種類ごとに「スクリプト」処理1221、「データ構造宣言」処理1222、「子データ構造宣言」処理1223、「データベース操作」処理1224、「データベース検索」処理、「データ編集」処理、「ロジック呼出」処理、「条件分岐」処理、「条件(ELSE IF)」処理、「繰り返し(FOR EACH)」処理、「制御操作」処理などがあり、それぞれの処理のソースプログラムの雛型を有している。
「スクリプト」処理1221は、処理ブロック配置エリア1206に処理ブロックを貼り付けた後で、処理ブロック内に記載したスクリプトを実行する。「スクリプト」処理に記載するスクリプトとしては、例えばJavaScript(登録商標)などがある。詳細は後述する図15を参照して説明する。
「データ構造宣言」処理1222は、指定されたデータベースのテーブル構造を有するデータ構造体を「IRecord」として名前を付してRAM203などにメモリエリアを作成し、作成したメモリエリアに指定されたパラメータの値を代入する処理である。詳細は後述する図15を参照して説明する。
「子データ構造宣言」処理1223は、「データ構造宣言」1222で指定されたデータベースと1対多の関係となるデータベースの構造をRAM203などのメモリエリアに作成し、指定されたパラメータの値を代入する処理である。なお、「子データ構造宣言」処理は「データ構造宣言」処理と親子関係にしかなりえない。その為、図12では、「データ構造宣言」処理は選択可能なようにブリンクアップ(黒地に白文字)されているが、「子データ構造宣言」はブリンクアップされていない(白地に黒文字)。以下、同様に黒地に白文字のボタンが有効状態であり、白地に黒文字のボタンは無効状態とする。
「データベース操作」処理1224は、「データ構造宣言」処理で指定されたデータベースに、「IRecord」の値を反映する処理であり、実行する操作としては、「INSERT」、「UPDATE」、「ERASE」、「STORE」、「STOREALL」、「MODIFY」などがある。実行する操作は、後述する図16を参照して説明する。
なお、親子の関係にある「データ構造宣言」処理1222及び「子データ構造宣言」処理1223で指定された「IRecord」に対して「データベース操作」処理を実行すると、「データ構造宣言」処理と「子データ構造宣言」処理で指定された両方のデータを含めた「データベース操作」処理を行う。
この親子の関係のデータ構造宣言」処理ブロック及び「子データ構造宣言」処理ブロックで指定された「IRecord」に対して「データベース操作」処理を実行することにより、複数のデータベース操作を一つの処理で実施可能になり、これまで複数のデータベースそれぞれに「STORE」や「UPDATE」の操作を行っていた手間を省くことが出来、開発者ユーザの手間を省くことが可能となる。
次に、処理未定義ブロックボタン1203について説明する。
処理未定義ブロックボタン1203(画面上では「プレーン」と表示)は、具体的な処理の内容は未定義だが、開発者ユーザが後程、処理内容を決定できるようにコメントを記載できる未定義の処理ブロックを配置するためのボタンである。
図12の処理ブロック配置エリア1206を選んだ状態で、処理未定義ブロックボタン1203を押下すると、処理未定義ブロック(以下、「プレーン」ブロックと呼ぶ)を処理ブロック配置エリア1206に配置する。なお、通常は1つのロジックには複数の処理ブロックが含まれるため、処理未定義ブロックボタン1203が押下されると、複数(例えば4つ)の「プレーン」ブロックを配置するようにしても良い。
複数の「プレーン」ブロックを配置した例を、図13を参照して説明する。
図13は、本発明のプログラム生成装置100における処理ロジックを生成する処理ロジック生成画面の模式図である。
図13の処理ブロック配置エリア1301には、複数の「プレーン」ブロックを開発者ユーザが配置した状態である。
開発者ユーザは「プレーン」ブロックを配置した後、「プレーン」ブロックのコメント入力欄1302に後程、処理内容を決定できるような概要コメントを記載する。
コメント入力欄1302にコメントが入力されている例を、図14を参照して説明する。
図14は、本発明のプログラム生成装置100における処理ロジックを生成する処理ロジック生成画面の模式図である。
図14の処理ブロック配置エリア1401には、コメント入力欄1402にコメント「PCテーブルの宣言(本体)」が入力されている。その為、開発者ユーザは処理未定義ブロック1405が、PC本体のテーブルを宣言する処理ブロックであることが容易に分かり、コメントに記載されている処理を実装できるようなパラメータやスクリプトを後程、開発者ユーザが入力するだけで処理ロジックが生成可能になる。
同様に配置した「プレーン」ブロックのコメント入力欄へ処理の概要を入力した例を、1406に示す。
「プレーン」ブロックを配置した後で開発者ユーザが処理ブロックを指定する場合を図14及び図15を参照して説明する。
図14の処理未定義ブロック(「プレーン」ブロック)1405の処理を指定する場合、1403の処理指定ドロップダウンリストを図示しないマウスなどでクリックし、リストアップされる1202に記載された処理定義ブロックの名前を選択し、1404の確定ボタンを押下する。
図14の処理確定ボタン1404が押下されると、図15の1501のような画面イメージが表示される。
図15及び図16は、本発明のプログラム生成装置100における処理ロジックを生成する処理ロジック生成画面の模式図である。なお、この例では、処理ロジック生成画面はブラウザの1画面で表示できないので、図15と図16に分けて表示している。
図15の1501は、図14の処理指定ドロップダウンリスト1403において、「データ構造宣言」処理が選ばれた際の画面イメージである。
図14の処理確定ボタン1404が押下された直後は、図15の1501の「IRecordの名前」欄、「操作対象のテーブル」欄、「パラメータ」欄は、それぞれ空欄であり、開発者ユーザが入力することにより、処理定義ブロック1501の処理を定義する。
例えば、図15の1501のように、開発者ユーザが「IRecordの名前」を「temp_ROOT」に、「操作対象のテーブル」を「PC」に、「パラメータ」を「root」に指定している。これらの指定により、データ構造は「PC」データテーブルである「temp_ROOT」と言う名前のデータ構造体を作成し、そのデータ構造体「temp_ROOT」には1502で指定した「root」の値(すなわち、入力パラメータ領域のrootグループである「PC管理番号」と「使用状態」のデータ)としている。
データ構造宣言処理により生成されるプログラムの雛型プログラムを図26を参照して説明する。
図26は、本発明の実施形態におけるプログラム生成装置100が有する雛型プログラムの例である。
図26の2601〜2603は、プログラム生成装置100の外部記憶装置211などに記憶されている雛型プログラムの例である。
2601は、データ構造宣言処理の場合の雛型プログラムであり、アンダーラインとイタリックで記載した部分にそれぞれ、図15の1501で示した入力欄の値が反映される。
雛型プログラム2601に図15の1501の値を入力した際に生成されるプログラムを図17を参照して説明する。
図17は、本発明の実施形態におけるプログラム生成装置100が生成するプログラムの例である。
図17の1701欄が、雛型プログラム2601から1501の入力値を使用して生成された結果のプログラムである。
同様に図14の1406で入力コメント欄に入力されたコメントに沿った処理を、開発者ユーザが1501と同様に「IRecordの名前」や「操作対象のテーブル」、「パラメータ」欄を指定する。開発者ユーザにより指定された例が図15の1503である。
この場合も同様に、雛型プログラム2601に開発者ユーザにより指定された例1503を入力して生成された結果のプログラムが、図17の1702である。
また、図14の1407において、処理指定ドロップダウンリスト1410に「スクリプト」処理が選択された例が図15の1504の例である。
1504では、1501、1503で定義された複数のデータ構造体(IRecord)を「temp_ROOT」のデータ構造体にまとめるために、ユーザはスクリプト入力欄に「temp_ROOT.copyByName(temp_g1)」というスクリプトを入力する。
スクリプト処理により生成されるプログラムの雛型プログラムの例が図26の2602である。
2602は、スクリプト処理の場合の雛型プログラムであり、アンダーラインとイタリックで記載した部分はそれぞれ、図15の1504に示した入力欄の値が反映される。
雛型プログラム2602に図15の1504の値を入力した際に生成されるプログラムが図17の1703である。
同様に、図14の1407の「プレーン」ブロックは、図16の1601で表示されたスクリプトを開発者ユーザが入力することによりデータ構造体「temp_ROOT」に各データ構造体「temp_g2」、「temp_g3」をまとめる為のスクリプトを入力する。
図14の1408では、入力された1201のパラメータをそれぞれ、データベースの「PC」テーブルに登録するため、1407でまとめたデータ構造体を「PC」テーブルに登録する処理を開発者ユーザが記載する。
1408の処理指定ドロップダウンリスト1411において、開発者ユーザは「データベース操作」処理を選択する。
その後、図16の1602の画面に移行し、1603に記載のように、開発者ユーザがデータベース操作を行うデータ構造体「temp_ROOT」を指定する。また、実行するデータベース操作として、開発者ユーザが1604のように「STORE」操作を指定する。
データベース操作処理1224により生成されるプログラムの雛型プログラムの例が、図26の2603である。
2603は、データベース操作処理1224の場合の雛型プログラムであり、アンダーラインとイタリックで記載した部分はそれぞれ、図16の1602に示した入力欄の値が反映される。「実行する操作」欄1604のドロップダウンリストには、表記の「STORE」のほかに、「INSERT」、「UPDATE」、「ERASE」、「STOREALL」、「MODIFY」などがあり、それぞれ生成されるプログラムに、store, insert, update, erase, storeall, modifyと入力する。
なお、データベースへの登録に失敗した場合のメッセージとして、「E000」と記載されている欄に任意のコメントを入力しておいて、表示させることもできる。
図14の1409において、データベース登録のメッセージをユーザに伝えるため、処理指定ドロップダウンリスト1412で、開発者ユーザが「スクリプト」処理を指定し、図16のスクリプト入力欄に1605のように「登録しました。」と表示させるためのスクリプト「Msg.info(‘登録しました。’);」と入力する。
以上のように開発者ユーザが入力することにより、プログラム生成装置100のCPU201はそれぞれの処理に該当する雛型に入力することにより、図17のようなスクリプトを生成することが出来る。
図12〜図16の画面イメージの流れを図5のフローチャートに戻って説明する。
図5のステップS502において、入力ボタンを受け付けた後、プログラム生成装置100のCPU201は、受け付けたボタンが、処理ブロックボタン(図12の1202や1203)か、処理ブロック移動ボタン(1204)か、処理内容表示非表示ボタン(1205)かを判断する(ステップS503)。
ステップS503において、受け付けたボタンが処理ブロックボタンの場合は、ステップS504へと移行する。ステップS504の処理の詳細を図24を参照して説明する。
図24は、本発明の実施形態におけるプログラム生成装置100のロジック入力の処理フローを示す図の一例である。なお、図24のフローチャートはプログラム生成装置100のCPU201により実行されるものである。
図24のフローチャートは、プログラム生成装置100において、開発者ユーザが図12〜図16のような処理ロジック生成画面で、一つの処理ブロックを選択した状態において、新たな処理ブロックを追加するために、図12の1202や1203の処理ブロックボタンが押下された際に開始される。
まず、ステップS2401において、プログラム生成装置のCPU201は、ユーザにより押下された処理ブロックボタン1202や1203のボタンが、子ブロックかどうかを判断する。子ブロックとは、図12の1202内の1223などの白地に黒文字の処理ブロックを指し、親ブロックとは子ブロックの真上に処理ブロックを指す。
例えば、1222の「データ構造宣言」処理ブロックが親ブロックで、その下にある1223の「子データ構造宣言」処理ブロックが子ブロックに該当する。
なお、ステップS2401以下のフローは後述するステップS511〜S514、S521と同様なので、説明を省略する。なお、ステップS511〜S514、S521の「移動」という言葉は「追加」に、変更して解釈する。
次に、ステップS505において、配置した処理ブロックに開発ユーザがコメントを入力する。(図14の1402)
次に、ステップS506において、プログラム生成装置100のCPU201は、ステップS504で配置された処理ブロックがプレーン処理ブロックかそうでないかを判断する。
ステップS506において、配置された処理ブロックがプレーン処理ブロックの場合には、ステップS507に移行し、プレーン処理ブロックでない場合はステップS508へと移行する。
ステップS507に移行すると、プログラム生成装置100のCPU201は、処理ブロックの種類を処理指定ドロップダウンリスト(図14の1403や1410、1411等)によりユーザから受け取り、プレーン処理ブロックから選択された処理ブロックに変更する。
このステップS507の処理は、ユーザが任意のタイミングで入力することが可能であり、必ずしも、図5のタイミングで入力する必要はなく、ステップS507以降よりも先にステップS502以降を再度繰り返しても良い。ステップS507以降よりも先にステップS502以降を再度繰り返す例として、図13の処理ブロック配置エリア1301や、図14の処理ブロック配置エリア1401などのように入力されている例がある。
次にステップS508において、プログラム生成装置100のCPU201は、ステップS504もしくはステップS507で指定された処理ブロックがスクリプト処理ブロックかスクリプト処理ブロック以外かを判断する。
ステップS504もしくはステップS507で指定された処理ブロックがスクリプト処理ブロックの場合は、ステップS509において、プログラム生成装置100のCPU201は、スクリプト入力欄にスクリプトの入力を受け付ける。(図15の1504、図16の1601、1605等)
一方、ステップS504もしくはステップS507で指定された処理ブロックがスクリプト処理ブロックでない場合は、プログラム生成装置100のCPU201は、ステップS510において、各処理ブロックのパラメータの入力を受け付ける。なお、ステップS509のスクリプトの入力は各処理ブロックにおけるスクリプト処理のパラメータとすると、ステップS508の判断は必要なく、ステップS510のみの処理となる。
その後、ステップS520において、プログラム生成装置100のCPU201は、全ての処理内容が入力されたかをユーザに確認し、全ての処理内容の入力が完了していれば、このフローを終了し、全ての処理内容が入力されていなければ、ステップS502へと処理を移行する。
次にステップS502において、受け付けた入力ボタンが拡縮ボタン1205の場合のフローを説明する。
ステップS502において、受け付けた入力ボタンが拡縮ボタン1205の場合、ステップS503において、プログラム生成装置100のCPU201は、ステップS515へと移行する。
ステップS515において、プログラム生成装置100のCPU201は、押下されたボタンが、拡張化ボタンか縮小化ボタンかを判断する。図15及び図18を参照して、拡縮ボタン押下の前後の画面イメージを説明する。
図18は、本発明のプログラム生成装置100における処理ロジックを生成する処理ロジック生成画面の模式図である。
図15の1505のように下向き三角の場合は、既に拡張済みの縮小化ボタンであり、1505を押下すると、元は図15、図16のような表示イメージだった画面を、図18の処理ブロック配置エリア1801のような、処理ブロックの詳細情報を隠蔽し、コメント部分だけを表示させる処理を行う(ステップS518)。
その後、拡縮ボタンを拡張化ボタンに変更し、1802のような右向き三角を表示する(ステップS519)。
この縮小化ボタンを活用することで、ソースプログラムを作成している途中で全体の構成の把握を容易にすることが出来る。そのため、開発者ユーザは誤った構成やソースプログラムを作成する前に間違いに気付くことができ、ソースプログラム作成の支援が可能となる。更には、処理ブロックが定義されている、されていないに関わらず、全体の構成がわかるため、処理ロジックに未定義の処理ブロックが含まれていたとしても、修正の要否を早期に確認可能となる。従って、開発者ユーザは開発している途中で、都度このツールを使うことにより、手戻りが少なくなり開発コストの大幅な削減が見込まれる。
一方、一度縮小化されて、処理ブロックの内容を隠蔽してしまっている1801のような場合は、拡縮ボタン1802のいずれかのボタンが押下されると(ステップS515)、右向き三角の処理ブロック内の隠蔽されている処理ブロックの詳細情報(パラメータやスクリプトなど)を表示する(ステップS516)。
図18の拡縮ボタン1803が押下されると、処理ブロック配置エリア1801にあるように、全体の処理ブロックが拡張化されるので、図15及び図16のような結果が表示される。
その後、拡縮ボタンを縮小化ボタンに変更し、1505のような下向き三角を表示する(ステップS517)。
一方、拡縮ボタン1506などのように一つの処理ブロックの縮小化ボタンが押下された場合は、縮小化ボタンの押された処理ブロックに含まれる子ブロックを特定する。
そして、押された処理ブロックと特定した子ブロックのコメントのみを表示し、押された処理ブロックと特定した子ブロックの詳細情報を隠蔽する。
さらに、図18のように全ての処理ブロックが縮小表示されている状況で、拡縮ボタン1804が押下されると、1804で押下された処理ブロックのみを拡大表示して、1501の処理ブロックのように拡大表示させる。
この処理ブロック毎の拡縮ボタンを活用することで、ソースプログラムを作成している途中で処理ブロックの一部の構成の把握を容易にすることが出来る。そのため、開発者ユーザは一定の開発単位ごとに、誤った構成やソースプログラムを作成する前に間違いに気付くことができる。
拡縮ボタン押下後は、ステップS520へと移行し、全ての処理内容が入力されていなければ、ステップS502へと移行する。
次にステップS502において、受け付けた入力ボタンが処理ブロック移動ボタン1204(処理定義図形オブジェクト位置移動)の場合のフローを説明する。
ステップS502において、受け付けた入力ボタンが上下の処理ブロック移動ボタン1204の場合、ステップS503において、プログラム生成装置100のCPU201は、ステップS511の処理へと移行する。
ステップS511の処理に移行すると、プログラム生成装置100のCPU201は、移動対象の処理ブロックが子ブロックかどうかの判断をする。なお、移動対象の処理ブロックは事前にユーザによる図示しないマウスなどで指定されているとする。
ステップS511において、移動対象ブロックが子ブロックである場合は、ステップS513の処理へと移行し、移動対象ブロックが子ブロックでない場合はステップS512の処理へと移行する。すなわち、移動対象ブロックが上もしくは下のブロックへ移動可能かどうかの判断を実行する。図19、図20を参照して処理ブロックの移動について説明する。
図19及び図20は、本発明のプログラム生成装置100における処理ロジックを生成する処理ロジック生成画面の模式図である。なお、図19、図20では、処理ブロックの詳細情報(パラメータやスクリプト等)は隠蔽した状態で説明する。
ステップS513の処理へと移行すると、移動対象ブロックである子ブロックが移動先の処理ブロックに含まれることができるかどうかを判断する。子ブロックが移動先の処理ブロックに含まれることができる場合、例えば、図19の1902の「データ構造宣言」処理ブロックの内部に、1901の「子データ構造宣言」処理ブロックが配置されており、ユーザが下の「データ構造宣言」処理ブロック1903に「子データ構造宣言」処理ブロック1901を移動させたい場合は、1901をユーザが選択後、1204の「下へ」ボタンを押下する。
1204の「下へ」ボタンが押下されると、1901の「子データ構造宣言」処理ブロックが2001の「子データ構造宣言」処理ブロックへと移動し、「子データ構造宣言」されるデータ構造が1902から1903へと移行する(ステップS514)。
なお、図20の「子データ構造宣言」処理ブロック2001の子ブロックを更に下に移動させようとすると、2001より下に「子データ構造宣言」処理ブロックを受け付ける「データ構造宣言」処理ブロックが存在しない為、ステップS513のNOの処理に移行し、何もせずステップS520の処理へ移行する。
なお、子ブロックであっても、移動できない場合には移動させない。例えば、子ブロックが「条件(ELSE IF)」処理ブロックの場合、移動先の親ブロックが「条件分岐」処理ブロックの場合であっても、元の「条件分岐」処理ブロックと分岐条件が変わることになるので、移動させないものと判定する。つまり、親ブロック−子ブロックとの関係を判定するだけでなく、分岐条件をも加味して移動の要否を判定しているのである。
一方、ステップS511において、移動対象の処理ブロックが子ブロックではない場合のステップS512の処理について、図21、図22を参照して説明する。
図21〜図23は、本発明のプログラム生成装置100における処理ロジックを生成する処理ロジック生成画面の模式図である。なお、図21〜図23では、処理ブロックの詳細情報(パラメータやスクリプト等)は隠蔽した状態で説明する。
図21〜図23は、2101の「データベース操作」処理をユーザが移動させる場合の例である。
図21の「データベース操作」処理ブロック2101を「データ構造宣言」処理ブロック2102の下、すなわちデータ構造宣言処理の後で実行したい場合、まずユーザは2101を図示しないマウスなどで指定する。
2101が指定された状態で1204の「下へ」ボタンを押下すると、「データベース操作」処理ブロック2101は図22の2201の位置に移動し、「データ構造宣言」処理ブロックの子ブロックにはならない。
一方、図22の2201の位置の「データベース操作」処理ブロックを指定した状態で更に、下へボタンを押下すると、「データベース操作」処理ブロック2201は次の条件分岐の子ブロックとなり、図23の2301の位置に移動する。これは、条件分岐が制御処理であり、条件分岐の制御により実行する場合としない場合が存在するためである。
図21〜図23の画面イメージの流れを図5のフローチャートに戻って説明する。
図5のステップS511において、移動対象の処理ブロックが子ブロックではないと判断される場合、ステップS512において、プログラム生成装置100のCPU201は、移動先の受け入れ処理ブロックが制御処理ブロックかどうかを判断する。
ステップS512において、移動先の受け入れ処理ブロックが制御処理ブロックであった場合は、ステップS514へと移行し、制御処理ブロックの子ブロックとして移動先に移動する(図22の2201からず23の2301への移動)。
一方、ステップS512において、移動先の受け入れ処理ブロックが制御処理ブロックではない場合は、ステップS521へと移行し、処理ブロック配置エリア(2203のエリア)の次の位置に移動させる。すなわち、移動先の処理ブロックの子ブロックにはならない(図21の2101から図22の2201への移動)。
上記のように、本発明の処理ブロックの移動機能により、処理ブロックを上下のボタンで容易に移動可能であるが、処理ブロックを移動させると誤りになる場合には、処理ブロックの移動を制限することにより、ソースプログラムの作成ミスを防ぐことができる。
また、他の例としては、例えば「データ構造宣言」処理ブロックの配置より前に、「データベース操作」処理ブロックや「データ編集」処理ブロックを配置できなくしたり、これらの処理ブロックを処理指定ドロップダウンリストで指定する際に警告を出す、もしくはパラメータを指定する際に「IRecordの名前」が宣言されていないと、警告を出すなどの方法で、ソースプログラムの作成ミスを防ぐことが出来る。
以上説明したように、本発明によれば、プログラムの設計情報としての全体の構成を考える開発者が各処理ブロックでの概要を記載し、各処理ブロックに関しては、開発ツールやプログラム言語を使える開発者が入力するという分業が可能になり、効率的なプログラム生成が可能になる等の効果を奏する。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
以下、図25に示すメモリマップを参照して本発明に係る情報処理装置で読み取り可能なプログラムの構成について説明する。
図25は、本発明に係る情報処理装置で読み取り可能なプログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図4、図5に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。