Tagged values

Introduction

Tagged values are the standard extension mechanism of UML models. pmMDA uses this feature to extend the model with platform specific and platform independant information.

OMG UML specification of tagged values

A tagged value allows information to be attached to any model element in conformance with its tag definition. Although a tagged value, being an instance of a kind of ModelElement, automatically inherits the name attribute, the name that is actually used in the tagged value is the name of the associated tag definition. It is expected that various model analysis tools will define tag definitions to supply information needed for their operations beyond the basis semantics of UML. Such information could include code generation options, model management information, or user-specified semantics.

pmMDA.NET Tagged values

pmMDA.NET uses the tagged values as key - value pair used to extend the meta data of an UML element.
The available tagged values of an UML element are dependant on the UML element type. A tagged value may specify a range of valid values.

Tagged values have a data type. The list of all used types can be found in the chapter Data types at the.

Tagged values model

The tagged values model shows all tagged values of pmMDA.NET.
The tagged values names are just shortcuts. The real names can be found in the following tables.
tagged values model

Global tagged values

Global tagged values are used from more than one cartridge.

.
Tag Default value Type Targets Description Must be specified
.net-ignore false Boolean package, class, property, indexed property If a meta element is ignored it will not be included to the generated artefacts. The ignore tag is useful for testing purposes. no
.net-collection-type Bag Collection-type indexed property The collection used to handle the indexed property. no
dog-lightweight false Boolean property, indexed property Defines whether a property (simple or indexed) is part of the lightweight representaion.
The class which contains the property has a lightweight object representation, if at least one of the following statements is true.
  • At least one property (simple or indexed) has the .net-lightweight tag set to true.
  • At least one data object, which has a lightweight representation, derives (indirectly) from this class.
  • At least one other lightweight object references this lightweight object as property or as indexed property.
no

Dog cartridge

Tags for data objects Default value Type Targets Description Must be specified
dog-paged false Boolean indexed property Specifies whether the items of indexed properties should be paged. no
dog-paging-amount 0 Integer indexed property Specifies the count of items that are reloaded if a not yet loaded item of an indexed property is requested. Only relevant for indexed properties which have the tagged value "dog-paged" set to true. If "dog-paged" is true.
dog-paging-max- loaded-item-count 0 Integer indexed property Specifies the maximum count of items of indexed properties that are hold in memory. Only relevant for indexed properties which have the tagged value "dog-paged" set to true. If "dog-paged" is true.
dog-change-event false Boolean property Specifies whether an event is generated in the data object class. This event is raised if the value of the property has successfully changed. no
dog-veto-event false Boolean property Specifies whether a veto event is generated. This event is raised before the value of a property changes and gives the possibility to abort the changing to the event subscribers. no
dog-access-mode READ_WRITE PropertyMode property, indexed property Specifies whether the property can be read and/or written. yes
Tags for reference codes Default value Type Targets Description Must be specified
dog-is-hierarchical false Boolean class Specifies whether the reference code is hierarchical. no

Persistence cartridge

Tag Default value Type Targets Description Must be specified
.net-nhibernate- assembly "DefaultAssembly" String package Assembly name which contains the classes and types of the package.
The value of this tagged value is used to generate the NHibernate configuration files. For a successful compilation and execution of the application generated by pmMDA.NET, the data objects must be placed in that specified assembly.
yes
or-schema-name "" String package Name of the database schema. yes
.net-nhibernate- persistence true Boolean property, indexed property Specifies whether a property is persistent. If a property is not persistent it will not be saved to the database.
A class is persistent if at least one (indexed) property is persistent.
no
or-table-name "" String class Specifies the table name of the class in the database. If the table name is not specified (default value), it will be calculated automatically from the class name. no
or-column-name "" String property, indexed property Specifies the column name of the property in the database table. If the column name is not specified (default value), it will be calculated automatically from the property name. no
or-column-type "" String property Specifies the database type used to store the property in the database. If the column type is not specified (default value), it will be calculated automatically from the property type. no
.net-nhibernate- column-hibernate- type Automatic NHibernate-Type primitive property Specifies the nhibernate type used to store the property in the database. If the column type is not specified (default value), it will be calculated automatically from the property type. Only relevant for primitive properties (Datatype: int, long, float. double, boolean, string, ...).
Normaly there is no need to adjust this property. Only if the NHibernate type should be different to the .NET and/or database type, this tagged value must be set.
no
or-column-size "" Integer property Size of the nhibernate type if relevant (i.e. for strings). no
or-can-be-null false Boolean property Specifies whether the property can have null values. If the property is part of the primary key, it cannot be null. In that case this flag must be false. no
.net-nhibernate- inheritance-strategy table per subclass Inheritance- Strategy class Specifies the inheritance strategy used by NHibernate. This tagged value is only relevant for base classes. A class which derives from an other pmMDA class derives this tagged value from its base class. no

Data types

Data type Possible values Description
String Some text A string represents some text.
Boolean true, false May also represent yes or no, etc.
PropertyMode READ, WRITE, READ_WRITE Defines the access mode of properties.
Inheritance-Strategy Table per subclass, Table per concrete class, Table per class hierarchy See here for a description of these strategies.
NHibernate-Type Automatic, String, Boolean, Byte, Char, Int16, Int32, Int64, Single, Double, Decimal, GUID, DateTime, Timestamp, CultureInfo, Type , Binary
The Automatic value is displayed as empty string ("").
Automatic means that the type is calculated. The property type is mapped to the corresponding NHIbernate-Type value. If no corresponding value is found, the qualified .NET type of the property is used, which is also supported by NHibernate.
Collection-type
Value Description
Bag unordered, indexed, allows duplicates
List ordered, indexed, allows duplicates
Set unordered, unindexed, doesn't allows duplicates

Defines the collection used to save the indexed property.

ordered / unordered
An ordered collection keeps the sequence of items even if its container is saved and reloaded. The items in an unordered collection may have a different sequence after saving and reloading the container.

indexed / unindexed
The items of an indexed collection can be accessed through their indexes. The items of an unindexed collection can only be iterated.