Altova UModel 2024 Basic Edition

Jede etwas komplexere SPL-Datei enthält Variablen. Einige Variablen sind vom Code Generator vordefiniert. Sie können jederzeit neue Variablen erstellen, indem Sie diesen Werte zuweisen.

 

Das $-Zeichen wird zur Deklarierung oder Verwendung einer Variablen verwendet. Vor der Variable muss immer ein $ stehen. Bei Variablennamen muss die Groß- und Kleinschreibung beachtet werden.

 

Variablentypen:

Integer - wird auch als Boolescher Wert verwendet, wobei 0 false ist und alle anderen Werte true.

String

Objekt - wird von UModel bereitgestellt

Iterator (siehe foreach-Anweisung)

 

Variablentypen werden durch die erste Zuweisung deklariert.

 

[$x = 0]

 

x ist nun ein Integer.

 

[$x = "teststring"]

 

x wird nun als String behandelt.

 

Strings

String-Konstanten müssen wie im oben gezeigten Beispiel immer innerhalb von doppelten Anführungszeichen stehen. \ und \t innerhalb von doppelten Anführungszeichen werden als neue Zeile und Tabulator interpretiert, \" ist ein literales doppeltes Anführungszeichen und \\ ist ein umgekehrter Schrägstrich. String-Konstanten können auch mehrere Zeilen einnehmen.

 

Bei der Verkettung von Strings wird das & Zeichen verwendet.

 

[$BasePath = $outputpath & "/" & $JavaPackageDir]

 

Objekte

Objekte stehen für die Informationen, die im UModel-Projekt enthalten sind. Objekte haben Eigenschaften, die über den . Operator aufgerufen werden können. In SPL können keine neuen Objekte erstellt werden (sie werden durch den Code Generator vordefiniert, aus der Input-Komponente abgeleitet).  Sie können Objekte jedoch Variablen zuweisen.

 

Beispiel:

 

class [=$class.Name]

 

In diesem Beispiel wird das Wort "class" ausgegeben, gefolgt von einem Leerzeichen und dem Wert der Eigenschaft Name des Objekts $class.

 

In der folgenden Tabelle sehen Sie die Beziehung zwischen UML-Elementen und ihren SPL-Entsprechungen sowie eine kurze Beschreibung dazu.

 

Vordefinierte Variablen

UML-Element

SPL-Eigenschaft

Multiplizität

UML-Attribut /
Assoziation

UModel-Attribut /

Assoziation

Beschreibung

BehavioralFeature

isAbstract


isAbstract:Boolean



BehavioralFeature

raisedException

*

raisedException:Type



BehavioralFeature

ownedParameter

*

ownedParameter:Parameter



BehavioredClassifier

interfaceRealization

*

interfaceRealization:InterfaceRealization



Class

ownedOperation

*

ownedOperation:Operation



Class

nestedClassifier

*

nestedClassifier:Classifier



Classifier

namespace

*


namespace:Package

packages with code language <<namespace>> set

Classifier

rootNamespace

*


project root namespace:String

VB only - root namespace

Classifier

generalization

*

generalization:Generalization



Classifier

isAbstract


isAbstract:Boolean



ClassifierTemplateParameter

constrainingClassifier

*

constrainingClassifier



Comment

body


body:String



DataType

ownedAttribute

*

ownedAttribute:Property



DataType

ownedOperation

*

ownedOperation:Operation



Element

kind



kind:String


Element

owner

0..1

owner:Element



Element

appliedStereotype

*


appliedStereotype:StereotypeApplication

applied stereotypes

Element

ownedComment

*

ownedComment:Comment



ElementImport

importedElement

1

importedElement:PackageableElement



Enumeration

ownedLiteral

*

ownedLiteral:EnumerationLiteral



Enumeration

nestedClassifier

*


nestedClassifier::Classifier


Enumeration

interfaceRealization

*


interfaceRealization:Interface


EnumerationLiteral

ownedAttribute

*


ownedAttribute:Property


EnumerationLiteral

ownedOperation

*


ownedOperation:Operation


EnumerationLiteral

nestedClassifier

*


nestedClassifier:Classifier


Feature

isStatic


isStatic:Boolean



Generalization

general

1

general:Classifier



Interface

ownedAttribute

*

ownedAttribute:Property



Interface

ownedOperation

*

ownedOperation:Operation



Interface

nestedClassifier

*

nestedClassifier:Classifier



InterfaceRealization

contract

1

contract:Interface



MultiplicityElement

lowerValue

0..1

lowerValue:ValueSpecification



MultiplicityElement

upperValue

0..1

upperValue:ValueSpecification



NamedElement

name


name:String



NamedElement

visibility


visibility:VisibilityKind



NamedElement

isPublic



isPublic:Boolean

visibility <public>

NamedElement

isProtected



isProtected:Boolean

visibility <protected>

NamedElement

isPrivate



isPrivate:Boolean

visibility <private>

NamedElement

isPackage



isPackage:Boolean

visibility <package>

NamedElement

namespacePrefix



namespacePrefix:String

XSD only - namespace prefix when exists

NamedElement

parseableName



parseableName:String

CSharp, VB only - name with escaped keywords (@)

Namespace

elementImport

*

elementImport:ElementImport



Operation

ownedReturnParameter

0..1


ownedReturnParameter:Parameter

parameter with direction return set

Operation

type

0..1


type

type of parameter with direction return set

Operation

ownedOperationParameter

*


ownedOperationParameter:Parameter

all parameters excluding parameter with direction return set

Operation

implementedInterface

1


implementedInterface:Interface

CSharp only - the implemented interface

Operation

ownedOperationImplementations

*


implementedOperation:OperationImplementation

VB only - the implemented interfaces/operations

OperationImplementation

implementedOperationOwner

1


implementedOperationOwner:Interface

interface implemented by the operation

OperationImplementation

implementedOperationName



name:String

name of the implemented operation

OperationImplementation

implementedOperationParseableName



parseableName:String

name of the implemented operation with escaped keywords

Package

namespace

*


namespace:Package

packages with code language <<namespace>> set

PackageableElement

owningPackage

0..1


owningPackage

set if owner is a package

PackageableElement

owningNamespacePackage

0..1


owningNamespacePackage:Package

owning package with code language <<namespace>> set

Parameter

direction


direction:ParameterDirectionKind



Parameter

isIn



isIn:Boolean

direction <in>

Parameter

isInOut



isInOut:Boolean

direction <inout>

Parameter

isOut



isOut:Boolean

direction <out>

Parameter

isReturn



isReturn:Boolean

direction <return>

Parameter

isVarArgList



isVarArgList:Boolean

true if parameter is a variable argument list

Parameter

defaultValue

0..1

defaultValue:ValueSpecification



Property

defaultValue

0..1

defaultValue:ValueSpecification



RedefinableElement

isLeaf


isLeaf:Boolean



Slot

name



name:String

name of the defining feature

Slot

values

*

value:ValueSpecification



Slot

value



value:String

value of the first value specification

StereotypeApplication

name



name:String

name of applied stereotype

StereotypeApplication

taggedValue

*


taggedValue:Slot

first slot of the instance specification

StructuralFeature

isReadOnly


isReadOnly



StructuredClassifier

ownedAttribute

*

ownedAttribute:Property



TemplateBinding

signature

1

signature:TemplateSignature



TemplateBinding

parameterSubstitution

*

parameterSubstitution:TemplateParameterSubstitution



TemplateParameter

paramDefault



paramDefault:String

template parameter default value

TemplateParameter

ownedParameteredElement

1

ownedParameteredElement:ParameterableElement



TemplateParameterSubstitution

parameterSubstitution



parameterSubstitution:String

Java only - code wildcard handling

TemplateParameterSubstitution

parameterDimensionCount



parameterDimensionCount:Integer

code dimension count of the actual parameter

TemplateParameterSubstitution

actual

1

OwnedActual:ParameterableElement



TemplateParameterSubstitution

formal

1

formal:TemplateParameter



TemplateSignature

template

1

template:TemplateableElement



TemplateSignature

ownedParameter

*

ownedParameter:TemplateParameter



TemplateableElement

isTemplate



isTemplate:Boolean

true if template signature set

TemplateableElement

ownedTemplateSignature

0..1

ownedTemplateSignature:TemplateSignature



TemplateableElement

templateBinding

*

templateBinding:TemplateBinding



Type

typeName

*


typeName:PackageableElement

qualified code type names

TypedElement

type

0..1

type:Type



TypedElement

postTypeModifier



postTypeModifier:String

postfix code modifiers

ValueSpecification

value



value:String

string value of the value specification

 

Hinzufügen eines Präfixes zu Attributen einer Klasse bei der Codegenerierung

Eventuell müssen Sie allen neuen Attributen in Ihrem Projekt die Zeichen "m_" voranstellen.

 

Alle neuen Kodierungselemente werden unter Verwendung der SPL-Vorlagen geschrieben:

Wenn Sie einen Blick in UModelSPL\C#[Java]\Default\Attribute.spl werfen, können Sie die Schreibweise des Namens ändern, z.B. können Sie

 

write $Property.name

 

durch

 

write "m_" & $Property.name

 

ersetzen.

 

Es wird unbedingt empfohlen, Ihr Modell sofort nach der Codegenerierung anhand des Codes aktualisieren, um sicherzustellen, dass Code und Modell synchron sind.

 

Bitte beachten Sie:

Kopieren Sie, wie bereits erwähnt, die SPL-Vorlagen ein Verzeichnis höher hinein (d.h. oberhalb des Standardverzeichnisses für UModelSPL\C#) bevor Sie sie ändern. Damit stellen Sie sicher, dass sie bei Installation einer neuen Version von UModel nicht überschrieben werden. Stellen Sie bitte sicher, dass Sie im Dialogfeld "Synchronisierungseinstellungen" auf dem Register Code von Modell das Kontrollkästchen  "Benutzerdefinierte setzt Standardvorlage außer Kraft" aktiviert haben.

 

SPL-Vorlagen

SPL-Vorlagen können über die Menüoption Projekt | Projekteinstellungen (siehe Abbildung unten) pro UModel-Projekt definiert werden. Auch relative Pfade werden unterstützt. Vorlagen, die im angegebenen Verzeichnis nicht gefunden werden, werden im lokalen Standard-Verzeichnis gesucht.

 

splTemplateRelative

 

 

Globale Objekte

$Options

ein Objekt, das globale Optionen enthält:


generateComments:bool doc-Kommentare generieren (true/false)



$Indent

ein String zum Einrücken von generiertem Code und zur Anzeige der aktuellen Verschachtelungsebene.

$IndentStep

ein String zum Einrücken von generiertem Code und zur Darstellung einer Verschachtelungsebene.

$NamespacePrefix

nur XSD – das Target Namespace Präfix, falls vorhanden

 

Routinen zur Behandlung von Strings

 

integer Compare(s)

Der Rückgabewert gibt die lexikographische Beziehung des String zu s an (unter Berücksichtigung der Groß- und Kleinschreibung):

 

<0:

der String ist kleiner als s

0:

der String ist identisch mit s

>0:

der String ist größer als s

 

integer CompareNoCase(s)

Der Rückgabewert gibt die lexikographische Beziehung des String zu s an (ohne Berücksichtigung der Groß- und Kleinschreibung):

 

<0:

der String ist kleiner als s

0:

der String ist identisch mit s

>0:

der String ist größer als s

 

 

integer Find(s)

Durchsucht den String nach der ersten Instanz eines Substring s.

Gibt den nullbasierten Index des ersten Zeichens von s oder -1 zurück, wenn s nicht gefunden wird.

 

string Left(n)

Gibt die ersten n Zeichen des String zurück.

 

integer Length()

Gibt die Länge des String zurück.

 

string MakeUpper()

Gibt einen String zurück, der in Großbuchstaben konvertiert wurde.

 

string MakeUpper(n)

Gibt einen String zurück, dessen erste n Zeichen in Großbuchstaben konvertiert wurden.

 

string MakeLower()

Gibt einen String zurück, der in Kleinbuchstaben konvertiert wurde.

 

string MakeLower(n))

Gibt einen String zurück, dessen erste n Zeichen in Kleinbuchstaben konvertiert wurden.

 

string Mid(n)

Gibt einen String zurück, der mit der nullbasierten Indexposition n beginnt

 

string Mid(n,m)

Gibt einen String zurück, der mit der nullbasierten Indexposition n beginnt und die Länge m hat

 

string RemoveLeft(s)

Gibt einen String zurück, der den Substring s ausnimmt, wenn Left( s.Length() ) dem Substring s entspricht.

 

string RemoveLeftNoCase(s)

Gibt einen String zurück, der den Substring s ausnimmt, wenn Left( s.Length() ) dem Substring s entspricht (Groß- und Kleinschreibung wird ignoriert).

 

string RemoveRight(s)

Gibt einen String zurück, der den Substring s ausnimmt, wenn Right( s.Length() dem Substring s entspricht.

 

string RemoveRightNoCase(s)

Gibt einen String zurück, der den Substring s ausnimmt, wenn Right( s.Length() dem Substring s entspricht (Groß- und Kleinschreibung wird ignoriert).

 

string Repeat(s,n)

Gibt einen String zurück, der den Substring s n mal enthält.

 

string Right(n)

Gibt die letzten n Zeichen des String zurück.

© 2018-2024 Altova GmbH