Fachgruppe
Praktische Informatik of the Department
12 (Electrical Engineering and Computer Science) at the University
of Siegen
H-PCTE
H-PCTE is a distributed object management system (OMS) which is intended
to be used as a basis of distributed software
development environments (SDE), or, more generally, distributed document
editing systems. Systems of that sort are often termed SDE frameworks,
or repositories. H-PCTE provides the following set of integrated basic
services:
data management services based on the entity relationship model
with extensions such as composite objects, versions, multiple inheritance,
long fields (files), dynamically created views
schema management services: applications can dynamically create
new types or modify existing types, the instances of which are automatically
converted.
access controls: one object base can be used be several users. Access
permissions can be granted to individual users and to nested user groups.
concurrency control: one object base can be accessed concurrently
by several applications, notably tools of an SDE. Features of the CC mechanism
are:
H-PCTE provides several types of activities, from classical transactions,
which offer a high degree of protection from concurrent access, to unprotected
activities.
Nested tool transactions are supported.
H-PCTE supports extremely fine-grained locks, namely locks for individual
attributes of objects or links.
Notification: applications can request the OMS kernel to be informed about
various modifications of data granules. This mechanism makes it easy to
propagate change between tools / windows which use or show the same data.
H-PCTE offers both efficient navigational access to objects, as defined
in the PCTE standards ECMA-149/-158 and non-navigational,
set-oriented access through two query languages,
NTT
and P-OQL.
H-PCTE is freely available from our FTP
archive.
The following sections of this page provide more detailed information
about the H-PCTE system:
Components of the H-PCTE system
Applications based on H-PCTE
Implementation strategy of H-PCTE
Query languages for PCTE object bases
Further and more general Information about PCTE and H-PCTE can be
obtained from the following pages:
General
information about ECMA/ISO-PCTE
README
file for latest version
Examples
of H-PCTE-based Applications
Frequently (or
sometimes) asked questions about H-PCTE
News and rumours
about future versions of H-PCTE
Modifications
in successive versions of H-PCTE, incl. description of new features
Components of the H-PCTE system
The complete system consists of several mayor parts:
-
the C API to the kernel, i.e. a library which contains implementations
of a subset of the functions defined in ECMA-149/158,
and accompanying include files
-
a Java API to the kernel, i.e. a class which contains
a set of Java operations which are functionally equivalent to the operations
provided by the C API, and a specific server which implements the Java
API
-
a set of basic administration tools, with command line interfaces, which
allow users to
-
install, save and restore an object base
-
start and shut down a server process
-
compile textual schemata into the object base
-
edit existing schemata using a menu-driven editor
-
unparse a schema into a textual form
-
backup and restore parts of an object base
-
a graphical browser written in Java
-
a set of auxiliary functions
-
an SQL-like non-navigational query language called P-OQL
-
an algebraic non-navigational query language called
NTT
-
misc. accompanying documentation
-
a set of example applications
The Java API of H-PCTE
The Java API enables applications written in Java to access H-PCTE object
bases. Our new standard browser is based upon this API. The Java API is
available since version 3.0. The Java API comprises the equivalent
to most operations of the C API and the NTT operattions.
Further information:
a (German) paper
about the Java API and specifically about the distributed notification
mechanism
Package
specification of the Java classes
Due to technical reasons, there is a separate server for the Java
API. This server can be extended by user-defined applications. This feature
is particularly useful for complex, time-consuming functions.
Paper about the Java API server and its extension mechanism,
Postscript and
HTML version.
Examples of H-PCTE-based Applications
Many features of H-PCTE can best be understood in the context of applications.
Therefore, we provide a number of introductory and advanced examples of
H-PCTE-based applications. A description can be found in a separate applications
page.
Implementation strategy of H-PCTE
H-PCTE implements all essential features of
the object management system defined in the standards mentioned above.
H-PCTE does not implement the heavy-weight process model defined in the
standard; instead of this, it offers support of light-weight processes,
including notification.
H-PCTE has been implemented as a main-memory database system. In order
to avoid communication delays between the database server and a client
process, segments of the object base can be loaded directly and exclusively
into the address space of an application process (Single-Process Data
Access Architecture; SPDAA). Segments of the object base can also be
loaded into a central H-PCTE server process; in this case, the segments
can be shared by several concurrently executed application processes.
PCTE Standards
The application programming interface (API) of PCTE
has been standardized initially by ECMA and later by ISO
JTC1/SC22/WG22.
First ECMA standards appeared in 1993, 4th (and final) editions in 1997.
The ISO standards appeared between 1995 and 1998 and are more or less identical
to the previous version of the ECMA standard.
One main aim was to make a PCTE installation accessible by application
written in different languages, notably C and Ada. The conceptual,
``abstract'' functionality of the different language-specific APIs
had to be the same, while the technical design of the API had to be adapted
to the pragmatics of the specific binding language. The standards are therefore
organized in several documents:
-
an ``abstract'', i.e. language-independent, specification of the
PCTE operations: this specification defines the services of PCTE at a more
conceptual level and abstracts from specific details of particular binding
languages by using a very high level language.
ECMA Standard: ECMA-149
,
ISO Standard
- C Programming Language Binding
ECMA Standard: ECMA-158
,
ISO Standard
- Ada Programming Language Binding
ECMA Standard: ECMA-162
,
ISO Standard
- IDL Binding
ECMA Standard: ECMA-230
,
ISO Standard
Query languages
The PCTE standards specify only interfaces for navigational access to objects.
In order to support set-oriented, descriptive access to data, two query
languages are available:
-
P-OQL, an adaptation of OQL to PCTE. P-OQL also offers integrated language
constructs which support information retrieval.
-
NTT, an
algebraic language. NTT is mainly used to study queries in partially
accessible databases.
Further details can be found in the following references
about NTT and references
about P-OQL.