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 |