Package-level declarations
Types
The Annotation model element is attached to every Node. An Annotation stores the identifiers in space (variant) and time (version) of each element.
The AssociationInstance represents the concretization of an AssociationRelation.
The AssociationRelation models a directed association edge from one Node to another Node. The association is always owned by the starting Node.
The AttributeInstance represents a concretization of an Attribute.
A Composition is a stronger specialization of an AssociationRelation, i.e., it is a part-of relationship. To realize this binding strength, Compositions follow particular principles:
The Concretization binds an AttributeInstance to an Attribute. Hereby, the Concretization class adds as a proxy to hold the AttributeInstance in the Model facet (because AttributeInstances would normally live in the Instance facet). From an Instance view, the AttributeInstance contains an immutable value that predefines an Attribute.
The Fragment is the central class (aka root element) of the modicio metamodel. A Fragment is identified by its own variability identifiers variantTime and variantID (and optional variantName). A Fragment can be open or closed. Open refers to an open-world assumption regarding further model elements, i.e., if a Fragment is open, it represents a knowingly or unknowingly incomplete model.
The Header contains the information which IObjects of an Instance are accessible from the outside, i.e., which objects can be targeted by AssociationRelations. A Header only exists in Fragments carrying an Instance. The individual objects are defined as HeaderElements. The Composition defines if an object is publicly visible or not (non-composition objects are always public). As soon as a IObject is created that is public according to its type, it is added as a HeaderElement
A HeaderElement describes a publicly visible entry point for AssociationInstances defined by AssociationRelations. A HeaderElement captures a single IObject and its type Node.
The Interface contains the compatability information of a AssociationRelation target in the variability time-space. An Interface can contain multiple types of intervals and points describing subsets of time-space. An AssociationRelation regarding a certain target type is fulfilled if the target fulfils at least one of the subsets defined by this class.
The IObject represents an instantiated Node. For each Node there must be exactly one Object per Fragment. The Object holds all instance information: AttributeInstances, AssociationInstances and CompositionInstances. ParentRelations are not part of the IObject because they are purely represented by the Node and can be accessed via the Node reference.
The LeftOpen class represents an open interval in time over a range of version. The interval targets one particular variant that is inferred by the usage context of the interval.
The Model is the part of a Fragment representing type information. The Model is an object-oriented class structure. Classes are denoted as Nodes. Nodes can be connected through associations and inheritance. These relations are directed edges and are owned by the starting node. A Node can compose other Nodes (part-of relationship).
The Node is the top-level model element of the modicio metamodel. It represents a class in an object-oriented sense but can also represent a Node in a typed graph. The Node as first-level element contains all further model elements such as relations to other Nodes which are always unidirectional edges.
The ParentRelation models inheritance between two Nodes. This relation is a unidirectional edge and is owned by the child Node, i.e., the specialization.
A Plugin is a generic Model extension part of a Node. A Plugin consists of a description, content and resolver reference. The content can basically contain any string value providing information, presets, image references etc. Plugins can be executable by the modicio engine directly, if an internal resolver is used. However, the client can use custom resolvers and store required information in the Plugin. The resolver will receive the Instance to do any computation based on the Plugin. Note that for scripts / code-based plugins, there is a separate Script model element directly supported by the modicio engine.
The Point class represents a closed interval in space-time over a single variant (point in space) or a single point in space-time by adding a single version (that is optional). The interval targets one particular variant that is inferred by the usage context of the interval.
The Region class represents a closed interval in time over a range of version. The interval targets one particular variant that is inferred by the usage context of the interval.
The RightOpen class represents an open interval in time over a range of version. The interval targets one particular variant that is inferred by the usage context of the interval.
A script is a special kind of Plugin to hold executable code. This code is directly executed by the modicio engine and can be specified by the modeller.
The Trace is an optional part of a Fragment that contains change operations (deltas) that were performed to the Fragment in the past. The usage of the Trace is implementation specific and may be refined in future work. In general, the Trace targets the Model, but could target Instance changes as well. The coarse idea is the following: Each evolution step by the client (e.g. that increments the running version) produces a sequence of Deltas which are added to the Trace. This allows going back in time (reverse operations) and helps to (re-)construct model transformations between different variants and versions. If a new Fragment is created from an existing one, the Trace of the new Fragment is emptied.