Altova UModel 2024

Los archivos SPL importantes exigen el uso de variables. Algunas variables vienen predefinidas por el generador de código y también se pueden crear variables nuevas con solo asignarles valores.

 

El carácter \$ se usa cuando se declara o usa una variable y un nombre de variable siempre tiene el prefijo \$.

Los nombres de variable distinguen entre mayúsculas y minúsculas.

 

Tipos de variables:

 

entero, que también se usa como binario, siendo 0 equivalente a false y cualquier otro valor equivale a true

cadena de texto

objeto, que viene dado por UModel

iterador, ver instrucción foreach

 

 

El tipo de variable se declara en la primera asignación de valor:

 

[\$x = 0]

 

ahora x es un entero.

 

[\$x = "teststring"]

 

ahora x es una cadena de texto.

 

Cadenas

Las constantes de cadena siempre aparecen entre comillas dobles, como en el ejemplo anterior. \ y \t dentro de comillas dobles equivalen a una línea nueva y a una tabulación, respectivamente. \" es una comilla doble literal y \\ es una barra diagonal inversa. Las constantes de cadena también pueden ocupar más de una línea.

 

Para la concatenación de cadenas se usa el carácter &:

 

 

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

 

Objetos

Los objetos representan la información que contiene el proyecto de UModel. Los objetos tienen propiedades, a las que puede acceder con el operador . . En SPL no puede crear objetos nuevos (vienen predefinidos por el generador de código y se derivan del código de entrada, pero se pueden asignar objetos a variables.

 

Ejemplo:

 

 

class [=\$class.Name]

 

Este ejemplo reproduce la palabra "class" seguida de un espacio y el valor de la propiedad Name del objeto \$class.

 

La tabla que aparece a continuación muestra la correspondencia entre elementos UML y propiedades SPL.

 

Variables predefinidas

 

Elemento UML

Propiedad SPL

Multi-

plicidad

UML Attribute /

Association

UModel Attribute /

Association

Descripción

CaracterísticaDeComportamiento

isAbstract

 

isAbstract:Boolean

 

 

CaracterísticaDeComportamiento

raisedException

*

raisedException:Type

 

 

CaracterísticaDeComportamiento

ownedParameter

*

ownedParameter:Parameter

 

 

ClasificadorConComportamiento

interfaceRealization

*

interfaceRealization:InterfaceRealization

 

 


isAbstract


isAbstract:Boolean




raisedException

*

raisedException:Type




ownedParameter

*

ownedParameter:Parameter




interfaceRealization

*

interfaceRealization:InterfaceRealization



Clase

ownedOperation

*

ownedOperation:Operation



Clase

nestedClassifier

*

nestedClassifier:Classifier



Clasificador

namespace

*


namespace:Package

packages with code language <<namespace>> set

Clasificador

rootNamespace

*


project root namespace:String

VB only - root namespace

Clasificador

generalization

*

generalization:Generalization



Clasificador

isAbstract


isAbstract:Boolean



ParámetroDePlantillaDeClasificador

constrainingClassifier

*

constrainingClassifier



Comentario

body


body:String



Tipo de datos

ownedAttribute

*

ownedAttribute:Property



Tipo de datos

ownedOperation

*

ownedOperation:Operation



Elemento

kind



kind:String


Elemento

owner

0..1

owner:Element



Elemento

appliedStereotype

*


appliedStereotype:StereotypeApplication

applied stereotypes

Elemento

ownedComment

*

ownedComment:Comment



ImportaciónDeElemento

importedElement

1

importedElement:PackageableElement



Enumeración

ownedLiteral

*

ownedLiteral:EnumerationLiteral



Enumeración

nestedClassifier

*


nestedClassifier::Classifier


Enumeración

interfaceRealization

*


interfaceRealization:Interface


LiteralDeEnumeración

ownedAttribute

*


ownedAttribute:Property


LiteralDeEnumeración

ownedOperation

*


ownedOperation:Operation


LiteralDeEnumeración

nestedClassifier

*


nestedClassifier:Classifier


Característica

isStatic


isStatic:Boolean



Generalización

general

1

general:Classifier



Interfaz

ownedAttribute

*

ownedAttribute:Property



Interfaz

ownedOperation

*

ownedOperation:Operation



Interfaz

nestedClassifier

*

nestedClassifier:Classifier



RealizaciónDeInterfaz

contract

1

contract:Interface



ElementoMultiplicidad

lowerValue

0..1

lowerValue:ValueSpecification



ElementoMultiplicidad

upperValue

0..1

upperValue:ValueSpecification



ElementoConNombre

name


name:String



ElementoConNombre

visibility


visibility:VisibilityKind



ElementoConNombre

isPublic



isPublic:Boolean

visibility <public>

ElementoConNombre

isProtected



isProtected:Boolean

visibility <protected>

ElementoConNombre

isPrivate



isPrivate:Boolean

visibility <private>

ElementoConNombre

isPackage



isPackage:Boolean

visibility <package>

ElementoConNombre

namespacePrefix



namespacePrefix:String

XSD only - namespace prefix when exists

ElementoConNombre

parseableName



parseableName:String

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

EspacioDeNombres

elementImport

*

elementImport:ElementImport



Operación

ownedReturnParameter

0..1


ownedReturnParameter:Parameter

parameter with direction return set

Operación

type

0..1


type

type of parameter with direction return set

Operación

ownedOperationParameter

*


ownedOperationParameter:Parameter

all parameters excluding parameter with direction return set

Operación

implementedInterface

1


implementedInterface:Interface

CSharp only - the implemented interface

Operación

ownedOperationImplementations

*


implementedOperation:OperationImplementation

VB only - the implemented interfaces/operations

ImplementaciónDeOperación

implementedOperationOwner

1


implementedOperationOwner:Interface

interface implemented by the operation

ImplementaciónDeOperación

implementedOperationName



name:String

name of the implemented operation

ImplementaciónDeOperación

implementedOperationParseableName



parseableName:String

name of the implemented operation with escaped keywords

Paquete

namespace

*


namespace:Package

packages with code language <<namespace>> set

ElementoEmpaquetable

owningPackage

0..1


owningPackage

set if owner is a package

ElementoEmpaquetable

owningNamespacePackage

0..1


owningNamespacePackage:Package

owning package with code language <<namespace>> set

Parámetro

direction


direction:ParameterDirectionKind



Parámetro

isIn



isIn:Boolean

direction <in>

Parámetro

isInOut



isInOut:Boolean

direction <inout>

Parámetro

isOut



isOut:Boolean

direction <out>

Parámetro

isReturn



isReturn:Boolean

direction <return>

Parámetro

isVarArgList



isVarArgList:Boolean

true if parameter is a variable argument list

Parámetro

defaultValue

0..1

defaultValue:ValueSpecification



Propiedad

defaultValue

0..1

defaultValue:ValueSpecification



ElementoRedefinible

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

AplicaciónEstereotipo

name



name:String

name of applied stereotype

AplicaciónEstereotipo

taggedValue

*


taggedValue:Slot

first slot of the instance specification

CaracterísticaEstructural

isReadOnly


isReadOnly



Clasificador estructurado

ownedAttribute

*

ownedAttribute:Property



EnlaceDePlantilla

signature

1

signature:TemplateSignature



EnlaceDePlantilla

parameterSubstitution

*

parameterSubstitution:TemplateParameterSubstitution



ParámetroDePlantilla

paramDefault



paramDefault:String

template parameter default value

ParámetroDePlantilla

ownedParameteredElement

1

ownedParameteredElement:ParameterableElement



SustituciónDeParámetroDePlantilla

parameterSubstitution



parameterSubstitution:String

Java only - code wildcard handling

SustituciónDeParámetroDePlantilla

parameterDimensionCount



parameterDimensionCount:Integer

code dimension count of the actual parameter

SustituciónDeParámetroDePlantilla

actual

1

OwnedActual:ParameterableElement



SustituciónDeParámetroDePlantilla

formal

1

formal:TemplateParameter



FirmaDePlantilla

template

1

template:TemplateableElement



FirmaDePlantilla

ownedParameter

*

ownedParameter:TemplateParameter



ElementoQueSePuedeConvertirEnPlantillas

isTemplate



isTemplate:Boolean

true if template signature set

ElementoQueSePuedeConvertirEnPlantillas

ownedTemplateSignature

0..1

ownedTemplateSignature:TemplateSignature



ElementoQueSePuedeConvertirEnPlantillas

templateBinding

*

templateBinding:TemplateBinding



Tipo

typeName

*


typeName:PackageableElement

qualified code type names

ElementoConTipo

type

0..1

type:Type



ElementoConTipo

postTypeModifier



postTypeModifier:String

postfix code modifiers

EspecificaciónDeValor

value



value:String

string value of the value specification

 

Agregar un prefijo a los atributos de una clase durante la generación de código

Quizás sea necesario añadir el prefijo "m_" a todos los atributos nuevos del proyecto.

 

Todos los elementos de código nuevos se escriben usando las plantillas SPL. En el archivo Attribute.spl de la carpeta UModelSPL\C#[Java]\Default puede cambiar cómo se escriben los nombres con una simple operación de búsqueda y reemplazo.

 

Por ejemplo, busque \$Property.name y reemplácela con "m_" & \$Property.name

 

Además, recomendamos actualizar inmediatamente el modelo con el código tras la generación de código. Esto garantiza que el código y el modelo estén sincronizados.

 

Nota:antes de modificarlas, recuerde copiar las plantillas SPL en un directorio de nivel superior (es decir, justo encima del directorio predeterminado UModelSPL\C#). Esto evita que las plantillas se sobrescriban cuando se instale una versión nueva de UModel. Compruebe que está marcada la casilla Las definidas por el usuario reemplazan las predeterminadas de la pestaña Sincronizar el código con el modelo del cuadro de diálogo "Configurar sincronización".

 

Plantillas SPL

Por cada proyecto de UModel se pueden especificar plantillas SPL distintas, haciendo clic en la opción de menú Proyecto | Configuración del proyecto (tal y como muestra el cuadro de diálogo). También puede usar rutas de acceso relativas. Las plantillas que no se encuentren en el directorio indicado se buscan en el directorio predeterminado local.

 

splTemplateRelative

 

Objetos globales

\$Options

un objeto que almacena opciones globales:


generateComments:bool  genera comentarios en la documentación (true/false)

\$Indent

una cadena utilizada para aplicar sangría al código generado y que representa el nivel de anidamiento actual

\$IndentStep

una cadena utilizada para aplicar sangría al código generado y que representa un nivel de anidamiento

\$NamespacePrefix

solo en XSD, el prefijo de espacio de nombres de destino, si existe

 

Rutinas de manipulación de cadenas

 

integer Compare(s)

 

El valor devuelto indica la relación lexicográfica entre la cadena y s (distingue entre mayús/minús):

 

<0:

la cadena es menor que s

0:

la cadena es idéntica a s

>0:

la cadena es mayor que s

 

integer CompareNoCase(s)

 

El valor devuelto indica la relación lexicográfica entre la cadena y s (no distingue entre mayús/minús):

 

 

<0:

la cadena es menor que s

0:

la cadena es idéntica a s

>0:

la cadena es mayor que s

 

 

integer Find(s)

Busca la primera aparición de la subcadena s.

Devuelve el índice basado en cero del primer carácter de s o -1 si s no se encuentra.

 

string Left(n)

Devuelve los primeros n caracteres de la cadena.

 

integer Length()

Devuelve la longitud de la cadena.

 

string MakeUpper()

Devuelve la cadena en mayúsculas.

 

string MakeUpper(n)

Devuelve la cadena con los primeros n caracteres en mayúsculas.

 

string MakeLower()

Devuelve la cadena en minúsculas.

 

string MakeLower(n)

Devuelve la cadena con los primeros n caracteres en minúsculas.

 

string Mid(n)

Devuelve la cadena empezando por la posición de índice basado en cero n

 

string Mid(n,m)

Devuelve la cadena empezando por la posición de índice basado en cero n y la longitud m

 

string RemoveLeft(s)

Devuelve la cadena sin la subcadena s si Left( s.Length() ) es igual a la subcadena s.

 

string RemoveLeftNoCase(s)

Devuelve la cadena sin la subcadena s si Left( s.Length() ) es igual a la subcadena s (no distingue entre mayús/minús).

 

string RemoveRight(s)

Devuelve la cadena sin la subcadena s si Right( s.Length() ) es igual a la subcadena s.

 

string RemoveRightNoCase(s)

Devuelve la cadena sin la subcadena s si Right( s.Length() ) es igual a la subcadena s (no distingue entre mayús/minús).

 

string Repeat(s,n)

Devuelve la cadena que contiene la subcadena s repetida n veces.

 

string Right(n)

Devuelve los últimos n caracteres de la cadena.

 

 

© 2017-2023 Altova GmbH