Yellicode
The extensible code generator
- Getting started
- Tutorial - Model driven basics
- Tutorial - Full stack Angular application
- Fundamentals
- How-to
- Modeler
- Reference
Model API reference
Overview
This reference describes the Yellicode meta model. This model is implemented by the @yellicode/elements NPM package, which is the API that you use to navigate Yellicode models (created by Yellicode Modeler) from a code generation template. The meta model is a subset of UML 2.5 and extends it with elements that we consider relevant.
TL;DR
The meta model might seem complex because there are many abstractions. However, the following summary is often enough to get started using it:
- A model has packaged elements (such as Classes, Enumerations and Packages).
- Some packaged elements may contain members (such as Attributes, Operations and Enumeration Literals).
- Models and packages can be extended using Profiles.
- A Profile can define stereotypes (and some other elements such as primitive types and enumerations).
- A Stereotype enables you to extend model elements with platform or domain specific attributes (which are called Tagged Values).
Interfaces
| Association | Associations represent relationships between classes. |
| BehavioralFeature | A BehavioralFeature is a feature of a Classifier that specifies an aspect of the behavior of its instances. A BehavioralFeature is implemented (realized) by a Behavior. A BehavioralFeature specifies that a Classifier will respond to a designated request by invoking its implementing method. |
| BehavioredClassifier | A BehavioredClassifier may have InterfaceRealizations, and owns a set of Behaviors one of which may specify the behavior of the BehavioredClassifier itself. |
| Class | A Class classifies a set of objects and specifies the features that characterize the structure and behavior of those objects. A Class may have an internal structure and Ports. |
| Classifier | A Classifier represents a classification of instances according to their Features. |
| Comment | A Comment is a textual annotation that can be attached to a set of Elements. |
| DataType | A DataType is similar to a Class; however, instances of data type are identified only by their value. If two data types have the same value, the instances are considered identical. |
| DirectedRelationship | A DirectedRelationship represents a relationship between a collection of source model Elements and a collection of target model Elements. |
| Element | An Element is a constituent of a model. As such, it has the capability of owning other Elements. |
| Enumeration | An Enumeration is a DataType whose values are enumerated in the model as EnumerationLiterals. |
| EnumerationLiteral | An EnumerationLiteral is a user-defined data value for an Enumeration. |
| Feature | A Feature declares a behavioral or structural characteristic of Classifiers. |
| Generalization | A Generalization is a taxonomic relationship between a more general Classifier and a more specific Classifier. Each instance of the specific Classifier is also an instance of the general Classifier.The specific Classifier inherits the features of the more general Classifier. A Generalization is owned by the specific Classifier. |
| Interface | Interfaces declare coherent services that are implemented by BehavioredClassifiers that implement the Interfaces via InterfaceRealizations. |
| InterfaceRealization | An InterfaceRealization is a specialized realization relationship between a BehavioredClassifier and an Interface. This relationship signifies that the realizing BehavioredClassifier conforms to the contract specified by the Interface. |
| LiteralBoolean | A LiteralBoolean is a specification of a Boolean value. |
| LiteralInteger | A LiteralInteger is a specification of an Integer value. |
| LiteralNull | A LiteralNull specifies the lack of a value. |
| LiteralReal | A LiteralReal is a specification of a Real value. |
| LiteralSpecification | A LiteralSpecification identifies a literal constant being modeled. |
| LiteralString | A LiteralString is a specification of a String value. |
| LiteralUnlimitedNatural | A LiteralUnlimitedNatural is a specification of an UnlimitedNatural number. |
| MemberedClassifier | Defines a common interface for Classifiers (Class, DataType and Interface) that have attributes and operations. |
| Model | Represents the top-level package. |
| MultiplicityElement | A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A MultiplicityElement embeds this information to specify the allowable cardinalities for an instantiation of the Element. |
| NamedElement | A NamedElement is an Element in a model that may have a name. The name may be given directly and/or via the use of a StringExpression. |
| Operation | An Operation is a BehavioralFeature of a Classifier that specifies the name, type, parameters, and constraints for invoking an associated Behavior. An Operation may invoke both the execution of method behaviors as well as other behavioral responses. |
| OrderedElement | Defines a common interface for named elements that are part of an ordered collection. |
| Package | A package is used to group elements, and provides a namespace for the grouped elements. A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles. |
| PackageableElement | A PackageableElement is a NamedElement that may be owned directly by a Package. |
| Parameter | A Parameter is a specification of an argument used to pass information into or out of an invocation of a BehavioralFeature. Parameters can be treated as ConnectableElements within Collaborations. |
| PrimitiveType | A PrimitiveType defines a predefined DataType, without any substructure. A PrimitiveType may have an algebra and operations defined outside of UML, for example, mathematically. |
| Profile | Metamodel customizations are defined in a profile, which is then applied to a package. A profile can define classes, stereotypes, data types, primitive types, enumerations. Stereotypes are specific metaclasses, tagged values are standard metaattributes, and profiles are specific kinds of packages. |
| Property | A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the Classifier to a value or set of values of the type of the attribute. A Property related by memberEnd to an Association represents an end of the Association. The type of the Property is the type of the end of the Association. |
| RedefinableElement | A RedefinableElement is an element that, when defined in the context of a Classifier, can be redefined more specifically or differently in the context of another Classifier that specializes (directly or indirectly) the context Classifier. |
| Relationship | Relationship is an abstract concept that specifies some kind of relationship between Elements. |
| Stereotype | Stereotype is a profile class which defines how an existing metaclass may be extended as part of a profile. It enables the use of a platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass. |
| StereotypeExtension | Each stereotype may extend one or more metaclasses through a StereoTypeExtension. |
| StructuralFeature | A StructuralFeature is a typed feature of a Classifier that specifies the structure of instances of the Classifier. |
| StructuredClassifier | StructuredClassifiers may contain an internal structure of connected elements each of which plays a role in the overall Behavior modeled by the StructuredClassifier. |
| TaggedValueSpecification | Specifies the value of a meta attribute (tagged value) for a particular element. |
| Type | A Type constrains the values represented by a TypedElement. |
| TypedElement | A TypedElement is a NamedElement that may have a Type specified for it. |
| ValueSpecification | A ValueSpecification is the specification of a (possibly empty) set of values. |
Enumerations
| AggregationKind | AggregationKind is an Enumeration for specifying the kind of aggregation of a Property. |
| ParameterDirectionKind | ParameterDirectionKind is an Enumeration that defines literals used to specify direction of parameters. |
| VisibilityKind | VisibilityKind is an enumeration type that defines literals to determine the visibility of Elements in a model. |