(57)【特許請求の範囲】
【請求項１】
コンピュータシステムのメモリにストアされるオブジェクト指向装置において、データベースとオブジェクト指向リポジトリとの間でスキーマを同期化する方法であって、
ａ．事前に宣言された、タイプＴｙｐｅである変数オブジェクトＸを、前記方法を呼び出したオブジェクトによって初期化するステップ（１０４）と、
ｂ．前記データベースから前記オブジェクトＸの各属性に対する値を得るステップ（１０５）とを含み、
ｃ．前記オブジェクトＸの各属性について、前記データベースから得られた値と前記リポジトリ内に記憶される属性の値とを比較するステップ（１０７）と、
ｄ．前記比較するステップにおいて、何らかの差異が見つかったかどうかを判定するステップ（１０８）と、前記差異が見つかっていない場合、
ｅ．前記オブジェクトＸにおいて、さらに属性が存在するかどうかを判定するステップ（１１２）と、前記属性がさらに存在する場合、
ｆ．ステップｃにおいて差異が見つかった場合に、前記初期化されたオブジェクトが版付けされていなければ、前記オブジェクトを版付けするステップと、
ｇ．これらのステップｃからステップｅを繰返すステップとを含む、方法。
【請求項２】
ステップｅにおいて、前記変数Ｘにおいてさらに属性がないと判定された場合、
ｈ．前記オブジェクトＸが複合オブジェクトであるかどうかを判定するステップ（１１３）と、複合オブジェクトであれば、
ｉ．包含されるタイプＣｔｙｐｅのすべてのオブジェクトをさまざまな関連付けられるプロパティとともに前記データベースから得て、これらを第１のリストに記憶するステップ（１１４）と、
ｊ．前記リポジトリからタイプＣｔｙｐｅのすべての包含されるオブジェクトを得て、これらを第２のリストに記憶するステップ（１１６）と、
ｋ．前記第１のリストにおける各オブジェクトを前記第２のリストにおける各オブジェ
クトと比較するステップ（１１７）と、前記第２のリストには存在しない前記第１のリスト内で見つかった新しいオブジェクトの各々に対して問合せを行なうステップ（１１８）と、
ｌ．前記方法が引起こされた前記オブジェクトＸが既に版付けされていない場合は版付けするステップ（１２２）と、
ｍ．前記リポジトリ内でタイプＣｔｙｐｅの永続オブジェクトを構成し、前記第１のリストにおいて前記ステップｋにおいて見出された前記新しいオブジェクトのプロパティを用いることによって前記新しい永続オブジェクトのプロパティを設定するステップ（１２３）と、
ｎ．前記永続オブジェクトを前記オブジェクトＸに対する関連付けられるプロパティに追加するステップ（１２４）と、
ｏ．前記第１のリスト内にさらにオブジェクトがあるかどうかを判定し（１２５）、前記オブジェクトがさらにある場合には、前記ステップｋに戻るステップとを含む、請求項１に記載の方法。
【請求項３】
前記ステップｈにおいて複合オブジェクトではないと判定された場合、前記方法を終了するステップをさらに含む（１１３、１２８）、請求項２に記載の方法。
【請求項４】
前記ステップｋにおいて前記第２のリストには存在しない新しいオブジェクトが前記第１のリストにおいて見出されなかったと判定された場合、
ｐ．前記第１のリストにおいて見出されなかったいずれかのオブジェクトが前記第２のリストにおいて見出されるかどうかを判定するステップ（１１９）と、見出された場合、
ｑ．前記方法が呼出された前記オブジェクトＸが既に版付けされていない場合は版付けするステップ（１２０）と、
ｒ．前記第１のリストにおいて見出されなかった各オブジェクトを前記オブジェクトＸに対する関連付けられたプロパティから除去するステップ（１２１）とをさらに含む、請求項２に記載の方法。
【請求項５】
ステップｈの後に、さらに包含されるオブジェクトがある場合に請求項２のステップｉからステップｎを繰返すステップ（１２７）をさらに含む、請求項２に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この特許の開示の一部分には著作権保護の対象となる材料が含まれる。この著作権の所有者は、特許商標庁の特許書類または記録に表わされるように特許開示のファクシミリ複写を行なうことに何ら異論はないが、これ以外の場合にはすべての著作権を留保する。
【０００２】
この発明は一般的に、コンピュータシステムのためのデータベースに関し、特にオブジェクト指向リポジトリの使用による１つ以上のデータベースを管理するための改良された方法に関する。
【０００３】
【発明の背景】
コンピュータを使用する大企業では、さまざまな部門で典型的に異なるデータベースを用いており、スキーマ情報が重複していることがある。ここで用いられる用語「スキーマ」は、データベース内に記憶される他のデータについての情報またはその他のデータのドキュメンテーションをもたらす定義情報のことを意味する。企業内でのデータベースの拡散により、データベース管理者がデータを管理しかつ迅速に正確なスキーマ情報を提供することは非常に難しくなっている。また、部門ごとに互いに相互作用することなく自分のデータベースを管理してきたため、データの完全性が失われることがある。さらに、データベースはデータベーススキーマの履歴を維持しないため、管理者が古いバージョンに復元したり、またスキーマを効率よく作り管理することが難しい。バージョン管理をサポートするオブジェクト指向リポジトリにおいてデータベーススキーマの履歴を記憶し維持することによって、これらのスキーマをよりよく管理することができる。リポジトリにデータベーススキーマを記憶することにより、データのウェアハウジングが行なわれメタ情報へのアクセスが容易となる。
１９９８年１月２０日発行の「オブジェクト拡張方法」（ＯＢＪＥＣＴ ＥＸＴＥＮＤＩＮＧ ＭＥＴＨＯＤ）と題されたマルヤマ（Ｍａｒｕｙａｍａ）他による米国特許第５，７１０，９２０号に先行技術の方法が開示される。この文献に開示される方法では、オブジェクトの部分をデータベースに記憶することによってスキーマにおけるオブジェクトを拡張する。オブジェクト定義において何らかの変更が加えられると、同様に部分オブジェクトが変更される。部分オブジェクトとして保持される定義オブジェクトにおける変更により、オブジェクトがスキーマにおける変更に従って変更される。一方、本出願において開示されクレームされる発明は、データベースからオブジェクトを読みそれらオブジェクトをオブジェクト指向リポジトリ内に記憶する。この発明の方法では定義をオブジェクト指向リポジトリ内に記憶し、データベースにおいて変更が生じた場合にはその差異を記憶することによって異なったバージョンを作る。
１９９６年１２月３日発行の「企業のためのプロセスおよびシステムデータの履歴を維持する方法」（ＭＥＴＨＯＤ ＦＯＲ ＭＡＩＮＴＡＩＮＩＮＧ Ａ ＨＩＳＴＯＲＹ ＯＦ ＳＹＳＴＥＭ ＤＡＴＡ ＡＮＤ ＰＲＯＣＥＳＳＥＳ ＦＯＲ ＡＮ ＥＮＴＥＲＰＲＩＳＥ）と題されたポール・カーバー（Ｐａｕｌ Ｋｏｅｒｂｅｒ）およびロン・ノイバウアー（Ｒｏｎ Ｎｅｕｂａｕｅｒ）による米国特許第５，５８１，７５５号には別の先行技術の方法が開示される。この文献は、リポジトリとともに使用するための基本的なバージョン管理サービスを教示する。一方、本出願に開示される方法ではこのバージョンサービスを用いて１つのステップを実行するが、それ以外にはこの文献とは関連がない。
【０００４】
【発明の概要】
この発明の一実施例を用いるデータベース技術モデルでは、３つの機能、すなわちインポート、エクスポートおよびシンクロナイズが提供される。インポートおよびシンクロナイズ機能を用いて、ユーザはリポジトリにおいてデータベーススキーマのバージョン履歴を維持することができる。また、ユーザはデータベーススキーマをスキーマのリポジトリのバージョンで更新することができ、これは２つのデータベーススキーマの差異をデータ定義言語（ＤＤＬ）形式でファイルにエクスポートし、そのＤＤＬ文を用いてデータベースに変更を加えることによって行なわれる。
【０００５】
インポート、エクスポートおよびシンクロナイズオペレーションでは、レポートを生成しそのレポートをログファイルのインスタンスとしてリポジトリ内に記憶する。ユーザはそのレポートを以下のようなログファイルオペレーションを用いて見ることができる。
【０００６】
インポート：インポートオペレーションでは、データベースに接続し、カタログ情報を読み、その情報をリポジトリに記憶する。ＤＢ技術モデルの数多くのタイプはインポートオペレーションを有する。ユーザが複合オブジェクトをインポートする際、そのオブジェクトはインポートされ、そのオブジェクトが包含するすべての構成要素オブジェクトが再帰的にインポートされる。たとえば、関係データベースの場合、データベースオブジェクトがインポートされる際には表および手続きがインポートされる。また、表オブジェクトがインポートされる際には列、インデックス、キー、制約（ｃｏｎｓｔｒａｉｎｔ）およびトリガーがインポートされる。
【０００７】
エクスポート：エクスポートオペレーションでは、要求したスキーマデータをＤＤＬ形式でのファイルに送る。エクスポートではデータベーススキーマとリポジトリ内のスキーマのバージョンとの差異のみを送る。ＤＤＬ文を用いてデータベーススキーマを更新することができる。エクスポートオペレーションもインポートオペレーションと同じ態様で再帰的に機能する。
【０００８】
シンクロナイズ：シンクロナイズオペレーションでは、データベーススキーマが変化するにつれその履歴を維持する。シンクロナイズオペレーションでは、データベーススキーマ内のオブジェクトと、同じスキーマのリポジトリのコピーにおけるオブジェクトとを比較する。シンクロナイズオペレーションにより差異が見つかった場合、その差異をリポジトリにコピーし、次に大きいバージョン数を割当てる。シンクロナイズオペレーションはバージョン管理オペレーションを引起こし、このバージョン管理オペレーションではデータベースオブジェクトまでの複合階層構造におけるすべてのオブジェクトを版付けする。シンクロナイズオペレーションではバージョングラフにおいて傍系分岐（ｖａｒｉａｎｔ ｂｒａｎｃｈ）は作られず、主流分岐（ｍａｉｎｌｉｎｅ ｂｒａｎｃｈ）のみが作られる。シンクロナイズオペレーションはインポートおよびエクスポートオペレーションと同じ態様で再帰的に機能する。
【０００９】
この発明は、リポジトリ内のデータベーススキーマの履歴を同期化し維持することによってすべてのスキーマが記憶されることとなる共通の場所をもたらす方法およびよりよいスキーマ情報管理を容易にする方法を提供する。
【００１０】
【課題を解決するための手段】
より特定的には、この発明は、コンピュータシステムのメモリにストアされるオブジェクト指向装置において、データベースとオブジェクト指向リポジトリとの間でスキーマを同期化する方法である。この方法は、事前に宣言された、タイプＴｙｐｅである変数オブジェクトＸを、方法が呼び出されたオブジェクトによって初期化するステップ（１０４）と、データベースからオブジェクトＸの各属性に対する値を得るステップ（１０５）とを含む。オブジェクトＸの各属性に対し、データベースから得られた値とリポジトリ内に記憶される属性の値との比較が行なわれる（１０７）。次に、先行するステップにおいて何
らかの差異が見つかったかどうかについて判定が行なわれる（１０８）。差異が見つからなかった場合、オブジェクトＸ内にさらに属性が存在するかどうかについて判定が行なわれる（１１２）。属性が存在すれば（１１２にて「はい」）、このステップは繰り返される。属性がさらに存在する場合において（１１２にて「はい」）、その属性について差異が見つかったときに（１０８にて「はい」）、初期化されたオブジェクトが版付けされていなければ、オブジェクトが版付けされる（１１０）。
【００１１】
この発明の重要な特徴は、データベース内でスキーマが変化するにつれてリポジトリ内のデータベーススキーマの履歴を維持する能力である。
【００１２】
この発明の別の特徴は、オブジェクト指向リポジトリ環境においてデータベーススキーマを記憶しかつ管理する能力である。
【００１３】
この発明のさらに別の特徴は、リポジトリ内でデータベーススキーマを設計し、これを用いてデータベース内のスキーマ情報を作る能力である。
【００１４】
この発明のさらに他の目的、特徴および利点は以下の詳細な説明から当業者には容易に明らかになるであろう。以下の詳細な説明には、この発明を実施する上で考えられる最良のモードを単純に例示することによってこの発明の好ましい実施例のみが示され説明される。理解されるように、この発明は他のさまざまな実施例が可能であり、そのいくつかの詳細はさまざまな明らかな点においてすべてこの発明から逸脱することなく変更することができる。したがって、図面および説明はその性質において例示的なものであるとみなすべきで、限定的なものとみなされるべきではなく、開封勅許状によって保護することが意図される内容は添付の特許請求の範囲に提示される。
【００１５】
【一実施例の詳細な説明】
ここに説明する装置および方法を理解する上で助けとなるオブジェクト指向プログラミング概念およびその関連の定義の背景について以下に提示する。
【００１６】
オブジェクト指向プログラミングは、各々が何らかのタイプのインスタンスを表わすオブジェクトの協働する集合としてプログラムが編成される実装の方法と定義付けられる。グレイディー・ブーチ（Ｇｒａｄｙ Ｂｏｏｃｈ）による「オブジェクト指向分析および設計」（Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ Ａｎａｌｙｓｉｓ ａｎｄ Ｄｅｓｉｇｎ， １９９４）と題された文献を参照されたい。
【００１７】
オブジェクトとは、たとえば人、ソフトウェアパッケージまたは事象などの実世界の概念または事物を抽象的に表わしたものである。コンピュータシステムメモリでは、オブジェクトの状態はオブジェクトのタイプに対して定義付けられるインスタンス変数の値によって表わされる。たとえば、人オブジェクトの状態は氏名、生年月日および配偶者などであるかもしれない。
【００１８】
オブジェクトの振舞いはそのオブジェクトが実行できるオペレーションの組である。コンピュータシステムにおいて、オブジェクトの振舞いはオブジェクトのタイプに対して定義付けられるオペレーションによって表わされる。
【００１９】
コンピュータシステムのメモリ内のオブジェクトは実世界のエンティティまたは概念エンティティを表わす。オブジェクトは、そのエンティティについての情報を記憶するための名付けられたインスタンス変数を包含するメモリの一部分を占める。またオブジェクトは、情報にアクセスし情報を変更するためコンピュータプロセッサによって実行できるオペレーションをもたらす。
【００２０】
タイプ
タイプとは、オブジェクトが所有するインスタンス変数およびオペレーションを記述するテンプレートである。タイプはオブジェクトを作ったり、または識別したりするのに用いることのできるパターンを定義付けており、実際のオブジェクトを含まない。また、タイプは他のタイプのためのベースであってもよい。
【００２１】
タイプによって記述されるオブジェクトはそのタイプのインスタンスと称される。ベースタイプから得られるタイプはそのタイプのサブタイプと称される。他のタイプのみを定義付けるのに用いられオブジェクトを定義付けるのには用いられないタイプは抽象的であるといえる。
【００２２】
サブタイプの定義は、サブタイプがもたらされたベースタイプを識別する。タイプはそれ自体のサブタイプとはなり得ない。サブタイプはそのベースタイプのインスタンス変数およびオペレーションのすべてを引き継ぐ。サブタイプは新しいインスタンス変数およびオペレーションを追加することによってカストマイズできる。たとえば、従業員（Ｅｍｐｌｏｙｅｅ）のサブタイプとして定義付けられるマネージャ（Ｍａｎａｇｅｒ）と呼ばれるタイプは従業員のインスタンス変数およびオペレーションのすべてを引き継ぎ、かつそれ自体の付加的なインスタンス変数およびオペレーションを定義付けることになる。このように、マネージャというタイプのオブジェクトは従業員およびマネージャのタイプにより定義付けられるインスタンス変数のすべてを有し、両方のタイプにより定義付けられるオペレーションのすべてを有することとなる。
【００２３】
インスタンス変数
オブジェクトにより用いられるメモリはインスタンス変数を包含する。各インスタンス変数はタイプを有し、このタイプは変数に記憶できる値の範囲を定義付ける。
【００２４】
オペレーション
オペレーションとは、オブジェクトが所有する振舞いを表わす機能である。あるタイプに対して定義付けられるオペレーションは、そのタイプのオブジェクトのユーザによって見ることのできるインターフェイスを形成する。オペレーションは、そのオペレーションを引起こす際に呼ぶ側が提供しなければならない情報を識別するパラメータを有していてもよい。オペレーションがパラメータを有していない場合、呼ぶ側は単に所望のオブジェクトに対するオペレーションを引起こす。
【００２５】
メソッド
各々のオペレーションはメソッドと称されるコードのモジュールによって実装されなければならない。メソッドはオペレーションを完了するのに実行されるステップである。
【００２６】
複合オブジェクトとは、単一のオブジェクトとして扱われる一群のオブジェクトである。
【００２７】
リポジトリにより、ユーザはそのリポジトリが用いられる情報システムについての情報を記憶し、管理し、共有し、再利用することができる。リポジトリのおかげで、ユーザは情報システムによって処理されるデータ以上のものを記憶できる。たとえば、リポジトリに記憶される定義データは、データ、プログラムおよびシステムオブジェクトの記述を含む、アプリケーションの開発についての情報であってもよい。またこれは、データ、プログラムおよびシステムオブジェクトの関係についての情報と、その情報の用途および意味（ｓｅｍａｎｔｉｃｓ）とを含んでいてもよい。
【００２８】
定義情報の例には、給与管理アプリケーションを形成するファイルおよびプログラムが含まれているかもしれない。このアプリケーションは所与のレベルにおける最低給与および最高給与を規定するものかもしれない。別の例としては、定義情報を管理し維持するのに用いられる管理情報が挙げられる。また管理情報は、だれが定義情報を使用でき、いつどこでなぜその情報が用いられるのかを記述する。たとえば、給与管理アプリケーションには選ばれたグループのリポジトリユーザしかアクセスできないかもしれない。
【００２９】
さらに別の例としては、ユーザが動作を行なう環境についての動作情報が挙げられる。この情報の例には、システム構成、バックアップ情報およびスケジュールが含まれる。オブジェクト指向リポジトリについてのさらなる情報については、いずれも本出願の譲受人に譲渡される以下の米国特許のうち、１つ以上を参照されたい。
【００３０】
ポール・カーバー（Ｐａｕｌ Ｋｏｅｒｂｅｒ）による「オブジェクト指向リポジトリにおける、一群のオブジェクトを単一のオブジェクトとして扱う方法」（ＩＮ ＡＮ ＯＢＪＥＣＴ ＯＲＩＥＮＴＥＤ ＲＥＰＯＳＩＴＯＲＹ， Ａ ＭＥＴＨＯＤ ＦＯＲ ＴＲＥＡＴＩＮＧ Ａ ＧＲＯＵＰ ＯＦ ＯＢＪＥＣＴＳ ＡＳ Ａ ＳＩＮＧＬＥ ＯＢＪＥＣＴ）と題された第５，５５７，７９３号。
【００３１】
ポール・カーバーおよびロン・ノイバウアー（Ｒｏｎ Ｎｅｕｂａｕｅｒ）による「企業のためのプロセスおよびシステムデータの履歴を維持する方法」（Ａ ＭＥＴＨＯＤ ＦＯＲ ＭＡＩＮＴＡＩＮＩＮＧ Ａ ＨＩＳＴＯＲＹ ＯＦ ＳＹＳＴＥＭ ＤＡＴＡ ＡＮＤ ＰＲＯＣＥＳＳＥＳ ＦＯＲ ＡＮ ＥＮＴＥＲＰＲＩＳＥ）と題された第５，５８１，７５５号）。
【００３２】
ピーター・ジョンソン（Ｐｅｔｅｒ Ｊｏｈｎｓｏｎ）およびスリダール・イエンガー（Ｓｒｉｄｈａｒ Ｉｙｅｎｇａｒ）による「リポジトリにおけるオブジェクトモデリングをサポートする方法」（Ａ ＭＥＴＨＯＤ ＦＯＲ ＳＵＰＰＯＲＴＩＮＧ ＯＢＪＥＣＴ ＭＯＤＥＬＩＮＧ ＩＮ Ａ ＲＥＰＯＳＩＴＯＲＹ）と題された第５，６４４，７６４号。
【００３３】
ロン・ノイバウアーによる「企業のためのプロセスおよびシステムデータの履歴を示すバージョンツリーを縮小するための方法」（Ａ ＭＥＴＨＯＤ ＦＯＲ ＣＯＬＬＡＰＳＩＮＧ Ａ ＶＥＲＳＩＯＮ ＴＲＥＥ ＷＨＩＣＨ ＤＥＰＩＣＴＳ Ａ ＨＩＳＴＯＲＹ ＯＦ ＳＹＳＴＥＭ ＤＡＴＡ ＡＮＤ ＰＲＯＣＥＳＳＥＳ ＦＯＲ ＡＮ ＥＮＴＥＲＰＲＩＳＥ）と題された第５，６７１，３９８号。
【００３４】
ポール・カーバーおよびロン・ノイバウアーによる「企業のためのプロセスおよびシステムデータの履歴を示すバージョンツリー内で版付けされたオブジェクトを見つけ出す方法」（Ａ ＭＥＴＨＯＤ ＦＯＲ ＬＯＣＡＴＩＮＧ Ａ ＶＥＲＳＩＯＮＥＤ ＯＢＪＥＣＴ ＷＩＴＨＩＮ Ａ ＶＥＲＳＩＯＮ ＴＲＥＥ ＤＥＰＩＣＴＩＮＧ Ａ ＨＩＳＴＯＲＹ ＯＦ ＳＹＳＴＥＭ ＤＡＴＡ ＡＮＤ ＰＲＯＣＥＳＳＥＳ ＦＯＲ ＡＮ ＥＮＴＥＲＰＲＩＳＥ）と題された第５，７０１，４７２号。
【００３５】
次に図面を参照して、特に図１のブロック図では、この発明の方法を実行する、各々にそれぞれデータベース１５からデータベース１８が結合される複数のＣＰＵ１１からＣＰＵ１４と、汎用リポジトリ２０と、ＣＰＵ２１とが示される。ＣＰＵ１１−１４の各々は以下に例示するようにＣＰＵ２１に結合される。省略記号で示されるように、対応するデータベースを備えた４つ以上のＣＰＵがＣＰＵ２１に結合され得ることに注目されたい。以下にさらに詳しく説明するように、この発明の方法により、リポジトリ２０の使用によってデータベース１５−１８のためのスキーマ情報を管理することが可能となる。
【００３６】
次に図２を参照して、ブロック図にＣＰＵ１３、データベース１７およびリポジトリ２０の間での相互作用が示される。ＣＰＵ１３のＩ／Ｏポート２２とＣＰＵ２１のＩ／Ｏポート２３との間に示される３つの線は、上記に言及したデータベース技術モデルによりもたらされる３つの機能を示している。まず、線２４はインポートオペレーションを表わし、線２５はシンクロナイズオペレーションを表わし、線２６はエクスポートオペレーションを表わす。
【００３７】
インポート：このオペレーションは（引起こされると）データベースに接続し、カタログ情報を読み、リポジトリ内に情報を記憶する。このオペレーションが複合オブジェクトに対して呼出される場合、それ自体がインポートされ、次にそれが包含するすべてのオブジェクトが再帰的にインポートされる。「包含される」オブジェクトそのものが複合オブジェクトである場合、それ自身がインポートされてそれが包含するオブジェクトがインポートされる。たとえば、関係データベースの場合には、データベースオブジェクトがインポートされる際には表および手続きがインポートされる。表に対するインポートオペレーションが引起こされると、列、インデックス、キー、制約およびトリガーがインポートされる。
【００３８】
エクスポート：このオペレーションでは、データベーススキーマ情報をＤＤＬの形態でデータベースにエクスポートする。ＤＤＬは、データ定義言語（Ｄａｔａ Ｄｅｆｉｎｉｔｉｏｎ Ｌａｎｇｕａｇｅ）の省略形であり、これはデータベース内のオブジェクトのプロパティを作ったり変更したりするのに用いられ得る。エクスポートでは、データベーススキーマを比較した際に見つかった不一致のみがエクスポートされる。エクスポートはインポートが再帰的に働くのと同じ態様で再帰的に働く。
【００３９】
シンクロナイズ：このオペレーションは統合化（ｉｎｔｅｇｒａｔｉｏｎ）の最も重要な部分である。このオペレーションが引起こされると、データベースとリポジトリとの間でスキーマが同期化される。差異が見つかったオブジェクトはリポジトリにおいて版付けされ、これによってデータベース内でデータベーススキーマが変化するにつれてデータベーススキーマの履歴を維持する。インポートおよびエクスポートが再帰的に働くのと同様に、シンクロナイズも再帰的に働く。ここで別の重要な点は、「包含される」オブジェクトが版付けされると、「包含する側の」オブジェクトもまた版付けされることである。たとえば、列が版付けされると、これを包含する表もまた版付けされ、この表を包含するデータベースも版付けされる。３つのオペレーションはいずれも、ログファイルのインスタンスとしてリポジトリ内に記憶されることになるレポートを生成する。そうすることにより、クライアント側に居るユーザがログファイル内のオペレーションを用いることによってそのレポートを見ることができる。
【００４０】
次に図３を参照して、全般的なフローチャートによりインポートオペレーションが示される。プロセスは開始バブル３０から開始され、その後、データベースにログオンするステップが続く（ブロック３１）。次に、ログインが成功したかどうかについて問合せが行なわれる（菱形３２）。この問合せに対する回答が「いいえ」である場合、エラーが生じ（ブロック３３）プロセスから出る（バブル３４）。一方、ログインが成功した場合（菱形３２から「はい」の分岐）、適当なＯＤＢＣカタログ機能を用いて、このオペレーションが引起こされたオブジェクトに対するカタログ情報を読むことによってプロセスステップが実行される（ブロック３５）。
【００４１】
上記のステップの後、このオブジェクトのプロパティをデータベースから検索する（ブロック３６）。次に、検索した値を用いてオブジェクトのプロパティをリポジトリ内に設定する（ブロック３７）。次に、これが複合オブジェクトであるかどうかについて問合せが行なわれる（菱形３８）。この問合せに対する回答が「はい」である場合、さらに包含されるオブジェクトがあるかどうかについて別の問合せが行なわれる（菱形３９）。この第２の問合せに対する回答が「はい」である場合、ブロック３５によって示されるステップに戻り、次の包含されたオブジェクトを処理する。一方、この問合せに対する回答が「いいえ」である場合、または菱形３８によって示される問合せに対する回答が「いいえ」である場合、データベースからログアウトし（ブロック４０）プロセスから出る（バブル４１）。
【００４２】
次に図４Ａを参照して、シンクロナイズオペレーションのための２枚の全般的なフローチャートのうちの１枚目が示される。プロセスは開始バブル４５から開始し、その後、データベースにログオンするステップが続く（ブロック４６）。次に、ログインが成功したかどうかについて問合せが行なわれる（菱形４７）。この問合せに対する回答が「いいえ」である場合、エラーが生じ（ブロック４８）プロセスから出る（バブル４９）。
【００４３】
ログインが成功した場合、適当なＯＤＢＣ（“Ｏｐｅｎ ＤａｔａＢａｓｅ Ｃｏｎｎｅｃｔｉｖｉｔｙ”：「オープンデータベース接続可能性」）カタログ機能を用いて、この情報が引起こされたオブジェクトに対してカタログ情報が読まれる（ブロック５０）。ＯＤＢＣはいずれかのデータベースとインターフェイスするために用いられる。さらに、対象となるのはカタログ情報であり実データではないため、ＯＤＢＣにおけるカタログ機能のみが用いられる。次に、オブジェクトのプロパティがデータベースから検索され、リポジトリ内のオブジェクトのプロパティと比較される（ブロック５１）。プロセスの例示はバブルＡによって示されるように図４Ｂに続く。
【００４４】
図４ＢのバブルＡを参照して、先行するステップにおいて何らかの差異が見つかったかどうかについて別の問合せが行なわれる（菱形５２）。この問合せに対する回答が「はい」である場合、新しいプロパティによってリポジトリ内にオブジェクトの新しいバージョンが作られる（ブロック５３）。この問合せに対する回答が「いいえ」である場合、またはブロック５３によって示されるステップが完了した際に、これが複合オブジェクトであるかどうかについてさらに別の問合せが行なわれる（菱形５４）。この問合せに対する回答が「いいえ」である場合、データベースからログアウトし（ブロック５５）、プロセスから出る（バブル５６）。
【００４５】
一方、菱形５４によって示される問合せに対する回答が「はい」である場合、さらに包含されるオブジェクトがあるかどうかについてさらに別の問合せが行なわれる（菱形５７）。この問合せに対する回答が「はい」である場合、結合子Ｂによって示されるように、ブロック５０によって示されるステップに戻り（図４Ａ）、次の包含されたオブジェクトを処理する。処理すべき包含されるオブジェクトがもうない場合（菱形５７の「いいえ」の脚）またはこれが複合オブジェクトではない場合（菱形５４の「いいえ」の脚）、データベースからログアウトし（ブロック５５）、その後プロセスから出る（バブル５６）。
【００４６】
次に図５Ａを参照して、全般的なフローチャートによりエクスポートプロセスが示される。プロセスは開始バブル６０から開始し、その後、ＤＤＬを書くためのファイルを開いてデータベース内にスキーマを作るプロセスステップが続く（ブロック６１）。次に、データベースへのログオンが行なわれる（ブロック６２）。これに続いて、ログインが成功したかどうかについて問合せが行なわれる（菱形６３）。この問合せに対する回答が「いいえ」である場合、エラーが生じ（ブロック６４）、プロセスから出る（バブル６５）。
【００４７】
一方、菱形６３によって示される問合せに対する回答が「はい」である場合、適当なＯＤＢＣカタログ機能を用いることによって、このオペレーションが引起こされたオブジェクトに対してカタログが読まれる（ブロック６６）。次に、このオブジェクトのプロパティが検索され、リポジトリ内のこのオブジェクトのプロパティと比較される（ブロック６７）。プロセスの例示は結合子Ｃによって示されるように図５Ｂに続く。
【００４８】
次に図５Ｂを参照して、結合子Ｃにおいて、先行するステップにおいて何らかの差異が見出されたかどうかについて別の問合せが行なわれる（菱形６８）。次に、その差異はＳＱＬ  ＤＤＬ形式で書かれ、ブロック６１（図５Ａ）によって示されるステップにおいて開かれたファイルにおけるデータベース内でオブジェクトを作るか、またはオブジェクトのプロパティを変更する。この後、これが複合オブジェクトであるかどうかについて問合せが行なわれる（菱形７０）。この問合せに対する回答が「はい」である場合、さらに包含されるオブジェクトがあるかどうかについて別の問合せが行なわれる（菱形７１）。この第２の問合せに対する回答が「はい」である場合、結合子Ｄによって示されるように、ブロック６６によって示されるステップに戻り、次の包含されたオブジェクトを処理する。
【００４９】
一方、菱形７０または菱形７１における問合せに対する回答が「いいえ」であった場合、データベースからログアウトし（ブロック７２）、プロセスから出る（バブル７３）。
【００５０】
次に図６Ａを参照して、２枚のフローチャートの１枚目には、データベース技術モデルにおける、ある特定のタイプＴｙｐｅに対してオブジェクト指向リポジトリ内にデータベーススキーマをインポートするためのプロセスが示される（すなわち、インポートプロセス）。プロセスはデータベースへのログオン（バブル８０）から開始され、その後、Ｔｙｐｅの各属性に対する変数を宣言し初期化するプロセスステップが続く（ブロック８１）。次に、適当なＯＤＢＣカタログ機能を用いて、Ｔｙｐｅの属性に対する値をデータベースから得る（ブロック８３）。この後に、検索された値を前もって初期化された対応する変数に割当てる（ブロック８３）。
【００５１】
割当てられた局所変数を用いて、対応する属性ＡＴＴＲの値がリポジトリにおいて設定される（ブロック８５）。次に、Ｔｙｐｅにおいてさらに属性ＡＴＴＲがあるかどうかについて問合せが行なわれる（菱形８６）。この問合せに対する回答が「はい」である場合、ブロック８５によって示されるステップが繰返される。一方、この回答が「いいえ」である場合、これが複合タイプ（ｃｏｍｐｏｓｉｔｅ ｔｙｐｅ）であるかどうかについて別の問合せが行なわれる（菱形８７）。この問合せに対する回答が「いいえ」である場合、プロセスから出る（バブル８８）。
【００５２】
菱形８７によって示される問合せに対する回答が「はい」である場合、適当なＯＤＢＣカタログ機能を用いて、包含されるオブジェクトタイプＣｔｙｐｅのすべてのオブジェクトとさまざまな関連付けられるプロパティとを得ることによってプロセスステップが実行される（ブロック８９）。次に、ここでＤＢＥｌｅｍｅｎｔとして識別されるタイプのオブジェクトを、データベースから戻されたタイプＣｔｙｐｅのオブジェクトの各々に対して作りリストに記憶する（ブロック９０）。ここで用いられる語句「ＤＢＥｌｅｍｅｎｔ」は、データベースから検索される値を記憶するのに用いられる内部クラスを指す。プロセスの例示は結合子Ｅによって示されるように図６Ｂに続く。
【００５３】
次に図６Ｂを参照して、結合子Ｅにおいて、タイプＣｔｙｐｅの永続オブジェクトＮＥＷ＿ＯＢＪＥＣＴがリポジトリ内で構成される（ブロック９３）。次に、ＮＥＷ＿ＯＢＪＥＣＴのさまざまなプロパティが、連結リスト内にオブジェクトとともに記憶されるプロパティを用いてリポジトリ内で設定される（ブロック９４）。この後、ＮＥＷ＿ＯＢＪＥＣＴのインポート機能が呼出されデータベースからそのプロパティがインポートされる（ブロック９５）。
【００５４】
次に、リスト内にさらにオブジェクトＯｂｊｅｃｔがあるかどうかについて問合せが行なわれる（菱形９６）。この問合せに対する回答が「はい」である場合、ブロック９３によって示されるステップに戻り、リスト内の次のオブジェクトを処理する。一方、この問合せに対する回答が「いいえ」である場合、さらに包含されるタイプがあるかどうかについて別の問合せが行なわれる（菱形９７）。この問合せに対する回答が「はい」である場合、ブロック８９によって示されるプロセスステップに戻る（図６Ａ）。一方、この問合せに対する回答が「いいえ」である場合、プロセスから出る（バブル９８）。
【００５５】
次に図７Ａを参照して、詳細な４枚のフローチャートの１枚目には、データベース技術モデルにおいてある特定のタイプＴｙｐｅに対してリポジトリ内に記憶される対応するスキーマとデータベーススキーマとを同期化するためのプロセスが示される（すなわち、シンクロナイズプロセス）。このプロセスはデータベースへのログオンから開始し（バブル１０１）、その後、Ｔｙｐｅの各属性に対する局所変数を宣言し初期化するプロセスステップが続く（ブロック１０２）。次に、変数Ｏｂｊｅｃｔが宣言され、この変数はタイプＴｙｐｅのものであり、このオペレーションが呼出されたオブジェクトによって初期化される（ブロック１０４）。適当なＯＤＢＣカタログ機能を用いて、データベースからのタイプの属性に対する値が得られる（ブロック１０５）。
【００５６】
次に、ブロック１０２によって示されたステップにおいて初期化された対応する局所変数に値が割当てられる（ブロック１０６）。この後、属性ＡＴＴＲに対し、データベースから検索された値がリポジトリ内の属性の値と比較される（ブロック１０７）。次に、何らかの差異が見られたかどうかついて問合せが行なわれる（菱形１０８）。差異が見つかった場合、結合子Ｂにおいて図７Ｂへの分岐がとられる。一方、差異が見つからなかった場合、結合子Ｃにおいて図７Ｂへの分岐がとられる。
【００５７】
次に図７Ｂを参照し、結合子Ｂにおいて、ステップ１０４において初期化されたＯｂｊｅｃｔが既に版付けされていない場合は、Ｏｂｊｅｃｔを版付けする（ブロック１１０）。次に、属性ＡＴＴＲをデータベースから得た新しい値で設定する（ブロック１１１）。次に、Ｏｂｊｅｃｔにおいてさらに属性ＡＴＴＲがあるかどうかについて問合せが行なわれる（菱形１１２）。この問合せに対する回答が「はい」である場合、結合子Ｄによって示されるようにブロック１０７で示されるステップに戻る（図７Ａ）。一方、この問合せに対する回答が「いいえ」である場合、これが複合オブジェクトであるかどうかについて別の問合せが行なわれる（菱形１１３）。菱形１０８の「いいえ」の脚からの結合子Ｃが問合せ１１２においてプロセスと交差することに注意されたい。
【００５８】
菱形１１３における問合せに対する回答が「いいえ」である場合、以下に説明するように図７Ｄにおける出口バブルへ分岐が取られる。一方、この問合せに対する回答が「はい」である場合、適当なＯＤＢＣカタログ機能を用いて、包含されるタイプＣｔｙｐｅのすべてのオブジェクトを、さまざまな関連付けられるプロパティとともにデータベースから得て、ＤＢ＿ＬＩＳＴと称されるリスト内にタイプＤＢＥｌｅｍｅｎｔのオブジェクトとして記憶する（ブロック１１４）。この後、タイプＣｔｙｐｅのすべての包含されるオブジェクトがリポジトリから得られ、リストＲＥＰ＿ＬＩＳＴに記憶される（ブロック１１６）。プロセスの例示は結合子Ｆによって示されるように図７Ｃに続く。
【００５９】
次に図７Ｃを参照して、結合子Ｆにおいて、ＤＢ＿ＬＩＳＴにおける各オブジェクトをＲＥＰ＿ＬＩＳＴ内のオブジェクトと比較する（ブロック１１７）。次に、ＲＥＰ＿ＬＩＳＴには存在していない何らかの新しいオブジェクトがＤＢ＿ＬＩＳＴ内で見つかったかどうかについて問合せが行なわれる（菱形１１８）。これは、リポジトリと比較されるデータベース内にさらにオブジェクトが見つかったかどうかを判定するために行なわれる。この問合せに対する回答が「いいえ」である場合、ＤＢ＿ＬＩＳＴに見られなかったいずれかのオブジェクトがＲＥＰ＿ＬＩＳＴ内に見出されたかどうかについての別の問合せが行なわれる（菱形１１９）。これは、データベースと比較した際に、リポジトリにおいてある特定のタイプのオブジェクトがさらに見出されたかどうかについての情報をもたらすため行なわれる。この問合せに対する回答が「いいえ」である場合、以下に説明するように結合子Ｇによって示されるように、図７Ｄへの分岐がとられる。
【００６０】
一方、菱形１１９における問合せに対する回答が「はい」である場合、（このオペレーションが呼出された）このオブジェクトが既に版付けされていない場合は版付けされる（ブロック１２０）。次に、（ＤＢ＿ＬＩＳＴには見られなかった）このオブジェクトをタイプに対する関連付けられたプロパティから除去し（ブロック１２１）（これは、ある特定のタイプの１つ以上のオブジェクトがデータベースから除去され、このタイプのオブジェクトの包含する側のオブジェクトがデータベースにおける変更を反映するように変わらなければならないため行なわれる）、結合子Ｈにおいて図７Ｄへの分岐がとられる。
【００６１】
再び菱形１１８に戻り、この問合せに対する回答が「はい」である場合、オペレーションが呼出されたオブジェクトが既に版付けされていない場合は版付けされる（ブロック１２２）。次に、リポジトリ内でタイプＣｔｙｐｅの永続オブジェクトが構成され、この新しい永続オブジェクトのさまざまなプロパティが、ＤＢ＿ＬＩＳＴ内に既に存在するオブジェクトとともに記憶されるプロパティを用いてリポジトリ内で設定される（ブロック１２３）。次に、タイプに対する関連付けられるプロパティに新しいオブジェクトが追加される（ブロック１２４）。これは、ある特定のタイプの１つ以上のオブジェクトがデータベース内で作られ、このタイプのオブジェクトの包含する側のオブジェクトがデータベースにおける変更を反映するよう変わらなければならないため行なわれる。このプロセスの例示は結合子Ｈにおいて図７Ｄに続く。
【００６２】
次に図７Ｄを参照して、結合子Ｈにおいて、ＤＢ＿ＬＩＳＴ内にさらにオブジェクトがあるかどうかについて問合せが行なわれる（菱形１２５）。この問合せに対する回答が「はい」である場合、結合子Ｆ（図７Ｃ）に戻り、次のオブジェクトを処理する。一方、この問合せに対する回答が「いいえ」である場合、ＴｙｐｅにおけるタイプＣｔｙｐｅの各々に対してシンクロナイズを呼出す。すなわち、図７Ａから図７Ｄに示されるプロセス全体を繰返す（ブロック１２６）。菱形１２０（図７Ｃ）からの結合子Ｇがブロック１２６においてプロセスと交差することに注意されたい。この後、さらに包含されるオブジェクトがあるかどうかについて別の問合せが行なわれる（菱形１２７）。この問合せに対する回答が「はい」である場合、結合子Ｊによって示されるように、ブロック１１４によって示されるステップに戻り、次の包含されたオブジェクトを処理する。この後、プロセスから出る（バブル１２８）。菱形１１３（図７Ｂ）からの結合子Ｅがバブル１２８においてプロセスと交差することに注意されたい。
【００６３】
この発明の方法には、どのデータベースとリポジトリ２０との間でもスキーマ情報を移動させるための統合化が含まれる。データベーススキーマをリポジトリに記憶する結果、ユーザはスキーマの履歴をリポジトリ内で維持することを含むリポジトリサービスを利用することができる。また、統合化により、リポジトリ２０内でデータベースに対する新しいスキーマを作りこれをデータベースにエクスポートする能力が得られる。この統合化の一部として開発されたデータベース技術モデルはデータベーススキーマを記憶するのに用いられる。この共通の技術モデルの結果、リポジトリに統合化されるさまざまなツールは同じデータベーススキーマ情報を見る／共用することができる。
【００６４】
エクスポートオペレーションはシンクロナイズオペレーションと同じ態様で再帰的に機能する。よって、エクスポートオペレーションについては詳しく説明しない。
【００６５】
この発明を特定の実施例に関連して説明したが、この説明は限定する意味で解釈されることを意図するものではない。開示される実施例およびこの発明の代替の実施例のさまざまな変更はこの発明の説明を参照する際に当業者には明らかになるであろう。したがって、添付の特許請求の範囲がこの発明の真の範囲内に含まれるそのような実施例の変更のどんなものをも網羅することが意図される。
【図面の簡単な説明】
【図１】この発明の方法を実行するよう配置される、各々にデータベースが結合される複数の計算機システムと、リポジトリと、ＣＰＵとを示すブロック図である。
【図２】個々のＣＰＵとデータベースとリポジトリとの間での相互作用を示すブロック図である。
【図３】インポートオペレーションを例示する全般的なフローチャートの図である。
【図４Ａ】図４Ｂと合わせてシンクロナイズオペレーションを例示する全般的なフローチャートを形成する図である。
【図４Ｂ】図４Ａと合わせてシンクロナイズオペレーションを例示する全般的なフローチャートを形成する図である。
【図５Ａ】図５Ｂと合わせてエクスポートオペレーションを例示する全般的なフローチャートを形成する図である。
【図５Ｂ】図５Ａと合わせてエクスポートオペレーションを例示する全般的なフローチャートを形成する図である。
【図６Ａ】図６Ｂと合わせてデータベーススキーマをオブジェクト指向リポジトリ内にインポートするためのプロセスを例示する詳細なフローチャートを形成する図である。
【図６Ｂ】図６Ａと合わせてデータベーススキーマをオブジェクト指向リポジトリ内にインポートするためのプロセスを例示する詳細なフローチャートを形成する図である。
【図７Ａ】データベーススキーマをリポジトリ内に記憶される対応するスキーマと同期化するためのプロセスを例示する詳細なフローチャートの図である。
【図７Ｂ】データベーススキーマをリポジトリ内に記憶される対応するスキーマと同期化するためのプロセスを例示する詳細なフローチャートの図である。
【図７Ｃ】データベーススキーマをリポジトリ内に記憶される対応するスキーマと同期化するためのプロセスを例示する詳細なフローチャートの図である。
【図７Ｄ】データベーススキーマをリポジトリ内に記憶される対応するスキーマと同期化するためのプロセスを例示する詳細なフローチャートの図である。
【図１】
0003563692.tif 000002
【図２】
0003563692.tif 000003
【図３】
0003563692.tif 000004
【図４Ａ】
0003563692.tif 000005
【図４Ｂ】
0003563692.tif 000006
【図５Ａ】
0003563692.tif 000007
【図５Ｂ】
0003563692.tif 000008
【図６Ａ】
0003563692.tif 000009
【図６Ｂ】
0003563692.tif 000010
【図７Ａ】
0003563692.tif 000011
【図７Ｂ】
0003563692.tif 000012
【図７Ｃ】
0003563692.tif 000013
【図７Ｄ】
0003563692.tif 000014