JPH11224184A - オブジェクト指向データベース操作プログラム生成システム及び方法 - Google Patents
オブジェクト指向データベース操作プログラム生成システム及び方法Info
- Publication number
- JPH11224184A JPH11224184A JP10024459A JP2445998A JPH11224184A JP H11224184 A JPH11224184 A JP H11224184A JP 10024459 A JP10024459 A JP 10024459A JP 2445998 A JP2445998 A JP 2445998A JP H11224184 A JPH11224184 A JP H11224184A
- Authority
- JP
- Japan
- Prior art keywords
- program
- generating
- class
- template
- schema
- 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.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 既存のオブジェクト指向データベースを、既
存のオートメーション通信の機能を利用して操作するプ
ログラムを自動的に生成する。また、プログラムの開発
・保守を容易にする。 【解決手段】 プログラム自動生成装置3は、データベ
ース11からAPI12を介してそのデータベース11
に定義されているスキーマ情報を取得し、取得したスキ
ーマ情報とプログラムテンプレートファイル4を基にし
て、オートメーション通信のためのオートメーションサ
ーバ14のためのプログラムを自動生成する。オートメ
ーションサーバ14は、データベース11のスキーマを
構成するクラスとその属性、メソッドを、オートメーシ
ョン通信を利用するクライアントプログラム21に公開
する。
存のオートメーション通信の機能を利用して操作するプ
ログラムを自動的に生成する。また、プログラムの開発
・保守を容易にする。 【解決手段】 プログラム自動生成装置3は、データベ
ース11からAPI12を介してそのデータベース11
に定義されているスキーマ情報を取得し、取得したスキ
ーマ情報とプログラムテンプレートファイル4を基にし
て、オートメーション通信のためのオートメーションサ
ーバ14のためのプログラムを自動生成する。オートメ
ーションサーバ14は、データベース11のスキーマを
構成するクラスとその属性、メソッドを、オートメーシ
ョン通信を利用するクライアントプログラム21に公開
する。
Description
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
データベースを操作するためのプログラム、特にオート
メーションの機能を利用してオブジェクト指向データベ
ースを操作するためのプログラムを生成するオブジェク
ト指向データベース操作プログラム生成システム及び方
法に関する。
データベースを操作するためのプログラム、特にオート
メーションの機能を利用してオブジェクト指向データベ
ースを操作するためのプログラムを生成するオブジェク
ト指向データベース操作プログラム生成システム及び方
法に関する。
【0002】
【従来の技術】インターフェース定義や分散ミドルウェ
アのクラスライブラリを用いたオブジェクトの開発は、
分散システムを構築するための特有のプログラミング作
業となる。この部分のプログラムを自動生成するアプロ
ーチ、或いはこの部分のプログラムの生成を支援しよう
とするアプローチは、従来よりかなりの数が提案されて
いる。
アのクラスライブラリを用いたオブジェクトの開発は、
分散システムを構築するための特有のプログラミング作
業となる。この部分のプログラムを自動生成するアプロ
ーチ、或いはこの部分のプログラムの生成を支援しよう
とするアプローチは、従来よりかなりの数が提案されて
いる。
【0003】このようなアプローチとして、まず、特開
平4−111022号公報に記載のインタフェースプロ
グラム自動生成装置(以下、従来例1という)が挙げら
れる。従来例1は、インタフェース定義、開発言語仕
様、計算機種別データ表現の一般化/特殊化プログラム
ルーチン、通信プロトコル別プログラムルーチンの4つ
の情報源を基に、ネットワーク通信のための交換データ
型定義とインタフェースプログラムとを自動生成する。
平4−111022号公報に記載のインタフェースプロ
グラム自動生成装置(以下、従来例1という)が挙げら
れる。従来例1は、インタフェース定義、開発言語仕
様、計算機種別データ表現の一般化/特殊化プログラム
ルーチン、通信プロトコル別プログラムルーチンの4つ
の情報源を基に、ネットワーク通信のための交換データ
型定義とインタフェースプログラムとを自動生成する。
【0004】また、上記のようなアプローチとして、特
開平8−36486号公報に記載の分散プログラム記述
支援装置(以下、従来例2という)がある。従来例2
は、特にCORBAに関して、開発言語によるオブジェ
クト記述から、構文解析、内部表現変換を経て、分散オ
ブジェクトのインタフェース記述とインプリメンテーシ
ョンとを記述する。
開平8−36486号公報に記載の分散プログラム記述
支援装置(以下、従来例2という)がある。従来例2
は、特にCORBAに関して、開発言語によるオブジェ
クト記述から、構文解析、内部表現変換を経て、分散オ
ブジェクトのインタフェース記述とインプリメンテーシ
ョンとを記述する。
【0005】さらに、上記のようなアプローチとして、
特開平8−263277号公報に記載のデータ操作プロ
グラムの自動生成装置(以下、従来例3)がある。従来
例3は、データベース定義からデータの属性を解析する
属性解析部の解析結果、及び型変換規則、データベース
アクセステンプレート、補助関数生成規則に基づいて、
既存の関係データベースのデータ操作を行うためのオブ
ジェクト指向プログラムを生成する。
特開平8−263277号公報に記載のデータ操作プロ
グラムの自動生成装置(以下、従来例3)がある。従来
例3は、データベース定義からデータの属性を解析する
属性解析部の解析結果、及び型変換規則、データベース
アクセステンプレート、補助関数生成規則に基づいて、
既存の関係データベースのデータ操作を行うためのオブ
ジェクト指向プログラムを生成する。
【0006】上記のようなアプローチに従った実際の製
品として、Visual C++(登録商標)にツールとして含ま
れるDeveloper Studioの機能であるAppWizard及びClass
Wizard(いずれも商標)(以下、従来例4という)、並
びにオブジェクト指向データベース管理システムである
ObjectStore(登録商標)の拡張機能であるPSE for Act
iveX(以下、従来例5という)がある。
品として、Visual C++(登録商標)にツールとして含ま
れるDeveloper Studioの機能であるAppWizard及びClass
Wizard(いずれも商標)(以下、従来例4という)、並
びにオブジェクト指向データベース管理システムである
ObjectStore(登録商標)の拡張機能であるPSE for Act
iveX(以下、従来例5という)がある。
【0007】従来例4では、AppWizardが開発の開始時
点での初期設定入力からオブジェクト記述言語(以下、
ODLという)のインタフェース定義とオートメーショ
ンオブジェクト(オートメーションによって操作可能な
オブジェクトをいう。以下、同じ)の初版プログラムを
自動生成する。ClassWizardがその後の開発言語による
プログラムの開発と並行して、ODLの記述とオートメ
ーションオブジェクトのプログラムとを自動的に追加、
削除、修正していく。
点での初期設定入力からオブジェクト記述言語(以下、
ODLという)のインタフェース定義とオートメーショ
ンオブジェクト(オートメーションによって操作可能な
オブジェクトをいう。以下、同じ)の初版プログラムを
自動生成する。ClassWizardがその後の開発言語による
プログラムの開発と並行して、ODLの記述とオートメ
ーションオブジェクトのプログラムとを自動的に追加、
削除、修正していく。
【0008】従来例5では、ObjectStoreが最初から持
っているクラスライブラリのODL記述と、開発者が定義
するObjectStore型記述ファイル(拡張子をostとして保
存したファイル:以下、ostファイルという)とを合わせ
て、ObjectStoreの専用コンパイラでアプリケーション
のODL記述と対応するオートメーションオブジェクトの
プログラムとを生成する。
っているクラスライブラリのODL記述と、開発者が定義
するObjectStore型記述ファイル(拡張子をostとして保
存したファイル:以下、ostファイルという)とを合わせ
て、ObjectStoreの専用コンパイラでアプリケーション
のODL記述と対応するオートメーションオブジェクトの
プログラムとを生成する。
【0009】
【発明が解決しようとする課題】しかしながら、上記の
従来例には、次のような問題点があった。上記従来例1
では、ネットワーク通信のための交換データ型定義とイ
ンターフェースプログラムとを自動生成するものの、イ
ンタフェース定義自体は、ユーザが与えなければならな
かった。また、従来例1の装置は、既存のシステムを利
用して構成されるものでないため、実際の製品を開発す
るためには、かなりの開発期間を要するという問題があ
った。しかも、インタフェース仕様が変更された場合に
は、プログラムをコンパイラの構文解析から作り直さな
ければならず、保守作業にも多くの時間を費やすことと
なる問題があった。
従来例には、次のような問題点があった。上記従来例1
では、ネットワーク通信のための交換データ型定義とイ
ンターフェースプログラムとを自動生成するものの、イ
ンタフェース定義自体は、ユーザが与えなければならな
かった。また、従来例1の装置は、既存のシステムを利
用して構成されるものでないため、実際の製品を開発す
るためには、かなりの開発期間を要するという問題があ
った。しかも、インタフェース仕様が変更された場合に
は、プログラムをコンパイラの構文解析から作り直さな
ければならず、保守作業にも多くの時間を費やすことと
なる問題があった。
【0010】上記従来例2は、単一のオブジェクト指向
プログラミング言語によるオブジェクト記述から、CO
RBA仕様の分散オブジェクトのインタフェース記述と
インプリメンテーション記述(ユーザ仕様言語)とを自動
生成する機能を備える前提にしている。すなわち、オブ
ジェクト変換プリプロセッサの構成に関するものであ
り、プログラムそのものを自動的に生成するものではな
い。しかも、インタフェース仕様が変更された場合に
は、プログラムをコンパイラの構文解析から作り直さな
ければならず、保守作業にも多くの時間を費やすことと
なる問題があった。
プログラミング言語によるオブジェクト記述から、CO
RBA仕様の分散オブジェクトのインタフェース記述と
インプリメンテーション記述(ユーザ仕様言語)とを自動
生成する機能を備える前提にしている。すなわち、オブ
ジェクト変換プリプロセッサの構成に関するものであ
り、プログラムそのものを自動的に生成するものではな
い。しかも、インタフェース仕様が変更された場合に
は、プログラムをコンパイラの構文解析から作り直さな
ければならず、保守作業にも多くの時間を費やすことと
なる問題があった。
【0011】上記従来例3では、データベースアクセス
テンプレートに従って生成されるプログラムは、C++
などの特定の言語に依存するものとなる。このため、例
えば、市販のアプリケーションプログラムが有するオー
トメーション通信機能を利用したツールを生かし切るこ
とができないという問題点があった。また、インターフ
ェース定義を自動的に生成するものではなく、インタフ
ェース仕様が変更されて場合には、一からプログラムを
作り直さなければならず、保守作業にも多くの時間を費
やすこととなる問題があった。
テンプレートに従って生成されるプログラムは、C++
などの特定の言語に依存するものとなる。このため、例
えば、市販のアプリケーションプログラムが有するオー
トメーション通信機能を利用したツールを生かし切るこ
とができないという問題点があった。また、インターフ
ェース定義を自動的に生成するものではなく、インタフ
ェース仕様が変更されて場合には、一からプログラムを
作り直さなければならず、保守作業にも多くの時間を費
やすこととなる問題があった。
【0012】上記従来例4では、ClassWizardの機能
は、AppWizardによって初版プログラムが生成されたプ
ログラムに対してのみ、有効に働くようになっている。
このため、AppWizardを使って生成していないプログラ
ムに対して、ClassWizardの機能を十分に使うことがで
きないという問題点があった。
は、AppWizardによって初版プログラムが生成されたプ
ログラムに対してのみ、有効に働くようになっている。
このため、AppWizardを使って生成していないプログラ
ムに対して、ClassWizardの機能を十分に使うことがで
きないという問題点があった。
【0013】上記従来例5では、ostファイルを作成す
るという別のインタフェース定義を行わなければなら
ず、インタフェース定義そのものを自動生成することが
できない。このため、従来例3と同様に、市販のアプリ
ケーションプログラムが有するオートメーション通信機
能を利用したツールを生かし切ることができないという
問題点や、インタフェース仕様が変更されて場合には、
一からプログラムを作り直さなければならないという問
題点があった。
るという別のインタフェース定義を行わなければなら
ず、インタフェース定義そのものを自動生成することが
できない。このため、従来例3と同様に、市販のアプリ
ケーションプログラムが有するオートメーション通信機
能を利用したツールを生かし切ることができないという
問題点や、インタフェース仕様が変更されて場合には、
一からプログラムを作り直さなければならないという問
題点があった。
【0014】さらに、データベース管理システムやAP
I(Application Programing Interface)や、オブジェ
クト指向言語で書かれたサーバプログラムがオブジェク
トの多相性をサポートしていても、クライアントからオ
ートメーションを利用してアクセスした場合に、その多
相性の機能を利用できる技術は、従来存在しなかった。
また、既存のオートメーションの機能を利用してデータ
ベースを操作できるようにするプログラムを生成する技
術は、従来存在しなかった。
I(Application Programing Interface)や、オブジェ
クト指向言語で書かれたサーバプログラムがオブジェク
トの多相性をサポートしていても、クライアントからオ
ートメーションを利用してアクセスした場合に、その多
相性の機能を利用できる技術は、従来存在しなかった。
また、既存のオートメーションの機能を利用してデータ
ベースを操作できるようにするプログラムを生成する技
術は、従来存在しなかった。
【0015】本発明は、また、開発・保守が容易なオブ
ジェクト指向データベースを操作するためのプログラム
を生成することができるオブジェクト指向データベース
操作プログラム生成システム及び方法を提供することを
目的とする。
ジェクト指向データベースを操作するためのプログラム
を生成することができるオブジェクト指向データベース
操作プログラム生成システム及び方法を提供することを
目的とする。
【0016】本発明は、上記従来例の問題点を解消する
ためになされたものであり、既存のオブジェクト指向デ
ータベースを既存のオートメーション通信の機能を利用
して操作するプログラムを、自動的に生成するオブジェ
クト指向データベース操作プログラム生成システム及び
方法を提供することを目的とする。
ためになされたものであり、既存のオブジェクト指向デ
ータベースを既存のオートメーション通信の機能を利用
して操作するプログラムを、自動的に生成するオブジェ
クト指向データベース操作プログラム生成システム及び
方法を提供することを目的とする。
【0017】本発明は、また、オブジェクトの多相性の
機能を十分に利用することができるオブジェクト指向デ
ータベースを操作するためのプログラムを生成するオブ
ジェクト指向データベース操作プログラム生成システム
及び方法を提供することを目的とする。
機能を十分に利用することができるオブジェクト指向デ
ータベースを操作するためのプログラムを生成するオブ
ジェクト指向データベース操作プログラム生成システム
及び方法を提供することを目的とする。
【0018】
【課題を解決するための手段】上記目的を達成するた
め、本発明の第1の観点にかかるオブジェクト指向デー
タベース操作プログラム生成システムは、オブジェクト
指向データベースに定義されているスキーマを構成する
各クラスに関する情報を取得する取得手段と、前記スキ
ーマを構成する各クラスに含まれるオブジェクトの操作
に用いられるプログラムを生成するための第1のテンプ
レートを記憶する第1のテンプレート記憶手段と、前記
第1のテンプレート記憶手段から前記第1のテンプレー
トを読み出し、該読み出した第1のテンプレートに前記
取得手段が取得したクラスに関する情報のうちの対応す
るものの少なくとも一部を挿入することによって、前記
スキーマを構成するクラス毎に、クラスに含まれるオブ
ジェクトを操作するための第1のプログラムを生成する
プログラム生成手段と、前記プログラム生成手段が生成
する前記スキーマを構成するクラス毎のプログラムが外
部に公開すべきインタフェースを定義するためのインタ
フェース定義の生成に用いられる第2のテンプレートを
記憶する第2のテンプレート記憶手段と、前記第2のテ
ンプレート記憶手段から第2のテンプレートを読み出
し、該読み出した第2のテンプレートに前記取得手段が
取得したクラスに関する情報のうちの対応するものの少
なくとも一部を挿入することによって、前記スキーマを
構成するクラス毎に、対応する前記プログラムのインタ
フェース定義を生成するインタフェース定義生成手段
と、を備えることを特徴とする。
め、本発明の第1の観点にかかるオブジェクト指向デー
タベース操作プログラム生成システムは、オブジェクト
指向データベースに定義されているスキーマを構成する
各クラスに関する情報を取得する取得手段と、前記スキ
ーマを構成する各クラスに含まれるオブジェクトの操作
に用いられるプログラムを生成するための第1のテンプ
レートを記憶する第1のテンプレート記憶手段と、前記
第1のテンプレート記憶手段から前記第1のテンプレー
トを読み出し、該読み出した第1のテンプレートに前記
取得手段が取得したクラスに関する情報のうちの対応す
るものの少なくとも一部を挿入することによって、前記
スキーマを構成するクラス毎に、クラスに含まれるオブ
ジェクトを操作するための第1のプログラムを生成する
プログラム生成手段と、前記プログラム生成手段が生成
する前記スキーマを構成するクラス毎のプログラムが外
部に公開すべきインタフェースを定義するためのインタ
フェース定義の生成に用いられる第2のテンプレートを
記憶する第2のテンプレート記憶手段と、前記第2のテ
ンプレート記憶手段から第2のテンプレートを読み出
し、該読み出した第2のテンプレートに前記取得手段が
取得したクラスに関する情報のうちの対応するものの少
なくとも一部を挿入することによって、前記スキーマを
構成するクラス毎に、対応する前記プログラムのインタ
フェース定義を生成するインタフェース定義生成手段
と、を備えることを特徴とする。
【0019】上記のオブジェクト指向データベース操作
プログラム生成システムは、前記スキーマをクラスに含
まれるオブジェクトを操作するための第1のプログラム
と、インターフェース定義とのいずれをも自動的に生成
することができる。このため、開発者がプログラムとイ
ンタフェース定義とのいずれか一方を与えたり、プログ
ラムとインタフェース定義とを別々のシステムを用いて
生成したりする必要がないので、オブジェクト指向デー
タベースを操作するためのプログラムの開発が容易にな
る。また、インタフェース仕様の変更の場合にも、第1
のプログラムを一から作り直さなければならないという
ことがないので、プログラムの保守も容易である。
プログラム生成システムは、前記スキーマをクラスに含
まれるオブジェクトを操作するための第1のプログラム
と、インターフェース定義とのいずれをも自動的に生成
することができる。このため、開発者がプログラムとイ
ンタフェース定義とのいずれか一方を与えたり、プログ
ラムとインタフェース定義とを別々のシステムを用いて
生成したりする必要がないので、オブジェクト指向デー
タベースを操作するためのプログラムの開発が容易にな
る。また、インタフェース仕様の変更の場合にも、第1
のプログラムを一から作り直さなければならないという
ことがないので、プログラムの保守も容易である。
【0020】上記のオブジェクト指向データベース操作
プログラム生成システムは、前記プログラム生成手段が
生成した前記第1のプログラムと前記インタフェース定
義生成手段が生成した前記インタフェース定義とをリン
クすることによって、実行可能なモジュールを作り上げ
るリンク手段と、をさらに備えてもよい。
プログラム生成システムは、前記プログラム生成手段が
生成した前記第1のプログラムと前記インタフェース定
義生成手段が生成した前記インタフェース定義とをリン
クすることによって、実行可能なモジュールを作り上げ
るリンク手段と、をさらに備えてもよい。
【0021】上記のオブジェクト指向データベース操作
プログラム生成システムは、前記スキーマを構成する各
クラスに含まれるオブジェクトを外部から操作するため
の外部操作情報を生成するための第3のテンプレートを
記憶する第3のテンプレート記憶手段と、前記第3のテ
ンプレート記憶手段から 第3のテンプレートを読み出
し、該読み出した第3のテンプレートに、前記取得手段
が取得したクラスに関する情報のうちの対応するものの
少なくとも一部を挿入することによって、前記スキーマ
を構成するクラス毎に、対応する前記外部操作情報を生
成する外部操作情報生成手段と、をさらに備えるものと
してもよい。
プログラム生成システムは、前記スキーマを構成する各
クラスに含まれるオブジェクトを外部から操作するため
の外部操作情報を生成するための第3のテンプレートを
記憶する第3のテンプレート記憶手段と、前記第3のテ
ンプレート記憶手段から 第3のテンプレートを読み出
し、該読み出した第3のテンプレートに、前記取得手段
が取得したクラスに関する情報のうちの対応するものの
少なくとも一部を挿入することによって、前記スキーマ
を構成するクラス毎に、対応する前記外部操作情報を生
成する外部操作情報生成手段と、をさらに備えるものと
してもよい。
【0022】この場合、上記のオブジェクト指向データ
ベース操作システムは、設定された情報によってインタ
フェースを介して外部から他のプログラムを操作するた
めの第2のプログラムを実行させるプログラム実行手段
と、前記外部操作情報生成手段が生成した外部操作情報
を前記第2のプログラムに設定することによって、前記
第2のプログラムが前記インタフェース定義手段によっ
て定義されたインタフェース定義に対応するインタフェ
ースを介して前記プログラム生成手段によって生成され
た前記第1のプログラムを操作することが可能となるよ
うに設定する設定手段と、を備えるものとすることがで
きる。
ベース操作システムは、設定された情報によってインタ
フェースを介して外部から他のプログラムを操作するた
めの第2のプログラムを実行させるプログラム実行手段
と、前記外部操作情報生成手段が生成した外部操作情報
を前記第2のプログラムに設定することによって、前記
第2のプログラムが前記インタフェース定義手段によっ
て定義されたインタフェース定義に対応するインタフェ
ースを介して前記プログラム生成手段によって生成され
た前記第1のプログラムを操作することが可能となるよ
うに設定する設定手段と、を備えるものとすることがで
きる。
【0023】これにより、上記のオブジェクト指向デー
タベース操作プログラム生成システムは、例えば、イン
ターネットなどを介して遠隔地から操作指令を送るよう
にしたクライアントサーバ型のシステム構成とする場合
に、クライアント側で使用される第2のプログラムも、
既存のプログラムを用いて容易に生成することができ
る。
タベース操作プログラム生成システムは、例えば、イン
ターネットなどを介して遠隔地から操作指令を送るよう
にしたクライアントサーバ型のシステム構成とする場合
に、クライアント側で使用される第2のプログラムも、
既存のプログラムを用いて容易に生成することができ
る。
【0024】上記オブジェクト指向データベース操作プ
ログラム生成システムにおいて、前記プログラム生成手
段は、例えば、前記スキーマを構成する各クラス毎に、
プロパティの取得関数を生成する手段と、プロパティの
設定関数を生成する手段と、メソッドを生成する手段と
を備えるものとすることができる。
ログラム生成システムにおいて、前記プログラム生成手
段は、例えば、前記スキーマを構成する各クラス毎に、
プロパティの取得関数を生成する手段と、プロパティの
設定関数を生成する手段と、メソッドを生成する手段と
を備えるものとすることができる。
【0025】上記オブジェクト指向データベース操作プ
ログラム生成システムにおいて、前記インタフェース定
義によって定義されるインタフェースは、例えば、オー
トメーション通信を行うためのインタフェースとするこ
とができる。この場合、前記外部操作情報は、オートメ
ーション通信の機能を利用して前記プログラム生成手段
が生成した前記第1のプログラムを操作するための情報
とすることができる。
ログラム生成システムにおいて、前記インタフェース定
義によって定義されるインタフェースは、例えば、オー
トメーション通信を行うためのインタフェースとするこ
とができる。この場合、前記外部操作情報は、オートメ
ーション通信の機能を利用して前記プログラム生成手段
が生成した前記第1のプログラムを操作するための情報
とすることができる。
【0026】このような構成としたことにより、上記オ
ブジェクト指向データベース操作プログラム生成システ
ムは、既存のオートメーション通信のシステムを利用す
ることができる。これにより、プログラムの開発、運用
及び保守が容易になる。なお、オートメーション通信
は、インターネットなどの通信回線を介して実現する場
合に限らず、プロセス間通信の手法によって実現しても
よい。
ブジェクト指向データベース操作プログラム生成システ
ムは、既存のオートメーション通信のシステムを利用す
ることができる。これにより、プログラムの開発、運用
及び保守が容易になる。なお、オートメーション通信
は、インターネットなどの通信回線を介して実現する場
合に限らず、プロセス間通信の手法によって実現しても
よい。
【0027】上記オブジェクト指向データベース操作プ
ログラム生成システムにおいて、前記スキーマを構成す
るクラスに含まれるオブジェクトは、それぞれ外部から
呼び出される場合のインタフェースとなる引数の個数が
異なるメソッドを複数定義しているものであってもよ
い。この場合、前記インタフェース定義は、前記オブジ
ェクトのメソッドが有する引数の最大個数に対応する引
数と、前記オブジェクトのメソッドが有する引数の最小
個数に対応する引数の省略指定とによって定義されるも
のとすることを好適とする。
ログラム生成システムにおいて、前記スキーマを構成す
るクラスに含まれるオブジェクトは、それぞれ外部から
呼び出される場合のインタフェースとなる引数の個数が
異なるメソッドを複数定義しているものであってもよ
い。この場合、前記インタフェース定義は、前記オブジ
ェクトのメソッドが有する引数の最大個数に対応する引
数と、前記オブジェクトのメソッドが有する引数の最小
個数に対応する引数の省略指定とによって定義されるも
のとすることを好適とする。
【0028】これにより、前記スキーマを構成するクラ
スに含まれるオブジェクトが多相性をサポートしている
場合に、前記オブジェクトのメソッドに引数を渡すため
のインタフェース仕様を統一することができるので、例
えば、オートメーション通信を利用したような場合に
も、オブジェクトの多相性の機能を利用することができ
る。
スに含まれるオブジェクトが多相性をサポートしている
場合に、前記オブジェクトのメソッドに引数を渡すため
のインタフェース仕様を統一することができるので、例
えば、オートメーション通信を利用したような場合に
も、オブジェクトの多相性の機能を利用することができ
る。
【0029】上記目的を達成するため、本発明の第2の
観点にかかるオブジェクト指向データベース操作プログ
ラム生成方法は、オブジェクト指向データベースに定義
されているスキーマを構成する各クラスに関する情報を
取得する取得ステップと、予め用意された第1をテンプ
レートを読み出し、該読み出した第1のテンプレートに
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、クラスに含まれる
オブジェクトを操作するためのプログラムを生成するプ
ログラム生成ステップと、予め用意された第2のテンプ
レートを読み出し、該読み出した第2のテンプレートに
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、対応する前記プロ
グラムのインタフェース定義を生成するインタフェース
定義生成ステップと、インタフェース定義生成ステップ
と、を含むことを特徴とする。
観点にかかるオブジェクト指向データベース操作プログ
ラム生成方法は、オブジェクト指向データベースに定義
されているスキーマを構成する各クラスに関する情報を
取得する取得ステップと、予め用意された第1をテンプ
レートを読み出し、該読み出した第1のテンプレートに
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、クラスに含まれる
オブジェクトを操作するためのプログラムを生成するプ
ログラム生成ステップと、予め用意された第2のテンプ
レートを読み出し、該読み出した第2のテンプレートに
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、対応する前記プロ
グラムのインタフェース定義を生成するインタフェース
定義生成ステップと、インタフェース定義生成ステップ
と、を含むことを特徴とする。
【0030】上記のオブジェクト指向データベース操作
プログラム生成方法は、予め用意された第3のテンプレ
ートを読み出し、該読み出した第3のテンプレートに、
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、対応する前記外部
操作情報を生成する外部操作情報生成ステップをさらに
含むものとしてもよい。
プログラム生成方法は、予め用意された第3のテンプレ
ートを読み出し、該読み出した第3のテンプレートに、
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、対応する前記外部
操作情報を生成する外部操作情報生成ステップをさらに
含むものとしてもよい。
【0031】
【発明の実施の形態】以下、添付図面を参照して、本発
明の実施の形態について説明する。
明の実施の形態について説明する。
【0032】図1は、この実施の形態にかかるデータベ
ースアプリケーションプログラムの開発・実行環境を実
現するためのシステム構成例を示す図である。
ースアプリケーションプログラムの開発・実行環境を実
現するためのシステム構成例を示す図である。
【0033】図示するように、このシステムは、主とし
てサーバ1と、クライアント2と、プログラム自動生成
装置3とを備える。サーバ1とクライアント2とは、イ
ンターネット5を介してオートメーション通信を行う。
サーバ1とプログラム自動生成装置3とは、LAN回線
などの何らかの通信回線を介してデータ通信を行う。プ
ログラム自動生成装置3は、プログラムテンプレートフ
ァイル4を参照する機能を有する。
てサーバ1と、クライアント2と、プログラム自動生成
装置3とを備える。サーバ1とクライアント2とは、イ
ンターネット5を介してオートメーション通信を行う。
サーバ1とプログラム自動生成装置3とは、LAN回線
などの何らかの通信回線を介してデータ通信を行う。プ
ログラム自動生成装置3は、プログラムテンプレートフ
ァイル4を参照する機能を有する。
【0034】サーバ1は、プロセッサ、記憶装置及び入
出力装置を有する情報処理装置によって構成され、デー
タベース11と、API12と、サーバプログラム13
と、オートメーションサーバ14と、リモートオートメ
ーションマネージャ15との機能を含む。
出力装置を有する情報処理装置によって構成され、デー
タベース11と、API12と、サーバプログラム13
と、オートメーションサーバ14と、リモートオートメ
ーションマネージャ15との機能を含む。
【0035】データベース11は、オブジェクト指向デ
ータベースであり、クラス、クラスの属性、クラスのメ
ソッドのそれぞれの名前と型との情報でスキーマ情報を
定義する。
ータベースであり、クラス、クラスの属性、クラスのメ
ソッドのそれぞれの名前と型との情報でスキーマ情報を
定義する。
【0036】API12は、サーバプログラム13、オ
ートメーションサーバ14、或いはプログラム自動生成
装置3からデータベース11にアクセスするためのイン
タフェースである。
ートメーションサーバ14、或いはプログラム自動生成
装置3からデータベース11にアクセスするためのイン
タフェースである。
【0037】サーバプログラム13は、データベース1
1に定義されているスキーマクラスに含まれるオブジェ
クトのメソッドにメッセージを送るためのメソッドの実
装などの処理を行うためのプログラムである。
1に定義されているスキーマクラスに含まれるオブジェ
クトのメソッドにメッセージを送るためのメソッドの実
装などの処理を行うためのプログラムである。
【0038】オートメーションサーバ14は、後述する
ようにプログラム自動生成装置3によって生成されるオ
ブジェクト指向型のプログラムである(以下、オートメ
ーションサーバ14を構成するオブジェクトをオートメ
ーションオブジェクトという)。オートメーションサー
バ11は、データベース11のスキーマ情報を構成する
クラスとその属性、メソッドを、オートメーションの機
能によって外部のアプリケーションに公開する。リモー
トオートメーションマネージャ15は、既存のプログラ
ムによって実現され、インターネット5を介してオート
メーションサーバ14が公開するデータベース11のス
キーマを構成するクラス(以下、スキーマクラスとい
う)とその属性、メソッドを、クライアント2に提供す
る。
ようにプログラム自動生成装置3によって生成されるオ
ブジェクト指向型のプログラムである(以下、オートメ
ーションサーバ14を構成するオブジェクトをオートメ
ーションオブジェクトという)。オートメーションサー
バ11は、データベース11のスキーマ情報を構成する
クラスとその属性、メソッドを、オートメーションの機
能によって外部のアプリケーションに公開する。リモー
トオートメーションマネージャ15は、既存のプログラ
ムによって実現され、インターネット5を介してオート
メーションサーバ14が公開するデータベース11のス
キーマを構成するクラス(以下、スキーマクラスとい
う)とその属性、メソッドを、クライアント2に提供す
る。
【0039】クライアント2は、プロセッサ、記憶装置
及び入出力装置を有する情報処理装置によって構成さ
れ、クライアントプログラム21とリモートオートメー
ションプロキシ22の機能を含む。
及び入出力装置を有する情報処理装置によって構成さ
れ、クライアントプログラム21とリモートオートメー
ションプロキシ22の機能を含む。
【0040】クライアントプログラム21は、オートメ
ーションサーバ14が公開するデータベース11のスキ
ーマクラスとその属性、メソッドを利用する外部アプリ
ケーションとなり、サーバ1のデータベース11にアク
セスする。リモートオートメーションプロキシ22は、
既存のプログラムによって実現され、クライアントプロ
グラム21がオートメーション通信でサーバ1が提供す
る機能を利用するために用いられる。
ーションサーバ14が公開するデータベース11のスキ
ーマクラスとその属性、メソッドを利用する外部アプリ
ケーションとなり、サーバ1のデータベース11にアク
セスする。リモートオートメーションプロキシ22は、
既存のプログラムによって実現され、クライアントプロ
グラム21がオートメーション通信でサーバ1が提供す
る機能を利用するために用いられる。
【0041】プログラム自動生成装置3は、プロセッ
サ、記憶装置及び入出力装置を有する情報処理装置によ
って構成される。プログラム自動生成装置3は、データ
ベース11からAPI12を介してそのデータベース1
1に定義されているスキーマ情報を取得し、取得したス
キーマ情報とプログラムテンプレートファイル4を基に
して、オートメーション通信のためのオートメーション
サーバ14のためのプログラムを自動生成する。生成さ
れたプログラムは、さらにコンパイルされて、オートメ
ーションサーバ14となる。
サ、記憶装置及び入出力装置を有する情報処理装置によ
って構成される。プログラム自動生成装置3は、データ
ベース11からAPI12を介してそのデータベース1
1に定義されているスキーマ情報を取得し、取得したス
キーマ情報とプログラムテンプレートファイル4を基に
して、オートメーション通信のためのオートメーション
サーバ14のためのプログラムを自動生成する。生成さ
れたプログラムは、さらにコンパイルされて、オートメ
ーションサーバ14となる。
【0042】プログラムテンプレートファイル4は、後
述するオートメーションオブジェクトのプログラムを生
成するためや、後述するODL記述ファイルを生成する
ために用いられるテンプレートからなるファイルであ
る。なお、プログラムテンプレートファイル4は、プロ
グラム自動生成装置3が有する記憶装置内に記憶されて
いても、プログラム自動生成装置3の外部に設けられた
記憶装置内に記憶されていてもよい。
述するオートメーションオブジェクトのプログラムを生
成するためや、後述するODL記述ファイルを生成する
ために用いられるテンプレートからなるファイルであ
る。なお、プログラムテンプレートファイル4は、プロ
グラム自動生成装置3が有する記憶装置内に記憶されて
いても、プログラム自動生成装置3の外部に設けられた
記憶装置内に記憶されていてもよい。
【0043】以下、図1に示すクライアント2とサーバ
1とに別れたデータベース操作システムを構築する手順
について、図2のフローチャートを参照して説明する。
1とに別れたデータベース操作システムを構築する手順
について、図2のフローチャートを参照して説明する。
【0044】開発者は、まず、データベースマネジメン
トシステム(DBMS)を用いてデータベースのスキー
マを定義し、データを登録することによってデータベー
ス11を構築する(ステップS101)。
トシステム(DBMS)を用いてデータベースのスキー
マを定義し、データを登録することによってデータベー
ス11を構築する(ステップS101)。
【0045】開発者は、次に、DBMSが用意するAP
I12を用いてサーバプログラム13を作成し、データ
ベース11のスキーマクラスを構成するオブジェクトに
メッセージを送るためのメソッドを実装する(ステップ
S102)。
I12を用いてサーバプログラム13を作成し、データ
ベース11のスキーマクラスを構成するオブジェクトに
メッセージを送るためのメソッドを実装する(ステップ
S102)。
【0046】以上のステップS101で構築されるデー
タベース11、ステップS102で作成されるサーバプ
ログラム13は、既存のデータベース及びデータベース
アプリケーションを利用するものとすることができる。
タベース11、ステップS102で作成されるサーバプ
ログラム13は、既存のデータベース及びデータベース
アプリケーションを利用するものとすることができる。
【0047】次に、プログラム自動生成装置3は、デー
タベースのスキーマクラスのオートメーションサーバ1
4と、後述するクライアント2のセットアップ用に用い
られるレジストリファイルとを自動生成する(ステップ
S103)。
タベースのスキーマクラスのオートメーションサーバ1
4と、後述するクライアント2のセットアップ用に用い
られるレジストリファイルとを自動生成する(ステップ
S103)。
【0048】以後は、サーバ1の側とクライアント2の
側とに、処理が分かれる。サーバ1の側では、最初に、
オートメーションサーバ14のレジストリ登録が行われ
る(ステップS104)。このレジストリ登録の詳細に
ついては、後述する。
側とに、処理が分かれる。サーバ1の側では、最初に、
オートメーションサーバ14のレジストリ登録が行われ
る(ステップS104)。このレジストリ登録の詳細に
ついては、後述する。
【0049】サーバ1の側では、次に、リモートオート
メーションマネージャ15を実装する処理が行われる
(ステップS105)。このリモートオートメーション
マネージャ15には、既存のオートメーション通信用の
プログラムを利用することができる。また、既にサーバ
1に実装されているものを利用することもできる。リモ
ートオートメーションマネージャの実装が終了すると、
サーバ1の側におけるシステムの構築が終了する。
メーションマネージャ15を実装する処理が行われる
(ステップS105)。このリモートオートメーション
マネージャ15には、既存のオートメーション通信用の
プログラムを利用することができる。また、既にサーバ
1に実装されているものを利用することもできる。リモ
ートオートメーションマネージャの実装が終了すると、
サーバ1の側におけるシステムの構築が終了する。
【0050】クライアント2の側では、最初に、オート
メーションサーバ14のレジストリ登録が行われる(ス
テップS106)。このレジストリ登録の詳細について
は、後述する。
メーションサーバ14のレジストリ登録が行われる(ス
テップS106)。このレジストリ登録の詳細について
は、後述する。
【0051】クライアント2の側では、次に、リモート
オートメーションプロキシ22を実装する処理が行われ
る(ステップS107)。このリモートオートメーショ
ンプロキシ22には、既存のオートメーション通信用の
プログラムを利用することができる。また、既にクライ
アント2に実装されているものを利用することもでき
る。
オートメーションプロキシ22を実装する処理が行われ
る(ステップS107)。このリモートオートメーショ
ンプロキシ22には、既存のオートメーション通信用の
プログラムを利用することができる。また、既にクライ
アント2に実装されているものを利用することもでき
る。
【0052】クライアント2の側では、次に、オートメ
ーションの機能をサポートする開発言語を用いて、イン
ターネット5を介してオートメーションサーバ14を操
作するための、クライアントプログラム21が作成され
る(ステップS108)。クライアントプログラム21
が作成されると、クライアント2の側におけるシステム
の構築の処理が終了する。
ーションの機能をサポートする開発言語を用いて、イン
ターネット5を介してオートメーションサーバ14を操
作するための、クライアントプログラム21が作成され
る(ステップS108)。クライアントプログラム21
が作成されると、クライアント2の側におけるシステム
の構築の処理が終了する。
【0053】以下、図1のプログラム自動生成装置3に
よるオートメーションサーバ14及びレジストリファイ
ルの生成の処理(ステップS103)の概要について、
図3のフローチャートを参照して説明する。
よるオートメーションサーバ14及びレジストリファイ
ルの生成の処理(ステップS103)の概要について、
図3のフローチャートを参照して説明する。
【0054】プログラム自動生成装置3は、最初に、開
発者が入力装置を操作することによって、初期設定値を
入力する(ステップS201)。
発者が入力装置を操作することによって、初期設定値を
入力する(ステップS201)。
【0055】ここで、入力する初期設定項目としては、
例えば、生成すべきオートメーションサーバ13の名
前、スキーマ情報を読み込むデータベース11の名
前、生成されたオートメーションサーバ13で公開さ
れるクラスとなるオートメーションオブジェクトの名
前、サーバ1との間の通信プロトコル種別、サーバ
1のネットワークアドレス、などがある。
例えば、生成すべきオートメーションサーバ13の名
前、スキーマ情報を読み込むデータベース11の名
前、生成されたオートメーションサーバ13で公開さ
れるクラスとなるオートメーションオブジェクトの名
前、サーバ1との間の通信プロトコル種別、サーバ
1のネットワークアドレス、などがある。
【0056】プログラム自動生成装置3は、次に、AP
I12を介して登録されているクラス、クラスの属性、
クラスのメソッドのそれぞれの名前と型の情報からなる
データベース11のスキーマ情報を読み込む(ステップ
S202)。ステップS202の処理を終了すると、プ
ログラム自動生成装置3は、次に、ステップS203、
S204、S206の処理を並行して行う。
I12を介して登録されているクラス、クラスの属性、
クラスのメソッドのそれぞれの名前と型の情報からなる
データベース11のスキーマ情報を読み込む(ステップ
S202)。ステップS202の処理を終了すると、プ
ログラム自動生成装置3は、次に、ステップS203、
S204、S206の処理を並行して行う。
【0057】ステップS203では、プログラム自動生
成装置3は、プログラムテンプレートファイル4中のオ
ートメーションオブジェクトに対応するテンプレートと
なるファイルに、ステップS202で取得したスキーマ
情報のコードを挿入することによって、オートメーショ
ンオブジェクトプログラムD201を生成する。
成装置3は、プログラムテンプレートファイル4中のオ
ートメーションオブジェクトに対応するテンプレートと
なるファイルに、ステップS202で取得したスキーマ
情報のコードを挿入することによって、オートメーショ
ンオブジェクトプログラムD201を生成する。
【0058】ステップS204では、プログラム自動生
成装置3は、プログラムテンプレートファイル4中のO
DL記述ファイルのテンプレートとなるファイルに、ス
テップS202で取得したスキーマ情報のコードを挿入
することによって、ODL記述ファイルD202を生成
する。
成装置3は、プログラムテンプレートファイル4中のO
DL記述ファイルのテンプレートとなるファイルに、ス
テップS202で取得したスキーマ情報のコードを挿入
することによって、ODL記述ファイルD202を生成
する。
【0059】ステップS203とS204の両方の処理
が終了すると、プログラム自動生成装置3は、オートメ
ーションオブジェクトプログラムD201と、ODL記
述ファイルD202と、サーバプログラムD203と、
その他のオートメーションやサーバに必要なプログラム
D204とを、それぞれプログラム開発言語環境に応じ
たコンパイラを用いてコンパイルし、さらにリンケージ
エディタを用いてリンクする(ステップS205)。こ
れにより、オートメーションサーバ14のプログラムが
生成される。
が終了すると、プログラム自動生成装置3は、オートメ
ーションオブジェクトプログラムD201と、ODL記
述ファイルD202と、サーバプログラムD203と、
その他のオートメーションやサーバに必要なプログラム
D204とを、それぞれプログラム開発言語環境に応じ
たコンパイラを用いてコンパイルし、さらにリンケージ
エディタを用いてリンクする(ステップS205)。こ
れにより、オートメーションサーバ14のプログラムが
生成される。
【0060】ここで、サーバプログラムD203は、図
1のサーバプログラム13に相当するものである。その
他のオートメーションサーバに必要なプログラムD20
4は、開発者が用いるサーバ1やプログラム開発言語環
境に特有のプログラムである。
1のサーバプログラム13に相当するものである。その
他のオートメーションサーバに必要なプログラムD20
4は、開発者が用いるサーバ1やプログラム開発言語環
境に特有のプログラムである。
【0061】一方、ステップS206では、プログラム
自動生成装置3は、クライアント2からサーバ2に接続
するためのレジストリファイルD205を生成する。
自動生成装置3は、クライアント2からサーバ2に接続
するためのレジストリファイルD205を生成する。
【0062】以上の処理によって、オートメーションサ
ーバ14のプログラムと、レジストリファイルD205
とが生成されると、このフローチャートの処理を終了す
る。
ーバ14のプログラムと、レジストリファイルD205
とが生成されると、このフローチャートの処理を終了す
る。
【0063】以下、図3のフローチャートにおける各ス
テップの処理について、詳細に説明する。
テップの処理について、詳細に説明する。
【0064】まず、ステップS202のAPI12から
スキーマ情報を読み込む処理について説明する。ここで
は、プログラム自動生成装置3は、データベース11が
稼働していることを条件として、データベース11に登
録されているスキーマクラスをすべて取得することがで
きるAPIやAPI群、或いはクラス毎にそのすべての
属性の名前と型とアクセス識別子、さらにすべてのメソ
ッドの名前と返却値の型と、すべての引数の型と、アク
セス識別子とを取得することができるAPIやAPI群
をAPI12として用いて、データベース11からスキ
ーマ情報を読み込む。
スキーマ情報を読み込む処理について説明する。ここで
は、プログラム自動生成装置3は、データベース11が
稼働していることを条件として、データベース11に登
録されているスキーマクラスをすべて取得することがで
きるAPIやAPI群、或いはクラス毎にそのすべての
属性の名前と型とアクセス識別子、さらにすべてのメソ
ッドの名前と返却値の型と、すべての引数の型と、アク
セス識別子とを取得することができるAPIやAPI群
をAPI12として用いて、データベース11からスキ
ーマ情報を読み込む。
【0065】次に、ステップS203のオートメーショ
ンプログラムオブジェクトのプログラムD201を生成
する処理について説明する。ステップS203では、
プロパティ、メソッド、コンストラクタに分けて、
オートメーションオブジェクトD201が生成される。
ンプログラムオブジェクトのプログラムD201を生成
する処理について説明する。ステップS203では、
プロパティ、メソッド、コンストラクタに分けて、
オートメーションオブジェクトD201が生成される。
【0066】のプロパティを生成するとき、プロパテ
ィの値の取得と設定を実現しなければならないので、取
得関数と設定関数とが用意される。以下、それぞれの関
数の生成手順について、図4と図5のフローチャートを
参照して説明する。
ィの値の取得と設定を実現しなければならないので、取
得関数と設定関数とが用意される。以下、それぞれの関
数の生成手順について、図4と図5のフローチャートを
参照して説明する。
【0067】なお、以下の説明において、Varian
t型とは、数値型、バイト型、文字列型、ブール型、日
付型、通貨型、オブジェクト型などの数種類の型が定義
されている共用体を持ち、その共用体で変数値の型を設
定できる型のことを言う。
t型とは、数値型、バイト型、文字列型、ブール型、日
付型、通貨型、オブジェクト型などの数種類の型が定義
されている共用体を持ち、その共用体で変数値の型を設
定できる型のことを言う。
【0068】プロパティの取得関数を生成する場合は、
図4のフローチャートに示すように、プログラム自動生
成装置3は、まず、戻り値をVariant型で変数宣
言し、その変数の型を上記のいずれかのうちの1つに設
定する(ステップS301)。ここで、設定する変数の
型は、ステップS202でAPI12を介してデータベ
ース11から取得したスキーマ情報中のクラスの属性の
型によって判断される。
図4のフローチャートに示すように、プログラム自動生
成装置3は、まず、戻り値をVariant型で変数宣
言し、その変数の型を上記のいずれかのうちの1つに設
定する(ステップS301)。ここで、設定する変数の
型は、ステップS202でAPI12を介してデータベ
ース11から取得したスキーマ情報中のクラスの属性の
型によって判断される。
【0069】例えば、クラスの属性の型がchar*型
であったならば、変数の型は文字列型を表すVT_BS
TRに設定される。或いは、クラスの属性の型がint
型であったならば、変数の型は、数値型のうちの整数型
を表すVT_I2(或いは長整数型VT_I4)に設定
される。クラスの属性の型が他のクラスのオブジェクト
を指すポインタ型であったならば、変数の型は、オブジ
ェクト型を表すVT_DISPATCHに設定される。
であったならば、変数の型は文字列型を表すVT_BS
TRに設定される。或いは、クラスの属性の型がint
型であったならば、変数の型は、数値型のうちの整数型
を表すVT_I2(或いは長整数型VT_I4)に設定
される。クラスの属性の型が他のクラスのオブジェクト
を指すポインタ型であったならば、変数の型は、オブジ
ェクト型を表すVT_DISPATCHに設定される。
【0070】プログラム自動生成装置3は、次に、DB
MSのAPI12を介してデータベース11にアクセス
し、データベース11に格納されている目的とするオブ
ジェクトの属性値を取得する(ステップS302)。
MSのAPI12を介してデータベース11にアクセス
し、データベース11に格納されている目的とするオブ
ジェクトの属性値を取得する(ステップS302)。
【0071】プログラム自動生成装置3は、次に、ステ
ップS302で取得した属性値を、ステップS301で
変数宣言した変数に設定した型で代入する。この代入の
結果、返却された値がプロパティの取得関数のプロパテ
ィ値となる(ステップS303)。そして、プロパティ
の取得関数の生成の処理を終了する。
ップS302で取得した属性値を、ステップS301で
変数宣言した変数に設定した型で代入する。この代入の
結果、返却された値がプロパティの取得関数のプロパテ
ィ値となる(ステップS303)。そして、プロパティ
の取得関数の生成の処理を終了する。
【0072】プロパティの設定関数を生成する場合は、
図5のフローチャートに示すように、プログラム自動生
成装置3は、最初に、関数内で有効なローカル変数を、
関数言語で指定される型、すなわち対象とする属性の型
で宣言する(ステップS401)。
図5のフローチャートに示すように、プログラム自動生
成装置3は、最初に、関数内で有効なローカル変数を、
関数言語で指定される型、すなわち対象とする属性の型
で宣言する(ステップS401)。
【0073】プログラム自動生成装置3は、次に、ステ
ップS401で指定されたVariant型の引数を取
り出し、それをステップS401で宣言したローカル変
数に代入する(ステップS402)。
ップS401で指定されたVariant型の引数を取
り出し、それをステップS401で宣言したローカル変
数に代入する(ステップS402)。
【0074】プログラム自動生成装置3は、次に、AP
I12を介してデータベース11にアクセスし、データ
ベース11に格納されている目的とするオブジェクトの
属性値に、ローカル変数の値を代入(またはコピー)す
る(ステップS403)。
I12を介してデータベース11にアクセスし、データ
ベース11に格納されている目的とするオブジェクトの
属性値に、ローカル変数の値を代入(またはコピー)す
る(ステップS403)。
【0075】プログラム自動生成装置3は、さらに、A
PI12を介してデータベース11にオブジェクトの属
性を更新したことを通知し、これによってプロパティ値
をデータベース11に格納されている目的とするオブジ
ェクトの属性に反映させて、更新させるためのプログラ
ムとして必要となるコードを生成する(ステップS40
4)。そして、プロパティの設定関数の生成の処理を終
了する。
PI12を介してデータベース11にオブジェクトの属
性を更新したことを通知し、これによってプロパティ値
をデータベース11に格納されている目的とするオブジ
ェクトの属性に反映させて、更新させるためのプログラ
ムとして必要となるコードを生成する(ステップS40
4)。そして、プロパティの設定関数の生成の処理を終
了する。
【0076】のオートメーションオブジェクトのメソ
ッドの生成手順について、図6のフローチャートを参照
して、詳しく説明する。
ッドの生成手順について、図6のフローチャートを参照
して、詳しく説明する。
【0077】プログラム自動生成装置3は、まず、関数
内で有効となるVariant型のローカル変数を宣言
し、メソッドからの戻り値の型に対応するVarian
t型の型を設定する(ステップS501)。
内で有効となるVariant型のローカル変数を宣言
し、メソッドからの戻り値の型に対応するVarian
t型の型を設定する(ステップS501)。
【0078】プログラム自動生成装置3は、次に、各引
数毎に対応する開発言語仕様の型のローカル変数を用意
し、その変数にそれぞれのVariant型の引数の値
を代入する(ステップS502)。
数毎に対応する開発言語仕様の型のローカル変数を用意
し、その変数にそれぞれのVariant型の引数の値
を代入する(ステップS502)。
【0079】プログラム自動生成装置3は、次に、各引
数が代入されたローカル変数の値をパラメータ値とし
て、API12を介してデータベース11に定義されて
いるクラスのメソッドを実行させる(ステップS50
3)。
数が代入されたローカル変数の値をパラメータ値とし
て、API12を介してデータベース11に定義されて
いるクラスのメソッドを実行させる(ステップS50
3)。
【0080】プログラム自動生成装置3は、次に、ステ
ップS503でのメソッドの実行の結果、値が変わった
ローカル変数の値を、対応する型でVariant型の
引数の値に代入し、メソッドに実行による値の変化を反
映させる(ステップS504)。
ップS503でのメソッドの実行の結果、値が変わった
ローカル変数の値を、対応する型でVariant型の
引数の値に代入し、メソッドに実行による値の変化を反
映させる(ステップS504)。
【0081】プログラム自動生成装置3は、さらに、ス
テップS503でのメソッドの実行後に返却された値
を、ステップS501で用意したVariant型のロ
ーカル変数に、対応する型で代入し、それをオートメー
ションメソッドの返却値とする(ステップS505)。
そして、このフローチャートの処理を終了する。
テップS503でのメソッドの実行後に返却された値
を、ステップS501で用意したVariant型のロ
ーカル変数に、対応する型で代入し、それをオートメー
ションメソッドの返却値とする(ステップS505)。
そして、このフローチャートの処理を終了する。
【0082】のオートメーションオブジェクトのコン
ストラクタの生成手順について、詳しく説明する。
ストラクタの生成手順について、詳しく説明する。
【0083】オートメーションオブジェクトは、データ
ベース11のスキーマクラスを代理するものなので、プ
ログラム自動生成装置3は、オートメーションオブジェ
クトのクラス定義に、そのスキーマクラスの参照型(ポ
インタ型)のオブジェクトを保持するメンバ変数の宣言
を自動生成する。
ベース11のスキーマクラスを代理するものなので、プ
ログラム自動生成装置3は、オートメーションオブジェ
クトのクラス定義に、そのスキーマクラスの参照型(ポ
インタ型)のオブジェクトを保持するメンバ変数の宣言
を自動生成する。
【0084】そして、プログラム自動生成装置3は、ス
キーマクラスの参照型のオブジェクトを生成し、生成し
たオブジェクトにメンバ変数を代入する文を挿入するこ
とによって、オートメーションオブジェクトのコンスト
ラクタを生成する。
キーマクラスの参照型のオブジェクトを生成し、生成し
たオブジェクトにメンバ変数を代入する文を挿入するこ
とによって、オートメーションオブジェクトのコンスト
ラクタを生成する。
【0085】オートメーションオブジェクトのコンスト
ラクタは、クライアントプログラム21からオートメー
ションオブジェクトのオブジェクト型変数の宣言があっ
たときに呼び出される。従って、クライアント2の側で
扱うオブジェクト型の変数は、スキーマクラスの参照型
のオブジェクトということになる。
ラクタは、クライアントプログラム21からオートメー
ションオブジェクトのオブジェクト型変数の宣言があっ
たときに呼び出される。従って、クライアント2の側で
扱うオブジェクト型の変数は、スキーマクラスの参照型
のオブジェクトということになる。
【0086】もっとも、スキーマクラスの参照型は、デ
ータベース11のオブジェクトを指すポインタであるの
で、オートメーションオブジェクトのコンストラクタが
呼ばれるときに、スキーマクラスのオブジェクトが生成
される訳ではない。つまり、オートメーションオブジェ
クトのコンストラクタとスキーマクラスのコンストラク
タとは異なるものであり、スキーマクラスのオブジェク
トの生成とそれに伴うコンストラクタの呼び出しは、別
にメンバ関数を用意することによって対応が図られてい
る。
ータベース11のオブジェクトを指すポインタであるの
で、オートメーションオブジェクトのコンストラクタが
呼ばれるときに、スキーマクラスのオブジェクトが生成
される訳ではない。つまり、オートメーションオブジェ
クトのコンストラクタとスキーマクラスのコンストラク
タとは異なるものであり、スキーマクラスのオブジェク
トの生成とそれに伴うコンストラクタの呼び出しは、別
にメンバ関数を用意することによって対応が図られてい
る。
【0087】次に、ステップS204のオートメーショ
ンサーバのODL記述ファイルD202を生成する処理
について、図7のフローチャートを参照して説明する。
この処理は、図3のステップS202で、API12を
介してデータベース11から読み込んだスキーマクラス
のすべての情報に対して適用される。
ンサーバのODL記述ファイルD202を生成する処理
について、図7のフローチャートを参照して説明する。
この処理は、図3のステップS202で、API12を
介してデータベース11から読み込んだスキーマクラス
のすべての情報に対して適用される。
【0088】プログラム自動生成装置3は、まず、CO
MのAPIである“CoCreateGuidを用いて、各クラス毎
にディスパッチインタフェース用のIDを割り当て、O
DL記述ファイルに記述する(ステップS601)。
MのAPIである“CoCreateGuidを用いて、各クラス毎
にディスパッチインタフェース用のIDを割り当て、O
DL記述ファイルに記述する(ステップS601)。
【0089】プログラム自動生成装置3は、次に、ディ
スパッチインタフェースの名前としてスキーマクラスの
名前に接頭語“I”を付け足した名前を用いて、ODL
記述ファイルの“dispinterface”文を記述する。“dis
pinterface”文では、“properties”と“methods”と
を記述するが、ここでは、スキーマクラスの属性名とメ
ソッドとがそのまま用いられる。また、返却値の型は、
すべてVariant型で、引数の型はすべてVari
antのアドレスの型で宣言される。また、“properti
es”と“methods”とのDISPIDには、1から通し
番号が付けられる(ステップS602)。
スパッチインタフェースの名前としてスキーマクラスの
名前に接頭語“I”を付け足した名前を用いて、ODL
記述ファイルの“dispinterface”文を記述する。“dis
pinterface”文では、“properties”と“methods”と
を記述するが、ここでは、スキーマクラスの属性名とメ
ソッドとがそのまま用いられる。また、返却値の型は、
すべてVariant型で、引数の型はすべてVari
antのアドレスの型で宣言される。また、“properti
es”と“methods”とのDISPIDには、1から通し
番号が付けられる(ステップS602)。
【0090】プログラム自動生成装置3は、次に、“Co
CreateGuid”を用いて各クラス毎にオートメーションオ
ブジェクト用のIDを割り当て、ODL記述ファイルに
記述する(ステップS603)。
CreateGuid”を用いて各クラス毎にオートメーションオ
ブジェクト用のIDを割り当て、ODL記述ファイルに
記述する(ステップS603)。
【0091】プログラム自動生成装置3は、さらに、
“dispinterface”文と1対1で対応するように、m同
じスキーマの名前で“coclass”文を記述する。“cocla
ss”文の中には、その“coclass”の名前に接頭語
“I”を付けた“dispinterface”文をサポートする宣
言を記述する(ステップS604)。そして、このフロ
ーチャートの処理を終了する。
“dispinterface”文と1対1で対応するように、m同
じスキーマの名前で“coclass”文を記述する。“cocla
ss”文の中には、その“coclass”の名前に接頭語
“I”を付けた“dispinterface”文をサポートする宣
言を記述する(ステップS604)。そして、このフロ
ーチャートの処理を終了する。
【0092】次に、ステップS206のクライアントセ
ットアップ用のレジストリファイルD205を生成する
処理について、説明する。
ットアップ用のレジストリファイルD205を生成する
処理について、説明する。
【0093】ステップS206で生成されるレジストリ
ファイルD205は、例えば、Windows95やW
indowsNT(いずれも登録商標)のレジストリエ
ディタで、クライアン2のレジストリなどにオートメー
ションサーバ14の情報を登録するために用いられる。
ファイルD205は、例えば、Windows95やW
indowsNT(いずれも登録商標)のレジストリエ
ディタで、クライアン2のレジストリなどにオートメー
ションサーバ14の情報を登録するために用いられる。
【0094】レジストリに登録すべきオートメーション
サーバ14の情報には、オートメーションオブジェクト
毎に、オートメーションサーバの名前、オートメー
ションオブジェクトの名前、クラスID、通信プロ
トコル種別、ネットワークアドレス(IPアドレ
ス)、クライアントプログラム21の実行時に必要な
ダイナミックリンクライブラリなどが含まれる。
サーバ14の情報には、オートメーションオブジェクト
毎に、オートメーションサーバの名前、オートメー
ションオブジェクトの名前、クラスID、通信プロ
トコル種別、ネットワークアドレス(IPアドレ
ス)、クライアントプログラム21の実行時に必要な
ダイナミックリンクライブラリなどが含まれる。
【0095】このうち、〜は、ステップS201で
初期設定入力された情報と、ステップS202で読み出
されたスキーマ情報とから取得される。は、固定的な
ものであり、プログラムテンプレートファイル4中のレ
ジストリファイルのテンプレートファイルに記述するこ
とによって用意される。
初期設定入力された情報と、ステップS202で読み出
されたスキーマ情報とから取得される。は、固定的な
ものであり、プログラムテンプレートファイル4中のレ
ジストリファイルのテンプレートファイルに記述するこ
とによって用意される。
【0096】プログラム自動生成装置3は、プログラム
テンプレートファイル4中のレジストリファイルのテン
プレートとなるファイルに、これらの情報のコードを挿
入することによってレジストリファイルD205を生成
する。
テンプレートファイル4中のレジストリファイルのテン
プレートとなるファイルに、これらの情報のコードを挿
入することによってレジストリファイルD205を生成
する。
【0097】以下、図3のフローチャートにおけるサー
バ1の側でのオートメーションサーバ14のレジストリ
登録(ステップS105)、及びクライアント2の側で
のオートメーションサーバ14のレジストリ登録と接続
設定(ステップS107)の手順について、詳しく説明
する。
バ1の側でのオートメーションサーバ14のレジストリ
登録(ステップS105)、及びクライアント2の側で
のオートメーションサーバ14のレジストリ登録と接続
設定(ステップS107)の手順について、詳しく説明
する。
【0098】ステップS105において、レジストリ登
録される情報は、図2のステップS206で生成された
レジストリファイルD205に含まれる情報のうちの
オートメーションサーバの名前、オートメーションオ
ブジェクトの名前、クラスIDである。これらの情報
は、通常、オートメーションサーバ14の起動時に実行
されるレジストリ登録用のAPIによってオートメーシ
ョンサーバ14のレジストリに登録することができる。
録される情報は、図2のステップS206で生成された
レジストリファイルD205に含まれる情報のうちの
オートメーションサーバの名前、オートメーションオ
ブジェクトの名前、クラスIDである。これらの情報
は、通常、オートメーションサーバ14の起動時に実行
されるレジストリ登録用のAPIによってオートメーシ
ョンサーバ14のレジストリに登録することができる。
【0099】ステップS107において、図2のステッ
プS206で生成されたレジストリファイルD205に
含まれる情報が、例えば、Windows95やWin
dowsNTのレジストリエディタに読み込ませて、ク
ライアントプログラム21のレジストリに登録される。
なお、通信プロトコル種別やネットワークアドレスなど
のサーバ1への接続に関する設定は、レジストリファイ
ルD205をクライアント21のレジストリに登録した
後でも、例えば、リモートオートメーション接続マネー
ジャなどを用いて変更することが可能である。
プS206で生成されたレジストリファイルD205に
含まれる情報が、例えば、Windows95やWin
dowsNTのレジストリエディタに読み込ませて、ク
ライアントプログラム21のレジストリに登録される。
なお、通信プロトコル種別やネットワークアドレスなど
のサーバ1への接続に関する設定は、レジストリファイ
ルD205をクライアント21のレジストリに登録した
後でも、例えば、リモートオートメーション接続マネー
ジャなどを用いて変更することが可能である。
【0100】以下、上記のようにして構築したシステム
で実行されるデータベースアプリケーションプログラム
で、オブジェクトの多相性が如何にして実現されている
かについて、詳しく説明する。
で実行されるデータベースアプリケーションプログラム
で、オブジェクトの多相性が如何にして実現されている
かについて、詳しく説明する。
【0101】この実施の形態のシステムにおいて、多相
性プログラムの実現方法は、オートメーションオブジェ
クトに多相性を実現すべきオブジェクトのクラス名を記
録させる属性を追加し、プログラムの実行時には、オー
トメーションオブジェクトは、その属性から得たクラス
名によって当該オブジェクトのメソッドを呼び出すとい
う考え方に基づいている。
性プログラムの実現方法は、オートメーションオブジェ
クトに多相性を実現すべきオブジェクトのクラス名を記
録させる属性を追加し、プログラムの実行時には、オー
トメーションオブジェクトは、その属性から得たクラス
名によって当該オブジェクトのメソッドを呼び出すとい
う考え方に基づいている。
【0102】また、オートメーションサーバ14が公開
するオートメーションオブジェクトの引数の型をすべて
Variant型とし、そのVariant型の変数値
の型をオートメーションサーバ14が判別することによ
って、適切なメソッドを呼び出している。以下、メソッ
ドの多重定義の場合と、仮想関数との場合に分けて、多
相性の実現方法を詳しく説明する。
するオートメーションオブジェクトの引数の型をすべて
Variant型とし、そのVariant型の変数値
の型をオートメーションサーバ14が判別することによ
って、適切なメソッドを呼び出している。以下、メソッ
ドの多重定義の場合と、仮想関数との場合に分けて、多
相性の実現方法を詳しく説明する。
【0103】オブジェクトの多相性を実現するために、
オートメーションオブジェクトは、引数の型及び/また
は個数が異なるメソッドを複数定義している。ここで、
メソッドの引数の最小個数をm(自然数)、最大個数を
M(自然数)とすると、ODL記述ファイルは、Va
riant型の戻り値、メソッド名、M個のVar
iant型の引数、M−m個のoptionalパラ
メータを指定したVariant型の引数によってメソ
ッドを定義する。
オートメーションオブジェクトは、引数の型及び/また
は個数が異なるメソッドを複数定義している。ここで、
メソッドの引数の最小個数をm(自然数)、最大個数を
M(自然数)とすると、ODL記述ファイルは、Va
riant型の戻り値、メソッド名、M個のVar
iant型の引数、M−m個のoptionalパラ
メータを指定したVariant型の引数によってメソ
ッドを定義する。
【0104】のoptionalパラメータは、オー
トメーションメソッドの呼び出し時に、パラメータによ
って対応する引数の値を省略すべきことを示すものであ
る。但し、optionalパラメータによる指定は、
すべてVariant型の引数でなければならないとい
う制限がある。
トメーションメソッドの呼び出し時に、パラメータによ
って対応する引数の値を省略すべきことを示すものであ
る。但し、optionalパラメータによる指定は、
すべてVariant型の引数でなければならないとい
う制限がある。
【0105】次に、仮想関数の場合、仮想関数は、サー
バ1のが側の開発言語や、データベース11にアクセス
するためのAPI12がサポートしているので、仲介者
となるオートメーションサーバ14は、クライアントプ
ログラム21がどのオブジェクトのメソッドを呼び出し
たのかをサーバプログラム13に渡せばよいこととな
る。
バ1のが側の開発言語や、データベース11にアクセス
するためのAPI12がサポートしているので、仲介者
となるオートメーションサーバ14は、クライアントプ
ログラム21がどのオブジェクトのメソッドを呼び出し
たのかをサーバプログラム13に渡せばよいこととな
る。
【0106】仮想関数の処理においては、“virtual”
で定義しているメンバ変数をもつ親クラス(スーパーク
ラス)のオブジェクトと、その親クラスから派生したク
ラス(派生クラス:サブクラス)のオブジェクト間の実
行時の切換が重要となる。
で定義しているメンバ変数をもつ親クラス(スーパーク
ラス)のオブジェクトと、その親クラスから派生したク
ラス(派生クラス:サブクラス)のオブジェクト間の実
行時の切換が重要となる。
【0107】仮想関数の運用において、まず、親クラス
のオブジェクトへのポインタを宣言し、そのポインタに
対してメンバ関数の呼び出しが記述される。そして、実
行時に、そのポインタが指すオブジェクトの実体(イン
スタンス)が、親クラスのオブジェクトであるか派生ク
ラスのオブジェクトかをシステムが判断し、そのどちら
か一方の正しいオブジェクトのメソッドが呼び出され
る。
のオブジェクトへのポインタを宣言し、そのポインタに
対してメンバ関数の呼び出しが記述される。そして、実
行時に、そのポインタが指すオブジェクトの実体(イン
スタンス)が、親クラスのオブジェクトであるか派生ク
ラスのオブジェクトかをシステムが判断し、そのどちら
か一方の正しいオブジェクトのメソッドが呼び出され
る。
【0108】この実施の形態のシステムにおいては、ク
ライアント2の側で用いられるオートメーションオブジ
ェクトは、オートメーションサーバ14においてスキー
マクラスのオブジェクトを指すポインタとして実装され
ている。従って、オートメーションサーバ14が仮想関
数の処理を正しく中継するためには、クライアント2の
側で親クラスのオブジェクト型変数の実体が実行時に派
生クラスのオブジェクト型変数に置き換わったときに、
オートメーションサーバ14も同様のポインタの置き換
えを行えばよい。
ライアント2の側で用いられるオートメーションオブジ
ェクトは、オートメーションサーバ14においてスキー
マクラスのオブジェクトを指すポインタとして実装され
ている。従って、オートメーションサーバ14が仮想関
数の処理を正しく中継するためには、クライアント2の
側で親クラスのオブジェクト型変数の実体が実行時に派
生クラスのオブジェクト型変数に置き換わったときに、
オートメーションサーバ14も同様のポインタの置き換
えを行えばよい。
【0109】この実施の形態のシステムでは、このポイ
ンタの置き換えについて、ポインタ型の代入演算子の代
わりとなるメンバ関数を親クラスのオートメーションオ
ブジェクトに用意することによって、対応している。こ
のメンバ関数は、派生クラスのオブジェクト変数を引数
にとり、そのメンバ関数が呼ばれる親クラスのオブジェ
クトへのポインタを、引数である派生クラスのオブジェ
クトのポインタに置き換える処理を行うものである。
ンタの置き換えについて、ポインタ型の代入演算子の代
わりとなるメンバ関数を親クラスのオートメーションオ
ブジェクトに用意することによって、対応している。こ
のメンバ関数は、派生クラスのオブジェクト変数を引数
にとり、そのメンバ関数が呼ばれる親クラスのオブジェ
クトへのポインタを、引数である派生クラスのオブジェ
クトのポインタに置き換える処理を行うものである。
【0110】この処理によって、クライアントプログラ
ム21で親クラスのオブジェクトからのメンバ変数の呼
び出しが記述されていても、そのオブジェクトの実体を
実行時に置き換えることが可能となり、オートメーショ
ンサーバ14において、仮想関数の振る舞いを実現する
ことが可能となる。
ム21で親クラスのオブジェクトからのメンバ変数の呼
び出しが記述されていても、そのオブジェクトの実体を
実行時に置き換えることが可能となり、オートメーショ
ンサーバ14において、仮想関数の振る舞いを実現する
ことが可能となる。
【0111】以下、上記のようにして構築したシステム
において、クライアントプログラム21からデータベー
ス11へアクセスするための処理について、図8のシー
ケンス図を参照して説明する。
において、クライアントプログラム21からデータベー
ス11へアクセスするための処理について、図8のシー
ケンス図を参照して説明する。
【0112】なお、ここで、クライアントプログラム2
1とオートメーションサーバ14との間の通信は、リモ
ートオートメーションプロキシ22とリモートオートメ
ーションマネージャ15とを用い、インターネット5を
介して行われる。また、オートメーションサーバ14或
いはサーバプログラム13とデータベース11との間の
データのやり取りは、API12を介して行われる。
1とオートメーションサーバ14との間の通信は、リモ
ートオートメーションプロキシ22とリモートオートメ
ーションマネージャ15とを用い、インターネット5を
介して行われる。また、オートメーションサーバ14或
いはサーバプログラム13とデータベース11との間の
データのやり取りは、API12を介して行われる。
【0113】以下、図8のシーケンス図に示す処理にお
いて、オートメーションサーバ14が実行する処理の詳
細について、図9のフローチャートを参照して説明す
る。
いて、オートメーションサーバ14が実行する処理の詳
細について、図9のフローチャートを参照して説明す
る。
【0114】オートメーションサーバ14は、まず、ク
ライアントプログラム21から呼び出されたメソッドの
引数の個数をチェックし、引数が1つ以上あるかどうか
を判定する(ステップS701)。
ライアントプログラム21から呼び出されたメソッドの
引数の個数をチェックし、引数が1つ以上あるかどうか
を判定する(ステップS701)。
【0115】ステップS701で引数が1つ以上ない、
すなわち引数がないと判定されたときは、オートメーシ
ョンサーバ14は、引数なしのメソッドを呼び出す(ス
テップS702)。そして、このフローチャートの処理
を終了する。
すなわち引数がないと判定されたときは、オートメーシ
ョンサーバ14は、引数なしのメソッドを呼び出す(ス
テップS702)。そして、このフローチャートの処理
を終了する。
【0116】ステップS711で引数が1つ以上あると
判定されたときは、オートメーションサーバは、メソッ
ドの第1引数の値からすべての引数の値の処理が終了す
るまで、ステップS703−S703’のループの処理
を繰り返す。もっとも、後述するように、すべての引数
の値の処理を終了する前に、このループから抜け出す場
合はある。
判定されたときは、オートメーションサーバは、メソッ
ドの第1引数の値からすべての引数の値の処理が終了す
るまで、ステップS703−S703’のループの処理
を繰り返す。もっとも、後述するように、すべての引数
の値の処理を終了する前に、このループから抜け出す場
合はある。
【0117】ステップS703−S703’のループの
処理では、オートメーションサーバ14は、まず、メソ
ッドの引数がoptional指定されているかどうか
を判定する(ステップS704)。
処理では、オートメーションサーバ14は、まず、メソ
ッドの引数がoptional指定されているかどうか
を判定する(ステップS704)。
【0118】ステップS704でメソッドの引数がop
tional指定されていると判定されたときは、オー
トメーションサーバ14は、optional指定の値
が設定されているかどうかを判定する(ステップS70
5)。
tional指定されていると判定されたときは、オー
トメーションサーバ14は、optional指定の値
が設定されているかどうかを判定する(ステップS70
5)。
【0119】ステップS705でoptional指定
の値が設定されていないと判定されたときは、このルー
プを抜けて、後述するステップS711に進む。ステッ
プS705でoptional指定の値が設定されてい
ると判定されたときは、ステップS706に進む。ま
た、ステップS704でメソッドの引数がoption
al指定されていないと判定されたときも、後述するス
テップS706に進む。
の値が設定されていないと判定されたときは、このルー
プを抜けて、後述するステップS711に進む。ステッ
プS705でoptional指定の値が設定されてい
ると判定されたときは、ステップS706に進む。ま
た、ステップS704でメソッドの引数がoption
al指定されていないと判定されたときも、後述するス
テップS706に進む。
【0120】ステップS706では、オートメーション
サーバ14は、Variant型引数の値がどのような
型であるかをチェックする。オートメーションサーバ1
4は、さらにステップS706でチェックした引数の型
がオブジェクト型であるかどうかを判定する(ステップ
S707)。
サーバ14は、Variant型引数の値がどのような
型であるかをチェックする。オートメーションサーバ1
4は、さらにステップS706でチェックした引数の型
がオブジェクト型であるかどうかを判定する(ステップ
S707)。
【0121】ステップS707で引数の型がオブジェク
ト型であると判定されたときは、オートメーションサー
バ14は、Variant型のオブジェクト型の変数の
クラス名を、各クラスで実現されているオブジェクト自
身にそのオブジェクトのクラス名を記録させておくリフ
レクションの機能を用いて、チェックする(ステップS
708)。
ト型であると判定されたときは、オートメーションサー
バ14は、Variant型のオブジェクト型の変数の
クラス名を、各クラスで実現されているオブジェクト自
身にそのオブジェクトのクラス名を記録させておくリフ
レクションの機能を用いて、チェックする(ステップS
708)。
【0122】オートメーションサーバ14は、さらに、
クラス名に対応するスキーマクラスのオブジェクトを宣
言し、宣言したオブジェクトに、ステップS707で判
定されたオブジェクト型の引数を代入する(ステップS
709)。ステップS709の処理が終了すると、メソ
ッドに次の引数があればその引数についてのループ(S
703−S703’)の処理に、次の引数がなければ、
ループ(S703−S703’)を抜けて、ステップS
711の処理に進む。
クラス名に対応するスキーマクラスのオブジェクトを宣
言し、宣言したオブジェクトに、ステップS707で判
定されたオブジェクト型の引数を代入する(ステップS
709)。ステップS709の処理が終了すると、メソ
ッドに次の引数があればその引数についてのループ(S
703−S703’)の処理に、次の引数がなければ、
ループ(S703−S703’)を抜けて、ステップS
711の処理に進む。
【0123】ステップS707で引数の型がオブジェク
ト型でないと判定されたときは、オートメーションサー
バ14は、ステップS706でチェックした型に対応す
る開発言語仕様の型で変数宣言をし、宣言した変数に引
数の値を代入する(ステップS710)。ステップS7
10の処理が終了すると、メソッドに次の引数があれば
その引数についてのループ(S703−S703’)の
処理に、次の引数がなければ、ループ(S703−S7
03’)を抜けて、ステップS711の処理に進む。
ト型でないと判定されたときは、オートメーションサー
バ14は、ステップS706でチェックした型に対応す
る開発言語仕様の型で変数宣言をし、宣言した変数に引
数の値を代入する(ステップS710)。ステップS7
10の処理が終了すると、メソッドに次の引数があれば
その引数についてのループ(S703−S703’)の
処理に、次の引数がなければ、ループ(S703−S7
03’)を抜けて、ステップS711の処理に進む。
【0124】ステップS711では、オートメーション
サーバ14は、以上の処理で準備された変数やオブジェ
クトを引数として、多重定義されたメソッドを呼び出
す。そして、このフローチャートの処理を終了する。
サーバ14は、以上の処理で準備された変数やオブジェ
クトを引数として、多重定義されたメソッドを呼び出
す。そして、このフローチャートの処理を終了する。
【0125】以上説明したように、プログラム自動生成
装置3は、データベース11に定義されているスキーマ
クラスの情報を取得し、取得した情報のうちの適切なも
のをテンプレートファイル4のうちのオートメーション
サーバ生成用のものに挿入することによって、オートメ
ーションサーバ14を生成することができる。また、取
得した情報のうちの適切なものをテンプレートファイル
4のうちのODL記述ファイル生成用のものに挿入する
ことによって、ODL記述ファイルを生成し、これによ
り、インタフェース定義を定めることができる。さら
に、取得した情報からレジストリ登録に使用する情報か
らなるレジストリファイルも生成することができる。
装置3は、データベース11に定義されているスキーマ
クラスの情報を取得し、取得した情報のうちの適切なも
のをテンプレートファイル4のうちのオートメーション
サーバ生成用のものに挿入することによって、オートメ
ーションサーバ14を生成することができる。また、取
得した情報のうちの適切なものをテンプレートファイル
4のうちのODL記述ファイル生成用のものに挿入する
ことによって、ODL記述ファイルを生成し、これによ
り、インタフェース定義を定めることができる。さら
に、取得した情報からレジストリ登録に使用する情報か
らなるレジストリファイルも生成することができる。
【0126】従って、この実施の形態のプログラム自動
生成装置3によれば、オブジェクト指向のデータベース
11を操作するためのプログラムの生成が容易になる。
また、例えば、インタフェース仕様が変更された場合な
どにも、プログラムを一から作り直す必要がないので、
プログラムの運用、保守も容易になる。
生成装置3によれば、オブジェクト指向のデータベース
11を操作するためのプログラムの生成が容易になる。
また、例えば、インタフェース仕様が変更された場合な
どにも、プログラムを一から作り直す必要がないので、
プログラムの運用、保守も容易になる。
【0127】しかも、データベース11、クライアント
プログラム21、或いはオートメーション通信を行うた
めのリモートオートメーションマネージャ15及びリモ
ートオートメーションプロキシ22には、既存のシステ
ムを利用することができるので、プログラムの開発、さ
らにはテストを容易に行うことができる。
プログラム21、或いはオートメーション通信を行うた
めのリモートオートメーションマネージャ15及びリモ
ートオートメーションプロキシ22には、既存のシステ
ムを利用することができるので、プログラムの開発、さ
らにはテストを容易に行うことができる。
【0128】さらに、optionalパラメータの導
入によって、クライアント2側のクライアントプログラ
ム21とサーバ1側のオートメーションサーバ14との
オートメーション通信におけるインタフェース仕様を統
一することができ、なおかつデータベース11に登録さ
れているオブジェクトの多相性の機能を十分に利用する
ことができる。
入によって、クライアント2側のクライアントプログラ
ム21とサーバ1側のオートメーションサーバ14との
オートメーション通信におけるインタフェース仕様を統
一することができ、なおかつデータベース11に登録さ
れているオブジェクトの多相性の機能を十分に利用する
ことができる。
【0129】上記の実施の形態では、プログラム自動生
成装置3は、サーバ1とは別個の情報処理装置によって
構成されていた。しかしながら、サーバ1がプログラム
自動生成装置3の機能を含むものとして、サーバ1とプ
ログラム自動生成装置3とを同一の情報処理装置によっ
て構成することもできる。この場合において、プログラ
ムテンプレートファイル4は、サーバ1内の記憶装置に
記憶することも外部の記憶装置に記憶することもでき
る。
成装置3は、サーバ1とは別個の情報処理装置によって
構成されていた。しかしながら、サーバ1がプログラム
自動生成装置3の機能を含むものとして、サーバ1とプ
ログラム自動生成装置3とを同一の情報処理装置によっ
て構成することもできる。この場合において、プログラ
ムテンプレートファイル4は、サーバ1内の記憶装置に
記憶することも外部の記憶装置に記憶することもでき
る。
【0130】上記の実施の形態では、オートメーション
オブジェクトプログラム、ODL記述及びレジストリフ
ァイルは、すべて同一のプログラム自動生成装置3によ
って生成されていた。しかしながら、これらは、それぞ
れ別々の情報処理装置によって生成し、コンパイルした
後に、リンクしてもよい。
オブジェクトプログラム、ODL記述及びレジストリフ
ァイルは、すべて同一のプログラム自動生成装置3によ
って生成されていた。しかしながら、これらは、それぞ
れ別々の情報処理装置によって生成し、コンパイルした
後に、リンクしてもよい。
【0131】上記の実施の形態では、インターネット5
を介して接続されたサーバ1とクライアント2とからな
るクライアントサーバシステムで本発明のプログラムの
開発・実行環境を実現した場合について説明した。しか
しながら、本発明はこれに限られない。例えば、イント
ラネット環境でのクライアントサーバシステムを本発明
のプログラムの開発・実行環境とすることもできる。
を介して接続されたサーバ1とクライアント2とからな
るクライアントサーバシステムで本発明のプログラムの
開発・実行環境を実現した場合について説明した。しか
しながら、本発明はこれに限られない。例えば、イント
ラネット環境でのクライアントサーバシステムを本発明
のプログラムの開発・実行環境とすることもできる。
【0132】また、クライアント(マシン)2とサーバ
(マシン)1とが別個に存在するクライアントサーバシ
ステムではなく、図10に示すようなスタンドアローン
型のコンピュータシステム6も、本発明のプログラムの
開発・実行環境とすることができる。この場合、クライ
アントプログラム21のプロセスとコンピュータシステ
ム6上にオートメーションサーバ14のサーバプロセス
とが存在することとなり、クライアントプログラム21
とオートメーションサーバ14とがプロセス間通信の手
法を用いてオートメーション通信を行う。
(マシン)1とが別個に存在するクライアントサーバシ
ステムではなく、図10に示すようなスタンドアローン
型のコンピュータシステム6も、本発明のプログラムの
開発・実行環境とすることができる。この場合、クライ
アントプログラム21のプロセスとコンピュータシステ
ム6上にオートメーションサーバ14のサーバプロセス
とが存在することとなり、クライアントプログラム21
とオートメーションサーバ14とがプロセス間通信の手
法を用いてオートメーション通信を行う。
【0133】上記の実施の形態では、COM/DCOM
を基礎とするオートメーション通信を例として説明し
た。しかしながら、本発明におけるオートメーション通
信は、COM/DCOMを基礎とするものに限るもので
はなく、本発明の趣旨を逸脱しない限りにおいて、他の
仕様を基礎とするものにも適用することができる。
を基礎とするオートメーション通信を例として説明し
た。しかしながら、本発明におけるオートメーション通
信は、COM/DCOMを基礎とするものに限るもので
はなく、本発明の趣旨を逸脱しない限りにおいて、他の
仕様を基礎とするものにも適用することができる。
【0134】
【実施例】以下、上記の実施の形態のデータベースアプ
リケーションプログラムの開発・実行環境を具体的なシ
ステムで実現した場合の実施例について、プログラムリ
スト(ソースリスト)を参照しながら説明する。
リケーションプログラムの開発・実行環境を具体的なシ
ステムで実現した場合の実施例について、プログラムリ
スト(ソースリスト)を参照しながら説明する。
【0135】この実施例のシステムでは、データベース
11としてオブジェクト指向データベースPERCIO
(登録商標)、サーバプログラム開発言語としてVis
ual C++(登録商標)、クライアントプログラム
開発言語としてVisualBasic(登録商標)を
用いている。
11としてオブジェクト指向データベースPERCIO
(登録商標)、サーバプログラム開発言語としてVis
ual C++(登録商標)、クライアントプログラム
開発言語としてVisualBasic(登録商標)を
用いている。
【0136】1)オートメーションオブジェクトのクラ
ス オートメーションオブジェクトのヘッダファイルの一部
となるプログラムテンプレートファイル4のプログラム
リストの一例を以下に示す。この例では、“@@”で囲
まれる文字列が、オートメーションサーバ14がAPI
を介してデータベース11から取得するスキーマクラス
の情報が埋め込まれる個所である。従って、以下の“@@
CLASS@@”は、クラス名に置き換えられる。
ス オートメーションオブジェクトのヘッダファイルの一部
となるプログラムテンプレートファイル4のプログラム
リストの一例を以下に示す。この例では、“@@”で囲
まれる文字列が、オートメーションサーバ14がAPI
を介してデータベース11から取得するスキーマクラス
の情報が埋め込まれる個所である。従って、以下の“@@
CLASS@@”は、クラス名に置き換えられる。
【0137】また、“dRef”は、すべてのユーザ定義ス
キーマクラスの基本クラスとなっている。オートメーシ
ョンオブジェクトのクラスは、“dRef”を継承して定義
されている。“d_Extend”“d_Set”、“d_List”は、
PERCIOがシステムとして予め用意しているテンプ
レート型のスキーマクラスである。“d_Ref_Any”は、
PERCIOがシステムとして予め用意しているデータ
ベース中の任意のオブジェクトへのポインタを保持する
変数の型である。
キーマクラスの基本クラスとなっている。オートメーシ
ョンオブジェクトのクラスは、“dRef”を継承して定義
されている。“d_Extend”“d_Set”、“d_List”は、
PERCIOがシステムとして予め用意しているテンプ
レート型のスキーマクラスである。“d_Ref_Any”は、
PERCIOがシステムとして予め用意しているデータ
ベース中の任意のオブジェクトへのポインタを保持する
変数の型である。
【0138】オートメーションオブジェクトのクラス
は、これらのシステムが用意するスキーマクラスのオブ
ジェクトを生成するメンバ関数“createextend()”、
“createset()”、“createlist()”の関数宣言と、自
分自身を指すポインタを生成するメンバ関数“create_n
weref()”の関数宣言とを定義する。
は、これらのシステムが用意するスキーマクラスのオブ
ジェクトを生成するメンバ関数“createextend()”、
“createset()”、“createlist()”の関数宣言と、自
分自身を指すポインタを生成するメンバ関数“create_n
weref()”の関数宣言とを定義する。
【0139】なお、この実施例で示されている、接頭語
“C”で始まるクラスは、オートメーションオブジェク
トのクラスを表し、接頭語“C”をとったクラス名のス
キーマクラスと1対1で対応する。また、接頭語“d_”
で始まるクラスは、PERCIOがシステムとして予め
用意するスキーマクラスであり、アンダースコアのない
接頭語“d”で始まるクラスは、PERCIOがシステ
ムとして用意するクラスと1対1で対応するオートメー
ションクラスを表している。
“C”で始まるクラスは、オートメーションオブジェク
トのクラスを表し、接頭語“C”をとったクラス名のス
キーマクラスと1対1で対応する。また、接頭語“d_”
で始まるクラスは、PERCIOがシステムとして予め
用意するスキーマクラスであり、アンダースコアのない
接頭語“d”で始まるクラスは、PERCIOがシステ
ムとして用意するクラスと1対1で対応するオートメー
ションクラスを表している。
【0140】
【0141】2)オートメーションオブジェクトの基本
クラスのプログラム オートメーションオブジェクトのクラス“dRef”のヘッ
ダファイルのプログラムリストの一部を以下に示す。
“dRef”は、すべてのユーザ定義スキーマクラスに共通
の基本クラスであり、固定的なファイルとしてプログラ
ムテンプレートファイル4に用意されている。
クラスのプログラム オートメーションオブジェクトのクラス“dRef”のヘッ
ダファイルのプログラムリストの一部を以下に示す。
“dRef”は、すべてのユーザ定義スキーマクラスに共通
の基本クラスであり、固定的なファイルとしてプログラ
ムテンプレートファイル4に用意されている。
【0142】
【0143】オートメーションオブジェクトのテンプレ
ートファイルで定義されているメンバ変数は、すべて
“dRef”クラスで、仮想関数で定義されている。また、
属性の定義としては、オートメーションオブジェクトが
代理として振る舞っているPERCIOのオブジェクト
へのポインタを保持する“m_classref”、オートメーシ
ョンオブジェクト自身のクラス名を保持する“m_classn
ame”がある。“m_classref”は、オートメーションオ
ブジェクトのコンストラクタの説明の部分で述べたスキ
ーマクラスの参照型のオブジェクトを保持するメンバ変
数である。また、“m_classname”は、多重定義の説明
の部分で述べたオブジェクトのクラス名を記憶させるメ
ンバ変数である。
ートファイルで定義されているメンバ変数は、すべて
“dRef”クラスで、仮想関数で定義されている。また、
属性の定義としては、オートメーションオブジェクトが
代理として振る舞っているPERCIOのオブジェクト
へのポインタを保持する“m_classref”、オートメーシ
ョンオブジェクト自身のクラス名を保持する“m_classn
ame”がある。“m_classref”は、オートメーションオ
ブジェクトのコンストラクタの説明の部分で述べたスキ
ーマクラスの参照型のオブジェクトを保持するメンバ変
数である。また、“m_classname”は、多重定義の説明
の部分で述べたオブジェクトのクラス名を記憶させるメ
ンバ変数である。
【0144】3)オートメーションオブジェクトのプロ
パティのプログラム 図4のプロパティの取得関数の生成手順を実現するプロ
グラムリストを以下に示す。このプログラムは、スキー
マクラスのint型の属性値を取得するプロパティの取
得関数を示すものである。この例では、“@@ORIGVAR@
@”がスキーマクラスの情報の属性名と置き換わる。ま
た、“@@VAR@@”は、その属性の中でアンダースコアを
取り除いた文字列と置き換わる。
パティのプログラム 図4のプロパティの取得関数の生成手順を実現するプロ
グラムリストを以下に示す。このプログラムは、スキー
マクラスのint型の属性値を取得するプロパティの取
得関数を示すものである。この例では、“@@ORIGVAR@
@”がスキーマクラスの情報の属性名と置き換わる。ま
た、“@@VAR@@”は、その属性の中でアンダースコアを
取り除いた文字列と置き換わる。
【0145】 VARIANT C@@CLASS@@::_Get@@VAR@@() { VARIANT vaResult; VariantInit(&vaResult); V_VT(&vaResult) = VT_I4; if (!m_classref) return vaResult; V_I4(&vaResult) = GETOBJ(m_classref)->@@ORIGVAR@@; return vaResult; }
【0146】図5のプロパティの設定関数の生成手順を
実現するプログラムリストを以下に示す。このプログラ
ムは、スキーマクラスのchar*型の属性値を取得す
るプロパティの取得関数を示すものである。ここで、最
後の行にある“GETOBJ”はマクロであり、“m_classre
f”のオブジェクトの参照型に展開される。また、“mar
k_modified()”は、PERCIOが用意するシステムの
メンバ関数であり、プロパティ設定においてオブジェク
トの属性値が変更されたことをデータベース11に通知
して、データベース11の内容を更新する。
実現するプログラムリストを以下に示す。このプログラ
ムは、スキーマクラスのchar*型の属性値を取得す
るプロパティの取得関数を示すものである。ここで、最
後の行にある“GETOBJ”はマクロであり、“m_classre
f”のオブジェクトの参照型に展開される。また、“mar
k_modified()”は、PERCIOが用意するシステムの
メンバ関数であり、プロパティ設定においてオブジェク
トの属性値が変更されたことをデータベース11に通知
して、データベース11の内容を更新する。
【0147】 void C@@CLASS@@::_Set@@VAR@@(const VARIANT FAR& newValue) { CString c_@@VAR@@; if (!m_classref) return; c_@@VAR@@ = CString(V_BSTR(&newValue)); strcpy(GETOBJ(m_classref)->@@ORIGVAR@@, c_@@VAR@@); GETOBJ(m_classref).mark_modified(); }
【0148】4)オートメーションオブジェクトのメソ
ッドのプログラム 図6のオートメーションメソッドの生成手順を実現する
プログラムリストを以下に示す。このプログラムは、ユ
ーザが定義したスキーマクラス“Employee”を代理する
オートメーションオブジェクトのクラス“CEmployee”
のメソッド“getdata”を実装するものである。スキー
マクラスのメソッド名は、“get_data”である。また、
“CopyToVARIANT”は、グローバル関数であり、API
呼び出しの結果置き換わったパラメータ“n_param0”の
値を、オートメーションメソッドのVariant型の
引数“param0”にコピーする。
ッドのプログラム 図6のオートメーションメソッドの生成手順を実現する
プログラムリストを以下に示す。このプログラムは、ユ
ーザが定義したスキーマクラス“Employee”を代理する
オートメーションオブジェクトのクラス“CEmployee”
のメソッド“getdata”を実装するものである。スキー
マクラスのメソッド名は、“get_data”である。また、
“CopyToVARIANT”は、グローバル関数であり、API
呼び出しの結果置き換わったパラメータ“n_param0”の
値を、オートメーションメソッドのVariant型の
引数“param0”にコピーする。
【0149】
【0150】5)サーバプログラム スキーマクラス“Employee”のメンバ関数get_dataの実
装例を以下に示す。このプログラムは、図1のサーバプ
ログラム13に対応し、また、このプログラムの作成
は、図2のステップS102の処理に相当する。
装例を以下に示す。このプログラムは、図1のサーバプ
ログラム13に対応し、また、このプログラムの作成
は、図2のステップS102の処理に相当する。
【0151】
【0152】6)ODL記述ファイル ODL記述ファイルを生成するためのプログラムテンプ
レートファイル4のうちのテンプレートの例を以下に示
す。ここでは、“dispinterface”文の“propeties”ま
でを記述するテンプレートファイルの例を示す。以下の
例は、図7のODL記述の生成手順において用いられ
る。
レートファイル4のうちのテンプレートの例を以下に示
す。ここでは、“dispinterface”文の“propeties”ま
でを記述するテンプレートファイルの例を示す。以下の
例は、図7のODL記述の生成手順において用いられ
る。
【0153】
【0154】この後に、スキーマクラスの属性が挿入さ
れる。“dispinterface”文の“method”までを記述す
るテンプレートファイルを以下に示す。
れる。“dispinterface”文の“method”までを記述す
るテンプレートファイルを以下に示す。
【0155】
【0156】この後に、スキーマクラスのメソッドが挿
入される。“dispinterface”文の最後の部分の生成に
用いられるテンプレートファイルを以下に示す。
入される。“dispinterface”文の最後の部分の生成に
用いられるテンプレートファイルを以下に示す。
【0157】
【0158】“coclass”文を記述するためのテンプレ
ートファイルを以下に示す。
ートファイルを以下に示す。
【0159】
【0160】上記の図7のフローチャートで示した手順
に従ってこの実施例のプログラム生成装置3が生成し
た、オートメーションオブジェクトのクラス“CEmploye
e”のODL記述ファイルの例を以下に示す。このOD
L記述ファイルをコンパイルし、タイプライブラリを作
成して公開すれば、オートメーションオブジェクトを外
部と連携することが可能となる。
に従ってこの実施例のプログラム生成装置3が生成し
た、オートメーションオブジェクトのクラス“CEmploye
e”のODL記述ファイルの例を以下に示す。このOD
L記述ファイルをコンパイルし、タイプライブラリを作
成して公開すれば、オートメーションオブジェクトを外
部と連携することが可能となる。
【0161】 [ uuid(5794F9E6-3A54-11d1-BB17-00004C95A764) ] dispinterface IEmployee { properties: //{{AFX_ODL_PROP(CEmployee) [id(1)] VARIANT name; [id(2)] VARIANT birthday; [id(3)] VARIANT section; [id(4)] VARIANT salary; //}}AFX_ODL_PROP methods: //{{AFX_ODL_METHOD(CEmployee) [id(5)] VARIANT create(VARIANT * db_obj, VARIANT* param0, VARIANT* param1, VARIANT* param2, VARIANT*param3); [id(6)] VARIANT setsalary(VARIANT* param0); [id(7)] VARIANT getsalary(); [id(8)] VARIANT getdata(VARIANT* param0); [id(9)] VARIANT getall(VARIANT* param0); [id(10)] VARIANT remove(); //}}AFX_ODL_METHOD }; // Class information for CEmployee [ uuid(5794F9E7-3A54-11d1-BB17-00004C95A764) ] coclass CEmployee { [default] dispinterface IEmployee; }
【0162】7)クライアントセットアップ用レジスト
リファイル 図3のステップS206で生成されるレジストリファイ
ルD205の、この実施例における生成例を以下に示
す。この例では、オートメーションサーバの名前が、
“BookAX”、オートメーションオブジェクトの名前が
“CEmployee”、オートメーションサーバ“BookAX”の
IPアドレスが“133.207.62.173”と設定されている。
また、オートメーションオブジェクト“CEployee”のC
LSIDは、“5794F9E7-3A54-11d1-BB17-00004C95A76
4”に設定されており、ODL記述ファイル中の“cocla
ss”文の“CEmployee”の“uuid”と一致する。なお、
このレジストリファイルの内容は、図2のステップS1
06でクライアント2に登録される。
リファイル 図3のステップS206で生成されるレジストリファイ
ルD205の、この実施例における生成例を以下に示
す。この例では、オートメーションサーバの名前が、
“BookAX”、オートメーションオブジェクトの名前が
“CEmployee”、オートメーションサーバ“BookAX”の
IPアドレスが“133.207.62.173”と設定されている。
また、オートメーションオブジェクト“CEployee”のC
LSIDは、“5794F9E7-3A54-11d1-BB17-00004C95A76
4”に設定されており、ODL記述ファイル中の“cocla
ss”文の“CEmployee”の“uuid”と一致する。なお、
このレジストリファイルの内容は、図2のステップS1
06でクライアント2に登録される。
【0163】 [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}] @="BookAX.CEmployee" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\LocalServer32] @="BookAX.EXE" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\_LocalServer32] @="BookAX.EXE" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\ProgId] @="BookAX.CEmployee" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\InprocHandler32] @="ole32.dll" [HKEY_CLASSES_ROOT\BookAX.CEmployee] @="BookAX.CEmployee" [HKEY_CLASSES_ROOT\BookAX.CEmployee\CLSID] @="{5794F9E7-3A54-11d1-BB17-00004C95A764}" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\InprocServer32] @="autprx32.dll" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\NetworkAddress] @="133.207.62.173" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\ProtocolSequence] @="ncacn_ip_tcp"
00004C95A764}] @="BookAX.CEmployee" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\LocalServer32] @="BookAX.EXE" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\_LocalServer32] @="BookAX.EXE" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\ProgId] @="BookAX.CEmployee" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\InprocHandler32] @="ole32.dll" [HKEY_CLASSES_ROOT\BookAX.CEmployee] @="BookAX.CEmployee" [HKEY_CLASSES_ROOT\BookAX.CEmployee\CLSID] @="{5794F9E7-3A54-11d1-BB17-00004C95A764}" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\InprocServer32] @="autprx32.dll" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\NetworkAddress] @="133.207.62.173" [HKEY_CLASSES_ROOT\CLSID\{5794F9E7-3A54-11d1-BB17-
00004C95A764}\ProtocolSequence] @="ncacn_ip_tcp"
【0164】8)クライアントプログラム Visual Basicによって生成した、この実施
例のクライアントプログラム21の例を以下に示す。こ
れは、図2のステップS108で生成されるものであ
る。この例では、オートメーションサーバ14には、
“BookAX”と“CPPAPI”という2つの名前が用いられて
おり、ユーザが定義したスキーマクラスを代理するオー
トメーションサーバには“BookAX”が、PERCIOが
用意するシステムのスキーマクラスを代理するオートメ
ーションサーバには“CPPAPI”が用いられている。
例のクライアントプログラム21の例を以下に示す。こ
れは、図2のステップS108で生成されるものであ
る。この例では、オートメーションサーバ14には、
“BookAX”と“CPPAPI”という2つの名前が用いられて
おり、ユーザが定義したスキーマクラスを代理するオー
トメーションサーバには“BookAX”が、PERCIOが
用意するシステムのスキーマクラスを代理するオートメ
ーションサーバには“CPPAPI”が用いられている。
【0165】“Dim”ステートメントでVariant
型の変数を宣言し、それに続く“CreateObject”関数で
オートメーションオブジェとを参照し、“Set”ステー
トメントでVariant型の変数にオブジェクト型と
して保持させる。この2つのVariant型の変数に
よって、PERCIOのスキーマクラスのオブジェクト
への参照関係も解除される。
型の変数を宣言し、それに続く“CreateObject”関数で
オートメーションオブジェとを参照し、“Set”ステー
トメントでVariant型の変数にオブジェクト型と
して保持させる。この2つのVariant型の変数に
よって、PERCIOのスキーマクラスのオブジェクト
への参照関係も解除される。
【0166】また、プログラムの後半で用いられている
“Grid1”や“Text1”などで表されている“ActiveX”
コントロールは、グリッドコントロールとテキストボッ
クスコントロールとを用いて、データベース11の検索
結果を表示するときに用いられている。
“Grid1”や“Text1”などで表されている“ActiveX”
コントロールは、グリッドコントロールとテキストボッ
クスコントロールとを用いて、データベース11の検索
結果を表示するときに用いられている。
【0167】 Private Sub printemp() Dim emp As Variant Set emp = CreateObject("BookAX.CEmployee") Dim ext As Variant Set ext = CreateObject("CPPAPI.dExtent") ext.init emp Dim itr As Variant Set itr = ext.createiterator Dim str As Variant Dim sum As Variant Dim i As Integer Do While itr.Next(emp) str = String(64, " ") emp.GetData str sum = sum + str i = i + 1 Set str = Nothing Loop Grid1.Clip = sum Text1.Text = i Set emp = Nothing Set ext = Nothing Set itr = Nothing End Sub
【0168】9)多重定義 スキーマクラスのメソッド“get_data”は、引数が最小
で1個、最大で3個の多重定義されているメソッドであ
るとする。この場合、ODL記述ファイルには、opt
ional指定を用いてオートメーションメソッド“ge
tdata”を記述することとなるが、この実施例におい
て、プログラムは以下のように記述される。
で1個、最大で3個の多重定義されているメソッドであ
るとする。この場合、ODL記述ファイルには、opt
ional指定を用いてオートメーションメソッド“ge
tdata”を記述することとなるが、この実施例におい
て、プログラムは以下のように記述される。
【0169】以下のようなoptional指定をOD
L記述ファイルに記述することによって、オートメーシ
ョンサーバ14は、クライアントプログラム21から渡
された引数の型をVariant型からデータベース1
1の開発言語の型のものに変換すれば、引数が1個から
3個のいずれの個数のメソッドも呼び出すことができ
る。
L記述ファイルに記述することによって、オートメーシ
ョンサーバ14は、クライアントプログラム21から渡
された引数の型をVariant型からデータベース1
1の開発言語の型のものに変換すれば、引数が1個から
3個のいずれの個数のメソッドも呼び出すことができ
る。
【0170】[id(8)] VARIANT getdata(VARIANT* param
0, [optional] VARIANT* param1, [optional] VARIANT*
param2);
0, [optional] VARIANT* param1, [optional] VARIANT*
param2);
【0171】10)仮想関数 この実施例において、仮想関数を実現するための仮想関
数の例を以下に示す。ここで、“CPerson”というクラ
スが、“CEmployee”の親クラスとなる。また、以下の
プログラム中の“d_Ref<Person>”は、スキーマクラス<
Person>のオブジェクトを指すポインタを保持する変数
の型である。
数の例を以下に示す。ここで、“CPerson”というクラ
スが、“CEmployee”の親クラスとなる。また、以下の
プログラム中の“d_Ref<Person>”は、スキーマクラス<
Person>のオブジェクトを指すポインタを保持する変数
の型である。
【0172】 VARIANT CPerson::cast(VARIANT FAR* param0) { dRef *src_dRef = dynamic_cast<dRef*>(CCmdTarget::FromIDispatch(V_DISPATCH(param0))); if(src_dRef != NULL) { d_Ref<Person> c_person; c_person = (d_Ref<Person>)src_dRef->m_classref; m_classref = (d_Ref_Any)c_person; } }
【0173】以下、この実施例のシステムにおけるデー
タベースアプリケーションプログラムの開発プロセスに
ついて、図11のフローチャートを参照して説明する。
タベースアプリケーションプログラムの開発プロセスに
ついて、図11のフローチャートを参照して説明する。
【0174】まず、開発者は、PERCIO(データベ
ース11)のスキーマを設計し、データベースの構築を
行う(ステップS801)。設計したデータベースのス
キーマは、拡張及び/または変更をすることが可能であ
る(ステップS802)。さらに、開発者は、各スキー
マクラス毎にメソッドを実装する(ステップS80
3)。ここで実装したメソッドが、上記のサーバプログ
ラム13の一部となる。なお、以上のステップS803
までで示したシステムの構築を行う代わりに、既存のシ
ステムを用いることも可能である。
ース11)のスキーマを設計し、データベースの構築を
行う(ステップS801)。設計したデータベースのス
キーマは、拡張及び/または変更をすることが可能であ
る(ステップS802)。さらに、開発者は、各スキー
マクラス毎にメソッドを実装する(ステップS80
3)。ここで実装したメソッドが、上記のサーバプログ
ラム13の一部となる。なお、以上のステップS803
までで示したシステムの構築を行う代わりに、既存のシ
ステムを用いることも可能である。
【0175】以後、開発プロセスは、システムの開発が
サーバ1側とクライアント2側とで並行して進めること
が可能となる。サーバ1の側では、後述するステップS
804〜S810のすべての開発プロセスを実行するこ
とが可能となる。一方、クライアント2の側では、後述
するステップS805とS806、及びS808〜S8
10までの開発プロセスを実行することが可能となる。
サーバ1側とクライアント2側とで並行して進めること
が可能となる。サーバ1の側では、後述するステップS
804〜S810のすべての開発プロセスを実行するこ
とが可能となる。一方、クライアント2の側では、後述
するステップS805とS806、及びS808〜S8
10までの開発プロセスを実行することが可能となる。
【0176】次に、開発者は、上記の実施の形態で示し
たプログラム自動生成装置3を用いて、データベース1
1に登録されているスキーマクラスに対応したオートメ
ーションサーバ14を生成する(ステップS804)。
たプログラム自動生成装置3を用いて、データベース1
1に登録されているスキーマクラスに対応したオートメ
ーションサーバ14を生成する(ステップS804)。
【0177】次に、開発者は、サーバ1の側のPERC
IOの環境を用いて、或いはオートメーションサーバ1
4を介してクライアント2の側から操作することによっ
て、データベース11に実体(インスタンス)を格納す
る(ステップS805)。なお、いずれの方法による場
合でも、データベース11に格納したインスタンスは、
Visual Basicなどのスクリプト的なインタ
プリタ言語の実行によって、データベース11のデータ
やメソッドなどの振る舞いを確認することができる(ス
テップS806)。
IOの環境を用いて、或いはオートメーションサーバ1
4を介してクライアント2の側から操作することによっ
て、データベース11に実体(インスタンス)を格納す
る(ステップS805)。なお、いずれの方法による場
合でも、データベース11に格納したインスタンスは、
Visual Basicなどのスクリプト的なインタ
プリタ言語の実行によって、データベース11のデータ
やメソッドなどの振る舞いを確認することができる(ス
テップS806)。
【0178】次に、開発者は、PERCIOのAPIを
直接用いて、上記のプログラム自動生成装置3が生成す
るオートメーションサーバ14と異なる独自のオートメ
ーションサーバを生成して、両方のオートメーションサ
ーバを併用するデータベースアプリケーションを構築す
る。
直接用いて、上記のプログラム自動生成装置3が生成す
るオートメーションサーバ14と異なる独自のオートメ
ーションサーバを生成して、両方のオートメーションサ
ーバを併用するデータベースアプリケーションを構築す
る。
【0179】次に、開発者は、クライアント2をコント
ロールするための、“ActiveX”コントロールを実装す
る(ステップS808)。なお、このシステムはオート
メーション通信の機能を用いた環境として構築されてい
るため、クライアント2の側で動作させる“ActiveX”
コントロールをアプリケーションの部品として用いるこ
とができる。また、アプリケーションに有用な既存の
“ActiveX”コントロールが存在すれば、その再利用も
可能である。
ロールするための、“ActiveX”コントロールを実装す
る(ステップS808)。なお、このシステムはオート
メーション通信の機能を用いた環境として構築されてい
るため、クライアント2の側で動作させる“ActiveX”
コントロールをアプリケーションの部品として用いるこ
とができる。また、アプリケーションに有用な既存の
“ActiveX”コントロールが存在すれば、その再利用も
可能である。
【0180】次に、上記のステップで開発した、プログ
ラム自動生成装置3を用いて作成したオートメーション
サーバ14、PERCIOのAPIを用いて生成したオ
ートメーションサーバ、及び“ActiveX”コントロール
をクライアントプログラム21の中で統合させる。ここ
では、さらにVisual Basicなどのスクリプ
ト的なインタプリタ言語を用い、アプリケーションのテ
スト実行、GUIのプロトタイプの作成などを行う(ス
テップS809)。
ラム自動生成装置3を用いて作成したオートメーション
サーバ14、PERCIOのAPIを用いて生成したオ
ートメーションサーバ、及び“ActiveX”コントロール
をクライアントプログラム21の中で統合させる。ここ
では、さらにVisual Basicなどのスクリプ
ト的なインタプリタ言語を用い、アプリケーションのテ
スト実行、GUIのプロトタイプの作成などを行う(ス
テップS809)。
【0181】ステップS809までで、この実施例のシ
ステムのためのデータベースアプリケーションは一応完
成するが、オートメーション通信のためのプログラムの
部分は、Visual C++などのコンパイラ言語で
も開発可能なので、開発者は、このようなコンパイラ言
語を用いて、テストやプロトタイプでない最終的なデー
タベースアプリケーションを構築する(ステップS81
0)。
ステムのためのデータベースアプリケーションは一応完
成するが、オートメーション通信のためのプログラムの
部分は、Visual C++などのコンパイラ言語で
も開発可能なので、開発者は、このようなコンパイラ言
語を用いて、テストやプロトタイプでない最終的なデー
タベースアプリケーションを構築する(ステップS81
0)。
【0182】
【発明の効果】以上説明したように、本発明によれば、
オブジェクト指向データベースを操作するためのプログ
ラムを容易に作成することができる。また、そのプログ
ラムの保守も容易になる。また、外部操作情報の生成に
よって、クライアントサーバ型のシステム構成をした場
合のクライアント側のプログラムの作成も容易になる。
オブジェクト指向データベースを操作するためのプログ
ラムを容易に作成することができる。また、そのプログ
ラムの保守も容易になる。また、外部操作情報の生成に
よって、クライアントサーバ型のシステム構成をした場
合のクライアント側のプログラムの作成も容易になる。
【0183】また、本発明は、オートメーション通信の
機能を利用することによって、既存のシステムの利用が
可能となり、プログラムの開発、運用及び保守が容易に
なる。
機能を利用することによって、既存のシステムの利用が
可能となり、プログラムの開発、運用及び保守が容易に
なる。
【0184】さらに、本発明は、インターフェース仕様
を統一することによって、データベースに定義されてい
るスキーマを構成するオブジェクトが多相性をサポート
している場合に、このオブジェクトの多相性の機能を十
分に利用することができる。
を統一することによって、データベースに定義されてい
るスキーマを構成するオブジェクトが多相性をサポート
している場合に、このオブジェクトの多相性の機能を十
分に利用することができる。
【図1】本発明の実施の形態にかかるデータベースアプ
リケーションプログラムの開発・実行環境を実現するた
めのシステム構成例を示す図である。
リケーションプログラムの開発・実行環境を実現するた
めのシステム構成例を示す図である。
【図2】図1に示すシステムを構築する手順を示すフロ
ーチャートである。
ーチャートである。
【図3】図1のプログラム自動生成装置によるプログラ
ムの生成の処理の概要を示すフローチャートである。
ムの生成の処理の概要を示すフローチャートである。
【図4】プロパティの取得関数の生成手順を示すフロー
チャートである。
チャートである。
【図5】プロパティの設定関数の生成手順を示すフロー
チャートである。
チャートである。
【図6】オートメーションオブジェクトのメソッドの生
成手順を示すフローチャートである。
成手順を示すフローチャートである。
【図7】オートメーションオブジェクトのODL記述フ
ァイルの生成手順を示すフローチャートである。
ァイルの生成手順を示すフローチャートである。
【図8】図1のクライアントプログラムからデータベー
スへアクセスするための処理の流れを説明する図であ
る。
スへアクセスするための処理の流れを説明する図であ
る。
【図9】図1のオートメーションサーバによるメソッド
の呼び出し手順を示す図である。
の呼び出し手順を示す図である。
【図10】本発明の実施の形態の具体例にかかるクライ
アントサーバ型のデータベース操作システムの開発プロ
セスを示すフローチャートである。
アントサーバ型のデータベース操作システムの開発プロ
セスを示すフローチャートである。
【図11】本発明の他の実施の形態にかかるデータベー
スアプリケーションプログラムの開発・実行環境を実現
するためのシステム構成例を示す図である。
スアプリケーションプログラムの開発・実行環境を実現
するためのシステム構成例を示す図である。
1 サーバ 2 クライアント 3 プログラム自動生成装置 4 プログラムテンプレートファイル 5 インターネット 6 スタンドアローン型のコンピュータシステム 11 データベース 12 API(Application Programing Interface) 13 サーバプログラム 14 オートメーションサーバ 15 リモートオートメーションマネージャ 21 クライアントプログラム 22 リモートオートメーションプロキシ
Claims (9)
- 【請求項1】オブジェクト指向データベースに定義され
ているスキーマを構成する各クラスに関する情報を取得
する取得手段と、 前記スキーマを構成する各クラスに含まれるオブジェク
トの操作に用いられるプログラムを生成するための第1
のテンプレートを記憶する第1のテンプレート記憶手段
と、 前記第1のテンプレート記憶手段から前記第1のテンプ
レートを読み出し、該読み出した第1のテンプレートに
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、クラスに含まれる
オブジェクトを操作するための第1のプログラムを生成
するプログラム生成手段と、 前記プログラム生成手段が生成する前記スキーマを構成
するクラス毎のプログラムが外部に公開すべきインタフ
ェースを定義するためのインタフェース定義の生成に用
いられる第2のテンプレートを記憶する第2のテンプレ
ート記憶手段と、 前記第2のテンプレート記憶手段から第2のテンプレー
トを読み出し、該読み出した第2のテンプレートに前記
取得手段が取得したクラスに関する情報のうちの対応す
るものの少なくとも一部を挿入することによって、前記
スキーマを構成するクラス毎に、対応する前記プログラ
ムのインタフェース定義を生成するインタフェース定義
生成手段と、を備えることを特徴とするオブジェクト指
向データベース操作プログラム生成システム。 - 【請求項2】前記プログラム生成手段が生成した前記第
1のプログラムと前記インタフェース定義生成手段が生
成した前記インタフェース定義とをリンクすることによ
って、実行可能なモジュールを作り上げるリンク手段
と、をさらに備えることを特徴とする請求項1に記載の
オブジェクト指向データベース操作プログラム生成シス
テム。 - 【請求項3】前記スキーマを構成する各クラスに含まれ
るオブジェクトを外部から操作するための外部操作情報
を生成するための第3のテンプレートを記憶する第3の
テンプレート記憶手段と、 前記第3のテンプレート記憶手段から 第3のテンプレ
ートを読み出し、該読み出した第3のテンプレートに、
前記取得手段が取得したクラスに関する情報のうちの対
応するものの少なくとも一部を挿入することによって、
前記スキーマを構成するクラス毎に、対応する前記外部
操作情報を生成する外部操作情報生成手段と、をさらに
備えることを特徴とする請求項1または2に記載のオブ
ジェクト指向データベース操作プログラム生成システ
ム。 - 【請求項4】設定された情報によってインタフェースを
介して外部から他のプログラムを操作するための第2の
プログラムを実行させるプログラム実行手段と、 前記外部操作情報生成手段が生成した外部操作情報を前
記第2のプログラムに設定することによって、前記第2
のプログラムが前記インタフェース定義手段によって定
義されたインタフェース定義に対応するインタフェース
を介して前記プログラム生成手段によって生成された前
記第1のプログラムを操作することが可能となるように
設定する設定手段と、を備えることを特徴とする請求項
3に記載のオブジェクト指向データベース操作プログラ
ム生成システム。 - 【請求項5】前記プログラム生成手段は、 前記スキーマを構成する各クラス毎に、プロパティの取
得関数を生成する手段と、プロパティの設定関数を生成
する手段と、メソッドを生成する手段とを備えることを
特徴とする請求項1乃至4のいずれか1項に記載のオブ
ジェクト指向データベース操作プログラム生成システ
ム。 - 【請求項6】前記インタフェース定義によって定義され
るインタフェースは、オートメーション通信を行うため
のインタフェースであり、 前記外部操作情報は、オートメーション通信の機能を利
用して前記プログラム生成手段が生成した前記第1のプ
ログラムを操作するための情報であることを特徴とする
請求項1乃至5のいずれか1項に記載のオブジェクト指
向データベース操作プログラム生成システム。 - 【請求項7】前記スキーマを構成するクラスに含まれる
オブジェクトは、それぞれ外部から呼び出される場合の
インタフェースとなる引数の個数が異なるメソッドを複
数定義しており、 前記インタフェース定義は、前記オブジェクトのメソッ
ドが有する引数の最大個数に対応する引数と、前記オブ
ジェクトのメソッドが有する引数の最小個数に対応する
引数の省略指定とによって定義されることを特徴とする
請求項1乃至6のいずれか1項に記載のオブジェクト指
向データベース操作プログラム生成システム。 - 【請求項8】オブジェクト指向データベースに定義され
ているスキーマを構成する各クラスに関する情報を取得
する取得ステップと、 予め用意された第1をテンプレートを読み出し、該読み
出した第1のテンプレートに前記取得手段が取得したク
ラスに関する情報のうちの対応するものの少なくとも一
部を挿入することによって、前記スキーマを構成するク
ラス毎に、クラスに含まれるオブジェクトを操作するた
めのプログラムを生成するプログラム生成ステップと、 予め用意された第2のテンプレートを読み出し、該読み
出した第2のテンプレートに前記取得手段が取得したク
ラスに関する情報のうちの対応するものの少なくとも一
部を挿入することによって、前記スキーマを構成するク
ラス毎に、対応する前記プログラムのインタフェース定
義を生成するインタフェース定義生成ステップと、 インタフェース定義生成ステップと、を含むことを特徴
とするオブジェクト指向データベース操作プログラム生
成方法。 - 【請求項9】予め用意された第3のテンプレートを読み
出し、該読み出した第3のテンプレートに、前記取得手
段が取得したクラスに関する情報のうちの対応するもの
の少なくとも一部を挿入することによって、前記スキー
マを構成するクラス毎に、対応する前記外部操作情報を
生成する外部操作情報生成ステップをさらに含むことを
特徴とする請求項8に記載のオブジェクト指向データベ
ース操作プログラム生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10024459A JPH11224184A (ja) | 1998-02-05 | 1998-02-05 | オブジェクト指向データベース操作プログラム生成システム及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10024459A JPH11224184A (ja) | 1998-02-05 | 1998-02-05 | オブジェクト指向データベース操作プログラム生成システム及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11224184A true JPH11224184A (ja) | 1999-08-17 |
Family
ID=12138763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10024459A Pending JPH11224184A (ja) | 1998-02-05 | 1998-02-05 | オブジェクト指向データベース操作プログラム生成システム及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH11224184A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996801B2 (en) | 2000-07-14 | 2006-02-07 | Nec Corporation | System and method for automatically generating program |
JP2017167958A (ja) * | 2016-03-17 | 2017-09-21 | 沖電気工業株式会社 | データベースクライアント、データベースクライアントプログラム、データベースクライアント制御方法及びデータベースシステム |
US9841754B2 (en) | 2014-04-25 | 2017-12-12 | Mitsubishi Electric Corporation | Information-linkage supporting apparatus and information-linkage supporting program |
-
1998
- 1998-02-05 JP JP10024459A patent/JPH11224184A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996801B2 (en) | 2000-07-14 | 2006-02-07 | Nec Corporation | System and method for automatically generating program |
US9841754B2 (en) | 2014-04-25 | 2017-12-12 | Mitsubishi Electric Corporation | Information-linkage supporting apparatus and information-linkage supporting program |
JP2017167958A (ja) * | 2016-03-17 | 2017-09-21 | 沖電気工業株式会社 | データベースクライアント、データベースクライアントプログラム、データベースクライアント制御方法及びデータベースシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5848273A (en) | Method for generating OLE automation and IDL interfaces from metadata information | |
US5860004A (en) | Code generator for applications in distributed object systems | |
US5758351A (en) | System and method for the creation and use of surrogate information system objects | |
EP0827077B1 (en) | Object-oriented system, method and computer program for a client-server failure reporting process | |
EP0827075A2 (en) | Object-oriented system, method and article of manufacture for a client-server state machine framework | |
EP0822488A2 (en) | Object-oriented system, method and article of manufacture for a client-server application enabler system | |
EP0836139A2 (en) | Object-oriented system, method and article of manufacture for a client-server graphical user interface framework in an interprise computing framework system | |
EP0822487A2 (en) | Object-oriented system, method and article of manufacture for a client-server session WEB access in an interprise computing framework system | |
EP0827074A2 (en) | A system, method and article of manufacture for a distributed computer system framework | |
EP0822491A2 (en) | Object-oriented system, method and article of manufacture for migrating a client-server application | |
EP0834804A2 (en) | Object-oriented system, method and article of manifacture for a client-server state machine in an interprise computing framework system | |
EP0844558A2 (en) | Object-oriented system, method and article of manufature for a client-server event driver message framework in an interprise computing framework system | |
EP0834805A2 (en) | Object-oriented system, method and article of manufacture for a client-server session manager in an architecture computing framework system | |
EP0822490A2 (en) | Object-oriented system, method and article of manufacture for a client-server communication framework | |
EP0822489A2 (en) | Object-oriented system, method and article of manufacture for a client-server system with a client program cache | |
WO2004086222A2 (en) | Development of software systems | |
EP0827073A2 (en) | Object-oriented system, method and article of manufacture for a client-server-centric enterprise computing framework system | |
JP2000353078A (ja) | Java(登録商標)環境の管理可能性及び有用性を改善するシステム、方法及び記憶媒体 | |
US20030208583A1 (en) | Service provider integration framework | |
US7506303B2 (en) | System and method for utilizing non-EMF based objects in an EMF environment | |
EP0827076A2 (en) | Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system | |
US20060031817A1 (en) | Integrated dynamic control flow and functionality generation for network computing environments | |
Jacoby et al. | FA 3 ST Service–An Open Source Implementation of the Reactive Asset Administration Shell | |
US20030115297A1 (en) | Object oriented framework mechanism and method for virtual dynamic cloning of computer systems in a network | |
JPH11224184A (ja) | オブジェクト指向データベース操作プログラム生成システム及び方法 |