A run-time model is used by the run-time system of the XL programming language. It describes the properties of relational data sources at run-time, i.e., it provides methods for obtaining information and performing operations on relational data sources.
A run-time model is represented by an instance of the interface
de.grogra.xl.runtime.Model
, together with
instances of de.grogra.xl.runtime.Extent
and de.grogra.xl.runtime.Property
which
are returned by methods of Model
.
While a Model
provides methods for obtaining
information and performing operations which are common to a set of
relational data sources with an equal structure, an
Extent
provides methods which operate
on a single instance of these data sources. E.g., a
Model
could represent
features of XML documents in general, while an
Extent
of this model represents a single
XML document. Property
instances represent
properties at run-time.
The exact meaning of these classes and interfaces will be described in the
sequel in the context of their usage.
The instance of Model
that is responsible
for a specific part of a programme is determined as follows:
At compile-time, a compile-time model
is associated with that specific part. The invocation of the method
getRuntimeName
on this compile-time model
returns a name, this name m
is used
at run-time in order to obtain the corresponding instance of
de.grogra.xl.runtime.Model
: If
c
is the class-loader of the
class containing the specific part, then the run-time model is
obtained by the invocation
ModelFactory.getInstance().modelForName(
m, c
)
.
The current Extent
for a run-time model
r
is obtained by the invocation
r
.getCurrentExtent()
.
If the current extent is to be determined and this method
returns null
, a
NoCurrentExtentException
is thrown.
The current QueueCollection
of an extent
e
is obtained by the invocation
e
.getQueues(
x
)
, where x
is the current extended state (Chapter 4, Extended State of the Virtual Machine).
If the current queue collection is to be determined and this method
returns null
, a
NoActiveTransformationException
is thrown.
The current queue collection of a run-time model is determined by
first determining the current extent of the run-time model and then
determining its current queue-collection.