[go: up one dir, main page]

JPH10301782A - Frame work mechanism - Google Patents

Frame work mechanism

Info

Publication number
JPH10301782A
JPH10301782A JP6488298A JP6488298A JPH10301782A JP H10301782 A JPH10301782 A JP H10301782A JP 6488298 A JP6488298 A JP 6488298A JP 6488298 A JP6488298 A JP 6488298A JP H10301782 A JPH10301782 A JP H10301782A
Authority
JP
Japan
Prior art keywords
lock
objects
framework
relationships
model
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
Application number
JP6488298A
Other languages
Japanese (ja)
Inventor
Laurence Blairley Christopher
クリストファー・ローレンス・ブレリー
Grant Johnston Jeffrey
ジェフリー・グラント・ジョンストン
Critinik Vladimir
ヴラディミール・クリチニク
Martin Lawson David
デービッド・マーチン・ローソン
Tin Roy Roku
ロク・ティン・ロイ
Alexander Shielman Ii Derk
ダーク・アレクサンダー・シールマン・ザセカンド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10301782A publication Critical patent/JPH10301782A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

PROBLEM TO BE SOLVED: To perform customization and extension in many forms by providing common object relation in context management for plural tools in an object- oriented programming environment. SOLUTION: Information relating to a model object 1 is defined by a character string 2 which is the name of the object and the plural different character strings such as the attribute of the object inclusively indicated by a code 3 or the like. The feature of the name 5 which is the character string is provided in the entire relation 4 of the model object 1. One set of references 6 to the other model object are provided in each relation 4 as well. A search context 7 and a lock context are provided and the lock context is provided with the three forms of a deletion lock 8, a rename lock 9 and a change lock 10. Within such an object-oriented programming environment, the common object relation in the context management for the plural tools is provided.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、データ処理の分野
に関し、具体的には、オブジェクト指向フレームワーク
機構の分野に関する。
[0001] The present invention relates to the field of data processing, and in particular, to the field of object-oriented framework mechanisms.

【0002】[0002]

【従来の技術】ツールとは、ユーザのためにデータを記
憶し、管理し、検索する、ソフトウェアの単位、プログ
ラムまたはプログラム内のアプリケーション・モジュー
ルである。現在開発されている新規ツールのすべてに、
ツール・データ用の記憶機構を設計し、実施し、テスト
するための道具が含まれる。その結果、新規ツール開発
に関連するコスト(時間と費用の両方)は、一般的に少
なくはない。
2. Description of the Related Art A tool is a unit of software, a program or an application module within a program that stores, manages, and retrieves data for a user. For all of the new tools currently being developed,
Tools for designing, implementing, and testing storage for tool data are included. As a result, the costs associated with new tool development (both time and money) are generally not small.

【0003】ほとんどのツールが、しばしば「独占的」
であるデータを記憶、管理するための独自の機構を有す
る。これに関して、独占的とは、実装の詳細が他のツー
ル製造業者またはツール開発者と共用されないことを意
味する。これは、個々のユーザの必要に合わせて、実績
のある既存のツールをカストマイズし、拡張することに
関連する多数の問題を引き起こす。たとえば、あるツー
ルのインターフェース部分または「ビュー」部分が、ツ
ールの記憶機構またはモデルと絡み合わされ、新しいビ
ューを既存のビューに統合することが困難になる場合が
ある。これを、そのツールに中立性がないと称する。
[0003] Most tools are often "exclusive"
It has a unique mechanism for storing and managing data. Exclusive in this context means that the implementation details are not shared with other tool manufacturers or tool developers. This raises a number of problems associated with customizing and extending proven existing tools to the needs of individual users. For example, the interface or "view" portion of a tool may be entangled with the storage or model of the tool, making it difficult to integrate a new view into an existing view. This is referred to as the tool being neutral.

【0004】また、あるツールによって作成されたデー
タは、別のツールによって直接にまたは透過的に消費す
ることができない。そうではなくて、他のツールとの整
合性を有する外部形式にデータを書き込む「エクスポー
ト」や、外部形式のデータを読み取る「インポート」な
どの動作が必要になり、ツールのユーザは、ツール間で
のデータのエクスポートまたはインポートを意識的に選
択しなければならない。
[0004] Also, data created by one tool cannot be directly or transparently consumed by another tool. Instead, operations such as "export", which writes data to an external format that is compatible with other tools, and "import", which reads data in an external format, are required. You must consciously choose to export or import your data.

【0005】さらに、外部形式からインポートされたデ
ータの一部が、それをインポートするツールのデータ・
ストアにとって無意味またはこれとの互換性がなく、即
座に破棄される場合がある。これによって、往復する情
報の完全性が犠牲になり、複数のツールでの情報の反復
的開発が困難または不可能になる。
[0005] Further, a part of the data imported from the external format may be replaced by a data
It is meaningless or incompatible with the store and may be discarded immediately. This sacrifices the integrity of the information that travels and makes it difficult or impossible to iteratively develop information with multiple tools.

【0006】最後に、ツール開発者は、同様のデータを
管理する他のツールの改訂および創造を監視し、それに
対応する新規のデータ形式のエクスポートおよびインポ
ートを行う新機能を追加しなければならない。新規のイ
ンポート機能およびエクスポート機能を開発し、テスト
するための直接の費用のほかに、新しい形式の導入か
ら、その形式を処理するための他のツールのインポート
機能およびエキスポート機能が使用可能になるまでのタ
イム・ラグが存在する。
Finally, tool developers must add new features to monitor the revision and creation of other tools that manage similar data, and export and import corresponding new data formats. In addition to the direct costs of developing and testing new import and export functions, the introduction of new formats will enable the import and export functions of other tools to process that format There is a time lag until.

【0007】オブジェクト指向(OO)プログラミン
グ、具体的にはOOフレームワーク技術によって、既存
ツールを常に改訂し、複数のツールを使用する際のデー
タの完全性を提供することに関連するコストに対処する
方法が提供される。
[0007] Object oriented (OO) programming, specifically OO framework technology, addresses the costs associated with constantly updating existing tools and providing data integrity when using multiple tools. A method is provided.

【0008】オブジェクト指向技術と手続き型技術の対
比 本発明は、特定のOO技術(すなわちOOフレームワー
ク技術)に関するが、一般的に、OO技術は従来の手続
きに基づく技術(しばしば手続き型技術と称する)とは
大きく異なることを理解されたい。この2つの技術のど
ちらもが、同一の問題の解決に使用可能であるが、その
問題に対する最終的な解決策は、必ず全く異なる。この
相違は、手続き型技術の設計の焦点が、OO技術のそれ
と完全に異なるという事実から生ずる。手続きに基づく
設計の焦点は、その問題を解決する処理全体にある。対
照的に、OO設計の焦点は、解決を提供するために一緒
に機能することのできる自律的実体の組へ問題を分割す
る方法にある。OO技術の自律的実体を、オブジェクト
と称する。言い換えると、OO技術が手続き型技術と大
きく異なるのは、入れ子になったコンピュータ・プログ
ラムまたは手続きの階層ではなく、協働するオブジェク
トの組に問題が分割されるからである。
[0008] Object Oriented vs. Procedural Techniques [0009] Although the present invention relates to specific OO techniques (ie, OO framework techniques), OO techniques are generally referred to as conventional procedural based techniques (often referred to as procedural techniques). Please understand that this is significantly different from Both of these techniques can be used to solve the same problem, but the final solution to that problem is always quite different. This difference stems from the fact that the design focus of procedural technology is completely different from that of OO technology. The focus of procedural design is on the whole process of solving the problem. In contrast, the focus of OO design is on how to divide the problem into a set of autonomous entities that can work together to provide a solution. An autonomous entity of the OO technology is called an object. In other words, OO technology differs significantly from procedural technology because the problem is divided into a set of cooperating objects rather than a nested hierarchy of computer programs or procedures.

【0009】OOプログラミングの重要な特徴は、オブ
ジェクトが、異なる用途のために異なる組み合わせで組
み合わせるか異なる属性を割り当てることのできる、再
利用可能なソフトウェア実体であることである。この1
例が、米国特許第5550971号明細書に記載されて
いる。同明細書では、データ・ベース・スキーマを示す
さまざまな「情報フォーム」を用いてユーザ・インター
フェースを生成するための動的モデルが説明されてい
る。このモデルは、ユーザが異なる照会言語やデータ・
ベース・システム、具体的なデータ・ベースのレコー
ド、フィールドおよび関係を学習する必要なしに、異な
るデータ・ベース管理システムに移送できる。このモデ
ルは、各クラスのインスタンスが実際のデータ・ベース
からさまざまな距離にある実体と関係を表す具象クラス
の組によって実施される。これらのクラスのオブジェク
トを作成し、相関させて、データ・ベースの編成を記述
する。このモデルのクラスは、ユーザ・インターフェー
スを作成するために実際のデータ・ベースの構造を探査
し、そのユーザ・インターフェースによって消費される
データ・ベース情報をキャッシュ記憶するための標準イ
ンターフェースを提供する。
An important feature of OO programming is that objects are reusable software entities that can be combined in different combinations or assigned different attributes for different uses. This one
Examples are described in US Pat. No. 5,550,971. In this specification, a dynamic model for generating a user interface with various "information forms" representing a database schema is described. This model allows users to use different query languages and data
It can be transported to different database management systems without the need to learn the base system, specific database records, fields and relationships. This model is implemented by a set of concrete classes in which instances of each class represent entities and relationships at various distances from the actual database. Objects of these classes are created and correlated to describe the organization of the database. The classes in this model provide a standard interface for exploring the structure of the actual database to create a user interface and caching database information consumed by the user interface.

【0010】同様の系列に、米国特許第5428729
号明細書がある。同明細書には、開発中のソフトウェア
・プロジェクトのコンテキスト内で、データ実体(ドキ
ュメンテーション、ソース・コード、テスト・データ)
の位置を追跡し、これにアクセスし、データを変換する
ための手続き(コンパイラ、エディタ、リンカ、ドキュ
メンテーション・フォーマッタ、テスト・ハーネス)を
参照するために設計されたシステムが記述されている。
開発中の新プロジェクトのそれぞれが、「メタプログラ
マ」によってテンプレートから作成され、GUI(グラ
フィカル・ユーザ・インターフェース)を介して提示さ
れる。この「マスタ・ビュー」から、各ユーザは、ユー
ザのアクセス権に従って選択された、マスタからのオブ
ジェクトのサブセットからなる「ユーザ・ビュー」をク
ローンとして作成できる。ビューを介して具体的なフロ
ーが記述され、ユーザは、構築手続きを編集、定義およ
びディスパッチするためにデータ実体にアクセスでき、
テスト・ケースを定義し、ディスパッチできる。アクセ
ス権によって、ユーザとオブジェクトが、ユーザの「ク
ラス」を介して関係づけられる。この特許は、GUIの
外見およびフローと、GUIが、任意であるが別個のリ
ポジトリに格納されたファイルへのアクセスを提供する
方法、ソースからターゲット形式へファイルを変換する
ための規則を記憶する方法およびユーザ固有のプロジェ
クトのビューを介するアクセスを制御する方法とに関連
する。しかし、この発明は、オブジェクト指向データ統
合フレームワークではなく、このシステムと本発明の間
の根本的な相違は、この発明のシステムが、指定される
が拡張可能なフレームワークのインターフェースおよび
プロトコルを介して、複数の別個の未知のツールの間で
一貫した挙動の印象を促進するように設計されてはいな
いことである。
In a similar series, US Pat. No. 5,428,729.
There is an issue specification. It includes data entities (documentation, source code, test data) within the context of the software project under development.
Describes a system designed to track procedures for accessing, accessing, and translating data (compilers, editors, linkers, documentation formatters, test harnesses).
Each new project under development is created from a template by a "metaprogrammer" and presented through a GUI (graphical user interface). From this "master view", each user can clone a "user view" consisting of a subset of objects from the master, selected according to the user's access rights. Specific flows are described through views, allowing users to access data entities to edit, define and dispatch build procedures,
Define and dispatch test cases. Access rights associate a user with an object via the user's "class." This patent teaches the appearance and flow of a GUI, how the GUI provides access to files stored in an optional but separate repository, and how to store rules for converting files from source to target format. And methods of controlling access through user-specific project views. However, the present invention is not an object-oriented data integration framework, and the fundamental difference between this system and the present invention is that the system of the present invention uses a specified but extensible framework interface and protocol. Thus, it is not designed to promote the impression of consistent behavior between separate and unknown tools.

【0011】当技術分野では、OO設計の当業者にとっ
て特定の意味を有する用語が案出されてきた。しかし、
用語「フレームワーク」は、定義が最もあいまいな用語
の1つであり、使う人によって異なる意味を有する。し
たがって、2つの仮定のフレームワーク機構の特性を比
較する時には、比較が適切になるように注意を払う必要
がある。
[0011] Terms have been devised in the art that have particular meaning to those skilled in the art of OO design. But,
The term “framework” is one of the most ambiguous terms and has different meanings for different users. Therefore, when comparing the properties of two hypothetical framework mechanisms, care must be taken to make the comparisons appropriate.

【0012】下で具体的に説明するが、用語「フレーム
ワーク」は、本明細書では、コア機能と拡張可能機能を
有するように設計されたOO機構を記述するのに使用す
る。コア機能とは、フレームワーク機構のうちで、フレ
ームワーク購入者による変更の対象とならない部分であ
る。これに対して、拡張可能機能は、フレームワーク機
構のうちで、フレームワーク購入者がカストマイズで
き、拡張できるように明示的に設計された部分である。
As specifically described below, the term "framework" is used herein to describe an OO mechanism designed to have core and extensible features. Core functions are those parts of the framework that are not subject to change by the framework purchaser. In contrast, extensible features are those parts of the framework mechanism that are explicitly designed so that framework buyers can customize and extend them.

【0013】OOフレームワーク機構 OOフレームワーク機構は、一般的に、OO解決策とし
て特徴を表すことができる。それにもかかわらず、フレ
ームワーク機構と基本的なOO解決策の間には、根本的
な相違がある。フレームワーク機構は、解決策のいくつ
かの態様のカストマイズおよび拡張を可能にし、これを
促進する形で設計される。言い換えると、フレームワー
ク機構は、問題に対する単なる解決を超えるものであ
る。フレームワーク機構は、時間と共に変化する個別の
要求に対処するためにカストマイズでき、拡張できる、
「生きた」解決策を提供する。上で述べたように、フレ
ームワーク機構の特性のカストマイズまたは拡張は、そ
のコストが既存の非フレームワーク解決策の置換または
改訂のコストよりはるかに低いので、購入者にとって非
常に価値がある。
OO Framework Mechanism The OO framework mechanism can generally be characterized as an OO solution. Nevertheless, there is a fundamental difference between the framework mechanism and the basic OO solution. The framework mechanism is designed to allow and facilitate some aspects of the solution. In other words, a framework mechanism is more than just a solution to a problem. The framework mechanism can be customized and extended to address individual requirements that change over time.
Provide a "live" solution. As noted above, customizing or extending the properties of the framework mechanism is of great value to the purchaser, as its cost is much lower than the cost of replacing or revising existing non-framework solutions.

【0014】したがって、フレームワーク設計者が特定
の問題の解決を開始する時には、フレームワーク設計者
は、単に個々のオブジェクトとこれらのオブジェクトの
相関を設計するだけではない。フレームワーク設計者
は、フレームワークのコア機能(すなわち、フレームワ
ーク消費者によるカストマイズおよび拡張の対象となる
可能性がない部分)と、フレームワークの拡張可能機能
(すなわち、カストマイズおよび拡張の対象となる可能
性がある部分)も設計する。結局、フレームワーク機構
の最終的な価値は、オブジェクト設計の品質だけではな
く、フレームワークのどの態様がコア機能を表し、どの
態様が拡張可能機能を表すかを含む設計選択にも基づ
く。
Thus, when a framework designer begins to solve a particular problem, the framework designer does more than just design individual objects and their correlations. The framework designer has two core features of the framework (ie, those that are not likely to be customized and extended by the framework consumers) and the extensible features of the framework (ie, those that are customized and extended). (Possible parts). Ultimately, the ultimate value of the framework mechanism is based not only on the quality of the object design, but also on design choices, including which aspects of the framework represent core functionality and which aspects represent extensible functionality.

【0015】フレームワークの1例が、米国特許第53
25533号明細書の主題である。同明細書に記載され
たフレームワークは、開発環境のための増分的な対話、
生成および構築の機能を提供する。
One example of a framework is disclosed in US Pat.
25533. The framework described there is an incremental interaction for the development environment,
Provides generation and construction functions.

【0016】[0016]

【発明が解決しようとする課題】本発明は、多様なツー
ル・データの、包括的でありながら拡張可能な記憶、管
理および検索のためのモデルを定義するフレームワーク
を対象とする。このフレームワークは、あるツールによ
って操作される情報のすべてを、さまざまなクラスのモ
デル・オブジェクトおよびこれらのオブジェクト間の関
係に編成できるように設計されている。モデル・オブジ
ェクトおよび関係のすべてに、3つの属性またはコア機
能が与えられ、モデル・オブジェクトおよび関係のそれ
ぞれは、 1.ツールを終了した後にオブジェクトがディスク上に
存在できるようにするために、永続性を有し、 2.2つのツールが同一のオブジェクトまたは同一の関
係を同時に変更しないようにするために、ロック可能で
あり、 3.あるツールが別のツールによってオブジェクトに加
えられた変更を検出でき、そのプレゼンテーションを更
新できるようにするために、観察可能である。
SUMMARY OF THE INVENTION The present invention is directed to a framework for defining a comprehensive but extensible model for storing, managing and retrieving a variety of tool data. The framework is designed to organize all of the information manipulated by a tool into different classes of model objects and the relationships between those objects. All of the model objects and relationships are given three attributes or core functions, each of the model objects and relationships: It has persistence so that objects can exist on disk after the tool is closed, and can be locked to prevent two tools from changing the same object or the same relationship at the same time. Yes, 3 Observations are made so that one tool can detect changes made to an object by another tool and update its presentation.

【0017】本発明の目的は、オブジェクト・インスタ
ンス(モデル・オブジェクト)に命名し、オブジェクト
・インスタンスに名前付きのプロパティと名前付きの関
係が含まれるフレームワークを提供することである。
It is an object of the present invention to provide a framework for naming object instances (model objects), where the object instances include named properties and named relationships.

【0018】[0018]

【課題を解決するための手段】したがって、本発明は、
オブジェクト指向プログラミング環境での複数ツール用
のコンテキスト管理での共通のオブジェクト関係を提供
するためのフレームワーク機構を提供する。このフレー
ムワークは、ツール情報を有するオブジェクトからな
る。各オブジェクトは、1つの名前、1組の属性、およ
び、フレームワーク機構内の他のオブジェクトへの参照
を含む1組の関係からなる。
SUMMARY OF THE INVENTION Accordingly, the present invention provides
A framework mechanism for providing common object relationships in context management for multiple tools in an object-oriented programming environment. This framework consists of objects with tool information. Each object consists of a name, a set of attributes, and a set of relationships including references to other objects in the framework mechanism.

【0019】本発明は、ツール・データを共用するため
のフレームワーク機構も提供する。このフレームワーク
機構は、ツール・データを含むオブジェクトの、永続性
の維持、識別およびロックのためのコア機能と、ユーザ
・ツールが特定のプログラミング環境に合わせてツール
・データを調整できるようにするための拡張可能機能か
らなる。
The present invention also provides a framework mechanism for sharing tool data. This framework mechanism provides core functionality for maintaining, identifying, and locking objects containing tool data, and allows user tools to tailor tool data to a particular programming environment. Consisting of extensible functions.

【0020】[0020]

【発明の実施の形態】本発明の好ましい実施例は、異な
るツールの間でパーツ情報を共用するための基礎を提供
する共通データ・モデル・フレームワークで実施され
た。このフレームワークによって、個々のツールによっ
て構築された情報を標準化するためのモデル機構と、区
分およびコード生成をサポートする情報の共通リポジト
リを組み合わせる。好ましい実施例で実施される共通リ
ポジトリ構造の1例が、同時出願の"A Hierarchical Me
tadata Store for an Integrated Development Environ
ment"(IBMドケット番号CA9−97−003)の
主題であり、本明細書でこれを完全に説明する。本明細
書の残りの部分には、本発明の好ましい実施例を完全に
理解するために、必要に応じて共通リポジトリへの言及
が含まれる。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The preferred embodiment of the present invention has been implemented with a common data model framework that provides a basis for sharing part information between different tools. This framework combines a model mechanism for standardizing the information built by individual tools with a common repository of information that supports partitioning and code generation. One example of a common repository structure implemented in the preferred embodiment is the co-filed "A Hierarchical Me
tadata Store for an Integrated Development Environ
ment "(IBM docket number CA9-97-003), which is fully described herein. The remainder of the specification provides a complete understanding of the preferred embodiment of the present invention. Includes references to common repositories as needed.

【0021】上で述べたように、このフレームワークの
原理は、ツール情報を、さまざまなクラスのモデル・オ
ブジェクトおよびこれらのオブジェクト間の関係に編成
することである。
As stated above, the principle of this framework is to organize tool information into various classes of model objects and the relationships between these objects.

【0022】各モデル・オブジェクトは、3項目の情報
すなわち、1つの名前、1組の属性、および、フレーム
ワーク内の他のモデル・オブジェクトへの参照を含む1
組の関係という特徴がある。モデル・クラス階層の概略
を、図1に示す。図2に、好ましい実施例のオブジェク
トを表す抽象クラスObjectへのC++インターフェース
を示す。
Each model object contains three items of information: one name, one set of attributes, and a reference to other model objects in the framework.
It has the characteristic of a set relationship. An outline of the model / class hierarchy is shown in FIG. FIG. 2 shows the C ++ interface to the abstract class Object, which represents the object of the preferred embodiment.

【0023】図1および図2を参照すると、モデル・オ
ブジェクト1に関連する情報は、オブジェクトの名前で
ある文字列2や、符号3によって包括的に示されるオブ
ジェクトの属性など、複数の別々の文字列によって定義
される。符号3によって包括的に示される属性のそれぞ
れには、通常の文字列3aまたは「BLOB」3bのい
ずれかである値が格納される(用語「BLOB」は、デ
ータベース技術で一般的に使用される用語であり、"bin
ary large object"の頭字語である。本明細書では、B
LOBは無構造のバイトの列を指す。これについては下
で詳細に説明する)。
Referring to FIGS. 1 and 2, the information associated with the model object 1 includes a plurality of separate characters Defined by columns. Each of the attributes indicated generically by the reference 3 stores a value that is either a regular string 3a or "BLOB" 3b (the term "BLOB" is commonly used in database technology) The term "bin
ary large object ". In this specification, B
LOB refers to an unstructured sequence of bytes. This is described in more detail below).

【0024】図4は、好ましい実施例によるBLOBを
表す抽象クラスBlobへのC++インターフェースを示す
図である。文字列の形で表現するには複雑すぎる値やあ
まりに高度に構造化された値は、BLOBの1種として
実施できる。すべてのBLOBが、文字列をキーとして
データのセグメントをセットする動作と検査する動作を
提供しなければならない。この文字列の解釈は、完全に
BLOBに依存する。
FIG. 4 shows a C ++ interface to an abstract class Blob representing a BLOB according to the preferred embodiment. Values that are too complex to represent in the form of a string or that are too highly structured can be implemented as a type of BLOB. Every BLOB must provide an operation of setting and checking a segment of data using a character string as a key. The interpretation of this string is completely BLOB dependent.

【0025】好ましい実施例によるフレームワーク機構
のもう1つの態様は、図1および図2に示されたオブジ
ェクト・モデルの関係4が、別々のクラスで定義され、
相互にユニークな名前を有することである。図3は、下
に記載する属性の一部を定義する、好ましい実施例の関
係を表す抽象クラスRelationへのC++インターフェー
スを示す図である。
Another aspect of the framework mechanism according to the preferred embodiment is that the object model relationships 4 shown in FIGS. 1 and 2 are defined in separate classes,
It is to have a mutually unique name. FIG. 3 is a diagram illustrating the C ++ interface to the abstract class Relation, which defines the relationships of the preferred embodiment, defining some of the attributes described below.

【0026】図1に戻って、モデル・オブジェクト1の
関係4のすべてに、文字列である名前5の特徴がある。
関係4のそれぞれには、他のモデル・オブジェクトへの
1組の(0個以上の)参照6も含まれる。関係4は、そ
の名前を検査する動作と、その参照のいずれかを追加す
る動作、検査する動作および除去する動作を提供しなけ
ればならない。
Returning to FIG. 1, all of the relationships 4 of the model object 1 have a feature of a name 5 which is a character string.
Each of the relationships 4 also includes a set (zero or more) references 6 to other model objects. Relationship 4 must provide an operation to check the name and an operation to add, check and remove any of its references.

【0027】参照6の機能は、そのモデル・オブジェク
トがまだメモリ内にない場合に、ディスクからメモリへ
モデル・オブジェクトをロードすることである。参照
は、両方向でなければならない。すなわち、あるオブジ
ェクトが第2のオブジェクトを参照する場合、第2のオ
ブジェクトの関係のうちの1つに第1のオブジェクトへ
の参照が含まれることが必要である。また、参照は、
「強い参照」か「弱い参照」のいずれかである。モデル
・オブジェクト1が削除される時に、それが強く参照す
るオブジェクト・モデルはすべてが削除されるが、別の
オブジェクトを弱く参照するオブジェクトが削除される
時には、他のオブジェクトに含まれる、削除されるオブ
ジェクトへの両方向の参照だけが削除される。
The function of reference 6 is to load the model object from disk to memory if the model object is not already in memory. The reference must be in both directions. That is, if an object references a second object, it is necessary that one of the relationships of the second object includes a reference to the first object. Also, the reference is
Either "strong reference" or "weak reference". When model object 1 is deleted, all object models that strongly reference it are deleted, but when an object that weakly references another object is deleted, it is included in other objects and deleted. Only bidirectional references to the object are deleted.

【0028】図1に示された他の2つの機構も定義され
なければならない。これは、探索コンテキスト7とロッ
ク・コンテキストである。ロック・コンテキストは、削
除ロック8、リネーム・ロック9および変更ロック10
という3つの態様を有する。
The other two mechanisms shown in FIG. 1 must also be defined. This is the search context 7 and the lock context. The lock contexts are delete lock 8, rename lock 9, and change lock 10.
There are three aspects.

【0029】オブジェクト・モデルでは、異なるコンテ
キストが、そのモデルを介してオブジェクトに至る経路
に依存すると仮定することができる。図5に、好ましい
実施例による、探索コンテキストを表す抽象クラスSear
chContextへのC++インターフェースを示す。探索コ
ンテキスト7は、モデル内のオブジェクトのサブセット
に沿った経路を表す。探索コンテキストは、属性を見つ
ける動作と属性を検査する動作を提供し、属性を捜すよ
うに求められた時に、探索コンテキストは、要求された
属性を有するオブジェクトに遭遇するか、リストの終り
に達するまで、モデル・オブジェクトのリストに沿って
ナビゲートする。要求された属性を有するオブジェクト
が見つかった場合、その属性の値を返す。したがって、
異なる探索コンテキストによって、モデル内の1つのオ
ブジェクトが異なる属性を有するように見せることがで
きる。
In the object model, it can be assumed that different contexts depend on the path to the object through the model. FIG. 5 shows an abstract class Sear representing a search context according to a preferred embodiment.
Shows the C ++ interface to chContext. Search context 7 represents a path along a subset of objects in the model. The search context provides the actions of finding and checking attributes, and when asked to search for an attribute, the search context encounters an object with the requested attribute or until the end of the list is reached. Navigate along the list of model objects. If an object with the requested attribute is found, return the value of that attribute. Therefore,
Different search contexts allow one object in the model to appear to have different attributes.

【0030】関係に含まれるモデル・オブジェクトは、
ツールによって変更する前に、そのツールによってロッ
クされなければならない。ロックは、フレームワーク階
層の好ましい実施例に関連して下で詳細に説明する。モ
デル・オブジェクトの属性を変更するためには、オブジ
ェクト自体をロックするだけでよい。モデル・オブジェ
クトをリネームするためには、オブジェクト自体をロッ
クすると共に、名前によってそのオブジェクトを参照し
ている関係のすべてをロックする必要がある。モデル・
オブジェクトを削除するためには、オブジェクト自体
と、そのオブジェクトによって直接または間接的に強く
参照されているオブジェクトならびにこれらのオブジェ
クトを参照している関係のすべてをロックしなければな
らない。各関係の各オブジェクトは、独立にロック可能
であり、この基本的な挙動は、オブジェクトの属性の変
更のような単純な動作には十分である。モデル・フレー
ムワークには、より複雑なリネームおよび削除のシナリ
オを処理するためのロック・コンテキスト・オブジェク
トが含まれる。図6に、削除ロック8およびリネーム・
ロック9のコンテキストを表す抽象クラスDeleteLockCo
ntextおよびRenameLockContextへのC++インターフェ
ースを示す。
The model objects included in the relationship are:
Before being changed by a tool, it must be locked by that tool. Locks are described in detail below in connection with the preferred embodiment of the framework hierarchy. To change the attributes of a model object, only lock the object itself. Renaming a model object requires locking the object itself, as well as any relationships that refer to that object by name. model·
In order to delete an object, the object itself and all objects directly or indirectly strongly referenced by that object as well as any relationships referring to these objects must be locked. Each object in each relationship is independently lockable, and this basic behavior is sufficient for simple operations such as changing the attributes of an object. The model framework includes a lock context object to handle more complex rename and delete scenarios. FIG. 6 shows the delete lock 8 and the rename
Abstract class DeleteLockCo representing the context of lock 9
Shows the C ++ interface to ntext and RenameLockContext.

【0031】リネーム・ロック・コンテキストは、オブ
ジェクトをリネームする前に、モデル・オブジェクトか
ら構成できる。リネーム・ロック・コンテキストでは、
いくつかの関係がモデル・オブジェクトの名前へのキー
である場合があるので、そのオブジェクトへの参照を含
む関係のすべてのモデル・オブジェクトをロックする。
A rename lock context can be constructed from a model object before renaming the object. In a rename lock context,
Since some relationships may be keys to the name of a model object, lock all model objects in the relationship that contain a reference to that object.

【0032】削除ロック・コンテキストは、オブジェク
トを削除する前に、モデル・オブジェクトから構成でき
る。削除ロック・コンテキストでは、モデル・オブジェ
クトと、強い参照の連鎖によって到達可能なモデル・オ
ブジェクトのすべて(フレームワーク上では、これらも
削除されるので)ならびに、前述のオブジェクトのいず
れかへの参照を含む関係のすべてがロックされる。これ
らの参照は、不正参照を防止するために関係から除去し
なければならない。
A delete lock context can be composed of model objects before deleting the objects. In a delete lock context, contains the model object and all of the model objects reachable by the chain of strong references (since they are also deleted on the framework), as well as references to any of the aforementioned objects All of the relationships are locked. These references must be removed from the relationship to prevent unauthorized references.

【0033】もう1つの好ましい実施例では、オブジェ
クト・クラスは、実際には2つのクラス、すなわち、抽
象クラスと実装クラスである。これを図7に示す。各モ
デル・オブジェクトは、対応する実装オブジェクト14
への参照13を含む抽象オブジェクト11からなる。
In another preferred embodiment, the object classes are actually two classes, an abstract class and an implementation class. This is shown in FIG. Each model object has a corresponding implementation object 14
Consists of an abstract object 11 containing a reference 13 to

【0034】オブジェクトへの完全なインターフェース
とそのオブジェクトの挙動は、オブジェクトの抽象部分
を介して提示される。しかし、実際には、オブジェクト
の名前12だけが抽象部分に格納される。オブジェクト
の属性15および関係16は、実装部分に隠蔽される。
オブジェクトに関する名前以外の情報の要求は、実装部
分によって、おそらくは実装部分に含まれる関係のいず
れかによって、秘密裡に満たされる。
The complete interface to an object and the behavior of that object is exposed through the abstraction of the object. However, in practice, only the name 12 of the object is stored in the abstract part. Object attributes 15 and relationships 16 are hidden in the implementation.
Requests for non-name information about an object are secretly satisfied by the implementation, and possibly by any of the relationships contained in the implementation.

【0035】抽象オブジェクト、実装オブジェクトおよ
び関係オブジェクトは、独立に永続的であるので、オブ
ジェクトの名前を要求することによって、抽象部分をデ
ィスク17からロードするコストが生じるが、実装部分
または関係をロードする必要はない。この技法では、問
い合わせを満たすためにディスクから転送されるデータ
の量が最小になり、フレームワーク上でのツールの総合
性能が改善される。
Since the abstract, implementation, and relationship objects are independently persistent, requesting the name of the object incurs the cost of loading the abstract portion from disk 17, but loading the implementation portion or relationship. No need. This technique minimizes the amount of data transferred from disk to satisfy the query and improves the overall performance of the tool on the framework.

【0036】上の定義を使用して、好ましい実施例のフ
レームワークは、開発パーツの柔軟な包含階層を実施す
るための環境とサポート機構を提供する。基本クラス群
では、パーツ・ロック(包含サポートとも称する)、オ
ブジェクト間の参照、属性/プロパティ・アクセス、実
行時型識別および永続性のための基本的な挙動が定義さ
れる。すべてのツールが、この基本クラス群から具体的
な実装を派生する。
Using the above definitions, the framework of the preferred embodiment provides an environment and support mechanism for implementing a flexible containment hierarchy of development parts. The base classes define the basic behavior for part locks (also called containment support), references between objects, attribute / property access, runtime type identification and persistence. All tools derive concrete implementations from this set of base classes.

【0037】図8は、本発明の好ましい実施例による抽
象基本階層を示す図である。この階層のコア機能は、破
線の上の、この階層の基本クラスとして識別される永続
性クラス20、通知クラス21およびロック・クラス2
2である。これは、これらのクラスを上書きできない
(C++プログラミングでは可能)ことを意味するので
はなく、何らかの形の永続性、識別およびロックが、本
発明のフレームワークが動作するために必要なコア機能
であることを意味する。破線の下の、IDE要素クラス
24から始まるクラス群は、フレームワーク階層に含め
ることができるデータ・モデル型のいくつかを示すもの
である。これらの追加クラスは、付録で定義されてお
り、多数の追加クラスが、同時出願の特許出願(IBM
ドケット番号CA9−97−003)に詳細に記述され
ている。
FIG. 8 is a diagram illustrating an abstract base layer according to a preferred embodiment of the present invention. The core functions of this hierarchy are, above the dashed line, a persistence class 20, a notification class 21, and a lock class 2, which are identified as base classes of this hierarchy
2. This does not mean that these classes cannot be overridden (as is possible with C ++ programming), but some form of persistence, identification and locking is a core feature required for the framework of the present invention to work. Means that. The classes below the dashed line, starting with IDE element class 24, illustrate some of the data model types that can be included in the framework hierarchy. These additional classes are defined in the Appendix, and a number of additional classes have been published in co-pending patent applications (IBM
Docket number CA9-97-003).

【0038】本発明のフレームワーク階層での継承は、
下記を提供するように動作する。永続性サービスによっ
て、ホスト・コンピュータのファイル・システム内での
データ・モデルの状態を維持し、このデータを複数の走
行中のプログラムの間で共用する。このフレームワーク
階層から派生したモデル・オブジェクトは、ファイル・
システム内のファイルにグループ化される。ファイル・
システム内のオブジェクトを、「コミットされたモデ
ル」と称する。フレームワーク・モデルを使用するプロ
グラムが走行する時には、コミットされたモデルのデー
タだけが可視になる。モデルに対する変更のすべてが、
走行中の単一のプログラムの私用アドレス空間内にある
モデル・オブジェクトのメモリ内コピーに対して行われ
る。
The inheritance in the framework hierarchy of the present invention is as follows:
Operates to provide: The persistence service maintains the state of the data model in the host computer's file system and shares this data among multiple running programs. Model objects derived from this framework hierarchy are
Grouped into files in the system. File·
Objects in the system are referred to as "committed models." When a program using the framework model runs, only the data of the committed model is visible. All changes to the model
It is performed on an in-memory copy of the model object in the private address space of the single running program.

【0039】ロック・サービスによって、モデルに対す
る変更の相互排他を実施する。走行中のプログラムのそ
れぞれが、モデル・オブジェクトの私用メモリ内コピー
に対して変更を行うので、2つのプログラムが同一のオ
ブジェクトを同時に変更または削除する可能性はない。
ロック・サービスは、同時アクセスを禁止する強制ロッ
ク方式を提供する。これについては下で詳細に説明す
る。
The lock service enforces mutual exclusion of changes to the model. Since each of the running programs makes changes to the private in-memory copy of the model objects, there is no possibility that two programs will modify or delete the same object at the same time.
The lock service provides a mandatory lock scheme that prohibits simultaneous access. This will be described in detail below.

【0040】図8を参照すると、基本クラスである永続
性クラス20からの継承によって、モデル・オブジェク
トは、各プログラムの省略時ローカル・ヒープから作成
され、永続性によって、ホスト・コンピュータのファイ
ル・システムを介して共用される。多くのC++実装系
では、動的バインディングまたは実行時バインディング
が、通常は、各オブジェクト内で、定数メソッド・ポイ
ンタのクラス固有のテーブルへのポインタとして実装さ
れる。メソッド・テーブル・ポインタは、通常は、動的
リンク・ライブラリまたは実行可能プログラムに格納さ
れるが、すべての実行可能イメージが異なり、テーブル
の位置が異なるので、アクセス不能である。その結果、
通常の実装系では、共用メモリにC++オブジェクトを
格納し、異なる実行可能プログラムからそれらのデータ
にアクセスすることは不可能である。
Referring to FIG. 8, by inheriting from the base class, the persistence class 20, model objects are created from the default local heap of each program, and by persistence, the host computer's file system. Is shared via In many C ++ implementations, dynamic or late binding is typically implemented within each object as a pointer to a class-specific table of constant method pointers. The method table pointer is usually stored in a dynamically linked library or executable program, but is inaccessible because all executable images are different and the location of the table is different. as a result,
In a typical implementation, it is not possible to store C ++ objects in shared memory and access their data from different executable programs.

【0041】本発明の永続性サービスでは、省略時ロー
カル・ヒープからの作成を介してこの問題を回避する。
The persistence service of the present invention avoids this problem through creation from the default local heap.

【0042】永続性クラス20は、フレームワーク内の
すべてのクラスがディスクを読み書きするための機構も
提供する。このモデルに含まれる、基本オブジェクト状
態を拡張する派生クラスのすべてが、それ自体の「読取
り」および「書込み」のメソッドを提供しなければなら
ないが、永続性クラスでは、オブジェクト・ストリーム
化のための機能も定義され、その結果、下位クラスで
は、ディスク形式のオブジェクトとメモリ内形式のオブ
ジェクトの間の変換に使用するためストリーム演算子を
オーバーライドすることになる。ストリーム演算子は、
各オブジェクトの独自の「読取り」および「書込み」の
メソッドを呼び出して、実際の処理を行う。以下の実装
規約は、好ましい実施例で派生クラスの「読取り」およ
び「書込み」のメソッドを定義する際に、すべてのクラ
スで使用される。
The persistence class 20 also provides a mechanism for all classes in the framework to read and write to disk. All of the derived classes in this model that extend the base object state must provide their own "read" and "write" methods, whereas the persistence class provides Capabilities are also defined, so that lower classes will override stream operators for use in converting between disk-shaped objects and in-memory objects. The stream operator is
Call the unique "read" and "write" methods of each object to do the actual work. The following implementation conventions are used by all classes in defining the "read" and "write" methods of derived classes in the preferred embodiment.

【0043】好ましい実施例では、フレームワークがC
++オブジェクトの強制相互排他を実施するための標準
インターフェースを提供する。この実装を使用するクラ
スは、ロック・クラス22から派生する。相互排他は、
走行中のプログラムの間で共用されるオブジェクトだけ
に必要であるから、ロック・クラス22自体は、永続性
クラス20のサブクラスである。
In a preferred embodiment, the framework is C
++ Provides a standard interface to enforce mandatory mutual exclusion of objects. The class that uses this implementation derives from lock class 22. Mutual exclusion is
Lock class 22 itself is a subclass of persistence class 20 because it is needed only for objects that are shared between running programs.

【0044】ロック・クラス22によって提供されるロ
ック方式を、下で説明する。しかし、これらの機構が不
適切になる場合が2つある。1つは大域「パーツ」リス
トであり、これは、データ構造に特定の型のすべてのオ
ブジェクトを含むことが保証されるデータ構造である。
もう1つは、「ダーティ・プール」であり、これは、モ
デル・オブジェクトと共に記憶されるが、その一部とし
て記憶されるのではない更新されたメタ情報のための機
構である。
The locking scheme provided by lock class 22 is described below. However, there are two cases where these mechanisms become inappropriate. One is a global "parts" list, which is a data structure whose data structure is guaranteed to contain all objects of a particular type.
Another is a "dirty pool", which is a mechanism for updated meta information that is stored with the model object but not as part of it.

【0045】ロック・クラス22は、ロックできる永続
オブジェクトのためのモデル抽象である。これは、モデ
ル内で使用されるロック・プリミティブを提供する。一
般に、これらのプリミティブは、直接には使用されず、
複合オブジェクト・ロックの一部として呼び出される。
オブジェクト・ロックは、以下の2ステップで作成され
る。 1.所期の種類のアクションのためにロック識別子を取
得する。好ましい実施例では、ロック・プールは、下で
説明するように、固定サイズの名前付き共用メモリ・セ
グメントを操作する、スケーラブル共用メモリ・プール
内に配置されたシングルトンC++クラスである。この
ため、ロック識別子は、実際にはプール内の配列インデ
ックスになる。 2.その後、ロック・オブジェクト型をインスタンス化
することによって、取得したロック識別子を使用して、
共用ロックまたは排他ロックを作成する。好ましい実施
例では、ロックはC++コンストラクタによって取得さ
れ、通常は、コード・ブロックの終了方法に無関係にデ
ストラクタが自動的に実行されるようにするために局所
インスタンスとして使用される。ロックの取得の失敗
は、例外によって伝えられる。デストラクタは、ほとん
どの場合にロックを解放するが、例外の1つが変更ロッ
ク・コンテキストである。
Lock class 22 is a model abstraction for lockable persistent objects. This provides the locking primitives used in the model. In general, these primitives are not used directly,
Called as part of a complex object lock.
An object lock is created in the following two steps. 1. Get the lock identifier for the desired type of action. In the preferred embodiment, the lock pool is a singleton C ++ class located in a scalable shared memory pool that operates on a fixed size named shared memory segment, as described below. Thus, the lock identifier is actually an array index in the pool. 2. Then, using the lock identifier obtained by instantiating the lock object type,
Create a shared or exclusive lock. In the preferred embodiment, the lock is acquired by a C ++ constructor and is typically used as a local instance to ensure that the destructor is executed automatically, regardless of how the code block ends. Failure to acquire a lock is signaled by an exception. Destructors release locks in most cases, with one exception being the change lock context.

【0046】C++プログラミングの慣習では、シング
ルトン・クラスとは、そのクラスのインスタンスが1時
に1プロセスあたり1つしか存在できないことを指す。
In C ++ programming convention, a singleton class indicates that there can be only one instance of that class per process at a time.

【0047】ツール・データ・モデル・オブジェクト自
体とは別の、ロック・オブジェクトのリポジトリとして
のスケーラブル共用メモリ・プールの使用は、同時出願
の特許出願、表題「Locking Tool Data Objects in a F
ramework Environment」(IBMドケット番号CA9−
97−010)の主題である。
The use of a scalable shared memory pool as a repository for locking objects, separate from the tool data model object itself, is described in the co-pending patent application entitled Locking Tool Data Objects in a F
ramework Environment "(IBM docket number CA9-
97-010).

【0048】スケーラブル共用メモリ・プールは、シス
テムの名前付き共用メモリ・プールからの固定サイズ・
セグメントの割振りを使用する、対等プール機構であ
る。セグメントの名前は、定義済みの文字シーケンスに
セグメント番号(0から始まる)を付加することによっ
て作成される。各プロセスは、そのプロセスのプール・
セグメントを操作するシングルトン・プールを有する。
新規セグメントが必要な時には、その名前を計算し、現
行メモリ内でそのセグメントを見つける試みが行われ
る。見つからない場合、セグメントを割り振る。この処
理は、メモリ・セグメントを必要とする最初のプロセス
がそれを割り振り、後続のすべてのプロセスがそのセグ
メントに再アクセスする(したがって、クライアント/
サーバではなく対等)ように同期化される。1プロセス
内のシングルトン・プール・クラスのそれぞれに、その
クラスに既知の全セグメントの配列が保持される。これ
によって、プロセス内のすべてのセグメントに、配列内
の高速の間接指定としてアクセスできるようになる。セ
グメントの配列のほかに、プールに関する大域情報を含
む特殊な名前付き区域が割り振られる。この区域の名前
は固定されており、そのプールを最初に開始するプロセ
スが、その区域を割り振る。プール内の大域情報へのア
クセスは、複数のプロセス間の競争状態を回避するため
に同期化される。
The scalable shared memory pool has a fixed size from the system's named shared memory pool.
It is a peer pool mechanism that uses segment allocation. Segment names are created by appending a segment number (starting from 0) to a predefined character sequence. Each process has its own pool
It has a singleton pool that operates segments.
When a new segment is needed, an attempt is made to calculate its name and find the segment in current memory. If not found, allocate a segment. This process means that the first process that needs a memory segment will allocate it, and all subsequent processes will re-access that segment (thus client /
Synchronized (equivalent to server). Each singleton pool class within a process holds an array of all segments known to that class. This allows all segments in the process to be accessed as fast indirects in the array. In addition to an array of segments, a special named area is allocated that contains global information about the pool. The name of this area is fixed, and the process that starts the pool first allocates the area. Access to global information in the pool is synchronized to avoid race conditions between multiple processes.

【0049】各セグメントは、オブジェクトの固定サイ
ズの配列として扱われ、その結果、各セグメントは、サ
イズ「x」の「n」個の片に分割される(「x」は、プ
ールに配置されるオブジェクトのサイズである)。各プ
ロセスは、1片の記憶域を必要とする時にプールIDの
取得を要求する。プールは、大域情報セグメントを使用
して、現在すでに与えられている最大のインデックスを
探す。その次の値がまだセグメント内である(すなわ
ち、nの倍数ではない)場合、単にその値を返す。そう
でない場合には、現在プール内にあるすべてのオブジェ
クトに対して検査を行って、使用中でないオブジェクト
を見つける。プール・セグメント内の記憶域の「n」個
の片のそれぞれは、シングルトン・クラスがこの検査を
実行できるように、使用中か未使用かをマークする標識
を有する必要がある。未使用のオブジェクトが見つかっ
た場合、そのインデックスを返し、その記憶域を使用中
としてマークする。見つからない場合には新規セグメン
トを割り振る。
Each segment is treated as a fixed size array of objects, so that each segment is divided into "n" pieces of size "x"("x" is located in the pool) Object size). Each process requests a pool ID when it needs one piece of storage. The pool uses the global information segment to look for the largest index currently given. If the next value is still in the segment (ie, not a multiple of n), simply return that value. Otherwise, it checks all objects currently in the pool to find those that are not in use. Each of the "n" pieces of storage in the pool segment must have an indicator that marks it as busy or unused so that the singleton class can perform this check. If an unused object is found, return its index and mark its storage as in use. If not found, allocate a new segment.

【0050】インデックスが与えられた後には、これを
使用して、特殊なプール・メソッドを介して共用メモリ
記憶域にアクセスできる。このプール・メソッドは、単
にインデックスを受け取り、セグメント番号とセグメン
ト内のインデックスを計算する。その後、このプール・
メソッドは、セグメント・アドレスの配列にアクセス
し、セグメント内のオブジェクトのアドレスを計算す
る。この形では、Windows(商標) NTなどの
一部のプラットフォームで共用メモリに異なる仮想アド
レスが割り当てられる場合であっても、同一のIDを複
数のプロセスで使用できる。この計算は次式に従って行
われる。 セグメント番号=プールID/n セグメント・インデックス=プールID mod n
After the index is provided, it can be used to access shared memory storage via special pool methods. This pool method simply receives the index and calculates the segment number and the index within the segment. After that, this pool
The method accesses an array of segment addresses and computes the addresses of the objects in the segment. In this manner, the same ID can be used by multiple processes, even if different virtual addresses are assigned to shared memory on some platforms, such as Windows NT. This calculation is performed according to the following equation. Segment number = pool ID / n segment index = pool ID mod n

【0051】プールは、必要に応じてセグメントが割り
振られるので、スケーラブルである。プールは、関係す
るプロセスの数やそれらのプロセスが始動する順序が問
題にならない(サーバが不要である)ので対等である。
この機構では、IDによって項目にアクセスするために
2つの間接指定だけが必要になる。
The pool is scalable because segments are allocated as needed. Pools are equal because the number of processes involved and the order in which they start up does not matter (no servers are required).
This mechanism requires only two indirect designations to access items by ID.

【0052】本発明の好ましい実施例では、ロック・オ
ブジェクトの型は次の2つである。 1.共用ロック 共用読取り専用アクセス 2.排他ロック 1つのプロセスに制限された読み書き
アクセス
In the preferred embodiment of the present invention, there are two types of lock objects: 1. Shared lock Shared read-only access 2. Exclusive lock Read / write access restricted to one process

【0053】図9の状態図からわかるように、ロック・
オブジェクトを作成することによって、その基礎となる
ロック可能モデル・オブジェクトへのアクセスがロック
される。ロック・オブジェクトを破棄するには、ほとん
どの場合にアクセスのロックを解除する必要がある。し
たがって、削除ロック型をインスタンス化して共用ロッ
ク型のインスタンス化を除去することによって、基礎と
なるモデル・オブジェクトへの制限された共用読み書き
アクセスが復元される。これによって、オブジェクトが
削除されなくなることが保証され、他のプロセスがその
オブジェクトを読むまたは変更できるようになる(すな
わち、共用または排他の変更ロックを取得できるように
なる)。例外は、基礎となるロックされたオブジェクト
が変更されている時である。このロックは、変更結果を
保管する時に破棄できる。
As can be seen from the state diagram of FIG.
Creating an object locks access to its underlying lockable model object. Destroying a lock object almost always requires unlocking access. Thus, by instantiating the delete lock type and removing the instantiation of the shared lock type, limited shared read / write access to the underlying model objects is restored. This ensures that the object will not be deleted and allows other processes to read or modify the object (ie, obtain a shared or exclusive change lock). The exception is when the underlying locked object has changed. This lock can be destroyed when saving changes.

【0054】作成と破棄のための強制ロックは、ある慣
習を介して実施される。フレームワーク・クラスのコン
ストラクタとデストラクタは、「protected」である。
これによって、プログラムがオブジェクトを直接に作成
することも削除することもできなくなる。その代わり
に、すべてのフレームワーク・クラスに、クラス・デー
タの「作成」メソッドと「破棄」メソッドが設けられ
る。作成メソッドでは、オブジェクトを作成する前に、
オブジェクトを作成し既存モデルに挿入するのに必要な
ロックを取得する。破棄メソッドでは、オブジェクトを
削除する前に、そのオブジェクトへの参照のすべてをモ
デルから除去するのに必要なロックのすべてを取得す
る。ロックの取得に失敗すると、変更動作の異常終了が
もたらされ、モデルの状態は未変更になり、例外が送出
される。
Forced locking for creation and destruction is implemented through some convention. Framework class constructors and destructors are "protected".
This prevents the program from directly creating or deleting objects. Instead, all framework classes have "create" and "destroy" methods for class data. In the create method, before creating the object,
Get the locks needed to create objects and insert them into existing models. The destroy method gets all the locks needed to remove all references to the object from the model before deleting the object. Failure to acquire a lock results in abnormal termination of the alter operation, the model state is unchanged, and an exception is thrown.

【0055】ロックの寿命は、永続性サブシステムと、
メモリ内のロックを参照するロック・オブジェクトの存
在の両方に依存する。これを図10に示す。ロック・オ
ブジェクト・クラスであるLockObject100は、派生ク
ラスとして共用ロック・クラスであるSharedLock102
と排他ロック・クラスであるExclusiveLock104を有
する。これらのクラスの間の相違は、共用ロックが複数
のプロセスを有することができるのに対して、排他ロッ
クは1時に1つのプロセスだけに限定されることであ
る。単一のプロセス・リソースは、それに対する1つの
排他ロックを有するか、1つまたは複数の共用ロックを
有することができる。
The lifetime of the lock is determined by the persistence subsystem,
Depends on both the existence of a lock object referencing the lock in memory. This is shown in FIG. LockObject100 which is a lock object class is a shared lock class SharedLock102 as a derived class.
And an exclusive lock class ExclusiveLock104. The difference between these classes is that shared locks can have multiple processes, while exclusive locks are limited to only one process at a time. A single process resource can have one exclusive lock on it, or one or more shared locks.

【0056】LockObject100が、ロック可能オブジェ
クトであるLockableObject106によってインスタンス
化される時には、ロック可能オブジェクトを作成する時
に割り当てられたロックIDを介してロック・プールで
あるLockPool108を参照することによって、ロックが
突き止められる。ロック・プール内のShared Pool Segm
ent112には、ロック・オーナのプロセスIDであるo
wningPID116が含まれる。ロック・オーナが、すでに
所有しているロックの再取得を試みる場合、この再取得
は許容される。
When a LockObject 100 is instantiated by a lockable object LockableObject 106, a lock is located by referring to the lock pool LockPool 108 via the lock ID assigned when the lockable object was created. . Shared Pool Segm in rock pool
ent112 is the process ID o of the lock owner
wningPID 116 is included. If the lock owner attempts to reacquire a lock already owned, this reacquisition is allowed.

【0057】共用ロックの場合、プロセスIDは、必ず
ダミー識別子または予約済み識別子である。同一のダミ
ー識別子が、共用ロックを獲得するすべての試みで使用
される。したがって、共用ロックがすでに別のプロセス
によって保持されている場合、プロセスIDが一致し、
ロックが許可される。共用ロック・オーナの数を記録す
るために、参照カウンタを使用する。このカウンタは、
ロックが取得されるたびに1つ増分され、ロックが解放
されるたびに1つ減分される。カウンタが0に達した時
には、そのロックは、もはやどのプロセスにも所有され
ておらず、共用ロックまたは排他ロックのいずれかとし
て使用できる状態になっている。
In the case of a shared lock, the process ID is always a dummy identifier or a reserved identifier. The same dummy identifier is used in all attempts to acquire a shared lock. Thus, if the shared lock is already held by another process, the process IDs match,
Locks are granted. Use a reference counter to keep track of the number of shared lock owners. This counter is
It is incremented by one each time a lock is acquired and decremented by one each time a lock is released. When the counter reaches zero, the lock is no longer owned by any process and is ready to be used as either a shared or exclusive lock.

【0058】排他ロックの場合、共用を防ぐために実際
のプロセスIDが使用される。特別な種類の排他ロック
が、ロックされたオブジェクトの変更された状態を記録
する「変更」ロックである。オブジェクトが未変更の場
合、ロックのデストラクタが走行する時に、ロックが即
座に解放される。ロックされたオブジェクトが変更され
ている場合、ロックされたオブジェクトに対する変更の
すべてが保管によってコミットされるか取り消されるま
では、変更ロックは変更ロック・デストラクタによって
解放されない。変更ロックが破棄されない場合(保管が
実行された時であっても)、オブジェクトはロックされ
たままになる。プログラムは、この挙動に頼って、保管
と保管の間にオブジェクトをロック状態に保つことがで
きる。
In the case of an exclusive lock, the actual process ID is used to prevent sharing. A special type of exclusive lock is a "change" lock, which records the changed state of a locked object. If the object has not changed, the lock is released immediately when the lock's destructor runs. If the locked object has changed, the change lock is not released by the change lock destructor until all changes to the locked object have been committed or canceled by save. If the change lock is not destroyed (even when the save is performed), the object remains locked. Programs can rely on this behavior to keep objects locked between saves.

【0059】このロック機構の使用に関する2つの例外
は、上で述べた大域パーツ・リストと「ダーティ・プー
ル」である。
Two exceptions to the use of this locking mechanism are the global parts list and "dirty pool" mentioned above.

【0060】大域パーツ・リストには、ユニークな名前
を有するオブジェクトの組が含まれる。好ましい実施例
のフレームワークでは、これが単一のオブジェクトに含
まれ、そのオブジェクトはシングルトン・クラスであ
る。名前の衝突を検出するデータ構造を含む共用メモリ
・リストを実施する時には、あるプログラムの大域リス
トに1つのパーツが追加され、そのパーツの名前が、パ
ーツのコミットされたリストと、コミットされていない
パーツ名の共用リストの両方でユニークであるかどうか
をテストされる。名前がユニークでない場合、追加動作
は失敗し、例外が送出される。そうでない場合には、挿
入動作が完了し、その名前は、他のプログラムがそれを
使用しないようにするために共用ヒープに追加される。
走行中のプログラムのそれぞれが、そのプログラムが挿
入したオブジェクトのリストを維持する。保管動作が進
行中の時には、プログラムはこれらのオブジェクトのす
べてを除去する。名前だけを格納することによって、大
域パーツ・グループ内で名前の衝突を防ぐのに使用され
る共用メモリの量が最小化されるという点で、スケーラ
ビリティがもたらされる。
The global parts list contains a set of objects having unique names. In the framework of the preferred embodiment, this is contained in a single object, which is a singleton class. When implementing a shared memory list containing a data structure that detects name collisions, one part is added to the global list of a program, and the name of the part is compared to the committed list of parts and the uncommitted part Tested for uniqueness in both shared lists of part names. If the name is not unique, the add operation fails and an exception is raised. If not, the insert operation is complete and the name is added to the shared heap to prevent other programs from using it.
Each running program maintains a list of objects inserted by that program. When a save operation is in progress, the program removes all of these objects. Storing names only provides scalability in that the amount of shared memory used to prevent name collisions within the global parts group is minimized.

【0061】第2の例外が、ダーティ・プールである。
これは、オブジェクトのソース・コード・ファイルへの
対応する更新なしにオブジェクトが変更されたかどうか
を追跡するインデックス・プールを指す。オブジェクト
の依存性が変化した時には、そのオブジェクトを再生成
しなければならない。実際のオブジェクトを変更しない
ことによって、プロセス間のロック競合が減り、性能が
改善される。オブジェクトとそのソース・ファイルが一
致しない時に、そのオブジェクトを「汚れた」または
「ダーティ」と呼び、したがって、これがインデックス
・プールの名前になった。ダーティ・プールでは、スケ
ーラブル共用メモリ・プール機構を使用して、共用オブ
ジェクトのための遠隔データをサポートする。遠隔デー
タとは、オブジェクトに依存しない、カプセル化された
オブジェクト状態である。このデータは、オブジェクト
のロック、変更および保管というシーケンスを実行せず
に変更できるので、プロセス間のロック競合の必要が減
る。ダーティ・プールでは、ロック・プール・インデク
シング方式を使用し、1つのオブジェクトに1つの識別
子が割り当てられ、この識別子は、モデル・オブジェク
トの寿命に対して永久的である、ダーティ・プール・イ
ンデックス内のビット・セグメントである。ダーティ・
プール・セグメントのそれぞれが、2つに分割される。
前半は、使用中ビットを有し、後半は、ダーティ状態ビ
ットを有する。このプールは、好ましい実施例では永続
的である。ダーティ・プールは、それ自体をディスクと
の間でストリーム入出力することができる。この形で
は、オブジェクトのソースを再生成する必要があるかど
うかに関する情報を、後続セッションで問い合わせるこ
とができる。
The second exception is a dirty pool.
It points to an index pool that tracks whether an object has changed without a corresponding update to the object's source code file. When an object's dependencies change, the object must be regenerated. By not changing the actual object, lock contention between processes is reduced and performance is improved. When an object and its source file did not match, the object was called "dirty" or "dirty" and thus became the name of the index pool. Dirty pools use the scalable shared memory pool mechanism to support remote data for shared objects. Remote data is an object-independent, encapsulated object state. This data can be changed without performing the sequence of locking, changing, and saving the object, thereby reducing the need for lock contention between processes. In a dirty pool, a lock pool indexing scheme is used, and one identifier is assigned to one object, the identifier in the dirty pool index being permanent for the life of the model object. It is a bit segment. Dirty
Each of the pool segments is split into two.
The first half has a busy bit and the second half has a dirty status bit. This pool is permanent in the preferred embodiment. The dirty pool can stream itself to and from disk. In this way, information about whether the source of the object needs to be regenerated can be queried in a subsequent session.

【0062】モデルに対する変更をコミットする時の永
続性サービスに対して、以下の3つの必要条件がある。 1.プログラムが、動作中に、コミットされたモデルか
ら旧オブジェクトの新版を読み取ることが可能であって
はならない。 2.ファイルへの変更の書込みの完了に失敗しても、コ
ミットされたモデルが破壊されてはならない。 3.あるプログラムで行われた変更によって、別のプロ
グラムがコミットした変更が上書きされてはならない。
There are three requirements for the persistence service when committing changes to the model: 1. The program must not be able to read the new version of the old object from the committed model during operation. 2. Failure to complete writing changes to a file must not destroy the committed model. 3. Changes made in one program must not overwrite changes committed by another program.

【0063】保管は、プロセス間通信プロトコルによっ
て同期化されるファイル・システムへの2相コミットと
して実施される。この処理を、図11の流れ図に示す。
Storage is implemented as a two-phase commit to a file system that is synchronized by an interprocess communication protocol. This process is shown in the flowchart of FIG.

【0064】このプロセス間通信プロトコルでは、2つ
のイベントすなわち「保管保留中」および「保管完了」
を使用する。これらのイベントは、共用メモリ・フラグ
と、共用メモリ・カウンタと、「通知」および「受信確
認」と称する2つのホスト・システム・セマフォとを用
いて実施される。
In this inter-process communication protocol, two events, “storage pending” and “storage complete”
Use These events are implemented using a shared memory flag, a shared memory counter, and two host system semaphores called "notification" and "acknowledgment."

【0065】保管は、保管元プログラムが「保管保留
中」イベントを送信する時に開始される(ブロック4
0)。「イベント送信」は、そのイベントの共用メモリ
・フラグに真をセットすることと、モデルの共用メモリ
・カウントを、そのモデルに付加されたプログラムの数
に初期設定することと、「受信確認」セマフォをリセッ
トすることと、「通知」セマフォをポストすることから
なる。
Archiving begins when the archival program sends an "archiving pending" event (block 4).
0). "Send event" sets the shared memory flag of the event to true, initializes the model's shared memory count to the number of programs added to the model, and sets the "acknowledgment" semaphore. Reset and post a "notification" semaphore.

【0066】フラグ・ファイルによって、保管の第1相
が開始されたことが示される時(ブロック42)、保管
元プログラムは、それが変更したファイルのすべてを一
時ファイルに書き込む(ブロック44)。一時ファイル
に保管することによって、他のプログラムがまだ能動的
にそのモデルを使用している場合に、それらのプログラ
ムが一時ファイルにアクセスできなくなる。これによっ
て、他のプログラムが、コミットされたモデルからのオ
ブジェクトと一時ファイル内のオブジェクトを混合でき
ないという、安全な保管という目的の条件1の半分が満
足される。
When the flag file indicates that the first phase of the save has been initiated (block 42), the source program writes all of the files it has modified to a temporary file (block 44). Storing in a temporary file prevents those programs from accessing the temporary file if other programs are still actively using the model. This satisfies half of Condition 1 for the purpose of secure storage, in that no other program can mix objects from the committed model with objects in the temporary file.

【0067】保管元プログラムは、変更されたファイル
のすべての一時ファイルへの書込を完了した後に(ブロ
ック46)、「保管保留中」イベントの完了を待つ。こ
れは、「受信確認」セマフォがポストされる時に、送信
元プログラムに知らされる(ブロック48)。
After completing the writing of the changed file to all temporary files (block 46), the archival source program waits for the completion of the "archiving pending" event. This is signaled to the sending program when the "acknowledgment" semaphore is posted (block 48).

【0068】保管保留中イベントは、フレームワーク・
モデルに付加された各プログラム内にあるワーカー・ス
レッドによって処理される。イベントを受信した時に、
ワーカー・スレッドが覚醒する。このスレッドは、その
プログラムでオープンされているすべてのモデルを、保
管フラグをセットされているモデルと比較することによ
って、そのプログラムが、保管されるモデルに付加され
ているかどうかを判定する。保管されるモデルにプログ
ラムが付加されている場合、スレッド間パッケージを使
用して、プログラムのメイン・スレッドに通知をポスト
する。この通知は、メイン・スレッドが、保管保留中通
知の前に受信した通知とGUIイベントのすべての処理
を完了した後に、非同期に受信される(ブロック5
8)。
The storage pending event is stored in the framework
Processed by worker threads in each program attached to the model. When an event is received,
The worker thread wakes up. The thread determines whether the program has been added to the saved model by comparing all models open in the program with models for which the save flag is set. If the program is attached to the saved model, use a cross-thread package to post a notification to the main thread of the program. This notification is received asynchronously after the main thread completes processing of all notifications and GUI events received before the pending storage notification (block 5).
8).

【0069】プログラムのメイン・スレッドは、同一の
保留中通知を受信する時に、モデル内のオブジェクトの
デマンド・ロードまたは変更を停止する(ブロック6
0)。これによって、プログラムが新旧オブジェクトを
混合できないという必要条件1が完了する。
When the main thread of the program receives the same pending notification, it stops demand loading or changing objects in the model (block 6).
0). This completes the requirement 1 that the program cannot mix new and old objects.

【0070】他のプログラムは、保管保留中イベントを
受信し、処理する際に、共用メモリ・カウンタを1つ減
分することによって、そのイベントの受信を確認する
(ブロック62)。減分されてカウンタが1に等しくな
った時には、すべてのプログラムが「通知」を処理して
おり、イベント「受信確認」セマフォがポストされ、イ
ベントの完了が示され(ブロック64)、これによっ
て、送信元プログラムが覚醒する(ブロック48)。
When the other program receives and processes the pending-save event, it acknowledges the receipt of the event by decrementing the shared memory counter by one (block 62). When the counter is decremented and equals one, all programs are processing the "notification" and the event "acknowledgment" semaphore is posted, indicating the completion of the event (block 64), whereby The source program wakes up (block 48).

【0071】「保管保留中」イベントが完了した時に
は、保管元プログラムが、ディスク上のフラグ・ファイ
ルを介して保管の第1相が完了したことを示す(ブロッ
ク46)。この時点の前に、システム・クラッシュなど
の割込みが発生すると、すべての変更結果が失われる
が、データベースは整合性のある状態に保たれる。
When the "save pending" event is completed, the archival program indicates that the first phase of archival is complete via a flag file on disk (block 46). If an interrupt such as a system crash occurs before this point, all changes will be lost, but the database will be kept in a consistent state.

【0072】エラーが発生しない場合、モデルの変更版
にアクセスするのに必要なデータのすべてが、ディスク
に書き込まれ、システム・クラッシュまたはプログラム
・クラッシュによって、ディスク上のモデルが整合性の
ない状態になる可能性はない。その後、保管元プログラ
ムは、一時ファイルのすべての名前を正しい名前に変更
し、コミットされたモデルから空のデータ・ファイルを
すべて除去する(ブロック50)。これは、変更された
ファイルのすべてが、その内容を一時ファイルの内容に
置換されることを意味し、これによって、安全な保管の
必要条件2が満足される。
If no errors occur, all of the data needed to access the modified version of the model is written to disk, and a system or program crash causes the model on disk to become inconsistent. There is no possibility. Thereafter, the archiving program renames all of the temporary files to the correct names and removes all empty data files from the committed model (block 50). This means that all of the modified files have their contents replaced with the contents of the temporary file, which satisfies secure storage requirement 2.

【0073】保管元プログラムは、待機中のワーカー・
スレッドおよびプログラム・メイン・スレッドに「保管
完了」イベントを送信して(ブロック52)、ディスク
上のモデルに整合性があることを他のすべてのプログラ
ムに示し、イベントの完了を待ち(ブロック54)、そ
の後、クリーン・アップを行う(ブロック56)。
The storage source program is composed of a waiting worker
A "save complete" event is sent to the thread and the program main thread (block 52), indicating to all other programs that the model on disk is consistent and waiting for the event to complete (block 54). Then, cleanup is performed (block 56).

【0074】図9の通知クラス21に見られる他のコア
機能は、フレームワーク内のツール・データの変更を他
のユーザに通信する機構を提供する。この機構も、図1
1に示されている。
Another core function found in the notification class 21 of FIG. 9 provides a mechanism for communicating tool data changes in the framework to other users. This mechanism is also shown in FIG.
It is shown in FIG.

【0075】モデルに付加された他のすべてのプログラ
ムは、「保管完了」イベントを受信する時に覚醒する
(ブロック64)。これらのプログラムは、フレームワ
ーク・リフレッシュ・メソッドを呼び出す(ブロック6
6)。このメソッドは、そのプログラムがオープンした
ファイルのそれぞれを調べ、変更されたそれぞれのオブ
ジェクトの最新版をロードする。この処理が完了した
後、すべてのプログラムに、最新の保管された変更との
整合性を有する、モデルの私用メモリ内版が含まれる。
プログラムに、保管元プログラムによって削除されたか
変更されたオブジェクトが含まれる場合、「保管完了」
イベントを受信するプログラムは、モデル/ビュー/コ
ントロール通知を、影響を受けるオブジェクトを観察す
るオブザーバのすべてに送信させる(ブロック68)。
これらの通知の観察は、プログラムが、モデルに対して
コミットされた変更と矛盾しないようにその内部状態を
変更するために使用するフックである。リフレッシュを
実行した後に、各プログラムは、保管完了イベントの受
信を確認する(ブロック70)。
All other programs that have been added to the model wake up upon receiving the "save complete" event (block 64). These programs call the framework refresh method (block 6).
6). This method examines each of the files opened by the program and loads the latest version of each changed object. After this process is completed, all programs will include a private in-memory version of the model, consistent with the latest saved changes.
Save Completed if the program contains objects that were deleted or modified by the archiving program
The program receiving the event causes a model / view / control notification to be sent to all observers observing the affected object (block 68).
The observation of these notifications is the hook that the program uses to change its internal state in a manner consistent with the changes committed to the model. After performing the refresh, each program acknowledges receipt of a storage complete event (block 70).

【0076】保管完了イベントが完了すると、保管元プ
ログラムとすべてのワーカー・スレッドが覚醒する。保
管元プログラムは、すべてのハウスキーピング動作を完
了し、保管からリターンする。ワーカー・スレッドは、
保管保留中プロセス間イベントを待つ待機状態に戻る。
When the storage completion event is completed, the storage source program and all worker threads wake up. The archival program completes all housekeeping operations and returns from archival. Worker threads are
The process returns to the waiting state for waiting for an inter-process event pending storage.

【0077】多数のモデル・オブジェクトを変更する動
作が成功裡に完了するかどうかを前もって判定すること
は常に可能ではないので、本発明のもう1つの好ましい
実施例では、永続性サービスによって、障害の場合に既
知の良好な状態に戻す能力を提供する。この処理を、図
12に示す。
In another preferred embodiment of the present invention, the persistence service provides for the failure of a fault because it is not always possible to determine in advance whether the operation of modifying a large number of model objects will complete successfully. Provides the ability to return to a known good condition. This process is shown in FIG.

【0078】このチェック・ポイント機構は、あるプロ
グラムの私用メモリ内状態を復元する。保管される状態
には、プログラムの始動以降またはプログラムがモデル
を保管した後に発生した、オブジェクトの削除、作成お
よび変更のすべてならびにオブジェクトおよびデータ・
ファイルの管理に使用される永続性サービスのデータ構
造体が含まれる。チェック・ポイント機構の動作中は、
このデータが一時ファイルに保存される。
This check point mechanism restores the state of a program in private memory. Saved states include all deletions, creations, and modifications of objects and objects and data since the program started or since the program saved the model.
Contains the persistence service data structures used to manage files. While the Check Point mechanism is operating,
This data is stored in a temporary file.

【0079】プログラムは、チェック・ポイント機構を
呼び出して、前の状態への復元が必要になる可能性のあ
る変更を開始することを示す(ブロック76)。永続性
サブシステムは、モデル上でそのプログラムによってオ
ープンされた永続性ファイルのそれぞれを調べる。永続
性サブシステムは、メモリ内の状態がコミットされた状
態と異なるオブジェクトを識別する(ブロック78)。
メモリ内では、変更されたオブジェクトに、一時ファイ
ルに保管されたことを示すフラグをつける(ブロック8
0および82)。
The program calls the Check Point mechanism to indicate that it initiates a change that may need to be restored to a previous state (block 76). The persistence subsystem looks at each of the persistence files opened by the program on the model. The persistence subsystem identifies objects whose state in memory is different from the committed state (block 78).
In memory, the modified object is flagged as being stored in a temporary file (block 8).
0 and 82).

【0080】変更の試みが不成功の時には、通常は例外
が送出され、受け取られる(ブロック84および86)
ので、「ロール・バック」メソッドが呼び出される(ブ
ロック88)。ロール・バック・メソッドは、チェック
・ポイントの後に削除されたオブジェクトを再作成し、
チェック・ポイント以降に作成されたオブジェクトを除
去し、変更されたすべてのオブジェクトの状態と永続性
サービス・データ構造体の状態を、チェック・ポイント
が呼び出された時の状態に復元する(ブロック90)。
If the change attempt is unsuccessful, an exception is usually thrown and received (blocks 84 and 86).
Therefore, the "roll back" method is called (block 88). The rollback method recreates the object that was deleted after the check point,
Remove the objects created since Check Point and restore the state of all changed objects and the state of the persistence services data structures to the state they were in when Check Point was called (block 90). .

【0081】アルゴリズムが成功裡に完了したとプロセ
スが判断する場合(ブロック84および86)、そのプ
ロセスは、「コミット」(ブロック92)を呼び出し
て、チェック・ポイント機構によって使用された資源を
解放し、内部モデル状態に整合性があることを示す。
If the process determines that the algorithm has completed successfully (blocks 84 and 86), the process calls "commit" (block 92) to release the resources used by the Check Point mechanism. , Indicates that the internal model state is consistent.

【0082】付録 下記によって、好ましい実施例による図8に示されたデ
ータ・モデル・クラスが定義される。 基本: 名前、名前付きプロパティ、名前付き関係 IDE要素: グラフィカル・ツリー・ビュー/ツリー
要素の作成/操作を許容 包含: フォルダ/グループ化 スコープ: 名前空間スコープ ファイル参照: 1つのディスク・ファイル・ポインタ サブパーツ: たとえばC++データ・メンバ 名前スコープ・フォルダ: 名前空間スコープによるグ
ループ化の概念 名前付きパーツ: 基本型の複合型 モデル: シングルトン・ルート ビルダー消費可能パーツ: コンポーネント(コンポジ
ット・エディタによる合成/操作を許容) typedef: パーツの別名 enum: 名前付きの順序数の集合 struct: レコード union: オーバーラップした構造体 基本型: 基礎となる型 ビルダー区分可能コンテナ: 分散を可能にするパーツ
区分
Appendix The following defines the data model class shown in FIG. 8 according to the preferred embodiment. Basic: Names, Named Properties, Named Relationships IDE Elements: Allows creation / manipulation of graphical tree views / tree elements Inclusion: Folder / Grouping Scope: Namespace Scope File Reference: One Disk File Pointer Sub Parts: For example, C ++ data members Name scope folder: The concept of grouping by namespace scope Named parts: Basic complex type Model: Singleton root Builder Consumable parts: Component (Allows composition / operation by composite editor ) Typedef: alias of parts enum: set of named ordinals struct: record union: overlapping structure base type: base type builder separable container: part that enables distribution Classification

【0083】まとめとして、本発明の構成に関して以下
の事項を開示する。
In summary, the following items are disclosed regarding the configuration of the present invention.

【0084】(1)各オブジェクトが、名前と、属性の
組と、フレームワーク機構内の他のオブジェクトへの参
照を含む関係の組とを含む、ツール情報を有するオブジ
ェクトを具備するオブジェクト指向プログラミング環境
内で、複数のツールのためのコンテキスト管理における
共通のオブジェクト関係を提供するためのフレームワー
ク機構。 (2)各オブジェクト内の前記ツール情報が、複数の別
々の文字列によって定義される、上記(1)に記載のフ
レームワーク機構。 (3)各オブジェクトが、標準の定義済み値の文字列
と、未定義の値に含まれるデータのセグメントをセット
する作用および検査する作用を有する、前記未定義の値
の文字列とを含む、属性用の文字列のための定義を提供
する、上記(2)に記載のフレームワーク機構。 (4)オブジェクト・セット内の関係が、両方向であ
り、強い関係または弱い関係として定義され、強い関係
によって、オブジェクトの削除の際に、削除されるオブ
ジェクトによって参照される他のすべてのオブジェクト
が削除され、弱い関係によって、オブジェクトの削除の
際に、削除されるオブジェクトへの参照のすべてが削除
される上記(1)に記載のフレームワーク機構。 (5)さらに、単一のユーザによってオブジェクトに行
われる変更を許可するためにオブジェクトをロックする
ための機構を含み、前記機構が、オブジェクトのリネー
ムを許可するための、オブジェクトとそのオブジェクト
への参照を含むすべての関係とをロックする、リネーム
・ロックと、オブジェクトの削除を許可するための、オ
ブジェクトと、そのオブジェクトによって強く参照され
る他のすべてのオブジェクトと、そのオブジェクトへの
参照または前記強く参照される他のすべてのオブジェク
トへの参照を含むすべての関係とをロックする、削除ロ
ックと、オブジェクトおよび影響を受ける関係のすべて
の変更を許可するための変更ロックとを含む、上記
(4)に記載のフレームワーク機構。 (6)各オブジェクトが、抽象クラスと、実装クラスと
を含む、上記(1)に記載のフレームワーク機構。 (7)各オブジェクトについて、オブジェクトの名前
が、抽象クラスに格納され、オブジェクトの属性の組お
よび関係の組が、実装クラスに格納される上記(6)に
記載のフレームワーク機構。 (8)オブジェクトの実装クラスに格納される属性の組
および関係の組が、隠蔽される、上記(7)に記載のフ
レームワーク機構。 (9)特定のプログラミング環境に合わせてツール・デ
ータを調整するためのユーザ・ツール用の拡張可能機能
を許容する、ツール・データを共用するためのフレーム
ワーク機構であって、前記ツール・データを含むオブジ
ェクトの、永続性の維持、識別およびロックのためのコ
ア機能を含むフレームワーク機構。 (10)永続性を維持するためのコア機能が、オブジェ
クトをディスクに書き込み、ディスクからメモリ内形式
へオブジェクトを読み取るための、フレームワーク内の
全クラスのための基本機構を提供し、前記基本機構が、
特定の読取りメソッドおよび書込みメソッドによって派
生クラス内で拡張可能である、上記(9)に記載のフレ
ームワーク機構。 (11)基本機構が、オブジェクトをディスク形式から
メモリ内形式に変換するためのストリーム化演算子を含
み、前記ストリーム化演算子が、オブジェクト自体の読
取りメソッドおよび書込みメソッドを呼び出すようにな
されている、上記(10)に記載のフレームワーク機
構。 (12)永続性を維持するためのコア機能が、ツール・
データを含むファイルが保管されている間にアクティブ
にされる共用メモリ・フラグを含み、コア識別機能が、
共用メモリ・フラグのアクティブ状態および非アクティ
ブ状態の前記ファイル内のツール・データに依存する処
理を通知するようになされている通信セマフォを含む上
記(9)に記載のフレームワーク機構。 (13)コア・ロック機能が、オブジェクトのリネーム
を許可するための、オブジェクトとそのオブジェクトへ
の参照を含む関係のすべてとをロックする、リネーム・
ロックと、オブジェクトの削除を許可するための、オブ
ジェクトと、オブジェクトによって強く参照される他の
すべてのオブジェクトと、オブジェクトへの参照または
前記強く参照される他のすべてのオブジェクトへの参照
を含む関係のすべてとをロックする、削除ロックと、オ
ブジェクトおよび影響を受ける関係の変更を許可するた
めの、変更ロックとを含む、上記(9)に記載のフレー
ムワーク機構。
(1) An object-oriented programming environment in which each object has an object with tool information, including a name, a set of attributes, and a set of relationships including references to other objects in the framework mechanism. Within, a framework mechanism for providing common object relationships in context management for multiple tools. (2) The framework mechanism according to (1), wherein the tool information in each object is defined by a plurality of separate character strings. (3) each object includes a standard defined value string and the undefined value string having an action of setting and checking a segment of data included in the undefined value; The framework mechanism according to (2), which provides a definition for a character string for an attribute. (4) The relationship in the object set is bi-directional, defined as a strong or weak relationship, such that upon deletion of an object, all other objects referenced by the deleted object are deleted upon deletion of the object. The framework mechanism according to (1), wherein all references to the deleted object are deleted when the object is deleted due to the weak relationship. And (5) further including a mechanism for locking the object to permit changes made to the object by a single user, the mechanism including an object and a reference to the object for permitting the object to be renamed. An object and all other objects strongly referenced by the object, and a reference to or strong reference to the object, to lock all relationships, including, and to allow the deletion of the object (4), including a delete lock, which locks all relationships involving references to all other objects being created, and a change lock, which permits all changes to the object and affected relationships. The described framework mechanism. (6) The framework mechanism according to (1), wherein each object includes an abstract class and an implementation class. (7) The framework mechanism according to (6), wherein, for each object, the name of the object is stored in the abstract class, and the set of attributes and the relation of the object are stored in the implementation class. (8) The framework mechanism according to (7), wherein a set of attributes and a set of relationships stored in the implementation class of the object are hidden. (9) A framework mechanism for sharing tool data, which allows for extensible functions for user tools to tailor tool data for a particular programming environment, wherein the tool data is shared. A framework mechanism that includes core functionality for maintaining, identifying, and locking the containing objects. (10) A core function for maintaining persistence provides a basic mechanism for all classes in the framework to write objects to disk and read objects from disk to an in-memory format; But,
The framework mechanism according to (9), which can be extended in a derived class by a specific read method and write method. (11) the basic mechanism includes a streaming operator for converting the object from a disk format to an in-memory format, wherein the streaming operator invokes a read method and a write method of the object itself; The framework mechanism according to the above (10). (12) Core functions for maintaining persistence are tools and
A shared memory flag that is activated while the file containing the data is stored,
The framework mechanism according to (9), further including a communication semaphore adapted to notify a process dependent on tool data in the file in an active state and an inactive state of a shared memory flag. (13) The core lock function locks the object and all of the relationships including references to the object to permit the object to be renamed.
A lock and an object, all other objects strongly referenced by the object, and a relationship involving a reference to the object or to all other strongly referenced objects, to permit deletion of the object. The framework mechanism of (9), including a delete lock that locks everything, and a change lock to allow changes to objects and affected relationships.

【図面の簡単な説明】[Brief description of the drawings]

【図1】OMT(Object Modeling Technique)表記を
使用した、本発明によるモデル・オブジェクトのクラス
階層を示す概略図である。
FIG. 1 is a schematic diagram illustrating a class hierarchy of model objects according to the present invention using OMT (Object Modeling Technique) notation.

【図2】C++で表した、本発明の好ましい実施例によ
るフレームワーク機構のクラス図である。
FIG. 2 is a class diagram of a framework mechanism according to a preferred embodiment of the present invention, represented by C ++.

【図3】C++で表した、本発明の好ましい実施例によ
るフレームワーク機構のクラス図である。
FIG. 3 is a class diagram of a framework mechanism according to a preferred embodiment of the present invention, represented by C ++.

【図4】C++で表した、本発明の好ましい実施例によ
るフレームワーク機構のクラス図である。
FIG. 4 is a class diagram of a framework mechanism according to a preferred embodiment of the present invention, represented by C ++.

【図5】C++で表した、本発明の好ましい実施例によ
るフレームワーク機構のクラス図である。
FIG. 5 is a class diagram of a framework mechanism represented by C ++ according to a preferred embodiment of the present invention.

【図6】C++で表した、本発明の好ましい実施例によ
るフレームワーク機構のクラス図である。
FIG. 6 is a class diagram of a framework mechanism according to a preferred embodiment of the present invention, represented by C ++.

【図7】図1に類似した、もう1つの好ましい実施例に
よる、2つのクラスとしてのオブジェクト・モデルを示
す概略図である。
FIG. 7 is a schematic diagram similar to FIG. 1, showing the object model as two classes, according to another preferred embodiment;

【図8】OMT表記を使用した、本発明の教示によって
構成されたフレームワーク機構の階層カテゴリ図であ
る。
FIG. 8 is a hierarchical category diagram of a framework mechanism constructed according to the teachings of the present invention using OMT notation.

【図9】オブジェクトのロック状態を示す状態図であ
る。
FIG. 9 is a state diagram showing a locked state of an object.

【図10】本発明の好ましい実施例で実施されたロック
機構を示す概略図である。
FIG. 10 is a schematic diagram illustrating a locking mechanism implemented in a preferred embodiment of the present invention.

【図11】本発明のコア機能を使用する、ツール・デー
タの変更を保管するためのステップを示す流れ図であ
る。
FIG. 11 is a flow diagram showing the steps for saving tool data changes using the core functionality of the present invention.

【図12】本発明のコア機能を使用する、ツール・デー
タの変更の通知を発行するためのステップを示す流れ図
である。
FIG. 12 is a flow chart showing the steps for issuing a notification of a change in tool data using the core functionality of the present invention.

【符号の説明】[Explanation of symbols]

1 モデル・オブジェクト 2 文字列 3 文字列 3a 文字列 3b BLOB 4 関係 5 名前 6 参照 7 探索コンテキスト 8 削除ロック 9 リネーム・ロック 10 変更ロック 11 抽象オブジェクト 12 名前 13 参照 14 実装オブジェクト 15 属性 16 関係 17 ディスク 20 永続性クラス 21 通知クラス 22 ロック・クラス 24 IDE要素クラス 100 LockObject 102 SharedLock 104 ExclusiveLock 106 LockableObject 108 LockPool 112 ロック 116 owningPID 1 model object 2 character string 3 character string 3a character string 3b BLOB 4 relation 5 name 6 reference 7 search context 8 delete lock 9 rename lock 10 change lock 11 abstract object 12 name 13 reference 14 implementation object 15 attribute 17 relation 17 disk Reference Signs List 20 persistence class 21 notification class 22 lock class 24 IDE element class 100 LockObject 102 SharedLock 104 ExclusiveLock 106 LockableObject 108 LockPool 112 lock 116 owningPID

───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェフリー・グラント・ジョンストン カナダ エム1エス 2エックス4 オン タリオ州スカーボバラ ホージーヒル・ク レッセント34 (72)発明者 ヴラディミール・クリチニク カナダ エル1ジー 2エス2 オンタリ オ州オシャワパインウッド・ストリート 567 (72)発明者 デービッド・マーチン・ローソン カナダ エム9シー 4エヌ5 オンタリ オ州エトビコーク ラングーン・ロード47 (72)発明者 ロク・ティン・ロイ カナダ エム4ビー 3エム8 オンタリ オ州イースト・ヨーク パーク・ヴィス タ・ドライブ4 スート1208 (72)発明者 ダーク・アレクサンダー・シールマン・ザ セカンド カナダ エル3ティー 4ゼット3 オン タリオ州ソーンヒル キンデール・ウェイ 56 ────────────────────────────────────────────────── ─── Continuing on the front page (72) Inventor Jeffrey Grant Johnston Canada M1S2X4 On Scarboroughborough, Ontario Hoody Hill Crescent 34 (72) Inventor Vladimir Criticnik Canada L1G2S2 Ontario Oshawa Pinewood Street, 567 (72) Inventor David Martin Lawson Canada M9C 4N5 Ontario Etobicoke Rangoon Road 47 (72) Inventor Lok Tin Roy Canada M4B 3M8 East York, Ontario Park Vista Drive 4 Suite 1208 (72) Inventor Dark Alexander Thielman The Second Canada L 3 Tee 4 Zet 3 on Thornhill, Tario Kindale Way 56

Claims (13)

【特許請求の範囲】[Claims] 【請求項1】各オブジェクトが、 名前と、 属性の組と、 フレームワーク機構内の他のオブジェクトへの参照を含
む関係の組とを含む、ツール情報を有するオブジェクト
を具備するオブジェクト指向プログラミング環境内で、
複数のツールのためのコンテキスト管理における共通の
オブジェクト関係を提供するためのフレームワーク機
構。
1. An object-oriented programming environment comprising an object having tool information, wherein each object includes a name, a set of attributes, and a set of relationships including references to other objects in the framework mechanism. so,
Framework mechanism for providing common object relationships in context management for multiple tools.
【請求項2】各オブジェクト内の前記ツール情報が、複
数の別々の文字列によって定義される、請求項1に記載
のフレームワーク機構。
2. The framework mechanism according to claim 1, wherein said tool information in each object is defined by a plurality of separate character strings.
【請求項3】各オブジェクトが、 標準の定義済み値の文字列と、 未定義の値に含まれるデータのセグメントをセットする
作用および検査する作用を有する、前記未定義の値の文
字列とを含む、属性用の文字列のための定義を提供す
る、請求項2に記載のフレームワーク機構。
3. An object according to claim 1, wherein each object comprises a string of standard defined values and a string of undefined values having an action of setting and checking a segment of data contained in the undefined values. 3. The framework mechanism of claim 2, providing definitions for strings for attributes, including.
【請求項4】オブジェクト・セット内の関係が、両方向
であり、強い関係または弱い関係として定義され、 強い関係によって、オブジェクトの削除の際に、削除さ
れるオブジェクトによって参照される他のすべてのオブ
ジェクトが削除され、 弱い関係によって、オブジェクトの削除の際に、削除さ
れるオブジェクトへの参照のすべてが削除される請求項
1に記載のフレームワーク機構。
4. The relationship within the set of objects is bidirectional and is defined as a strong or weak relationship, wherein the strong relationship causes all other objects referenced by the deleted object upon deletion of the object. 2. The framework mechanism according to claim 1, wherein, upon deletion of the object, all references to the deleted object are deleted due to the weak relationship.
【請求項5】さらに、単一のユーザによってオブジェク
トに行われる変更を許可するためにオブジェクトをロッ
クするための機構を含み、前記機構が、 オブジェクトのリネームを許可するための、オブジェク
トとそのオブジェクトへの参照を含むすべての関係とを
ロックする、リネーム・ロックと、 オブジェクトの削除を許可するための、オブジェクト
と、そのオブジェクトによって強く参照される他のすべ
てのオブジェクトと、そのオブジェクトへの参照または
前記強く参照される他のすべてのオブジェクトへの参照
を含むすべての関係とをロックする、削除ロックと、 オブジェクトおよび影響を受ける関係のすべての変更を
許可するための変更ロックとを含む、請求項4に記載の
フレームワーク機構。
5. The system further includes a mechanism for locking the object to permit changes made to the object by a single user, the mechanism comprising: An object and all other objects strongly referenced by the object, and a reference to the object, to lock all relationships, including references to the object, and to allow the object to be deleted. 5. A lock comprising: a delete lock, which locks all relationships containing references to all other strongly referenced objects; and a change lock, which permits all changes to the object and the affected relationships. The framework mechanism described in 1.
【請求項6】各オブジェクトが、 抽象クラスと、 実装クラスとを含む、請求項1に記載のフレームワーク
機構。
6. The framework mechanism of claim 1, wherein each object includes an abstract class and an implementation class.
【請求項7】各オブジェクトについて、 オブジェクトの名前が、抽象クラスに格納され、 オブジェクトの属性の組および関係の組が、実装クラス
に格納される請求項6に記載のフレームワーク機構。
7. The framework mechanism of claim 6, wherein for each object, the name of the object is stored in an abstract class, and the set of attributes and relationships of the object are stored in an implementation class.
【請求項8】オブジェクトの実装クラスに格納される属
性の組および関係の組が、隠蔽される、請求項7に記載
のフレームワーク機構。
8. The framework mechanism according to claim 7, wherein a set of attributes and a set of relationships stored in an implementation class of the object are hidden.
【請求項9】特定のプログラミング環境に合わせてツー
ル・データを調整するためのユーザ・ツール用の拡張可
能機能を許容する、ツール・データを共用するためのフ
レームワーク機構であって、前記ツール・データを含む
オブジェクトの、永続性の維持、識別およびロックのた
めのコア機能を含むフレームワーク機構。
9. A framework for sharing tool data, which allows for extensible functionality for user tools to tailor tool data for a particular programming environment, the framework mechanism for sharing tool data. A framework mechanism that includes core functionality for maintaining, identifying, and locking objects containing data.
【請求項10】永続性を維持するためのコア機能が、オ
ブジェクトをディスクに書き込み、ディスクからメモリ
内形式へオブジェクトを読み取るための、フレームワー
ク内の全クラスのための基本機構を提供し、前記基本機
構が、特定の読取りメソッドおよび書込みメソッドによ
って派生クラス内で拡張可能である、請求項9に記載の
フレームワーク機構。
10. The core functionality for maintaining persistence provides a basic mechanism for all classes in the framework to write objects to disk and read objects from disk to an in-memory format. 10. The framework mechanism of claim 9, wherein the base mechanism is extensible in derived classes by specific read and write methods.
【請求項11】基本機構が、オブジェクトをディスク形
式からメモリ内形式に変換するためのストリーム化演算
子を含み、前記ストリーム化演算子が、オブジェクト自
体の読取りメソッドおよび書込みメソッドを呼び出すよ
うになされている、請求項10に記載のフレームワーク
機構。
11. The basic mechanism includes a streaming operator for converting an object from a disk format to an in-memory format, said streaming operator being adapted to invoke read and write methods of the object itself. The framework mechanism of claim 10, wherein:
【請求項12】永続性を維持するためのコア機能が、ツ
ール・データを含むファイルが保管されている間にアク
ティブにされる共用メモリ・フラグを含み、 コア識別機能が、共用メモリ・フラグのアクティブ状態
および非アクティブ状態の前記ファイル内のツール・デ
ータに依存する処理を通知するようになされている通信
セマフォを含む請求項9に記載のフレームワーク機構。
12. The core function for maintaining persistence includes a shared memory flag that is activated while a file containing tool data is stored, and the core identification function includes: 10. The framework mechanism of claim 9, including a communication semaphore adapted to signal active and inactive processing dependent on tool data in the file.
【請求項13】コア・ロック機能が、 オブジェクトのリネームを許可するための、オブジェク
トとそのオブジェクトへの参照を含む関係のすべてとを
ロックする、リネーム・ロックと、 オブジェクトの削除を許可するための、オブジェクト
と、オブジェクトによって強く参照される他のすべての
オブジェクトと、オブジェクトへの参照または前記強く
参照される他のすべてのオブジェクトへの参照を含む関
係のすべてとをロックする、削除ロックと、 オブジェクトおよび影響を受ける関係の変更を許可する
ための、変更ロックとを含む、請求項9に記載のフレー
ムワーク機構。
13. A core lock function for locking an object and all of its relationships, including references to the object, for permitting the object to be renamed, a rename lock, and a method for permitting the deletion of the object. A delete lock, which locks an object, all other objects strongly referenced by the object, and all relationships involving references to the object or all other strongly referenced objects; 10. The framework mechanism of claim 9, including a change lock to allow changes in affected relationships.
JP6488298A 1997-03-27 1998-03-16 Frame work mechanism Pending JPH10301782A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2201279 1997-03-27
CA 2201279 CA2201279A1 (en) 1997-03-27 1997-03-27 An object oriented framework mechanism providing common object relationship and context management for multiple tools

Publications (1)

Publication Number Publication Date
JPH10301782A true JPH10301782A (en) 1998-11-13

Family

ID=4160290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6488298A Pending JPH10301782A (en) 1997-03-27 1998-03-16 Frame work mechanism

Country Status (3)

Country Link
JP (1) JPH10301782A (en)
CA (1) CA2201279A1 (en)
TW (1) TW408285B (en)

Also Published As

Publication number Publication date
TW408285B (en) 2000-10-11
CA2201279A1 (en) 1998-09-27

Similar Documents

Publication Publication Date Title
US6026401A (en) Locking tool data objects in a framework environment
EP0698243B1 (en) Storage manager for computer system and method therefor
US10558642B2 (en) Mechanism for deprecating object oriented data
US5504892A (en) Extensible object-oriented file system
US5659735A (en) Object-oriented system for program version and history database management system for various program components
US6401101B1 (en) Method, server/computer and data structure for implementation of complex objects in an object-oriented database
US5752245A (en) Object-oriented system for configuration history management with a project workspace and project history database for draft identification
JP4425348B2 (en) Compound document framework
EP1460565B1 (en) Method and system for uniformly accessing multiple directory services
KR100313844B1 (en) Locking tool data objects in a framework environment
US7451434B1 (en) Programming with shared objects in a shared memory
JPH1173320A (en) Method for developing framework and software system
CA2398148C (en) System and method for managing bi-directional relationships between objects
JP4039800B2 (en) Data management method, object integrated management system
EP0841612A2 (en) Framework for software development
JP2006504194A (en) Transparent EJB support and horizontal data partitioning
EP1875389B1 (en) Region-based security
US5924100A (en) Flexible object representation of relational database cells having nontraditional datatypes
US6230213B1 (en) Extensible mechanism for providing safe automatic management of objects
WO1999033006A1 (en) Evolution of object-relational mapping through source code merging
Aish Bentley systems
JPH10301782A (en) Frame work mechanism
JP2001527241A (en) Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
Jiau et al. Reusing CAD tools in object oriented based framework
Wieczerzycki CDM-collaborative data model for databases supporting groupware applications