以下図面について、本発明の一実施の形態を詳述する。
以下図面について、本発明の一実施の形態を詳述する。なお、これにより、本発明が限定されるものではない。また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、計算機、ストレージ装置等に含まれるプロセッサ(例えばCPUによって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。
プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する装置(計算機、ストレージ装置等)が行う処理としてもよい。また、プロセッサは、処理の一部又は全部を行うハードウエア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は記憶メディアであってもよい。
また、以下の説明では、要素の識別情報として、識別子、番号又は名称が使用されるが、それに代えて又は加えて、識別情報は、他種の情報を含んでもよい。
(1)本実施の形態による計算機ステムの構成
図1において、1は全体として本実施の形態の計算機システムを示す。この計算機システム1は、1又は複数のクライアント計算機2が第1の通信ネットワーク3を介してサーバ装置4及びデータベースサーバ装置5と接続され、データベースサーバ装置5が第2の通信ネットワーク6を介して1又は複数のストレージ装置7と接続されて構成される。
クライアント計算機2は、内部バス10を介して接続されたCPU(Central Processing Unit)11、入出力部12、記憶部13、インタフェース14を備えて構成される。
CPU11は、クライアント計算機2全体の動作制御を司るプロセッサである。また入出力部12は、各種情報やGUI(Graphical User Interface)などを表示する液晶ディスプレイなどから構成される出力部と、ユーザが指示や情報を入力するためのキーボード及びマウスなどから構成される入力部とから構成される。
記憶部13は、半導体メモリ若しくはハードディスク装置(HDD:Hard Disk Drive)又はその両方から構成され、各種プログラムやデータを記憶保持するために使用される。記憶部13に格納されたプログラムをCPU11が実行することにより、クライアント計算機2全体としての各種処理が実行される。なお、記憶部13が内部バス10を介さないで直接CPU11に接続されても良い。
記憶部13には、アプリケーション15及びクライアントプログラム16が格納される。アプリケーション15は、クライアント計算機2を利用するユーザの業務に応じた各種処理を実行する機能を有するプログラムであり、クライアントプログラム16を介してサーバ装置4との間でCIMデータをXML形式でやり取りする。
インタフェース14は、クライアント計算機2が第1の通信ネットワーク3を介してサーバ装置4などと通信を行う際のプロトコル制御を行う機能を有するハードウェアデバイスであり、例えばNIC(Network Interface Card)から構成される。
サーバ装置4は、クライアント計算機2からの要求に応じたクエリ(以下、適宜、これをSQL(Structured Query Language)と呼ぶ)を生成してデータベースサーバ装置5に送信し、データベースサーバ装置5から与えられるそのSQLの実行結果をクライアント計算機2に送信したり、クライアント計算機2から与えられたCIMデータをリレーショナルデータベースのデータ形式に変換してデータベースサーバ装置5に送信し又はデータベースサーバ装置5から取得したリレーショナルデータベースのデータをCIMデータのデータ形式に変換してクライアント計算機2に送信する機能を有する計算機である。
このサーバ装置4は、内部バス20を介して接続されたインタフェース21、CPU22、入出力部23及び記憶部24を備えて構成される。これらインタフェース21、CPU22、入出力部23及び記憶部24は、クライアント計算機2の対応部位(インタフェース14、CPU11、入出力部12又は記憶部13)と同様の機能及び構成を有するものであるため、ここでの詳細説明は省略する。
サーバ装置4の記憶部24には、後述するCIMアダプタ共通部25と、1又は複数のCIMアダプタ相違部26と、CIMアダプタ生成部27とが格納される。CIMアダプタ共通部25は、記憶部24に格納された図示しないプログラムをCPU22が実行することにより具現化される機能ブロックであり、予め登録されたデータ変換ツール等の各種ツールや、Java変換ルール等のルール、及び、O/Rマップ定義情報及び取得関数定義情報といった各種定義情報を管理する。
またCIMアダプタ相違部26は、CIMアダプタ共通部25と同様に、記憶部24に格納された図示しないプログラムをCPU22が実行することにより具現化される機能ブロックであり、CIMプロファイルに対する1又は複数種類のデータ出力形式に対応させて生成され、対応するデータ出力形式のCIMデータをリレーショナルデータベースのデータ形式に変換し、又はその逆のデータ変換を行うデータ変換部である。
CIMアダプタ生成部27は、記憶部24に格納された図示しないプログラムをCPU22が実行することにより具現化される機能ブロックであり、予め与えられたマッピング情報28及び管理情報29を保持し、これらマッピング情報28及び管理情報29に基づいて、CIMアダプタ共通部25に登録されている各種ツール、ルール及び定義情報の中からCIMアダプタ開発者等により指定されたツール、ルール及び定義情報を用いて、例えば新たなCIMプロファイルのデータ出力形式として指定された出力用サブセットに応じたCIMアダプタ相違部26を生成する。
データベースサーバ装置5は、クライアント計算機2から送信されサーバ装置4においてリレーショナルデータベースのデータ形式に変換されたCIMデータを、ストレージ装置7に格納されたリレーショナルデータベース42に登録して管理する機能を有するサーバ装置である。
データベースサーバ装置5は、内部バス30を介して接続された第1のインタフェース31、CPU32、入出力部33、記憶部34及び第2のインタフェース35を備えて構成される。第1のインタフェース31、CPU32、入出力部33及び記憶部34は、クライアント計算機2の対応部位(インタフェース14、CPU11、入出力部12又は記憶部13)と同様の機能及び構成を有するものであるため、ここでの詳細説明は省略する。
第2のインタフェース35は、データベースサーバ装置5が第2の通信ネットワーク6を介してストレージ装置7と通信を行う際のプロトコル制御を行う機能を有するハードウェアデバイスであり、NICなどから構成される。
データベースサーバ装置5の記憶部34には、ストレージ装置7に格納されたリレーショナルデータベース42を管理するRDBMS(Relational Data Base Management System)36が格納される。RDBMS36は、サーバ装置4から与えられるSQLを実行し、その実行結果をサーバ装置4に送信する。
ストレージ装置7は、大容量の記憶装置であり、1又は複数の記憶デバイスから形成される記憶部40と、記憶部40に対するデータの入出力を制御する制御部41とを備えて構成される。
記憶部40の記憶デバイスとしては、例えばSCSI(Small Computer System Interface)ディスク等の高価なディスクや、SATA(Serial AT Attachment)ディスク又は光ディスク等の安価なディスク、又は半導体メモリなどが適用される。この場合、複数種類の記憶デバイスを記憶部40に設けるようにしても良い。記憶部40が提供する記憶領域に上述のリレーショナルデータベース42のデータが格納される。
また制御部41は、CPU及びメモリ等の情報処理資源を備えて構成され、通信ネットワーク6に接続される。制御部41は、第2の通信ネットワーク6を介してデータベースサーバ装置5のRDBMS36から与えられるSQLに従って、RDBMS36から与えられたデータをリレーショナルデータベース42に格納し、又は要求されたデータをリレーショナルデータベース42から読み出して第2の通信ネットワーク6を介してRDBMS36に転送する。
なお、第1の通信ネットワーク3としては、例えばLAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを適用することができ、第2の通信ネットワーク6としては、ファイバチャネル等で構成されるネットワーク(例えばSAN(Storage Area Network))を適用することができる。
図2は、サーバ装置4の記憶部24に保持されるCIMアダプタ共通部25の構成例を示す。CIMアダプタ共通部25は、登録された1又は複数のXMLスキーマ変換ツールを記憶保持するための記憶領域50、登録された1又は複数のリレーショナルデータベーステーブル作成ツールを記憶保持するための記憶領域51、登録された1又は複数のJava変換ツールを記憶保持するための記憶領域52、登録された1又は複数のO/Rマップツールを記憶保持するための記憶領域53、及び、登録された1又は複数のJava変換スクリプトを記憶保持するための記憶領域54を備える。ただし、これらの記憶領域50〜54を当初からすべて設けるのではなく、対応するツールが登録された段階で対応する記憶領域50〜54を追加していくようにしても良い。
なお、図2は、XMLスキーマ変換ツールとして「EA Tool」、RDBテーブル作成ツールとして「EA Tool」、Java変換ツールとして「JAXB」及び「Original Tool」、O/Rマップツールとして「MyBatis」、Java変換スクリプトとして「Script1」及び「Script2」が登録された例を示している。
図3は、CIMアダプタ相違部26の構成例を示す。この図3からも明らかなように、CIMアダプタ相違部26は、出力用プロファイル60、XMLスキーマデータファイル61、リレーショナルデータベーステーブル作成用SQLファイル62、Javaクラスファイル63、CIM/XML対応Javaクラスファイル64、データ取得SQLファイル65、O/Rマップ定義ファイル66、取得関数定義ファイル67及びサーブレットプログラム68を備えて構成される。
出力用プロファイル60は、1又は複数のCMIプロファイルに対応する1又は複数のデータ出力形式(出力用サブセット)と、そのデータ出力形式に対応するCIMアダプタ相違部26を生成する際に利用すべきツールの組合せとを規定したプロファイルであり、CIMアダプタの開発者により設定される。図19について後述するように、出力用プロファイル60では、図10について後述する利用ツール情報80(図10)で設定されている複数のツールの組合せのうち、そのデータ出力形式に対応するCIMアダプタ相違部26を生成する際に利用すべきツールの組合せと、図5について後述するS−Pマッピング情報70(図5)で設定されているサブセットIDとが指定される。
またXMLスキーマデータファイル61は、対応するCIMプロファイルをXMLスキーマ変換ツールを用いて変換処理することにより得られた例えば図20に示すようなXMLスキーマデータが格納されたファイルである。
リレーショナルデータベーステーブル作成用SQLファイル62は、そのCIMプロファイルを構成するJavaクラスに対応するリレーショナルデータベーステーブルをリレーショナルデータベース内に作成するための例えば図21に示すようなSQL(リレーショナルデータベーステーブル作成用SQL)が格納されたファイルである。
Javaクラスファイル63は、XMLスキーマデータをJavaクラスに変換した例えば図22に示すようなデータが格納されたファイルであり、CIM/XML対応Javaクラスファイル64は、JavaクラスをCIM/XML対応のJavaクラスに変換した例えば図23に示すようなデータが格納されたファイルである。
さらにデータ取得SQLファイル65は、対応するリレーショナルデータベーステーブルからデータを取得するための例えば図24に示すようなSQL(データ取得SQL)が格納されたファイルであり、O/Rマップ定義ファイル66は、そのCIMアダプタ相違部26における例えば図25に示すような、Javaクラスのオブジェクトとリレーショナルデータベースの対応するテーブルとを対応付けるマッピング情報でなるO/Rマップ定義が格納されたファイルである。さらに取得関数定義ファイル67は、リレーショナルデータベーステーブルから必要なデータを取得するための関数である例えば図26に示すような取得関数が格納されたファイルであり、サーブレットプログラム68は、そのCIMアダプタ相違部26を呼び出すための例えば図27に示すようなプログラムである。
これらのファイルのうちXMLスキーマデータファイル61、リレーショナルデータベーステーブル作成用SQLファイル62、Javaクラスファイル63は、そのCIMアダプタ相違部26や当該CIMアダプタ相違部26に対応するリレーショナルデータベーステーブルをリレーショナルデータベース内に生成する際に利用される。
またデータ取得SQLファイル65、O/Rマップ定義ファイル66及び取得関数定義ファイル67は、そのCIMアダプタ相違部26を生成した段階で必要なコードが格納されて完成し、実際にクライアント計算機2から与えられたリード要求やライト要求に応じて、クライアント計算機2からXML形式で与えられたCIMデータを対応するリレーショナルデータベーステーブルに格納し、又は、リレーショナルデータベーステーブルから読み出したデータをXML形式に変換してクライアント計算機2に送信する際のデータ形式の変換で利用される。
実際上、サーバ装置4には、いずれかのサーブレットプログラム68を指定したリード要求やライト要求がクライアント計算機2から与えられる。そしてサーバ装置4は、例えば、ライト要求及びライト対象のCIMデータがクライアント計算機2から与えられた場合には、そのCIMデータのデータ形式をCIM/XML対応Javaクラスファイル64を用いてXML形式からリレーショナルデータベースに応じたデータ形式に変換し、変換後のデータをO/Rマップ定義ファイル66及び取得関数定義ファイル67を利用して対応するリレーショナルデータベースのテーブルに格納する。
またサーバ装置4は、リード要求がクライアント計算機2から与えられた場合には、対応するデータをデータ取得SQLファイル65、O/Rマップ定義ファイル66及び取得関数定義ファイル67を利用してリレーショナルデータベースの対応するテーブルから読み出し、そのデータ形式をCIM/XML対応Javaクラスファイル64を用いてリレーショナルデータベースに応じたデータ形式からXML形式のデータに変換し、これをクライアント計算機2に送信する。
図4は、サーバ装置4の記憶部24に格納されたCIMアダプタ生成部27が保持するマッピング情報28の具体的な構成を示す。この図4に示すように、マッピング情報28は、それぞれ予めユーザにより定義されたS−Pマッピング情報70、P−C−Tマッピング情報71、T−SIマッピング情報72及びSI−SQLマッピング情報73から構成される。
このうちS−Pマッピング情報70は、出力用サブセットと、CIMプロファイルのプロファイル名及びそのバージョンとの対応関係を表す情報であり、図5に示すように、出力用サブセットID欄70A、プロファイル名欄70B及びバージョン欄70Cを備えるテーブル構造を有する。
そして出力用サブセットID欄70Aには、各出力用サブセットに対してそれぞれ付与された識別子(サブセットID)が格納され、プロファイル名欄70B及びバージョン欄70Cには、それぞれその出力用サブセットに対応するCIMプロファイルの名前(プロファイル名)とそのバージョンとがそれぞれ格納される。
従って、図5の例の場合、「Sub1」というサブセットIDの出力用サブセットは、「Profile1」というプロファイル名のバージョンが「1.0」のCIMプロファイルと、「Profile2」というプロファイル名のバージョンが「1.0」のCIMプロファイルとが対応付けられていることが示されている。
またP−C−Tマッピング情報71は、CIMプロファイル及びそのバージョンとJavaのクラス及びリレーショナルデータベース42(図1)上のテーブルとの対応関係を表す情報であり、図6に示すように、プロファイル名欄71A、バージョン欄71B、Javaクラス名欄71C及びリレーショナルデータベーステーブル名欄71Dを備えるテーブル構造を有する。
そしてプロファイル名欄71A及びバージョン欄71Bには、それぞれ各CIMプロファイルのプロファイル名及びそのバージョン名がそれぞれ格納され、Javaクラス名欄71Cには、そのプロファイル名及びバージョンのCIMプロファイルと対応付けられた各Javaクラスのクラス名がそれぞれ格納される。またリレーショナルデータベーステーブル名欄71Dには、対応するJavaクラスと1対1で対応付けられたリレーショナルデータベース42上のテーブルのテーブル名が格納される。
従って、図6の例の場合、「Profaile1」というプロファイル名の「1.0」というバーションのCIMプロファイルについては、「AAAA」、「BBBB」「CCCC」及び「DDDD」という4つのJavaクラスと対応付けられており、このうち例えば「AAAA」というJavaクラスについては、リレーショナルデータベース42上の「T_AAAA」というテーブル名のテーブルと対応付けられていることが示されている。
T−SIマッピング情報72は、ストレージ装置7に格納されたリレーショナルデータベース42上の各テーブルと当該テーブルを参照するためのSQLとの対応関係を表す情報であり、図7に示すように、リレーショナルデータベーステーブル名欄72A及びSQL ID欄72Bを備えるテーブル構造を有する。
そしてリレーショナルデータベーステーブル名欄72Aには、ストレージ装置7に格納されたリレーショナルデータベース42の各テーブルのテーブル名がそれぞれ格納され、SQL ID欄72Bには、対応するテーブルについて使用可能な各SQLの識別子(SQL ID)がそれぞれ格納される。
従って、図7の例の場合、例えばリレーショナルデータベース42上の「T_AAAA」というテーブル名のテーブルや「T_BBBB」というテーブル名のテーブルについては、「1」又は「2」というSQL IDが付与された2種類のSQLが使用可能であり、「T_CCCC」というテーブル名のテーブルについては、かかる2種類のSQL文に加えて、「3」というSQL IDが付与されたSQLについても使用可能であることが示されている。
さらにSI−SQLマッピング情報73は、SQL ID及びSQLの対応関係を表す情報であり、図8に示すように、SQL ID欄73A及びSQL欄73Bを備えたテーブル構造を有する。そしてSQL_ID欄73Aには、各SQLに対してそれぞれ付与された識別子(SQL ID)が格納され、SQL欄73Bには、対応するSQL IDが付与されたSQLの具体的な内容が格納される。
従って、図8の例の場合、例えば、「1」というSQL IDが付与されたSQLの内容は「Select*Rrom[T];」([T]というテーブルのすべての情報を取得)であることが示されている。
一方、管理情報29は、図9に示すように、利用ツール情報80、Java変換ルール情報81、O/Rマップ定義情報82及び取得関数定義情報83から構成される。
このうちJava変換ルール情報81は、後述のようにCIMアダプタ生成部27が、XMLスキーマデータに変換されたCIMプロファイルのデータをJava変換ツールを用いてJavaクラスに変換する際のルールに関する情報であり、図11に示すように、Java変換ルールID欄81A、Java変換ルール内容欄81B及びスクリプトパス名欄81Cを備えるテーブル構造を有する。
そしてJava変換ルールID欄81Aには、予めユーザにより作成された各Java変換ルールに対してそれぞれ付与された識別子(Java変換ルールID)が格納される。ここで、Java変換ルールとは、クライアント計算機2らのCIMデータをJava変換ツールによりJavaプログラムコードに変換し又はその逆の変換を行う際のルールを指す。
またJava変換ルール内容欄81Bには、対応するJava変換ルールの具体的な内容が格納され、スクリプトパス名欄81Cには、対応するJava変換ルール内容の処理をスクリプト化することにより得られたスクリプトへの絶対パス名が格納される。
またO/Rマップ定義情報82は、CIMアダプタ生成部27が出力するO/Rマップの定義に関する情報であり、図12に示すように、O/Rマップ定義ID欄82A及びO/Rマップ定義内容欄82Bを備えて構成される。
そしてO/Rマップ定義ID欄82Aには、予めユーザにより作成された各O/Rマップ定義に対してそれぞれ付与された識別子(O/Rマップ定義ID)が格納され、O/Rマップ定義内容欄82Bには、対応するO/Rマップ定義の具体的内容が格納される。
従って、図12の例の場合、「1」というO/Rマップ定義IDが付与されたO/Rマップの定義がこの図12に示すような内容であることが示されている。なお、図12で示したO/Rマップ定義内容欄82Bにおいて破線DL1で囲んだ箇所が、CIMアダプタ生成部27によってリレーショナルデータベーステーブル毎に追加出力される箇所である。
取得関数定義情報83は、CIMアダプタ生成部27が出力する取得関数の定義に関する情報であり、図13に示すように、取得関数定義ID欄83A及び取得関数定義内容欄83Bを備えたテーブル構造を有する。
そして取得関数定義ID欄83Aには、予めユーザにより作成された各取得関数に対してそれぞれ付与された識別子(取得関数定義ID)が格納され、取得関数定義内容欄83Bには、対応する取得関数の定義内容が格納される。
従って、この図13の例の場合「1」という取得関数定義IDが付与された取得関数の定義がこの図13に示すような内容であることが示されている。なお、図13で示した取得関数定義内容欄83Bにおいて破線DL2〜DL4でそれぞれ囲んだ箇所が、CIMアダプタ生成部27によってリレーショナルデータベーステーブル毎に追加出力される箇所である。
利用ツール情報80は、CIMアダプタ生成部27が各種出力用プロファイルにそれぞれ対応させたCIMアダプタ相違部26を生成する際に利用するJava変換用ツール、Java変換ルール、O/Rマップツール、O/Rマップ定義及び取得関数定義の組合せを定義した情報であり、図10に示すように、利用ツールID欄80A、Java変換用ツール欄80B、Java変換ルールID欄80C、O/Rマップツール欄80D、O/Rマップ定義ID欄80E及び取得関数定義ID欄80Fを備えるテーブル構造を有する。
そして利用ツールID欄80Aには、利用するツール等の各組合せに対してそれぞれ付与された識別子(利用ツールID)が格納され、Java変換用ツール欄80Bには、予め複数用意されたJava変換ツール(CIMデータをJavaプログラムコードに変換し、その逆の変換を行うツール)のうち、対応するツール等の組合せ(以下、これをツール組合せと呼ぶ)において使用すべきJava変換ツールの名称が格納される。
またJava変換ルールID欄80Cには、上述のようにJava変換ルール情報81に含まれる各種Java変換ルールのうち、そのツール組合せで使用すべきJava変換ルールの識別子(Java変換ルールID)が格納される。
またO/Rマップツール欄80Dには、予め複数用意されたO/R(Object/Relational)マップツールのうち、対応するツール組合せにおいて使用すべきO/Rマップツールの名称が格納される。ここで、O/Rマップツールとは、Javaのオブジェクトの各データをリレーショナルデータベースのレコードを構成する個々の項目と関連付け、リレーショナルデータベースのレコードをオブジェクトとして直感的に扱えるようにするツールである。
さらにO/Rマップ定義ID欄80Eには、上述のようにO/Rマップ定義情報82に含まれる各種O/Rマップ定義のうち、そのツール組合せにおいて使用すべきO/Rマップ定義の識別子(O/Rマップ定義ID)が格納され、取得関数定義ID欄80Fには、上述のように取得関数定義情報83のうち、そのツール組合せにおいて使用すべき取得関数定義の識別子(取得関数定義ID)が格納される。
図14は、ユーザがサーバ装置4の入出力部23を所定操作することにより、当該入出力部23を構成する液晶ディスプレイ等の出力部に表示させ得るマッピング情報/管理情報設定画面90を示す。ユーザは、このマッピング情報/管理情報設定画面90を用いて上述のマッピング情報28及び管理情報29を所望状態に設定することができる。
このマッピング情報/管理情報設定画面90には、図4〜図8について上述したマッピング情報28を構成するS−Pマッピング情報70、P−C−Tマッピング情報71、T−SIマッピング情報72及びSI−SQLマッピング情報73と、図9〜図13について上述した管理情報29を構成する利用ツール情報80、Java変換ルール情報81、O/Rマップ定義情報82及び取得関数定義情報83とにそれぞれ対応させたタブ91A〜91Hが設けられている。
また各タブ91A〜91Hには、それぞれそのタブ91A〜91Hに対応する情報(S−Pマッピング情報70、P−C−Tマッピング情報71、T−SIマッピング情報72、SI−SQLマッピング情報73、利用ツール情報80、Java変換ルール情報81、O/Rマップ定義情報82又は取得関数定義情報83)を設定するための設定エリア92が設けられ、その設定エリア92内に図5〜図8、図10〜図13にそれぞれ示した対応するテーブルと同じ形態のテーブル93が表示される。この場合、そのテーブル93の各欄には、それぞれユーザが所望する設定値を入力することができ、かくしてユーザがマッピング情報28や管理情報29を所望する内容に設定することができるようになされている。
またマッピング情報/管理情報設定画面90の右下側には、保存ボタン94及び取消しボタン95が表示される。そして、マッピング情報/管理情報設定画面90では、各タブ91A〜91Hを用いてマッピング情報28や管理情報29を所望する内容に設定した後、保存ボタン94をクリックすることにより、そのとき設定したマッピング情報28及び管理情報29の各設定値を保存することができ、取消しボタン95をクリックすることにより、各タブ91A〜91Hを用いて設定したマッピング情報28や管理情報29の設定値を保存することなく取り消すことができるようになされている。
なお、本実施の形態においては、マッピング情報28及び管理情報29の設定に、マッピング情報/管理情報設定画面90を用いているが、例えば設定ファイルに各情報の設定値を書き込んでおき、当該設定ファイルを読込んで各情報の設定を行えるようにしても良い。
(2)CIMアダプタ相違部の生成
(2−1)CIMアダプタ開発者の作業
図15は、CIMアダプタ相違部26を生成する際の作業手順を示す。この作業は、CIMアダプタ開発者が実行することを想定しているが、システム管理者等、別の人が行っても良い。なお、CIMプロファイルの要件定義、及び設計は定義済みであり、例えば、図18に示すようなCIMプロファイルのRDF形式のデータが既に作成されているものとする。
CIMアダプタ開発者は、CIMアダプタ相違部26を生成する場合、まず、図3について上述した各ファイル60〜67及びサーブレットプログラム68を格納するためのディレクトリをサーバ装置4の記憶部24(図1)内に作成する(S1)。
続いて、CIMアダプタ開発者は、新たなCIMプロファイルに対応する新たな出力用プロファイル60(図3)を作成し、作成した出力用プロファイル60をステップS1で作成したディレクトリに格納する(S2)。
図19は、出力用プロファイル60の構成例を示す。この例において、1つの行が1つの出力用サブセットに対応しており、複数の行を定義することによって複数の出力用サブセットを指定することができる。1つの行では、「ToolID=」の後に後述する利用ツール情報80(図10)で設定されている利用ツールIDが指定され、「SubsetID=」の後に後述するS−Pマッピング情報70(図5)で設定されているサブセットIDが指定される。例えば、図19において、「ToolID=1, SubsetID=Sub1」は、「Java変換用ツールとして『JAXB』を用いて、Java変換ルールIDが『1』のJava変換を行い、O/Rマップツールとして『MyBatis』を使い、O/Rマップ定義IDが『1』のO/Rマップ定義内容に沿ったO/Rマップ定義情報のコードを出力し、取得関数定義IDが『1』の取得関数定義内容に沿った取得関数定義情報のコードを出力する」という処理を、「サブセットIDが『Sub1』に対応する『Profile1』と『Profile2』に対して行う」ということを表す。
次いで、CIMアダプタ開発者は、CIMアダプタ共通部25のXMLスキーマツールに対応する記憶領域50(図2)に格納されているXMLスキーマツールを用いて、例えば図18に示すような設計済みのCIMプロファイルのPDF化されたデータをXMLスキーマデータ(図20)に変換し、このXMLスキーマデータをステップS1で作成したディレクトリにXMLスキーマデータファイル61(図3)として格納する(S3)。
なお、CIMアダプタ共通部25のかかる記憶領域50に複数のXMLスキーマツールが格納されている場合には、その中から1つのXMLスキーマツールを選択してステップS3の処理を行い、かかる記憶領域50にXMLスキーマツールが格納されていない場合には、このステップS3を手作業で行う。
この後、CIMアダプタ開発者は、CIMアダプタ共通部25のリレーショナルデータベーステーブル作成ツールに対応する記憶領域51(図2)に格納されているリレーショナルデータベーステーブル作成ツールを用いて、設計済みのCIMプロファイルのカスタマイズを行うことによりリレーショナルデータベーステーブル作成用のSQL(図21参照)を作成し、作成したSQLをリレーショナルデータベーステーブル作成用SQLファイル62(図3)としてステップS1で作成したディレクトリに格納する(S4)。
なお、CIMアダプタ共通部25のかかる記憶領域51に複数のリレーショナルデータベーステーブル作成ツールが格納されている場合には、その中から1つのリレーショナルデータベーステーブル作成ツールを選択してステップS4の処理を行い、かかる記憶領域51にリレーショナルデータベーステーブル作成ツールが格納されていない場合には、このステップS4を手作業で行う。なお、CIMプロファイルのカスタマイズとは、例えば設計済みCIMプロファイルにおける参照制約の解除等である。
続いて、CIMアダプタ開発者は、CIMアダプタ共通部25のJava変換ツールに対応する記憶領域52(図2)に格納されているJava変換ツールを用いて、ステップS3において得られたXMLスキーマデータファイル61のデータをJavaクラスのデータ(図22参照)に変換し、このデータをステップS1で作成したディレクトリにJavaクラスファイル63(図3)として格納する(S5)。
この際、CIMアダプタ共通部25のかかる記憶領域52に複数のJava変換ツールが格納されている場合には、その中から1つ選択してこのステップS5の処理を行い、かかる記憶領域52にJava変換ツールが格納されていない場合には、このステップS5を手作業で行う。なお、このステップS5の処理により、XMLスキーマデータに応じて複数のJavaクラスのファイルが作成される。
次いで、CIMアダプタ開発者は、ステップS4で作成したリレーショナルデータベーステーブル作成用SQL(図21)をデータベースサーバ装置5のRDBMS36(図1)に送信する。このリレーショナルデータベーステーブル作成用SQLを受付けたRDBMS36は、当該リレーショナルデータベーステーブル作成用SQLを実行し、指定されたテーブルを作成する(S6)。なお、図21に示すリレーショナルデータベーステーブル作成SQLはテーブル作成のみのSQLを記載しているが、必要に応じて索引を作成するSQLを追加しても良い。
この後、CIMアダプタ開発者は、S−Pマッピング情報70、P−C−Tマッピング情報71、T−SIマッピング情報72及びSI−SQLマッピング情報73をそれぞれ設定すると共に(S7)、利用ツール情報80、Java変換ルール情報81、O/Rマップ定義情報82及び取得関数定義情報83をそれぞれ設定する(S8)。これらの情報の設定は、図14について上述したマッピング情報/管理情報設定画面90を用いて行っても良いし、各情報の設定値を記載した設定ファイルを読込んで行うものとしても良い。また、設定済みの情報を使用するのであれば、改めて設定する必要はない。
続いて、CIMアダプタ開発者は、サーバ装置4を操作して、当該サーバ装置4に図16について後述するCIMインタフェース生成処理を実行させる(S9)。なお、CIMインタフェース生成処理の実行にあたっては、ステップS1で作成したディレクトリを指定する。これにより、このディレクトリをベースとするCIMアダプタ相違部26がCIMインタフェース生成処理により生成される。
そしてCIMアダプタ開発者は、この後、このとき作成したCIMアダプタ相違部26のサーブレットプログラム68(図3)を作成し、作成したサーブレットプログラム68をステップS2で作成したディレクトリに格納する(S10)。以上により、このCIMアダプタ相違部生成作業が完了する。
なお、ステップS10において、サーブレットプログラム68のテンプレートをCIMアダプタ生成部27がファイルに出力してステップS2で作成したディレクトリに格納しておき、CIMアダプタ開発者が当該ファイル内の必要箇所に記入するとしても良い。また、別のCIMアダプタ相違部26からサーブレットプログラム68をコピーし、必要な箇所を修正するとしても良い。
(2−2)CIMインタフェース生成処理
図16は、図15について上述したアダプタ相違部生成作業のステップS9において、CIMアダプタ開発者によりCIMアダプタ相違部26の生成を指示されたサーバ装置4のCIMアダプタ生成部27により実行されるCIMインタフェース生成処理の処理手順を示す。CIMアダプタ生成部27は、CIMアダプタ開発者からCIMアダプタ相違部26の生成を指示されると、この図16に示す処理手順に従って、対応するCIMアダプタ相違部26を生成する。
実際上、CIMアダプタ生成部27は、CIMアダプタ相違部26の生成を指示されると、このCIMインタフェース生成処理を開始し、まず、図15のステップS7及びステップS8においてCIMアダプタ開発者により設定されたマッピング情報28及び管理情報29に基づいてデータ取得SQLファイル65(図3)、O/Rマップ定義ファイル66(図3)、取得関数定義ファイル67(図3)をそれぞれ作成し、作成したこれらのファイル65〜67を図15のステップS2で作成されたディレクトリにオープンする(S20)。
続いて、CIMアダプタ生成部27は、図15のステップS2においてそのディレクトリ内に格納された出力用プロファイル60の未処理の1行分を読み出し、「ToolID」及び「SubsetID」として指定されているツールIDとサブセットIDを特定する(S21)。例えば、図19に例示した出力用プロファイル60の場合、1行目については、ツールIDとして「1」、サブセットIDとして「Sub1」が特定されることになる。
次いで、CIMアダプタ生成部27は、S−Pマッピング情報70(図5)を参照して、ステップS21で特定したサブセットIDに対応するプロファイル及びバージョンを特定する(S22)。例えば、図19の1行目の例の場合、ステップS21で特定されるサブセットIDが「Sub1」であるため、S−Pマッピング情報70が図5の内容である場合には、このステップS22において、バージョンが「1.0」の「Profile1」と、バージョンが「1.0」の「Profile2」が特定されることになる。
さらにCIMアダプタ生成部27は、P−C−Tマッピング情報71(図6)を参照して、ステップS22で特定したプロファイル及びバージョンに対応するJavaクラス及びリレーショナルデータベーステーブルを特定する(S23)。例えば、ステップS22で特定したプロファイル及びバージョンが上述のようにそれぞれ「Profile1」及び「1.0」であり、P−C−Tマッピング情報71が図6の内容である場合には、このステップSP23において、Javaクラスとして「AAAA」、「BBBB」、「CCCC」及び「DDDD」が特定され、リレーショナルデータベーステーブルとして「T_AAAA」、「T_BBBB」、「T_CCCC」及び「T_DDDD」が特定されることになる。
続いて、CIMアダプタ生成部27は、ステップS23で特定したJavaクラス及びリレーショナルデータベーステーブルの組について、データ取得SQLファイル65(図3)、O/Rマップ定義ファイル66(図3)及び取得関数定義ファイル67(図3)のそれぞれにコードを追記する、図17について後述するコード出力処理を実行する(S24)。
この後、CIMアダプタ生成部27は、ステップS23で特定したすべてのリレーショナルデータベーステーブルについてコード出力処理を実行し終えたか否かを判断する(S25)。そしてCIMアダプタ生成部27は、この判断で否定結果を得るとステップS24に戻り、ステップS23で特定したリレーショナルデータベーステーブルのうちの未処理の各リレーショナルデータベーステーブルに対するコード出力処理を繰り返す。
この結果、例えば、ステップSP23で特定したJavaクラス及びリレーショナルデータベーステーブルの組が「AAAA」+「T_AAAA」、「BBBB」+「T_BBBB」、「CCCC」+「T_CCCC」及び「DDDD」+「T_DDDD」の4つである場合、合計4回、それぞれのJavaクラス及びリレーショナルデータベーステーブルの組に対してコード出力処理1000が実行されることになる。
そしてCIMアダプタ生成部27は、やがてステップS23で特定したすべてのリレーショナルデータベーステーブルに対してコード出力処理を実行し終えることによりステップS25で肯定結果を得ると、ステップS22で特定したプロファイル及びバージョンの全てに対して、ステップS23〜ステップS25の処理を実行し終えたか否かを判断する(S26)。
CIMアダプタ生成部27は、この判断で否定結果を得ると、ステップS23に戻り、この後、ステップS26で肯定結果を得るまでステップS23〜ステップSP26の処理を繰り返す。
そしてCIMアダプタ生成部27は、やがてステップS22で特定したすべてのプロファイル及びバージョンに対してステップS23〜ステップS25の処理を実行し終えることによりステップS26で肯定結果を得ると、ステップS22で読み出したすべてのサブセットに対してステップS22〜ステップS26の処理を実行し終えたか否かを判断する(S27)。
CIMアダプタ生成部27は、この判断で否定結果を得ると、ステップS22に戻り、この後、ステップS27で肯定結果を得るまでステップS22〜ステップS27の処理を繰り返す。
そしてCIMアダプタ生成部27は、やがてステップS22で出力用プロファイル60(図3)から読み出したすべてのサブセットに対してステップS23〜ステップS26の処理を実行し終えることによりステップS27で肯定結果を得ると、データ取得SQLファイル65(図3)、O/Rマップ定義ファイル66(図3)及び取得関数定義ファイル67(図3)をクローズし(S28)、この後、このCIMインタフェース生成処理を終了する。
図17は、かかるCIMインタフェース生成処理のステップS24においてCIMアダプタ生成部27により実行されるコード出力処理の具体的な処理内容を示す。
CIMアダプタ生成部27は、CIMインタフェース生成処理(図16)のステップS24に進むと、この図17に示すコード出力処理を開始し、まず、利用ツール情報80(図10)を参照して、CIMインタフェース生成処理のステップS21で特定したツールIDを元に、当該サブセットのコード出力で利用するツール組合せを特定する(S30)。
例えば、図10の例において、ステップS21で特定したツールIDが「1」であった場合、Java変換用ツールとして「JAXB」、Java変換ルールとしてJava変換ルールIDが「1」のJava変換ルール、O/Rマップツールとして「MyBatis」、O/Rマップ定義としてO/Rマップ定義IDが「1」のO/Rマップ定義、取得関数定義として取得関数定義IDが「1」の取得関数定義がそれぞれ特定されることになる。
続いて、CIMアダプタ生成部27は、Java変換ルール情報81(図11)を参照して、ステップS30で特定したツール組合せのうち、Java変換ルールIDに対応するJava変換ルール内容と、スクリプトパス名とを特定する(S31)。
例えば、図11において、ステップS30で特定したJava変換ルールIDが「1」であった場合、「XMLスキーマファイルを探索して、Roottクラスを特定し、当該クラスの『@XmiElement』を『XmiAttribute』に置換」、「XMLスキーマファイルを探索して、他CIMクラスへの参照があるクラスを特定し、参照元クラスのクラス変数をJava専用クラスに置換し、setter/getterを変更」及び「XMLスキーマファイルを探索して、他CIMクラスへの参照があるクラスを特定し、参照先クラスに参照専用クラスを追加」というJava変換ルール内容がそれぞれ特定され、これらJava変換ルール内容のスクリプトがそれぞれ「/Scr/Script1」、「/Scr/Script2」又は「/Scr/Script2」と特定されることになる。
次いで、CIMアダプタ生成部27は、Javaクラスファイル63(図3)のデータに対して、ステップS31で特定したJava変換ルール内容のスクリプトを実行することによりCIM/XML対応Javaクラスファイル64(図3)を作成し、作成したCIM/XML対応Javaクラスファイル64を図15のステップS1で作成したディレクトリに格納する(S32)。
例えば、図11において、ステップS30で特定したJava変換ルールIDが「1」であった場合、「/Scr/Script1」というスクリプトと「/Scr/Script2」というスクリプトとを実行し、該当するJavaクラスのCIM/XML対応Javaクラスファイル64を作成する。なお「/Scr/Script1」実行後のCIM/XML対応Javaクラスファイルの例を図23に示す。この例では、そのスクリプトによって変換対象となるRootクラスが特定され(図22のJavaクラス例)、そのJavaクラスをJavaクラス変換ルール内容に従って、図23の中で破線DL10で囲んだ箇所のような変換処理を行っている。
続いて、CIMアダプタ生成部27は、T−SIマッピング情報72(図7)及びSI−SQLマッピング情報73(図8)を参照して、CIMインタフェース生成処理(図16)のステップS23で特定したリレーショナルデータベースに対するSQLを特定し、特定したSQLのコードを図15のステップS2で作成したディレクトリに格納されているデータ取得SQLファイル65(図3)に追記する(S33)。
例えば、図7及び図8の例において、リレーショナルデータベーステーブルが「T_AAAA」の場合、データ取得SQLのコードとして出力するSQLは、SQL IDが「1」の「Select * From [T];」というSQL、SQL IDが「2」の「Select * From [T] Where nwmid=xxx;」というSQLが特定される。また、データ取得SQLファイル65にコードを追記する際は、各SQLの中の「[T]」の箇所に当該リレーショナルデータベーステーブル名(この場合、「T_AAAA」)を入れて書き出す。図24に示したデータ取得SQLのコードの出力例において、破線DL11で囲んだ箇所が、「T_AAAA」というリレーショナルデータベースに対して出力したコードの例である。
次いで、CIMアダプタ生成部27は、O/Rマップ定義情報82(図12)を参照して、ステップ30で特定したツール組合せのO/Rマップ定義IDに対応するO/Rマップ定義内容を特定する(S34)。
さらにCIMアダプタ生成部27は、図16のステップS23で特定したJavaクラス及びリレーショナルデータベーステーブルと、ステップS33で特定したSQL ID及びSQLとに基づいて、ステップS34で特定したO/Rマップ定義内容に従って、図15のステップS8で設定されたO/Rマップ定義ファイル66(図3)にコードを追記する(S35)。
例えば、図12の例において、O/Rマップ定義IDが「1」の場合、O/Rマップ定義内容欄82Bの破線DL1で囲まれた箇所をO/Rマップ定義ファイル66に追記していく。なお、O/Rマップ定義内容欄82Bにおけるそれ以外の箇所は、O/Rマップ定義ファイル66の作成時に記述しておく。図25に示したO/Rマップ定義出力例において、破線DL12で囲んだ箇所が、Javaクラスが「AAAA」、リレーショナルデータベーステーブルが「T_AAAA」、SQL IDが「1」及び「2」に対して出力したコードの例である。
この後、CIMアダプタ生成部27は、図16のステップS23で特定したリレーショナルデータベーステーブルで指定されているすべてのSQLに対してステップS33〜ステップS35の処理を実行したか否かを判断する(S36)。
そしてCIMアダプタ生成部27は、この判断で否定結果を得ると、ステップSP33に戻り、この後、ステップS36で肯定結果を得るまでステップS33〜ステップS36の処理を繰り返す。
そしてCIMアダプタ生成部27は、やがてステップS23で特定したリレーショナルデータベーステーブルで指定されているすべてのSQLについて、ステップS33〜ステップS35の処理を実行し終えることによりステップS36で肯定結果を得ると、取得関数定義情報83(図13)を参照して、ステップS30で特定したツール組合せのうち、取得関数定義IDに対応する取得関数定義内容を特定する(S37)。
続いて、CIMアダプタ生成部27は、ステップS23で特定したJavaクラスに基づいて、ステップS37で特定した取得関数定義内容に従って、図15のステップS8で設定された取得関数定義ファイル67(図3)にコードを追記する(S38)。
例えば、図13の例において、取得関数定義が「1」の場合、取得関数定義内容欄83Bの破線DL2〜DL4で囲まれた各箇所を取得関数定義ファイル67に追記していく。なお、取得関数定義内容におけるそれ以外の箇所は、取得関数定義ファイル67の作成時に記述しておく。図26に示した取得関数定義出力例において、破線DL13〜DL15で囲まれた箇所がJavaクラスが「AAAA」、Javaインスタンス名が「aAAA」に対して出力したコードの例である。なお、Javaインスタンス名は任意の文字列で良く、本例ではJavaクラスの先頭文字を小文字にした名前としている。
そしてCIMアダプタ生成部27は、この後、このコード出力処理1000を終了して図16のCIMインタフェース生成処理に戻る。
(3)本実施の形態の効果
以上の構成を有する計算機システム1では、サーバ装置4のCIMアダプタ生成部27が、CIMアダプタ相違部26のうちのデータ取得SQLファイル65、O/Rマップ定義ファイル66、取得関数定義ファイル67のコードを自動生成するため、CIMアダプタ開発者のCIMアダプタ開発工数を削減することができる。かくするにつき、本実施の形態の計算機システム1によれば、CIMアダプタを容易かつ短時間に作成することができる。
また本計算機システム1によれば、出力用プロファイル60に複数の出力用サブセットを指定することができ、また各出力用サブセットも複数のプロファイルを指定することができるため、様々なデータ出力形式、ひいては様々なCIMプロファイルに対応することができる。
さらに本計算機システム1によれば、リレーショナルデータベーステーブルとSQLのマッピング情報によって、必要なSQLだけのコードを出力することができるため、CIMアダプタ相違部26の規模を抑えることができるという効果をも得ることができる。
(4)他の実施の形態
以上、本実施の形態を説明したが、本発明はこの実施の形態に限定されるものではなく、その要旨を逸脱しなし範囲で種々変更可能である。
例えば、上述の実施の形態においては、、CIMアダプタ生成部27が、CIMアダプタ相違部26のうちのデータ取得SQLファイル65、O/Rマップ定義ファイル66、取得関数定義ファイル67のコードを自動生成し、CIMアダプタ相違部26を作成するが、上述のようにCIMアダプタ相違部26は、CIMプロファイルに1対1で対応するものであり、複数のCIMプロファイルに対して複数のCIMアダプタ相違部26が作成される。本手順以外でも、作成するCIMプロファイルの内部構造に最も近い既存CIMプロファイルを特定し、対応するCIMアダプタ相違部26をコピーして、差分の箇所のみコード修正を行う手段を用いても良い。また、作成するCIMプロファイルがない場合でも出力プロファイルだけを指定してCIMアダプタ相違部26を作成しても良い。
また上述の実施の形態においては、データモデルがCIMである場合について述べたが、本発明はこれに限らず、CIM以外のデータモデルについても本願発明を広く適用することができる。
さらに上述の実施の形態においては、マッピング情報及び管理情報をそれぞれ設定するためのインタフェースとして、図14に示すような画面構成を有するマッピング情報/管理情報設定画面90を適用するようにした場合について述べたが、本発明はこれに限らず、かかるインタフェースの構成としては、この他種々の構成を広く適用することができる。
1……計算機システム、2……クライアント計算機、4……サーバ装置、5……データベースサーバ装置、7……ストレージ装置、22,32……CPU、24,34……記憶部、25……CIMアダプタ共通部、26……CIMアダプタ相違部、27……CIMアダプタ生成部、28……マッピング情報、29……管理情報、36……RDBMS、42……リレーショナルデータベース、60……出力用ファイル、61……XMLスキーマデータファイル、62……リレーショナルデータベース作成用SQLファイル、63……Javaクラスファイル、64……CIM/XML対応Javaクラスファイル、65……データ取得SQLファイル、66……O/Rマップ定義ファイル、67……取得関数定義ファイル、68……サーブレットプログラム、70……S−Pマッピング情報、71……P−C−Tマッピング情報、72……T−SIマッピング情報、73……SI−SQLマッピング情報、80……利用ツール情報、81……Java変換ルール情報、82……O/Rマップ定義情報、83……取得関数定義情報、90……マッピング情報/管理情報設定画面。