Wiki source code of MetaModel
Last modified by Richard Kreissig on 2023/09/14 10:09
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{info title="Legacy Project"}} | ||
| 2 | KAOM is not maintained anymore and hence not part of any KIELER release. | ||
| 3 | {{/info}} | ||
| 4 | |||
| 5 | == KAOM Metamodel == | ||
| 6 | |||
| 7 | [[image:attach:kaom.png]] | ||
| 8 | |||
| 9 | Sources: [[plugins/de.cau.cs.kieler.kaom/model>>url:http://rtsys.informatik.uni-kiel.de/fisheye/browse/kieler/plugins/de.cau.cs.kieler.kaom/model||shape="rect"]] | ||
| 10 | |||
| 11 | == Explanations == | ||
| 12 | |||
| 13 | * Main components are **Entitiy**, **Port**, **Relation** and **Link** | ||
| 14 | ** they have a name by the NamedObject abstract class | ||
| 15 | ** they can be annotated by arbitrary data through the **Annotatable**abstract class. | ||
| 16 | *** **Annotations** can be subclassed by anybody in order to allow arbitrary piggyback data on entities. This is similar to the //Property// resp. //Attribute// mechanism in Ptolemy II, //Annotations// in SCADE or //EAnnotations// in Ecore (the StringAnnotation is just an Example). | ||
| 17 | *** Common use cases for such attributes are | ||
| 18 | **** store layout information (layout options) | ||
| 19 | **** store semantic detail information (e.g. properties of actors) | ||
| 20 | * Entities can contain other entities to get hierarchy and contain //Port//, //Relation// and //Link// objects. | ||
| 21 | * Connections are established between **Linkables**which are mainly Ports and Relations (close to Ptolemy II) | ||
| 22 | ** **Links** are real objects in the model, corresponding to edges in the graphical representation (different to Ptolemy II) | ||
| 23 | ** **Relations** are used as in Ptolemy II to form //hyperedges// where multiple ports are interconnected. However, here a simple link between two ports does not require a Relation. | ||
| 24 | ** **State** is a special kind of an Entity which is also a //Linkable// and hence can be directly connected without a port. | ||
| 25 | ** **Actor** is not a //Linkable// and hence needs ports to be connected to something. | ||
| 26 | |||
| 27 | == Generic Annotations for EMF Metamodels == | ||
| 28 | |||
| 29 | === annotations.ecore === | ||
| 30 | |||
| 31 | [[image:attach:kaom_annotations.png]] | ||
| 32 | |||
| 33 | Sources: [[plugins/de.cau.cs.kieler.core.annotations/model>>url:http://rtsys.informatik.uni-kiel.de/fisheye/browse/kieler/plugins/de.cau.cs.kieler.core.annotations/model||shape="rect"]] | ||
| 34 | |||
| 35 | * Used to attach arbitrary information to NamedObject elements. | ||
| 36 | * Use it by extending NamedObject within your own metamodel, example below in the kaom model |