Está en la página 1de 430

@Nicoandrewb

Personalización y
ampliación
PowerDesigner
PowerDesigner 16.5
Contenido

CAPÍTULO 1: Archivos de recursos de PowerDesigner


........................................................................................................ 1
Apertura de archivos de recursos en el Editor .................. 3
Navegación y búsqueda en archivos de recursos ............. 5
Edición de archivos de recursos ......................................... 6
Guardando cambios ............................................................. 7
Compartir e incrustar archivos de recursos ...................... 7
Creación y copia de archivos de recursos ......................... 7
Comparación de archivos de recursos ............................... 8
Combinar archivos de recursos .......................................... 9
CAPÍTULO 2: Archivos de extensión ............................... 12
Creación de un archivo de extensión ............................... 13
Adjuntar extensiones a un modelo ................................... 14
Exportación de un archivo de extensión incrustado para
compartir ............................................................................. 15
Propiedades del archivo de extensión.............................. 16
Ejemplo: agregar un nuevo atributo desde una hoja de
propiedades ........................................................................ 17
Ejemplo: creación de extensiones de diagrama de
solidez ................................................................................. 18
Creación de nuevos objetos con estereotipos ...................... 20
Especificación de símbolos personalizados para objetos de
robustez ................................................................................ 21
Ejemplo: creación de comprobaciones personalizadas en
enlaces de instancias ........................................................... 23
Ejemplo: definición de plantillas para extraer descripciones de
mensajes .............................................................................. 31
Ejemplo: creación de un archivo generado para la
información del mensaje ....................................................... 33
Ejemplo: prueba de las extensiones de robustez ................. 34
Metaclases (Perfil) .............................................................. 37
Objetos extendidos, subobjetos y enlaces (perfil) ................. 40
Estereotipos (Perfil) ..................................................................... 41
Promoción de un estereotipo al estado de metaclase .......... 44
Criterios (Perfil) ............................................................................ 44
Atributos extendidos (perfil) ....................................................... 46
Crear un tipo de atributo extendido ....................................... 51
Especificación de iconos para valores de atributo ................ 52
Vinculación de objetos a través de atributos extendidos ...... 54
Colecciones y Composiciones Extendidas (Perfil) ................... 54
Colecciones calculadas (perfil) .................................................. 56
Matrices de Dependencia (Perfil) ............................................... 59
Especificación de dependencias avanzadas ........................ 61
Formularios (Perfil) ...................................................................... 62
Adición de atributos extendidos y otros controles a su
formulario .............................................................................. 64
Ejemplo: creación de una ficha de hoja de propiedades....... 68
Ejemplo: incluir un formulario en un formulario ..................... 71
Ejemplo: abrir un cuadro de diálogo desde una hoja de
propiedades .......................................................................... 74
Símbolos personalizados (perfil) ............................................... 77
Cheques personalizados (perfil) ................................................ 79
Ejemplo: Comprobación personalizada de PDM .................. 81
Ejemplo: corrección automática de PDM .............................. 82
Controladores de eventos (perfil) .............................................. 83
Métodos (Perfil) ............................................................................ 88
Menús (Perfil) ............................................................................... 89
Ejemplo: abrir un cuadro de diálogo desde un menú ............ 91
Plantillas (Perfil) ........................................................................... 93
Archivos generados (perfil) ........................................................ 94
Ejemplo: archivo y plantillas generados en Java .................. 97
Generación de sus archivos en una generación estándar o
extendida .............................................................................. 99
Transformaciones (Perfil).......................................................... 102
Perfiles de transformación (Perfil) ....................................... 104
Desarrollo de scripts de transformación.............................. 105

Personalización y ampliación de PowerDesigner iii


Importaciones XML (perfil) ........................................................ 106
Asignaciones de importación XML ...................................... 108
Propiedades de asignación de metamodelo ....................... 111
Propiedades del objeto del metamodelo ............................. 113
Generaciones de objetos (perfil) ..................................... 114
Asignaciones de generación de modelo a modelo ............. 115
Guión global (perfil) .......................................................... 116
CAPÍTULO 3: Objeto, proceso y lenguaje XML .......... 118
Archivos de definición ................................................... 118
Categoría de configuración: lenguaje de proceso ......... 120
Configuración Categoría: Lenguaje de objetos ............. 121
Configuración Categoría: Lenguaje XML ........................ 123
Categoría de generación .................................................. 123
Ejemplo: agregar una opción de generación ...................... 124
Ejemplo: agregar un comando y una tarea de generación . 126
Categoría de perfil (archivos de definición) ................... 129
CAPÍTULO 4: Archivos de definición DBMS ............... 131
Plantillas de disparadores, Elementos de plantillas de
disparadores y .................................................................. 132
Plantillas de procedimiento ...................................................... 132
Generación de Bases de Datos e Ingeniería Inversa ..... 133
Generación de guiones ....................................................... 133
Ampliación de la generación con declaraciones antes y
después .............................................................................. 134
Ingeniería inversa de guiones ............................................. 137
Generación de base de datos en vivo................................. 138
Ingeniería inversa de base de datos en vivo ....................... 138
Creación de consultas para recuperar atributos
adicionales .......................................................................... 141
Llamar a subconsultas con la palabra clave EX ................. 142
Live Database Ingeniería inversa Opciones físicas ............ 143
Índice basado en funciones de ingeniería inversa de base de
datos en vivo....................................................................... 145
Calificadores de ingeniería inversa de base de datos en
vivo ..................................................................................... 146
Generación y ingeniería inversa de PDM
ExtendedObjects ................................................................ 147
Adición de scripts antes o después de la generación e
ingeniería inversa ............................................................... 148
Categoría general (DBMS)......................................................... 148
Categoría Script/Sql (DBMS) ..................................................... 149
Categoría de sintaxis .......................................................... 149
Categoría de formato .......................................................... 150
Formato de fecha y hora ..................................................... 152
Categoría de archivo........................................................... 153
Categoría de palabras clave ............................................... 155
Categoría de secuencias de comandos/objetos (DBMS) ....... 160
Elementos de objetos comunes .......................................... 161
Mesa ................................................................................... 166
Columna ............................................................................. 171
Trabajar con valores nulos .................................................. 180
Índice .................................................................................. 180
Clave................................................................................... 184
Llave ................................................................................... 185
Referencia .......................................................................... 186
Vista .................................................................................... 190
espacio de mesa ................................................................. 192
Almacenamiento ................................................................. 193
Base de datos ..................................................................... 193
Dominio............................................................................... 194
Tipo de datos abstractos ..................................................... 196
Atributo de tipo de datos abstractos ................................... 198
Usuario ............................................................................... 198
Regla .................................................................................. 199
Procedimiento ..................................................................... 201
Desencadenar .................................................................... 203
Desencadenador DBMS ..................................................... 206

Personalización y ampliación de PowerDesigner v


Unirse al índice ................................................................... 206
Calificatorio ......................................................................... 207
Secuencia ........................................................................... 208
Sinónimo ............................................................................. 208
Grupo .................................................................................. 209
Role .................................................................................... 210
Paquete de base de datos .................................................. 211
Subobjetos del paquete DB ................................................ 212
Parámetro ........................................................................... 213
Privilegio ............................................................................. 213
Permiso............................................................................... 214
Por defecto ......................................................................... 215
Servicio web y operación web ............................................ 216
Parámetro web ................................................................... 217
Columna de resultados ....................................................... 217
Dimensión ........................................................................... 218
Objeto extendido ................................................................. 219
Categoría de tipo de secuencia de comandos/datos (DBMS) 219
Categoría de perfil (DBMS) ....................................................... 222
Uso de atributos extendidos durante la generación ............ 223
Modificación del mecanismo de estimación del tamaño de la
base de datos ..................................................................... 224
Llamar al controlador de eventos GetEstimatedSize en otra
metaclase ........................................................................... 227
Formateo de la estimación del tamaño de la base de
datos ................................................................................... 228
Categoría ODBC (DBMS) ........................................................... 229
Opciones físicas (DBMS) .......................................................... 230
Opciones físicas simples .................................................... 230
Opciones físicas compuestas ............................................. 232
Adición de opciones físicas de DBMS a sus formularios .... 234
Variables y macros de PDM ...................................................... 235
Probar valores de variables con los operadores [ ] ............. 237
Dar formato a valores de variables ..................................... 239
Variables para tablas y vistas.............................................. 240
Variables para columnas, dominios y restricciones............. 241
Variables para claves .......................................................... 244
Variables para índices y columnas de índice ...................... 245
Variables para referencias y columnas de referencia ......... 245
Variables para disparadores y procedimientos ................... 247
Variables para reglas .......................................................... 249
Variables para secuencias .................................................. 249
Variables para sinónimos .................................................... 249
Variables para Tablespaces y Storages .............................. 250
Variables para tipos de datos abstractos ............................ 250
Variables para índices de unión (IQ) ................................... 253
Variables para ASE y SQL Server ....................................... 253
Variables para la sincronización de bases de datos ........... 253
Variables para paquetes de bases de datos y sus objetos
secundarios ........................................................................ 254
Variables para la seguridad de la base de datos ................ 256
Variables para valores predeterminados ............................. 258
Variables para servicios web............................................... 258
Variables para dimensiones ................................................ 259
Variables para objetos extendidos ...................................... 260
Variables para ingeniería inversa ........................................ 261
Variables para base de datos, activadores y generación de
procedimientos ................................................................... 261
Macros .AKCOLN, .FKCOLN y .PKCOLN .......................... 262
Macro .ALLCOL .................................................................. 263
.DEFINIR Macro.................................................................. 264
.DEFINIR Macro.................................................................. 264
.ERROR Macro ................................................................... 265
Macro .FOREACH_CHILD .................................................. 265
Macro .FOREACH_COLUMN ............................................. 266
Macro .FOREACH_PARENT .............................................. 267
Macro .INCOLN .................................................................. 268
Macro .JOIN ........................................................................ 269

Personalización y ampliación de PowerDesigner vii


Macro .NMFCOL ................................................................. 269
.CLIENTEXPRESSION y .SERVEREXPRESSIONMacros 270
Macro .SQLXML ................................................................. 271
CAPÍTULO 5: Personalización de Generación con GTL
.................................................................................................... 273
Creación de una plantilla y un archivo generado ................... 273
Extracción de propiedades de objetos .................................... 274
Acceso a colecciones de subobjetos u objetos
relacionados .............................................................................. 275
Formateando su salida .............................................................. 276
Control de saltos de línea en cadenas de cabeza y cola .... 278
Bloques Condicionales ............................................................. 279
Acceso a variables globales ..................................................... 280
Operadores GTL ........................................................................ 281
Alcance de la traducción........................................................... 284
Traducción de atajos ................................................................. 285
Secuencias de escape ............................................................... 285
Plantillas de llamadas ............................................................... 286
Herencia y polimorfismo ..................................................... 287
Pasar parámetros a una plantilla ........................................ 289
Plantillas recursivas ............................................................ 291
Extensiones de metamodelo específicas de GTL ................... 292
Referencia de macros GTL ....................................................... 294
Macro .abort_command ...................................................... 295
.bloque macro ..................................................................... 295
Macro .bool ......................................................................... 296
.romper macro .................................................................... 296
Macros .change_dir y .create_path ..................................... 297
.comentario y .// Macro ....................................................... 297
Macros .convert_name y .convert_code ............................. 298
.eliminar y .reemplazar macros ........................................... 299
Macros .error y .warning ..................................................... 300
Macro .execute_command.................................................. 300
Macro .execute_vbscript ..................................................... 301
Macro .foreach_item ........................................................... 302
Macro .foreach_line ............................................................ 304
Macro .foreach_part ............................................................ 305
.si Macro ............................................................................. 307
.macro de registro ............................................................... 309
Macros .lowercase y .uppercase ........................................ 309
Macros .objeto y .colección ................................................. 310
Macro .set_interactive_mode .............................................. 310
Macros .set_object, .set_value y .unset .............................. 311
.única Macro ....................................................................... 313
Macro .vbscript ................................................................... 314
Errores de traducción y sintaxis de GTL ........................ 315
CAPÍTULO 6: Traducción de informes con Report ... 319
Archivos de lenguaje .....................................................319
Apertura de un archivo de idioma de informe ................ 321
Creación de un archivo de idioma de informe para un
nuevo idioma..................................................................... 322
Propiedades del archivo de idioma del informe............. 322
Categoría de asignación de valores.................................... 323
Ejemplo: crear una tabla de asignación y asociarla a un objeto
de modelo específico .......................................................... 324
Categoría de títulos de informes ......................................... 326
Ejemplo: traducir el informe HTML Botón anterior .............. 328
Pestaña Todos los títulos de informes ................................ 329
Categoría de atributos de objeto ......................................... 330
Pestaña Todas las clases ................................................... 332
Pestaña Todos los atributos y colecciones ......................... 332
Perfil/Categoría de variables lingüísticas ............................ 333
Categoría de plantillas de elementos de perfil/informe ....... 335
CAPÍTULO 7: Scripting PowerDesigner ........................ 337
Ejecución de secuencias de comandos en PowerDesigner
............................................................................................ 339
Muestras de archivos VBScript ........................................... 341

Personalización y ampliación de PowerDesigner ix


Manipulación de modelos, colecciones y objetos
(secuencias de comandos) .............................................. 345
Creación y apertura de modelos (secuencias de
comandos) .......................................................................... 347
Exploración y modificación de colecciones (secuencias de
comandos) .......................................................................... 348
Acceso y modificación de objetos y propiedades (secuencias
de comandos) ..................................................................... 351
Creación de objetos (secuencias de comandos) ................ 354
Visualización, formateo y posicionamiento de símbolos
(secuencias de comandos) ................................................. 356
Eliminación de objetos (secuencias de comandos) ............ 357
Creación de una selección de objetos (secuencias de
comandos) .......................................................................... 358
Control del espacio de trabajo (secuencias de comandos) . 359
Creación de accesos directos (secuencias de
comandos)......................................................................... 361
Creación de asignaciones entre objetos (secuencias de
comandos)......................................................................... 362
Creación y generación de informes (secuencias de
comandos)......................................................................... 363
Manipulación del repositorio (secuencias de
comandos)......................................................................... 363
Generación de una base de datos (secuencias de
comandos)......................................................................... 364
Ingeniería inversa de una base de datos (scripting)...... 366
Creación y acceso a extensiones (secuencias de
comandos)......................................................................... 367
Acceso a metadatos (secuencias de comandos)........... 369
Complementos y automatización OLE............................ 371
Creación de un complemento ActiveX ................................ 373
Creación de un complemento de archivo XML ................... 375
Lanzamiento de scripts y complementos desde los menús
............................................................................................ 378
Adición de comandos al menú de herramientas ................. 379
CAPÍTULO 8: El metamodelo público de
PowerDesigner ...................................................................... 383
Navegando en el Metamodelo ......................................... 385
Usando el archivo de ayuda de Metamodel Objects...... 387
Formato de archivo de modelo de PowerDesigner........ 389
Ejemplo: archivo XML OOM simple .................................... 392
Índice ........................................................................................... 396

Personalización y ampliación de PowerDesigner xi


Contenido

xii PowerDesigner
CAPÍTULO 1 Archivos de recursos de
PowerDesigner

El entorno de modelado de PowerDesigner® funciona con archivos de recursos en formato


XML, que definen los objetos disponibles en cada modelo junto con los métodos para
generarlos y aplicarles ingeniería inversa. Puede ver, copiar y editar los archivos de recursos
proporcionados y crear los suyos propios para personalizar y ampliar el comportamiento del
entorno.
Se proporcionan los siguientes tipos de archivos de recursos, basados en el metamodelo
público de PowerDesigner o que lo amplían:
• Archivo de definición: personalice el metamodelo para definir los objetos disponibles
para un DBMS o lenguaje específico:
• Archivos de definición de DBMS (.xdb): defina un DBMS específico en el PDM
(consulte el Capítulo 4, Archivos de definición de DBMS en la página 119).
• Archivos de definición de lenguaje de proceso, objeto y XML (.xpl, .xol y .xsl): defina
un lenguaje específico en BPM, OOM o XSM (consulte el Capítulo 3, Archivos de
definición de lenguaje de objeto, proceso y XML en la página 107 ).
• Archivos de extensión (.xem): amplían las definiciones estándar de los idiomas de
destino para, por ejemplo, especificar un marco o servidor de persistencia en un
OOM. Puede crear o adjuntar uno o más XEM a un modelo (consulte el Capítulo 2,
Archivos de extensión en la página 11).
• Plantillas de informes (.rtp): especifique la estructura de un informe. Editable dentro
del Editor de plantillas de informes (consulte la Guía de funciones principales >
Almacenamiento, uso compartido e informes en modelos > Informes).
• Archivos de idioma de informe (.xrl): traduzca los encabezados y otro texto estándar
en un informe (consulte el Capítulo 6, Traducción de informes con archivos de idioma
de informe en la página 287).
• Conjuntos de reglas de análisis de impacto y linaje (.rul): especifique las reglas
definidas para generar análisis de impacto y linaje (consulte Guía de funciones
principales > Vinculación y sincronización de modelos > Análisis de impacto y
linaje).
• Perfiles de permisos de objetos (.ppf): personalice la interfaz de PowerDesigner para
ocultar modelos, objetos y propiedades (consulte la Guía de funciones principales >
Administración de PowerDesigner > Personalización de la interfaz de PowerDesigner
> Uso de perfiles para controlar la interfaz de PowerDesigner).
• Perfiles de usuario (.upf): almacene las preferencias para las opciones del modelo, las
opciones generales, las preferencias de visualización, etc. (consulte la Guía de

Personalización y ampliación de PowerDesigner 1


CAPÍTULO 1: Archivos de recursos de PowerDesigner

funciones principales > Modelado con PowerDesigner > Personalización del entorno
de modelado > Perfiles de usuario).
• Conjuntos de categorías de modelo (.mcc): personalice el cuadro de diálogo Nuevo
modelo para guiar la creación del modelo (consulte Guía de funciones principales >
Administración de PowerDesigner > Personalización de la interfaz de PowerDesigner
> Personalización del cuadro de diálogo Nuevo modelo).
• Tablas de conversión (.csv): defina conversiones entre el nombre y el código de un
objeto (consulte la Guía de características principales > Modelado con
PowerDesigner > Objetos > Convenciones de nomenclatura).
Puede revisar todos los archivos de recursos disponibles de las listas de archivos de recursos,
disponibles seleccionando Herramientas > Recursos > tipo.

Nota:Para cumplir con las recomendaciones recientes de Microsoft, PowerDesigner ya no


le permite guardar archivos de recursos dentro de la carpeta Archivos de programa y
propondrá una ubicación alternativa si intenta hacerlo, agregando el directorio seleccionado
a la lista de rutas para ese tipo de archivo de recursos. . Es posible que los archivos de
recursos guardados anteriormente en Archivos de programa ya no estén disponibles, ya que
Windows Vista o Windows 7 los almacenan en un espejo virtual en, por ejemplo,
C:\Users\username\AppData\Local\VirtualStore\Program Files\Sybase\PowerDesigner
16\Archivos de recursos\DBMS. Para restaurar estos
archivos a sus listas, opcionalmente muévalos a una ruta más conveniente y agregue su
ubicación a su lista usando la herramienta Ruta.

Las siguientes herramientas están disponibles en cada lista de archivos de recursos:


Herramient Descripción
a
Propiedades: abre el archivo de recursos en el Editor de recursos.

Nuevo: crea un nuevo archivo de recursos utilizando un archivo existente como


modelo (verCreación y copia de archivos de recursosen la página 7).

Guardar: guarda el archivo de recursos seleccionado.

Guardar todo: guarda todos los archivos de recursos de la lista.

2 PowerDesigner
CAPÍTULO 1: Archivos de recursos de PowerDesigner

Ruta: especifica los directorios que contienen archivos de recursos para completar
esta lista y otros lugares en la interfaz de PowerDesigner donde se pueden
seleccionar recursos de este tipo. De manera predeterminada, solo se especifica el
directorio que contiene los archivos de recursos entregados en la instalación de
PowerDesigner, pero puede agregar tantos directorios adicionales como sea
necesario.
Si planea modificar los archivos de recursos entregados o crear los suyos propios,
le recomendamos que almacene estos archivos en un directorio fuera del directorio
de instalación de PowerDesigner.
La raíz de la biblioteca que pertenece a su conexión de repositorio más reciente se
incluye implícitamente al principio de la lista y se explora de forma recursiva
(verGuía de funciones principales > Administración de PowerDesigner >
Implementación de un glosario y una biblioteca empresariales ).

Nota:En casos excepcionales, cuando se buscan archivos de recursos para resolver


referencias rotas en modelos, los directorios de la lista se escanean en orden y se
utiliza la primera instancia coincidente del recurso requerido.

Comparar: selecciona dos archivos de recursos para la comparación.

Fusionar: selecciona dos archivos de recursos para fusionarlos.

Registrar: [si el repositorio está instalado] Registra el archivo de recursos


seleccionado en el repositorio. Para obtener información sobre cómo almacenar sus
archivos de recursos en el repositorio, consulteGuía de funciones principales >
Administración de PowerDesigner > Implementación de un glosario y una
biblioteca empresariales.
Herramient Descripción
a
Actualizar desde el repositorio: [si el repositorio está instalado] Extrae una versión
del archivo seleccionado del repositorio a su máquina local.

Comparar con repositorio: [si el repositorio está instalado] Compara el archivo


seleccionado con un archivo de recursos almacenado en el repositorio.

Apertura de archivos de recursos en el Editor

Cuando trabaje con un BPM, PDM, OOM o XSM, puede abrir el archivo de definición que
controla los objetos disponibles en su modelo en el Editor de recursos para verlos y
editarlos. También puede abrir y editar cualquier archivo de extensión actualmente adjunto
o incrustado en su modelo o acceder a la lista adecuada de archivos de recursos y abrir
cualquier archivo de recursos de PowerDesigner.

Personalización y ampliación de PowerDesigner 3


CAPÍTULO 1: Archivos de recursos de PowerDesigner

Para abrir el archivo de definición utilizado actualmente por su modelo:

• En un PDM, seleccione Base de datos > Editar DBMS actual.


• En un BPM, seleccione Idioma > Editar idioma del proceso actual.
• En un OOM, seleccione Idioma > Editar idioma del objeto actual.
• En un XSM, seleccione Idioma > Editar idioma actual.
Para abrir cualquier archivo de extensión adjunto actualmente a su modelo, haga doble clic
en su entrada dentro de la categoría Extensiones en el navegador.
Para abrir cualquier otro archivo de recursos, seleccione Herramientas > Recursos > Tipo
para abrir la lista de archivos de recursos correspondiente, seleccione un archivo de la lista
y luego haga clic en la herramienta Propiedades.
En cada caso, el archivo se abre en el Editor de recursos, en el que puede revisar y editar la
estructura del recurso. El panel de la izquierda muestra una vista de árbol de las entradas
contenidas en el archivo de recursos, y el panel de la derecha muestra las propiedades del
elemento seleccionado actualmente:

Nota:Nunca debe modificar los archivos de recursos enviados con PowerDesigner. Si desea
modificar un archivo, cree una copia con la herramienta Nuevo (consulte Creación y copia
de archivos de recursos en la página 7).

Cada entrada es parte de la definición de un archivo de recursos y las entradas están


organizadas en categorías lógicas. Por ejemplo, la categoría Script en un archivo de lenguaje
DBMS reúne todas las entradas relacionadas con la generación de bases de datos y la
ingeniería inversa.

4 PowerDesigner
CAPÍTULO 1: Archivos de recursos de PowerDesigner

Puede arrastrar y soltar categorías o entradas en la vista de árbol del editor de recursos y
también entre dos editores de recursos del mismo tipo (por ejemplo, dos editores XOL).

Nota:Algunos archivos de recursos se entregan con "No certificado" en sus nombres.


Sybase® realizará todas las comprobaciones de validación posibles; sin embargo, no
mantenemos entornos específicos para certificar completamente estos archivos de recursos.
Los apoyaremos aceptando informes de errores y proporcionando correcciones según la
política estándar, con la excepción de que no habrá una validación ambiental final de la
corrección. Le invitamos a que nos ayude probando correcciones e informando de cualquier
incoherencia continua.

Navegación y búsqueda en archivos de recursos

Las herramientas en la parte superior del Editor de recursos lo ayudan a navegar y buscar en
el archivo de recursos.

Herramienta Descripción

Atrás (Alt+Izquierda) - Ir a la entrada o categoría visitada anteriormente. Haga


clic en la flecha hacia abajo para seleccionar directamente de su historial.

Adelante (Alt+Derecha) - Ir a la siguiente entrada o categoría visitada. Haga clic


en la flecha hacia abajo para seleccionar directamente de su historial.

Buscar (Entrar): vaya al elemento nombrado en el cuadro de texto a la izquierda


de la herramienta. Si se encuentra más de un elemento, se enumeran en un cuadro
de diálogo de resultados y debe hacer doble clic en el elemento deseado o
seleccionarlo y hacer clic en Aceptar para acceder a él. Haga clic en la flecha hacia
abajo para configurar las opciones de búsqueda:
• [tipo de extensión]: seleccione el tipo de extensión para buscar, por ejemplo,
puede buscar solo estereotipos
• Permitir comodín: permite el uso de los caracteres * para hacer coincidir
cualquier cadena y ? para que coincida con cualquier carácter individual. Por
ejemplo, escriba is* para recuperar todas las extensiones llamadas is....
• Coincidencia de mayúsculas y minúsculas: busque con distinción de
mayúsculas y minúsculas.

Personalización y ampliación de PowerDesigner 5


CAPÍTULO 1: Archivos de recursos de PowerDesigner

Guardar (Ctrl+Shift+S): guarda el archivo de recursos actual. Haga clic en la


flecha hacia abajo para guardar el archivo de recursos actual con un nuevo
nombre.
Buscar en elementos (Ctrl+Shift+F): busca texto en las entradas.

Reemplazar en elementos (Ctrl+Shift+H): busque y reemplace texto en las


entradas.

Nota:Para saltar a la definición de una plantilla desde una referencia en otra plantilla (ver
Plantillas (Perfil) en la página 84) u otra extensión, coloque el cursor entre los signos de
porcentaje y presione F12. Si una extensión anula otro elemento, haga clic con el botón
derecho y seleccione Ir a superdefinición para ir al elemento anulado.

Edición de archivos de recursos

Puede agregar elementos en el editor de recursos haciendo clic con el botón derecho en una
categoría o una entrada en la vista de árbol. Están disponibles las siguientes opciones de
edición:
Opción de Descripción
edición
Nuevo Agrega una entrada o categoría definida por el usuario.

Añadir Abre un cuadro de diálogo de selección que le permite seleccionar una o más
artículos... de las categorías o entradas de metamodelo predefinidas para agregar al nodo
actual. No puede editar los nombres de estos elementos, pero puede cambiar sus
comentarios y valores seleccionando su nodo.

Eliminar Elimina la categoría o entrada seleccionada.

Restaurar Restaura el comentario predeterminado para la categoría o entrada


comentario seleccionada.
Restaurar valor Restaura el valor predeterminado para la entrada seleccionada.

Nota:Puede cambiar el nombre de una categoría o una entrada directamente desde el árbol
de archivos de recursos seleccionándola y presionando la tecla F2.

6 PowerDesigner
CAPÍTULO 1: Archivos de recursos de PowerDesigner

Guardando cambios

Si realiza cambios en un archivo de recursos y luego hace clic en Aceptar para cerrar el editor
de recursos sin haber hecho clic en la herramienta Guardar, los cambios se guardan en la
memoria, el editor se cierra y vuelve a la lista de archivos de recursos. Cuando hace clic en
Cerrar en la lista de archivos de recursos, se muestra un cuadro de confirmación que le
pregunta si realmente desea guardar el archivo de recursos modificado. Si hace clic en Sí,
los cambios se guardan en el propio archivo de recursos. Si hace clic en No, los cambios se
guardan en la memoria hasta que cierre la sesión de PowerDesigner.
La próxima vez que abra cualquier modelo que utilice el archivo de recursos personalizado,
el modelo tendrá en cuenta las modificaciones. Sin embargo, si anteriormente modificó las
mismas opciones directamente en el modelo, los valores en el archivo de recursos no cambian
estas opciones.

Compartir e incrustar archivos de recursos

Los archivos de recursos pueden ser compartidos y referenciados por múltiples modelos o
copiados e incrustados en un solo modelo. Cualquier modificación que realice en un recurso
compartido está disponible para todos los modelos que utilizan el recurso, mientras que las
modificaciones en un recurso incrustado solo están disponibles para el modelo en el que está
incrustado. Los archivos de recursos integrados se guardan como parte de su modelo y no
como un archivo separado.

Nota:Nunca debe modificar las extensiones originales enviadas con PowerDesigner. Para
crear una copia del archivo para modificar, abra la Lista de extensiones, haga clic en la
herramienta Nuevo, especifique un nombre para el nuevo archivo y luego seleccione el .xem
que desea modificar en el campo Copiar desde.

El campo Nombre de archivo muestra la ubicación definida del archivo de recursos que está
modificando.
Este campo está vacío si el archivo de recursos está incrustado.

Creación y copia de archivos de recursos

Personalización y ampliación de PowerDesigner 7


CAPÍTULO 1: Archivos de recursos de PowerDesigner

Puede crear un nuevo archivo de recursos en la lista de archivos de recursos adecuada. Para
crear una copia de un archivo de recursos existente, selecciónelo en el campo Copiar desde
del cuadro de diálogo Nuevo....

¡Advertencia!Dado que cada archivo de recursos tiene una identificación única, solo debe
copiar los archivos de recursos dentro de PowerDesigner y no en el Explorador de Windows.

1. Seleccione Herramientas > Recursos > Tipo para abrir la lista de archivos de recursos
adecuada.
2. Haga clic en la herramienta Nuevo, ingrese un nombre para el nuevo archivo y seleccione
un archivo existente para copiar. Seleccione el elemento <Plantilla predeterminada> para
crear un archivo de recursos mínimamente completado.
3. Haga clic en Aceptar para crear el nuevo archivo de recursos y luego especifique un
nombre de archivo y haga clic en Guardar para abrirlo en el Editor de recursos.

Nota:Puede crear un archivo de extensión directamente en su modelo desde la Lista de


extensiones.
Para obtener más información, consulte Creación de un archivo de extensión en la página
12.

Comparación de archivos de recursos

Puede seleccionar dos archivos de recursos y compararlos para resaltar las diferencias entre
ellos.

1. Seleccione Herramientas > Recursos > Tipo para abrir la lista de archivos de recursos
adecuada.
2. Seleccione el primer archivo de recursos que desea comparar en la lista y luego haga clic
en la herramienta Comparar para abrir un cuadro de diálogo de selección.
El archivo seleccionado se muestra en el segundo campo de comparación.
3. Seleccione el otro archivo de recursos para comparar en el primer campo de comparación.
Si el archivo de recursos que desea comparar no está en la lista, haga clic en la
herramienta Seleccionar ruta y busque su directorio.

8 PowerDesigner
CAPÍTULO 1: Archivos de recursos de PowerDesigner

4. Haga clic en Aceptar para abrir el cuadro de diálogo Comparar..., que le permite revisar
todas las diferencias entre los archivos.
Para obtener información detallada sobre esta ventana, consulte la Guía de funciones
principales > Modelado con PowerDesigner > Comparación y combinación de modelos.
5. Revise las diferencias y luego haga clic en Cerrar para cerrar la ventana de comparación
y volver a la lista.

Combinar archivos de recursos

Puede seleccionar dos archivos de recursos del mismo tipo y fusionarlos. La combinación se
realiza de izquierda a derecha, el archivo de recursos del panel derecho se compara con el
archivo de recursos del panel izquierdo, las diferencias se resaltan y se proponen acciones
de combinación en el archivo de recursos de la derecha.

1. Seleccione Herramientas > Recursos > Tipo para abrir la lista de archivos de recursos
adecuada.
2. Seleccione el archivo de recursos en el que desea realizar cambios de combinación en la
lista y luego haga clic en la herramienta Combinar para abrir un cuadro de diálogo de
selección.
El archivo seleccionado se muestra en el campo Para.
3. Seleccione el archivo de recursos desde el que desea fusionar en el campo De.
Si el archivo de recursos que desea fusionar no está en la lista, haga clic en la herramienta
Seleccionar ruta y busque su directorio.

Personalización y ampliación de PowerDesigner 9


CAPÍTULO 1: Archivos de recursos de PowerDesigner

4. Haga clic en Aceptar para abrir el cuadro de diálogo Combinar..., que le permite revisar
todas las acciones de combinación antes de completarlas.
Para obtener información detallada sobre esta ventana, consulte la Guía de funciones
principales > Modelado con PowerDesigner > Comparación y combinación de modelos.
5. Seleccione o rechace las acciones de combinación propuestas según sea necesario y luego
haga clic en Aceptar para realizar la combinación.

10 PowerDesigner
CAPÍTULO 1: Archivos de recursos de PowerDesigner

Personalización y ampliación de PowerDesigner 11


CAPITULO 2 Archivos de extensión

Los archivos de extensiones (*.xem) le permiten personalizar y ampliar el metamodelo de


PowerDesigner para satisfacer sus necesidades de modelado exactas. Puede definir
propiedades adicionales para los objetos existentes o especificar tipos de objetos
completamente nuevos, modificar la interfaz de PowerDesigner (reorganizar y agregar fichas
de hojas de propiedades, herramientas de la caja de herramientas y elementos de menú) y
definir objetivos y opciones de generación adicionales.
Los archivos de extensión tienen una extensión .xem y se encuentran en install_dir/Resource
Archivos/Ampliar Definiciones de Modelos. Para ver la lista de
extensiones, seleccione Herramientas > Recursos > Extensiones
> tipo de modelo. Para obtener información sobre las
herramientas disponibles en las listas de archivos de recursos,
consulte el Capítulo 1, Archivos de recursos de PowerDesigner
en la página 1.
Cada archivo de extensión contiene dos categorías de primer nivel:
• Generación: se utiliza para desarrollar o complementar la generación de
objetos predeterminada de PowerDesigner.
(para modelos BPM, OOM y XSM) o para generación separada. Para obtener más
información, consulte Categoría de generación en la página 112.
• Perfil: se utiliza para extender las metaclases en el metamodelo de
PowerDesigner. Puede:
• Crear o subclasificar nuevos tipos de objetos:
• Metaclases: extraídas del metamodelo como base para la extensión.
• Estereotipos [solo para metaclases y estereotipos]: subclasifique las metaclases
por estereotipo.
• Criterios: subclasificar metaclases mediante la evaluación de condiciones.
• Agregue nuevas propiedades y colecciones a los objetos y muéstrelos:
• Atributos extendidos: para agregar metadatos.
• Colecciones y composiciones extendidas: para permitir la vinculación manual
entre objetos.
• Colecciones calculadas: para automatizar la vinculación entre objetos.
• Matrices de dependencia: para mostrar las dependencias entre dos tipos de
objetos.
• Formularios: para modificar hojas de propiedades y agregar cuadros de diálogo
personalizados.
• Símbolos personalizados: para cambiar la apariencia de los objetos en los
diagramas.

Personalización y ampliación de PowerDesigner 12


CAPÍTULO 2: Archivos de extensión

• Agregue restricciones y reglas de validación a los objetos:


• Comprobaciones personalizadas: para probar la validez de sus modelos bajo
demanda • Controladores de eventos: para realizar la validación o invocar
métodos automáticamente.
• Ejecutar comandos en objetos:
• Métodos: VBScripts para ser invocados por menús o botones de formulario.
• Menús [solo para metaclases y estereotipos]: para agregar comandos a los menús
de PowerDesigner.
• Genere objetos de nuevas formas:
• Plantillas: para extraer texto de las propiedades del objeto.
• Archivos generados: para ensamblar plantillas para la vista previa y la generación
de archivos • Transformaciones: para automatizar los cambios en los objetos
en la generación o bajo demanda.
• Mapa de correspondencias entre diferentes metamodelos:
• Generaciones de objetos: para definir asignaciones entre diferentes módulos en el
metamodelo de PowerDesigner para la generación de modelo a modelo.
• Importaciones XML: para definir asignaciones entre un esquema XML y un
módulo de PowerDesigner para importar archivos XML como modelos.

Nota:Dado que puede adjuntar varios archivos de recursos a un modelo (por ejemplo, un
idioma de destino y uno o más archivos de extensión), puede crear conflictos, donde se
definen múltiples extensiones con nombres idénticos (por ejemplo, dos definiciones de
estereotipo diferentes) en la misma metaclase. en archivos de recursos separados. En caso de
tales conflictos, generalmente prevalece la extensión del archivo de extensión. Cuando dos
XEM están en conflicto, se da prioridad al más alto en la Lista de extensiones.

Creación de un archivo de extensión

Puede crear un archivo de extensión a partir de la lista de archivos de extensión o


directamente incrustado en su modelo.

Nota:Para obtener información sobre cómo crear un archivo de extensión a partir de la lista
de archivos de extensión, consulte Creación y copia de archivos de recursos en la página 7.

1. Abra su modelo y luego seleccione Modelo > Extensiones para abrir la Lista de
extensiones.
2. Haga clic en la herramienta Agregar una fila e ingrese un nombre para el nuevo archivo
de extensión.

Personalización y ampliación de PowerDesigner 13


CAPÍTULO 2: Archivos de extensión

3. Haga clic en la herramienta Propiedades para abrir el nuevo archivo de extensión en el


Editor de recursos y cree las extensiones apropiadas.
4. Cuando haya terminado, haga clic en Aceptar para guardar los cambios y volver a la Lista
de extensiones.
El nuevo XEM está integrado inicialmente en su modelo y no se puede compartir con
ningún otro modelo. Para obtener información sobre cómo exportar sus extensiones y
hacer que estén disponibles para compartir, consulte Exportación de un archivo de
extensión incrustado para compartir en la página 14.

Adjuntar extensiones a un modelo

Las extensiones pueden estar en archivos *.xem independientes que se adjuntan a modelos
o se pueden incrustar en archivos de modelo. Múltiples modelos pueden hacer referencia a
los archivos de extensión independientes, y todos los modelos que lo adjuntan comparten
cualquier cambio realizado en dicho archivo. Los cambios realizados en las extensiones
incrustadas en un archivo de modelo afectan solo a ese modelo.

Nota:Nunca debe modificar las extensiones originales enviadas con PowerDesigner. Para
crear una copia del archivo para modificar, abra la Lista de extensiones, haga clic en la
herramienta Nuevo, especifique un nombre para el nuevo archivo y luego seleccione el
.xem que desea modificar en el campo Copiar desde.

Puede adjuntar un archivo de extensión (.xem) a su modelo en la creación del modelo


haciendo clic en el botón Seleccionar extensiones en el cuadro de diálogo Nuevo modelo.
Posteriormente, puede adjuntar un archivo de extensión a su modelo en cualquier momento
desde la Lista de extensiones.

1. Seleccione Modelo > Extensiones para abrir la Lista de extensiones.


2. Haga clic en la herramienta Adjuntar una extensión para abrir el cuadro de diálogo
Seleccionar extensiones.
3. Revise los diferentes tipos de extensiones disponibles haciendo clic en las subpestañas y
seleccione una o más para adjuntarlas a su modelo.
Por defecto, PowerDesigner crea un enlace en el modelo al archivo especificado. Para
copiar el contenido del archivo de extensión y guardarlo en su archivo de modelo, haga
clic en el botón Incrustar recurso en el modelo en la barra de herramientas. Incrustar un
archivo de esta manera le permite realizar cambios específicos en su modelo sin afectar
a ningún otro modelo que haga referencia al recurso compartido.
4. Haga clic en Aceptar para volver a la Lista de extensiones.

14 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Los archivos de extensión enumerados en gris están adjuntos al modelo, mientras que los
que están en negro están incrustados en el modelo.

Nota:Si incrusta un archivo de extensión en el modelo, el nombre y el código de la


extensión pueden modificarse para que respete las convenciones de nomenclatura de la
categoría Otros objetos en el cuadro de diálogo Opciones de modelo.

Exportación de un archivo de extensión incrustado para


compartir

Si exporta un XEM creado en un modelo, estará disponible en la Lista de extensiones y podrá


compartirse con otros modelos. Cuando exporta un XEM, el original permanece incrustado
en el modelo.

1. Seleccione Modelo > Extensiones para abrir la Lista de extensiones.


2. Seleccione una extensión en la lista.
3. Haga clic en la herramienta Exportar una extensión.
4. Escriba un nombre y seleccione un directorio para el archivo de extensión.
5. Clic en Guardar.
Ahora se puede acceder a la extensión y adjuntarla o incrustarla en otros modelos.

Personalización y ampliación de PowerDesigner 15


CAPÍTULO 2: Archivos de extensión

Propiedades del archivo de extensión

Todos los archivos de extensión tienen la misma estructura de categoría básica.


El nodo raíz de cada archivo contiene las siguientes propiedades:
Propiedad Descripción

Nombre / Especifique el nombre y el código del archivo de extensión, que debe ser único
Código en un modelo.
Nombre del [solo lectura] Especifica la ruta al archivo de extensión. Si el XEM se ha copiado
archivo en su modelo, este campo está vacío.

Familia / Restringe la disponibilidad del XEM a una familia y subfamilia de destino en


Subfamilia particular. Por ejemplo, cuando un XEM tiene la familia Java, solo está
disponible para su uso con destinos en la familia del lenguaje de objetos Java.
EJB 2.0 es una subfamilia de Java.
Adjuntar Especifica que el XEM se adjuntará automáticamente a los nuevos modelos con
automáticamente un objetivo que pertenezca a la familia especificada.

Categoría Agrupa los XEM por tipo para la generación y en el cuadro de diálogo
Seleccionar extensiones. Las extensiones que tienen la misma categoría no se
pueden generar simultáneamente. Si no especifica una categoría, el XEM se
muestra en la categoría Uso general y se trata como un objetivo de generación.

Habilitar Le permite obtener una vista previa de las plantillas utilizadas durante la
seguimiento generación (verPlantillas (Perfil)en la página 84). Antes de comenzar la
Modo generación, haga clic en la página Vista previa del objeto relevante y haga clic
en la herramienta Actualizar para mostrar las plantillas.
Cuando hace doble clic en una línea de seguimiento desde la página Vista previa,
el Editor de recursos se abre en la definición de plantilla correspondiente.
Propiedad Descripción

Complementar Especifica que el XEM se usa para complementar la generación de un DBMS o


generación de una definición de idioma, de modo que los elementos que se generarán para el
lenguaje idioma se fusionen con los del XEM antes de la generación, y todos los archivos
generados especificados tanto por la definición del idioma como por los XEM
se generado (verArchivos generados (perfil)en la página 85). Si dos archivos
generados tienen nombres idénticos, el archivo en el XEM anula el definido en
el destino.

Nota:PowerBuilder no admite XEM para la generación complementaria.

16 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Comentario Proporciona un comentario descriptivo para el XEM.

Las siguientes categorías también están disponibles:


• Generación: contiene comandos, opciones y tareas de generación para definir y activar
un proceso de generación (consulte Categoría de generación en la página 112).
• Perfil de transformación: agrupa las transformaciones para la aplicación en el momento
de la generación del modelo o bajo demanda (consulte Transformaciones (perfil) en la
página 92).

Ejemplo: agregar un nuevo atributo desde una hoja de


propiedades

En este ejemplo, agregaremos rápidamente un nuevo atributo directamente desde la hoja de


propiedades de un objeto. PowerDesigner gestionará la creación del archivo de extensión y
la creación de todas las extensiones necesarias.

1. Haga clic en el botón Menú de la hoja de propiedades en la parte inferior izquierda de la


hoja de propiedades, a la derecha del botón Más/Menos, y seleccione Nuevo atributo.
2. En el cuadro de diálogo Nuevo atributo, ingrese Latencia en el campo Nombre,
seleccione Cadena para el tipo de datos.
3. Haga clic en el botón de puntos suspensivos a la derecha del campo Lista de valores,
ingrese la siguiente lista de valores predefinidos y luego haga clic en Aceptar:
• Lote
• Tiempo real
• Programado
4. [opcional] Seleccione Programado en el campo Valor predeterminado.
5. [opcional] Haga clic en Siguiente para especificar la página de la hoja de propiedades
donde desea que aparezca el nuevo atributo. Aquí, dejaremos el valor predeterminado,
para que se inserte en la pestaña General.

Personalización y ampliación de PowerDesigner 17


CAPÍTULO 2: Archivos de extensión

Ejemplo: creación de extensiones de diagrama de solidez

En este ejemplo, recrearemos el archivo de extensión Robustness entregado con


PowerDesigner para extender el diagrama de comunicación OOM para permitir el análisis
de robustez. Los diagramas de robustez se ubican entre el caso de uso y el análisis del
diagrama de secuencia, y le permiten cerrar la brecha entre lo que el sistema tiene que hacer
y cómo realmente lo va a lograr.
Para respaldar el diagrama de robustez, necesitaremos definir nuevos objetos aplicando
estereotipos a una metaclase, especificar herramientas y símbolos personalizados para ellos,
así como definir comprobaciones personalizadas para enlaces de instancias y producir un
archivo para generar una descripción de los mensajes intercambiados. entre objetos.
La creación de las extensiones de robustez nos permitirá verificar casos de uso como el
siguiente, que representa una transacción web básica:

18 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Un cliente desea saber el valor de sus acciones para decidir vender o no, y envía una consulta
de valor de acciones desde su navegador de Internet, que se transfiere desde su navegador al
servidor de la base de datos a través del servidor de aplicaciones.
El primer paso para definir extensiones es crear un archivo de extensión (.xem) para
guardarlas en:

1. Cree o abra un OOM y seleccione Modelo > Extensiones para abrir la lista de extensiones
adjuntas al modelo.
2. Haga clic en la herramienta Agregar una fila para crear un nuevo archivo de extensión y
luego haga clic en la herramienta Propiedades para abrirlo en el Editor de recursos.
3. Ingrese Extensiones de análisis de solidez en el campo Nombre y desmarque la casilla
Complementar generación de lenguaje, ya que estas extensiones no pertenecen a ninguna
familia de lenguajes de objetos y no se usarán para complementar ninguna generación de
lenguajes de objetos.
4. Expande la categoría Perfil, en la que crearemos las extensiones:

Para obtener información detallada sobre la creación de archivos de extensión, consulte


Creación de un archivo de extensión en la página 12.

Personalización y ampliación de PowerDesigner 19


CAPÍTULO 2: Archivos de extensión

Creación de nuevos objetos con estereotipos


Para implementar el análisis de robustez en PowerDesigner, necesitamos crear tres nuevos
tipos de objetos (objetos de límite, de entidad y de control), que definiremos en la categoría
Perfil al extender la metaclase UMLObject a través de estereotipos.

1. Haga clic con el botón derecho en la categoría Perfil y seleccione Agregar metaclases
para abrir el cuadro de diálogo Selección de metaclases.
2. Seleccione UMLObject en la pestaña PdOOM y haga clic en Aceptar para agregar esta
metaclase al archivo de extensión.

Nota:Haga clic en la herramienta Ayuda Buscar en objetos del metamodelo a la derecha


del campo Nombre (o haga clic en Ctrl+F1) para obtener información sobre esta
metaclase y ver dónde se encuentra en el metamodelo de PowerDesigner.

3. Haga clic con el botón derecho en la categoría UMLObject y seleccione Nuevo >
Estereotipo para crear un estereotipo para ampliar esta metaclase.
4. Ingrese Límite en el campo Nombre, y los objetos de Límite son utilizados por los actores
cuando se comunican con el sistema; pueden ser ventanas, pantallas, cuadros de diálogo
o menús. en el campo Comentario.
5. Seleccione la casilla de verificación Usar como metaclase para promocionar el tipo de
objeto en la interfaz para que tenga su propia lista de objetos y categoría de navegador.
6. Haga clic en la herramienta Seleccionar icono para abrir el cuadro de diálogo de la
biblioteca de imágenes de PowerDesigner, seleccione la pestaña Buscar imágenes,
ingrese el límite en el campo Buscar y haga clic en el botón Buscar.
7. Seleccione la imagen Boundary.cur en los resultados y haga clic en Aceptar para asignarla
para representar objetos de límite en el navegador y otros elementos de la interfaz. Haga
clic en la casilla de verificación de la herramienta personalizada Caja de herramientas
para crear una herramienta con el mismo icono para crear el nuevo objeto en la Caja de
herramientas.
8. Repita estos pasos para crear los siguientes estereotipos e íconos:
Estereotipo Comentario Archivo de
imagen

Entidad Los objetos de entidad representan datos almacenados entidad.cur


como una base de datos, tablas de bases de datos o
cualquier tipo de objeto transitorio, como un resultado
de búsqueda.
Control Los objetos de control se utilizan para controlar los control.cur
objetos de límite y de entidad, y representan la
transferencia de información.

20 PowerDesigner
CAPÍTULO 2: Archivos de extensión

9. Haga clic en Aplicar para guardar los cambios antes de continuar.


Para obtener información detallada sobre la creación de estereotipos, consulte
Estereotipos (perfil) en la página 37.

Especificación de símbolos personalizados para objetos de robustez


Especificaremos símbolos de diagrama para cada uno de nuestros nuevos objetos de
diagrama de robustez agregando símbolos personalizados a nuestros nuevos estereotipos.

1. Haga clic con el botón derecho en Estereotipo de límite y seleccione Nuevo > Símbolo
personalizado para crear un símbolo personalizado debajo del estereotipo.
2. Haga clic en el botón Modificar para abrir el cuadro de diálogo Formato de símbolo y
seleccione la pestaña Forma personalizada.
3. Seleccione la casilla de verificación Habilitar forma personalizada y seleccione Objeto
de contorno en la lista Nombre de forma.

Personalización y ampliación de PowerDesigner 21


CAPÍTULO 2: Archivos de extensión

4. Haga clic en Aceptar para completar la definición del símbolo personalizado y volver al
Editor de recursos.
5. Repita estos pasos para los otros estereotipos:
Estereotipo Nombre de forma

Entidad Objeto de entidad

Control Objeto de control

22 PowerDesigner
CAPÍTULO 2: Archivos de extensión

6. Haga clic en Aplicar para guardar sus cambios.


Para obtener información detallada sobre la creación de símbolos personalizados,
consulte Símbolos personalizados (perfil) en la página 70.

Ejemplo: creación de comprobaciones personalizadas en enlaces de


instancias
Ahora crearemos tres comprobaciones personalizadas en los enlaces de instancia que
conectarán los diversos objetos de robustez. Estas comprobaciones, que están escritas en VB,
no impiden que los usuarios creen diagramas que no son compatibles con la metodología de
robustez, pero definen reglas que se verificarán cuando compruebe su modelo.

1. Haga clic con el botón derecho en la categoría Perfil, seleccione Agregar metaclases para
abrir el cuadro de diálogo Selección de metaclases, seleccione InstanceLink en la pestaña
PdOOM y haga clic en Aceptar para agregarlo al archivo de extensión.
2. Haga clic con el botón derecho en la categoría InstanceLink y seleccione Nuevo >
Comprobación personalizada para crear una comprobación en la metaclase.
3. Ingrese los siguientes valores para las propiedades en la pestaña General:
Campo Valor

Nombre Colaboración incorrecta del actor

Comentario Esta verificación verifica si los actores están


vinculados a los objetos de contorno. No se permite

Personalización y ampliación de PowerDesigner 23


CAPÍTULO 2: Archivos de extensión

vincular actores a objetos de control o de entidad


en el análisis de robustez.

mensaje de Esta verificación garantiza que los actores solo se


ayuda comuniquen con los objetos de contorno.

Campo Valor

mensaje de Los siguientes enlaces de instancia son incorrectos:


salida

Gravedad Error
predeterminada

Ejecutar la [seleccionado]
verificación
por defecto

4. Seleccione la pestaña Verificar secuencia de comandos e ingrese la siguiente secuencia


de comandos en el campo de texto:
Función %Comprobar%(enlace)
' El retorno predeterminado es Verdadero
%Comprobar% = Verdadero

' El objeto debe ser un enlace de instancia


Si el enlace es Nada, entonces
Función de salida
Terminara si
Si no es link.IsKindOf(PdOOM.cls_InstanceLink) entonces
Función de salida
Terminara si

'Recuperar los extremos del enlace


Fuente tenue, horario de verano
Establecer src = enlace.ObjetoA
Establecer dst = enlace.ObjetoB

' La fuente es un actor


' Llamar a la función global CompareObjectKind() definida en
Global
Panel de secuencias de comandos
Si CompareObjectKind(src, PdOOM.Cls_Actor) Entonces
' Comprobar si el destino es un objeto UML con "Límite"
Estereotipo
Si no es CompareStereotype(dst, PdOOM.Cls_UMLObject,
"Límite") Entonces

24 PowerDesigner
CAPÍTULO 2: Archivos de extensión
%Comprobar% = Falso
Terminara si
ElseIf CompareObjectKind(dst, PdOOM.Cls_Actor) Entonces
' Comprobar si la fuente es un objeto UML con estereotipo
"límite"
Si no es CompareStereotype(src, PdOOM.Cls_UMLObject,
"Límite") Entonces
%Comprobar% = Falso
Terminara si
Terminara si
función final

Nota:Para obtener más información sobre VBS, consulte el Capítulo 7, Creación de


scripts de PowerDesigner en la página 305.

5. Seleccione la pestaña Global Script (donde almacena funciones y atributos estáticos que
pueden reutilizarse entre diferentes funciones) e ingrese el siguiente script en el campo
de texto:

Personalización y ampliación de PowerDesigner 25


CAPÍTULO 2: Archivos de extensión

' Esta función global verifica si un objeto es de un tipo dado


' o es un atajo de un objeto de un tipo dado
Función CompareObjectKind(Obj, Kind)
' El retorno predeterminado es falso
CompareObjectKind = False

'Comprobar objeto
Si Obj es Nada Entonces
Función de salida
Terminara si
' Caso específico de acceso directo, preguntar a su objeto de
destino
Si Obj.IsShortcut() Entonces
CompareObjectKind = CompareObjectKind(Obj.TargetObject, Kind)
Función de salida
Terminara si
Si Obj.IsKindOf(Tipo) Entonces
' Tipo de objeto correcto
CompareObjectKind = Verdadero
Terminara si
función final

' Esta función global verifica si un objeto es de un tipo dado


' y comparar su valor de estereotipo
Función CompareStereotype(Obj, Kind, Value)
' El retorno predeterminado es falso
CompareStereotype = False

'Comprobar objeto
Si Obj es Nada entonces
Salir Función Finalizar
si
if (no Obj.IsShortcut() y no Obj.HasAttribute("Stereotype"))
Entonces
Función de salida
Terminara si
' Caso específico de acceso directo, preguntar a su objeto de
destino
Si Obj.IsShortcut() Entonces
CompareStereotype = CompareStereotype(Obj.TargetObject,
tipo, valor)
Función de salida
Terminara si
Si Obj.IsKindOf(Tipo) Entonces
' Tipo de objeto correcto
Si Obj.Estereotipo = Valor Entonces
' Valor de estereotipo correcto
Comparar estereotipo = verdadero
Terminara si

26 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Terminara si
función final

' Esta función global copia el atributo estándar


' del origen al destino
Función Copiar (src, trgt)
trgt.name = src.name
trgt.code = src.code

Personalización y ampliación de PowerDesigner 27


CAPÍTULO 2: Archivos de extensión

trgt.comment = src.comment
trgt.description = src.description
trgt.annotation = src.annotation Dim
b, d
para cada b en src.AttachedRules
trgt.AttachedRules.insert -1,b siguiente
para cada d en src.RelatedDiagrams
trgt.RelatedDiagrams.insert -1,d
siguiente salida " "
salida trgt.Classname & " " & trgt.name & " ha sido creado." Salida
" " Función final

6. Repita estos pasos para crear un segundo cheque ingresando los siguientes valores:
Campo Valor

Nombre Enlace de límite a límite incorrecto

mensaje de ayuda Esta verificación garantiza que no se defina un


vínculo de instancia entre dos objetos de contorno.

mensaje de salida Los siguientes enlaces entre objetos de contorno


son incorrectos:

Gravedad Error
predeterminada
Ejecutar la [seleccionado]
verificación por
defecto
Campo Valor

Comprobar guión

28 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Función %Comprobar%(enlace)
' El retorno predeterminado es Verdadero
%Comprobar% = Verdadero

' El objeto debe ser un enlace de instancia


Si el enlace es Nada, entonces
Función de salida
Terminara si
Si no es link.IsKindOf(PdOOM.cls_InstanceLink) entonces
Función de salida
Terminara si

'Recuperar los extremos del enlace


Fuente tenue, horario de verano
Establecer src = enlace.ObjetoA
Establecer dst = enlace.ObjetoB

' Error si ambos extremos son objetos 'Límite' If


CompareStereotype(src, PdOOM.Cls_UMLObject, "Boundary")
Then
Si CompareStereotype(dst, PdOOM.Cls_UMLObject,
"Límite") Entonces
%Comprobar% = Falso
Terminara si
Terminara si
función final

7. Repita estos pasos para crear un tercer cheque ingresando los siguientes valores:
Campo Valor

Nombre Acceso incorrecto a la entidad

Mensaje de ayuda Esta comprobación garantiza que solo se acceda a


los objetos de entidad desde los objetos de control.

Mensaje de salida Los siguientes enlaces son incorrectos:

Gravedad Error
predeterminada
Ejecutar la [seleccionado]
verificación por
defecto

Campo Valor

Personalización y ampliación de PowerDesigner 29


CAPÍTULO 2: Archivos de extensión

Comprobar guión

Función %Comprobar%(enlace)
' El retorno predeterminado es Verdadero
%Comprobar% = Verdadero

' El objeto debe ser un enlace de instancia


Si el enlace es Nada, entonces
Función de salida
Terminara si
Si no es link.IsKindOf(PdOOM.cls_InstanceLink) entonces
Función de salida
Terminara si

'Recuperar los extremos del enlace


Fuente tenue, horario de verano
Establecer src = enlace.ObjetoA
Establecer dst = enlace.ObjetoB

' ¿La fuente es un objeto UML con el estereotipo


"Entidad"?
' Llamar a la función global CompareStereotype() definida
en el panel Global Script
Si CompareStereotype(src, PdOOM.Cls_UMLObject,
"Entidad") Entonces
' Comprobar si el destino es un objeto UML con estereotipo
"Control"
Si no es CompareStereotype(dst, PdOOM.Cls_UMLObject,
"Controlar") Entonces
%Comprobar% = Falso
Terminara si
ElseIf CompareStereotype(dst, PdOOM.Cls_UMLObject,
"Entidad") Entonces
' Comprobar si la fuente es un objeto UML con estereotipo
"Control"
Si no es CompareStereotype(src, PdOOM.Cls_UMLObject,
"Controlar") Entonces
%Comprobar% = Falso
Terminara si
Terminara si
función final

30 PowerDesigner
CAPÍTULO 2: Archivos de extensión

8. Haga clic en Aplicar para guardar los cambios antes de continuar.


Para obtener información detallada sobre la creación de cheques personalizados, consulte
Cheques personalizados (perfil) en la página 71.

Ejemplo: definición de plantillas para extraer descripciones de


mensajes
Vamos a generar una descripción textual de los mensajes en el diagrama, dando para cada
mensaje, los nombres del remitente, mensaje y receptor. Para hacerlo, necesitaremos definir
plantillas de lenguaje de plantilla de generación (GTL) de PowerDesigner para extraer la
información y un archivo generado para contener y mostrar la información extraída.
Para generar esta descripción textual, necesitaremos extraer información de la metaclase
Mensaje (para extraer el número de secuencia del mensaje, nombre, remitente y receptor) y
el Diagrama de comunicación (para recopilar todos los mensajes de cada diagrama y
ordenarlos)

1. Haga clic con el botón derecho en la categoría Perfil, seleccione Agregar metaclases para
abrir el cuadro de diálogo Selección de metaclases, seleccione Diagrama de
comunicación y Mensaje en la pestaña PdOOM y haga clic en Aceptar para agregarlos al
archivo de extensión.
2. Haga clic con el botón derecho en la categoría Mensaje y seleccione Nuevo > Plantilla
para crear una plantilla en la metaclase.
3. Ingrese la descripción en el campo Nombre y luego ingrese el siguiente código GTL en
el área de texto:
.set_value(_tabs, "", nuevo)

Personalización y ampliación de PowerDesigner 31


CAPÍTULO 2: Archivos de extensión
.foreach_part(%NúmeroSecuencia%, '.')
.set_value(_tabs, " %_tabs%")
.próximo
%_tabs%%SequenceNumber%) %Sender.ShortDescription% envía mensaje
"%Nombre%" a %Receptor.Descripción breve%
La primera línea de la plantilla inicializa la variable _tabs y la macro foreach_part calcula
una cantidad adecuada de sangría recorriendo cada número de secuencia y agregando 3
espacios cada vez que se encuentra un punto. La última línea usa esta variable para
sangrar, dar formato y mostrar la información extraída para cada mensaje.
4. Haga clic con el botón derecho en la categoría CommunicationDiagram y seleccione New
> Template para crear una plantilla en la metaclase.
5. Ingrese compareCbMsgSymbols en el campo Nombre y luego ingrese el siguiente código
GTL en el área de texto:
.bool (%Item1.Object.SequenceNumber% >=
%Item2.Object.SequenceNumber%)

Esta plantilla se resuelve en un valor booleano para determinar si un número de mensaje


es mayor que otro y el resultado se utilizará en una segunda plantilla.
6. Haga clic con el botón derecho en la categoría Diagrama de comunicación y seleccione
Nuevo > Plantilla para crear una segunda plantilla, ingrese una descripción en el campo
Nombre y luego ingrese el siguiente código GTL en el área de texto:
Escenario de colaboración %Name%:
\norte
.foreach_item(Símbolos,,, %TipoObjeto% ==
Símbolo de mensaje de colaboración, %compareCbMsgSymbols%)
%Descripción del objeto%
.siguiente(\n)

La primera línea de esta plantilla genera el título del escenario a partir del nombre del
diagrama de comunicación. Luego, la macro .foreach_item se repite en cada símbolo de
mensaje y llama a las otras plantillas para formatear y generar la información del
mensaje.

32 PowerDesigner
CAPÍTULO 2: Archivos de extensión

7. Haga clic en Aplicar para guardar los cambios antes de continuar.


Para obtener información detallada sobre plantillas y GTL, consulte Plantillas (perfil) en
la página 84 y el Capítulo 5, Personalización de la generación con GTL en la página 245.

Ejemplo: creación de un archivo generado para la información del


mensaje
Habiendo creado plantillas para extraer información sobre los mensajes en el modelo,
necesitamos crear un archivo generado para contenerlos y mostrarlos en la pestaña Vista
previa de la hoja de propiedades del diagrama. Definiremos el archivo en la metaclase
BasePackage, que es la clase común para todos los paquetes y modelos, y haremos que
recorra todos los diagramas de comunicación del modelo para evaluar la descripción de la
plantilla definida en la metaclase CommunicationDiagram.

1. Haga clic con el botón derecho en la categoría Perfil, seleccione Agregar metaclases para
abrir el cuadro de diálogo Selección de metaclases, haga clic en la herramienta Modificar
filtro de metaclases, seleccione Mostrar metaclases de modelado abstracto y haga clic en
la pestaña PdCommon.
2. Seleccione BasePackage y haga clic en Aceptar para agregarlo al archivo de extensión.
3. Haga clic con el botón derecho en la categoría Paquete base y seleccione Nuevo >
Archivo generado para crear un archivo en la metaclase.
4. Ingrese los siguientes valores para las propiedades del archivo:
Campo Valor

Nombre Comunicaciones Descripciones textuales

Personalización y ampliación de PowerDesigner 33


CAPÍTULO 2: Archivos de extensión

Nombre del %Name% Descripción de la comunicación.txt


archivo
Codificación ANSI

Usar jerarquía [no seleccionado]


de paquetes
como ruta de
archivo
5. Introduzca el siguiente código en el cuadro de texto:
.foreach_item(Diagramas de Colaboración)
%descripción%
.siguiente(\n\n)

6. Haga clic en Aplicar para guardar los cambios y luego en Aceptar para cerrar el editor de
recursos.
7. Haga clic en Aceptar para cerrar la Lista de extensiones.
Para obtener información detallada sobre la creación de archivos generados, consulte
Archivos generados (perfil) en la página 85.

Ejemplo: prueba de las extensiones de robustez


Para probar las extensiones que hemos creado, crearemos un pequeño diagrama de robustez
para analizar nuestro caso de uso.

1. Haga clic con el botón derecho en el nodo de su modelo en el navegador y seleccione


Nuevo > Comunicación
Diagrama.

34 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Además de la caja de herramientas estándar, se proporciona una caja de herramientas


personalizada con las herramientas que ha definido para crear objetos de límite, control
y entidad.
2. Arrastre el actor Cliente desde la categoría Actores en el Navegador al diagrama para
crear un acceso directo. Luego cree uno de cada uno de los objetos límite, control y
entidad, y
asígneles el nombre Navegador de Internet, Servidor de aplicaciones y Servidor de base
de datos, respectivamente.
3. Use la herramienta Vínculo de instancia en la Caja de herramientas estándar para conectar
el Cliente con el
Navegador de Internet al servidor de aplicaciones, al
servidor de base de datos.
4. Cree los siguientes mensajes en las pestañas Mensajes de las hojas de propiedades de los
enlaces de instancia:
Dirección Nombre del mensaje Secuencia
de números

Cliente - Navegador de Internet Consulta de valor de stock 1

Navegador de Internet - Servidor de Preguntar valor al servidor 2


aplicaciones de aplicaciones
Servidor de aplicaciones - Servidor de base Preguntar valor a db 3
de datos
Servidor de base de datos - Servidor de Valor de retorno de db 4
aplicaciones
Servidor de aplicaciones - Navegador de Valor de retorno del servidor 5
Internet de aplicaciones
Navegador de Internet - Cliente Valor de retorno 6

Personalización y ampliación de PowerDesigner 35


CAPÍTULO 2: Archivos de extensión

5. Seleccione Herramientas > Comprobar modelo para mostrar el cuadro de diálogo


Comprobar parámetros de modelo, en el que las comprobaciones personalizadas que
hemos creado aparecen en la categoría Vínculo de instancia:

Haga clic en Aceptar para probar la validez de los enlaces de instancia que hemos creado.
6. Haga clic con el botón derecho en el nodo del modelo en el navegador y seleccione
Propiedades para abrir la hoja de propiedades del modelo. Haga clic en la pestaña Vista
previa para revisar los mensajes enviados para nuestro caso de uso:

36 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Metaclases (Perfil)

Las metaclases se definen en el metamodelo de PowerDesigner y proporcionan la base para


sus extensiones. Agrega una metaclase a la categoría Perfil cuando desea extenderla de
alguna manera modificando su comportamiento, agregando nuevas propiedades, cambiando
su hoja de propiedades o símbolo, o incluso excluyéndola de sus modelos.
Puede hacer extensiones a un tipo de objeto existente o crear un tipo de objeto de modelado
completamente nuevo agregando la metaclase ExtendedObject, ExtendedSubObject o
ExtendedLink (consulte Objetos extendidos, subobjetos y enlaces (perfil) en la página 36).
En el siguiente ejemplo, FederationController es un tipo de objeto completamente nuevo
creado al agregar la metaclase ExtendedObject y definir un estereotipo en ella. Varias
especializaciones de la metaclase Table se definen a través de criterios y estereotipos:
Las extensiones se heredan, por lo que cualquier extensión realizada
en una metaclase está disponible para sus hijos estereotipados y
aquellos que están sujetos a criterios. Los diversos atributos
extendidos definidos en la metaclase de la tabla estarán disponibles
para las instancias de la tabla de acuerdo con las siguientes reglas:

• SecurityLevel - Todas las tablas.


• EncryptionKey: tablas para las que el
criterio de SecureTable se evalúa como
verdadero.
• ReplicationPath: tablas para las que
los criterios SecureTable y Replicated
se evalúan como verdaderos.
• ExternalLogin: tablas con el
estereotipo FederatedTable o
PriorityTable.
• Disponibilidad - Mesas con el
estereotipo PriorityTable.

Por ejemplo, una tabla con el estereotipo FederatedTable, y para la


cual los criterios de SecureTable se evalúan como verdaderos,
mostraría los atributos SecurityLevel, EncryptionKey y
ExternalLogin, mientras que una tabla con el estereotipo
PriorityTable, y para la cual los criterios de SecureTable y
Replicated se evalúan como true, mostraría estos atributos y,
además, los atributos ReplicationPath y Availability.
1. Haga clic con el botón derecho en la categoría Perfil y seleccione Agregar metaclases:

Personalización y ampliación de PowerDesigner 37


CAPÍTULO 2: Archivos de extensión

2. Seleccione una o más metaclases para agregar al perfil. Las subpestañas enumeran las
metaclases que pertenecen al módulo actual (por ejemplo, el OOM) y las metaclases
estándar que pertenecen al módulo PdCommon.

[opcional] Use la herramienta Modificar filtro de metaclase para mostrar:


• Todas las metaclases
• Metaclases concretas: para tipos de objetos que se pueden crear en un modelo, como
Clase o Interfaz.
• Metaclases abstractas, que nunca se instancian, pero se utilizan para definir
extensiones comunes. Por ejemplo, agregue la metaclase Classifier a su perfil para
definir extensiones que serán heredadas tanto por clases como por interfaces.

Nota:Para obtener información sobre cómo ver y navegar entre metaclases en el


metamodelo, consulte el Capítulo 8, El metamodelo público de PowerDesigner en la
página 343.

3. Haga clic en Aceptar para agregar las metaclases seleccionadas a su perfil:

38 PowerDesigner
CAPÍTULO 2: Archivos de extensión

4. [opcional] Introduzca las siguientes propiedades según corresponda:


Propiedad Descripción

Nombre [solo lectura] Especifica el nombre de la metaclase. Haga clic en el botón a


la derecha de este campo para abrir la Ayuda de Metamodel Objects para la
metaclase.
Padre [solo lectura] Especifica el padre de la metaclase. Haga clic en el botón a la
derecha de este campo para ir al principal. Si el padre no está presente en el
perfil, un mensaje lo invita a agregarlo.

Convención de [metaclases concretas en archivos de destino] Especifica el formato


nomenclatura de predeterminado para inicializar el script de conversión de nombre a código
códigos para las instancias de la metaclase. Están disponibles los siguientes formatos:
• firstLowerWord - Primera palabra en
minúsculas, luego otras primeras letras de
otras palabras en mayúsculas
• FirstUpperChar: primer carácter de todas
las palabras en mayúsculas
• lower_case - Todas las palabras en
minúsculas y separadas por un guión bajo

Personalización y ampliación de PowerDesigner 39


CAPÍTULO 2: Archivos de extensión

• UPPER_CASE: todas las palabras en


mayúsculas y separadas por un guión bajo
Para obtener más información sobre los scripts de conversión y las
convenciones de nomenclatura, consulteGuía de funciones principales >
Modelado con PowerDesigner > Objetos > Convenciones de
nomenclatura.

Propiedad Descripción

Caracteres [metaclases concretas en archivos de destino] Especifica una lista de


ilegales caracteres ilegales que no se pueden usar en la generación de código para la
metaclase. La lista debe ir entre comillas dobles, por ejemplo:

"/!=<>""'()"
Cuando se trabaja con un OOM, esta lista específica de objeto anula cualquier
valor especificado en la propiedad IllegalChar para el idioma del objeto
(verConfiguración Categoría: Lenguaje de objetos en la página 110).

Habilitar la Especifica que las instancias de la metaclase aparecerán en la pestaña


selección en la Selección del cuadro de diálogo de generación extendida.
generación de
archivos
Excluir del [solo metaclases concretas] Impide la creación de instancias de la metaclase
modelo y elimina todas las referencias a la metaclase de los menús, la caja de
herramientas, las hojas de propiedades, etc., para simplificar la interfaz. Por
ejemplo, si no usa reglas comerciales, seleccione esta casilla de verificación
para que la metaclase BusinessRule las oculte en sus modelos.
Cuando se adjuntan varios archivos de recursos a un modelo, la metaclase
se excluye si al menos un archivo la excluye y los demás no la habilitan
explícitamente. Para los modelos que ya tienen instancias de esta metaclase,
los objetos se conservarán pero no será posible crear nuevos.

Comentario Documenta el motivo de la presencia de la metaclase en este perfil.

Objetos extendidos, subobjetos y enlaces (perfil)


Los objetos extendidos, los subobjetos y los enlaces son metaclases especiales que están
diseñadas para permitirle agregar tipos de objetos completamente nuevos a sus modelos, en
lugar de basarlos en objetos de PowerDesigner existentes. Estos objetos no aparecen, de
manera predeterminada, en modelos que no sean el modelo gratuito, a menos que los agregue
a una extensión u otro archivo de recursos.

40 PowerDesigner
CAPÍTULO 2: Archivos de extensión

• Objetos extendidos: defina nuevos tipos de objetos que se pueden crear en cualquier
lugar.
• Subobjetos extendidos: defina nuevos tipos de objetos secundarios que solo se pueden
crear en la hoja de propiedades de su elemento principal a través de una composición
extendida (consulte Colecciones y composiciones extendidas (perfil) en la página 48).
• Enlaces extendidos: defina nuevos tipos de enlaces entre objetos.

1. Haga clic con el botón derecho en la categoría Perfil, seleccione Agregar metaclases y
haga clic en la subpestaña PdCommon en el cuadro de diálogo para mostrar la lista de
objetos comunes a todos los modelos.
2. Seleccione uno o más de ExtendedLink, ExtendedSubObject y ExtendedObject y haga
clic en Aceptar para agregarlos a su perfil.

Nota:Para que las herramientas para crear objetos extendidos y enlaces extendidos estén
disponibles en la Caja de herramientas de modelos que no sean el modelo libre, debe
agregarlos a través del cuadro de diálogo de personalización disponible en Herramientas
> Personalizar menús y herramientas.

3. [opcional] Para crear su propio objeto, agregue un estereotipo (consulte Estereotipos


(perfil) en la página 37 y defina las extensiones apropiadas debajo del estereotipo. Para
que su objeto aparezca en la interfaz de PowerDesigner como una metaclase estándar,
con su propia herramienta, categoría de navegador y lista de modelos, seleccione Usar
como metaclase en la definición del estereotipo (consulte Promoción de un estereotipo al
estado de metaclase en la página 39).
4. Haga clic en Aplicar para guardar los cambios.

Estereotipos (Perfil)

Los estereotipos subclasifican las metaclases para que las extensiones se apliquen a los
objetos solo si llevan el estereotipo. Los estereotipos se pueden promover al estado de
metaclases con una lista específica, una categoría de navegador y un símbolo personalizado
y una herramienta de caja de herramientas.

Nota:Puede definir más de un estereotipo para una metaclase dada, pero solo puede aplicar
un único estereotipo a cada instancia. Al igual que otras extensiones, los estereotipos admiten
la herencia, por lo que los estereotipos secundarios heredan las extensiones de un estereotipo
principal.

Personalización y ampliación de PowerDesigner 41


CAPÍTULO 2: Archivos de extensión

1. Haga clic con el botón derecho en una metaclase, criterio o estereotipo y seleccione
Nuevo > Estereotipo.
2. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica el nombre interno del estereotipo, que se utiliza para las secuencias
de comandos.
Etiqueta Especifica el nombre para mostrar del estereotipo, que aparecerá en la interfaz
de PowerDesigner.

Padre Especifica un estereotipo principal del estereotipo. Puede seleccionar un


estereotipo definido en la misma metaclase o en una metaclase principal. Haga
clic en el botón Propiedades para ir al estereotipo principal en el árbol y mostrar
sus propiedades.
Abstracto Especifica que el estereotipo no se puede aplicar a las instancias de la metaclase.
El estereotipo no aparecerá en la lista de estereotipos en la hoja de propiedades
del objeto y solo se puede usar como padre de otros estereotipos secundarios.
Deshabilita la propiedad Usar como metaclase.

Usar como Promueve el estereotipo al mismo estado que las metaclases estándar de
metaclase PowerDesigner, para darle su propia lista de objetos, categoría de navegador y
su propia pestaña en cuadros de selección de varios paneles, como los que se
utilizan para la generación (verPromoción de un estereotipo al estado de
metaclaseen la página 39).
Sin símbolo [disponible cuando se selecciona Usar como metaclase] Especifica que las
instancias de la metaclase estereotipada no se pueden mostrar en un diagrama y
solo son visibles en el navegador. Deshabilita la herramienta personalizada Caja
de herramientas.

Propiedad Descripción

Icono Especifica un icono para instancias estereotipadas de la metaclase. Haga clic


en las herramientas a la derecha de este campo para buscar archivos .cur o .ico.

Nota:El icono se utiliza para identificar objetos en el Navegador y en otras


partes de la interfaz, pero no como un símbolo de diagrama. Para especificar
un símbolo de diagrama personalizado, consulteSímbolos personalizados
(perfil)en la página 70.

42 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Herramienta [disponible para objetos que admiten símbolos] Especifica una herramienta de
personalizada Caja de herramientas que le permite crear objetos en un diagrama. Si no
de la caja de selecciona esta opción, los usuarios solo podrán crear objetos con el
herramientas estereotipo desde el menú Explorador o Modelo. Las herramientas
personalizadas aparecen en un grupo de Caja de herramientas separado que
lleva el nombre del archivo de recursos en el que están definidas.
Nota:Si no ha especificado un icono, la herramienta utilizará un icono de
martillo de forma predeterminada.
etiqueta plural [disponible cuando se selecciona Usar como metaclase] Especifica la forma
plural del nombre para mostrar que aparecerá en la interfaz de
PowerDesigner.
Nombre [disponible cuando se selecciona Usar como metaclase o Herramienta
predeterminad personalizada de Toolbox] Especifica un nombre predeterminado para los
o objetos creados. Se agregará automáticamente un contador al nombre
especificado para generar nombres únicos.
Un nombre predeterminado puede ser útil cuando se diseña para un idioma de
destino o una aplicación con convenciones de nomenclatura estrictas. Tenga
en cuenta que el nombre predeterminado no prevalece sobre las convenciones
de nomenclatura del modelo, por lo que si un nombre no es correcto, se
modifica automáticamente.
Comentario Proporciona una descripción o información adicional sobre el estereotipo.

Personalización y ampliación de PowerDesigner 43


CAPÍTULO 2: Archivos de extensión

Promoción de un estereotipo al estado de metaclase


Puede crear nuevos tipos de objetos que se comporten como metaclases estándar de
PowerDesigner seleccionando Usar como metaclase en la página de propiedades del
estereotipo.
Puede utilizar tales estereotipos para:
• Cree nuevos tipos de objetos que compartan gran parte del comportamiento de un tipo de
objeto existente, como transacciones comerciales y colaboraciones binarias en un BPM
para ebXML.
• Tener objetos con nombres idénticos pero diferentes estereotipos en el mismo espacio de
nombres (un estereotipo de metaclase crea un subespacio de nombres en la metaclase
actual).

Nota:Los estereotipos definidos en subobjetos (como columnas de tabla o atributos de


entidad) no se pueden promover al estado de metaclase.

1. En la página de propiedades de Estereotipo, seleccione Usar como metaclase.


2. [opcional] Especifique un icono y una herramienta para crear instancias del estereotipo
de la metaclase.
3. Haga clic en Aplicar para guardar los cambios y luego agregue atributos extendidos y
otras extensiones apropiadas bajo el estereotipo.
En su modelo, los estereotipos tienen:
• Una lista separada en el menú Modelo después de la lista de metaclases principal (y
la lista de metaclases principal no mostrará objetos con el estereotipo de metaclase).
Objetos creados
en la nueva lista llevan el estereotipo de la nueva metaclase por defecto. Si cambia el
estereotipo, el objeto se eliminará de la lista la próxima vez que se abra.
• Una carpeta del navegador y un comando independientes en Nuevo, al hacer clic con
el botón derecho en el modelo o paquete.
• Títulos de hojas de propiedades basados en la etiqueta de la metaclase.
• Su propia pestaña en cuadros de selección de varios paneles, como los que se utilizan
para la generación.

Criterios (Perfil)

Los criterios subclasifican las metaclases para que las extensiones se apliquen a los objetos
solo si cumplen las condiciones. Puede probar una instancia de objeto con varios criterios y,

44 PowerDesigner
CAPÍTULO 2: Archivos de extensión

para los subcriterios, se deben cumplir su condición y las condiciones especificadas por sus
padres para que sus extensiones se apliquen a la instancia.

1. Haga clic con el botón derecho en una metaclase y seleccione Nuevo > Criterio.
2. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica el nombre del criterio.

Condición Especifica la condición que deben cumplir las instancias para acceder a las
extensiones de criterio. Puede utilizar cualquier expresión válida para la macro
PowerDesigner GTL .if (ver.si Macroen la página 275). Puede hacer referencia
a cualquier atributo extendido definido en el nivel de la metaclase en la
condición, pero no a los definidos en el criterio mismo.
Por ejemplo, en un PDM, puede personalizar los símbolos de las tablas de hechos
creando un criterio que probará el tipo de tabla usando la siguiente condición:

(%TipoDimensional% == "1")
%DimensionalType% es un atributo del objeto
BaseTable, que tiene un conjunto de valores
definidos, incluido "1", que corresponde a
"hecho". Para obtener más información, seleccione
Ayuda > Ayuda de objetos de metamodelo y vaya a
Bibliotecas > PdPDM > Clases abstractas > Tabla
base.
Padre Especifica el criterio principal del criterio. Para mover el criterio debajo de otro
padre, seleccione el padre en la lista. Haga clic en la herramienta Propiedades
para abrir el padre y ver sus propiedades.

Comentario Especifica información adicional sobre el criterio.

Personalización y ampliación de PowerDesigner 45


CAPÍTULO 2: Archivos de extensión

3. Haga clic en Aplicar para guardar sus cambios.

Atributos extendidos (perfil)

Los atributos extendidos definen metadatos adicionales para capturar para instancias de
objetos. Puede especificar un valor predeterminado, permitir que los usuarios ingresen
libremente datos numéricos, de cadena u otros tipos de datos (o seleccionar objetos),
proporcionar una lista abierta o cerrada de valores posibles o calcular un valor.

Nota:Los atributos extendidos se enumeran en una pestaña genérica de atributos extendidos


en la hoja de propiedades del objeto, a menos que los inserte en formularios (consulte
Formularios (perfil) en la página 55). Si todos los atributos extendidos se asignan a
formularios, la página genérica no se mostrará.

1. Haga clic con el botón derecho en una metaclase, estereotipo o criterio en la categoría
Perfil y seleccione Nuevo > Atributo extendido.
2. Especifique las siguientes propiedades según corresponda:

46 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Propiedad Descripción

Nombre Especifica el nombre interno del atributo, que se puede utilizar para
secuencias de comandos.
Etiqueta Especifica el nombre para mostrar del atributo, que aparecerá en la interfaz
de PowerDesigner.

Propiedad Descripción

Comentario Proporciona información adicional sobre el atributo extendido.

Tipo de datos Especifica la forma de los datos que debe contener el atributo extendido. Puedes
elegir entre:
• Booleano - VERDADERO o Falso.
• Color: xxx xxx xxx donde x es un número entero entre 0 y 255.
• Fecha u Hora: su formato local como se especifica en la configuración
regional de Windows
• Archivo o ruta: no puede contener /// ni ninguno de los siguientes
caracteres: ?"<>|.
• Entero o Flotante: el formato local apropiado.
• Hexadecimal - un hexadecimal.
• Fuente: nombre de fuente, tipo de fuente, tamaño de fuente.
• Nombre de fuente o estilo de fuente: una cadena de 1 a 50 caracteres.
• Tamaño de fuente: un número entero entre 1 y 400.
• Objeto: un objeto del tipo correcto y, si corresponde, con el estereotipo
correcto. Al seleccionar este tipo, debe especificar un tipo de Objeto y, si
corresponde, un estereotipo de Objeto, y también puede especificar un
nombre de colección Inverso (verVinculación de objetos a través de
atributos extendidosen la página 48).
• Contraseña - sin restricciones.
• Cadena (línea única) o Texto (líneas múltiples): sin restricciones.
Seleccione la casilla de verificación Validar a la derecha de la lista para aplicar
la validación de los valores ingresados para el atributo.
Para crear su propio tipo de datos, haga clic en la herramienta Crear tipo de
atributo extendido a la derecha del campo (verCrear un tipo de atributo
extendidoen la página 45).

Personalización y ampliación de PowerDesigner 47


CAPÍTULO 2: Archivos de extensión

calculado Especifica que el atributo extendido se calcula a partir de otros valores


mediante VBScript en las pestañas Obtener script de método, Establecer script
de método y Script global. Al seleccionar esta casilla de verificación, debe
elegir entre:
• Lectura/escritura (métodos Get+Set)
• Solo lectura (método Obtener)
En la siguiente secuencia de comandos de ejemplo, el atributo extendido
calculado del grupo de archivos obtiene su valor y establece el valor de la
opción física del grupo de archivos del objeto:
Función %Get%(obj)
%Get% = obj.GetPhysicalOptionValue("on/<grupo de
archivos>")
función final

Sub %Conjunto%(obj, valor)


obj.SetPhysicalOptionValue "on/<grupo de archivos>",
valor End Sub

Propiedad Descripción

Valor por [si no se calcula] Especifica un valor predeterminado para el atributo. Puede
defecto especificar el valor de cualquiera de las siguientes maneras:
• Introduzca el valor directamente en la lista.
• [tipos de datos predefinidos] Haga clic en el botón Puntos suspensivos
para abrir un cuadro de diálogo que enumera los valores posibles. Por
ejemplo, si el tipo de datos se establece en Color, el botón Puntos
suspensivos abre una ventana de paleta.
• [tipos de datos definidos por el usuario] Seleccione un valor de la lista.
Plantilla [si no se calcula] Especifica que el valor del atributo se evaluará como una
plantilla GTL en el momento de la generación. Por ejemplo, si el valor del
atributo se establece en %Código%, se generará como el valor del atributo de
código del objeto relevante.
De forma predeterminada (cuando esta casilla de verificación no está
seleccionada), el atributo se evalúa literalmente y se generará un valor de
%Código% como la cadena %Código%.

48 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Lista de Especifica una lista de valores posibles para el atributo de una de las
valores siguientes maneras:
• Introduzca una lista estática de valores delimitados por punto y coma
directamente en el campo.
• Utilice las herramientas a la derecha de la lista para crear o seleccionar
una plantilla GTL para generar la lista dinámicamente.
Si el tipo de atributo es Objeto y no desea filtrar la lista de objetos
disponibles de ninguna manera, puede dejar este campo en blanco.
Para realizar un filtro simple de la lista de objetos, use la macro .collection
(verMacros .objeto y .colecciónen la página 278). En el siguiente
ejemplo, solo las tablas con el atributo Generado establecido en verdadero
estarán disponibles para su selección:
.colección(Modelo.Tablas, %Generado%==verdadero)
Para un filtrado más complejo, utilice la macro foreach_item
(consulteMacro .foreach_itemen la página 271):

.foreach_item (Modelo.Tablas)
.if %Generado%
.// (o criterios más complejos)
%IDObjeto%
.terminara si
.siguiente (\n)
Si el atributo se basa en un tipo de atributo ampliado (consulteCrear un tipo de
atributo extendidoen la página 45), este campo no está disponible ya que se
utilizarán los valores del tipo de atributo ampliado.

Completo Especifica que todos los valores posibles para el atributo se definen en la Lista
de valores y que el usuario no puede ingresar ningún otro valor.

Propiedad Descripción

Editar método [si no está completo] Especifica un método para anular la acción
predeterminada asociada con la herramienta a la derecha del campo.
Este método se usa a menudo para aplicar un filtro definido en el campo Lista
de valores en el selector de objetos. En el siguiente ejemplo, solo las tablas con
el atributo Generado establecido en verdadero estarán disponibles para su
selección:

Personalización y ampliación de PowerDesigner 49


CAPÍTULO 2: Archivos de extensión

Sub %Método%(obj)

Mdl tenue
Establecer Mdl = obj.Modelo

Sel tenue
Establecer Sel = Mdl.CreateSelection

Si no (Sel es nada) Entonces


mesa tenue
Para cada tabla en Mdl.Tables si
table.generated luego
Sel.Objects.Add table
terminar si
Siguiente

' Mostrar el selector de objetos en la selección Dim


selObj
establecer selObj = Sel.ShowObjectPicker
Si no (selObj es Nada) Entonces
obj.SetExtendedAttribute "Almacenamiento para cada
uno", selObj End If

Sel.Borrar
Terminara si

Finalizar sub

conjunto de Especifica un conjunto de iconos para mostrar en símbolos de objetos en lugar


iconos de valores de atributos extendidos (consulteEspecificación de iconos para
valores de atributoen la página 46).
Formato de [solo para tipos de datos de texto] Especifica el idioma contenido en el
texto atributo de texto. Si selecciona cualquier valor que no sea Texto sin formato,
se proporcionará una barra de herramientas del editor y (cuando corresponda)
colores de sintaxis en los campos de formulario asociados.

Tipo de objeto [solo para tipos de datos de objeto] Especifica el tipo de objeto que contiene el
atributo (por ejemplo, Usuario, Tabla, Clase).

Estereotipo de [solo para tipos de datos de objeto] Especifica el estereotipo que deben tener
objeto los objetos de este tipo para poder seleccionarlos.

Propiedad Descripción

50 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Nombre de [solo para tipos de datos de objeto, si no se calculan] Especifica el nombre con
colección el que se enumerarán los enlaces al objeto en la pestaña Dependencias del
inversa objeto de destino.
Una colección extendida con el mismo nombre que el atributo extendido, que
maneja estos enlaces, se crea automáticamente para todos los atributos
extendidos no calculados del tipo Objeto y se elimina cuando elimina el
atributo extendido, cambia su tipo o selecciona el atributo Calculado. caja.

Opción física [solo para tipos de datos [Opción física]] Especifica la opción física con la que
está asociado el atributo. Haga clic en los puntos suspensivos a la derecha de
este campo para seleccionar una opción física. Para más información,
verAdición de opciones físicas de DBMS a sus formulariosen la página 210.

3. Haga clic en Aplicar para guardar sus cambios.

Crear un tipo de atributo extendido


Puede crear tipos de atributos ampliados para definir el tipo de datos y los valores
autorizados de los atributos ampliados. La creación de tipos de atributos extendidos le
permite reutilizar la misma lista de valores para varios atributos extendidos sin tener que
escribir código.

1. Haga clic con el botón derecho en la categoría Perfil\Compartido y seleccione Nuevo >
Tipo de atributo extendido.
2. Ingrese las propiedades apropiadas, incluida una lista de valores y un valor
predeterminado.

Personalización y ampliación de PowerDesigner 51


CAPÍTULO 2: Archivos de extensión

3. Haga clic en Aplicar para guardar sus cambios.


El nuevo tipo compartido está disponible para cualquier atributo ampliado en el campo
Tipo de datos. También puede definir una lista de valores para un atributo ampliado
determinado directamente en este campo (consulte Atributos ampliados (perfil) en la
página 41).

Especificación de iconos para valores de atributo


Puede especificar iconos para que se muestren en símbolos de objetos en lugar de valores de
atributos extendidos creando un conjunto de iconos de atributos con iconos de valores de
atributos individuales para cada valor posible.

1. Cree un atributo extendido (consulte Atributos extendidos (perfil) en la página 41).


2. Seleccione un tipo de datos estándar o un tipo de atributo extendido (consulte Creación
de un tipo de atributo extendido en la página 45).
3. Si corresponde, especifique una lista de valores posibles y un valor predeterminado.
4. Haga clic en la herramienta Crear a la derecha de la lista Conjunto de iconos para crear
un nuevo conjunto de iconos.
Se crea un nuevo conjunto de iconos en Perfil > Compartido > Conjuntos de iconos de
atributos inicializados con los valores posibles y un icono vacío que coincide con
cualquier valor para el que no se haya definido otro icono (=*).

52 PowerDesigner
CAPÍTULO 2: Archivos de extensión

5. Para cada valor de la lista, haga doble clic en él y haga clic en la herramienta Icono para
seleccionar un icono para representar este valor en los símbolos de objetos:

Nota:De forma predeterminada, el campo del operador de filtro se establece en = y cada


icono coincide exactamente con un valor posible. Para que un único icono coincida con
varios valores, utilice Entre u otro operador junto con un valor de Filtro adecuado. Por
ejemplo, en un conjunto de íconos emparejado con un atributo de progreso para el cual
el usuario puede ingresar cualquier valor entre 0 y 100 % de progreso, podría usar tres
íconos:
• No iniciado - = 0
• En Progreso - Entre 1,99
• Completado - = 100

6. Si corresponde, agregue el atributo a un formulario (consulte Formularios (perfil) en la


página 55) para permitir que los usuarios modifiquen su valor.
7. Haga clic en Aceptar para guardar los cambios y volver al modelo.
8. Para habilitar la visualización del icono en el símbolo de su objeto, seleccione
Herramientas > Preferencias de visualización, seleccione su tipo de objeto y haga clic en
el botón Avanzado para agregar su atributo al símbolo. Para obtener información
detallada sobre cómo trabajar con preferencias de visualización, consulte Guía de
funciones principales > Modelado con PowerDesigner > Diagramas, matrices y símbolos
> Preferencias de visualización.
Su atributo ahora se muestra en los símbolos de los objetos. En el siguiente ejemplo, el

Personalización y ampliación de PowerDesigner 53


CAPÍTULO 2: Archivos de extensión
La entidad Empleado está En curso, mientras que la entidad
Cliente está Completada:

Vinculación de objetos a través de atributos extendidos


Especifique el tipo de datos [Objeto] para permitir que los usuarios seleccionen otro objeto
como el valor del atributo. Debe especificar un tipo de objeto (metaclase) para vincular y,
opcionalmente, puede especificar un estereotipo de objeto para filtrar los objetos disponibles
para la selección y un nombre de colección inversa, que se mostrará en la pestaña
Dependencias en la hoja de propiedades del objeto al que se hace referencia.
Por ejemplo, en la metaclase Tabla, creo un atributo extendido llamado Propietario,
selecciono [Objeto] en el campo Tipo de datos y Usuario en el campo Tipo de objeto. Nombro
la colección inversa Tables own. Cuando configuro la propiedad Propietario de una tabla, la
tabla aparecerá en la pestaña Dependencias de la hoja de propiedades del usuario, bajo el
nombre de colección inversa de
Mesas en propiedad.

Colecciones y Composiciones Extendidas (Perfil)

Las colecciones extendidas definen la posibilidad de asociar una instancia de objeto con un
grupo de otros objetos del tipo especificado. Las composiciones extendidas definen una
conexión padre-hijo entre una instancia de objeto y un grupo de subobjetos derivados de la
metaclase ExtendedSubObject.
Para las colecciones extendidas, la asociación entre los objetos principal y secundario es
relativamente débil, de modo que si copia o mueve el objeto principal, los objetos
relacionados no se copian ni mueven, pero se mantiene la conexión (usando accesos directos
si es necesario). Por ejemplo, podría asociar documentos que contengan especificaciones de
casos de uso con los diferentes paquetes de un modelo creando una colección extendida en
la metaclase Package y especificando FileObject como la metaclase de destino.
Para composiciones extendidas, la asociación es más fuerte. Los subobjetos solo se pueden
crear dentro del objeto principal y se mueven, copian y/o eliminan junto con su objeto
principal.

54 PowerDesigner
CAPÍTULO 2: Archivos de extensión

La colección o composición se muestra como una nueva pestaña en la hoja de propiedades


de la instancia del objeto. Las hojas de propiedades de los objetos a los que se hace referencia
en una colección muestran la instancia del objeto que posee la colección en su pestaña
Dependencias.

1. Haga clic con el botón derecho en una metaclase, estereotipo o criterio y seleccione
Nuevo > Colección extendida o Composición extendida.

Nota:Si define la colección o composición bajo un estereotipo o criterio, su pestaña se


muestra solo si la instancia de metaclase lleva el estereotipo o cumple con el criterio.

2. Introduzca las siguientes propiedades según corresponda:


Propiedad Descripción

Nombre Especifica el nombre de la colección o composición extendida.

Etiqueta Especifica el nombre para mostrar de la colección, que aparecerá como el


nombre de la pestaña asociada con la colección en la hoja de propiedades del
objeto principal.
Comentario [opcional] Describe la colección ampliada.

Inverso [solo colección extendida] Especifica el nombre que aparecerá en la pestaña


Nombre Dependencias de la metaclase de destino. Si no ingresa un valor, se genera
automáticamente un nombre inverso.

Tipo de Especifica la metaclase cuyas instancias aparecerán en la colección.


objetivo
Para colecciones extendidas, la lista muestra solo las metaclases que se pueden
instanciar directamente en el modelo o paquete actual, como clases o tablas, y
no subobjetos como atributos de clase o columnas de tablas. Haga clic en la
herramienta Seleccionar una metaclase a la derecha de este campo para elegir
una metaclase de otro tipo de modelo.
Para composiciones extendidas, solo el ExtendedSubObject está disponible y
debe especificar un estereotipo para él.
Estereotipo [requerido para composiciones extendidas] Especifica un estereotipo para filtrar
objetivo el tipo de destino. Puede seleccionar un estereotipo existente de la lista o hacer
clic en la herramienta Crear a la derecha de este campo para crear uno nuevo.

Lista Col- Especifica las columnas de propiedades que se mostrarán de forma


umnas predeterminada en la pestaña de la hoja de propiedades del objeto principal
asociada con la colección. Haga clic en la herramienta Personalizar columnas
predeterminadas a la derecha de este campo para agregar o eliminar columnas.
3. Haga clic en Aplicar para guardar sus cambios.

Personalización y ampliación de PowerDesigner 55


CAPÍTULO 2: Archivos de extensión

Puede ver la pestaña asociada con la colección abriendo la hoja de propiedades de una
instancia de metaclase. La pestaña contiene una herramienta Agregar objetos (y, si la
metaclase pertenece al mismo tipo de modelo, Crear un objeto), para completar la
colección.

Nota:Cuando abre un modelo que contiene colecciones o composiciones extendidas y lo


asocia con un archivo de recursos que no las admite, las colecciones aún están visibles
en las diferentes hojas de propiedades para permitirle eliminar objetos en las colecciones
que ya no son compatibles.

Colecciones calculadas (perfil)

Las colecciones calculadas definen una conexión de solo lectura entre una instancia de objeto
y un grupo de otros objetos del tipo especificado. La lógica de la colección se define mediante
VBScript.
El usuario no puede modificar las colecciones calculadas, a diferencia de las colecciones
extendidas (consulte Colecciones y composiciones extendidas (perfil) en la página 48).
Puede crear colecciones calculadas para:

56 PowerDesigner
CAPÍTULO 2: Archivos de extensión

• Mostrar dependencias definidas por el usuario para un objeto seleccionado. La colección


calculada se muestra en la pestaña Dependencias de la hoja de propiedades del objeto.
• Ajuste el análisis de impacto creando sus propias colecciones calculadas para poder
evaluar mejor el impacto de un cambio. Por ejemplo, en un modelo donde las columnas
y los dominios pueden divergir, puede crear una colección calculada en la metaclase del
dominio que enumere todas las columnas que usan el dominio y tienen el mismo tipo de
datos.
• Mejora tus informes. Puede arrastrar y soltar cualquier libro o elemento de lista debajo
de cualquier otro libro de informes y modificar su colección predeterminada para
documentar un aspecto específico del modelo (consulte la Guía de funciones principales
> Almacenamiento, uso compartido e informes en modelos > Informes > El editor de
informes > Adición de elementos a un informe > Modificación de la colección de un
elemento).
• Mejore la generación de GTL ya que puede realizar un bucle en colecciones calculadas
definidas por el usuario.
Por ejemplo, en un OOM, es posible que necesite crear una lista de diagramas de secuencia
utilizando una operación y puede crear una colección calculada en la metaclase de operación
que recupera esta información. En un BPM, podría crear una colección calculada en la
metaclase del proceso que enumere las entidades CDM creadas a partir de los datos asociados
con el proceso.

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio y seleccione
Nuevo > Colección calculada.
2. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica el nombre de la colección calculada para usar en scripts.

Etiqueta Especifica el nombre para mostrar de la colección, que aparecerá como el


nombre de la pestaña asociada con la colección en la hoja de propiedades del
objeto principal.
Comentario [opcional] Describe la colección calculada.

Tipo de Especifica la metaclase cuyas instancias aparecerán en la colección. La lista


objetivo muestra solo metaclases que se pueden instanciar directamente en el modelo
o paquete actual, como clases o tablas, y no subobjetos como atributos de
clase o columnas de tablas.
Haga clic en la herramienta Seleccionar una metaclase a la derecha de este
campo para elegir una metaclase de otro tipo de modelo.

Estereotipo [opcional] Especifica un estereotipo para filtrar el tipo de objetivo. Puede


objetivo seleccionar un estereotipo existente de la lista o ingresar uno nuevo.

Personalización y ampliación de PowerDesigner 57


CAPÍTULO 2: Archivos de extensión

Columnas de Especifica las columnas que se muestran de forma predeterminada en la


lista pestaña de la hoja de propiedades de la colección.

3. Haga clic en la pestaña Script de colección calculado e ingrese un script que calculará
qué objetos formarán la colección.
Si corresponde, puede reutilizar funciones en la pestaña Global Script, que se usa para
compartir funciones de biblioteca y atributos estáticos en el archivo de recursos. Puede
declarar variables globales en esta pestaña, pero debe tener en cuenta que no se
reinicializarán cada vez que se calcule la colección y mantendrán su valor hasta que
modifique el archivo de recursos o finalice la sesión de PowerDesigner. Esto puede
causar errores, especialmente cuando las variables hacen referencia a objetos que se
pueden modificar o eliminar. Asegúrese de reinicializar la variable global si no desea
conservar el valor de una ejecución anterior.
Para obtener más información sobre la definición de un script y el uso de la pestaña
Global Script, consulte Ejemplo: Comprobación personalizada de PDM en la página 73
y Global Script (perfil) en la página 105.
4. Haga clic en Aplicar para guardar sus cambios.

Puede ver la pestaña asociada con la colección abriendo la hoja de propiedades de una
instancia de metaclase.

58 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Matrices de Dependencia (Perfil)

Las matrices de dependencia le permiten revisar y crear vínculos entre cualquier tipo de
objetos. Especifique una metaclase para las filas de la matriz y la misma u otra metaclase
para las columnas. A continuación, el contenido de las celdas se calcula a partir de un objeto
de enlace o colección.
Por ejemplo, podría crear matrices de dependencia que muestren vínculos entre:
• Clases OOM y clases: conectadas por objetos de enlace de asociación
• Tablas y usuarios de PDM: conectados por la colección Owner

• Tablas PDM y Clases OOM: conectadas por dependencias extendidas

1. Haga clic con el botón derecho en la categoría Perfil y seleccione Agregar matriz de
dependencia para agregar la metaclase DependencyMatrix al perfil y crear un estereotipo
debajo de él, en el que definirá las propiedades de la matriz.
2. En la pestaña General, ingrese un nombre para la matriz (por ejemplo, Matriz de
propietarios de tablas) junto con una etiqueta y una etiqueta plural para usar en la interfaz
de PowerDesigner, así como un nombre predeterminado para las matrices que los
usuarios crearán en función de esta definición.
3. Haga clic en la pestaña Definición para especificar las filas y columnas de su matriz y
cómo se asocian usando las siguientes propiedades.
Propiedad Descripción

filas Especifica el tipo de objeto con el que rellenar las filas de la matriz.

columnas Especifica el tipo de objeto con el que rellenar las columnas de su matriz. Haga
clic en el botón Seleccionar metaclase a la derecha de la lista para seleccionar
una metaclase de otro tipo de modelo.

Personalización y ampliación de PowerDesigner 59


CAPÍTULO 2: Archivos de extensión

Células de Especifica cómo se asociarán las filas y columnas de su matriz. Debe especificar
matriz una Dependencia de la lista, que incluye todas las colecciones y enlaces
disponibles para el objeto.
Haga clic en el botón Crear a la derecha de la lista para crear una nueva colección
extendida (verColecciones y Composiciones Extendidas (Perfil)en la página
48) conectando sus objetos, o el botón Avanzado para especificar una ruta de
dependencia compleja (verEspecificación de dependencias avanzadasen la
página 54).
Para ciertas dependencias, se mostrará el tipo de objeto en el que se basa la
dependencia, y puede seleccionar un atributo de objeto para mostrar en las celdas
de la matriz junto con el símbolo Sin valor, que se muestra si ese atributo no está
configurado en una instancia particular. .

4. Haga clic en Aceptar para guardar su matriz y cerrar el editor de recursos.


Ahora puede crear instancias de la matriz en su modelo de la siguiente manera:
• Seleccione Ver > Diagrama > Nuevo diagrama > Nombre de matriz.
• Haga clic con el botón derecho en el fondo de un diagrama y seleccione Diagrama >
Nuevo diagrama > Nombre de matriz.
• Haga clic con el botón derecho en el modelo en el navegador y seleccione Nuevo >
Nombre de matriz.

60 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Nota:Para obtener información sobre el uso de matrices de dependencia, consulte Guía


de funciones principales > Modelado con PowerDesigner > Diagramas, matrices y
símbolos > Matrices de dependencia.

Especificación de dependencias avanzadas


Puede examinar las dependencias entre dos tipos de objetos que no están directamente
asociados entre sí mediante el cuadro de diálogo Definición de ruta de dependencia, al que
se accede haciendo clic en el botón Avanzado en la pestaña Definición, y que le permite
especificar una ruta que pasa por tantos objetos de enlace intermedios según sea necesario.
Cada línea de este cuadro de diálogo representa un paso en una ruta de dependencia:
Propiedad Descripción

Nombre Especifica un nombre para la ruta de dependencia. De forma predeterminada, este


campo se completa con los tipos de objeto de origen y destino.

Dependencia Especifica la dependencia de este paso en la ruta. La lista se completa con todas
las dependencias posibles para el tipo de objeto anterior.

Tipo de objeto Especifica el tipo de objeto específico que está vinculado al tipo de objeto anterior
por la dependencia seleccionada. Este campo se rellena automáticamente si solo
hay un tipo de objeto disponible a través de la dependencia seleccionada.

En el siguiente ejemplo, se identifica una ruta entre funciones comerciales y roles, pasando
de la función comercial a través de los procesos que contiene, al rol vinculado a ella por una
asociación de roles:

Personalización y ampliación de PowerDesigner 61


CAPÍTULO 2: Archivos de extensión

Formularios (Perfil)

Los formularios presentan atributos y colecciones estándar y extendidos como fichas de


hojas de propiedades o se pueden usar para crear cuadros de diálogo que se inician desde
menús o botones de hojas de propiedades.

Nota:A menos que los agregue a un formulario, los atributos extendidos se enumeran
alfabéticamente en la
Atributos extendidosficha de la hoja de propiedades del objeto. Al crear su propio
formulario, puede hacer que estos atributos sean más visibles y fáciles de usar,
organizándolos lógicamente, agrupando los relacionados y enfatizando aquellos que son más
importantes. Si asocia todos sus atributos extendidos con un formulario, la pestaña Atributos
extendidos no se muestra.

1. Haga clic con el botón derecho en una metaclase, estereotipo o criterio y seleccione
Nuevo > Formulario para crear un formulario vacío.

Nota:Si define una pestaña de propiedad bajo un estereotipo o criterio, solo se muestra
cuando la instancia de la metaclase lleva el estereotipo o cumple el criterio.

62 PowerDesigner
CAPÍTULO 2: Archivos de extensión

2. Ingrese las siguientes propiedades apropiadas:


Propiedad Descripción

Nombre Especifica el nombre interno del formulario, que se puede utilizar para
secuencias de comandos.
Etiqueta Especifica el nombre para mostrar del formulario, que se mostrará en la pestaña
de la pestaña de propiedades o en la barra de título del cuadro de diálogo.

Comentario Proporciona información adicional sobre el formulario.

Propiedad Descripción

Archivo de Habilita la visualización de un botón de Ayuda y especifica una acción que se


ayuda realizará cuando se haga clic en el botón o se presione F1 en el contexto del
formulario.

Personalización y ampliación de PowerDesigner 63


CAPÍTULO 2: Archivos de extensión

La acción puede ser la visualización de un archivo de ayuda (.hlp, .chm o


.html) y puede especificar un tema específico. Por ejemplo:

C:\PD1500\pddoc15.chm 26204
Si no se encuentra ninguna extensión de archivo de ayuda, la cadena se tratará
como un comando de shell para ejecutar. Por ejemplo, podría indicarle a
PowerDesigner que abra un archivo de texto simple:
notepad.exe C:\Temp\Readme.txt

Tipo Especifica el tipo de formulario. Puede elegir entre los siguientes:


• Cuadro de diálogo: crea un cuadro de diálogo que se puede iniciar desde un
menú o mediante un botón de formulario
• Pestaña de propiedades: crea una nueva pestaña en la hoja de propiedades de
la metaclase, estereotipo o criterio
• Reemplazar<estándar>Pestaña: reemplaza una pestaña estándar en la hoja
de propiedades de la metaclase, estereotipo o criterio. Si su formulario está
vacío, se llenará con los controles estándar de la pestaña que está
reemplazando.
Agregar a [solo fichas de propiedades] Especifica que la ficha se muestra de forma
pestañas predeterminada en la hoja de propiedades del objeto.
favoritas
3. Inserte controles según sea necesario en su formulario utilizando la barra de herramientas
en la pestaña Formulario (consulte Agregar atributos extendidos y otros controles a su
formulario en la página 57).
4. Haga clic en el botón Vista previa para revisar el diseño de su formulario y, cuando esté
satisfecho, haga clic en Aplicar para guardar los cambios.

Agregar atributos extendidos y otros controles a su formulario


Los controles se insertan en el formulario con las herramientas de la barra de herramientas
de la pestaña Formulario. Puede reordenar los controles en el árbol de controles de formulario
arrastrándolos y soltándolos. Para colocar un control dentro de un control contenedor (cuadro
de grupo o diseño horizontal o vertical), suéltelo en el contenedor. Por ejemplo, si desea que
los atributos extendidos GUID, InputGUID y OutputGUID se muestren en un cuadro de
grupo de GUI, debe crear un cuadro de grupo, llamarlo GUI y arrastrar y soltar los tres
atributos extendidos en el cuadro de grupo de GUI.
Las siguientes herramientas están disponibles:
Herramienta Descripción

64 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Añadir atributo/colección– abre un cuadro de selección en el que selecciona


atributos estándar o extendidos o colecciones pertenecientes a la metaclase para
insertar en el formulario. Si no ingresa una etiqueta, el atributo o el nombre de la
colección se usa como su etiqueta de formulario. Si ha introducido un comentario,
se muestra como información sobre herramientas.
El tipo de control asociado con un atributo depende de su tipo: los booleanos
están asociados con casillas de verificación, listas con cuadros combinados,
campos de texto con cuadros de edición de varias líneas, etc. Las colecciones se
muestran como cuadrículas estándar con todas las herramientas adecuadas.
Agregar cuadro de grupo- inserta un cuadro de grupo, destinado a contener otros
controles dentro de un cuadro con nombre.

Agregar ventana de pestaña- inserta un diseño de subpestaña, en el que cada


control secundario aparece, de forma predeterminada, en su propia subpestaña.
Para colocar varios controles en una sola subpestaña, utilice un diseño horizontal
o vertical.
Agregar diseño horizontal / vertical- inserta un diseño horizontal o vertical. Para
organizar los controles para que se muestren uno al lado del otro, arrástrelos a un
diseño horizontal en la lista. Para organizar los atributos para que se muestren uno
debajo del otro, arrástrelos a un diseño vertical en la lista.
Los diseños verticales y horizontales a menudo se usan juntos para proporcionar
columnas de controles.
Incluir otro formulario- inserta un formulario definido en esta u otra metaclase
en el formulario presente (verEjemplo: incluir un formulario en un
formularioen la página 64).
Botón Agregar método- abre un cuadro de selección en el que selecciona uno o
más métodos pertenecientes a la metaclase para asociarlos con el formulario a
través de botones. Al hacer clic en el botón se invoca el método. Si no ingresa
una etiqueta, el nombre del método se usa como la etiqueta del botón. Si ha
introducido un comentario, se muestra como información sobre herramientas.
Agregar campo de edición / edición de varias líneas[solo cuadros de diálogo]
inserta un campo de edición o edición de varias líneas.

Añadir cuadro combinado/cuadro de lista/casilla de verificación[solo cuadros


de diálogo]: inserta un cuadro combinado, un cuadro de lista o una casilla de
verificación.

Añadir texto/línea de separación/espaciador- inserta el control decorativo


apropiado. La línea de separación es vertical cuando su control principal es un
diseño vertical.

Borrar– elimina el control actualmente seleccionado.

Seleccione un control para especificar propiedades para controlar su formato y contenido:

Personalización y ampliación de PowerDesigner 65


CAPÍTULO 2: Archivos de extensión

Propiedad Definición

Nombre Nombre interno del control. Este nombre debe ser único dentro del formulario. El
nombre se puede utilizar en secuencias de comandos para obtener y establecer
valores de control de cuadro de diálogo (verEjemplo: abrir un cuadro de diálogo
desde un menúen la página 82).

Propiedad Definición

Etiqueta Especifica una etiqueta para el control en el formulario. Si este campo se deja en
blanco, se utiliza el nombre del control. Si ingresa un espacio, no se muestra
ninguna etiqueta. Puede insertar saltos de línea con \n.

Para crear métodos abreviados de teclado para navegar entre los controles, prefije
la letra que servirá como método abreviado con un ampersand. Si no especifica
una tecla de método abreviado,
PowerDesigner elegirá uno por defecto. Para mostrar un ampersand en una
etiqueta, debe colocarle un segundo ampersand (por ejemplo: &Johnson && Son
se mostrará como Johnson & Son.
Atributo [formularios incluidos] Especifica el objeto sobre el que se define el formulario a
incluir.
La lista se completa con todos los atributos de tipo objeto y los siguientes
objetos:

• <Ninguno> - la metaclase actual


• Origen de generación: por ejemplo, la entidad CDM a partir de la cual se
generó una tabla PDM
• Modelo: el modelo principal
• Padre: el objeto padre inmediato para subobjetos (por ejemplo, la tabla que
contiene una columna
• Carpeta principal: el objeto principal inmediato para objetos compuestos (por
ejemplo, procesos BPM que contienen otros procesos)
• Paquete principal: el paquete principal inmediato
Nombre del [formularios incluidos] Especifica el nombre del formulario que se incluirá.
formulario Puede:

• Seleccione un nombre de ficha de hoja de propiedades estándar de la lista.


• Introduzca el nombre de un formulario personalizado definido en el archivo
de extensión.
• Ingrese el nombre de una plantilla GTL para generar XML para definir el
formulario.

66 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Sangría [controles de contenedor] Especifica el espacio en píxeles entre el margen


izquierdo del contenedor (formulario, cuadro de grupo o diseño horizontal o
vertical) y el comienzo de las etiquetas de sus controles secundarios.

Propiedad Definición

Espacio de [controles de contenedor] Especifica el espacio en píxeles reservado para mostrar


etiqueta las etiquetas de los controles secundarios entre la sangría del contenedor y los
campos de control.
Para alinear los controles con los controles de un contenedor anterior, introduzca
un valor negativo. Por ejemplo, si tiene dos cuadros de grupo y desea que todos los
controles de ambos estén alineados de forma idéntica, establezca una sangría
adecuada en el primer cuadro de grupo y establezca la sangría del segundo cuadro
de grupo en -1.

Si la etiqueta de un control secundario es mayor que el valor especificado, la


propiedad del espacio de la etiqueta se ignora; para mostrar esta etiqueta, debe
escribir un número de píxeles superior a 50.

Mostrar [cuadros de grupo] Use el primer control contenido dentro del cuadro de grupo
control como como su etiqueta.
etiqueta
Mostrar oculto [atributos extendidos] Muestra los controles que no son válidos para un
Atributo formulario en particular (porque no tienen el estereotipo relevante o no cumplen
con los criterios) en gris. Si esta opción no está configurada, las opciones
irrelevantes se ocultan.

Personalización y ampliación de PowerDesigner 67


CAPÍTULO 2: Archivos de extensión

Valor [campos de entrada del cuadro de diálogo] Especifica un valor predeterminado para
el control. Para los atributos extendidos, los valores predeterminados deben
especificarse en las propiedades del atributo (verAtributos extendidos (perfil)en
la página 41).
Lista de [cuadros combinados y de lista] Especifica una lista de valores posibles para el
valores control. Para atributos extendidos, las listas de valores deben especificarse en las
propiedades del atributo (verAtributos extendidos (perfil)en la página 41).

Exclusivo [cuadros combinados] Especifica que solo los valores definidos en la Lista de
valores se pueden ingresar en el cuadro combinado.

Propiedad Definición

Talla minima Especifica el ancho mínimo (en caracteres) al que se puede reducir el control
(caracteres) cuando se cambia el tamaño de la ventana.

Mínimo Especifica el número mínimo de líneas a las que se puede reducir un control de
Número de varias líneas cuando se cambia el tamaño de la ventana.
línea
Horizontal / Especifica que se puede cambiar el tamaño del control horizontalmente o, para los
Cambio de controles multilínea, verticalmente, cuando se cambia el tamaño de la hoja de
tamaño vertical propiedades o del cuadro de diálogo.
Solo lectura [incluidos formularios y campos de entrada de cuadros de diálogo] Especifica que
el control es de solo lectura y aparecerá atenuado en el formulario.

Texto [booleanos] Coloca el texto de la etiqueta a la izquierda de la casilla de


izquierdo verificación.
Mostrar [booleanos y métodos] Especifica la forma en que se muestran las opciones
booleanas o el botón de método.
Para los booleanos, puede elegir entre una casilla de verificación o botones de
opción verticales u horizontales, mientras que para los métodos, puede elegir entre
una gama de iconos estándar o Texto, que imprime el texto especificado en el campo
Etiqueta del botón.
Ancho/ Alto [espaciadores] Especifique el ancho y la altura, en píxeles, del espaciador.

Ejemplo: creación de una ficha de hoja de propiedades


En este ejemplo, crearemos una nueva pestaña de propiedades para la metaclase Persona
EAM para mostrar los atributos extendidos que definimos para almacenar información
personal.

1. Cree un nuevo archivo de extensión (consulte Creación de un archivo de extensión en la


página 12) en un EAM, agregue la metaclase de persona (consulte Metaclases (perfil) en

68 PowerDesigner
CAPÍTULO 2: Archivos de extensión

la página 33) y defina cinco atributos extendidos (consulte Atributos extendidos (perfil)
en la página 41) para contener los datos de contacto de la casa:

2. Haga clic con el botón derecho en la metaclase Persona y seleccione Nuevo > Formulario,
ingrese Detalles personales en el campo Nombre, seleccione la pestaña Propiedad en la
lista Tipo y haga clic en la herramienta Agregar atributo para seleccionar todos los nuevos
atributos extendidos para incluirlos en el formulario:

Personalización y ampliación de PowerDesigner 69


CAPÍTULO 2: Archivos de extensión

3. Haga clic en Aceptar para agregar los atributos al formulario y organícelos en un cuadro
de grupo, utilizando diseños horizontales para alinearlos perfectamente. Aquí, estoy
usando el campo Etiqueta para anular el nombre predeterminado del atributo en el
formulario por brevedad:

4. Haga clic en Aceptar para guardar los cambios y volver al modelo. La próxima vez que
abra la hoja de propiedades de una persona, estará disponible una nueva pestaña de
Detalles personales que contiene los atributos ampliados:

70 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Ejemplo: incluir un formulario en un formulario


En este ejemplo, reemplazaremos la pestaña General de la metaclase Persona EAM por un
formulario que incluye propiedades de la persona y del sitio al que está asignada al incluir
un formulario definido en la metaclase Sitio como un control de solo lectura en un formulario
definido en la metaclase Person.
Este ejemplo se basa en el archivo de extensión creado en Ejemplo: Creación de una ficha
de hoja de propiedades en la página 61.

1. Agregue la metaclase Sitio y cree un formulario llamado Dirección del sitio. Seleccione
la pestaña de propiedades de la lista Tipo y anule la selección de la opción Agregar a
pestañas favoritas (ya que no queremos este formulario, que duplica las propiedades
estándar del sitio que se muestran en las hojas de propiedades del sitio).
2. Rellene el formulario con atributos estándar para mostrar la dirección completa del sitio:

Personalización y ampliación de PowerDesigner 71


CAPÍTULO 2: Archivos de extensión

3. Cree un formulario en la metaclase Persona, seleccione la pestaña Reemplazar general


de la lista Tipo y cambie el nombre a Detalles de contacto.
4. Elimine los atributos no deseados de la lista y organice los atributos restantes que desea
mostrar, incluido el atributo del sitio (que es de tipo Objeto y que nos permitirá obtener
las propiedades apropiadas del formulario del sitio asociado) utilizando diseños
horizontales y verticales. .
5. Haga clic en la herramienta Incluir otro formulario, seleccione Sitio en el campo Atributo
e ingrese Dirección del sitio en el campo Nombre del formulario. Seleccione la casilla de
verificación Solo lectura para evitar la edición del formulario incluido desde la hoja de
propiedades de la persona:

72 PowerDesigner
CAPÍTULO 2: Archivos de extensión

6. Haga clic en Aceptar para guardar las extensiones y volver a su modelo. La próxima vez
que abra la hoja de propiedades de una persona, la pestaña General se reemplaza por la
pestaña personalizada Detalles de contacto, y cuando la persona se asigna a un sitio, los
detalles de la dirección del sitio se muestran como de solo lectura en la parte inferior del
formulario:

Personalización y ampliación de PowerDesigner 73


CAPÍTULO 2: Archivos de extensión

Ejemplo: abrir un cuadro de diálogo desde una hoja de propiedades


En este ejemplo, agregaremos un botón a la pestaña de una hoja de propiedades para abrir
un cuadro de diálogo que le permita ingresar detalles personales adicionales para una
persona.
Este ejemplo se basa en el archivo de extensión desarrollado en Ejemplo: Incluir un
formulario en un formulario en la página 64.

1. Abra el formulario Detalles personales en la metaclase Persona y seleccione Cuadro de


diálogo en el campo Tipo, para transformarlo de una ficha de hoja de propiedades en un
cuadro de diálogo independiente:

74 PowerDesigner
CAPÍTULO 2: Archivos de extensión

2. Haga clic con el botón derecho en la metaclase Person y seleccione New > Method.
Introduce el nombre
ShowPersonalDetails y luego haga clic en la pestaña Method
Script e ingrese el siguiente script:
Sub %Método%(obj)
' Mostrar cuadro de diálogo personalizado para atributos
extendidos avanzados
tenue dlg
Establecer dlg =
obj.CreateCustomDialog("%CurrentTargetCode%.Personal
Detalles")
Si no dlg es Nothing Entonces dlg.ShowDialog()
Terminara si
Finalizar sub

3. Seleccione el formulario Detalles de contacto y haga clic en la herramienta Botón


pulsador Agregar método, seleccione el método ShowPersonalDetails y luego haga clic
en Aceptar para agregarlo al formulario. Aquí, uso un diseño horizontal y un espaciador
para alinear el botón con el borde derecho del formulario:

Personalización y ampliación de PowerDesigner 75


CAPÍTULO 2: Archivos de extensión

4. Ingrese Personal... en el campo Etiqueta y luego haga clic en Aceptar para guardar los
cambios y volver al modelo. Ahora, cuando abre la hoja de propiedades de una persona,
el Contacto
DetallesLa pestaña contiene un botón Personal... que abre el cuadro de diálogo Información
personal:

76 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Símbolos personalizados (perfil)

Los símbolos personalizados modifican la apariencia de los símbolos de objetos en los


diagramas junto con el contenido que se muestra en ellos. Puede optar por hacer cumplir
ciertos aspectos del formato y el contenido del símbolo, mientras permite a los usuarios cierta
libertad para cambiar otros.

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio y seleccione
Nuevo > Símbolo personalizado.

Personalización y ampliación de PowerDesigner 77


CAPÍTULO 2: Archivos de extensión

2. Especifique un ancho y una altura predeterminados para el símbolo y luego haga clic en
el botón Modificar para abrir el cuadro de diálogo Formato de símbolo y establezca las
propiedades apropiadas en las distintas pestañas.

Nota:Si personaliza el estilo de línea y las flechas de un símbolo de enlace (como una
referencia de PDM), sus estilos anularán los seleccionados en el cuadro de diálogo
Preferencias de visualización y pueden causar confusión e inconsistencia en el modelo.
Para garantizar la coherencia en un modelo regido por una notación, seleccione Notación
para las propiedades Estilo y Flechas en la pestaña Estilo de línea.

Para obtener más información sobre el cuadro de diálogo Formato de símbolo (incluidas
las opciones de símbolo personalizadas que le permiten controlar las opciones de formato
predeterminadas para el símbolo y si los usuarios pueden editarlas, por ficha), consulte
la Guía de funciones principales > Modelado con PowerDesigner > Diagramas , matrices
y símbolos > Símbolos > Propiedades de formato de símbolo.
3. Haga clic en Aceptar para volver al editor de recursos y ver sus cambios en el campo
Vista previa.
4. Haga clic en Aplicar para guardar sus cambios.

78 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Cheques personalizados (perfil)

Las comprobaciones personalizadas definen reglas adicionales para validar el contenido de


sus modelos. La lógica de la comprobación se define mediante VBScript. Las
comprobaciones personalizadas aparecen junto a las comprobaciones estándar en el cuadro
de diálogo Modelo de comprobación.
Las comprobaciones personalizadas aparecen con las comprobaciones de modelo estándar
en el cuadro de diálogo Comprobar parámetros de modelo (consulte Guía de funciones
principales > Modelado con PowerDesigner > Objetos > Comprobación de modelos).

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio y seleccione
Nuevo > Comprobación personalizada.
2. Introduzca las siguientes propiedades según corresponda:
Parámetro Descripción

Nombre Especifica el nombre de la comprobación personalizada, que se muestra


en la categoría de objeto seleccionada en el cuadro de diálogo
Comprobar parámetros del modelo. Este nombre también se usa
(concatenado) en el nombre de la función de verificación para
identificarlo de manera única.
Comentario Proporciona una descripción del cheque personalizado.

Mensaje de ayuda Especifica el texto que se mostrará en el cuadro de mensaje que se


abre cuando el usuario hace clic con el botón secundario en la
verificación y selecciona Ayuda.
mensaje de salida Especifica el texto que se mostrará en la ventana de salida durante la
ejecución de la comprobación.
Gravedad Especifica si la comprobación se designa de forma predeterminada
predeterminada como un error (problema importante que detiene la generación) o una
advertencia (problema menor o simplemente recomendación).

Ejecutar la Especifica que la comprobación se selecciona de forma


verificación por predeterminada en el cuadro de diálogo Comprobar parámetros del
defecto modelo.
Habilitar la Especifica que hay una corrección automática disponible para la
corrección automática comprobación (verEjemplo: corrección automática de PDMen la
página 74).
Ejecutar la corrección Especifica que la corrección automática se ejecuta de forma
automática por predeterminada.
defecto
3. Haga clic en la pestaña Verificar secuencia de comandos e ingrese su secuencia de
comandos (consulte Ejemplo: Verificación personalizada de PDM en la página 73). Puede

Personalización y ampliación de PowerDesigner 79


CAPÍTULO 2: Archivos de extensión

acceder a funciones de biblioteca compartida y atributos estáticos definidos para su


reutilización en el archivo de recursos desde la pestaña Global Script (consulte Global
Script (Perfil) en la página 105).

4. Si desea definir una autocorrección, haga clic en la pestaña Autofix Script e ingrese su
secuencia de comandos (consulte Ejemplo: PDM Autofix en la página 74.
5. Haga clic en Aplicar para guardar sus cambios.
Todas las comprobaciones personalizadas definidas en los archivos de recursos adjuntos
al modelo se fusionan y todas las funciones para todas las comprobaciones
personalizadas se agregan para crear un solo script. Sus comprobaciones personalizadas
se muestran en el cuadro de diálogo Comprobar parámetros del modelo junto con las
comprobaciones del modelo estándar. Si hay errores en sus scripts de verificación
personalizados, se le solicitará al usuario las siguientes opciones:
• Ignorar: omita el script problemático y continúe con las otras comprobaciones.
• Ignorar todo: omita este y cualquier script futuro con problemas y continúe con las
otras comprobaciones.
• Abortar: detiene la comprobación del modelo.
• Depuración: detenga la verificación del modelo y abra el Editor de recursos en la
línea de secuencia de comandos con el problema.

80 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Ejemplo: Comprobación personalizada de PDM


Ingrese el script de la verificación personalizada en la pestaña Check Script usando
VBScript. En este ejemplo, escribiremos un script para verificar que los índices de Sybase
IQ de tipo HG, HNG, CMP o LF no estén vinculados con columnas con un tipo de datos de
VARCHAR con una longitud superior a 255.
El script se inicializa con la siguiente línea, que no debe modificarse:
Función %Comprobar%(obj)

En tiempo de ejecución, la variable %Check% se reemplaza concatenando los nombres del


archivo de recursos, la metaclase, cualquier estereotipo o criterio, y el nombre de la
verificación en sí desde la pestaña General, con cualquier espacio reemplazado por un guión
bajo. El parámetro obj contiene el objeto que se está comprobando.
Comenzamos definiendo un cierto número de variables después de la definición de la función
por defecto:
Dim c 'columna de índice temporal
Dim col 'columna temporal
posición tenue
Dim DT_col

A continuación, ingresamos al cuerpo de la función, que comienza configurando %Check%


en verdadero (lo que significa que el objeto pasa la prueba) y luego itera sobre cada una de
las columnas asociadas con el índice y prueba su tipo de datos. Si una columna tiene un
varchar de más de 255, la secuencia de comandos genera un mensaje y establece la
verificación en falso (el objeto falla la prueba:
%Comprobar%= Verdadero

si obj.tipo = "LF" o obj.tipo = "HG" o obj.tipo = "CMP" o obj.tipo


= "HNG" entonces
para cada c en obj.indexcolumns
set col = c.column

posición = InStr(col.tipodatos,"(")
si la posición <> 0 entonces
DT_col = izquierda (col.tipo de datos, posición
-1) más
DT_col = col.tipo de datos
final si
si ucase(DT_col) = "VARCHAR" y col.length > 255 entonces genera
"Tabla" & col.parent.name & "Columna" & col.name & " : El tipo de
datos no es compatible con Index " & obj.name & "tipo" & tipo.obj.
%Check% = Fin falso si

Para obtener más información sobre el uso de VBScript en PowerDesigner, consulte el


Capítulo 7, Creación de scripts de PowerDesigner en la página 305.

Personalización y ampliación de PowerDesigner 81


CAPÍTULO 2: Archivos de extensión

Ejemplo: corrección automática de PDM


Si la verificación personalizada que ha definido admite una corrección automática, ingrese
su script en la pestaña Autofix Script usando VBScript. En este ejemplo, escribiremos un
script para corregir un índice de Sybase IQ vinculado con columnas con un tipo de datos no
válido.
El script se inicializa con la siguiente línea, que no debe modificarse:
Función %Fix%(obj, outmsg)

En tiempo de ejecución, la variable %Fix% se reemplaza por el nombre de la corrección. El


parámetro obj contiene el objeto que se está comprobando y outmsg, el mensaje que se va a
emitir.
Comenzamos definiendo un cierto número de variables después de la definición de la función
por defecto:
Dim c 'columna de índice temporal
Dim col 'columna temporal
posición tenue
Dim DT_col

A continuación, ingresamos al cuerpo de la función, que comienza configurando %Fix% en


falso (lo que significa que no hace nada) y luego itera sobre cada una de las columnas
asociadas con el índice y prueba su tipo de datos. Si una columna tiene un varchar de más de
255, la secuencia de comandos genera un mensaje, elimina la columna de la colección de
columnas asociadas con el índice y establece la corrección en verdadero (ha realizado una
corrección):
%Reparar% = Falso
Si obj.type = "LF" u obj.type = "HG" u obj.type = "CMP" u obj.type =
"HNG" Entonces
Para cada c en obj.IndexColumns
Set col = c.column
posición = InStr(col.tipodatos,"(")
Si la posición <> 0 Entonces
DT_col = Izquierda (col.tipo de datos, posición -1)
Demás
DT_col = col.tipo de datos
Terminara si
If (Ucase(DT_col) = "VARCHAR") And (col.length > 255) Then outmsg =
"La corrección automática eliminó la columna " & col.Name & " del
índice". c.Eliminar %Fix% = Verdadero
Terminara si
Próximo
Terminara si

82 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Controladores de eventos (perfil)

Los controladores de eventos definen reglas de validación u otros scripts para ejecutar
cuando ocurre un evento en un objeto. La lógica del controlador de eventos se define
mediante VBScript. Los criterios no admiten controladores de eventos.

1. Haga clic con el botón derecho en una metaclase o un estereotipo y seleccione Nuevo >
Controlador de eventos para abrir un cuadro de selección, enumerando los tipos de
controladores de eventos disponibles:

Controlador de Descripción
eventos

Personalización y ampliación de PowerDesigner 83


CAPÍTULO 2: Archivos de extensión

Puede crear Implementa una regla de validación para evitar que se creen objetos en
un contexto no válido. Por ejemplo, en un BPM para ebXML, un
proceso con un
El estereotipo de transacciones comerciales solo se puede crear en un
proceso con un estereotipo de colaboración binaria. El script del
manejador de eventos CanCreate asociado al estereotipo del proceso
Business Transaction es el siguiente:
Función %CanCreate%(padre) si
el padre es Nada o
padre.IsKindOf(PdBpm.Cls_Process) entonces
%CanCreate% = Falso si
no
%CanCreate% = Verdadero
terminara si
función final
Si el controlador de eventos devuelve True en un estereotipo, puede usar
la herramienta personalizada para crear el objeto estereotipado y el
estereotipo estará disponible en la lista de estereotipos en la hoja de
propiedades del objeto. Si devuelve True en una metaclase, puede crear
el objeto desde la caja de herramientas, desde el navegador o en una lista.

Nota:Los controladores de eventos CanCreate se ignoran durante la


importación del modelo o la ingeniería inversa, ya que podrían
modificar el modelo y hacer que difiera del origen.

Controlador de Descripción
eventos
Inicializar Instancia objetos con una plantilla predefinida. Por ejemplo, en un BPM,
una transacción comercial debe ser un proceso compuesto con un
subgráfico predefinido. El script del controlador de eventos Initialize
asociado con el estereotipo del proceso Business Transaction contiene
todas las funciones necesarias para crear el subgráfico. El siguiente
fragmento de secuencia de comandos es del controlador de eventos
Initialize para una transacción comercial.

84 PowerDesigner
CAPÍTULO 2: Archivos de extensión

...
' Buscar un símbolo de actividad solicitante
existente Dim ReqSym
Establecer ReqSym = Nada
Si no ReqBizAct es nada, entonces
Si ReqBizAct.Symbols.Count > 0 Entonces
Establecer ReqSym = ReqBizAct.Symbols.Item(0)
Terminara si
Terminara si

' Crear una actividad solicitante si no se


encuentra
Si ReqBizAct no es nada, entonces
Establecer ReqBizAct =
BizTrans.Processes.CreateNew
ReqBizAct.Estereotipo =
"RequestingBusinessActivity"
ReqBizAct.Name = "Solicitud"
Terminar si...
Si el controlador de eventos devuelve True en un estereotipo, la secuencia
de comandos de inicialización se iniciará cada vez que se asigne el
estereotipo, ya sea con una herramienta personalizada en el cuadro de
herramientas o desde la hoja de propiedades del objeto. Si devuelve True
en una metaclase, se iniciará cuando cree un nuevo objeto desde la caja
de herramientas, desde el navegador, en una lista o en una hoja de
propiedades. Si devuelve verdadero en un modelo, se iniciará cuando
asigne un destino (DBMS u objeto, proceso o lenguaje de esquema) al
modelo en el momento de la creación, cuando cambie el destino del
modelo o cuando adjunte un extensión al modelo.

Controlador de eventos Descripción

Validar Valida los cambios en las propiedades del objeto o activa


actualizaciones en cascada cuando cambia de pestaña o hace
clic en Aceptar o Aplicar en una hoja de propiedades del
objeto. Puede definir un mensaje de error para que aparezca
cuando la condición no se cumple completando la variable
del mensaje y configurando la variable %Validar% en Falso.
En este ejemplo, el controlador de eventos verifica que se
agregue un comentario a la definición de un objeto:
Función %Validar%(obj, mensaje ByRef)
si obj.comment = ""
entonces %Validar% = Falso
mensaje = "El comentario no
puede estar vacío" más
%Validar% = Verdadero
terminara si

Personalización y ampliación de PowerDesigner 85


CAPÍTULO 2: Archivos de extensión

función final

CanLinkKind [vincular objetos] Valida el tipo y el estereotipo de los


objetos que se pueden vincular como los extremos de origen
y destino cuando crea un vínculo con una herramienta Caja
de herramientas o modifica los extremos del vínculo en una
hoja de propiedades. El
Los parámetros sourceStereotype y
destinationStereotype son
opcionales.
En este ejemplo, la fuente del enlace extendido debe ser un
objeto de inicio:
Función %CanLinkKind%(sourceKind,
sourceStereotype,
tipo de destino, estereotipo de
destino)
si sourceKind = cls_Start Entonces
%CanLinkKind% = Verdadero
terminara si
función final

OnModelOpen, OnModelSave y [modelos] Ejecutar inmediatamente después de abrir,


OnModelCerrar guardar o cerrar un modelo.

OnLanguageChangeRequest, [modelos] Ejecutar inmediatamente:


OnLanguageChanging y • Antes de que se cambie el DBMS del modelo o el
OnLanguageChanged archivo de definición de idioma. Si el controlador de
eventos devuelve falso, se cancela el cambio de idioma.
• Después del cambio de idioma, pero antes de que se
aplique cualquier transformación a los objetos para que
se ajusten a la nueva definición del idioma.
• Después de cambiar el DBMS del modelo o el archivo
de definición de idioma y aplicar las transformaciones
de objetos.
OnNewFromTem- [modelos] Se ejecuta inmediatamente después de crear un
lámina modelo o proyecto a partir de una plantilla de modelo o
proyecto.

86 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Controlador de eventos Descripción

BeforeDatabaseGenerate, [Modelos PDM] Ejecutar inmediatamente antes o después de


AfterDatabaseGenerate, generar o aplicar ingeniería inversa a una base de datos
BeforeDatabaseReverseEngineer (verAdición de scripts antes o después de la generación y
y la ingeniería inversaen la página 133).
AfterDatabaseReverseEngineer

ObtenerTamañoEstimado [Solo PDM] Se ejecuta cuando se llama a la mecánica


Calcular tamaño de la base de datos (verModificación del
mecanismo de estimación del tamaño de la base de
datosen la página 202).
2. Seleccione uno o más controladores de eventos y haga clic en Aceptar para agregarlos.
3. Introduzca un nombre y un comentario para identificar y documentar el controlador de
eventos.
4. Haga clic en la pestaña Secuencia de comandos del controlador de eventos e ingrese una
secuencia de comandos para definir el controlador de eventos. Puede acceder a funciones
de biblioteca compartida y atributos estáticos definidos para su reutilización en el archivo
de recursos desde la pestaña Global Script (consulte Global Script (Perfil) en la página
105).

5. Haga clic en Aplicar para guardar sus cambios.

Personalización y ampliación de PowerDesigner 87


CAPÍTULO 2: Archivos de extensión

Métodos (Perfil)

Los métodos están escritos en VBScript y realizan acciones en objetos cuando son invocados
por otras extensiones, como elementos de menú o botones de formulario.

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio y seleccione
Nuevo > Método.
2. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica el nombre del método.

Comentario Proporciona información adicional sobre el método.

3. Haga clic en la pestaña Method Script e ingrese el VBscript. Si corresponde, puede


reutilizar funciones en la pestaña Global Script.
Para obtener más información sobre la definición de un script y el uso de la pestaña
Global Script, consulte Ejemplo: Comprobación personalizada de PDM en la página 73
y Global Script (perfil) en la página 105.
El siguiente ejemplo, creado bajo la metaclase Class, convierte las clases en interfaces
copiando las propiedades y operaciones básicas de la clase, eliminando la clase (para
evitar problemas con el espacio de nombres) y creando la nueva interfaz.
Sub %Mthd%(objetivo)
'Convertir clase a interfaz

'Copiar las propiedades básicas de la clase


Dim Carpeta, Intf, ClassName, ClassCode
Establecer carpeta = obj.Parent
Establecer Intf = Carpeta.Interfaces.CrearNuevo
ClassName = obj.Nombre
ClassCode = obj.Code
Intf.Comentario = obj.Comentario

'Copiar operaciones de clase


operación tenue
Para cada operación en obj.Operaciones
'...
Nombre de operación de salida
Próximo

' Destruye la clase


obj.Delete

' Cambiar el nombre de la interfaz al nombre guardado


Intf.Nombre = NombreClase

88 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Intf.Code = ClassCode
Finalizar sub

Nota:Esta secuencia de comandos no se ocupa de otras propiedades de clase ni de la


visualización de la interfaz, pero se puede usar un método para iniciar un cuadro de
diálogo personalizado para solicitar la entrada del usuario final antes de realizar su acción
(consulte Ejemplo: abrir un cuadro de diálogo desde un menú en página 82).
4. Haga clic en Aplicar para guardar sus cambios.
Menús (Perfil)

Los menús especifican los comandos que aparecen en los menús estándar Archivo,
Herramientas y Ayuda de PowerDesigner o en los menús contextuales.

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio y seleccione
Nuevo > Menú.
2. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica el nombre interno del menú. Este nombre no aparecerá en el


menú.
Comentario Proporciona una descripción del menú.

Personalización y ampliación de PowerDesigner 89


CAPÍTULO 2: Archivos de extensión

Ubicación [solo modelo y diagrama] Especifica dónde se mostrará el menú. Puede elegir
entre: • Menú Archivo > Exportar
• Menú de ayuda
• Menú contextual de objetos
• Menú de herramientas
Los menús creados en otras metaclases solo están disponibles en el menú
contextual y no muestran un campo de ubicación.

3. Use las herramientas en la subpestaña Menú para crear los elementos en su menú:
Herramient Función
a
Agregar comando: abre un cuadro de diálogo de selección que enumera los
métodos (verMétodos (Perfil)en la página 79) y transformaciones
(verTransformaciones (Perfil)en la página 92) definida en la metaclase actual
y sus padres para agregar al menú como comandos. Seleccione uno o más y
haga clic en Aceptar.
Los elementos se agregan a su menú en el formato:
MenúEntrada(Método/nombre de transformación)
Puedes modificar elMenúEntrada(y defina una tecla de método abreviado
agregando un ampersand antes de la letra de la tecla de método abreviado), pero
no debe editar elMétodo/nombre de transformación.

Nota:Si modifica el nombre de un método o transformación, debe actualizar los


comandos utilizando el método o la transformación a mano, ya que el nombre
no se sincroniza automáticamente. Puede usar la herramienta Reemplazar en
elementos para ubicar y actualizar estos comandos.

Agregar separador: crea un separador de menú debajo del elemento


seleccionado.
Agregar submenú: crea un submenú debajo del elemento seleccionado.

Eliminar: elimina el elemento seleccionado.

Puede reordenar elementos en el árbol del menú arrastrándolos y soltándolos. Para


colocar un elemento dentro de un elemento de submenú, suéltelo en el submenú.

90 PowerDesigner
CAPÍTULO 2: Archivos de extensión

4. [opcional] Haga clic en la subpestaña XML para revisar el XML generado desde la
subpestaña Menú.
5. Haga clic en Aplicar para guardar sus cambios.

Ejemplo: abrir un cuadro de diálogo desde un menú


En este ejemplo, crearemos un comando de menú para exportar propiedades de objetos a un
archivo XML a través de un cuadro de diálogo.
1. Cree un nuevo archivo de extensión (consulte Creación de un archivo de extensión en la
página 12) en un PDM y agregue la metaclase Tabla (consulte Metaclases (perfil) en la
página 33).
2. Haga clic con el botón derecho en la metaclase Tabla y seleccione Nuevo > Formulario.
Introduzca Exportar en el campo Nombre y seleccione Cuadro de diálogo en la lista Tipo.
3. Haga clic en la herramienta Editar campo para agregar un control de campo de edición y
llámelo Nombre de archivo.

Personalización y ampliación de PowerDesigner 91


CAPÍTULO 2: Archivos de extensión

4. Haga clic con el botón derecho en la metaclase Tabla y seleccione Nuevo > Método.
Ingrese Exportar en el campo Nombre, haga clic en la pestaña Method Script e ingrese el
siguiente código:
Sub %Método%(obj)
' Exporta un objeto a un archivo
' Crea un cuadro de diálogo para ingresar el nombre del
archivo de exportación
tenue dlg
Establecer dlg =
obj.CreateCustomDialog("%CurrentTargetCode%.Export")
Si no dlg es Nada Entonces
' Inicializa el valor de control de nombre de archivo
dlg.SetValue "Nombre de archivo", "c:\temp\MyFile.xml"

'Mostrar diálogo
Si dlg.ShowDialog() Entonces
' Recuperar el valor del cliente para el control de
nombre de archivo Dim nombre de archivo
nombre de archivo = dlg.GetValue("Nombre de archivo")

' Procesar el algoritmo de exportación...


' (Código de exportación real no incluido en este ejemplo)

Salida "Exportando objeto" + obj.Name + "a archivo" + nombre


de archivo End If

' Objeto de diálogo


libre dlg.Delete Set
dlg = Nada
Terminara si
Finalizar sub
5. Haga clic con el botón derecho en la metaclase Tabla y seleccione Nuevo > Menú. Ingrese
Exportar en el campo Nombre y luego haga clic en la herramienta Agregar comando y
seleccione el método Exportar:

92 PowerDesigner
CAPÍTULO 2: Archivos de extensión

6. Haga clic en Aceptar para guardar los cambios y volver a su modelo. La próxima vez que
haga clic con el botón derecho en una tabla en un diagrama o en el navegador, el comando
Exportar estará disponible en el menú contextual.
Plantillas (Perfil)

Las plantillas GTL extraen texto de los valores de propiedad de PowerDesigner para usarlos
en archivos generados u otros contextos.

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio (o la


categoría Compartido, si la plantilla se aplica a todas las metaclases) y seleccione Nuevo
> Plantilla para crear una plantilla.
2. Introduzca un nombre para la plantilla. No debe usar espacios en el nombre y, por
convención, las plantillas se nombran en camelcase sin cabeza (por ejemplo,
myTemplate).
3. [opcional] Ingrese un comentario para explicar el uso de la plantilla.
4. Introduzca el código GTL (consulte el Capítulo 5, Generación personalizada con GTL en
la página 245) en el cuadro de texto.
En este ejemplo, myTemplate se define en la metaclase Class y generará el nombre de la
clase seguido de una lista de sus atributos:

Personalización y ampliación de PowerDesigner 93


CAPÍTULO 2: Archivos de extensión

Archivos generados (perfil)

Los archivos generados ensamblan plantillas GTL para generarlas como archivos o para
obtener una vista previa en la ficha Vista previa de la hoja de propiedades del objeto.

1. Haga clic con el botón derecho en una metaclase, un estereotipo o un criterio y seleccione
Nuevo > Archivo generado.
Solo los objetos, como tablas o clases, admiten la generación de archivos. Sin embargo,
aún puede crear archivos generados para subobjetos, como columnas y atributos, para
obtener una vista previa del código generado para ellos en la ficha Vista previa de su
hoja de propiedades.
2. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica un nombre para el elemento de archivo generado en el editor de


recursos.
Si una extensión adjunta al modelo contiene un nombre de archivo generado
idéntico al definido en el archivo de recursos principal, solo se generará el
archivo generado por la extensión.

94 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Nombre del Especifica el nombre del archivo que se generará. Este campo puede contener
archivo variables GTL. Por ejemplo, para generar un archivo XML con el código del
objeto para su nombre, ingresaría %code%.xml.
Si deja este campo vacío, no se generará ningún archivo, pero puede ver el
código producido en la pestaña Vista previa del objeto.
Si este campo contiene una extensión reconocida, el código se muestra con
el editor de idioma correspondiente y el color sintáctico.

Tipo Especifica el tipo de archivo para proporcionar el color de sintaxis adecuado


en la ventana de vista previa.

Codificación Especifica el formato de codificación del archivo. Haga clic en la herramienta


de puntos suspensivos a la derecha del campo para elegir una codificación
alternativa en el cuadro de diálogo Formato de codificación de salida de texto,
donde puede especificar las siguientes opciones:
• Codificación: formato de codificación del archivo generado
• Abortar por pérdida de caracteres: especifica que se detenga la
generación si los caracteres no se pueden identificar y se perderán en la
codificación actual
Comentario Especifica información adicional sobre el archivo generado.

Usar jerarquía Especifica que la jerarquía de paquetes debe usarse para generar una jerarquía
de paquetes de directorios de archivos.
como ruta de
archivo
3. Ingrese el código GTL (consulte el Capítulo 5, Generación personalizada con GTL en la
página 245) o el nombre de una plantilla para completar el archivo en la zona de texto.
En el siguiente ejemplo, se define un archivo generado para las clases OOM. Se
generará un archivo para cada clase en el modelo con un nombre derivado de la clase
%Name% y con el contenido generado a partir de la plantilla %myTemplate% (ver
Plantillas (Perfil) en la página 84):

Personalización y ampliación de PowerDesigner 95


CAPÍTULO 2: Archivos de extensión

4. Haga clic en Aceptar para guardar los cambios y cerrar el editor de recursos.
El archivo está inmediatamente disponible como una subpestaña en la pestaña Vista
previa de la hoja de propiedades del objeto:

96 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Ejemplo: archivo y plantillas generados en Java


Las plantillas contienen código GTL que se usa para generar fragmentos de texto a partir de
valores de propiedad de PowerDesigner, mientras que los archivos generados se usan para
ensamblar plantillas para generarlas como archivos o para obtener una vista previa en la
ficha Vista previa de la hoja de propiedades del objeto.
En este ejemplo, se define un archivo generado llamado Java Source para los clasificadores.
Se generará un archivo para cada clasificador en el modelo con un nombre derivado de la
plantilla %sourceFilename % especificada en el campo Nombre de archivo, y con el
contenido generado a partir de la plantilla %source%:

Personalización y ampliación de PowerDesigner 97


CAPÍTULO 2: Archivos de extensión

Nota:Si coloca el cursor entre los signos de porcentaje que rodean este o cualquier otro
nombre de plantilla y presiona F12, saltará directamente a la plantilla a la que se hace
referencia o, si varias plantillas comparten el mismo nombre, a un cuadro de diálogo
Resultados en el que selecciona la plantilla para navegar a.

La plantilla a la que se hace referencia, la fuente, contiene código GTL, incluidas las
referencias a otras plantillas denominadas %isSourceGenerated%, %sourceHeader%,
%package% y %imports%:

98 PowerDesigner
CAPÍTULO 2: Archivos de extensión

Generación de sus archivos en una generación estándar o extendida


Puede utilizar archivos generados para ampliar la generación estándar de objetos de OOM,
BPM y XSM o para crear una generación ampliada independiente para cualquier tipo de
modelo. Para generaciones extendidas, puede definir un comando de menú personalizado.
Para ampliar la generación estándar de BPM, OOM o XSM desde el Editor de recursos:
1. Seleccione la propiedad Complementar la generación de idioma en la raíz del archivo de
extensión (consulte Propiedades del archivo de extensión en la página 14) para que el
archivo de extensión aparezca para su selección en la pestaña Destinos del cuadro de
diálogo Generación.
2. Defina los archivos generados según corresponda.
3. [opcional] Defina opciones en Generación\Opciones (consulte Ejemplo: Adición de una
opción de generación en la página 113) para que aparezcan en la pestaña Opciones del
cuadro de diálogo Generación.
4. [opcional] Defina comandos en Generación\Comandos y haga referencia a estos
comandos en tareas (consulte Ejemplo: agregar un comando y una tarea de generación
en la página 114) para que aparezcan en la pestaña Tareas del cuadro de diálogo
Generación.
Alternativamente, para definir generaciones de archivos separadas de la generación de
lenguaje estándar para un PDM o cualquier tipo de modelo y hacer que estén disponibles a
través del comando Herramientas > Generación extendida

Personalización y ampliación de PowerDesigner 99


CAPÍTULO 2: Archivos de extensión

1. [Solo OOM, BPM y XSM] Anule la selección de la propiedad Complementar generación


de idioma en la raíz del archivo de extensión (consulte Propiedades del archivo de
extensión en la página 14).
2. Defina los archivos generados según corresponda.
La generación está disponible inmediatamente en la pestaña Objetivos del cuadro de
diálogo Generación cuando selecciona Herramientas > Generación extendida.
3. [opcional] Cree un comando en el menú Herramientas para acceder directamente a su
generación extendida en su propio cuadro de diálogo:
a. Cree un método en Perfil\Modelo con el nombre que desea dar a su comando e ingrese
el siguiente código (donde extensión es el código del archivo de extensión):
Sub %Método%(obj)

Dim selección ' como ObjectSelection

'Crear una nueva selección


establecer selección = obj.CreateSelection

' Agregar objeto de la selección activa en la selección de


selección creada.AddActiveSelectionObjects

' Genera secuencias de comandos para objetivos


específicos InteractiveMode = im_Dialog
obj.GenerateFiles "", selección, "extensión"

Finalizar sub
Para obtener más información acerca de los métodos, consulte Métodos (perfil) en la
página 79.
b. Cree un menú en Perfil\Modelo y seleccione el menú Herramientas en la lista
Ubicación (consulte Menús (Perfil) en la página 81).
c. Agregue el método al menú usando la herramienta Agregar comando:

100 PowerDesigner
CAPÍTULO 2: Archivos de extensión

d. Seleccione el comando especificado (por ejemplo, Herramientas > Mi generación)


para abrir un cuadro de diálogo Generación personalizado, que no tiene una pestaña
Objetivos:

Personalización y ampliación de PowerDesigner 101


CAPÍTULO 2: Archivos de extensión

Transformaciones (Perfil)

Las transformaciones definen conjuntos de acciones para modificar objetos antes o después
de la generación de un modelo o bajo pedido. Las transformaciones suelen agruparse en
perfiles de transformación.
Las transformaciones se pueden utilizar para:
• Implemente Model Driven Architecture (MDA), que utiliza el modelado UML para
describir una aplicación en diferentes niveles de detalle. PowerDesigner le permite crear
una primera
modelo independiente de la plataforma (PIM) (que modela la lógica y la
funcionalidad de negocios básicas) y lo refina progresivamente en diferentes
modelos que contienen niveles crecientes de implementación e información
dependiente de la tecnología a través de una plataforma específica
modelo (PSM). Puede definir transformaciones que generarán una versión más
refinada de un modelo, en función de la plataforma de destino deseada, y los cambios
realizados en el PIM se pueden aplicar en cascada a los modelos generados.

102 PowerDesigner
CAPÍTULO 2: Archivos de extensión

• Aplique patrones de diseño a sus objetos de modelo.


• Modificar objetos para un propósito especial. Por ejemplo, puede crear una
transformación en un OOM que convierta las clases de <<control>> en componentes.
• Modifique objetos de forma reversible para ingeniería de ida y vuelta. Por ejemplo, si
genera un PDM a partir de un OOM para crear asignaciones O/R y el OOM de origen
contiene componentes, puede transformar previamente los componentes en clases para
facilitar la asignación a las tablas de PDM. Cuando actualiza el OOM de origen desde el
PDM generado, puede usar una transformación posterior para recrear los componentes
de las clases.
Las transformaciones se pueden invocar:

• Bajo demanda, seleccionando Herramientas > Aplicar transformaciones.


• Antes o después de la generación del modelo (consulte Guía de características principales
> Vinculación y sincronización de modelos > Generación de modelos y objetos de
modelo).
• A través de un comando de menú definido por el usuario (ver Menús (Perfil) en la página
81).

1. Haga clic con el botón derecho en una metaclase o estereotipo y seleccione Nuevo >
Transformación.
2. Ingrese un Nombre apropiado y, opcionalmente, un Comentario para explicar su
propósito.
3. En la pestaña Script de transformación, ingrese un VBscript para realizar la
transformación.
En este ejemplo, que se crea en una extensión adjunta a un CDM bajo la metaclase
DataItem, el script prueba para ver si el elemento de datos tiene una lista de valores
definida y, si este es el caso (y un dominio con esta misma lista de valores). valores no
existe ya en el CDM), crea un nuevo dominio con la lista de valores:

Personalización y ampliación de PowerDesigner 103


CAPÍTULO 2: Archivos de extensión

Sub %Transformación%(obj, trfm)

lista tenue
lista = obj.ListOfValues si
no lista = "" entonces
salida "transformando" & cstr(obj)

' Comprobar si dicho dominio ya existe


Dim domn, encontrado
encontrado = falso
para cada domn en obj.Model.Domains if
domn.ListOfValues = lista entonces
encontrado = final
verdadero si sigue

' Crear un nuevo dominio si


no se encuentra entonces
establecer domn = obj.Model.Domains.CreateNew()
domn.SetNameAndCode obj.Name, obj.Code
domn.ListOfValues = lista final
si final si

Finalizar sub
Esta transformación se puede agregar a un perfil de transformación como:
• Transformación previa a la generación: la transformación se llama desde el cuadro
de diálogo Opciones de generación. Los dominios se crean temporalmente en el
CDM antes de la generación y luego se generan en el modelo de destino (por
ejemplo, en un PDM).
• Transformación posterior a la generación: se puede llamar a la transformación desde
el cuadro de diálogo Opciones de generación (para una generación CDM-CDM).
Los dominios se crean en el CDM de destino después de la generación. Como
alternativa, se puede llamar a la transformación en cualquier momento
seleccionando Herramientas > Aplicar transformaciones para crear los dominios en
el modelo existente.
4. [opcional] Revise la pestaña Global Script (consulte Global Script (Perfil) en la página
105), que brinda acceso a las definiciones compartidas por todas las funciones de
VBscript definidas en el perfil, y la pestaña Dependencias, que enumera los perfiles de
transformación en los que se encuentra la transformación. usado.

Perfiles de transformación (Perfil)


Un perfil de transformación agrupa las transformaciones y las pone a disposición durante la
generación del modelo o seleccionando Herramientas > Aplicar transformaciones.

1. [si la categoría Perfiles de transformación no está presente] Haga clic con el botón
derecho en el nodo raíz, seleccione Agregar elementos, seleccione Perfiles de
transformación y haga clic en Aceptar para crear esta carpeta.

104 PowerDesigner
CAPÍTULO 2: Archivos de extensión

2. Haga clic con el botón derecho en la carpeta Perfiles de transformación y seleccione


Nuevo para crear un perfil de transformación.
3. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre / Especifique el nombre del perfil de transformación y proporcione una


Comentario explicación de lo que pretende hacer.

Tipo de [opcional] Especifique el tipo de modelo con el que se puede usar el perfil de
modelo / transformación durante la generación y (si el tipo admite un archivo de
Familia / definición de idioma) la familia y la subfamilia. Si se completa uno o más de
Subfamilia estos campos, el perfil solo se mostrará si el modelo a generar se ajusta a ellos.
Por ejemplo, si define la transformación en un PDM o una extensión de PDM y
especifica el modelo orientado a objetos y Java, el perfil solo estará disponible
cuando seleccione generar el PDM en un OOM de Java.

4. Haga clic en la pestaña Pregeneración y haga clic en la herramienta Agregar


transformaciones para agregar transformaciones para realizar antes de la generación.
Estas transformaciones se ejecutan antes de la generación en los objetos de su modelo de
origen. Si estas transformaciones crean objetos, se agregan automáticamente a la lista de
objetos que se generarán. Todos los cambios en los objetos existentes o en los objetos
nuevos creados por estas transformaciones se revierten después de la generación, de
modo que su modelo vuelve a su estado anterior.
5. Haga clic en la pestaña Generación posterior y haga clic en la herramienta Agregar
transformaciones para agregar transformaciones para realizar después de la generación.
Las transformaciones agregadas en esta pestaña también están disponibles para aplicarlas
fuera del contexto de una generación seleccionando Herramientas > Aplicar
Transformaciones.
Estas transformaciones se ejecutan en los objetos generados en su modelo de destino.
6. Haga clic en Aplicar para guardar sus cambios.

Desarrollo de scripts de transformación


Los scripts de transformación se escriben en VBScript usando una cierta cantidad de métodos
especiales. Los scripts de transformación no requieren tantas comprobaciones como los
scripts estándar, porque siempre se implementan en un nuevo modelo temporal, vacío, que
se fusiona con el modelo de destino de generación.
Dado que un objeto de origen se puede transformar y tener varios destinos, es posible que
tenga problemas para identificar el origen de un objeto, especialmente en el cuadro de
diálogo de combinación. El siguiente mecanismo se utiliza para ayudar a identificar el
origen de un objeto:

Personalización y ampliación de PowerDesigner 105


CAPÍTULO 2: Archivos de extensión

• Si el objeto de origen se transforma en un único objeto, la transformación se utiliza como


identificador interno del objeto de destino.
• Si el objeto de origen se transforma en varios objetos, puede definir una etiqueta
específica para identificar el resultado de la transformación. Debe usar solo caracteres
alfanuméricos y le recomendamos que use un valor "estable", como un estereotipo, que
no se modificará durante las generaciones repetitivas.
Los siguientes métodos están disponibles al escribir un script de transformación:
• CopiarObjeto(fuente[,etiqueta])
Duplica un objeto existente, establece una fuente para el objeto duplicado y devuelve una
copia del nuevo objeto.
• EstablecerFuente(fuente,objetivo[,etiqueta])
Establece el objeto de origen de un objeto generado. Se recomienda establecer siempre
el objeto de origen para realizar un seguimiento del origen de un objeto generado.
• ObtenerFuente(objetivo[,etiqueta])
Recupera el objeto de origen de un objeto generado.
• ObtenerObjetivo(fuente[,etiqueta])
Recupera el objeto de destino de un objeto de origen.
Los objetos de transformación internos se conservan cuando las transformaciones se utilizan
a través de Aplicar transformaciones o un comando de menú personalizado, de modo que se
puedan volver a ejecutar si actualiza (regenera) el modelo posteriormente. Por ejemplo,
genera una entidad CDM A a una clase B de OOM y luego aplica una transformación a la
clase B para crear la clase C. Si realiza cambios en la entidad A y repite la generación para
actualizar la OOM, la clase B se actualiza y la transformación se vuelve a aplicar
automáticamente para actualizar la clase C.
Importaciones XML (perfil)

Las importaciones de XML le permiten definir asignaciones entre un esquema XML y el


metamodelo de PowerDesigner (y cualquier extensión) para permitir la importación de
archivos XML que cumplan con el esquema. Puede especificar secuencias de comandos de
inicialización y posprocesamiento para gestionar las complejidades de la importación.
Para obtener una descripción general de la creación, implementación y uso de
importaciones XML, consulte la Guía de funciones principales > Modelado con
PowerDesigner > Objetos > Importación de objetos desde archivos XML.

1. [si la categoría Importaciones XML no está presente] Haga clic con el botón derecho en
el nodo raíz, seleccione Agregar elementos, seleccione Importaciones XML y haga clic
en Aceptar para crear esta carpeta.

106 PowerDesigner
CAPÍTULO 2: Archivos de extensión

2. Haga clic con el botón derecho en la carpeta Importaciones XML y seleccione Nuevo
para crear una importación XML.
3. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Nombre Especifica el nombre de la importación, que se utilizará como nombre del


comando de importación en Archivo > Importar.

primer diagrama Especifica el primer diagrama que debe inicializarse en el modelo creado a
partir del archivo importado.

Crear símbolos Especifica la creación de símbolos para los objetos importados en el


predeterminados diagrama.

Extensión de Especifica la extensión de archivo que identifica los documentos XML que
archivo se ajustan al esquema.

Comentario Proporciona una explicación de la importación u otra información


adicional.
4. Haga clic en la pestaña Esquema y haga clic en la herramienta Importar para copiar el
esquema, con cualquier importación e inclusión resueltas, en el archivo de extensión para
la asignación.

¡Advertencia!Si el esquema seleccionado es demasiado permisivo y admite demasiadas


jerarquías de objetos posibles, puede que no sea posible mostrarlo completamente en el
Editor de asignaciones. Si tiene un archivo de datos XML de ejemplo para importar,
puede importarlo en lugar del esquema haciendo clic en la herramienta Importar desde
muestra y PowerDesigner deducirá un esquema parcial de él. Tenga en cuenta que si bien
un esquema obtenido de esta manera puede importar con éxito el archivo de datos de
muestra, es posible que otros documentos basados en el mismo esquema no estén
completos si contienen otros tipos de objetos (o atributos o colecciones) que, aunque son
válidos para el esquema, fueron no en el primer documento.

Puede hacer clic en la herramienta Ver como modelo para abrir el esquema como un
modelo de esquema XML.
5. [opcional] Haga clic en la pestaña Extensiones y seleccione archivos de extensión que
contengan extensiones al metamodelo estándar de PowerDesigner para proporcionar
metaclases adicionales (consulte Extended
Objetos, Sub-Objetos y Vínculos (Perfil) en la página 36), atributos (ver Atributos
Extendidos
(Perfil) en la página 41) y colecciones (consulte Colecciones y composiciones
extendidas (Perfil) en la página 48) para mapear su esquema XML.

Personalización y ampliación de PowerDesigner 107


CAPÍTULO 2: Archivos de extensión

Adjuntar archivos de extensión de esta manera le permite reutilizar extensiones


previamente definidas en sus importaciones o compartir extensiones entre importaciones.
También puede definir extensiones en la categoría Perfil en el archivo de recursos que
contiene la definición de importación XML, o crearlas dinámicamente al crear sus
asignaciones de importación.
6. [opcional] Haga clic en la pestaña Inicialización e ingrese VBScript para ejecutar en el
momento de la creación del modelo antes de importar cualquier objeto. Puede acceder a
funciones de biblioteca compartida y atributos estáticos definidos para su reutilización
en el archivo de recursos desde la pestaña Global Script (consulte Global Script (Perfil)
en la página 105).
7. [opcional] Haga clic en la pestaña Posprocesamiento e ingrese VBScript para ejecutar
después de que se hayan importado todos los objetos.
8. Haga clic en la pestaña General y haga clic en el botón Asignaciones para definir las
asignaciones de las metaclases identificadas en su esquema XML a las del metamodelo
de PowerDesigner en el Editor de asignaciones (consulte Asignaciones de importación
XML en la página 97).
9. Haga clic en Aplicar para guardar sus cambios.

Asignaciones de importación XML


Usted controla cómo se importan los elementos definidos en un esquema XML asignándolos
junto con sus atributos, composiciones y agregaciones a objetos en el metamodelo de
PowerDesigner. El esquema XML se analiza y se presenta como una lista de metaclases en
el lado izquierdo del Editor de mapas y el metamodelo de PowerDesigner (y cualquier
extensión) se muestran en el lado derecho.

Nota:No es necesario mapear todas las metaclases (o todo su contenido), sino solo aquellas
con las que se quiere trabajar. Si el metamodelo de PowerDesigner no contiene las
metaclases, los atributos, las composiciones o las agregaciones adecuadas para mapear,
puede crearlas dinámicamente aquí o guardar las asignaciones existentes, cerrar el Editor de
asignaciones, definir o adjuntar las extensiones apropiadas y luego volver a abrir el Editor
de asignaciones para mapa para ellos.

1. Arrastre y suelte una metaclase externa en una metaclase de PowerDesigner para crear
una asignación de importación. Todos los atributos y colecciones externos se asignan
automáticamente a los atributos de PowerDesigner con los que comparten un nombre:

108 PowerDesigner
CAPÍTULO 2: Archivos de extensión

De forma predeterminada, el Editor de asignaciones enumera los atributos estándar y las


colecciones de metaclases, que normalmente se muestran en las hojas de propiedades de
los objetos. Para mostrar todas las propiedades disponibles, haga clic en la herramienta
Filtrar propiedades y seleccione Mostrar todas las propiedades. También puede filtrar el
árbol mediante las herramientas Filtrar asignaciones y Filtrar objetos.

Nota:Si no existe una metaclase adecuada, para crear y asignar una nueva metaclase
extendida basada en la metaclase ExtendedObject, arrastre y suelte la metaclase externa
en la raíz del metamodelo de PowerDesigner.

2. Arrastre y suelte atributos adicionales debajo de la metaclase a los atributos de


PowerDesigner con tipos de datos compatibles para crear asignaciones para ellos. Los
atributos están contenidos en una carpeta debajo de la metaclase y representan
propiedades individuales como Nombre, Tamaño, Tipo de dimensión, que tienen valores
booleanos, textuales, numéricos o de ID de objeto:

PowerDesigner identifica metaclases de subobjetos en el esquema que están limitadas a


una sola instancia y muestra una superposición de 1 en sus iconos. Los atributos de dichas
metaclases se tratan como pertenecientes a la metaclase principal y se pueden asignar a
atributos del objeto PowerDesigner con el que se asigna el principal:

Personalización y ampliación de PowerDesigner 109


CAPÍTULO 2: Archivos de extensión

Nota:Si no existe un atributo adecuado, para crear y asignar un nuevo atributo extendido,
arrastre y suelte el atributo externo en la metaclase de PowerDesigner a la que está
asignado su padre.

3. Arrastre y suelte metaclases de subobjetos externos (composiciones) debajo de la


metaclase a las composiciones de PowerDesigner para crear asignaciones entre ellas:

Cualquier atributo bajo la metaclase de subobjetos se asigna automáticamente a


Atributos de PowerDesigner con los que comparten nombre. Asigne otros atributos de
subobjetos según sea necesario.

Nota:En determinadas circunstancias, puede ser adecuado asignar una metaclase de


subobjeto externo a una metaclase de objeto de PowerDesigner, por lo que también se
permiten dichas asignaciones.
4. Arrastre y suelte colecciones externas (agregaciones) bajo la metaclase a las colecciones
de PowerDesigner para crear asignaciones entre ellas:

5. En ciertos esquemas, puede ser necesario identificar atributos como referencias e


identificadores para vincular una metaclase con otra mediante agregación:
a) Haga clic con el botón derecho en un atributo y seleccione Declarar como referencia
de objeto para especificar que actúa como un puntero a otro objeto. Dichos atributos
suelen tener un tipo de GUID, Token o NCName (PowerDesigner identifica
automáticamente los atributos de tipo IDRef como referencias). Se agrega una
superposición de flecha redondeada al ícono de atributo:

110 PowerDesigner
CAPÍTULO 2: Archivos de extensión

b) Abra la metaclase a la que apunta el objeto, seleccione su atributo de identificación,


haga clic con el botón derecho y seleccione Declarar como identificador único. Se
agrega una superposición de clave al ícono de atributo:

c) El atributo de referencia del objeto ahora se puede asignar a un atributo de


PowerDesigner de typeobject (que también lleva una superposición de flecha
redondeada):

6. [opcional] Seleccione una metaclase e ingrese un script de inicialización o


posprocesamiento para modificar los objetos durante o después de la creación (consulte
Propiedades de asignación de metamodelo en la página 100).
7. [opcional] Haga clic en el modelo de destino (nodo raíz) para mostrar la lista global de
asignaciones en el panel Asignaciones en la parte inferior del cuadro de diálogo y utilice
las flechas en la parte inferior de la lista para cambiar el orden en que se importan los
objetos para asegurarse de que Se respetan las dependencias.

Nota:Para controlar el orden en que los atributos, las composiciones y las agregaciones
se importan dentro de los objetos, seleccione la metaclase de destino para mostrar sus
asignaciones en el panel Asignaciones y use las flechas en la parte inferior de las listas
en las Asignaciones de atributos, Asignaciones de colección y Sub -Subpestañas
Asignaciones de objetos.

8. Haga clic en Aplicar para guardar sus cambios.

Propiedades de asignación de metamodelo


Las asignaciones de metamodelo son asignaciones entre objetos de metamodelo, que
controlan cómo se importan o generan los objetos. Las asignaciones de metamodelos son
subobjetos del objeto de metamodelo de PowerDesigner en el que se definen.
Para abrir una hoja de propiedades de asignación de metamodelo, seleccione la asignación
de la lista en la parte superior del panel Asignaciones del Editor de asignaciones o la ficha

Personalización y ampliación de PowerDesigner 111


CAPÍTULO 2: Archivos de extensión

Asignación de la hoja de propiedades del objeto principal y haga clic en la herramienta


Propiedades.

Las pestañas disponibles en una hoja de propiedades de asignación en particular dependen


de los objetos que se están asignando. La pestaña General contiene las siguientes
propiedades:
Propiedad Descripción

Objeto fuente Especifica el objeto de metamodelo que se asigna al objeto de destino.

Objeto de Especifica el objeto del metamodelo que se está asignando desde el objeto de
destino origen. Este objeto es el padre de la propia asignación.

Propiedad Descripción

Guión de [asignaciones de metaatributos] Especifica un script para establecer el valor del


transformación atributo. En el siguiente ejemplo, desde una importación XML, el atributo no
anulable se importa al atributo Obligatorio y, debido a que el sentido de los
atributos se invierte, el valor booleano importado se establece en el opuesto del
valor de origen:
Sub %Conjunto%(obj, valorfuente)
obj.SetAttribute "Obligatorio", no sourceValue End
Sub
En el siguiente ejemplo, a partir de la generación de un objeto, el atributo
NumberID se genera para el atributo Comentario y se antepone una cadena de texto
para aclarar el origen del valor:

Función %AdjustValue%(sourceValue, sourceObject,


targetObject)
Valor objetivo atenuado
targetValue = "El NumberID del proceso original es "
+cstr(valorfuente)
%AdjustValue% = valor objetivo
función final

Las siguientes pestañas también están disponibles para asignaciones de metaclases:


• Inicialización- Especifica un script para inicializar la metaclase a crear. En el siguiente
ejemplo, el valor del atributo Stereotype se establece en SimpleType:
Sub %Inicializar%(obj)
obj.Stereotype = "SimpleType" End Sub
• Asignaciones de atributos- Muestra las asignaciones de atributos bajo la metaclase.
Seleccione una asignación y haga clic en la herramienta Propiedades para abrir su hoja

112 PowerDesigner
CAPÍTULO 2: Archivos de extensión

de propiedades. Para controlar el orden en que se crean los atributos, con el fin de respetar
las dependencias entre ellos, utilice las flechas en la parte inferior de la lista.
• Asignaciones de colecciones- Muestra las asignaciones de colecciones bajo la metaclase.
• Proceso después de- Especifica un script para modificar la metaclase después de la
creación y ejecución de asignaciones. En el siguiente ejemplo, el valor del atributo
Código se copia en el atributo Nombre:
Sub %PostProcess%(obj)
' Copia el código en el
nombre obj.Name =
obj.Code End Sub

Propiedades del objeto del metamodelo


Para ver las propiedades de las metaclases, los metaatributos y las metacolecciones que se
muestran en el Editor de asignaciones, haga doble clic en el nodo del objeto en el Editor de
asignaciones o haga clic con el botón derecho en el nodo y seleccione Propiedades.
La pestaña General contiene las siguientes propiedades:
Propiedad Descripción

Padre [metaatributos y metacolecciones] Especifica la metaclase a la que pertenece el


metaobjeto.

colección [subobjetos/composiciones] Especifica el nombre de la colección de composición


principal que contiene los subobjetos bajo el objeto principal.

Nombre Especifica el nombre de la metaclase en el metamodelo o esquema XML de


PowerDesigner.

Tipo de datos [metaatributos] Especifica el tipo de datos del atributo.

identificador [metaatributos] Especifica que el atributo se usa para identificar la metaclase para
hacer referencia a otra metaclase.

Referencia / [metaatributos y metacolecciones] Especifica que el atributo o colección se usa para


Ruta de apuntar a otra metaclase para formar una agregación.
referencia

único [metaclases] Especifica que solo es posible una instancia de la metaclase en cada
objeto principal.

Comentario Proporciona información adicional sobre el metaobjeto.

Las siguientes pestañas también están disponibles para las metaclases:

Personalización y ampliación de PowerDesigner 113


CAPÍTULO 2: Archivos de extensión

• Atributos- Lista los metaatributos pertenecientes a la metaclase. Seleccione un atributo


de la lista y haga clic en la herramienta Propiedades para abrir su hoja de propiedades.
• Colecciones- Lista las metacolecciones pertenecientes a la metaclase. Seleccione una
colección en la lista y haga clic en la herramienta Propiedades para abrir su hoja de
propiedades.

Generaciones de objetos (perfil)

Las generaciones de objetos le permiten definir asignaciones entre un tipo de modelo de


PowerDesigner y otro en función de los dos metamodelos (y cualquier extensión) para
habilitar la generación de uno o más tipos de objetos.
Para obtener una descripción general de la creación, implementación y uso de generaciones
de objetos, consulte Guía de características principales > Vinculación y sincronización de
modelos > Generación de modelos y objetos de modelo > Generación de objetos de modelo
> Definición de generaciones avanzadas de objetos.

1. [si la categoría Generaciones de objetos no está presente] Haga clic con el botón derecho
en el nodo raíz, seleccione Agregar elementos, seleccione Generaciones de objetos y haga
clic en Aceptar para crear esta carpeta.
2. Haga clic con el botón derecho en la carpeta Generaciones de objetos y seleccione Nuevo
para crear una generación de objetos.
3. Introduzca las siguientes propiedades según corresponda:
Propiedad Descripción

Tipo de Especifica el tipo de modelo que la generación creará o actualizará.


modelo
objetivo
Nombre del Especifica el nombre del comando que aparecerá en la interfaz en Herramientas
comando de > Generar objetos. Este campo se inicializa cuando selecciona un tipo de modelo
menú de destino.
Comentario Proporciona una descripción de la generación u otra información adicional.

4. [opcional] Haga clic en la pestaña Extensiones de origen y/o Extensiones de destino y


seleccione archivos de extensión que contengan atributos extendidos, colecciones o
metaclases para hacer referencia en sus asignaciones.
Adjuntar archivos de extensión de esta manera le permite reutilizar extensiones
previamente definidas en sus generaciones o compartir extensiones entre generaciones.
También puede definir extensiones según corresponda en la categoría Perfil en el
archivo de recursos que contiene la definición de generación.

114 PowerDesigner
CAPÍTULO 2: Archivos de extensión

5. Haga clic en el botón Asignaciones para definir asignaciones desde su origen a las
metaclases de destino en el Editor de asignaciones (consulte Asignaciones de generación
de modelo a modelo en la página 103).
6. Haga clic en Aplicar para guardar sus cambios.

Asignaciones de generación de modelo a modelo


Puede controlar cómo se generarán las metaclases de un tipo de modelo de PowerDesigner
en metaclases de otro tipo de modelo asignándolas junto con sus atributos y colecciones en
el Editor de asignaciones. Todas las extensiones definidas para los metamodelos de origen o
de destino se muestran y están disponibles para el mapeo.

Nota:No es necesario mapear todas las metaclases (o todo su contenido), sino solo aquellas
con las que se quiere trabajar. Si el metamodelo de PowerDesigner no contiene las
metaclases, los atributos, las composiciones o las agregaciones adecuadas para mapear,
debe guardar las asignaciones existentes, cerrar el Editor de asignaciones, definir o adjuntar
las extensiones apropiadas y luego volver a abrir el Editor de asignaciones para asignarlas.

1. Arrastre y suelte una metaclase desde el panel de origen de la izquierda a una metaclase
en el panel de destino de la derecha. Todos los atributos de origen se asignan
automáticamente a los atributos de destino con los que comparten un nombre:

Nota:De forma predeterminada, el Editor de asignaciones enumera los atributos


estándar y las colecciones de metaclases, que se muestran, de forma predeterminada, en
las hojas de propiedades de los objetos. Para mostrar todas las propiedades disponibles,
haga clic en la herramienta Filtrar propiedades y seleccione Mostrar todas las
propiedades. También puede filtrar el árbol mediante las herramientas Filtrar
asignaciones y Filtrar objetos.

Personalización y ampliación de PowerDesigner 115


CAPÍTULO 2: Archivos de extensión

2. Arrastre y suelte atributos de origen adicionales debajo de la metaclase a atributos de


destino con tipos de datos compatibles para mapearlos. Los atributos están contenidos en
una carpeta debajo de la metaclase y representan propiedades individuales como Nombre,
Tamaño, Tipo de dimensión, que contienen valores booleanos, textuales, numéricos o de
ID de objeto:
3. Arrastre y suelte las metaclases de subobjetos de origen (composiciones) debajo de la
metaclase a las composiciones de destino para crear asignaciones entre ellas:
Todos los atributos de la metaclase del subobjeto de origen se asignan automáticamente
a los atributos de destino con los que comparten un nombre. Asigne otros atributos de
subobjetos según sea necesario.

Nota:En ciertas circunstancias, puede ser apropiado mapear una metaclase de subobjeto
de origen a una metaclase de objeto de destino, por lo que también se permiten tales
mapeos.

4. Arrastre y suelte las colecciones de origen (agregaciones) bajo la metaclase a las


colecciones de destino para crear asignaciones entre ellas:
5. [opcional] Seleccione una metaclase e ingrese un script de inicialización o
posprocesamiento para modificar los objetos durante o después de la creación (consulte
Propiedades de asignación de metamodelo en la página 100).
6. [opcional] Haga clic en el modelo de destino (nodo raíz) para mostrar la lista global de
asignaciones en el panel Asignaciones en la parte inferior del cuadro de diálogo y use las
flechas en la parte inferior de la lista para cambiar el orden en que se generan los objetos
para asegurarse de que Se respetan las dependencias.

Nota:Para controlar el orden en que se generan los atributos, las composiciones y las
agregaciones, seleccione la metaclase de destino para mostrar sus asignaciones en el
panel Asignaciones y use las flechas en la parte inferior de las listas en Asignaciones de
atributos, Asignaciones de colecciones y Subobjetos. Subpestañas de Mapeos.

7. Haga clic en Aplicar para guardar sus cambios.


Guión global (perfil)

El perfil contiene una secuencia de comandos global, que puede usar para almacenar
funciones y variables para reutilizarlas en sus secuencias de comandos definidas para
extensiones.
Por ejemplo, podríamos imaginar escribir una función para obtener el tipo de datos de un
elemento y reutilizarlo en las secuencias de comandos para los ejemplos de comprobación

116 PowerDesigner
CAPÍTULO 2: Archivos de extensión

personalizada y autocorrección (consulte Comprobaciones personalizadas (perfil) en la


página 71.
La nueva función DataTypeBase se ingresa en la pestaña Global Script de la siguiente
manera:
Función DataTypeBase(tipo de datos)
posición tenue
posición = InStr(tipo de datos, "(")
Si la posición <> 0 Entonces
DataTypeBase = Ucase(Izquierda(tipo de datos, posición -1))
Demás
DataTypeBase = Ucase(tipo de datos)
Terminara si
función final

La secuencia de comandos para la verificación (consulte Ejemplo: Verificación


personalizada de PDM en la página 73) se puede reescribir para llamar a la función de la
siguiente manera:
Función %Comprobar%(obj)
Dim c 'columna de índice temporal
Dim col 'columna temporal
posición tenue
%Comprobar%= Verdadero
Si obj.tipo = "LF" o obj.tipo = "HG" o obj.tipo = "CMP" o obj.tipo
= "HNG" entonces
Para cada c en obj.IndexColumns
Establecer columna = c.columna
Si (DataTypeBase(col.datatype) = "VARCHAR") Y (col.length > 255)
Entonces
Salida "Tabla" & col.parent.name & "Columna" & col.name & ": El tipo
de datos no es compatible con Index" & obj.name & "type" & obj.type
%Comprobar% = Falso
Terminara si
Próximo
Terminara si
función final

Nota:Las variables definidas en la pestaña Global Script se reinicializan cada vez que se
hace referencia a ellas en otro script.

Personalización y ampliación de PowerDesigner 117


CAPÍTULO 3 Objeto, proceso y XML

Archivos de definición de idioma

Los archivos de definición de idioma proporcionan a PowerDesigner la información


necesaria para modelar, aplicar ingeniería inversa y generar para un determinado proceso
empresarial orientado a objetos o lenguaje XML. PowerDesigner proporciona archivos de
definición para muchos idiomas populares. Usted selecciona un idioma cuando crea un
OOM, BPM o XSM.
Los archivos de definición de idioma tienen una extensión .xol, .xpl o .xsl y se encuentran
en install_dir/Resource Files. Para ver la lista de idiomas, seleccione Herramientas >
Recursos > Idiomas de objetos > , Idiomas de proceso o Idiomas XML. Para obtener
información sobre las herramientas disponibles en las listas de archivos de recursos,
consulte el Capítulo 1, Archivos de recursos de PowerDesigner en la página 1.

Nota:El PDM utiliza una forma diferente de archivo de definición (consulte el Capítulo 4,
Archivos de definición de DBMS en la página 119), y otros tipos de modelos no tienen
archivos de definición pero se pueden ampliar con archivos de extensión (consulte el
Capítulo 2, Archivos de extensión en la página 11).

Todos los idiomas de destino tienen la misma estructura de categoría básica, pero los detalles
y valores de las entradas difieren para cada idioma:
• Configuración: contiene tipos de datos, constantes, nombres y categorías de eventos que
se utilizan para personalizar y administrar las funciones de generación. Los tipos de
elementos de esta categoría difieren según el tipo de archivo de recursos.
• Generación: contiene comandos, opciones y tareas de generación.
• Perfil: contiene extensiones en metaclases.

Personalización y ampliación de PowerDesigner 118


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

El nodo raíz de cada archivo contiene las siguientes propiedades:


Propiedad Descripción

Nombre / Especifique el nombre y el código del archivo de definición de idioma.


Código
Nombre del [solo lectura] Especifica la ruta al archivo de definición de idioma. Si el idioma
archivo de destino se ha copiado en su modelo, este campo está vacío.

Versión [solo lectura] Especifica la versión del repositorio si el recurso se comparte a


través del repositorio.

Familia / Especifica la familia y la subfamilia del idioma, lo que puede habilitar ciertas
Subfamilia funciones no predeterminadas en el modelo. Por ejemplo, lenguajes de objetos
de Java, XML, IDL y PowerBuilder®las familias apoyan la ingeniería inversa.

Habilitar Le permite obtener una vista previa de las plantillas utilizadas durante la
seguimiento generación (verPlantillas (Perfil)en la página 84). Antes de comenzar la
Modo generación, haga clic en la página Vista previa del objeto relevante y haga clic
en la herramienta Actualizar para mostrar las plantillas.
Cuando hace doble clic en una línea de seguimiento desde la página Vista previa,
el Editor de recursos se abre en la definición de plantilla correspondiente.

Personalización y ampliación de PowerDesigner 119


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

Comentario Especifica información adicional sobre el idioma de destino.

Categoría de configuración: lenguaje de proceso

La categoría Configuración contiene los siguientes elementos que se utilizan para controlar
los tipos de datos, las constantes, los nombres y las categorías de eventos que se utilizan para
personalizar y administrar las funciones de generación de BPM:
• Implementación – [solo BPM ejecutable] Reúne opciones que influyen en las
posibilidades de implementación del proceso. Las siguientes constantes están
definidas por defecto:
• LoopTypeList: esta lista define el tipo de bucle admitido por el idioma. El valor
debe ser un número entero.
• OperationTypeList: esta lista define el tipo de operación admitida por el idioma.
Un tipo de operación no admitido no se puede asociar con un proceso. El valor
debe ser un número entero.
• EnableEmissionCorrelation: habilita la definición de una correlación para un
mensaje emitido
• EnableProcessReuse: permite que otro proceso implemente un proceso
• AutomaticInvokeMode: indica si el tipo de acción de un proceso implementado
por una operación se puede deducir automáticamente del tipo de operación. Puede
especificar: • 0 (predeterminado): el tipo de acción no se puede deducir y
debe especificarse
• 1 - el lenguaje impone una solicitud-respuesta y una operación unidireccional para
ser recibida por el proceso y una solicitud-respuesta y una operación de notificación
para ser invocada por el proceso
• 2 el lenguaje garantiza que el proceso siempre reciba una operación de Solicitud-
Respuesta y de Notificación, mientras que el proceso siempre invoca las operaciones
de Solicitud-Respuesta y Unidireccional

120 PowerDesigner
CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

• Manejo de datos: [solo BPM ejecutable] Reúne opciones para administrar datos
en el idioma. Los siguientes valores constantes están definidos por defecto:
• EnableMessageOnFlow: indica si un formato de mensaje se puede asociar a un
flujo o no. El valor predeterminado es Sí
• EnableMessageVariable: permite que un objeto variable almacene todo el
contenido de un formato de mensaje. En este caso, los objetos de formato de
mensaje aparecerán en el cuadro combinado de tipo de datos de la variable
• Coreografía - Reúne objetos que permiten el diseño del gráfico de actividades
(inicio, final, decisión, sincronización, transición...) Contiene los siguientes
valores constantes definidos por defecto:
• EnableMultipleStarts: cuando se establece en No, garantiza que no se defina más
de un inicio en un proceso compuesto
• EnableTopLevelChoreography: cuando se establece en No, garantiza que ningún
objeto de flujo o coreografía (inicio, fin, decisión...) se defina directamente bajo
el modelo o paquete. Estos objetos solo se pueden definir bajo un proceso
compuesto.

Configuración Categoría: Lenguaje de objetos

Personalización y ampliación de PowerDesigner 121


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

La categoría Configuración contiene los siguientes elementos que se usan para controlar los
tipos de datos, las constantes, los nombres y las categorías de eventos que se usan para
personalizar y administrar las funciones de generación de OOM:
• Tipos de datos: tablas para mapear tipos de datos internos con tipos de datos de
lenguaje de objetos. Los siguientes valores de tipos de datos se definen de forma
predeterminada:
• BasicDataTypes: enumera los tipos de datos más utilizados. La columna Valor
indica el tipo de datos conceptuales utilizados para las generaciones de modelos
CDM y PDM.
• ConceptualDataTypes: enumera los tipos de datos internos de PowerDesigner. La
columna Valor indica el tipo de datos del idioma del objeto utilizado para las
generaciones de modelos CDM y PDM.
• AdditionalDataTypes: enumera los tipos de datos adicionales agregados a las
listas de tipos de datos. Puede usarse para agregar o cambiar sus propios tipos de
datos. La columna Valor indica el tipo de datos conceptuales utilizados para las
generaciones de modelos CDM y PDM.
• DefaultDataType: especifica el tipo de datos predeterminado.

• Constantes: contiene la asignación entre las siguientes constantes y sus valores


predeterminados: Nulo, Verdadero, Falso, Anulado, Bool.
• Namings: contiene parámetros que influyen en lo que se incluirá en los archivos
que genere desde un OOM:

122 PowerDesigner
CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

• GetterName: nombre y valor para operaciones getter


• GetterCode - Código y valor para operaciones getter
• SetterName: nombre y valor para las operaciones de establecimiento.
• SetterCode - Código y valor para operaciones de establecimiento
• IllegalChar: enumera los caracteres ilegales para el idioma del objeto. Esta lista
completa el campo Caracteres no válidos en Herramientas > Opciones de modelo
> Convención de nomenclatura. Por ejemplo, "/!=<>""'()"
• Eventos: define eventos estándar en las operaciones. Esta categoría puede
contener eventos existentes predeterminados, como constructores y destructores,
según el lenguaje del objeto. Un evento está vinculado a una operación y el
contenido de la categoría Eventos se muestra en la lista de eventos
en las hojas de propiedades de operación para describir los eventos que puede utilizar
una operación. En PowerBuilder por ejemplo, la categoría Eventos se utiliza para
asociar operaciones con eventos de PowerBuilder.

Configuración Categoría: Lenguaje XML

La categoría Configuración contiene la categoría Tipos de datos que muestra una asignación
de tipos de datos internos con tipos de datos de lenguaje XML.
Los siguientes valores de tipos de datos se definen de forma predeterminada:
• Tipos de datos conceptuales: la columna Valor indica el tipo de datos del lenguaje XML
utilizado para las generaciones de modelos. Los tipos de datos conceptuales son los tipos
de datos internos de PowerDesigner y no se pueden modificar.
• XsmDataTypes: tipos de datos para generaciones del modelo XML.

Categoría de generación

La categoría Generación contiene categorías y entradas para definir y activar un proceso de


generación.
Están disponibles las siguientes subcategorías:
• Comandos: contiene comandos de generación, que se pueden ejecutar al final del
proceso de generación, después de la generación de todos los archivos. Los comandos
están escritos en GTL (consulte el Capítulo 5, Personalización de la generación con
GTL en la página 245) y deben incluirse dentro de las tareas que se van a evocar.

Personalización y ampliación de PowerDesigner 123


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

• Opciones: contiene opciones, disponibles en la pestaña Opciones del cuadro de


diálogo Generación, cuyos valores se pueden probar mediante plantillas o comandos
de generación. Puede crear opciones que tomen valores booleanos, de cadena o de
lista. Se puede acceder al valor de una opción en una plantilla usando la siguiente
sintaxis:
%GenOptions.opción%
Por ejemplo, para una opción booleana llamada GenerateComment,
%GenOptions.GenerateComment% se evaluará como verdadero o
falso en una plantilla, según el valor especificado en la
pestaña Opciones del cuadro de diálogo Generación.
• Tareas: contiene tareas, disponibles en la pestaña Tareas del cuadro de diálogo
Generación, y que contienen listas de comandos de generación. Cuando se selecciona
una tarea, los comandos incluidos en ella se recuperan y sus plantillas se evalúan y
ejecutan.

Ejemplo: agregar una opción de generación


En este ejemplo, agregaremos una opción de generación al lenguaje de objetos Java.

1. Seleccione Idioma > Editar idioma del objeto actual para abrir el archivo de recursos de
Java.
2. Expanda la categoría Generación y luego haga clic con el botón derecho en la categoría
Opciones y seleccione Nuevo:

124 PowerDesigner
CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

3. Haga clic en Aceptar para guardar los cambios y volver al modelo. A continuación,
seleccione Idioma > Generar código Java para abrir el cuadro de diálogo Generación y
haga clic en la pestaña Opciones. La nueva opción aparece en la pestaña debajo de su
comentario (o su nombre, si no se ha proporcionado ningún comentario):

Personalización y ampliación de PowerDesigner 125


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

Nota:Para obtener información detallada sobre la creación y modificación de plantillas


de generación, consulte el Capítulo 5, Personalización de la generación con GTL en la
página 245.

Ejemplo: agregar un comando y una tarea de generación


En este ejemplo, agregaremos un comando de generación y una tarea asociada al lenguaje
de objetos Java.

1. Cree un nuevo OOM para Java y luego seleccione Idioma > Editar idioma del objeto
actual.
2. Expanda la categoría Generación y luego haga clic con el botón derecho en la categoría
Comandos y seleccione Nuevo.
3. Nombre el comando DoCommand e ingrese una plantilla apropiada:

126 PowerDesigner
CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

4. Haga clic con el botón derecho en la categoría Tareas y seleccione Nuevo. Nombre la
tarea Ejecutar, haga clic en la herramienta Agregar comandos, seleccione DoCommand
de la lista y luego haga clic en Aceptar para agregarlo a la nueva tarea:

Personalización y ampliación de PowerDesigner 127


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

5. Haga clic en Aceptar para guardar los cambios y volver al modelo. Luego seleccione
Idioma >
Generar código Javapara abrir el cuadro de diálogo Generación y haga clic en la pestaña
Tareas. La nueva tarea aparece en la pestaña debajo de su comentario (o su nombre, si no
se ha proporcionado ningún comentario):

128 PowerDesigner
CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

Categoría de perfil (archivos de definición)

La categoría de perfil del archivo de definición de idioma puede contener estereotipos,


atributos extendidos, métodos, etc., para extender las metaclases definidas en el metamodelo
de PowerDesigner.
En los lenguajes de objetos, la categoría Tipos de atributos compartidos/extendidos contiene
varios atributos que se utilizan para controlar la compatibilidad con el lenguaje de objetos
dentro de PowerDesigner. La variable Object Container especifica el contenedor
predeterminado para implementar asociaciones. Este atributo tiene una lista editable de
valores posibles para cada idioma del objeto, desde la cual puede seleccionar un valor
predeterminado para su idioma. Si es necesario, puede anular este valor predeterminado
mediante la opción Modelo de contenedor de asociación predeterminado.
Para obtener información detallada sobre cómo trabajar con la categoría Perfil, consulte el
Capítulo 2, Archivos de extensión en la página 11.

Personalización y ampliación de PowerDesigner 129


CAPÍTULO 3: Archivos de definición de objetos, procesos y lenguaje XML

130 PowerDesigner
CAPÍTULO 4Archivos de definición DBMS

El archivo de definición de DBMS proporciona a PowerDesigner la información necesaria


para modelar, aplicar ingeniería inversa y generar para un DBMS en particular.
PowerDesigner proporciona archivos de definición para los DBMS más populares.
Selecciona un DBMS cuando crea un PDM.
Los archivos de definición de DBMS tienen una extensión .xdb y se encuentran en
install_dir/
Archivos de recursos/DBMS. Para ver la lista de DBMS,
seleccione Herramientas > Recursos > DBMS. Para obtener
información sobre las herramientas disponibles en las listas
de archivos de recursos, consulte el Capítulo 1, Archivos de
recursos de PowerDesigner en la página 1.
Puede consultar o modificar el archivo de definición DBMS adjunto a su PDM en el Recurso
Editor seleccionando Base de datos > Editar DBMS actual. Cuando selecciona una categoría
o un elemento en el panel izquierdo, el nombre, el valor y el comentario relacionado aparecen
en el lado derecho del cuadro de diálogo.

¡Advertencia!Le recomendamos encarecidamente que haga una copia de seguridad de los


archivos de recursos entregados con PowerDesigner antes de editarlos.

Cada archivo DBMS tiene la siguiente estructura:


• General: contiene información general sobre la base de datos, sin ninguna categoría
(consulte Categoría general (DBMS) en la página 134). Todos los elementos
definidos en la categoría General se aplican a todos los objetos de la base de datos.
• Script: se utiliza para la generación y la ingeniería inversa. Contiene las siguientes
subcategorías:
• SQL: contiene las siguientes subcategorías, cada una de las cuales contiene
elementos cuyos valores definen la sintaxis general de la base de datos:
• Sintaxis: parámetros generales para la sintaxis SQL (consulte Categoría de sintaxis
en la página 135)
• Formato: parámetros para los caracteres permitidos (consulte Categoría de formato
en la página 136)
• Archivo: encabezado, pie de página y elementos de texto de uso utilizados durante la
generación (consulte Categoría de archivo en la página 138)
• Palabras clave: la lista de palabras y funciones reservadas de SQL (consulte Categoría
de palabras clave en la página 140)

Personalización y ampliación de PowerDesigner 131


CAPÍTULO 4: Archivos de definición DBMS

• Objetos: contiene comandos para crear, eliminar o modificar todos los objetos de la
base de datos. También incluye comandos que definen el comportamiento de los
objetos, los valores predeterminados, las consultas SQL necesarias, las opciones de
ingeniería inversa, etc. (consulte Categoría de secuencias de comandos/objetos
(DBMS) en la página 142).
• Tipo de datos: contiene la lista de tipos de datos válidos para el DBMS especificado
y los tipos correspondientes en PowerDesigner (consulte Categoría de secuencia de
comandos/tipo de datos (DBMS) en la página 197).
• Personalizar: recupera información de los archivos de definición DBMS de
PowerDesigner versión 6. No se utiliza en versiones posteriores.
• ODBC: presente solo si el DBMS no admite declaraciones estándar para la
generación. En este caso, la categoría ODBC contiene elementos adicionales
necesarios para la generación de conexiones de bases de datos en vivo.
• Perfiles de transformación: contiene un grupo de transformaciones utilizadas durante
la generación del modelo cuando necesita aplicar cambios a los objetos en los
modelos de origen o de destino (consulte Transformaciones (perfil) en la página 92).
• Perfil: le permite definir tipos de atributos extendidos y atributos extendidos para
objetos de base de datos (consulte Categoría de perfil (DBMS) en la página 200).
Las siguientes propiedades están disponibles en la raíz de un archivo de definición de DBMS:
Propiedad Descripción

Nombre / Nombre y código del DBMS.


Código
Nombre del [solo lectura] Ruta y nombre del archivo DBMS.
archivo
Familia Se utiliza para clasificar un DBMS y para establecer un vínculo entre diferentes
archivos de recursos de bases de datos. Por ejemplo, Sybase AS Anywhere y Sybase
AS Enterprise pertenecen a la familia SQL Server.
Los disparadores se conservan cuando cambia el objetivo dentro de la misma
familia.
La interfaz de combinación permite combinar modelos de la misma familia.
Comentario Información adicional sobre el DBMS

Plantillas de disparadores, elementos de plantillas de


disparadores y procedimiento
Plantillas

132 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Se puede acceder a las plantillas de activador de DBMS, los elementos de plantilla de


activador y las plantillas de procedimiento a través de las pestañas de la ventana Editor de
recursos. Además, para Oracle, hay una pestaña para plantillas de paquetes de bases de datos.
Las plantillas para procedimientos almacenados se definen en la categoría Procedimiento en
la vista de árbol DBMS.
Para obtener más información, consulte Modelado de datos > Creación de modelos de datos
> Desencadenadores y procedimientos

Generación de Bases de Datos e Ingeniería Inversa

PowerDesigner admite la generación y la ingeniería inversa de bases de datos a través de


scripts y conexiones en vivo a través de declaraciones SQL y consultas almacenadas en la
categoría Script/Objects. La generación y la ingeniería inversa de secuencias de comandos y
la generación a una conexión en vivo usan las mismas declaraciones, mientras que la
ingeniería inversa desde una conexión en vivo usa consultas separadas.
PowerDesigner realiza la generación y la ingeniería inversa de la siguiente manera:
• Base de datos de generación/actualización: cada objeto de modelo seleccionado se
aplica a las declaraciones en la categoría Script/Objetos.
• Ingeniería inversa:
• Script: PowerDesigner analiza el script e identifica las declaraciones de creación de
objetos comparándolas con las declaraciones en la categoría Script/Objetos.
• Conexión en vivo: PowerDesigner utiliza las consultas en la categoría Script/Objetos
para recuperar información de las tablas del sistema de la base de datos. Cada columna
de un conjunto de resultados de consulta está asociada con una variable. El encabezado
de consulta especifica la asociación entre las columnas del conjunto de resultados y la
variable. Los valores de los registros devueltos se almacenan en estas variables que
luego se confirman como atributos de objeto.

Generación de guiones
PowerDesigner puede generar un script SQL desde un PDM para crear o modificar una base
de datos. Las sentencias que controlan la generación de scripts están disponibles en la
categoría Script/Objetos.
Al generar un script SQL, PowerDesigner toma cada objeto que se va a crear por turnos y
aplica la instrucción Create adecuada u otra declaración para crear o modificar el objeto:

• Crear: crea un nuevo objeto.


• Alterar/Modificar: modifica los atributos de un objeto
existente.

Personalización y ampliación de PowerDesigner 133


CAPÍTULO 4: Archivos de definición DBMS

• Agregar: crea un nuevo subobjeto. Si las claves se definen


dentro de una tabla, se crearán con una instrucción Add,
pero si se crean fuera de la tabla, se crearán con una
instrucción Modify de tabla.
• Renombrar: cambia el nombre de un objeto.
• Soltar - Suelta un objeto (para usar cuando una instrucción
Alter no es posible).
• ObjetoComentario: agrega un comentario sobre el objeto.
• Opciones: define las opciones físicas de un objeto.
• ConstName: define la plantilla de nombre de restricción para
las comprobaciones de objetos.

Por ejemplo, en Sybase ASE 15.7, la instrucción Crear en la categoría Tabla es la siguiente:
crear tabla [%CALIFICADOR%]%TABLA%
(
%TABLDEFN%
)
[%OPCIONES%]

Esta declaración contiene los parámetros para crear la tabla junto con su propietario y
opciones físicas usando variables (ver Variables para Tablas y Vistas en la página 216) que
extraen la información necesaria de las propiedades del objeto. La variable %TABLDEFN%
recopila los elementos Agregar en las categorías Columna, PKey, Clave y Referencia, y el
elemento AddTableCheck en la categoría Tabla.
Se utilizan otras declaraciones en las categorías de objetos para personalizar la interfaz y el
comportamiento de PowerDesigner de acuerdo con las características de la base de datos,
como Maxlen, Permission, EnableOwner y AllowedADT.

Generación extendida con declaraciones de antes y después


Puede ampliar las declaraciones de generación de secuencias de comandos para
complementar la generación mediante las declaraciones de extensión. El mecanismo de
extensión le permite generar sentencias inmediatamente antes o después de las sentencias
Create, Drop y Modify, y recuperar estas sentencias durante la ingeniería inversa.
Las declaraciones de extensión están escritas en GTL (consulte el Capítulo 5, Personalizar
la generación con GTL en la página 245). Durante la generación, las declaraciones y
variables se evalúan y el resultado se agrega al script global.

Nota:Le recomendamos que evite el uso de macros GTL (que no sean .if) en los scripts de
generación, ya que es posible que no se puedan resolver con la ingeniería inversa por script.
La generación y la ingeniería inversa a través de una conexión de base de datos activa no
están sujetas a esta limitación.

134 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Ejemplo: agregar una instrucción AfterCreate


La instrucción de extensión AfterCreate se define en la categoría Tabla para complementar
la instrucción Crear de la tabla agregando particiones a la tabla si el valor del atributo
extendido de la partición lo requiere:
.if (%ExtTablePartition% > 1)
%Crear partición%
ir .endif

La macro .if evalúa la variable %ExtTablePartition%, que es un atributo extendido que


contiene el número de particiones de la tabla. Si el valor es superior a 1, entonces
%CreatePartition%, definido en la categoría Tabla, se generará de la siguiente manera:
modificar tabla [%QUALIFIER%]%TABLE%
partición %ExtTablePartition%

Este elemento genera la instrucción para crear el número de particiones de tabla especificado
en
%ExtTablePartition%.

Ejemplo: agregar una instrucción BeforeCreate


La instrucción de extensión BeforeCreate se define en la categoría Usuario para crear el
inicio de sesión de un usuario antes de que se ejecute la instrucción Create del usuario:
sp_addlogin %Nombre%
%Contraseña% ir

El inicio de sesión generado automáticamente tendrá el mismo nombre que el usuario y su


contraseña. La declaración BeforeCreate se muestra antes de la declaración de creación de
usuario en la vista previa:

Personalización y ampliación de PowerDesigner 135


CAPÍTULO 4: Archivos de definición DBMS

Ejemplo: declaraciones de modificación


También puede agregar sentencias BeforeModify y AfterModify a las sentencias Modify
estándar.
Las declaraciones de modificación se ejecutan para sincronizar la base de datos con el
esquema creado en el PDM. De forma predeterminada, la función de modificación de la
base de datos no tiene en cuenta los atributos extendidos cuando compara los cambios
realizados en el modelo de la última generación. Puede omitir esta regla agregando
atributos extendidos en el elemento de la lista ModifiableAttributes. Los atributos
extendidos definidos en esta lista se tendrán en cuenta en el cuadro de diálogo de
combinación durante la sincronización de la base de datos.
Para detectar que se ha modificado un valor de atributo extendido, puede utilizar las
siguientes variables:
• %OLDOBJECT% - para acceder a un valor antiguo del objeto
• %NEWOBJECT% - para acceder a un nuevo valor del objeto

Por ejemplo, puede verificar que el valor del atributo extendido ExtTablePartition se haya
modificado usando la siguiente sintaxis GTL:
.if (%OLDOBJECT.ExtTablePartition% != %NEWOBJECT.ExtTablePartition%)

Si se cambió el valor del atributo extendido, se generará una declaración extendida para
actualizar la base de datos. En la sintaxis de Sybase ASE, la declaración extendida

136 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

ModifyPartition es la siguiente porque en caso de cambio de partición, debe eliminar la


partición anterior y luego volver a crearla:
.if (%OLDOBJECT.ExtTablePartition% != %NEWOBJECT.ExtTablePartition%)
.if (%NEWOBJECT.ExtTablePartition% > 1)
.if (%OLDOBJECT.ExtTablePartition% > 1)
%DropPartition%
.terminara si
%Crear partición%
.demás
%DropPartition%
.terminara si
.terminara si
Ingeniería inversa de guiones
PowerDesigner puede realizar ingeniería inversa de secuencias de comandos SQL en un
PDM. Las sentencias que controlan la generación de scripts están disponibles en la categoría
Script/Objetos.
Cuando aplica ingeniería inversa a un script SQL en un PDM, PowerDesigner compara cada
declaración a su vez con todas las declaraciones Create definidas en el archivo de definición
DBMS y, cuando encuentra una coincidencia, extrae toda la información disponible para
crear o actualizar objetos PDM.
Las instrucciones que se utilizan en la ingeniería inversa de secuencias de comandos son las
mismas que para la generación de secuencias de comandos (consulte Generación de
secuencias de comandos en la página 121).
Por ejemplo, en Sybase IQ v15.2, la instrucción Crear en la categoría Tabla es la siguiente:
crear[%ExtGlobalTemporaryTable%? tabla temporal global]
[%CALIFICADOR%]%TABLA% (
%TABLDEFN%
)[.Z:[[%R%?[.O:[en][activado]]
%DBSpace%:[%DBSpace%? en
%DBSpaceGeneratedName%]]][
al confirmar %OnCommit%][%NotTransactional%? no transaccional][ en
%.q:At%][%R%?partición por rango %RevPartition%:[%PartitionKey
%?[%hasLifecycle%?: partición por rango
(%PartitionKey.Code%)
(
%ParticiónDef%
)]]]
]
Esta declaración contiene los parámetros para crear la tabla junto con su propietario y
opciones físicas usando variables (ver Variables para Tablas y Vistas en la página 216) que
extraen la información necesaria de las propiedades del objeto.
Si está utilizando el mecanismo de extensión para la generación de secuencias de comandos,
debe declarar declaraciones en el elemento de la lista ReversedStatements (una declaración
por línea) para que se inviertan correctamente.

Personalización y ampliación de PowerDesigner 137


CAPÍTULO 4: Archivos de definición DBMS

Por ejemplo, la declaración de extensión AfterCreate usa CreatePartition, que debe


declararse en ReversedStatements para que se realice la ingeniería inversa correctamente:

Generación de base de datos en vivo


PowerDesigner puede generar o modificar una base de datos desde un PDM a una conexión
en vivo. Las declaraciones que controlan la generación en vivo están disponibles en la
categoría Script/Objetos, excepto cuando el DBMS no admite la sintaxis SQL estándar. Por
ejemplo, MS Access, que necesita secuencias de comandos VB para crear objetos de base de
datos, tiene declaraciones de generación especiales definidas en la categoría ODBC.
Al generar una conexión en vivo, PowerDesigner toma cada objeto que se va a crear por
turnos y aplica la instrucción Create adecuada u otra declaración para crear o modificar el
objeto.
Las declaraciones utilizadas en la generación en vivo son las mismas que para la generación
de secuencias de comandos (consulte Generación de secuencias de comandos en la página
121).

Ingeniería inversa de base de datos en vivo


PowerDesigner puede aplicar ingeniería inversa desde una conexión de base de datos activa
a un PDM. Las consultas que controlan la ingeniería inversa en vivo están disponibles en la
categoría Script/Objetos.

138 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Las siguientes consultas se utilizan en la ingeniería inversa en vivo:


• SqlListQuery: recupera una lista de objetos disponibles para
completar la base de datos inversa
Diálogo de ingeniería. Esta consulta consume mucha memoria y debe recuperar la menor
número de columnas posible. Si no está definido, se usará SqlAttrQuery para completar
el cuadro de diálogo.
• SqlAttrQuery: recupera los atributos del objeto para
realizar ingeniería inversa. Esta consulta no es necesaria
si el objeto tiene pocos atributos y SqlListQuery puede
recuperar toda la información necesaria, como es el caso de
los espacios de tablas en Sybase SQL Anywhere.
• SqlOptsQuery: recupera las opciones físicas para realizar
ingeniería inversa.
• SqlListChildrenQuery: recupera listas de objetos secundarios
(como columnas de un índice o clave o uniones de una
referencia) para realizar ingeniería inversa.
• SqlSysIndexQuery: recupera los índices del sistema creados
por la base de datos.
• SqlChckQuery: recupera las restricciones de comprobación de
objetos.
• SqlPermQuery: recupera permisos de objetos.

Nota:También puede crear sus propias consultas (consulte Creación de consultas para
recuperar atributos adicionales en la página 128).

Cada tipo de consulta tiene la misma estructura básica que consta de una lista separada por
comas de variables de PowerDesigner encerradas entre llaves { } seguidas de una declaración
de selección para extraer valores para completar estas variables. Los valores de los registros
devueltos se almacenan en estas variables, que luego se confirman como valores de atributo
de objeto.
Por ejemplo, SqlListQuery en la categoría Ver de Oracle 11g R1 extrae valores para ocho
variables:

Personalización y ampliación de PowerDesigner 139


CAPÍTULO 4: Archivos de definición DBMS

{PROPIETARIO, VISTA, ESTILO DE VISTA, ExtObjViewType,


ExtObjOIDList, ExtObjSuperView, XMLSCHEMA EX, XMLELEMENT EX}

seleccionar
v.propietario,
v.ver_nombre,
decodificar (v.view_type, 'XMLTYPE', 'XML', 'View'),
v.view_type,
v.oid_text,
v.superview_name,
decodificar (v.view_type, 'XMLTYPE',
'%SqlXMLView.'||v.propietario||
v.nombre_vista||'1%', ''),
decodificar (v.view_type, 'XMLTYPE',
'%SqlXMLView.'||v.propietario||
v.view_name||'2%', '') de
sys.all_views v
[donde v.propietario = %.q:SCHEMA%]
Cada parte del encabezado separada por comas puede contener lo siguiente:
• Nombre de la variable: [obligatorio] puede ser cualquier variable de PDM estándar
(consulte Variables de PDM y
Macros en la página 212), nombre público del metamodelo (ver Navegación en el
Metamodelo en la página
344) o el nombre de un atributo extendido definido bajo la metaclase en el perfil (ver
Categoría de perfil (DBMS) en la página 200).
• ID - [opcional] la variable es parte del identificador.
• ... - [opcional] la variable debe estar concatenada para
todas las líneas devueltas por la consulta SQL que tengan
los mismos valores para las columnas ID. Las palabras clave
ID y ... (puntos suspensivos) se excluyen mutuamente.
• Pares de valores: [opcional] enumera las conversiones entre los valores recuperados y los
valores de PowerDesigner en el siguiente formato (donde * significa todos los demás
valores):
(valor1 = PDvalor1, valor2 = PDvalor2, * = PDvalor3)

Ejemplo: uso de ID para definir el identificador


En este script, el identificador se define como TABLE + ISKEY+ CONSTNAME mediante
el uso de la palabra clave ID:

140 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

{ID DE LA TABLA, ID DE LA CLAVE DE ISP, ID DE


CONSTNAME, COLUMNAS ...} seleccione
t.table_name,
1,
nulo,
c.nombre_columna + ', ',
c.column_id
de systable
t,
syscolumn c
donde, etc.
En las líneas resultantes devueltas por el script SQL, los valores del cuarto campo se
concatenan en el campo COLUMNAS siempre que estos valores de ID sean idénticos.
Conjunto de resultados SQL
Tabla1,1,null,'col1,'
Tabla1,1,null,'col2,'
Tabla1,1,null,'col3,'
Tabla2,1,null,'col4,'
En la memoria de PowerDesigner
Tabla1,1, nulo, 'col1, col2, col3'
Tabla2,1,null,'col4'

En el ejemplo, COLUMNAS contendrá la lista de columnas separadas por comas y


PowerDesigner procesará el contenido para eliminar la última coma.

Ejemplo: conversión de pares de valores


En este ejemplo, cuando la consulta SQL devuelve el valor 25 o 26, se reemplaza por JAVA
en la variable TYPE:
{ADT, PROPIETARIO, TIPO (25 = JAVA, 26 = JAVA)}
SELECCIONE t.type_name, u.user_name, t.domain_id
DESDE sysusertype t, sysuserperms u
DONDE [u.user_name = '%SCHEMA%' AND] (domain_id = 25 OR domain_id =
26) AND
t.creador = u.id_usuario
Creación de consultas para recuperar atributos adicionales
Puede crear consultas para recuperar atributos adicionales. Estos atributos podrían agregarse
a SqlAttrQuery, pero recuperarlos en una consulta separada ayuda a evitar la sobrecarga de
ese elemento. Las consultas creadas por el usuario solo se llaman durante la ingeniería
inversa si sus nombres se agregan al elemento ReversedQueries.
Para crear una nueva consulta en una categoría, haga clic con el botón derecho en la categoría
y seleccione Nuevo > Elemento de texto. Ingrese un nombre apropiado y luego agregue el
nombre al elemento ReversedQueries.
Por ejemplo, en la familia Oracle de DBMS, SqlColnListQuery se define en la categoría Ver:

Personalización y ampliación de PowerDesigner 141


CAPÍTULO 4: Archivos de definición DBMS

{ID DE PROPIETARIO, ID DE VISTA, VIEWCOLN...}

seleccionar
c.propietario,
c.nombre_tabla,
c.nombre_columna||', ' de
sys.all_tab_columns c donde
1 = 1
[y c.propietario=%.q:PROPIETARIO%]
[y c.table_name=%.q:VER%]
ordenar por
1, 2, c.column_id
Esta consulta recupera columnas de vista y se habilita al agregarla a ReversedQueries en la
categoría Vista.

Nota:Las subconsultas que se llaman con la palabra clave EX desde SqlAttrQuery u otras
consultas (consulte Llamar a subconsultas con la palabra clave EX en la página 128) no
necesitan agregarse a ReversedQueries.

Llamar a subconsultas con la palabra clave EX


Las tablas del sistema DBMS pueden almacenar información para ser invertida en columnas
con LONG, BLOB, TEXT y otros tipos de datos incompatibles, que PowerDesigner no puede
concatenar directamente en cadenas.
Puede omitir esta limitación utilizando la palabra clave EX y creando consultas y variables
definidas por el usuario en las consultas de ingeniería inversa existentes con la sintaxis:
%UserDefinedQueryName.UserDefinedVariableName%

Estas variables definidas por el usuario se evalúan mediante subconsultas que escribe.
En el siguiente ejemplo, el valor de OPCIONES está marcado como que contiene una
consulta definida por el usuario, y vemos en el cuerpo de la consulta que la opción 'partición
global por rango' contiene una consulta definida por el usuario llamada: 'SqlPartIndexDef',
que busca valores para las variables 'i.propietario' y 'i.index_name':
{PROPIETARIO, TABLA, CONSTNAME, OPCIONES EX}

seleccionar
c.propietario,
c.nombre_tabla,
c.restricción_nombre,
...
'partición global por rango
(%SqlPartIndexDef.'||i.propietario||i.index_name||'%)', ...

Nota:Las consultas extendidas no se agregan al elemento ReversedQueries.

142 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

1. Se ejecuta una consulta para evaluar variables en un conjunto de declaraciones de cadena.


Si la palabra clave EX está presente en el encabezado de la consulta, PowerDesigner
busca consultas y variables definidas por el usuario para evaluar. Puede crear consultas
definidas por el usuario en cualquier consulta de ingeniería inversa de base de datos
activa. Cada consulta debe tener un nombre único.
2. La ejecución de la consulta definida por el usuario genera un conjunto de resultados que
contiene pares de nombres de variables definidos por el usuario (sin %) y valores de
variables para cada una de las variables, según sea necesario. Por ejemplo, en el siguiente
conjunto de resultados, la consulta devuelve 3 filas y 4 columnas por fila:
Variable 1 1 Variable 2 2

Variable 3 3 variable 4 4

Variable 5 5 variable 6 6

3. Estos valores reemplazan las variables definidas por el usuario en la consulta original.

Opciones físicas de ingeniería inversa de base de datos en vivo


Durante la ingeniería inversa, las opciones físicas se concatenan en una declaración de una
sola cadena.
Sin embargo, cuando las tablas del sistema de una base de datos están particionadas (como
en Oracle) o fragmentadas (como en Informix), las particiones/fragmentos comparten los
mismos atributos lógicos pero sus propiedades físicas, como las especificaciones de
almacenamiento, se almacenan en cada partición/fragmento de la base de datos. base de
datos. Las columnas en las particiones/fragmentos tienen un tipo de datos (LONG) que
permite almacenar mayor cantidad de información binaria no estructurada.
Dado que las opciones físicas de estas columnas no se pueden concatenar en la declaración
de cadena durante la ingeniería inversa, SqlOptsQuery (categoría de tablas en el DBMS)
contiene una llamada a una consulta definida por el usuario que evaluará estas opciones
físicas.
En Informix SQL 9, SqlOptsQuery se entrega de forma predeterminada con las siguientes
consultas y variables definidas por el usuario (lo siguiente es un subconjunto de
SqlOptsQuery):
seleccionar
pueblerino,
t.tabname,
'%SqlFragQuery.FragSprt'||f.evalpos||'% %FragExpr'||f.evalpos||'%
en %FragDbsp'||f.evalpos||'% ',
f.evalpos de
informix.systables t,

Personalización y ampliación de PowerDesigner 143


CAPÍTULO 4: Archivos de definición DBMS

informix.sysfragments f donde
t.partnum = 0 y
t.tabid=f.tabid
[ y t.propietario = '%SCHEMA%']
[ y t.tabname='%TABLE%']

Después de la ejecución de SqlOptsQuery, se ejecuta la consulta definida por el usuario


SqlFragQuery para evaluar FragDbsp n, FragExpr n y FragSprt n. n representa evalpos, que
define la posición del fragmento en la lista de fragmentación. n permite asignar nombres
únicos a las variables, cualquiera que sea el número de fragmentos definidos en la tabla.
FragDbsp n, FragExpr n y FragSprt n son variables definidas
por el usuario que se evaluarán para recuperar información
sobre las opciones físicas de los fragmentos en la base de
datos:
Variable definida por el Opciones físicas
usuario
FragDbspn Ubicación del fragmento para el número de fragmento n

FragExpr n Expresión de fragmento para número de fragmento n

FragSprt n Separador de fragmentos para el fragmento número n

SqlFragQuery se define de la siguiente manera:


{A, a(E="expresión", R="round robin", H="hash"), B, b, C, c, D,
d(0="", *=",")}
seleccionar
'FragDbsp'||f.evalpos, f.dbspace,
'FragExpr'||f.evalpos, f.exprtext,
'FragSprt'||f.evalpos, f.evalpos
from
informix.systables t,
informix.sysfragments f
donde
t.partnum = 0 y
f.fragtype='T' y
t.tabid=f.tabid
[ y t.propietario = '%SCHEMA%']
[ y t.tabname='%TABLE%']
El encabezado de SqlFragQuery contiene los siguientes nombres de variables.
{A, a(E="expresión", R="round robin", H="hash"), B, b, C, c, D,
d(0="", *=",")}

Solo se utilizarán las reglas de traducción definidas entre paréntesis durante la concatenación
de cadenas: "FragSprt0", que contiene 0 (f.evalpos), se reemplazará por " ", y "FragSprt1",
que contiene 1, se reemplazará por ","

144 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS
SqlFragQuery genera un conjunto de resultados numerado que
contiene tantos pares de nombre de variable definido por el
usuario (sin %) y valor de variable como sea necesario, si
hay muchas variables para evaluar.
Los nombres de las variables definidas por el usuario se reemplazan por sus valores en la
declaración de cadena para las opciones físicas de los fragmentos en la base de datos.

Índice basado en funciones de ingeniería inversa de base de datos en vivo


En Oracle 8i y versiones posteriores, puede crear índices basados en funciones y expresiones
que involucran una o más columnas en la tabla que se indexa. Un índice basado en funciones
precalcula el valor de la función o expresión y lo almacena en el índice. La función o la
expresión reemplazará la columna de índice en la definición de índice.
Una columna de índice con una expresión se almacena en tablas del sistema con un tipo de
datos LONG que no se puede concatenar en una declaración de cadena durante la ingeniería
inversa.
Para eludir esta limitación, SqlListQuery (categoría de índice en DBMS) contiene una
llamada a la consulta definida por el usuario SqlExpression utilizada para recuperar la
expresión de índice en una columna con el tipo de datos LONG y concatenar este valor en
una declaración de cadena (la siguiente es una subconjunto de SqlListQuery):
seleccionar
'%ESQUEMA%',
i.table_name,
i.index_name,
decode(i.index_type, 'BITMAP', 'bitmap', ''),
decode(substr(c.column_name, 1, 6), 'SYS_NC',
'%SqlExpression.Xpr'||i.table_name||i. nombre_índice||
c.posición_columna||'%', c.nombre_columna)||'
'||c.descend||', ', c.column_position
de
user_indexes i,
user_ind_columns c
donde
c.table_name=i.table_name and
c.index_name=i.index_name [ and
i.table_owner='%SCHEMA%']
[ y i.table_name='%TABLE%']
[ y i.index_name='%INDEX%']
La ejecución de SqlListQuery llama a la ejecución de la consulta definida por el usuario
Expresión Sql.
SqlExpression es seguido por una variable definida por el
usuario definida de la siguiente manera:
{VAR, VAL}

seleccionar
'Xpr'||nombre_tabla||nombre_índice||posición_columna,

Personalización y ampliación de PowerDesigner 145


CAPÍTULO 4: Archivos de definición DBMS
expresión_columna
de
todas_ind_expresiones
donde 1=1
[ y table_owner='%SCHEMA%']
[ y nombre_tabla='%TABLA%']
El nombre de la variable definida por el usuario es único, es el resultado de la concatenación
de "Xpr", el nombre de la tabla, el nombre del índice y la posición de la columna.

Calificadores de ingeniería inversa de base de datos en vivo


Un calificador permite el uso del calificador de objeto que se muestra en el cuadro de lista
desplegable en la esquina superior izquierda del cuadro de diálogo Ingeniería inversa de la
base de datos. Se utiliza un calificador para seleccionar qué objetos se van a aplicar ingeniería
inversa.

Puede agregar una sección calificadora cuando personaliza su DBMS. Esta sección debe
contener los siguientes elementos:
• habilitar: SÍ/NO
• SqlListQuery (script): este elemento contiene la consulta SQL que se ejecuta para
recuperar la lista de calificadores. No debe agregar un encabezado a esta consulta. El
efecto de estos elementos se muestra en la siguiente tabla:
Permitir SqlListQuery Resultado
presente?

146 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Sí Sí Los calificadores están disponibles para su selección.


Seleccione uno según sea necesario. También puede escribir
el nombre de un calificador. SqlListQuery se ejecuta para
llenar la lista de calificadores
No Solo se selecciona el valor predeterminado (Todos los
calificadores). También puede escribir el nombre de un
calificador
No No El cuadro de lista desplegable está atenuado.

Ejemplo
En Adaptive Server Anywhere 7, una consulta de calificador típica es:
.Qualifier.SqlListQuery:
seleccione dbspace_name de
sysfile

Generación y ingeniería inversa de objetos extendidos de PDM


Algunos DBMS tienen objetos que no están presentes en el metamodelo estándar de
PowerDesigner y que deben representarse como objetos extendidos. Los objetos extendidos
de PDM se definen en la categoría Perfil, pero su generación y la ingeniería inversa están
controladas por declaraciones y consultas definidas en la categoría Script/Objetos.

Nota:Antes de seguir este procedimiento, debe crear un objeto ampliado en la categoría


Perfil (consulte Objetos ampliados, subobjetos y enlaces (Perfil) en la página 36).

1. Haga clic con el botón derecho en la categoría Script/Objetos, seleccione Agregar


elementos, seleccione su nuevo objeto extendido en la lista y luego haga clic en Aceptar
para agregarlo a la lista de objetos.
2. Haga clic con el botón derecho en la nueva entrada de objeto y seleccione Agregar
elementos para agregarle los elementos de secuencia de comandos necesarios. Como
mínimo, para habilitar la generación y la ingeniería inversa del objeto, debe agregar los
siguientes elementos:
• Crear
• Gota
• AlterStatementListAlterStatementList
• SqlAttrQuery
• SqlListQuery
3. Haga clic en Aceptar para agregar estos elementos de secuencia de comandos a su objeto
e ingrese las instrucciones y consultas SQL adecuadas. Deberá ingresar valores para cada
uno de estos elementos. Para obtener orientación sobre la sintaxis, consulte Elementos de
objetos comunes en la página 144.

Personalización y ampliación de PowerDesigner 147


CAPÍTULO 4: Archivos de definición DBMS

4. [opcional] Para controlar el orden en que se generarán este y otros objetos, utilice el
elemento Orden de generación (consulte Categoría de script/objetos (DBMS) en la página
142).

Adición de scripts antes o después de la generación y la ingeniería


inversa
Puede especificar scripts para usar antes o después de la generación de la base de datos o la
ingeniería inversa.
1. Abra la carpeta Perfil. Si no hay ninguna entrada para Modelo, haga clic con el botón
derecho en la carpeta Perfil y seleccione Agregar metaclases.
2. En la subpestaña PdPDM, seleccione Modelo y luego haga clic en Aceptar para agregar
el elemento Modelo a la carpeta Perfil.
3. Haga clic con el botón derecho en el elemento Modelo y seleccione Nuevo > Controlador
de eventos (consulte Controladores de eventos (perfil) en la página 75).
4. Seleccione uno o más de los siguientes controladores de eventos según dónde desee
agregar un script:
• BeforeDatabaseGenerate
• AfterDatabaseGenerate
• BeforeDatabaseReverseEngineer
• AfterDatabaseReverseEngineer
5. Haga clic en Aceptar para agregar los controladores de eventos seleccionados al elemento
Modelo.
6. Seleccione cada uno de los controladores de eventos a su vez, haga clic en su pestaña
Secuencia de comandos del controlador de eventos e ingrese la secuencia de comandos
deseada.
7. Haga clic en Aceptar para confirmar sus cambios y volver al modelo.

Categoría general (DBMS)

La categoría General se encuentra directamente debajo de la raíz y contiene elementos de


alto nivel que definen el comportamiento básico del DBMS.
Artículo Descripción

Habilitar Especifica si se autoriza la generación de parámetros de verificación. Están


verificación disponibles los siguientes ajustes. Si este elemento se establece en No, no se
evaluarán las variables vinculadas a los parámetros de verificación durante la
generación y la ingeniería inversa.

148 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

EnableConstName Especifica si DBMS admite nombres de restricciones. Si este elemento se


establece en Sí, se generan nombres de restricciones de tabla y columna
además de las propias restricciones.

Habilitar integridad Especifica si DBMS admite restricciones de integridad. Si este elemento se


establece en Sí, las casillas de verificación de clave principal, alternativa y
externa están disponibles para la generación y modificación de la base de
datos.
Activar Especifica si DBMS admite la generación de múltiples parámetros de
MultiCheck verificación para tablas y columnas. Si este elemento se establece en Sí, se
generan múltiples parámetros de verificación, con la primera restricción
concatenando todas las reglas comerciales de validación y restricciones
adicionales generadas para cada regla comercial de restricción adjunta al
objeto. Si este elemento se establece en No, todas las reglas comerciales
(validación y restricción) se concatenan en una sola expresión de restricción.
esquema Especifica el estereotipo de usuario que se utilizará para indicar un esquema
estereotipo (propietario del objeto).
SqlSoporte Especifica si DBMS admite la sintaxis SQL. Si este elemento se establece en
Sí, la sintaxis de SQL es compatible y la vista previa de SQL está disponible.

UniqConstName Especifica si el DBMS requiere nombres de restricciones únicos para los


objetos. Si este elemento se establece en Sí, todos los nombres de
restricciones (incluidos los nombres de índice) deben ser únicos en la base de
datos. De lo contrario, los nombres de las restricciones deben ser exclusivos
solo a nivel de objeto.
estereotipo de Especifica el estereotipo de usuario que se utilizará para indicar un usuario
usuario (concesionario de permisos).
Categoría Script/Sql (DBMS)

La categoría SQL se encuentra en la categoría Raíz > Script y contiene subcategorías que
definen la sintaxis SQL para DBMS.

Categoría de sintaxis
La categoría Sintaxis se encuentra en la categoría Raíz > Script > SQL y contiene los
siguientes elementos que definen la sintaxis específica de DBMS:
Artículo Descripción

Bloquear comentario Especifica el carácter utilizado para encerrar un comentario de varias


líneas.
Ejemplo:
/* */

Personalización y ampliación de PowerDesigner 149


CAPÍTULO 4: Archivos de definición DBMS

Bloque Terminator Especifica el carácter de fin de bloque, que se utiliza para finalizar
expresiones para activadores y procedimientos almacenados.

delimitador Especifica el carácter de separación de campos.

IdentificadorDelimitador Especifica el carácter delimitador del identificador. Cuando los


delimitadores de inicio y final son diferentes, deben estar separados por
un carácter de espacio.
LíneaComentario Especifica el carácter utilizado para encerrar un comentario de una sola
línea.
Ejemplo:
%%

Cita Especifica el carácter utilizado para encerrar valores de cadena.


Tenga en cuenta que se debe usar la misma cita en la pestaña de
parámetros de verificación para encerrar las palabras reservadas que se
usan por defecto.
SqlContinuar Especifica el carácter de continuación. Algunas bases de datos
requieren un carácter de continuación cuando una declaración es más
larga que una sola línea. Para conocer el carácter correcto, consulte la
documentación de su DBMS. Este carácter se adjunta a cada línea justo
antes del salto de línea.
terminador Especifica el carácter de fin de declaración, que se utiliza para terminar
la creación de tabla, vista, índice o la base de datos abierta/cerrada, y
otras declaraciones.
Si está vacío, se utiliza BlockTerminator en su lugar.
Artículo Descripción

UseBlockTerm
Especifica el uso de BlockTerminator. Están disponibles los siguientes
ajustes:

• Sí, BlockTerminator siempre se usa


• No: BlockTerminator se usa solo para activadores y
procedimientos almacenados

Categoría de formato
La categoría Formato se encuentra en la categoría Raíz > Script > SQL y contiene los
siguientes elementos que definen el formato del script:
Artículo Descripción

150 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Añadir Presupuesto Especifica que los códigos de objeto se citan sistemáticamente durante
la generación. Están disponibles los siguientes ajustes:
• Sí: las cotizaciones se agregan sistemáticamente a los códigos de
objeto durante la generación
• No: los códigos de objeto se generan sin comillas
CaseSensitivityUsingQu Especifica si la distinción entre mayúsculas y minúsculas para los
ote identificadores se gestiona mediante comillas dobles. Habilite esta
opción si el DBMS que está utilizando necesita comillas dobles para
preservar el caso de los códigos de objeto.
Formatos de fecha y hora VerFormato de fecha y horaen la página 137.

EnableOwnerPrefix / Especifica que los códigos de objeto pueden tener como prefijo el
EnableDtbsPrefix propietario del objeto (%OWNER%), el nombre de la base de datos
(%DBPREFIX%) o ambos (%QUALIFIER%). Están disponibles los
siguientes ajustes:
• Sí: habilita las opciones Prefijo de propietario y/o Prefijo de base
de datos en el cuadro de diálogo Generación de base de datos para
solicitar uno o ambos prefijos para los objetos.
• No: las opciones Prefijo de propietario y Prefijo de base de datos
no están disponibles

Nota:EnableOwnerPrefix habilita la opción Ignorar modelo de


identificación de propietario para tablas y vistas.

Artículo Descripción

IllegalChar [solo generación] Especifica caracteres no válidos para los nombres. Si


hay un carácter ilegal en un código, el código se establece entre
comillas durante la generación.
Ejemplo:
+-*/!=<>'"()

Si el nombre de la tabla es "VENTAS+BENEFICIOS", la declaración de


creación generada será:
CREAR TABLA "VENTAS+BENEFICIOS"
Se colocan comillas dobles alrededor del nombre de la tabla para
indicar que se utiliza un carácter no válido. Durante la ingeniería
inversa, cualquier carácter ilegal se considera un separador a menos
que esté ubicado dentro de un nombre entrecomillado.

Personalización y ampliación de PowerDesigner 151


CAPÍTULO 4: Archivos de definición DBMS

Solo en minúsculas / Solo Al generar un script, todos los objetos se generan en minúsculas o
en mayúsculas mayúsculas, independientemente de las convenciones de nomenclatura
del modelo y los códigos PDM. Están disponibles los siguientes
ajustes:
• Sí: obliga a que todos los caracteres de script generados estén en
minúsculas o mayúsculas.
• No: genera todos los scripts sin modificar la forma en que se
escriben los objetos en el modelo.

Nota:Estos elementos son mutuamente excluyentes. Si ambos están


habilitados, el script se genera enminúsculas.

MaxScriptLen Especifica la longitud máxima de una línea de guión.

Formato de fecha y hora


Puede personalizar el formato de fecha y hora para la generación de datos de prueba en una
secuencia de comandos o una conexión de base de datos en vivo utilizando elementos DBMS
en la categoría Formato.
PowerDesigner utiliza el elemento de mapa PhysDataType en la categoría script\tipos de
datos para convertir los tipos de datos físicos de las columnas en tipos de datos conceptuales
porque los elementos DBMS están vinculados con tipos de datos conceptuales.
Ejemplo para Sybase AS Anywhere 7:
Tipo de Tipo de Entrada de DBMS Entrada de DBMS
datos datos utilizada para utilizada para la
físicos conceptuales SQL conexión en vivo
fecha y hora DT Formato de fecha y OdbcDateTimeFormat
hora
marca de TS Formato de fecha y OdbcDateTimeFormat
tiempo hora
fecha D Formato de fecha OdbcDateFormat

tiempo T Formato de tiempo OdbcTimeFormat

Si desea personalizar el formato de fecha y hora de su generación de datos de prueba, debe


verificar el tipo de datos de las columnas en su DBMS, luego busque el tipo de datos
conceptual correspondiente para saber qué elemento personalizar en su DBMS. Por
ejemplo, si las columnas usan el tipo de datos de fecha y hora en su modelo, debe
personalizar el elemento DateTimeFormat en su DBMS.
El formato de fecha y hora por defecto es el siguiente:

• SQL: 'aaaa-mm-dd HH:MM:SS'

152 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

• Conexión en vivo: {ts 'yyyy-mm-dd HH:MM:SS'} Donde:


Formato Descripción

aaaa Año en 4 dígitos

yy Año en 2 dígitos

milímetro Mes

dd Día

S.S Hora

milímetro Minuto

SS Segundo

Por ejemplo, puede definir el siguiente valor para el elemento DateTimeFormat para SQL:
aamm-dd HH:MM. Para conexiones de base de datos en vivo, este elemento debe tener el
siguiente valor:
{ts 'aa-mm-dd HH:MM'}.

Categoría de archivo
La categoría Archivo se encuentra en la categoría Raíz > Script > SQL y contiene los
siguientes elementos que definen el formato del script:
Artículo Descripción

AlterHeader Especifica el texto del encabezado para un script de base de datos de


modificación.
AlterFooter Especifica el texto de pie de página para un script de modificación de base
de datos.

Artículo Descripción

Personalización y ampliación de PowerDesigner 153


CAPÍTULO 4: Archivos de definición DBMS

Habilitar Especifica que se permiten varios scripts. Están disponibles los siguientes
multiarchivo ajustes:
• Sí: habilita la casilla de verificación Un solo archivo en las ventanas
Generar base de datos, Generar disparadores y procedimientos y
Modificar parámetros de la base de datos. Si anula la selección de esta
opción, se crea una secuencia de comandos independiente para cada tabla
(nombrada según la tabla y con la extensión definida en el elemento
TableExt) y una secuencia de comandos global resume todos los
elementos de la secuencia de comandos de una sola tabla.
• La casilla de verificación Un solo archivo no está disponible y un solo
script incluye todas las declaraciones.
El nombre de archivo del script global se puede personalizar en el campo
Nombre de archivo de las ventanas de generación o modificación y tiene la
extensión especificada en el
Elemento ScriptExt.
El nombre predeterminado para el script global es CREBAS para la
generación de la base de datos, CRETRG para la generación de
desencadenadores y procedimientos almacenados, y ALTER para la
modificación de la base de datos.
Pie de página Especifica el texto para el pie de página del script de generación de la base
de datos.
Encabezamiento Especifica el texto del encabezado del script de generación de la base de
datos.
ScriptExt Especifica la extensión de secuencia de comandos predeterminada cuando
genera una base de datos o modifica una base de datos por primera vez.
Ejemplo:

sql

Comando de inicio Especifica la instrucción para ejecutar un script. Se utiliza dentro del archivo
de encabezado de una generación de varios archivos para llamar a todos los
demás archivos generados desde el archivo de encabezado.
Ejemplo (Sybase ASE 11):
isql %NAMESCRIPT%
Corresponde a la variable %STARTCMD% (verVariables y macros de
PDMen la página 212).

TableExt Especifica la extensión de los scripts usados para generar cada tabla cuando
el elemento EnableMultiFile está habilitado y la casilla de verificación "One
File Only" no está seleccionada en las ventanas Generar o Modificar.
Ejemplo:

154 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

sql

TrgPie de página Especifica el texto del pie de página para una secuencia de comandos de
generación de desencadenantes y procedimientos.
TrgHeader Script de cabecera para la generación de disparadores y procedimientos.

TrgUsage1 [cuando se utiliza un único script] Especifica el texto que se mostrará en la


ventana de salida al final de la generación del desencadenador y del
procedimiento.
Artículo Descripción

TrgUsage2 [cuando se utilizan varios scripts] Especifica el texto que se mostrará en la


ventana de salida al final de la generación del desencadenador y del
procedimiento.
TriggerExt Especifica la extensión del script principal cuando genera activadores y
procedimientos almacenados por primera vez.
Ejemplo:

trg

uso1 [cuando se utiliza un solo script] Especifica el texto que se mostrará en la


ventana de salida al final de la generación de la base de datos.

uso2 [cuando se utilizan varios scripts] Especifica el texto que se mostrará en la


ventana de salida al final de la generación de la base de datos.

Categoría de palabras clave


La categoría Palabras clave se encuentra en la categoría Raíz > Script > SQL y contiene los
siguientes elementos que reservan palabras clave.
Las listas de funciones y operadores SQL se utilizan para llenar el editor SQL de
PowerDesigner para proponer listas de funciones disponibles para ayudar a ingresar el
código SQL.
Artículo Descripción

CharFunc Especifica una lista de funciones SQL para usar con caracteres y
cadenas.
Ejemplo:
char()
charindex()
char_length()
etc.

Personalización y ampliación de PowerDesigner 155


CAPÍTULO 4: Archivos de definición DBMS

Comprometerse Especifica una declaración para validar la transacción por conexión en


vivo.
ConvertAnyTo- Especifica una función para convertir cualquier tipo en una cadena.
Cadena

ConvertDateToMonth, Especifica una función para extraer el período relevante de una fecha.
ConvertDateToQuarter,
ConvertDateToYear

ConvertFunc Especifica una lista de funciones SQL para usar al convertir valores
entre hexadecimales y enteros y manejar cadenas.
Ejemplo:

convert()
hextoint()
inttohex() etc.

Artículo Descripción

FechaFunc Especifica una lista de funciones SQL para usar con


fechas.
Ejemplo:
da
te
ad
d(
)
fe
ch
ad
oi
ff
()
no
mb
re
de
fe
ch
a(
)

156 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

et
c.

GroupFunc Especifica una lista de funciones SQL para usar con


palabras clave de grupo.
Ejemplo:
a
v
g
(
)
c
u
e
n
t
a
(
)
m
a
x
(
)
e
t
c
.

ListOperators Especifica una lista de operadores SQL para usar al


comparar valores, operadores booleanos y varios
operadores semánticos.
Ejemplo:
=
!
=
n
o
m
e
g
u
s
t

Personalización y ampliación de PowerDesigner 157


CAPÍTULO 4: Archivos de definición DBMS

a
,
e
t
c
.

FunciónNúmero Especifica una lista de funciones SQL para usar con


números.
Ejemplo:
a
b
s
(
)
a
c
o
s
(
)
a
s
i
n
(
)
e
t
c
.

Otra función Especifica una lista de funciones SQL para usar al


estimar, concatenar y verificar SQL.
Ejemplo:

d
b
_
i
d
(
)
d

158 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

b
_
n
a
m
e
(
)
h
o
s
t
_
i
d
(
)
e
t
c
.

Predeterminado reservado Especifica una lista de palabras clave que se pueden


usar como valores predeterminados. Si se utiliza una
palabra reservada como valor predeterminado, no se
citará.
Ejemplo (SQL en cualquier lugar®10) - USUARIO
es un valor predeterminado reservado:
Crear tabla CLIENTE (
Nombre de usuario
varchar(30)
USUARIO
predeterminado)
Cuando ejecuta este script, la FECHA ACTUAL se
reconoce como un valor predeterminado reservado.

Artículo Descripción

Palabra reservada Especifica una lista de palabras clave reservadas. Si


se usa una palabra reservada como código de objeto,
se cita durante la generación (usando comillas solo en
DBMS > Script > SQL > Sintaxis > Cita).
StringConcatenationOperatorStringConcate Especifica el operador utilizado para concatenar dos
nationOperator cadenas.

Personalización y ampliación de PowerDesigner 159


CAPÍTULO 4: Archivos de definición DBMS

Categoría de secuencias de comandos/objetos (DBMS)

La categoría Objetos se encuentra en la categoría Raíz > Script > SQL (y, posiblemente,
dentro de Raíz > ODBC > SQL) y contiene los siguientes elementos que definen los objetos
de la base de datos que estarán disponibles en su modelo.
Los siguientes elementos se encuentran en las categorías Raíz > Script > Objetos y Raíz >
ODBC > Objetos y se aplican a todos los objetos:
• MaxConstLen: especifica la longitud máxima de nombre de restricción admitida por la
base de datos de destino para tablas, columnas, claves primarias y externas. Este valor se
usa durante la verificación del modelo y devuelve un error si el código excede el valor
definido. El nombre de la restricción también se trunca en el momento de la generación.

Nota:PowerDesigner tiene una longitud máxima de 254 caracteres para nombres de


restricciones. Si su base de datos admite nombres de restricciones más largos, debe
definir los nombres de restricciones para que quepan en 254 caracteres o menos.

• EnableOption: especifica que el DBMS de destino admite opciones físicas para el


modelo, las tablas, los índices, las claves alternativas y otros objetos, y habilita la
visualización de la pestaña Opciones en las hojas de propiedades de los objetos. Para
obtener más información, consulte Opciones físicas (DBMS) en la página 207.
• GenerationOrder: especifica el orden de generación de los objetos de la base de datos.
Arrastre y suelte las entradas en la pestaña Lista ordenada para ajustar el orden en que se
crearán los objetos.

160 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Nota:Si un objeto no aparece en la lista, aún se generará, pero después de los objetos
enumerados. Puede agregar y eliminar elementos usando las herramientas en la pestaña.
Los subobjetos, como Sequence::Permissions, se pueden colocar directamente debajo de
su objeto principal en la lista (donde se sangrarán para demostrar su parentesco) o por
separado, en cuyo caso se mostrarán sin sangría. Los objetos extendidos (consulte
Generación e ingeniería inversa de objetos extendidos de PDM en la página 133) no se
pueden agregar a esta lista y se generan después de todos los demás objetos.

Elementos de objetos comunes


Los siguientes elementos están disponibles en varios objetos ubicados en la categoría Raíz >
Script > Objetos.
Artículo Descripción

Personalización y ampliación de PowerDesigner 161


CAPÍTULO 4: Archivos de definición DBMS

Agregar Especifica la declaración requerida para agregar el objeto dentro


de la declaración de creación de otro objeto.
Ejemplo (agregar una columna):
%20:COLUMN% %30:DATATYPE% [predeterminado
%DEFAULT%]
[%IDENTITY%?identidad:[%NULL%][%NOTNULL%]]
[[restricción %CONSTNAME%] verificación
(%CONSTRAINT%)]
AfterCreate/ AfterDrop/ Especifique sentencias extendidas ejecutadas después de las
AfterModify sentencias principales Create, Drop o Modify. Para más
información, verGeneración de guionesen la página 121.
Alterar Especifica la instrucción necesaria para modificar el objeto.

AlterDBIgnorado Especifica una lista de atributos que deben ignorarse al realizar


una comparación antes de iniciar una base de datos de
actualización.
AlterStatementListAlterStateme Especifica una lista de atributos que, cuando se modifican,
ntList deberían dar lugar a una declaración de alteración. Cada atributo
de la lista se asigna a la instrucción alter que se debe utilizar.

Antes de crear/ Antes de soltar/ Especifique sentencias extendidas ejecutadas antes de las
Antes de modificar sentencias principales Create, Drop o Modify. Para más
información, verGeneración de guionesen la página 121.

NombreConst Especifica una plantilla de nombre de restricción para el objeto.


La plantilla controla cómo se generará el nombre del objeto.
La plantilla se aplica a todos los objetos de este tipo para los que
no ha definido un nombre de restricción individual. El nombre
de la restricción que se aplicará a un objeto se muestra en su
hoja de propiedades.
Ejemplos (ASE 15):
• Tabla: CKT_%.U26:TABLA%
• Columna: CKC_%.U17:COLUMN%_%.U8:TABLE%
• Clave principal: PK_%.U27:TABLE%
Crear [generación e inversión] Especifica la declaración necesaria para
crear el objeto.
Ejemplo:
crear tabla %TABLE%

Artículo Descripción

162 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Opciones de Especifica los valores predeterminados para las opciones físicas


definición (verOpciones físicas (DBMS)en la página 207) que se aplicará a todos los
objetos. Estos valores deben respetar la sintaxis SQL.
Ejemplo:
en default_tablespace

Gota Especifica la instrucción necesaria para descartar el objeto.


Ejemplo (SQL en cualquier lugar 10):
si existe (seleccione 1 de sys.systable donde
table_name=%.q:TABLE% y table_type in ('BASE',
'GBL TEMP')[%QUALIFIER %? and
Creator=user_id(%.q:OWNER%)] ) luego suelte la
tabla [%QUALIFIER%]%TABLE% end if

Permitir Especifica si se admite un objeto.

Habilitar propietario Habilita la definición de propietarios para el objeto. El propietario del


objeto puede diferir del propietario de la tabla principal. Están disponibles
los siguientes ajustes:
• Sí: la lista de propietarios está habilitada en la hoja de propiedades del
objeto.
• No: los propietarios no son compatibles con el objeto.

Tenga en cuenta que, en el caso de los propietarios de índices, debe


asegurarse de que la instrucción Create tenga en cuenta la tabla y el
propietario del índice. Por ejemplo, en Oracle 9i, la instrucción Create de un
índice es la siguiente:
crear [%UNIQUE%?%UNIQUE% :[%INDEXTYPE% ]]index
[%QUALIFIER%]%INDEX% en [%CLUSTER%?cluster C_%TABLE
%:[%TABLQUALIFIER%]%TABLE% (
%CIDXLIST%
)]
[%OPCIONES%]
Donde %QUALIFIER% se refiere al objeto actual (índice) y
%TABLQUALIFIER% se refiere a la tabla principal del índice.
EnableSynonym Habilita la compatibilidad con sinónimos en el objeto.

Pie de página / Especifique el pie de página y el encabezado del objeto. Los contenidos se
Encabezado insertan directamente después o antes de cada declaración de creación de
objeto.

Personalización y ampliación de PowerDesigner 163


CAPÍTULO 4: Archivos de definición DBMS

MaxConstLen Especifica la longitud máxima del nombre de la restricción admitida para el


objeto en la base de datos de destino, donde este valor difiere del valor
predeterminado especificado en MaxConstLen (consulte .Categoría de
secuencias de comandos/objetos (DBMS)en la página 142).

Artículo Descripción

MaxLen Especifica la longitud máxima de código para un objeto. Este valor se


utiliza al verificar el modelo y produce un error si el código excede el valor
definido. El código objeto también se trunca en el momento de la
generación.
Atributos Especifica una lista de atributos extendidos que se tendrán en cuenta en el
modificables cuadro de diálogo de combinación durante la sincronización de la base de
datos. Para más información, verGeneración de guionesen la página 121.
Ejemplo (ASE 12.5):
ExtTablePartitionExtTablePartition

Opciones Especifica opciones físicas (verOpciones físicas (DBMS)en la página 207)


disponible para aplicar al crear un objeto.
Ejemplo (ASA 6):
en %s: categoría=tablespace

Permiso Especifica una lista de permisos disponibles para el objeto. La primera


columna es el nombre SQL del permiso (por ejemplo, SELECCIONAR) y
la segunda columna es el nombre abreviado que se muestra en el título de las
columnas de la cuadrícula.
Ejemplo (permisos de tabla en ASE 15):
SELECCIONAR / Sel
INSER / Ins
ELIMINAR / Borrar
ACTUALIZAR / Actualizar
REFERENCIAS / Referencia
Consultas invertidas Especifica una lista de consultas de atributos adicionales que se llamarán
durante la ingeniería inversa de la base de datos en vivo. Para más
información, verIngeniería inversa de base de datos en vivo en la página
125.
Declaraciones Especifica una lista de instrucciones adicionales que se someterán a
invertidas ingeniería inversa. Para más información, verIngeniería inversa de
guionesen la página 124.

164 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

SqlAttrQuery Especifica una consulta SQL para recuperar información adicional sobre
objetos invertidos por SQLListQuery.
Ejemplo (Índice de unión en Oracle 10g):
{ID DEL PROPIETARIO, ID DE JIDX, JIDXWHERE ...}
seleccione propietario_índice, nombre_índice,
propietario_tabla_externa || '.' ||
nombre_tabla_externa || '.'
|| columna_tabla_exterior || '=' ||
propietario_tabla_interna || '.' ||
nombre_tabla_interna || '.' || interior_ta-
columna_ble || ',' de
all_join_ind_columns
donde 1=1
[ y propietario_índice=%.q:PROPIETARIO%]
[ y nombre_índice=%.q:JIDX%]
Artículo Descripción

SqlListQuery Especifica una consulta SQL para enumerar objetos en el cuadro de diálogo
de ingeniería inversa.
La consulta se ejecuta para llenar variables de encabezado y crear objetos en
la memoria.
Ejemplo (Dimensión en Oracle 10g):
{ PROPIETARIO, DIMENSIÓN }
seleccione d.propietario,
d.dimension_name de
sys.all_dimensions d donde 1=1
[ y d.dimension_name=%.q:DIMENSION%]
[ y d.propietario=%.q:SCHEMA%]
pedido por d.propietario,
d.dimension_name
SqlOptsQuery Especifica una consulta SQL para recuperar opciones físicas de objetos
invertidos por SqlListQuery. El resultado de la consulta llenará la variable
%OPCIONES% y deberá respetar la sintaxis SQL.
Ejemplo (Tabla en SQL Anywhere 10):
{PROPIETARIO, MESA, OPCIONES}
seleccione u.nombre_usuario, t.nombre_tabla,
'in'+ f.dbspace_name de
sys.sysuserperms u
unirse a sys.systab t en (t.creator = u.user_id)
unirse a sys.sysfile f en (f.file_id = t.file_id)
donde f.dbspace_name <> 'SYSTEM'
y t.table_type en (1, 3, 4) [ y
t.table_name = %.q:TABLE%]
[ y u.nombre_usuario = %.q:PROPIETARIO%]

Personalización y ampliación de PowerDesigner 165


CAPÍTULO 4: Archivos de definición DBMS

SqlPermQuery Especifica una consulta SQL para aplicar ingeniería inversa a los permisos
otorgados en el objeto.
Ejemplo (Procedimiento en SQL Anywhere 10):
{ CONCESIONARIO, PERMISO}
seleccione
u.nombre_de_usuario beneficiario, 'EJECUTAR'
de sysuserperms u, sysprocedure s, sysprocperm p
donde (s.proc_name = %.q:PROC% ) y
(s.proc_id = p.proc_id) y
(u.user_id = p.beneficiario)
Variable predeterminada
En una columna, si el tipo de variable predeterminada es texto o cadena, la consulta debe
recuperar el valor de la variable predeterminada entre comillas. La mayoría de los DBMS
agregan automáticamente estas comillas al valor de la variable predeterminada. Si el DBMS
que está utilizando no agrega comillas automáticamente, debe especificarlo en las diferentes
consultas utilizando la variable predeterminada.
Por ejemplo, en IBM DB2 UDB 8 para OS/390, se ha agregado la siguiente línea en
SqlListQuery para agregar comillas al valor de la variable predeterminada:
... caso (predeterminado) cuando '1' luego '''' concat valor
predeterminado concat '''' cuando '5' luego '''' concat valor
predeterminado concat '''' else valor predeterminado final, ...

Mesa
La categoría Tabla se encuentra en la categoría Raíz > Script > Objetos y puede contener los
siguientes elementos que definen cómo se modelan las tablas para su DBMS.
Artículo Descripción

166 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
tablas:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• NombreConst
• Crear, Soltar
• Habilitar, HabilitarSinónimo
• Encabezado, pie de página
• Maxlen, MaxConstLen
• Atributos modificables
• Opciones, OpcionesDef
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
AddTableCheck Especifica una declaración para personalizar el script para modificar las
restricciones de la tabla dentro de una declaración de modificación de tabla.
Ejemplo (SQL en cualquier lugar 10):
alterar la tabla [%QUALIFIER%]%TABLE%
agregar [restricción %CONSTNAME% ]verificar
(%.A:CON-
TENSIÓN%)
PermitidoADT Especifica una lista de tipos de datos abstractos en los que se puede basar
una tabla. Esta lista rellena el campo Basado en de la hoja de propiedades
de la tabla.
Puede asignar un tipo de datos abstracto a una tabla, la tabla utilizará las
propiedades del tipo y los atributos de tipo se convertirán en columnas de la
tabla.
Ejemplo (Oracle 10g):
OBJETO

Artículo Descripción

Pie de página de Especifica una instrucción que se colocará después de las


AlterTable instrucciones de modificación de la tabla (y antes del terminador).
Ejemplo:
AlterTableFooter = /* Fin de la instrucción alter
*/

Personalización y ampliación de PowerDesigner 167


CAPÍTULO 4: Archivos de definición DBMS

Encabezado de tabla Especifica una declaración que se colocará antes de las declaraciones
alterada de modificación de la tabla. Puede colocar un encabezado de tabla
modificado en sus scripts para documentar o realizar la lógica de
inicialización.
Ejemplo:
AlterTableHeader = /* Nombre de la tabla: %TABLE%
*/
Comprobación de Especifica una declaración para personalizar la secuencia de
definición de tabla comandos de las restricciones de tabla (comprobaciones) dentro de
una declaración de creación de tabla.
Ejemplo:
comprobar (% RESTRICCIÓN%)

Comprobación de Especifica una instrucción para descartar una comprobación de tabla


DropTable en una instrucción de modificación de tabla.
Ejemplo:
alterar la tabla [%QUALIFIER%]%TABLE%
comprobar eliminar

InsertarIdentidadDesactiva Especifica una declaración para habilitar la inserción de datos en una


do tabla que contiene una columna de identidad.
Ejemplo (ASE 15):
establecer identidad_insertar
[%QUALIFIER%]%@OBJTCODE% de descuento

InsertIdentityOn Especifica una declaración para deshabilitar la inserción de datos en


una tabla que contiene una columna de identidad.
Ejemplo (ASE 15):
establecer Identity_insert
[%QUALIFIER%]%@OBJTCODE% en

Artículo Descripción

Rebautizar [modificar] Especifica una declaración para cambiar el nombre de una tabla.
Si no se especifica, el proceso de modificación de la base de datos descarta
las restricciones de clave externa, crea una nueva tabla con el nuevo nombre,
inserta las filas de la tabla anterior en la nueva tabla y crea los índices y
restricciones en la nueva tabla utilizando tablas temporales. Ejemplo (Oracle
10g):
cambiar el nombre de %OLDTABL% a %NEWTABL%
La variable %OLDTABL% es el código de la tabla antes de renombrarla y
la variable %NEWTABL% es el nuevo código.

168 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

SqlCheckQuery Especifica una consulta SQL para aplicar ingeniería inversa a las
comprobaciones de tablas.
Ejemplo (SQL en cualquier lugar 10):
{PROPIETARIO, TABLA, NOMBRE CONSTANTE,
RESTRICCIÓN} seleccione u.nombre_usuario,
t.nombre_tabla,
k.restricción_nombre,
case(lcase(left(h.check_defn, 5))) when 'check'
then substring(h.check_defn, 6) else h.check_defn
end
de sys.sysconstraint k
unirse a sys.syscheck h en (h.check_id =
k.constraint_id)
unirse a sys.systab t en (t.object_id =
k.table_object_id)
únase a sys.sysuserperms u en (u.user_id =
t.creator) donde k.constraint_type = 'T' y
t.table_type en (1, 3, 4) [ y u.user_name =
%.q:OWNER%]
[ y t.table_name = %.q:TABLE%]
ordenar por 1, 2, 3

Artículo Descripción

Tablas SqlListRefr Especifica una consulta SQL utilizada para enumerar las tablas a las
que hace referencia una tabla.
Ejemplo (Oracle 10g):
{PROPIETARIO, TABLA, POWNER,
PADRE} seleccione c.propietario,
c.table_name, r.propietario,
r.table_name
de sys.all_constraints c,
sys.all_constraints r
donde (c.tipo_restricción = 'R' y
c.r_nombre_restricción = r.nombre_restricción
y c.r_propietario =
r.propietario)
[ y c.propietario =
%.q:SCHEMA%] [ y c.table_name
= %.q:TABLE%] union select
c.propietario, c.table_name,
r.propietario,
r.nombre_tabla de
sys.all_constraints c,
sys.all_constraints r
donde (r.tipo_restricción = 'R' y
r.r_nombre_restricción = c.nombre_restricción
y r.r_propietario =
c.propietario)
[ y c.propietario = %.q:SCHEMA%]

Personalización y ampliación de PowerDesigner 169


CAPÍTULO 4: Archivos de definición DBMS

[ y c.table_name = %.q:TABLE%]

SqlListSchemaSqlListSche Especifica una consulta utilizada para recuperar esquemas registrados


ma en la base de datos. Este elemento se utiliza con tablas de tipo XML
(una referencia a un documento XML almacenado en la base de datos).
Cuando define una tabla XML, necesita recuperar los documentos
XML registrados en la base de datos para asignar un documento a la
tabla, esto se hace mediante la consulta SqlListSchema.
Ejemplo (Oracle 10g):
SELECCIONE schema_url DESDE dba_xml_schemas

SqlStatistics Especifica una consulta SQL para aplicar ingeniería inversa a las
estadísticas de columnas y tablas. Ver SqlStatistics enColumnaen la
página 152.
SqlXMLTable Especifica una subconsulta utilizada para mejorar el rendimiento de
SqlAttrQuery (verElementos de objetos comunesen la página 144).

170 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

TablaComentario [generación e inversión] Especifica una declaración para agregar un


comentario de tabla. Si no se especifica, la casilla de verificación
Comentario en las pestañas Tablas y Vistas del cuadro Generación de
base de datos no está disponible.
Ejemplo (Oracle 10g):
comentar en la tabla [%QUALIFIER%]%TABLE% es
%.q:COMENTARIO%
La variable %TABLE% es el nombre de la tabla definida en la Lista
de tablas o en la hoja de propiedades de la tabla. La variable
%COMMENT% es el comentario definido en el cuadro de texto
Comentario de la hoja de propiedades de la tabla.
Artículo Descripción

lista de tipos Especifica una lista de tipos (por ejemplo, DBMS: relacional, objeto,
XML) para tablas. Esta lista completa la lista Tipo de la hoja de
propiedades de la tabla.
El tipo XML se utilizará con el elemento SqlListSchema.
UniqConstraint Especifica si se puede usar el mismo nombre para el índice y el nombre
Nombre de la restricción en la misma tabla. Están disponibles los siguientes
ajustes:
• Sí: la restricción de tabla y los nombres de índice deben ser
diferentes, y esto se probará durante la verificación del modelo.
• No: la restricción de tabla y los nombres de índice pueden ser
idénticos
Columna
La categoría Columna se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan las columnas para su DBMS.
Artículo Descripción

Personalización y ampliación de PowerDesigner 171


CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
columnas:
• Agregar
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• NombreConst
• Crear, Soltar
• Permitir
• Maxlen, MaxConstLen
• Atributos modificables
• Opciones, OpcionesDef
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
AñadirColnCheck Especifica una declaración para personalizar la secuencia de comandos
para modificar las restricciones de columna dentro de una declaración de
modificación de tabla.
Ejemplo (Oracle 10g):
alterar la tabla [%QUALIFIER%]%TABLE%
agregar [restricción %CONSTNAME%] comprobar
(%.A:CONSTRAINT %)

Artículo Descripción

AlterTableAgregar Especifica una sentencia para definir el valor predeterminado de una


predeterminado columna en una sentencia de modificación.
Ejemplo (Servidor SQL 2005):
[[ restricción %ExtDeftConstName%] predeterminado
%DEFAULT
% ]para %COLUMNA%
AltHabilitarAgregar Especifica si una restricción de verificación de columna, creada a partir de
ColnChk los parámetros de verificación de la columna, puede o no agregarse a una
tabla mediante una declaración de modificación de tabla. Están disponibles
los siguientes ajustes:

• Sí: se puede usar AddColnChck para modificar la restricción de


verificación de columna en una declaración de modificación de tabla.
• No: PowerDesigner copia los datos en una tabla temporal antes de
volver a crear la tabla con las nuevas restricciones.

172 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Véase también AddColnCheck.

Copia de Habilita columnas de marca de tiempo en declaraciones de inserción.


AltEnableTS
Unir Especifica una instrucción para vincular una regla a una columna.
Ejemplo (ASE 15):
[%R%?[exec]][ejecutar]sp_bindrule [%R%?['[%QUALI-
FIER%]%RULE%'][[%QUALIFIER%]%RULE%]:['[%QUALIFIER
%]%RULE%']], '%TABLE%.%COLUMN%'

CheckNull Especifica si una columna puede ser nula.

Comentario de Especifica una instrucción para agregar un comentario a una columna.


columna
Ejemplo:
comentario en la columna
[%QUALIFIER%]%TABLE%.%COLUMN% es %.q:COMENTARIO%

Definir columna de Especifica una declaración para personalizar la secuencia de comandos de


comprobación las restricciones de columna (verificaciones) dentro de una declaración de
creación de tabla. Se llama a esta instrucción si las instrucciones de
creación, adición o modificación contienen %CONSTDEFN%.
Ejemplo:
[restricción %CONSTNAME%] verificación
(%CONSTRAINT%)

Artículo Descripción

Personalización y ampliación de PowerDesigner 173


CAPÍTULO 4: Archivos de definición DBMS

DropColnCheck Especifica una instrucción para descartar una comprobación de columna en


una instrucción de modificación de tabla. Esta declaración se usa en el script
de modificación de la base de datos cuando los parámetros de verificación
se han eliminado en una columna.
Si DropColnChck está vacío, PowerDesigner copia los datos en una tabla
temporal antes de volver a crear la tabla con las nuevas restricciones.
Ejemplo (SQL en cualquier lugar 10):
modificar tabla
[%QUALIFIER%]%TABLE% soltar
restricción %CONSTNAME%
DropColnComp Especifica una instrucción para descartar una expresión calculada de
columna en una instrucción de modificación de tabla.
Ejemplo (SQL en cualquier lugar 10):
alterar la tabla
[%QUALIFIER%]%TABLE% alterar
%COLUMN% soltar calcular
DropDefault Con- Especifica una instrucción para descartar una restricción vinculada a una
tensión columna definida con un valor predeterminado
Ejemplo (Servidor SQL 2005):
[%ExtDeftConstName%?alter table
[%QUALIFIER%]%TABLE%
soltar restricción %ExtDeftConstName%]

EnableBindRule Especifica si las reglas comerciales se pueden vincular a columnas para


verificar parámetros. Están disponibles los siguientes ajustes:
• Sí: se generan las entradas Crear y Vincular de regla
• No - El cheque se genera dentro de la columna Añadir pedido

Habilitar columna Especifica si se permiten las columnas calculadas.


calculada

Artículo Descripción

174 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

HabilitarPredeterminad Especifica si se permiten valores predeterminados predefinidos. Están


o disponibles los siguientes ajustes:
• Sí: el valor predeterminado (si está definido) se genera para las
columnas. Se puede definir en los parámetros de verificación para
cada columna. La variable %DEFAULT% contiene el valor
predeterminado. La casilla de verificación Valor predeterminado para
las columnas debe seleccionarse en las pestañas Tablas y vistas del
cuadro Generación de la base de datos.
• No: no se puede generar el valor predeterminado y la casilla de
verificación Valor predeterminado no está disponible.
Ejemplo (AS IQ 12.6):
EnableDefault está habilitado y el valor predeterminado para la función
de empleado de la columna EMPFUNC es Ingeniero técnico. El script
generado es:
crear tabla EMPLEADO
(
EMPNUM numérico(5) no nulo,
EMP_EMPNUM numérico(5) ,
DIVNUM numérico(5) no nulo,
EMPFNAM char(30) ,
EMPLNAM char(30) no es nulo,
EMPFUNC char(30) predeterminado
'Ingeniero técnico', EMPSAL
numeric(8,2), clave principal
(EMPNUM)
);

Artículo Descripción

Personalización y ampliación de PowerDesigner 175


CAPÍTULO 4: Archivos de definición DBMS

Habilitar identidad Especifica si se admite la palabra clave Identidad. Las columnas de identidad
son contadores en serie mantenidos por la base de datos (por ejemplo, Sybase
y Microsoft SQL Server). Están disponibles los siguientes ajustes:
• Sí: activa la casilla de verificación Identidad en la hoja de propiedades
de la columna.
• No: la casilla de verificación Identidad no está disponible.
Cuando se selecciona la casilla de verificación Identidad, la palabra clave
Identidad se genera en el script después del tipo de datos de la columna. Una
columna de identidad nunca es nula, por lo que la casilla de verificación
Obligatorio se selecciona automáticamente. PowerDesigner asegura que:
• Solo se define una columna de identidad por tabla
• Una clave externa no puede ser una columna de identidad
• La columna Identidad tiene un tipo de datos apropiado. Si la casilla de
verificación Identidad está seleccionada para una columna con un tipo
de datos no compatible, el tipo de datos se cambia anumérico. Si el
tipo de datos de una columna de identidad se cambia a un tipo no
admitido, se muestra un error.
Tenga en cuenta que, durante la generación, la variable %IDENTITY%
contiene el valor "identidad", pero puede cambiarlo fácilmente, si es
necesario, utilizando la siguiente sintaxis:
[%IDENTITY%?nueva palabra clave de identidad]
EnableNotNull Especifica si los valores predeterminados se asignan a las columnas que
WithDflt contienen valores nulos. Están disponibles los siguientes ajustes:
• Sí: la casilla de verificación Con predeterminado está habilitada en la
hoja de propiedades de la columna. Cuando se selecciona, se asigna un
valor predeterminado a una columna cuando se inserta un valor Nulo.
• No: la casilla de verificación Con valor predeterminado no está
disponible.

176 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

ModifyColn Check Especifica una sentencia para modificar una comprobación de columna en
una sentencia de modificación de tabla. Esta declaración se usa en el script
de modificación de la base de datos cuando los parámetros de verificación
de una columna se han modificado en la tabla.
Si AddColnChck está vacío, PowerDesigner copia los datos en una tabla
temporal antes de volver a crear la tabla con las nuevas restricciones.
Ejemplo (AS IQ 12.6):
alterar la tabla [%QUALIFIER%]%TABLE%
modificar %COLUMN% comprobar
(%.A:CONSTRAINT%)
La variable %COLUMN% es el nombre de la columna definida en la hoja
de propiedades de la tabla. La variable % CONSTRAINT % es la restricción
de verificación creada a partir de los nuevos parámetros de verificación.
AltEnableAddColnChk debe establecerse en SÍ
para permitir el uso de esta instrucción.

Artículo Descripción

ModifyColn Comp Especifica una declaración para modificar una expresión calculada para una
columna en una tabla de modificación.
Ejemplo (ASA 6):
alterar la tabla [%QUALIFIER%]%TABLE%
alterar %COLUMN% establecer cálculo
(%COMPUTE%)
ModificarColnDflt Especifica una declaración para modificar un valor predeterminado de
columna en una declaración de modificación de tabla. Esta instrucción se
utiliza en el script de modificación de la base de datos cuando se ha
modificado el valor predeterminado de una columna en la tabla.
Si ModifyColnDflt está vacío, PowerDesigner copia los datos en una tabla
temporal antes de volver a crear la tabla con las nuevas restricciones.
Ejemplo (ASE 15):
alterar la tabla [%QUALIFIER%]%TABLE%
reemplazar %COLUMN% default %DEFAULT%
La variable %COLUMN% es el nombre de la columna definida en la hoja
de propiedades de la tabla. La variable %DEFAULT% es el nuevo valor
predeterminado de la columna modificada.

Personalización y ampliación de PowerDesigner 177


CAPÍTULO 4: Archivos de definición DBMS

ModificarColnNull Especifica una sentencia para modificar el estado nulo/no nulo de una
columna en una sentencia de modificación de tabla.
Ejemplo (Oracle 10g):
alterar la tabla [%QUALIFIER%]%TABLE%
modificar %COLUMN% %MAND%

ModificarColumna Especifica una sentencia para modificar una columna. Esta es una
declaración diferente de la declaración de modificación de la tabla y se usa
en el script de modificación de la base de datos cuando se ha modificado la
definición de la columna.
Ejemplo (SQL en cualquier lugar 10):
alterar la tabla [%QUALIFIER%]%TABLE%
modificar %COLUMN% %DATATYPE%
%NOTNULL%
NullObligatorio Especifica el estado obligatorio de una columna. Este elemento se utiliza
con la variable de columna NULLNOTNULL, que puede tomar valores
"nulo", "no nulo" o vacíos. Para más información, verTrabajar con valores
nulosen la página 159.

Rebautizar Especifica una declaración para cambiar el nombre de una columna dentro
de una declaración de modificación de tabla.
Ejemplo (Oracle 10g):
modificar la tabla
[%QUALIFIER%]%TABLE% cambiar el nombre
de la columna %OLDCOLN% a %NEWCOLN%

Artículo Descripción

178 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

SqlCheckQuery Especifica una consulta SQL para aplicar ingeniería inversa a los parámetros de
comprobación de columnas. El resultado debe ajustarse a la sintaxis SQL
adecuada.
Ejemplo (SQL en cualquier lugar 10):
{PROPIETARIO, TABLA, COLUMNA, CONSTNAME,
RESTRICCIÓN} seleccione u.nombre_usuario,
t.nombre_tabla, c.nombre_columna,
k.nombre_restricción,
case(lcase(left(h.check_defn, 5))) when 'check' then
substring(h.check_defn, 6) else h.check_defn end
de sys.sysconstraint k
unirse a sys.syscheck h en (h.check_id =
k.constraint_id)
unirse a sys.systab t on (t.object_id =
k.table_object_id) unirse a sys.sysuserperms u on
(u.user_id = t.creator) unirse a sys.syscolumn c on
(c.object_id = k.ref_object_id)
donde k.tipo_restricción = 'C' [ y
u.nombre_usuario=%.q:PROPIETARIO%]
[ y t.table_name=%.q:TABLE%]
[ y c.column_name=%.q:COLUMN%] ordenar por
1, 2, 3, 4

SqlStatistics Especifica una consulta SQL para aplicar ingeniería inversa a las estadísticas de
columnas y tablas.
Ejemplo (ASE 15):
[%ISLONGDTTP%?{ AverageLength } seleccione
[%ISLONGDTTP%?[%ISSTRDTTP%?
avg(char_length(%COLUMN%)):avg(datalength(%COLUMN
%))]:null] como longitud_promedio de
[%QUALIFIER%]%TABLE%
:{ NullValuesRate, DistinctValues, AverageLength }
seleccione
[%ISMAND%?null:(count(*) - count(%COLUMN%)) * 100 /
count(*)] como valores_nulos,
[%ISMAND%?null:count(distinto %COLUMN%)] como
valores_distintos,
[%ISVARDTTP%?[%ISSTRDTTP%?avg(char_length(%COLUMN
%)):avg(datalength(%COLUMN%))]:null] como
promedio_longitud
de [%CALIFICADOR%]%TABLA%]
Desatar Especifica una declaración para desvincular una regla a una columna.
Ejemplo (ASE 15):
[%R%?[exec]][ejecutar] sp_unbindrule
'%TABLE%.%COLUMN%'

Personalización y ampliación de PowerDesigner 179


CAPÍTULO 4: Archivos de definición DBMS

Trabajar con valores nulos


El elemento NullRequired especifica el estado obligatorio de una columna. Este elemento se
utiliza con la variable de columna NULLNOTNULL, que puede tomar valores "nulo", "no
nulo" o vacíos. Las siguientes combinaciones están disponibles

Cuando la columna es obligatoria


"not null" siempre se genera si NullRequired se establece en True o False, como se muestra
en el siguiente ejemplo:
crear dominio DOMN_MAND char(33) no nulo; crear
dominio DOMN_NULL char(33) null;

crear tabla TABLE_1


(
COLN_MAND_1 char(33) no nulo,
COLN_MAND_2 DOMN_MAND no nulo,
COLN_MAND_3 DOMN_NULL no nulo, );
Cuando la columna no es obligatoria
• Si NullRequired se establece en True, se genera "null". El elemento NullRequired debe
usarse en ASE, por ejemplo, donde la nulabilidad es una opción de la base de datos y se
requieren las palabras clave "nulo" o "no nulo".
En el siguiente ejemplo, se generan todos los valores "nulos":
crear dominio DOMN_MAND char(33) no nulo; crear
dominio DOMN_MAND char(33) nulo;

crear tabla TABLE_1


(
COLN_NULL_1 carácter(33) nulo,
COLN_NULL_2 DOMN_NULL nulo,
COLN_NULL_3 DOMN_MAND nulo)
• Si NullRequired se establece en False, se genera una cadena vacía. Sin embargo, si una
columna adjunta a un dominio obligatorio se vuelve no obligatoria, se generará "nulo".
En el siguiente ejemplo, "null" se genera solo para COLUMN_NULL3 porque esta
columna usa el dominio obligatorio, las otras columnas generan una cadena vacía:
crear dominio DOMN_MAND char(33) no nulo; crear
dominio DOMN_NULL char(33) null;

crear tabla TABLE_1


(
COLUMN_NULL1 carácter(33),
COLUMN_NULL2 DOMN_NULL ,
COLUMN_NULL3 DOMN_MAND nulo);
Índice
La categoría Índice se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los índices para su DBMS.

180 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para los
índices:
• Agregar
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario
• Encabezado, pie de página
• Maxlen
• Atributos modificables
• Opciones, OpcionesDef
• Consultas invertidas
• DeclaracionesRevertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
AddColIndex Especifica una instrucción para agregar una columna en la instrucción Crear
índice. Este parámetro define cada columna en la lista de columnas de la
instrucción Create Index.
Ejemplo (ASE 15):
%COLUMNA%[ %ASC%]
%COLUMN% es el código de la columna definida en la lista de columnas
de la tabla. %ASC% es ASC (orden ascendente) o DESC (orden
descendente) según el estado del botón de opción Ordenar para la columna
de índice.

AlterIgnoreOrder Especifica que los cambios en el orden de la colección no deben provocar


una modificación del orden de la base de datos.

Grupo Especifica el valor que se asignará a la palabra clave de clúster. Si este


parámetro está vacío, el valor predeterminado de la variable %CLUSTER%
es CLUSTER.
Crear antes de la Controla el orden de generación de claves e índices. Están disponibles los
clave siguientes ajustes:
• Sí: los índices se generan antes que las claves.
• No: los índices se generan después de las claves.

Artículo Descripción

Personalización y ampliación de PowerDesigner 181


CAPÍTULO 4: Archivos de definición DBMS

DefIndexType Especifica el tipo predeterminado de un índice.


Ejemplo (DB2):
Tipo 2

Columna Especifica la columna de un índice.


DefineIndex
HabilitarAscDesc Habilita la propiedad Ordenar en las hojas de propiedades del índice, lo que
permite ordenar en orden ascendente o descendente. Están disponibles los
siguientes ajustes:
• Sí: la propiedad Ordenar está habilitada para los índices, con
Ascendente seleccionado de forma predeterminada. Se calcula la
variable %ASC% y se genera la palabra clave ASC o DESC al crear o
modificar la base de datos
• No: no se admite la clasificación de índices.

Ejemplo (SQL en cualquier lugar 10):


Se crea un índice de clave principal en la tabla TASK, con la columna
PRONUM ordenada en orden ascendente y la columna TSKNAME
ordenada en orden descendente:
crear índice IX_TASK en TASK (PRONUM asc, TSKNAME
desc);
Habilitar clúster Habilita la creación de índices de clúster. Están disponibles los siguientes
ajustes:
• Sí: la casilla de verificación Clúster está habilitada en las hojas de
propiedades del índice.
• No: los índices de clúster no son compatibles.
Habilitar función Habilita la creación de índices basados en funciones. Están disponibles los
siguientes ajustes:
• Sí: puede definir expresiones para índices.
• No: no se admiten los índices basados en funciones.

ÍndiceComentario Especifica una declaración para agregar un comentario a un índice.


Ejemplo (SQL en cualquier lugar 10):
comentario en el índice
[%QUALIFIER%]%TABLE%.%INDEX% es %.q:COMENTARIO%

Artículo Descripción

182 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Tipo de índice Especifica una lista de tipos de índice disponibles.


Ejemplo (CI 12.6):
CMP
HG
HNG
LF
WD
FECHA
TIEMPO
DTTM

MandIndexType Especifica si el tipo de índice es obligatorio para los índices. Están


disponibles los siguientes ajustes:
• Sí: el tipo de índice es obligatorio.
• No: el tipo de índice no es obligatorio.

MaxColIndex Especifica el número máximo de columnas que se pueden incluir en un


índice. Este valor se utiliza durante la verificación del modelo.

Consulta Especifica una consulta SQL utilizada para enumerar los índices del
SqlSysIndex sistema creados por la base de datos. Estos índices se excluyen durante la
ingeniería inversa.
Ejemplo (AS IQ 12.6):
{PROPIETARIO, TABLA, ÍNDICE, ÍNDICE TIPO}
seleccione u.user_name, t.table_name,
i.index_name,
i.index_type
from sysindex i, systable t, sysuserperms
u donde t.table_id = i.table_id y
u.user_id = t.creator and i.index_owner !=
'USUARIO' [y u.user_name=%.q:OWNER%]
[y t.table_name=%.q:TABLE%]
Unión
seleccione u.user_name, t.table_name,
i.index_name,
i.index_type
from sysindex i, systable t, sysuserperms
u donde t.table_id = i.table_id y
u.user_id = t.creator and i.index_type =
'SA' [y u.user_name=%.q:OWNER%]
[y t.table_name=%.q:TABLE%]

Personalización y ampliación de PowerDesigner 183


CAPÍTULO 4: Archivos de definición DBMS

UniqNombre Especifica si los nombres de índice deben ser únicos dentro del ámbito global
de la base de datos. Están disponibles los siguientes ajustes:
• Sí: los nombres de índice deben ser únicos dentro del ámbito global de
la base de datos.
• No: los nombres de índice deben ser únicos por objeto
Clave
La categoría Pkey se encuentra en la categoría Raíz > Script > Objetos y puede contener los
siguientes elementos que definen cómo se modelan las claves primarias para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para claves
primarias:
• Agregar
• NombreConst
• Crear, Soltar
• Permitir
• Opciones, OpcionesDef
• Consultas invertidas
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Habilitar clúster Especifica si se permiten restricciones agrupadas en claves primarias.
• Sí: se permiten restricciones agrupadas.
• No: las restricciones agrupadas no están permitidas.

PkAutoIndex Determina si se genera una declaración de índice de creación para cada


declaración de clave principal. Están disponibles los siguientes ajustes:
• Sí: genera automáticamente un índice de clave principal con la
declaración de clave principal. Si selecciona la casilla de verificación
de clave principal en crear índice al generar o modificar una base de
datos, la casilla de verificación de clave principal de la tabla de
creación se borrará automáticamente y viceversa.
• No: los índices de clave principal no se generan automáticamente. Las
casillas de verificación Clave principal y Crear índice se pueden
seleccionar al mismo tiempo.
PKeyComment Especifica una instrucción para agregar un comentario de clave principal.

Artículo Descripción

184 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

UsarSpPrimKey Especifica el uso de la instrucción Sp_primarykey para generar claves


principales. Para una base de datos que admita el procedimiento para
implementar la definición de clave, puede probar el valor de la variable
correspondiente %USE_SP_PKEY% y elegir entre la creación de clave en
la tabla o el lanzamiento de un procedimiento. Están disponibles los
siguientes ajustes:

• Sí: la instrucción Sp_primarykey se utiliza para generar claves


principales.
• No: las claves principales se generan por separado en una declaración
de modificación de tabla.
Ejemplo (ASE 15):
Si UseSpPrimKey está habilitado, la entrada Agregar para Pkey contiene:
UseSpPrimKey = SÍ
Añadir entrada de

[%USE_SP_PKEY%?[ejecutar] sp_primarykey %TABLE%,


%PKEYCOLUNS%
:alterar tabla [%CALIFICADOR%]%TABLA%
agregar [restricción %CONSTNAME%] clave principal
[%IsClustered%] (%PKEYCOLUMNS%)
[%OPCIONES%]]
Llave
La categoría Clave se encuentra en la categoría Raíz > Script > Objetos y puede contener los
siguientes elementos que definen cómo se modelan las claves para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
claves:
• Agregar
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• NombreConst
• Crear, Soltar
• Permitir
• MaxConstLen
• Atributos modificables
• Opciones, OpcionesDef
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.

Personalización y ampliación de PowerDesigner 185


CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

Un comentario clave Especifica una declaración para agregar un comentario clave alternativo.

Permitir columna Especifica si se permiten las columnas no obligatorias. Están disponibles los
anulable siguientes ajustes:
• Sí: se permiten columnas no obligatorias.
• No: las columnas no obligatorias no están permitidas.

AlterIgnoreOrder Especifica que los cambios en el orden de la colección no deben provocar


una modificación del orden de la base de datos.

Habilitar clúster Especifica si se permiten restricciones agrupadas en claves alternativas.


• Sí: se permiten restricciones agrupadas.
• No: las restricciones agrupadas no están permitidas.

SqlAkeyIndex Especifica una consulta de ingeniería inversa para obtener los índices clave
alternativos de una tabla mediante una conexión en vivo. Ejemplo (SQL en
cualquier lugar 10):
seleccione distinto i.index_name
de sys.sysuserperms u únase a
sys.systable t en
(t.creator=u.user_id) únase a
sys.sysindex i en
(i.table_id=t.table_id) donde
i."unique" no está en (' Y', 'N')
[ y t.table_name = %.q:TABLE%]
[ y u.nombre_usuario = %.q:ESQUEMA%]

Índice Determina si se genera una sentencia Crear índice para cada sentencia
UniqConstAuto clave. Están disponibles los siguientes ajustes:
• Sí: genera automáticamente un índice de clave alternativo dentro de la
instrucción de clave alternativa. Si selecciona la casilla de verificación
de clave alternativa en crear índice al generar o modificar una base de
datos, la casilla de verificación de clave alternativa de la tabla de
creación se borrará automáticamente, y viceversa.
• No: los índices de clave alternativos no se generan automáticamente. Las
casillas de verificación Clave alternativa y Crear índice se pueden
seleccionar al mismo tiempo.
Referencia
La categoría Referencia se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan las referencias para su
DBMS.

186 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
referencias:
• Agregar
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• NombreConst
• Crear, Soltar
• Permitir
• MaxConstLen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Comprobación de Especifica que la prueba de integridad referencial se realiza solo después
compromiso de COMMIT. Contiene la palabra clave utilizada para especificar una
referencia con la opción CheckOnCommit.
Ejemplo:
COMPROBAR EN COMPROMISO

DclDelIntegridad Especifica una lista de restricciones de integridad referencial declarativas


permitidas para su eliminación. La lista puede contener cualquiera o todos
los siguientes valores, que controlan la disponibilidad de los botones de radio
relevantes en la pestaña Integridad de las hojas de propiedades de referencia:
• RESTRINGIR
• CASCADA
• ESTABLECER NULO
• ESTABLECER PREDETERMINADO

Artículo Descripción

Personalización y ampliación de PowerDesigner 187


CAPÍTULO 4: Archivos de definición DBMS

DclUpdIntegrity Especifica una lista de restricciones de integridad referencial declarativas


permitidas para la actualización. La lista puede contener cualquiera o todos
los siguientes valores, que controlan la disponibilidad de los botones de
radio relevantes en la pestaña Integridad de las hojas de propiedades de
referencia:
• RESTRINGIR
• CASCADA
• ESTABLECER NULO
• ESTABLECER PREDETERMINADO
DefinirUnirse Especifica una instrucción para definir una unión para una referencia. Esta
es otra forma de definir el contenido de la declaración de referencia de
creación y corresponde a la variable %JOINS%.
Por lo general, el script de creación de una referencia utiliza las variables
%CKEYCOLUMNS% y %PKEYCOLUMNS%, que contienen las listas de
columnas secundarias y principales separadas por comas.
Si usa %JOINS%, puede hacer referencia a cada columna principal y
secundaria emparejada por separado. Se ejecuta un bucle en Join para cada
columna principal y secundaria emparejada, lo que permite tener una
combinación de sintaxis de PK y FK.
Ejemplo (Acceso 2000):
P=%PK% F=%FK%
EnableChange Especifica si, cuando una referencia está vinculada a una clave como se
JoinOrder muestra en la pestaña Uniones de las propiedades de la referencia, la casilla
de verificación Ordenar automáticamente las uniones y las características
están disponibles. Están disponibles los siguientes ajustes:
• Sí: el orden de unión se puede establecer automáticamente mediante la
casilla de verificación Organizar automáticamente el orden de unión. Al
seleccionar esta casilla de verificación, la lista se ordena según el orden
de las columnas clave. Desmarcar esta casilla de verificación permite la
clasificación manual del orden de combinación con los botones de
movimiento.
• No: la propiedad de orden de unión de organización automática no está
disponible.
Habilitar clúster Especifica si se permiten restricciones agrupadas en claves externas.
• Sí: se permiten restricciones agrupadas.
• No: las restricciones agrupadas no están permitidas.

188 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Nombre de clave de Especifica la función de clave externa permitida durante la generación de la


activación base de datos. Están disponibles los siguientes ajustes:
• Sí - El código de la referencia se utiliza como rol para la clave externa.
• No: la función de clave externa no está permitida.

Artículo Descripción

FKAutoIndex Determina si se genera una declaración de creación de índice para cada


declaración de clave externa. Están disponibles los siguientes ajustes:
• Sí: genera automáticamente un índice de clave externa con la
declaración de clave externa. Si selecciona la casilla de verificación de
clave externa en crear índice al generar o modificar una base de datos,
la casilla de verificación de clave externa de la tabla de creación se
borrará automáticamente y viceversa.
• No: los índices de clave externa no se generan automáticamente. Las
casillas de verificación Clave externa y Crear índice se pueden
seleccionar al mismo tiempo.
FClaveComentario Especifica una declaración para agregar un comentario clave alternativo.

Consulta Especifica una consulta SQL utilizada para enumerar las uniones en una
SqlListChildren referencia.
Ejemplo (Oracle 10g):
{COLUMN CLAVE, COLUMNA FCLAVE}
[%ISODBCUSER%?seleccionar
p.column_name, f.column_name
from sys.user_cons_columns
f, sys.all_cons_columns p
donde f.position =
p.position y
f.table_name=%.q:TABLE%
[ y
p.propietario=%.q:POWNER%] y
p.table_name=%.q:PARENT%
y f.constraint_name=%.q:FKCONSTRAINT% y
p.constraint_name=%.q:PKCONSTRAINT%
ordenar por posición f
:seleccione p.column_name,
f.column_name from
sys.all_cons_columns f,
sys.all_cons_columns p donde
f.position = p.position and
f.owner=%.q:SCHEMA% and
f.table_name=%.q:TABLE%
[ y
p.propietario=%.q:POWNER%] y
p.table_name=%.q:PARENT%

Personalización y ampliación de PowerDesigner 189


CAPÍTULO 4: Archivos de definición DBMS

y f.constraint_name=%.q:FKCONSTRAINT% y
p.constraint_name=%.q:PKCONSTRAINT%
ordenar por f.posición]

UsarSpFornKey Especifica el uso de la instrucción Sp_foreignkey para generar una clave


externa. Están disponibles los siguientes ajustes:

• Sí: la instrucción Sp_foreignkey se usa para crear referencias.


• No: las claves foráneas se generan por separado en una declaración de
modificación de tabla mediante el orden de referencia Crear.

Véase también UseSpPrimKey (Claveen la página 163).

Vista
La categoría Vista se encuentra en la categoría Raíz > Script > Objetos y puede contener los
siguientes elementos que definen cómo se modelan las vistas para su DBMS.
Artículo Descripción

190 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
las vistas:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, HabilitarSinónimo
• Encabezado, pie de página
• Atributos modificables
• Opciones
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Habilitar índice Especifica una lista de tipos de vista para los que hay un índice de
vista disponible.
Ejemplo (Oracle 10g):
MATERIALIZADO

SqlListSchemaSqlListSche Especifica una consulta utilizada para recuperar esquemas registrados


ma en la base de datos. Este elemento se utiliza con vistas de tipo XML
(una referencia a un documento XML almacenado en la base de datos).
Cuando define una vista XML, debe recuperar los documentos XML
registrados en la base de datos para asignar un documento a la vista,
esto se hace mediante la consulta SqlListSchema.
Ejemplo (Oracle 10g):
SELECCIONE schema_url DESDE dba_xml_schemas

SqlXMLView Especifica una subconsulta utilizada para mejorar el rendimiento de


SqlAttrQuery.
lista de tipos Especifica una lista de tipos (por ejemplo, DBMS: relacional, objeto,
XML) para las vistas. Esta lista completa la lista Tipo de la hoja de
propiedades de la vista.
El tipo XML se utilizará con el elemento SqlListSchema.

Artículo Descripción

Personalización y ampliación de PowerDesigner 191


CAPÍTULO 4: Archivos de definición DBMS

VerComprobar Especifica si la casilla de verificación Con opción de verificación en la hoja


de propiedades de la vista está disponible. Si la casilla de verificación está
seleccionada y el parámetro ViewCheck no está vacío, el valor de
ViewCheck se genera al final de la declaración de selección de vista y antes
del terminador.
Ejemplo (SQL en cualquier lugar 10):
Si ViewCheck está configurado con la opción de verificación, el script
generado es:
crear vista PRUEBA como
seleccione CLIENTE.CUSNUM, CLIENTE.CUSNOMBRE,
CLIENTE.CUSTEL de CLIENTE con la opción de
verificación;

VerComentario Especifica una instrucción para agregar un comentario de vista. Si este


parámetro está vacío, la casilla de verificación Comentario en el cuadro de
grupo Vistas en las pestañas Tablas y Vistas del cuadro Generar base de datos
no está disponible.
Ejemplo (Oracle 10g):
[%VIEWSTYLE%=ver? comentar en la tabla
[%QUALIFIER%]
%VER% es
%.q:COMENTARIO%]
estilo de vista Especifica un uso de vista. El valor definido se muestra en la lista Uso de la
hoja de propiedades de la vista.
Ejemplo (Oracle 10g):
vista materializada

espacio de mesa
La categoría Tablespace se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los tablespaces para su
DBMS.
Artículo Descripción

192 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
espacios de tabla:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Atributos modificables
• Opciones, OpcionesDef
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Comentario de Especifica una declaración para agregar un comentario de espacio de
espacio de tablas tablas.

Almacenamiento
La categoría Almacenamiento se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los almacenamientos para
su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para los
almacenamientos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Atributos modificables
• Opciones, OpcionesDef
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Comentario de Especifica una declaración para agregar un comentario de almacenamiento.
almacenamiento
Base de datos
La categoría Base de datos se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan las bases de datos para su
DBMS.

Personalización y ampliación de PowerDesigner 193


CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
bases de datos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Atributos modificables
• Opciones, OpcionesDef
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery, SqlPermQuery

Para obtener una descripción de cada uno de estos elementos comunes,


consulteElementos de objetos comunesen la página 144.
Antes de crear base Controla el orden en que se generan las bases de datos, los tablespaces y
de datos los almacenamientos. Están disponibles los siguientes ajustes:
• Sí: [predeterminado] Las declaraciones Create Tablespace y Create
Storage se generan antes que la declaración Create Database.
• No: las declaraciones Create Tablespace y Create Storage se generan
después de la declaración Create Database

CerrarBase de datos Especifica el comando para cerrar la base de datos. Si este parámetro está
vacío, la opción Base de datos/Cerrar en la pestaña Opciones del cuadro
Generar base de datos no está disponible.

Habilitar muchas Habilita el soporte para múltiples bases de datos en el mismo modelo.
bases de datos

Abrir base de datos Especifica el comando para abrir la base de datos. Si este parámetro está
vacío, la opción Base de datos/Abrir en la pestaña Opciones del cuadro
Generar base de datos no está disponible.
Ejemplo (ASE 15):
usar %BASE DE DATOS%
La variable %DATABASE% es el código de la base de datos asociada al
modelo generado.

Dominio
La categoría Dominio se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los dominios para su DBMS.
Artículo Descripción

194 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para los
dominios:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Unir Especifica la sintaxis para vincular una regla comercial a un dominio.
Ejemplo (ASE 15):
[%R%?[exec]][ejecutar]sp_bindrule [%R%?['[%QUALI-
FIER%]%REGLA%'][[%CALIFICADOR%]%REGLA%]:['[%CALIF
ICADOR %]%REGLA%']], %DOMINIO%

EnableBindRule Especifica si las reglas comerciales pueden vincularse a dominios para


verificar parámetros. Están disponibles los siguientes ajustes:
• Sí: se generan las entradas Crear y Vincular de regla
• No - Se genera el cheque dentro del dominio Add order

Habilitar verificación Especifica si se generan parámetros de comprobación.


Este elemento se prueba durante la generación de la columna. Si se
selecciona Tipo definido por el usuario para las columnas en el cuadro de
diálogo Generación y EnableCheck se establece en Sí para los dominios, los
parámetros de verificación no se generan para las columnas, ya que la
columna está asociada con un dominio con parámetros de verificación.
Cuando las comprobaciones de la columna divergen de las del dominio, se
generan las comprobaciones de la columna.
Están disponibles los siguientes ajustes:
• Sí: se generan parámetros de verificación
• No: las variables vinculadas a los parámetros de verificación no se
evalúan durante la generación y la reversión
Artículo Descripción

Personalización y ampliación de PowerDesigner 195


CAPÍTULO 4: Archivos de definición DBMS

HabilitarPredetermina Especifica si se generan valores predeterminados. Están disponibles los


do siguientes ajustes:
• Sí: se generan los valores predeterminados definidos para los
dominios. El valor predeterminado se puede definir en los parámetros
de verificación. La variable %DEFAULT% contiene el valor
predeterminado
• No: no se generan valores predeterminados
SqlListDefault Especifica una consulta SQL para recuperar y enumerar los valores
Consulta predeterminados del dominio en las tablas del sistema durante la ingeniería
inversa.
UddtComentario Especifica una declaración para agregar un comentario de tipo de datos
definido por el usuario.
Desatar Especifica la sintaxis para desvincular una regla comercial de un dominio.
Ejemplo (ASE 15):
[%R%?[exec]][ejecutar] sp_unbindrule %DOMAIN%

Tipo de datos abstractos


La categoría Tipo de datos abstractos se encuentra en la categoría Raíz > Script > Objetos y
puede contener los siguientes elementos que definen cómo se modelan los tipos de datos
abstractos para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para tipos
de datos abstractos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Atributos modificables
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
ADTComentario Especifica una instrucción para agregar un comentario de tipo de datos
abstracto.

196 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

PermitidoADT Especifica una lista de tipos de datos abstractos que se pueden utilizar
como tipos de datos para tipos de datos abstractos.
Ejemplo (Oracle 10g):
OBJETO
MESA
VARRAY

Artículo Descripción

Autorizaciones Especifica una lista de aquellos usuarios que pueden invocar tipos de datos
abstractos.
Crear cuerpo Especifica una instrucción para crear un cuerpo de tipo de datos abstracto.
Ejemplo (Oracle 10g):
crear [o reemplazar] tipo de cuerpo
[%QUALIFIER%]%ADT%
[.Oasis]]
%ADTBODY%
fin;
HabilitarAdtEn Especifica si los tipos de datos abstractos están habilitados para las
columna columnas. Están disponibles los siguientes ajustes:
• Sí: los tipos de datos abstractos se agregan a la lista de tipos de
columna siempre que tengan el tipo válido.
• No: los tipos de datos abstractos no están permitidos para las columnas.

HabilitarAdtOn Especifica si los tipos de datos abstractos están habilitados para los
Domn dominios. Están disponibles los siguientes ajustes:
• Sí: los tipos de datos abstractos se agregan a la lista de tipos de
dominio siempre que tengan el tipo válido
• No: los tipos de datos abstractos no están permitidos para los dominios

Habilitar herencia Habilita la herencia para tipos de datos abstractos.

Instalar Especifica una declaración para instalar una clase de Java como una clase
de datos abstractos (en ASA, los tipos de datos abstractos se instalan y
eliminan en lugar de crearlos y eliminarlos). Este elemento es equivalente a
una declaración de creación.
Ejemplo (SQL en cualquier lugar 10):
instale la ACTUALIZACIÓN DE JAVA desde el archivo
%.q:FILE%

Personalización y ampliación de PowerDesigner 197


CAPÍTULO 4: Archivos de definición DBMS

JavaData Especifica una lista de mecanismos de creación de instancias disponibles


para tipos de datos abstractos SQL Java.

Eliminar Especifica una declaración para instalar una clase Java como una clase de
datos abstractos.
Ejemplo (SQL en cualquier lugar 10):
eliminar la clase JAVA %ADT%
Atributo de tipo de datos abstractos
La categoría Atributo de tipos de datos abstractos se encuentra en la categoría Raíz > Script
> Objetos y puede contener los siguientes elementos que definen cómo se modelan los
atributos de tipos de datos abstractos para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes pueden definirse para
atributos de tipos de datos abstractos:
• Agregar
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar, Modificar
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.

PermitidoADT Especifica una lista de tipos de datos abstractos que se pueden utilizar
como tipos de datos para atributos de tipos de datos abstractos.
Ejemplo (Oracle 10g):
OBJETO
MESA
VARRAY
Si selecciona el tipo OBJETO para un tipo de datos abstracto, aparece una
pestaña Atributos en la hoja de propiedades del tipo de datos abstractos,
que le permite especificar los atributos del tipo de datos del objeto.

Usuario
La categoría Usuario se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los usuarios para su DBMS.
Artículo Descripción

198 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para los
usuarios:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Maxlen
• Atributos modificables
• Opciones, OpcionesDef
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Comentario de Especifica una declaración para agregar un comentario de usuario.
usuario
Regla
La categoría Regla se encuentra en la categoría Raíz > Script > Objetos y puede contener los
siguientes elementos que definen cómo se modelan las reglas para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
reglas:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.

Artículo Descripción

Personalización y ampliación de PowerDesigner 199


CAPÍTULO 4: Archivos de definición DBMS

ColnNombre Especifica el nombre de un valor predeterminado para una columna. Este


predeterminado elemento se usa con DBMS que no admiten parámetros de verificación en
columnas. Cuando una columna tiene un valor predeterminado específico
definido en sus parámetros de verificación, se crea un nombre para este
valor predeterminado.
La variable correspondiente es %DEFAULTNAME%.
Ejemplo (ASE 15):
D_%.19:COLUMNA%_%.8:TABLA%
La columna EMPFUNC de la tabla EMPLOYEE tiene un valor
predeterminado de
Ingeniero Técnico. Se crea el nombre
predeterminado de la columna
D_EMPFUNC_EMPLOYEE:
cree D_EMPFUNC_EMPLOYEE
predeterminado como 'Ingeniero
técnico' vaya
ejecutar sp_bindefault D_EMPFUNC_EMPLOYEE,
"EMPLOY-
EE.EMPFUNC"
ir
ColnRuleName Especifica el nombre de una regla para una columna. Este elemento se usa
con DBMS que no admiten parámetros de verificación en columnas.
Cuando una columna tiene una regla específica definida en sus parámetros
de verificación, se crea un nombre para esta regla.
La variable correspondiente es %RULE%.
Ejemplo (ASE 15):
R_%.19:COLUMNA%_%.8:TABLA%
La columna TEASPE de la tabla Equipo tiene una lista de valores (Industria,
Militar, Nuclear, Banco, Marketing) definidos en sus parámetros de
verificación:
El nombre de la regla R_TEASPE_TEAM se crea y se asocia con la
columna TEASPE:
crear regla R_TEASPE_TEAM
como @TEASPE en
('Industria','Militar','Nuclear','Banco','Market
ing')
ir
ejecutar sp_bindrule R_TEASPE_TEAM,
"TEAM.TEASPE" ir
MaxPredeterminadoL Especifica la longitud máxima que admite DBMS para el nombre de la
en columna Nombre predeterminado

ReglaComentario Especifica una instrucción para agregar un comentario de regla.

200 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

Nombre predeterminado Especifica el nombre de un valor predeterminado para un tipo de datos


de Uddt definido por el usuario. Este elemento se usa con DBMS que no
admiten parámetros de verificación en tipos de datos definidos por el
usuario. Cuando un tipo de datos definido por el usuario tiene un valor
predeterminado específico definido en sus parámetros de verificación,
se crea un nombre para este valor predeterminado.
La variable correspondiente es %DEFAULTNAME%.
Ejemplo (ASE 15):
D_%.28:DOMINIO%
El dominio FunctionList tiene un valor predeterminado definido en
sus parámetros de verificación: Ingeniero técnico. El siguiente script
SQL generará un nombre predeterminado para ese valor
predeterminado:
crear D_FunctionList
predeterminado como
'Ingeniero técnico' ir
UddtRuleNameUddtRule Especifica el nombre de una regla para un tipo de datos definido por el
Name usuario. Este elemento se usa con DBMS que no admiten parámetros
de verificación en tipos de datos definidos por el usuario. Cuando un
tipo de datos definido por el usuario tiene una regla específica definida
en sus parámetros de verificación, se crea un nombre para esta regla.
La variable correspondiente es %RULE%.
Ejemplo (ASE 15):
R_%.28:DOMINIO%
El dominio Domain_speciality tiene que pertenecer a un conjunto de
valores. Esta comprobación de dominio se ha definido en una regla de
validación. El script SQL generará el nombre de la regla siguiendo la
plantilla definida en el elemento UddtRuleName:
crear regla R_Domain_speciality
como (@Domain_speciality in
('Industria','Militar','Nuclear','Banco','Mark
eting'))
ir
ejecutar sp_bindrule R_Domain_speciality,
T_Domain_speciality
ir
Procedimiento
La categoría Procedimiento se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los procedimientos para su
DBMS.
Artículo Descripción

Personalización y ampliación de PowerDesigner 201


CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objeto común se pueden definir para los
procedimientos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario, Habilitar sinónimo
• Maxlen
• Atributos modificables
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
CreateFunc Especifica la instrucción para crear una función.
Ejemplo (SQL en cualquier lugar 10):
crear función [%QUALIFIER%]%FUNC%[%PROCPRMS%?
([%PROCPRMS%])] %TRGDEFN%

CustomFunc Especifica la sentencia para crear una función definida por el usuario, una
forma de procedimiento que devuelve un valor al entorno de llamada para
utilizarlo en consultas y otras sentencias de SQL.
Ejemplo (SQL en cualquier lugar 10):
crear función [%QUALIFIER%]%FUNC% (<arg> <tipo>)
DEVOLUCIONES <tipo>
empezar
terminar

CustomProc Especifica la instrucción para crear un procedimiento almacenado.


Ejemplo (SQL en cualquier lugar 10):
crear procedimiento [%QUALIFIER%]%PROC% (IN <arg>
<tipo>)
comienzo
fin

Artículo Descripción

202 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

DropFunc Especifica la instrucción para descartar una función.


Ejemplo (SQL en cualquier lugar 10):
si existe (seleccione 1 de sys.sysprocedure donde
proc_name = %.q:FUNC%[ y user_name(creador) =
%.q:PROPIETARIO%]) luego
drop function [%QUALIFIER%]%FUNC% end
if

EnableFunc Especifica si las funciones están permitidas. Las funciones son formas de
procedimiento que devuelven un valor al entorno de llamada para su uso en
consultas y otras declaraciones SQL.

Función Comentario Especifica una declaración para agregar un comentario de función.

Tipo de Especifica una lista de tipos de plantillas de procedimientos disponibles.


implementación
MaxFuncLen Especifica la longitud máxima del nombre de una función.

Procedimiento Especifica una declaración para agregar un comentario de procedimiento.


Comentario
Desencadenar
La categoría Activador se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los activadores para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
disparadores:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Desencadenador Especifica una plantilla para definir nombres de disparadores
predeterminado predeterminados.
Nombre
Ejemplo (SQL en cualquier lugar 10):
%PLANTILLA%_%.L:TABLA%

Personalización y ampliación de PowerDesigner 203


CAPÍTULO 4: Archivos de definición DBMS

Habilitar disparador Habilita el uso de múltiples disparadores por tipo.


múltiple

Artículo Descripción

Evento Especifica una lista de atributos de eventos de activación para completar la


lista de eventos en la pestaña Definición de las hojas de propiedades de
activación.
Ejemplo:
Borrar
Insertar
Actualizar
EventDelimiter Especifica un carácter para separar varios eventos desencadenantes.

Tipo de Especifica una lista de tipos de plantillas de disparadores disponibles.


implementación
Tiempo Especifica una lista de atributos de tiempo de activación para completar la
lista de tiempo en la pestaña Definición de las hojas de propiedades de
activación.
Ejemplo:
Antes
Después
Comentario de Especifica una instrucción para agregar un comentario desencadenante.
activación
UniqNombre Especifica si los nombres de desencadenantes deben ser únicos dentro del
ámbito global de la base de datos. Están disponibles los siguientes ajustes:
• Sí: los nombres de los disparadores deben ser únicos dentro del ámbito
global de la base de datos.
• No: los nombres de los disparadores deben ser únicos por objeto

Artículo Descripción

204 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Usar tabla de Especifica una macro para acceder a mensajes de error desencadenantes
mensajes de error desde una tabla de mensajes en su base de datos.
Habilita el uso del botón de opción Definido por el usuario en la pestaña
Mensajes de error del cuadro de diálogo Trigger Rebuild (consulteModelado
de datos > Creación de modelos de datos > Desencadenadores y
procedimientos > Generación de desencadenadores y procedimientos >
Creación de mensajes de error definidos por el usuario ).
Si un número de error en el script de activación corresponde a un número de
error en la tabla de mensajes, el mensaje de error predeterminado de la macro
.ERROR se reemplaza por su mensaje.
Ejemplo (ASE 15):
comenzar
seleccione @errno =
%ERRNO%, @errmsg =
%MSGTXT% de %MSGTAB%
donde %MSGNO% = %ERRNO% ir a
error
fin
Dónde:
• %ERRNO% - parámetro de número de error para la macro
.ERROR
• %ERRMSG% - parámetro de texto de mensaje de error para la
macro .ERROR
• %MSGTAB% - nombre de la tabla de mensajes
• %MSGNO% - nombre de la columna que almacena el número del
mensaje de error
• %MSGTXT%: nombre de la columna que almacena el texto del
mensaje de error Consulte también UseErrorMsgText.
Usar texto de Especifica una macro para acceder a los mensajes de error del disparador
mensaje de error desde la definición de la plantilla del disparador.
Habilita el uso del botón de opción Estándar en la pestaña Mensajes de error
del cuadro de diálogo Trigger Rebuild.
Se utilizan el número de error y el mensaje definidos en la definición de la
plantilla.
Ejemplo (ASE 15):
comenzar
seleccione @errno =
%ERRNO%, @errmsg =
%MSGTXT% ir al error
fin
Consulte también UseErrorMsgTable.

Hora de Especifica una lista de horas disponibles para desencadenar en vista.


visualización

Personalización y ampliación de PowerDesigner 205


CAPÍTULO 4: Archivos de definición DBMS

Desencadenador DBMS
La categoría Desencadenador de DBMS se encuentra en la categoría Raíz > Script > Objetos
y puede contener los siguientes elementos que definen cómo se modelan los
desencadenadores de DBMS para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
disparadores de DBMS:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Modificar, AlterStatementList, AlterDBIgnorado
• Habilitar, Habilitar propietario
• Encabezado, pie de página
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
EventDelimiter Especifica un carácter para separar varios eventos desencadenantes.

Eventos_alcance Especifica una lista de atributos de eventos desencadenantes para completar


la lista de eventos en la pestaña Definición de las hojas de propiedades del
desencadenador para el evento seleccionado.alcance, por ejemplo, esquema,
base de datos, servidor.
Alcance Especifica una lista de ámbitos disponibles para el disparador DBMS. Cada
alcance debe tener un Evento asociado_alcanceartículo.

Tiempo Especifica una lista de atributos de tiempo de activación para completar la


lista de tiempo en la pestaña Definición de las hojas de propiedades de
activación.
Ejemplo:
Antes
Después
Comentario de Especifica una instrucción para agregar un comentario desencadenante.
activación
Unirse al índice
La categoría Índice de unión se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los índices de unión para su
DBMS.

206 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
índices de combinación:
• Agregar
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario
• Encabezado, pie de página
• Maxlen
• Atributos modificables
• Opciones, OpcionesDef
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlOptsQuery

Para obtener una descripción de cada uno de estos elementos comunes,


consulteElementos de objetos comunesen la página 144.
AgregarUnirse Especifica la instrucción SQL utilizada para definir uniones para índices de
unión.
Ejemplo:
Tabla1.columna1 = Tabla2.columna2

HabilitarJidxColn Habilita la compatibilidad para adjuntar varias columnas a un índice de


unión. En Oracle 9i, esto se denomina índice de unión de mapa de bits.

UnirseIndex Especifica una declaración para agregar un comentario de índice de


Comentario combinación.
Calificatorio
La categoría Calificador se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los calificadores para su
DBMS.
Artículo Descripción

[Artículos comunes] Se pueden definir los siguientes elementos de objeto común para los
calificadores:
• Permitir
• Consultas invertidas
• SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.

Personalización y ampliación de PowerDesigner 207


CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

Etiqueta Especifica una etiqueta para <todos> en la lista de selección de


calificadores.
Secuencia
La categoría Secuencia se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan las secuencias para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
secuencias:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario, Habilitar sinónimo
• Maxlen
• Atributos modificables
• Opciones, OpcionesDef
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlPermQuery

Para obtener una descripción de cada uno de estos elementos comunes,


consulteElementos de objetos comunesen la página 144.
Rebautizar Especifica el comando para cambiar el nombre de una secuencia.
Ejemplo (Oracle 10g):
cambiar el nombre de %OLDNAME% a %NEWNAME%

Comentario de Especifica una declaración para agregar un comentario de secuencia.


secuencia
Sinónimo
La categoría Sinónimo se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los sinónimos para su DBMS.
Artículo Descripción

208 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir como
sinónimos:
• Crear, Soltar
• Habilitar, HabilitarSinónimo
• Maxlen
• Consultas invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Habilitar alias Especifica si los sinónimos pueden tener un tipo de alias.

Grupo
La categoría Grupo se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los grupos para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
grupos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Unir Especifica un comando para agregar un usuario a un grupo.
Ejemplo (SQL en cualquier lugar 10):
otorgar membresía en el grupo %GROUP% a %USER%

Comentario de Especifica una declaración para agregar un comentario de grupo.


grupo
PropietarioObjeto Permite que los grupos sean propietarios de objetos.

Artículo Descripción

Personalización y ampliación de PowerDesigner 209


CAPÍTULO 4: Archivos de definición DBMS

Consulta Especifica una consulta SQL para enumerar los miembros de un grupo.
SqlListChildren
Ejemplo (ASE 15):
{ID DE GRUPO, MIEMBRO}
seleccione g.name,
u.name de
[%CATALOG%.]dbo.sysusers u,
[%CATALOG%.]dbo.sysusers g donde
u.suid > 0 y
u.gid = g.gid y
g.gid = g.uid
ordenar por 1, 2

Desatar Especifica un comando para eliminar un usuario de un grupo.


Ejemplo (SQL en cualquier lugar 10):
revocar la pertenencia al grupo %GROUP% de %USER%

Role
La categoría Rol se encuentra en la categoría Raíz > Script > Objetos y puede contener los
siguientes elementos que definen cómo se modelan los roles para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para roles:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlPermQuery

Para obtener una descripción de cada uno de estos elementos comunes,


consulteElementos de objetos comunesen la página 144.

Unir Especifica un comando para agregar un rol a un usuario oa otro rol.


Ejemplo (ASE 15):
conceder rol %ROLE% a %USER%

Artículo Descripción

210 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Consulta Especifica una consulta SQL para enumerar los miembros de un grupo.
SqlListChildren
Ejemplo (ASE 15):
{ IDENTIFICADOR DE FUNCIÓN, MIEMBRO }
SELECCIONE r.nombre,
u.nombre DE
master.dbo.sysloginroles l,
[%CATALOG%.]dbo.sysroles s,
[%CATALOG%.]dbo.sysusers u,
[%CATALOG%.]dbo.sysusers r donde
l.suid = u.suid y
s.id =l.srid y
r.uid = s.lrid

Desatar Especifica un comando para eliminar un rol de un usuario u otro rol.

Paquete de base de datos


La categoría Paquete de base de datos se encuentra en la categoría Raíz > Script > Objetos y
puede contener los siguientes elementos que definen cómo se modelan los paquetes de base
de datos para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
paquetes de base de datos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, HabilitarSinónimo
• Maxlen
• Atributos modificables
• Permiso
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery, SqlPermQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Autorizaciones Especifica una lista de aquellos usuarios que pueden invocar paquetes de
bases de datos.
Artículo Descripción

Personalización y ampliación de PowerDesigner 211


CAPÍTULO 4: Archivos de definición DBMS

Crear cuerpo Especifica una plantilla para definir el cuerpo del paquete de la base de
datos. Esta declaración se usa en la declaración de extensión AfterCreate.
Ejemplo (Oracle 10g):
crear [o reemplazar] el cuerpo del paquete
[%QUALIFIER%] %DBPACKAGE% [.O:[as][is]][%IsPragma%
? pragma serially_reusable] %DBPACKAGEBODY%
[comenzar
%DBPACKAGEINIT%
]fin[ %DBPACKAGE%];

Subobjetos del paquete DB


Las siguientes categorías se encuentran en la categoría Raíz > Script > Objetos:
• Procedimiento del paquete de base de datos
• Variable del paquete de base de datos
• Tipo de paquete de base de datos
• Cursor del paquete de base de datos
• Excepción de paquete de base de datos
• Pragma del paquete de base de datos
Cada uno contiene muchos de los siguientes elementos que definen cómo se modelan los
paquetes de base de datos para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
paquetes de base de datos:
• Agregar
• Consultas invertidas
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Cuerpo del [Solo procedimientos de paquete de base de datos] Especifica una plantilla
procedimiento DB para definir el cuerpo del procedimiento de paquete en la pestaña Definición
de su hoja de propiedades.
Ejemplo (Oracle 10g):
empezar
terminar

Artículo Descripción

212 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Tipos de parámetros [solo procedimientos y cursores del paquete de base de datos] Especifica los
tipos disponibles para procedimientos o cursores.
Ejemplo (Oracle 10g: procedimiento):
adentro en
nocopia
adentro
afuera
adentro
afuera
nocopia
fuera
fuera
nocopia
Parámetro
La categoría Parámetro se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los parámetros para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
paquetes de base de datos:
• Agregar
• Consultas invertidas
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Privilegio
La categoría Privilegio se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los privilegios para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
privilegios:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Artículo Descripción

Personalización y ampliación de PowerDesigner 213


CAPÍTULO 4: Archivos de definición DBMS

GrantOption Especifica la opción de concesión para una declaración de privilegios.


Ejemplo (Oracle 10g):
con opción de administrador

RevocarHeredado Le permite revocar privilegios heredados de grupos y roles.

RevocarOpción Especifica la opción de revocación para una declaración de privilegios.

Sistema Especifica una lista de privilegios de sistema disponibles.


Ejemplo (ASE 15):
CREAR BASE DE DATOS
CREAR POR DEFECTO
CREAR PROCEDIMIENTO
CREAR DISPARADOR
CREAR REGLA
CREAR MESA
CREAR VISTA

Permiso
La categoría Permiso se encuentra en la categoría Raíz > Script > Objetos y puede contener
los siguientes elementos que definen cómo se modelan los permisos para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para los
permisos:
• Crear, Soltar
• Permitir
• Consultas invertidas
• SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
GrantOption Especifica la opción de concesión para una declaración de permisos.
Ejemplo (ASE 15):
con opción de subvención

RevocarHeredado Le permite revocar permisos heredados de grupos y roles.

RevocarOpción Especifica la opción de revocación para una declaración de permisos.


Ejemplo (ASE 15):
cascada

214 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Por defecto
La categoría Predeterminado se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los valores predeterminados
para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir por
defecto:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Unir Especifica el comando para vincular un objeto predeterminado a un
dominio o una columna.
Cuando un dominio o una columna utilizan un objeto predeterminado,
unenlazar por defectoLa declaración se genera después de la declaración
de creación de dominio o tabla. En el siguiente ejemplo, la columna
Dirección en la tabla Cliente usa el objeto predeterminado CITYDFLT:
crear tabla CLIENTE (DIRECCIÓN
char(10) nulo
)
sp_bindefault CIUDADDFLT,
'CLIENTE.DIRECCIÓN'
Si el dominio o la columna utilizan un valor predeterminado ingresado
directamente en la lista Predeterminado, el valor predeterminado se declara
en la línea de creación de la columna:
DIRECCIÓN char(10) predeterminado 'StdAddr' nulo
PúblicoPropietario Permite a PUBLIC poseer sinónimos públicos.

Desatar Especifica el comando para desvincular un objeto predeterminado de un


dominio o una columna.
Ejemplo (ASE 15):
[%R%?[ejec]][ejecutar]sp_unbindefault
%.q:BOUND_OBJECT%

Personalización y ampliación de PowerDesigner 215


CAPÍTULO 4: Archivos de definición DBMS

Servicio web y operación web


Las categorías Servicio web y Operación web se encuentran en la categoría Raíz > Script >
Objetos y pueden contener los siguientes elementos que definen cómo se modelan los
servicios web y las operaciones web para su DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
servicios web y operaciones web:
• AfterCreate, AfterDrop, AfterModify
• Alterar
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Habilitar, Habilitar propietario
• Encabezado, pie de página
• MaxConstLen (solo operaciones web)
• Maxlen
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery

Para obtener una descripción de cada uno de estos elementos


comunes, consulteElementos de objetos comunesen la página 144.

Habilitar espacio de Especifica si se admiten espacios de nombres.


nombres
Habilitar seguridad Especifica si se admiten las opciones de seguridad.

Lista de tipos de [solo operación web] Especifica una lista de tipos de operaciones de
operaciones servicios web.
Ejemplo (DB2 UDB 8.x CS):
consul
ta
actual
izació
n
storeX
ML
recupe
rarXML
llamad
a

216 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

ServiceTypeListServiceTyp [solo servicio web] Especifica una lista de tipos de servicios web.
eList
Ejemplo (SQL en cualquier lugar 10):
CRUDO
HTML
XML
PLATO

UniqNombre Especifica si los nombres de las operaciones del servicio web deben
ser únicos en la base de datos.

Artículo Descripción

Comentario de servicio Especifica la sintaxis para agregar un comentario al servicio web oa


web/ Comentario de la operación del servicio web.
operación web

Parámetro web
La categoría Parámetro web se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los parámetros web para su
DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
parámetros web:
• Agregar
• Permitir
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
HabilitarPredeterminado Permite valores predeterminados para los parámetros del servicio web.

Lista de Parámetros Especifica una lista de tipos de datos que se pueden usar como
Dttp parámetros de servicios web.
Columna de resultados
La categoría Columna de resultados se encuentra en la categoría Raíz > Script > Objetos y
puede contener los siguientes elementos que definen cómo se modelan los servicios web y
las operaciones web para su DBMS.
Artículo Descripción

ResultColumn Especifica una lista de tipos de datos que se pueden usar para las columnas
DttpList de resultados.

Personalización y ampliación de PowerDesigner 217


CAPÍTULO 4: Archivos de definición DBMS

Dimensión
La categoría Dimensión se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan las dimensiones para su
DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para las
dimensiones:
• AfterCreate, AfterDrop, AfterModify
• Alterar
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• Permitir
• Encabezado, pie de página
• Maxlen
• Consultas invertidas
• SqlAttrQuery, SqlListQuery

Para obtener una descripción de cada uno de estos elementos comunes,


consulteElementos de objetos comunesen la página 144.
Agregar jerarquía Especifica la sintaxis para definir una lista de atributos de jerarquía.
Attr
Ejemplo (Oracle 10g):
hijo de %DIMNATTRHIER%

Agregar atributo Especifica la sintaxis para definir un atributo.


Ejemplo (Oracle 10g):
el atributo %DIMNATTR% determina
[.O:[(%DIMNDEPCOLNLIST%)][%DIMNDEPCOLN%]]

Agregar jerarquía Especifica la sintaxis para definir una jerarquía de dimensiones.


Ejemplo (Oracle 10g):
jerarquía %DIMNHIER% (
%DIMNATTRHIERFIRST% %DIMNATTRHIERLIST%)

Jerarquía AddJoin Especifica la sintaxis para definir una lista de uniones para atributos de
jerarquía.
Ejemplo (Oracle 10g):
clave de combinación [.O:[(%DIMNKEYLIST%)][%DIMNKEYLIST%]]
hace referencia a %DIMNPARENTLEVEL%

218 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Artículo Descripción

Agregar nivel Especifica la sintaxis para el nivel de dimensión (atributo).


Ejemplo (Oracle 10g):
el nivel %DIMNATTR% es
[.O:[(%DIMNCOLNLIST%)][%DIMNTABL%.
%DIMNCOLN%]]
Objeto extendido
La categoría Objeto extendido se encuentra en la categoría Raíz > Script > Objetos y puede
contener los siguientes elementos que definen cómo se modelan los objetos extendidos para su
DBMS.
Artículo Descripción

[Artículos comunes] Los siguientes elementos de objetos comunes se pueden definir para
objetos extendidos:
• AfterCreate, AfterDrop, AfterModify
• BeforeCreate, BeforeDrop, BeforeModify
• Crear, Soltar
• EnableSynonym
• Encabezado, pie de página
• Atributos modificables
• Consultas invertidas, declaraciones invertidas
• SqlAttrQuery, SqlListQuery
Para obtener una descripción de cada uno de estos elementos comunes,
consulteElementos de objetos comunesen la página 144.
Lista de Especifica una lista de elementos de texto que representan declaraciones
declaraciones que modifican los atributos correspondientes
alteradas
Comentario Especifica la sintaxis para agregar un comentario a un objeto extendido.

Categoría de tipo de secuencia de comandos/datos


(DBMS)

La categoría Tipo de datos proporciona asignaciones para permitir que PowerDesigner


maneje tipos de datos específicos de DBMS correctamente.
Las siguientes variables se utilizan en muchas de las entradas:
• %n - Longitud del tipo de datos
• %s - Tamaño del tipo de datos

Personalización y ampliación de PowerDesigner 219


CAPÍTULO 4: Archivos de definición DBMS

• %p - Precisión del tipo de datos

Artículo Descripción

AmcdAmcdType Enumera asignaciones para convertir tipos de datos especializados (como XML,
IVL, MEDIA, etc.) a tipos de datos estándar de PowerDesigner. Estas
asignaciones se utilizan para ayudar a la conversión de un DBMS a otro, cuando
el nuevo DBMS no admite uno o más de estos tipos especializados. Por ejemplo,
si no se admite el tipo de datos XML, se utiliza TXT.

AmcdDataType Enumera las asignaciones para convertir de tipos de datos PowerDesigner


(internos) a tipos de datos DBMS (modelo físico).
Estas asignaciones se utilizan durante la generación de CDM a PDM y con el
comando Cambiar DBMS actual.
Ejemplos (ASE 15):

• El tipo de datos PowerDesigner A%n se convierte en char(%n) para ASE 15.


• El tipo de datos PowerDesigner VA%n se convierte en varchar(%n) para
ASE 15.

PhysDataType Enumera las asignaciones para convertir tipos de datos de DBMS (modelo
físico) a tipos de datos de PowerDesigner (internos).
Estas asignaciones se utilizan durante la generación de PDM a CDM y con el
comando Cambiar DBMS actual.
Ejemplos (ASE 15):

• El tipo de datos ASE 15 sysname se convierte a un VA30 para


PowerDesigner.
• El tipo de datos entero ASE 15 se convierte en una I para PowerDesigner.
PhysDttpSize Muestra los tamaños de almacenamiento de los tipos de datos DBMS. Estos
valores se utilizan al estimar el tamaño de una base de datos.
Ejemplos (ASE 15):

• El smallmoney ASE 15 requiere 8 bytes de espacio.


• Smalldatetime de ASE 15 requiere 4 bytes de espacio.

220 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

OdbcPhysTipo Enumera las asignaciones para convertir tipos de datos de base de datos en
de datos vivo (ODBC) a tipos de datos DBMS (modelo físico) durante la ingeniería
inversa de la base de datos.
Estas asignaciones se utilizan cuando los tipos de datos se almacenan de
manera diferente en la base de datos (a menudo debido a la inclusión de un
tamaño predeterminado) que en la notación DBMS.
Ejemplos (ASE 15):

• Un float(8) en una base de datos ASE 15 se invierte como un float.


• Un decimal (30,6) en una base de datos ASE 15 se invierte como un
decimal.

Artículo Descripción

PhysOdbcTipo Enumera las asignaciones de tipos de datos de DBMS (modelo físico) a tipos de
de datos datos de base de datos (ODBC) para su uso al actualizar y aplicar ingeniería
inversa a una base de datos.
Estas asignaciones se utilizan cuando los tipos de datos que son funcionalmente
equivalentes pero diferentes a los especificados en el PDM se encuentran en una
base de datos existente para evitar la visualización de diferencias innecesarias e
irrelevantes en el cuadro de diálogo Fusionar.
Ejemplos (ASE 15):

• Un unichar se trata como equivalente a un unichar(1) en una base de datos


ASE 15.
• Un float(1) se trata como equivalente a un float(4) en una base de datos
ASE 15.
Tipo Enumera las asignaciones para convertir tipos de datos abstractos de DBMS
PhysLogADT (modelo físico) a tipos de datos abstractos de PowerDesigner (interno).
Estas asignaciones se utilizan para completar el campo Tipo y mostrar las
propiedades apropiadas en hojas de propiedades de tipos de datos abstractos y
con el campo Cambiar actual.
SGBDdominio.
Ejemplos (Oracle 11g):

• El tipo de datos abstracto Oracle 11g VARRAY se convierte en un Array


para PowerDesigner.
• El tipo de datos SQLJ_OBJECT de Oracle 11g se convierte en un
JavaObject para PowerDesigner.

Personalización y ampliación de PowerDesigner 221


CAPÍTULO 4: Archivos de definición DBMS

Tipo Enumera las asignaciones para convertir de tipos de datos abstractos


LogPhysADT PowerDesigner (internos) a tipos de datos abstractos DBMS (modelo físico).
Estas asignaciones se utilizan con el comando Cambiar DBMS actual.
Ejemplos (Oracle 11g):

• El tipo de datos abstracto de lista de PowerDesigner se convierte en una


TABLA para Oracle 11g.
• El tipo de datos abstracto del objeto PowerDesigner se convierte en un
OBJETO para Oracle 11g.

PermitidoADT Enumera los tipos de datos abstractos que se pueden usar como tipos para
columnas y dominios en el DBMS. Ejemplo (ASE 15):
• JAVA

Artículo Descripción

HostDataType Enumera las asignaciones para convertir tipos de datos DBMS (Modelo físico)
a tipos de datos permitidos como parámetros de procedimiento
(Desencadenador).
Estas asignaciones se utilizan para completar el campo Tipo de datos en las
hojas de propiedades de parámetros del procedimiento ADT. Ejemplos
(Oracle 11g):

• El tipo de datos Oracle 11g DEC se convierte en un número.


• El tipo de datos Oracle 11g SMALLINT se convierte en un entero.

Categoría de perfil (DBMS)

La categoría Perfil se utiliza para ampliar los objetos estándar de PowerDesigner. Puede
refinar la definición, el comportamiento y la visualización de objetos existentes creando
atributos extendidos, estereotipos, criterios, formas, símbolos, archivos generados, etc. y
agregar nuevos objetos creando y estereotipando objetos y subobjetos extendidos.
Puede agregar extensiones en:
• su archivo de definición DBMS: debe guardar una copia de seguridad de este archivo
antes de editarlo.
• un archivo de extensión separado, que se adjunta a su modelo.
Para obtener información detallada sobre cómo trabajar con perfiles, incluida la adición de
atributos y objetos extendidos, consulte el Capítulo 2, Archivos de extensión en la página 11.

222 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Uso de atributos extendidos durante la generación


Los atributos extendidos se pueden tener en cuenta durante la generación. Cada valor de
atributo extendido se puede usar como una variable a la que se puede hacer referencia en los
scripts definidos en la categoría Script.
Algunos DBMS incluyen atributos extendidos predefinidos. Por ejemplo, en PostgreSQL,
los dominios incluyen atributos extendidos predeterminados que se usan para la creación de
tipos de datos definidos por el usuario.

Puede crear tantos atributos extendidos como necesite, para cada objeto compatible con
DBMS.

Nota:Los nombres de las variables de PowerDesigner distinguen entre mayúsculas y


minúsculas. El nombre de la variable debe coincidir exactamente con el nombre del atributo
ampliado.

Ejemplo
Por ejemplo, en DB2 UDB 7 OS/390, el atributo extendido WhereNotNull le permite agregar
una cláusula que impone la exclusividad de los nombres de índice si no son nulos.
En el orden de creación del índice, WhereNotNull se evalúa de la siguiente manera:
cree [%INDEXTYPE% ][%UNIQUE% [%WhereNotNull%?where not null]]index
[%QUALIFIER%]%INDEX% en [%TABLQUALIFIER%]%TABLE% (

Personalización y ampliación de PowerDesigner 223


CAPÍTULO 4: Archivos de definición DBMS
%CIDXLIST%
)
[%OPCIONES%]

Si el nombre del índice es único y establece el tipo del atributo extendido WhereNotNull en
True, la cláusula "where not null" se inserta en la secuencia de comandos.
En el elemento SqlListQuery:
{PROPIETARIO, TABLA, ÍNDICE, INDEXTYPE, ÚNICO, INDEXKEY, CLUSTER,
donde no es nulo}

seleccione
tbcreator, tbname,
nombre,
case indextype when '2' then 'type 2' else 'type 1' end,
case uniquerule when 'D' then '' else 'unique' end,
caso regla única cuando 'P' entonces 'primario' cuando 'U' entonces
'único' más
'' fin,
agrupamiento de casos cuando 'Y' luego 'cluster' else ''
finaliza, caso de regla única cuando 'N' luego
'VERDADERO' más 'FALSO' finaliza desde
sysibm.sysindexes donde
1=1
[ y tbname=%.q:TABLA%]
[ y tbcreator=%.q:PROPIETARIO%]
[ y dbname=%.q:CATALOGO%]
ordenar
por 1 ,2
,3
Modificación del mecanismo de estimación del tamaño de la base de
datos
De forma predeterminada, el mecanismo Estimar el tamaño de la base de datos utiliza
algoritmos estándar para calcular los tamaños de espacios de tabla, tablas, columnas e índices
y los suma para proporcionar una indicación del tamaño que requerirá la base de datos. Puede
anular el algoritmo para uno o más de estos tipos de objetos o incluir objetos adicionales en
el cálculo agregando el controlador de eventos GetEstimatedSize al objeto apropiado en la
categoría Perfil e ingresando un script para calcular su tamaño.

1. Seleccione Base de datos > Editar DBMS actual para abrir el archivo de definición de
DBMS y expanda la categoría de perfil.
2. Haga clic con el botón derecho en la metaclase para la que desea proporcionar una
secuencia de comandos para calcular el tamaño del objeto, seleccione Nuevo >
Controlador de eventos para abrir un cuadro de diálogo de selección, seleccione el
controlador de eventos GetEstimatedSize y, a continuación, haga
clic en Aceptar para agregarlo en la metaclase.

224 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

3. Haga clic en la pestaña Secuencia de comandos del controlador de eventos en el panel


derecho e ingrese el código apropiado para calcular el tamaño del objeto elegido.

En el siguiente ejemplo, observamos extractos de un controlador de eventos


GetEstimatedSize definido en la metaclase Table para estimar el tamaño de la base de
datos calculando el tamaño de cada tabla como el tamaño total de todas sus columnas
más el tamaño total de todos sus índices.

Nota:Para ver ejemplos del controlador de eventos GetEstimatedSize en uso en Table y


otras metaclases, consulte los archivos de definición de DBMS de Sybase IQ v15.2 y
HP Neoview R2.4.
En este primer extracto del script, se abre la función GetEstimatedSize y el tamaño de
cada tabla se obtiene recorriendo el tamaño de cada una de sus columnas. El trabajo real
de calcular el tamaño de la columna se realiza mediante la línea:
ColSize = C.GetEstimatedSize(mensaje, falso)

, que llama al controlador de eventos GetEstimatedSize en la metaclase Column (consulte


Llamar al controlador de eventos GetEstimatedSize en otra metaclase en la página 205):

Personalización y ampliación de PowerDesigner 225


CAPÍTULO 4: Archivos de definición DBMS
Función %GetEstimatedSize%(obj, mensaje ByRef)

' Primero calcule la variable de configuración de la base de


datos global que necesitaremos.

' Obtener el tamaño de la tabla y mantener el tamaño de la


columna para uso futuro
Dim ColSizes, TblSize, ColSize, C
Establecer ColSizes = CreateObject("Scripting.Dictionary")

TblSize = 0 ' Puede cambiarse para tener en cuenta el


tamaño inicial de la definición de la tabla. para cada C
en obj.Columns

' Comience a explorar las columnas de la tabla y use el controlador


de eventos definido en la metaclase de la columna (si existe).
ColSize = C.GetEstimatedSize(mensaje, falso)
' Almacenar el tamaño de columna en el mapa para uso futuro en
índices.
ColSizes.Añadir C, ColSize

'Aumenta el tamaño global de la tabla.


TblSize = TblSize + ColSize siguiente
Dim RawDataSize
RawDataSize = BlockSize * int(obj.Number * TblSize / BlockSize) '
En este punto, RawDataSize es el tamaño de la tabla en la base de
datos.
A continuación, el tamaño de los índices de la tabla se calcula directamente en el script
sin realizar una llamada a un controlador de eventos en la metaclase de índice, se
formatea la línea que genera los tamaños de índice y se agrega el tamaño de los índices
al tamaño total de la base de datos:

226 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

' Ahora calcule los tamaños de índice. Configure variables


para almacenar tamaños de índices.
Dim X, XMsg, XDataSize XMsg
= ""
para cada X en obj.Indexes
XDataSize = 0
' Examinar columnas de índice y obtener su tamaño agregado en
XDataSize
Para cada C en X.IndexColumns
XDataSize = XDataSize + ColSizes.Item(C.Column) siguiente
XDataSize = BlockSize * int(obj.Number * XDataSize / BlockSize)

' Formatee el mensaje de visualización para obtener


información de tamaño en la salida y la lista de resultados.
XMsg = XMsg & CStr(XDataSize) & "|" & X.ObjectID & vbCrLf

' Agrega el tamaño del índice al tamaño de la


tabla. RawDataSize = RawDataSize + XDataSize
siguiente

Finalmente, la información de tamaño se formatea para la salida (consulte Formateo de


la salida de la estimación del tamaño de la base de datos en la página 205). Cada tabla se
imprime en una línea separada en las ventanas Salida y Lista de resultados, y se
proporciona su tamaño total, incluidas todas las columnas e índices:
'establece el mensaje global al tamaño de la tabla y todos los
índices
(separado con retorno de carro). mensaje = CStr(RawDataSize) &
"||" & obj.Descripción breve & vbCrLf & XMsg

%GetEstimatedSize% = RawDataSize

función final

Una vez procesadas todas las tablas, PowerDesigner calcula e imprime el tamaño total
estimado de la base de datos.
Llamar al controlador de eventos GetEstimatedSize en otra metaclase
Puede llamar a un controlador de eventos GetEstimatedSize definido en otra metaclase para
usar este tamaño en su cálculo. Por ejemplo, puede definir GetEstimatedSize en la metaclase
Table y realizar una llamada a GetEstimatedSize definida en las metaclases Column e Index
para usar estos tamaños para calcular el tamaño total de la tabla.
La sintaxis de la función es la siguiente, donde mensaje es el nombre de su variable que
contiene los resultados para imprimir:
ObtenerTamañoEstimado(mensaje[,verdadero|falso])

En general, le recomendamos que utilice la función de la siguiente forma:


ObtenerTamañoEstimado(mensaje, falso)

Personalización y ampliación de PowerDesigner 227


CAPÍTULO 4: Archivos de definición DBMS

El uso del parámetro falso (que es el predeterminado, pero que se muestra aquí para mayor
claridad) significa que llamamos al controlador de eventos GetEstimatedSize en la otra
metaclase y usamos el mecanismo predeterminado solo si el controlador de eventos no está
disponible.
Establecer el parámetro en verdadero forzará el uso del mecanismo predeterminado para
calcular el tamaño de los objetos (solo es posible para tablas, columnas e índices de
combinación):
GetEstimatedSize(mensaje, verdadero)

Dar formato a la salida de la estimación del tamaño de la base de datos


Puede formatear la salida para la estimación del tamaño de su base de datos. Los subobjetos
(como columnas e índices) contenidos en una tabla se compensan y puede imprimir
información adicional después del total.
La sintaxis para la salida es la siguiente:
[tamaño-objeto][:compartimento]|[IDObjeto][|etiqueta]

dónde:
• object-size - es el tamaño del objeto.
• compartimento: es un número de un dígito que indica que el tamaño del objeto debe
excluirse del tamaño total de la base de datos y debe imprimirse después de calcular
el tamaño de la base de datos. Por ejemplo, puede incluir el tamaño de las tablas
individuales en su cálculo del tamaño de la base de datos e imprimir los tamaños de
los espacios de tabla por separado después del cálculo.
• ObjectID: no es necesario para objetos, como tablas, pero
es necesario para subobjetos si desea imprimirlos en la
Lista de resultados.
• etiqueta: es cualquier cadena de identificación adecuada y, por lo general, se
establece en
ShortDescription, que imprime el tipo y el nombre del objeto
seleccionado.

Por ejemplo, en el controlador de eventos definido en la metaclase Table (habiendo calculado


y almacenado el tamaño de una tabla, el tamaño de todas las columnas de tipo LONG
contenidas en la tabla y el tamaño de cada índice en la tabla), creamos una variable de
mensaje para imprimir esta información. Comenzamos imprimiendo una línea que da el
tamaño de una tabla:
mensaje = CStr(TamañoTabla) & "||" & objTable.ShortDescription &
vbCrLf

Luego agregamos una línea que imprime el tamaño total de todas las columnas de tipo
LARGO en la tabla:
mensaje = mensaje & CStr(TamañoLargo) & "||Columnas de tipo LARGO"
& vbCrLf

228 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Luego agregamos una línea que imprime el tamaño de cada índice en la tabla:
mensaje = mensaje & CStr(IndexSize) & "|" & objIndex.ObjectID &
vbCrLf

En el controlador de eventos definido en la metaclase Tablespace (habiendo calculado y


almacenado el tamaño de un tablespace), creamos una variable de mensaje para imprimir
esta información después de que se haya impreso el cálculo del tamaño de la base de datos.
Comenzamos anulando la introducción predeterminada de este segundo compartimento:
mensaje = ":1||Las tablas se asignan a los siguientes espacios de
tablas:"

Luego agregamos una línea que imprime el tamaño de cada tablespace en la tabla
mensaje = mensaje + CStr(tablespaceSize) & ":1||" &
objTablespace.ShortDescription

El resultado da la siguiente salida:


Estimación del tamaño de la Base de Datos "Ventas"...

Número Tamaño estimado Objeto


------- -------------- ----------------------------- -------

10.000 6096 KB Tabla 'Facturas'


Columnas de tipo LONG (35 KB)
Índice 'customerFKeyIndex' (976 KB)
Índice 'índice de descripción' (1976 KB)

[...etc...]

Las tablas se asignan a los siguientes tablespaces:

Tamaño estimado Objeto


-------------- ------------------------------------
6096 KB Tablespace 'mainStorage'

[...etc...]

Categoría ODBC (DBMS)

La categoría ODBC contiene elementos para la generación de bases de datos en vivo cuando
el DBMS no admite las declaraciones de generación definidas en la categoría Script.
Por ejemplo, el intercambio de datos entre PowerDesigner y MSACCESS funciona con
scripts de VB y no con SQL, por lo que estas sentencias se ubican en la categoría ODBC.
Tiene que usar un programa especial (access.mdb) para convertir estos scripts en objetos de
base de datos MSACCESS.

Personalización y ampliación de PowerDesigner 229


CAPÍTULO 4: Archivos de definición DBMS

Opciones físicas (DBMS)

Para algunos DBMS, se utilizan opciones adicionales para especificar cómo se optimiza o
almacena un objeto en una base de datos. En PowerDesigner, estas opciones se denominan
opciones físicas y se muestran en las pestañas Opciones físicas y Opciones físicas (comunes)
de las hojas de propiedades del objeto.
Para que aparezca en la pestaña Opciones físicas, se debe definir una opción en el elemento
Script\Objects\object\Options (consulte Elementos de objetos comunes en la página 144).
Los valores predeterminados se pueden almacenar en Opciones o en DefOptions. Para
aparecer en la pestaña Opciones físicas (comunes) (o en cualquier otra pestaña de la hoja de
propiedades), la opción física debe estar asociada adicionalmente con un atributo extendido
(consulte Agregar opciones físicas de DBMS a sus formularios en la página 210).
Durante la generación, las opciones seleccionadas en el modelo para cada objeto se
almacenan como una cadena SQL en la variable %OPTIONS%, que debe aparecer al final
de la sentencia Create del objeto, y no puede ir seguida de nada más. El siguiente ejemplo
utiliza la sintaxis correcta:
crear tabla [%OPTIONS%]

Durante la ingeniería inversa por script, la sección de la consulta SQL determinada como
opciones físicas se almacena en %OPTIONS% y luego se analizará cuando lo requiera una
hoja de propiedades del objeto.
Durante la ingeniería inversa de la base de datos en vivo, la instrucción SQL SqlOptsQuery
se ejecuta para recuperar las opciones físicas que se almacenan en %OPTIONS% para
analizarlas cuando lo requiera una hoja de propiedades del objeto.
Puede utilizar las variables de PowerDesigner (consulte Variables y macros de PDM en la
página 212) para configurar las opciones físicas de un objeto. Por ejemplo, en Oracle, puede
establecer la siguiente variable para un clúster para que el clúster tome el mismo nombre que
la tabla.
Clúster %TABLE%

Para obtener información sobre la configuración de opciones físicas, consulte Modelado de


datos > Creación de modelos de datos > Implementación física > Opciones físicas.

Opciones físicas simples


Las opciones físicas simples deben contener un nombre y pueden contener %d, %s u otra
variable para permitir que el usuario especifique un valor y palabras clave para especificar
valores permitidos y valores predeterminados.
Las opciones físicas simples se especifican en una sola línea usando la siguiente sintaxis:
nombre[=] %s|%d|%variable% [: palabras clave]
Todo lo ingresado antes de los dos puntos se genera en scripts. El nombre es requerido por

230 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

PowerDesigner, pero puede colocarlo entre signos de intercalación (<nombre>) si necesita


excluirlo del script final. Las variables %d o %s requieren un valor numérico o de cadena, y
también puede usar una variable de PowerDesigner o un fragmento de código GTL.
Opción física genera como

max_rows_per_page=%d max_rows_per_page=valor

por instancias por ejemplo cadena

<nombre-partición> %s nombre

Puede insertar dos puntos seguidos de palabras clave separadas por comas para controlar sus
opciones:
Palabra clave valor y resultado

categoría=metacla Permite al usuario asociar el objeto con un objeto del tipo


se especificado. Están disponibles los siguientes ajustes:
• espacio de mesa
• almacenamiento

Nota:En Oracle, la opción física compuesta de almacenamiento


se utiliza como plantilla para definir todos los valores de
almacenamiento en una entrada de almacenamiento para evitar
tener que establecer valores de forma independiente cada vez que
necesite reutilizarlos con los mismos valores en una cláusula de
almacenamiento. Por este motivo, la opción física de Oracle no
incluye el nombre de almacenamiento (%s).

• colección calificada de metaclases- Por ejemplo:


Modelo.Tablas o Tabla.Columnas
en %s:
categoría=almacenamiento
{
lista=valor|valor Especifica una lista de valores separados por barras verticales
permitidos para la opción.

predeterminado=va Especifica un valor predeterminado para la opción.


lor

Personalización y ampliación de PowerDesigner 231


CAPÍTULO 4: Archivos de definición DBMS

dquoted=sí y Especifica que el valor está entre comillas simples o dobles.


comillas=sí

Palabra clave valor y resultado

múltiple=sí Especifica que la opción se muestra con un sufijo <*> en el panel


izquierdo de la
La pestaña Opciones físicas y se puede agregar al panel derecho
tantas veces como sea necesario. Si la opción está seleccionada en el
panel derecho y hace clic en la misma opción en el panel izquierdo
para agregarla, un cuadro de mensaje le preguntará si desea reutilizar
la opción seleccionada. Si hace clic en No, se agrega una segunda
instancia de la opción al panel derecho.
enablebprefix=sí Especifica que el nombre de la base de datos se inserta como prefijo
(consulte las opciones de espacio de tabla en DB2 OS/390).

prevmand=sí y Especifica que se requiere la opción física anterior o siguiente para la


nextmand=sí opción actual y que si la opción actual se agrega al panel derecho,
también se agregará la opción anterior o siguiente.

Ejemplos
Opción física genera como

ccsid%s: lista=ascii|ebcdic| código ascii


unicode, por defecto = ascii

tabla=%s: mesa = "mesa"


categoría=Modelo.Tablas,
dquoted=sí
<archivo_flashback> %s cadena

Opciones físicas compuestas


Las opciones físicas compuestas se especifican en varias líneas y contienen una o más
opciones dependientes. Si agrega la opción compuesta al panel derecho de la pestaña
Opciones físicas, todas las opciones dependientes se agregan con ella. Si agrega una opción
dependiente, la opción compuesta también se agrega para contenerla.
Las opciones físicas compuestas se definen con la siguiente sintaxis:

232 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

nombre[=] [%s|%d|%variable%] : compuesto=sí[, palabras clave]


{
subopción[subopción...]
}

Todo lo ingresado antes de los dos puntos se genera en scripts. El nombre es requerido por
PowerDesigner, pero puede colocarlo entre signos de intercalación (<nombre>) si necesita
excluirlo del script final. Las variables %d o %s requieren un valor numérico o de cadena, y
también puede usar una variable de PowerDesigner o un fragmento de código GTL.
La palabra clave composite=yes es necesaria para las opciones compuestas y se puede
utilizar junto con cualquiera de las palabras clave de opciones físicas simples o cualquiera
de las siguientes:
Palabra clave valor y resultado

compuesto=sí Especifica que la opción es una opción compuesta que contiene opciones
dependientes rodeadas por llaves.

separador=sí Especifica que las opciones dependientes están separadas por comas.

paréntesis = Especifica que el conjunto de objetos dependientes está contenido entre


sí paréntesis.

chldmand=sí Especifica que se debe establecer al menos una de las opciones


dependientes.

Ejemplos
Opción física genera como

<lista> : compuesto=sí,
múltiple=sí
{ frag-expresión en
<frag-expresión> %s en almacenamiento
%s:
categoría=almacenamiento frag-
} expression2en
almacenamiento2
etc.

Personalización y ampliación de PowerDesigner 233


CAPÍTULO 4: Archivos de definición DBMS

<usando_bloque>: compuesto=sí, (usando cadena vcat


paréntesis=sí usando almacenamiento
{ stogroup
usando vcat %s valor priqty valor
usando stogroup %s : secqty borrar no)
categoría=almacenamiento,
compuesto=sí
{
priqty %d : predeterminado=12
secqty %d
borrar %s: predeterminado=no,
lista=sí
| No
}

Adición de opciones físicas de DBMS a sus formularios


Muchos DBMS usan opciones físicas como parte de la definición de sus objetos. Las
opciones físicas más utilizadas se muestran en un formulario, Opciones físicas (comunes),
definidas en la metaclase adecuada. Puede editar este formulario o agregar opciones físicas
a sus propios formularios.

Nota:PowerDesigner muestra todas las opciones disponibles para un objeto (definido en la


categoría Script/Objetos/objeto/Opciones) en la pestaña Opciones físicas (consulte Opciones
físicas (DBMS) en la página 207).

Para que una opción física se muestre en un formulario, debe estar asociada a un atributo
extendido de tipo opción física.

1. Haga clic con el botón derecho en la metaclase y seleccione Nuevo atributo extendido de
Opciones físicas para abrir el cuadro de diálogo Seleccionar opciones físicas:

234 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Nota:Este cuadro de diálogo estará vacío si no se definen opciones físicas en Script/


Objetos/objeto/Opciones.

2. Seleccione la opción física requerida y haga clic en Aceptar para crear un atributo
extendido asociado con ella.
3. Especifique cualquier otra propiedad adecuada.
4. Seleccione el formulario en el que desea insertar la opción física y haga clic en la
herramienta Agregar atributo para insertarlo como control (consulte Agregar atributos
extendidos y otros controles a su formulario en la página 57).

Nota:Para cambiar la opción física asociada con un atributo extendido, haga clic en los
puntos suspensivos a la derecha del campo Opciones físicas en la hoja de propiedades de
Atributo extendido.

Variables y macros de PDM

Las consultas SQL registradas en los elementos del archivo de definición DBMS utilizan
varias variables PDM, que se escriben entre signos de porcentaje. Estas variables se
reemplazan con valores de su modelo cuando se generan los scripts y se evalúan para crear
objetos de PowerDesigner durante la ingeniería inversa.
Por ejemplo, en la siguiente consulta, la variable %TABLE% será reemplazada por el código
de la tabla que se está creando:

Personalización y ampliación de PowerDesigner 235


CAPÍTULO 4: Archivos de definición DBMS
CreateTable = crear tabla %TABLE%

Nota:Puede usar estas variables libremente en sus propias consultas, pero no puede cambiar
el método de su evaluación (es decir, %TABLE% solo puede evaluar el código de la tabla).
Alternativamente, puede acceder a las propiedades de cualquier objeto utilizando GTL
(consulte el Capítulo 5, Personalización
Generación con GTL en la página 245) y los nombres públicos disponibles a través de
la
Metamodelo de PowerDesigner (consulte el Capítulo 8, El metamodelo público de
PowerDesigner en la página 343).

La evaluación de las variables depende de los parámetros y el contexto. Por ejemplo, la


variable %COLUMN% no se puede usar en una consulta Crear espacio de tabla porque solo
es válida en un contexto de columna.
Estas variables se pueden utilizar para todos los objetos que admitan estos conceptos:
Variable Comentario

%COMENTARIO% Comentario de objeto o su nombre (si no hay ningún comentario


definido)
%DUEÑO% Código generado por el usuario que posee el objeto o su padre. No
debe usar esta variable para consultas sobre objetos enumerados en
cuadros de diálogo inversos de bases de datos en vivo, porque su
propietario aún no está definido
%DBPREFIX% Prefijo de la base de datos de los objetos (nombre de la base de datos
+ '.' si la base de datos está definida)
%CALIFICATORIO% Calificador de objeto completo (prefijo de base de datos + prefijo de
propietario)
%OPCIONES% Texto SQL que define opciones físicas para Objeto

%OPCIONESEXO% El texto SQL analizado que define las opciones físicas del objeto.

%CONST NOMBRE% Nombre de la restricción del objeto

%RESTRICCIÓN% Restricción del cuerpo SQL del objeto. Ej: (A <= 0) Y (A >= 10)

%CONSTDEFN% Definición de restricción de columna. Ej: la restricción C1


comprueba (A>=0) Y (A<=10)

%NORMAS% Concatenación de la expresión del servidor de las reglas comerciales


asociadas con el objeto

236 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Variable Comentario

%NOMBREISCODE% Verdadero si el nombre y el código del objeto (tabla, columna,


índice) son idénticos (específico de AS 400)

%TABLCALIFICADOR% Calificador de tabla principal (prefijo de base de datos + prefijo de


propietario)
%TABLOWNER% El código generado del usuario propietario de la tabla principal

Probar valores de variables con los operadores [ ]


Puede usar corchetes [ ] para comprobar la existencia o el valor de una variable.
Puede utilizar corchetes para
• Incluya cadenas y variables opcionales, o listas de cadenas y variables en la sintaxis de
las sentencias SQL: [%variable%]
• Pruebe el valor de una variable e inserte o reconsidere un valor dependiendo del resultado
de la prueba: [%variable%? verdadero Falso]
• Probar el contenido de una variable [%variable%=constante? verdadero Falso]
Variable Generación

[%variable%] Pruebas de existencia de la variable.


Generación: Generada solo sivariableexiste y no se le asigna
NO o FALSO.
Inversa: Se evalúa si el analizador detecta una sentencia
SQL correspondiente a la variable y no se le asigna NO o
FALSO.
[%variable%? Prueba la existencia de la variable y permite la salida
verdadero Falso] condicional.
Generación:verdaderose genera sivariableexiste y no se le
asigna NO o FALSO. De lo contrario,FALSOes generado.
Inversa: si el analizador detectavariabley no se le asigna NO
o FALSO,verdaderoestá alreves. De lo
contrario,FALSOestá alreves.variablese establece en
Verdadero o Falso según corresponda.
[%variable%=constante? Prueba el valor de la variable y permite la salida
verdadero : condicional.
FALSO] Generación: Sivariablees igualconstante,verdaderoes
generado. De lo contrario,FALSOes generado.

Personalización y ampliación de PowerDesigner 237


CAPÍTULO 4: Archivos de definición DBMS

Inversa: si el analizador detecta quevariablees


igualconstante,verdaderoestá alreves. De lo
contrario,FALSOestá alreves.

Variable Generación

[.Z: [elemento1] Especifica que elelementosno tienen un orden significativo.


[elemento2]...] Generación: .Z se ignora
Reverso: Elelementosse pueden invertir en cualquier orden
en que se encuentren.

[.O: [elemento1] Especifica que elelementosson sinónimos, solo uno de los


[elemento2]...] cuales debe ser la salida.
Generación: Solo la primeraartículose genera la lista.
Reverse: El analizador inverso debe encontrar uno de
loselementospara validar la declaración completa.

Ejemplos
• [%OPCIONES%]
Si %OPCIONES% (opciones físicas para los objetos visibles en la hoja de propiedades
del objeto) existe y no se le asigna NO o FALSO, se genera al valor de %OPCIONES%.
• [predeterminado %DEFAULT%]

Si se encuentra la declaración por defecto 10 durante la ingeniería inversa, se asigna a


%DEFAULT% el valor 10, pero la declaración no es obligatoria y la inversión continúa
aunque no esté presente. En la generación de scripts, si %DEFAULT% tiene un valor de
10, se genera como valor predeterminado 10; de lo contrario, no se genera nada para el
bloque.
• [%MAND%? no nulo: nulo]
Si %MAND% se evalúa como verdadero o contiene un valor distinto de Falso o NO, se
genera como no nulo. De lo contrario, se genera como nulo.
• [%DELCONST%=¿RESTRINGIR?:[al eliminar %DELCONST%]]

Si %DELCONST% contiene el valor RESTRICT, se genera como en delete


RESTRINGIR.
• %COLUMN% %DATATYPE%[.Z: [%NOTULL%][%DEFAULT%]]
Debido a la presencia de la variable .Z, las dos declaraciones siguientes se invertirán
correctamente aunque los atributos de la columna no estén en el mismo orden:
• Crear tabla abc (un número entero no nulo por defecto 99)

238 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

• Crear tabla abc (un entero predeterminado 99 no nulo)


• [.O:[procedimiento][procedimiento]]
Esta declaración generará un procedimiento. Durante la ingeniería inversa, el analizador
coincidirá con las palabras clave de procedimiento o proc.

• Nota:Siempre se genera una cadena entre corchetes. Para la ingeniería inversa,


colocar una cadena entre corchetes significa que es opcional y su ausencia no
cancelará la inversión de la declaración.

crear [o reemplazar] ver %VIEW% como %SQL%

Un script que contenga crear o crear o reemplazar se invertirá correctamente porque o


reemplazar es opcional.

Dar formato a valores de variables


Puede especificar un formato para los valores de las variables. Por ejemplo, puede forzar
valores a minúsculas o mayúsculas, truncar la longitud de los valores o colocar valores entre
comillas.
Las opciones de formato se incrustan en la sintaxis de variables de la siguiente manera:
%[[?][-][x][.[-]y][opciones]:]variable%

Las opciones de formato de variables son las siguientes:


Opción Descripción

? Campo obligatorio, si se devuelve un valor nulo, la llamada de


traducción falla
[-][x].[-]y[M] extrae la primeraycaracteres o, para -y, el últimoycaracteres.
SiXse especifica yyes mas bajo queX, luego se agregan espacios en
blanco o ceros a la derecha de los caracteres extraídos para llenar el
ancho hastaX. Para -x, los espacios en blanco o ceros se agregan a la
izquierda y la salida se justifica a la derecha.
Si se agrega la opción M, entonces la primeraXcaracteres de la variable
se descartan y el siguienteyse emiten caracteres.
Por lo tanto, para un objeto llamado abcdefghijklmnopqrstuvwxyz
(con paréntesis presentes simplemente para demostrar el relleno):

Personalización y ampliación de PowerDesigner 239


CAPÍTULO 4: Archivos de definición DBMS

Salida de plantilla
(%.3:Nombre%) da (abc)
(%.-3:Nombre%) da (xyz)
(%10.3:Nombre%) da (abc) (%10.-3:Nombre%) da
(xyz)
(%-10.3:Nombre%) da (abc)
(%-10.-3:Nombre%) da (xyz)
(%10.3M:Nombre%) da (jkl)

L[F], U[F] y c Convierte la salida a minúsculas o mayúsculas. Si se especifica F, solo


se convierte el primer carácter. c es equivalente a UF.

q y q Rodea la variable con comillas simples o dobles.

T Recorta los espacios en blanco iniciales y finales de la variable.

H Convierte número a hexadecimal.

Puede combinar códigos de formato. Por ejemplo, la plantilla (%12.3QMFU:Name%)


aplicada al objeto genera abcdefghijklmnopqrstuvwxyz ("Lmn").
Variables para tablas y vistas
PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de tablas y
vistas.
Las siguientes variables están disponibles para las tablas:
Variable Comentario

%MESA% Código generado de la tabla

%TNOMBRE% Nombre de la tabla

%TCODE% Código de Tabla

%TLABL% Comentario de tabla

%PKEYCOLUNS% Lista de columnas de clave principal. Ej: A, B

%TABLDEFN% Cuerpo completo de definición de tabla. Contiene definición


de columnas, controles y claves.

%CLASE% Nombre de tipo de datos abstracto

%PROPIETARIO% Propietario del objeto de clase

240 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%CALIFICADOR DE CLASE% Calificador del objeto de clase

%CLÚSTERCOLUMNAS% Lista de columnas utilizadas para un clúster

%INDXDEFN% Definición de índices de tabla

%TIPOTABLA% Tipo de mesa

Las siguientes variables están disponibles para las vistas:


Variable Comentario

%VISTA% Código generado de View

%NOMBRE DE Ver nombre


VISTA%
%CÓDIGO DE Ver código
VISTA%
%VER COLN% Lista de columnas de Vista. Ej: "A, B, C"

%SQL% Texto SQL de la Vista. Ej: Seleccione * de T1

%VERCHEQUE% Contiene la palabra clave "con opción de verificación" si esta opción


está seleccionada en Ver
%GUION% Completa el orden de creación de la vista. Ej: crear vista V1 como
seleccionar * de T1
%ESTILO DE VISTA% Estilo de vista: vista, instantánea, vista materializada

Variable Comentario

%ISVIEW% Cierto es que es una vista (y no una instantánea)

%USO% Solo lectura = 0, actualizable = 1, opción de verificación = 2

Las siguientes variables están disponibles para tablas y vistas:


Variable Comentario

%XMLELEMENTO% Elemento contenido en el esquema XML

%XMLSCHEMA% esquema XML

Variables para columnas, dominios y restricciones


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de columnas,
dominios y restricciones. Las variables de la tabla principal también están disponibles.

Personalización y ampliación de PowerDesigner 241


CAPÍTULO 4: Archivos de definición DBMS

Las siguientes variables están disponibles para las columnas:


Variable Comentario

%COLUMNA% Código generado de Columna

%COLNNO% Posición de la columna en la lista de columnas de la tabla

%NOMBRECOLN% Nombre de la columna

%CÓDIGOCOLN% Código de columna

%PRIMARIO% Contiene la palabra clave "principal" si la columna es una columna


de clave principal
%ISPKEY% VERDADERO si la columna es parte de una clave principal

%ISAKEY% VERDADERO si la columna es parte de una clave alternativa

%EXTRANJERO% VERDADERO si la columna es parte de una clave externa

%CALCULAR% Calcular texto de restricción

%PREVCOLN% Código de la columna anterior en la lista de columnas de la tabla

%NEXTCOLN% Código de la siguiente columna en la lista de columnas de la tabla

%NULLNOTNULL% Estado obligatorio de una columna. Esta variable siempre se usa con
el elemento NullRequired, consulteTrabajar con valores nulosen la
página 159
%PCLAVE% Palabra clave CLUSTER para la clave principal cuando se define en
la misma línea

Variable Comentario

%UNA CLAVE% Palabra clave CLUSTER para la clave alternativa cuando se define
en la misma línea

%LONGITUD Longitud promedio


PROMEDIO%
%ISVARDTTP% TRUE si el tipo de datos de la columna tiene una longitud variable

%ISLONGDTTP% VERDADERO si el tipo de datos de la columna es un tipo de datos


largo pero no una imagen o un blob

242 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%ISBLOBDTTP% VERDADERO si el tipo de datos de la columna es una imagen o un


blob
%ISSTRDTTP% VERDADERO si el tipo de datos de la columna contiene caracteres

Las siguientes variables están disponibles para los dominios:


Variable Comentario

%DOMINIO% Código generado de Dominio (también disponible para columnas)

%NOMBREDEFAULT% Nombre del objeto predeterminado asociado con el dominio


(específico de SQL Server)

Las siguientes variables están disponibles para restricciones:


Variable Comentario

%UNIDAD% Atributo de unidad del cheque estándar

%FORMATO% Atributo de formato de verificación estándar

%TIPO DE DATOS% Tipo de datos. Ej: int, char(10) o numeric(8, 2)

%CÓDIGODTTP% Código de tipo de datos. Ej: int, char o numeric

%LONGITUD% Longitud del tipo de datos. Ej: 0, 10 u 8

%PREC% Precisión del tipo de datos. Ej: 0, 0 o 2

%ISRDONLY% VERDADERO si se ha seleccionado el atributo de solo lectura de la


verificación estándar
%POR DEFECTO% Valor por defecto

%MINVAL% Valor mínimo

%VALORMÁX% Valor máximo

%VALORES% Lista de valores. Ej: (0, 1, 2, 3, 4, 5)

Variable Comentario

%LISTVAL% Restricción de SQL asociada con Lista de valores. Ej: C1 en (0, 1, 2,


3, 4, 5)

Personalización y ampliación de PowerDesigner 243


CAPÍTULO 4: Archivos de definición DBMS

%MÍNIMO MÁXIMO% Restricción de SQL asociada con valores mínimos y máximos. Ej:
(C1 <= 0) Y (C1 >= 5)

%ESMAND% VERDADERO si el dominio o la columna son obligatorios

%MAND% Contiene palabras clave "nula" o "no nula" según el atributo


Obligatorio

%NULO% Contiene la palabra clave "null" si el dominio o la columna no son


obligatorios
%NO NULO% Contiene la palabra clave "no nula" si el dominio o la columna son
obligatorios
%IDENTIDAD% Palabra clave "identidad" si Dominio o Columna es identidad
(específico de Sybase)
%CONDEFAULT% Palabra clave "con valor predeterminado" si el Dominio o la
Columna tienen el valor predeterminado
%ISUPPERVAL% VERDADERO si se ha seleccionado el atributo de mayúsculas de la
verificación estándar
%ISLOWERVAL% VERDADERO si se ha seleccionado el atributo de minúsculas de
verificación estándar
%SUPERIOR% Restricción de SQL asociada con valores superiores solamente

%MÁS BAJO% Restricción de SQL asociada con valores inferiores solamente

%CASO% Restricción de SQL asociada con casos (superior, inferior, primera


palabra mayúscula, etc.)

Variables para claves


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de claves.
Variable Comentario

%COLUMNAS% o Lista de columnas de Clave. Ej: "A, B, C"


%LISTACOLUMNAS%
%ISPKEY% VERDADERO cuando la clave es la clave principal de la
tabla
%PCLAVE% Nombre de la restricción de la clave principal

%UNA LLAVE% Nombre de restricción de clave alternativa

%LLAVE% Restricción nombre de la clave

%ISMULTICOLN% Verdadero si la clave tiene más de una columna

244 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%GRUPO% Palabra clave del clúster

Variables para índices y columnas de índice


PowerDesigner puede usar variables en la generación y la ingeniería inversa de índices y
columnas de índice.
Las siguientes variables están disponibles para los índices:
Variable Comentario

%ÍNDICE% Código de índice generado

%MESA% Código generado del padre de un índice, puede ser una tabla o una tabla
de consulta (vista)

%INDEXNAME% Nombre del índice

%CÓDIGOÍNDICE% Código de índice

%ÚNICO% Contiene la palabra clave "única" cuando el índice es único

%INDEXTYPE% Contiene tipo de índice (disponible solo para algunos DBMS)

%CIDXLIST% Lista de columnas de índice con separador, en la misma línea. Ejemplo:


A asc, B desc, C asc

%ÍNDICE% Contiene palabras clave "primario", "único" o "extranjero" según el


origen del índice

%GRUPO% Contiene la palabra clave "clúster" cuando el índice es clúster

%INDXDEFN% Se utiliza para definir un índice dentro de una definición de tabla

Las siguientes variables están disponibles para las columnas de índice:


Variable Comentario

%ASC% Contiene palabras clave "ASC" o "DESC" según el orden de


clasificación
%ISASC% VERDADERO si el orden de la columna de índice es ascendente

Variables para referencias y columnas de referencia


PowerDesigner puede usar variables en la generación y la ingeniería inversa de referencias
y columnas de referencia.
Las siguientes variables están disponibles como referencia:

Personalización y ampliación de PowerDesigner 245


CAPÍTULO 4: Archivos de definición DBMS

Variable Comentario

%REFR% Código de referencia generado

%PADRE% Código generado de la tabla principal

Variable Comentario

%PNOMBRE% Nombre de la tabla principal

%PCODE% Código de la tabla principal

%PCALIFICADOR% Calificador de la tabla principal. Véase también CALIFICADOR.

%NIÑO% Código generado de la tabla secundaria

%CNOMBRE% Nombre de la tabla secundaria

%CODIGO% Código de la tabla secundaria

%CCALIFICADOR% Calificador de tabla infantil. Véase también CALIFICADOR.

%REFRNOMBRE% Nombre de referencia

%REFRCODE% Código de referencia

%FKCONSTRAINT% Nombre de restricción de clave externa (referencia)

%PKCONSTRAINT% Nombre de restricción de la clave principal utilizada para hacer


referencia al objeto
%COLUMNAS CLAVE% Lista de columnas clave principales. Ej: C1, C2, C3

%FCOLUMNAS Lista de columnas de clave externa secundaria. Ej: C1, C2, C3


CLAVE%
%UPDCONST% Contiene palabras clave de restricción declarativa de actualización
"restringir", "cascada", "establecer nulo" o "establecer
predeterminado"
%DELCONST% Contiene palabras clave de restricción declarativa de eliminación
"restringir", "cascada", "establecer nulo" o "establecer
predeterminado"
%MINTARJETA% Cardinalidad mínima

%MAXCARD% Cardinalidad máxima

246 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%PODER% Nombre del propietario de la tabla principal

%PROPIETARIO% Nombre del propietario de la tabla secundaria

%CHCKONCMMT% VERDADERO cuando se selecciona verificación de compromiso en


Referencia (específico de ASA 6.0)

%REFRNO% Número de referencia en la colección de referencias de la tabla


secundaria
%UNIONES% Las referencias se unen.

Las siguientes variables están disponibles para las columnas de referencia:


Variable Comentario

%CKEYCOLUMN% Código generado de la columna de la tabla principal (clave


principal)
%FKEYCOLUMN% Código generado de la columna de la tabla secundaria (clave
externa)
%PAQUETE% Código generado de la columna de clave principal

%PKNOMBRE% Nombre de columna de clave principal

%FK% Código generado de la columna de clave externa

% NOMBRE FK % Nombre de columna de clave externa

%ALASKA% Código de columna de clave alternativo (igual que PK)

%AKNOMBRE% Nombre de columna de clave alternativo (igual que PKNAME)

%COLTYPE% Tipo de datos de la columna de clave principal

%COLTYPENOOWNER Propietario de la columna principal


%

%POR DEFECTO% Valor predeterminado de la columna de clave externa

%HOSTCOLTYPE% Tipo de datos de la columna de clave principal utilizado en la


declaración del procedimiento. Por ejemplo: sin longitud

Variables para disparadores y procedimientos


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de
disparadores y procedimientos.

Personalización y ampliación de PowerDesigner 247


CAPÍTULO 4: Archivos de definición DBMS

Las siguientes variables están disponibles para disparadores:


Variable Comentario

%ORDEN% Número de pedido del disparador (en caso de que DBMS admita más de
un disparador de un tipo)

%DESENCADENAR% Código de activación generado

%TIPOTRG% Tipo de disparador. Contiene palabras clave "antes de insertar",


"después de la actualización", etc.
%TRGEVENT% Acontecimiento desencadenante. Contiene palabras clave "insertar",
"actualizar", "eliminar"
%TRGTIME% Tiempo de disparo. Contiene palabras clave NULL, "antes", "después"

%NÚMERO DE Número de orden de referencia en Lista de referencias de Tabla


REFERENCIA%
%ERROR% Número de error para error estándar

%ERRMSG% Mensaje de error para error estándar

Variable Comentario

%MSGTAB% Nombre de la tabla que contiene mensajes de error definidos por el


usuario
%MSGNO% Nombre de la columna que contiene números de error en la tabla de
errores definida por el usuario
%MSGTXT% Nombre de la columna que contiene mensajes de error en la tabla de
errores definida por el usuario
%GUION% Script SQL de activador o procedimiento.

%CUERPOTRG% Cuerpo del disparador (solo para ingeniería inversa de la base de datos
en vivo de Oracle)
%TRGDESC% Descripción del activador (solo para la ingeniería inversa de la base de
datos en vivo de Oracle)
%TRGDEFN% Definición de disparador

%TRGSCOPE% Ámbito de activación (palabras clave: base de datos, esquema, todo el


servidor)
%TRGSCOPEOWNER Propietario del ámbito de activación
%

248 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%TRGSCOPEQUALI- Propietario del ámbito de activación más punto


FIER%

Las siguientes variables están disponibles para los procedimientos:


Variable Comentario

%PROC% Código de procedimiento generado (también disponible para disparador


cuando Trigger se implementa con un procedimiento)

%FUNC% Código generado de Procedimiento si Procedimiento es una función (con un


valor de retorno)
%PROCPRMS% Lista de parámetros del procedimiento

Variables para reglas


PowerDesigner puede usar variables en la generación y la ingeniería inversa de reglas.
Variable Comentario

%REGLA% Código de regla generado

%NOMBRE DE LA Nombre de la regla


REGLA%
%CÓDIGO DE Código de regla
REGLAS%
%RULECEXPR% Expresión de cliente de regla

%RULESEXPR% Expresión del servidor de reglas

Variables para secuencias


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de
secuencias.
Variable Comentario

%SQNC% Nombre de la secuencia

%SQNCOWNER% Nombre del propietario de la secuencia

Variables para sinónimos


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de
sinónimos.
Variable Comentario

%SINÓNIMO% Código generado del sinónimo

Personalización y ampliación de PowerDesigner 249


CAPÍTULO 4: Archivos de definición DBMS

%OBJETOBASE% Objeto base del sinónimo

%PROPIETARIOBASE% Propietario del objeto base

%CALIFICADOR Calificador del objeto base


BASE%
%VISIBILIDAD% Privado (predeterminado) o público

%SYNMTYPE% Sinónimo de alias (solo DB2)

%ES PRIVADO% Cierto para un sinónimo privado

%ESPÚBLICO% Cierto para un sinónimo público

Variables para Tablespaces y Storages


PowerDesigner puede usar variables en la generación y la ingeniería inversa de tablespaces
y almacenamientos.
Variable Comentario

%ESPACIO DE MESA% Código generado de Tablespace

%ALMACENAMIENTO% Código generado de Almacenamiento

Variables para tipos de datos abstractos


PowerDesigner puede usar variables en la generación y la ingeniería inversa de tipos de datos
abstractos y sus objetos secundarios.
Las siguientes variables están disponibles para tipos de datos abstractos:
Variable Comentario

%IMD% Código generado de tipo de datos Abstract

Variable Comentario

%TIPO% Tipo de tipo de datos abstracto. Contiene palabras clave como


"matriz", "lista", ...
%TAMAÑO% Tamaño del tipo de datos abstractos

%ARCHIVO% Archivo Java de tipo de datos abstractos

%ISARRAY% VERDADERO si el tipo de datos abstracto es de tipo matriz

250 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%ISLISTA% VERDADERO si el tipo de datos abstractos es de tipo lista

%ISSTRUCT% VERDADERO si el tipo de datos abstracto es de estructura de tipo

%ISOBJECT% VERDADERO si el tipo de datos abstracto es de tipo objeto

%ISJAVAOBJECT% VERDADERO si el tipo de datos abstractos es del tipo objeto JAVA

%ESJAVA% VERDADERO si el tipo de datos abstractos es del tipo clase JAVA

%ADTDEF% Contiene definición de tipo de datos abstractos

%ADTBODY% Cuerpo de tipo de datos abstracto

%SUPERADTO% Supertipo de tipo de datos abstracto

%ADTNOTFINAL Final de tipo de datos abstractos


%

%ADTABSTRACT Tipo de datos abstractos instanciables


%

%ADTHEADER% Cuerpo de tipo de datos abstracto con ODBC

%ADTEXT% Especificación de tipo de datos abstractos con ODBC

%SUPERCALIFICACIÓN- Calificador de supertipo de tipo de datos abstracto


ER%

%SUPERPROPIETARIO% Propietario de supertipo de tipo de datos abstracto

%ADTAUTH% Autorización de tipo de datos abstractos

%ADTJAVANAME Tipo de datos abstracto Nombre JAVA


%

%ADTJAVADATA Tipo de datos abstractos Datos JAVA


%

%ADTATTRDEF% Atributos parte de la definición de tipo de datos abstractos

%ADTMETHDEF Métodos parte de la definición de tipo de datos abstractos


%

Las siguientes variables están disponibles para atributos de tipos de datos abstractos:

Personalización y ampliación de PowerDesigner 251


CAPÍTULO 4: Archivos de definición DBMS

Variable Comentario

%ADTATTR% Código generado del atributo de tipo de datos abstractos

%ATTRJAVA- Atributo de tipo de datos abstracto Nombre JAVA


NOMBRE%

Las siguientes variables están disponibles para procedimientos de tipos de datos abstractos:
Variable Comentario

%ADTPROC% Código de procedimiento

%PROCTYPE% Tipo de procedimiento (constructor, orden, mapa)

%PROCFUNC% Tipo de procedimiento (procedimiento, función)

%PROCDEFN% Cuerpo del procedimiento (comienzo... fin)

%PROCRETORNO Tipo de retorno de procedimiento


%

%PARAM% Parámetros del procedimiento

%PROCNOTFI- Trámite definitivo


NAL%

%PROCSTATICO% miembro del procedimiento

%PROCAB- Procedimiento instanciable


% ESTRATO

%SUPERPROC% Procedimiento superprocedimiento

%ISCONSTRUC- Verdadero si el procedimiento es un constructor


COLINA%

%PROCJAVA- Procedimiento Nombre JAVA


NOMBRE%

%ISJAVAVAR% Verdadero si el procedimiento está asignado a una variable JAVA estática

%ISSPEC% Cierto en las especificaciones, indefinido en el cuerpo

252 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Variables para índices de unión (IQ)


PowerDesigner puede usar variables en la generación y la ingeniería inversa de índices de
combinación IQ.
Variable Comentario

%JIDX% Código generado para el índice de unión

%JIDXDEFN% Cuerpo completo de definición de índice de unión

%RESERVAR% Lista de referencias (para conexiones de bases de datos en vivo)

%LISTARFJNL% Lista de uniones de referencia (para conexiones de bases de datos en


vivo)
%CALIFICADOR DE Calificador para la tabla de hechos
HECHO%
%JIDXFACT% Hecho (tabla base)

%JIDXCOLN% Lista de columnas

%JIDXFROM% De la cláusula

%JIDXDONDE% Dónde cláusula

Variables para ASE y SQL Server


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de objetos
para ASE y SQL Server.
Variable Comentario

%NOMBRE DE LA Nombre del objeto de regla asociado con el dominio


REGLA%
%NOMBREDEFAULT% Nombre del objeto predeterminado asociado con el dominio

%USE_SP_PKEY% Use sp_primary key para crear claves primarias

%USE_SP_FKEY% Use sp_foreign key para crear claves foráneas

Variables para la sincronización de bases de datos


PowerDesigner puede usar variables en la generación y la ingeniería inversa de objetos
durante la sincronización de la base de datos.
Variable Comentario

%PROPIETARIO% Nombre del antiguo propietario del Objeto. Véase también


PROPIETARIO

Personalización y ampliación de PowerDesigner 253


CAPÍTULO 4: Archivos de definición DBMS

%NUEVO DUEÑO% Nombre del nuevo propietario del Objeto. Véase también
PROPIETARIO
%CALIFICADOR Antiguo calificador de Objeto. Ver también CALIFICADOR
ANTIGUO%
%NUEVOCALIFICADOR% Nuevo calificador de Objeto. Ver también CALIFICADOR

%TABLA ANTIGUA% Código antiguo de la tabla

Variable Comentario

%NEWTABL% Nuevo código de Tabla

%OLDCOLN% Antiguo código de Columna

%NEWCOLN% Nuevo código de Columna

%VIEJO NOMBRE% Antiguo código de Secuencia

%NUEVO NOMBRE% Nuevo código de Secuencia

Variables para paquetes de bases de datos y sus objetos


secundarios
PowerDesigner puede usar variables en la generación y la ingeniería inversa de paquetes de
bases de datos y sus objetos secundarios.
Las siguientes variables están disponibles para los paquetes de bases de datos:
Variable Comentario

%PAQUETEDB% Código generado del paquete de la base de datos

%CÓDIGODEPAQUETEDB% Código de inicialización al final del paquete

%DBPACKAGESPEC% Especificación del paquete de base de datos

%DBPACKAGEBODY% Cuerpo del paquete de la base de datos

%DBPACKAGEINIT% Código de inicialización del paquete de base de datos

%DBPACKAGEPRIV% Autorización de paquete de base de datos (privilegio antiguo)

%DBPACKAGEAUTH% Autorización de paquete de base de datos

%DBPACKAGEPUBLIC% Verdadero para el subobjeto público

254 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%TEXTODEPAQUETEDB% Cuerpo del paquete de base de datos con ODBC

%DBPACKAGEHEADER Especificaciones del paquete de base de datos con ODBC


%

Las siguientes variables están disponibles para los procedimientos del paquete de base de
datos:
Variable Comentario

%DBPKPROC% Código de procedimiento

%DBPKPROCTYPE% Tipo de procedimiento (procedimiento, función)

%DBPKPROCCODE% Cuerpo del procedimiento (comienzo... fin)

%DBPKPROCRETURN% Tipo de retorno de procedimiento

Variable Comentario

%DBPKPROCPARAM% Parámetros del procedimiento

Las siguientes variables están disponibles para las variables del paquete de base de datos:
Variable Comentario

%DBPFVAR% Código variable

%DBPFVARTYPE% Tipo de variable

%DBPFVARCONST% Variable de tipo constante

%DBPFVARVALUE% Valor predeterminado variable para constante

Las siguientes variables están disponibles para los tipos de paquetes de bases de datos:
Variable Comentario

%DBPKTYPE% Escriba el código

%DBPKTYPEVAR% Lista de variables

%DBPKISSUBTYPE% Verdadero si el tipo es un subtipo

Las siguientes variables están disponibles para los cursores del paquete de base de datos:
Variable Comentario

Personalización y ampliación de PowerDesigner 255


CAPÍTULO 4: Archivos de definición DBMS

%DBPKCURSOR% código de cursor

%DBPKCURSORRE- Tipo de retorno del cursor


DOBLAR%

%DBPKCURSORQUERY consulta de cursor


%

%DBPKCURSORPARAM Parámetro del cursor


%

Las siguientes variables están disponibles para las excepciones de paquetes de base de datos:
Variable Comentario

%DBPKEXEC% código de excepción

Las siguientes variables están disponibles para los parámetros del paquete de base de datos:
Variable Comentario

%DBPKPARM% Código de parámetro

%DBPKPARMTYPE% Tipo de parámetro

%DBPKPARMDTTP% Tipo de datos de parámetro

%DBPKPARMDEFAULT Valor por defecto del parámetro


%

Las siguientes variables están disponibles para pragmas de paquetes de base de datos:
Variable Comentario

%DBPKPRAGMA% directiva pragmática

%DBPKPRAGMAOBJ% Directiva pragma sobre objeto

%DBPKPRAGMAPARAM Parámetro de la directiva Pragma


%

Variables para la seguridad de la base de datos


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de los objetos
de seguridad de la base de datos.
Variable Comentario

256 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%LISTA DE PRIVADOS% Lista de privilegios para una orden de concesión

%REVPRIVLIST% Lista de privilegios para una orden de revocación

%LISTAPERMISOS% Lista de permisos para una orden de concesión

%REVPERMLIST% Lista de permisos para una orden de revocación

%COLNPERMISSION% Permisos en una lista específica de columnas

%BITMAPCOLN% Mapa de bits de columnas específicas con permisos

%USUARIO% Nombre del usuario

%GRUPO% nombre del grupo

%ROLE% Nombre del rol

%CONCESIONARIO% Nombre genérico utilizado para diseñar un usuario, un grupo o un


rol
%CONTRASEÑA% Contraseña para un usuario, grupo o rol

%OBJETO% Objetos de base de datos (tabla, vista, columna, etc.)

%PERMISO% Orden de concesión/revocación de SQL para un objeto de base de


datos
Variable Comentario

%PRIVILEGIO% Orden de concesión/revocación de SQL para un ID (usuario,


grupo o rol)
%OPCIÓN DE Opción de concesión: con opción de concesión / con opción de
CONCESIÓN% administrador
%REVOKOPCIÓN% Opción para revocar: con cascada

%CEDENTE% Usuario que otorga el permiso

%MIEMBRO% Miembro de un grupo o miembro con un rol

%GRUPOS% Lista de grupos separados por el delimitador

%MIEMBROS% Lista de miembros (usuarios o roles) de un grupo o rol separados


por el delimitador

%ROLES% Lista de roles principales de un usuario o rol

Personalización y ampliación de PowerDesigner 257


CAPÍTULO 4: Archivos de definición DBMS

%ESQUEMA DEFIN% Definición de esquema

Variables para valores predeterminados


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de valores
predeterminados.
Variable Comentario

%BOUND_OBJECT% Objeto enlazado

Variables para servicios web


PowerDesigner puede utilizar variables en la generación y la ingeniería inversa de servicios web.
Las siguientes variables están disponibles para los servicios web:
Variable Comentario

%NOMBRESERVICIOWEB% Solo código generado del servicio web

%SERVICIO WEB% Código generado del servicio web y ruta local

%TIPOSERVICIOWEB% tipo de servicio web

%SERVICIO WEBSQL% instrucción SQL

%WEBSERVICELOCAL- Camino local


CAMINO%

Las siguientes variables están disponibles para las operaciones del servicio web:
Variable Comentario

%OPERACIÓN WEB- Solo código generado de la operación web


NOMBRE%

%OPERACIÓN WEB% Código generado de la operación, el servicio y la ruta local

%TIPO DE OPERACIÓN Nosotros tipo de operación


WEB
%
%OPERACIÓN WEBSQL instrucción SQL
%

%WEBOPERATIONPAR- Lista de parámetros de operación web


SOY%

Las siguientes variables están disponibles para la seguridad del servicio web:

258 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Variable Comentario

%USUARIO WEB% Usuario de conexión requerido para el servicio web

% WEBCNTSEGURADO% Conexión asegurada

%WEBAUTHREQUERIDO Autorización requerida


%

Las siguientes variables están disponibles para los parámetros del servicio web:
Variable Comentario

%PARARAM WEB% Lista de parámetros web

%NOMBREPARAMENTEWEB% Nombre del parámetro web

%TIPO DE PARAMÁTICO Tipo de parámetro web


WEB%
%WEBPARAMDTTP% Tipo de datos de parámetros web

%WEBPARAMDEFAULT Valor predeterminado del parámetro web


%

Variables para dimensiones


PowerDesigner puede usar variables en la generación y la ingeniería inversa de dimensiones.
Variable Comentario

%DIMENSIÓN% Código de dimensión generado

%DIMNDEF% Definición de dimensión

Variable Comentario

%DIMNATTR% Atributo de dimensión (nivel)

%DIMNOWNERTABL% Propietario de la mesa de nivel

%REGULABLE% Mesa de nivel

%DIMNCOLN% columna de nivel

%DIMNCOLNLIST% Lista de columnas de nivel

Personalización y ampliación de PowerDesigner 259


CAPÍTULO 4: Archivos de definición DBMS

%DIMNHIER% Jerarquía de dimensiones

%DIMNKEY% Lista de columnas clave secundarias

%DIMNKEYLIST% Lista de columnas clave secundarias

%DIMNLEVELLIST% Lista de niveles para la jerarquía

%DIMNATTRHIER% Atributo de jerarquía

%DIMNATTRHIER Primer atributo de la jerarquía


PRIMERO
%
%DIMNATTRHIERLIST% Lista de atributos de jerarquía

%DIMNPARENTLEVEL Nivel principal para la jerarquía


%

%DIMNDEPATR% Atributo dependiente de la dimensión

%DIMNDEPCOLN% columna dependiente

%DIMNDEPCOLNLIST% Lista de columnas dependientes

Variables para objetos extendidos


PowerDesigner puede usar variables en la generación y la ingeniería inversa de objetos
extendidos.
Variable Comentario

%OBJETOEXTENDIDO% Código generado para objeto extendido

%EXTENDED SUBOB- Código generado para el subobjeto extendido


JECT%

%EXTSUBOBJTPARENT Código generado para el padre del subobjeto extendido


%

%EXTSUBOBJTPAREN- Código generado para el propietario del subobjeto extendido


PUEBLERINO%

%EXTSUBOBJTPARENT- Calificador de objeto principal (prefijo de base de datos y prefijo de


CALIFICATORIO% propietario)

Variable Comentario

260 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

%EXTOBJECTDEFN% Cuerpo completo de la definición de objeto ampliado. Contiene la


definición de la colección extendida enumerada en el elemento
DBMS de DefinitionContent.
Variables para ingeniería inversa
PowerDesigner puede utilizar variables durante la ingeniería inversa de objetos.
Variable Comentario

%R% Establecido en TRUE durante la ingeniería inversa

%S% Permitir saltar una palabra. La cadena se analiza para revertir pero no
se genera
%D% Permitir saltar un valor numérico. El valor numérico se analiza para
revertir pero no se genera

%A% Permitir omitir todo el texto. El texto se analiza para revertir pero no se
genera
%USUARIOISODBC% Verdadero si el usuario actual está conectado

%CATALOGAR% Nombre de catálogo que se usará en consultas inversas de conexión de


base de datos en vivo
%ESQUEMA% Variable que representa el inicio de sesión de un usuario y el objeto que
pertenece a este usuario en la base de datos. Debe usar esta variable para
consultas sobre objetos enumerados en los cuadros de diálogo inversos
de la base de datos, porque su propietario aún no está definido. Una vez
que se define el propietario de un objeto, puede usar SCHEMA o OWN-
Urgencias
%TAMAÑO% Tamaño del tipo de datos de columna o dominio. Se usa para revertir la
base de datos en vivo, cuando la longitud no está definida en las tablas
del sistema
%VALOR% Un valor de la lista de valores en una columna o dominio

%PERMISO% Permitir la ingeniería inversa de permisos establecidos en un objeto de


base de datos
%PRIVILEGIO% Permitir la ingeniería inversa de los privilegios establecidos en un
usuario, un grupo o una función
Variables para la generación de bases de datos, disparadores y
procedimientos
PowerDesigner puede utilizar variables en la generación de bases de datos, disparadores y
procedimientos.
Variable Comentario

Personalización y ampliación de PowerDesigner 261


CAPÍTULO 4: Archivos de definición DBMS

%FECHA% Fecha y hora de generación

%USUARIO% Nombre de inicio de sesión del usuario que ejecuta la generación

%PATHSCRIPT% Ruta donde se generará el script de archivo

%NOMBRESCRIPT% Nombre del script de archivo donde se van a escribir las órdenes
SQL
%STARTCMD% Descripción para explicar cómo ejecutar el script generado

Variable Comentario

%ISUPPER% TRUE si la opción de generación de mayúsculas está configurada

%ES BAJO% TRUE si se establece la opción de generación de minúsculas

%NOMBREDBMS% Nombre del DBMS asociado con el modelo generado

%BASE DE DATOS% Código de la base de datos asociada con el modelo generado

%FUENTE DE DATOS% Nombre de la fuente de datos asociada con el script generado

%USE_SP_PKEY% Use la clave principal del procedimiento almacenado para crear


claves principales (específicas de SQL Server)

%USE_SP_FKEY% Use la clave externa del procedimiento almacenado para crear claves
primarias (específicas de SQL Server)

Macros .AKCOLN, .FKCOLN y .PKCOLN


Repita una declaración para cada columna de clave primaria, externa o alternativa en una
tabla.

Sintaxis
.AKCOLN("declaración","prefijo","sufijo","último_sufijo",
"condición")
.FKCOLN("declaración","prefijo","sufijo","último_sufijo")
.PKCOLN("declaración","prefijo","sufijo","último_sufijo")
Argumento Descripción

declaración Declaración a repetir para cada columna

prefijo Prefijo para cada nueva línea

262 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

sufijo Sufijo para cada nueva línea

último sufijo Sufijo para la última línea

condición Código de tecla alternativa (si el argumento de condición se deja vacío, la macro
devuelve una declaración para cada tecla alternativa en la tabla)

Ejemplo
En un disparador para la tabla TITLEAUTHOR:
mensaje .AKCOLN("'%COLUMN% es una columna de clave
alternativa'","", "", "", "AKEY1")
• genera el siguiente script de activación:

mensaje 'TA_ORDER es una columna de clave alternativa',


• mensaje .FKCOLN("'%COLUMN% es una columna de clave

externa'","",",",";")genera el siguiente script de activación:

mensaje 'AU_ID es una columna de clave externa,


TITLE_ISBN es una columna de clave externa;'
• mensaje .PKCOLN("'%COLUMN% es una columna de clave

principal'","",",",";")genera el siguiente script de activación:


mensaje 'AU_ID es una columna de clave principal',
'TITLE_ISBN es una columna de clave principal';

Nota:Para las columnas, estas macros solo aceptan la variable %COLUMN%.

Macro .ALLCOL
Repite una declaración para cada columna en una tabla

Sintaxis
.ALLCOL("declaración","prefijo","sufijo","último_sufijo")

Argumento Descripción

declaración Declaración a repetir para cada columna

prefijo Prefijo para cada nueva línea

sufijo Sufijo para cada nueva línea

último sufijo Sufijo para la última línea

Personalización y ampliación de PowerDesigner 263


CAPÍTULO 4: Archivos de definición DBMS

Ejemplo
En un disparador para la tabla AUTOR, la siguiente macro:
.ALLCOL("%COLUMN% %COLTYPE%","",",",";")

genera el siguiente script de activación:


AU_ID car(12),
AU_LNAME varchar(40),
AU_FNAME varchar(40),
AU_BIOGRAPH largo varchar,
AU_ADVANCE numérico(8,2),
AU_ADDRESS varchar(80),
CIUDAD varchar(20),
ESTADO char(2),
CÓDIGO POSTAL char(5),
AU_TELÉFONO char(12);

.DEFINIR Macro
Define una variable e inicializa su valor

Sintaxis
.DEFINIR "variable" "valor"

Argumento Descripción

variable Nombre de variable (sin signos de %)

valor Valor de variable (puede incluir otra variable rodeada de signos de %)

Ejemplo
En un disparador para la tabla AUTOR, la siguiente macro:
.DEFINE "DISPARADOR" "T_%TABLA%"
mensaje 'Error: Trigger(%TRIGGER%) de la tabla %TABLE%'

genera el siguiente script de activación:


mensaje 'Error: Trigger(T_AUTHOR) de la tabla AUTHOR';

.DEFINIR Macro
Define una variable e inicializa su valor si el valor de prueba no es nulo

Sintaxis
.DEFINIR SI "valor_prueba" "variable" "valor"

Argumento Descripción

264 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

valor_prueba Valor a probar

variable Nombre de variable (sin signos de %)

valor Valor de variable (puede incluir otra variable rodeada de signos de %)

Ejemplo
Por ejemplo, para definir una variable para un tipo de datos predeterminado:
%POR DEFECTO%
.DEFINEIF "%DEFAULT%" "_DEFLT"" "%DEFAULT%" Agregar
%COLUMN% %DATATYPE% %_DEFLT%

.ERROR Macro
Maneja errores.

Sintaxis
.ERROR (error, "errmsg")

Argumento Descripción

error Numero erroneo

errmsg Mensaje de error

Ejemplo
.ERROR(-20001, "El padre no existe, no se puede insertar el hijo")

Macro .FOREACH_CHILD
Repite una declaración para cada referencia de padre a hijo en la tabla actual que cumple una
condición.

Sintaxis
.PARA CADA_NIÑO ("condición")

"declaración"

.ENDFOR

Argumento Descripción

condición Condición de referencia (ver más abajo)

declaración Declaración para repetir

Condición Selecciona

Personalización y ampliación de PowerDesigner 265


CAPÍTULO 4: Archivos de definición DBMS

ACTUALIZAR RESTRINGIR Restringir en la actualización

ACTUALIZAR CASCADA Cascada en la actualización

ACTUALIZAR Establecer nulo en la actualización


CONFIGURACIÓN
ACTUALIZAR SETDEFAULT Establecer predeterminado en la actualización

ELIMINAR RESTRINGIR Restringir al eliminar

ELIMINAR CASCADA Cascada al eliminar

ELIMINAR AJUSTAR Establecer nulo al eliminar

ELIMINAR ESTABLECER Establecer predeterminado en eliminar


POR DEFECTO
Ejemplo
En un disparador para la tabla TITLE, la siguiente macro:
.FOREACH_CHILD("ELIMINAR RESTRINGIDO")
-- No se puede eliminar el padre "%PARENT%" si los hijos aún
existen en
"%NIÑO%"
.ENDFOR

genera el siguiente script de activación:


-- No se puede eliminar el "TÍTULO" principal si aún existen
elementos secundarios en
"ROYSCHED"
-- No se puede eliminar el "TÍTULO" principal si los niños aún
existen en "VENTA"
-- No se puede eliminar el padre "TITLE" si los hijos aún existen
en "TITLEAUTHOR"

Macro .FOREACH_COLUMN
Repite una instrucción para cada columna de la tabla actual que cumple una condición.

Sintaxis
.FOREACH_COLUMN ("condición")

"declaración"

.ENDFOR

Argumento Descripción

266 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

condición Condición de la columna (ver más abajo)

declaración Declaración para repetir

Condición Selecciona

vacío Todas las columnas

PKCOLN Columnas de clave principal

FK COLN Columnas de clave foránea

AKCOLN Columnas clave alternativas

NMFCOL Columnas no modificables (columnas que tienen seleccionado No se puede


modificar como parámetro de verificación)

INCOLN Columnas de activación (columnas de clave principal, columnas de clave


externa y columnas no modificables)

Ejemplo
En un disparador para la tabla TITLE, la siguiente macro:
.FOREACH_COLUMN("NMFCOL")
-- "%COLUMN%" no se puede modificar
.ENDFOR

genera el siguiente script de activación:


-- "TITLE_ISBN" no se puede modificar
-- "PUB_ID" no se puede modificar
Macro .FOREACH_PARENT
Repite una declaración para cada referencia de niño a padre en la tabla actual que cumple
una condición.

Sintaxis
.PARA CADA PADRE ("condición")

"declaración"

.ENDFOR

Argumento Descripción

condición Condición de referencia (ver más abajo)

declaración Declaración para repetir

Personalización y ampliación de PowerDesigner 267


CAPÍTULO 4: Archivos de definición DBMS

Condición Selecciona las referencias definidas con...

vacío Todas las referencias

FKNULL Claves foráneas no obligatorias

FKNOTNULL Claves foráneas obligatorias

FKCANTCHG Claves foráneas no modificables

Ejemplo
En un disparador para la tabla VENTA, la siguiente macro:
.FOREACH_PARENT("FKCANTCHG")
-- No se puede modificar el código principal de "%PARENT%" en el
secundario "%CHILD%"
.ENDFOR

genera el siguiente script de activación:


-- No se puede modificar el código principal de "TIENDA" en el
secundario "VENTA"
-- No se puede modificar el código principal de "TÍTULO" en el
secundario "VENTA"

Macro .INCOLN
Repite una instrucción para cada columna de clave principal, columna de clave externa,
columna de clave alternativa o columna no modificable de una tabla.

Sintaxis
.INCOLN("declaración","prefijo","sufijo","último_sufijo")
Argumento Descripción

declaración Declaración a repetir para cada columna

prefijo Prefijo para cada nueva línea

sufijo Sufijo para cada nueva línea

último sufijo Sufijo para la última línea

Ejemplo
En un disparador para la tabla TITLE, la siguiente macro:
.INCOLN("%COLUMN% %COLTYPE%","",",",";")

genera el siguiente script de activación:

268 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS
CARÁCTER TITLE_ISBN(12),
PUB_ID char(12);

Macro .JOIN
Repite una declaración para el par de columnas en una combinación.

Sintaxis
.JOIN("declaración","prefijo","sufijo","último_sufijo")
Argumento Descripción

declaración Declaración a repetir para cada columna

prefijo Prefijo para cada nueva línea

sufijo Sufijo para cada nueva línea

último sufijo Sufijo para la última línea

Ejemplo
En un disparador para la tabla TITLE, la siguiente macro:
.PARA CADA PADRE()
donde .JOIN("%PK%=%FK%", " y", "", ";")
mensaje 'Referencia %REFR% vincula la tabla %PARENT% a %CHILD%'
.ENDFOR

genera el siguiente script de activación:


mensaje 'Referencia TITLE_PUB vincula la tabla PUBLISHER a TITLE

Nota:Para las columnas, la macro JOIN solo acepta las variables %PK%, %AK% y %FK%.

Macro .NMFCOL
Repite una instrucción para cada columna no modificable de una tabla. Las columnas no
modificables tienen seleccionado No se puede modificar como parámetro de verificación.

Sintaxis
.NMFCOL("declaración","prefijo","sufijo","último_sufijo")
Argumento Descripción

declaración Declaración a repetir para cada columna

prefijo Prefijo para cada nueva línea

Personalización y ampliación de PowerDesigner 269


CAPÍTULO 4: Archivos de definición DBMS

sufijo Sufijo para cada nueva línea

último sufijo Sufijo para la última línea

Ejemplo
En un disparador para la tabla TITLE, la siguiente macro:
.NMFCOL("%COLUMN% %COLTYPE%","",",",";")

genera el siguiente script de activación:


CARÁCTER TITLE_ISBN(12),
PUB_ID char(12);

Macros .CLIENTEXPRESSION y .SERVEREXPRESSION


Utiliza la expresión de cliente y/o servidor de una regla comercial en la plantilla de
desencadenador, el elemento de plantilla, el desencadenador y el script de procedimiento.

Sintaxis
.CLIENTEXPRESSION(código de la regla de negocio)

.SERVEREXPRESSION(código de la regla de negocio)

Ejemplo
La regla de negocio ACTIVITY_DATE_CONTROL tiene la siguiente expresión de servidor:
actividad.fecha de inicio < actividad.fecha de finalización

En un disparador basado en la plantilla AfterDeleteTrigger, escriba la siguiente macro en la


pestaña Definición del disparador:
.SERVEREXPRESSION(ACTIVITY_DATE_CONTROL)

Esto genera el siguiente script de activación:


actividad.begindate < actividad.enddate
end

270 PowerDesigner
CAPÍTULO 4: Archivos de definición DBMS

Macro .SQLXML
Representa una consulta SQL/XML en la definición de un disparador, un procedimiento o
una función.
Utilice una de las siguientes herramientas:
• La herramienta Insertar macro SQL/XML abre un cuadro de diálogo de selección en el
que elige un elemento global de un modelo XML. El modelo XML debe estar abierto en
el espacio de trabajo, asignado a un PDM y tener adjunto el archivo de extensión
SQL/XML. Haga clic en Aceptar en el cuadro de diálogo y la macro SQLXML se muestra
en el código de definición, con el código del modelo XML (opcional) y el código del
elemento global.
• La herramienta Macros, donde selecciona .SQLXML( ) en la lista. La macro SQLXML
se muestra vacía en el código de definición. Debes llenar los paréntesis con el código de
un modelo XML (opcional), seguido de :: y el código de un elemento global. El modelo
XML, del que elige un elemento global, debe estar abierto en el espacio de trabajo,
asignado a un PDM y tener adjunto el archivo de extensión SQL/XML.
Después de la generación, la macro SQLXML se reemplaza por la consulta SQL/XML del
elemento global.

Sintaxis
.SQLXML(código de un modelo XML::código de un elemento global)

Nota: el código de un modelo XML es opcional.


Ejemplo
En un disparador para la tabla EMPLEADO, la siguiente macro:

Personalización y ampliación de PowerDesigner 271


CAPÍTULO 4: Archivos de definición DBMS
.SQLXML(Membresía corporativa::DEPARTAMENTO)

genera el siguiente script de activación:


seleccione XMLELEMENT( NOMBRE "Departamento", XMLATTRIBUTES
(NUM DEP, NOMBRE DEP),
(seleccione XMLAGG ( XMLELEMENT( NOMBRE "Empleado", XMLATTRIBUTES
(NUM DEPN, EMPID, FIRSTNAME,
LASTNAME)) ) de EMPLEADO donde NUM
DEPN = NUM DEPN)) de DEPARTAMENTO

272 PowerDesigner
CAPÍTULO 5 Customización de Generación
con GTL

El lenguaje de plantilla de generación de PowerDesigner (GTL) se utiliza para extraer las


propiedades del objeto del modelo como texto. GTL está escrito en plantillas y archivos
generados definidos bajo metaclases en archivos de extensión y definición de lenguaje.
Impulsa la generación de código para lenguajes de procesos comerciales, orientados a
objetos y XML, y se puede utilizar para definir nuevas generaciones para cualquier modelo.
Cuando inicia una generación a partir de un modelo, PowerDesigner genera un archivo para
cada instancia de cada metaclase para la que haya definido un archivo generado (consulte
Archivos generados (perfil) en la página 85) evaluando las plantillas a las que llama y
resolviendo las variables.
GTL está orientado a objetos, admite herencia y polimorfismo para la reutilización y el
mantenimiento, y proporciona macros para probar variables e iterar a través de colecciones,
etc.
Una plantilla GTL puede contener texto, macros y variables, y puede hacer referencia a:
• atributos del metamodelo, como el nombre de una clase o el tipo de datos de un atributo
• colecciones, como la lista de atributos de una clase o columnas de una tabla
• otros elementos del modelo, como las variables de entorno

Nota:Aunque GTL se puede usar para ampliar la generación en un PDM, la generación


estándar se define principalmente mediante un mecanismo diferente (consulte Generación
de base de datos e ingeniería inversa en la página 120).

Creación de una plantilla y un archivo generado

Las plantillas GTL se usan comúnmente para generar archivos. Si su plantilla se va a utilizar
en la generación, debe estar referenciada en un archivo generado.

1. Abra su definición de idioma o archivo de extensión en el editor de recursos (consulte


Abrir archivos de recursos en el Editor en la página 3).
2. Si es necesario, agregue una metaclase a la categoría Perfil (consulte Metaclases (Perfil)
en la página 33) y luego haga clic con el botón derecho y seleccione Nuevo > Plantilla
(consulte Plantillas (Perfil) en la página 84).

Personalización y ampliación de PowerDesigner 273


CAPÍTULO 5: Personalización de Generación con GTL

3. Ingrese helloWorld como el nombre de la plantilla e ingrese el siguiente código en el


cuadro de texto:
¡Hola Mundo!
Esta plantilla se está generando para el objeto %Name%.

Nota:Recomendamos que nombre sus plantillas usando camelCase sin cabeza


(comenzando con una letra minúscula), para evitar conflictos con los nombres de
propiedad y colección que, por convención, usan CamelCase completo.

4. Vuelva a hacer clic con el botón derecho en la metaclase y seleccione Nuevo > Archivo
generado (consulte Archivos generados (perfil) en la página 85).
5. Ingrese myFile como el nombre del archivo generado e ingrese el siguiente código en el
cuadro de texto para llamar a su plantilla:
%Hola Mundo%
6. Haga clic en Aceptar para guardar los cambios en el archivo de recursos y volver a su
modelo.
7. Cree una instancia de la metaclase en la que definió la plantilla y el archivo generado,
abra su hoja de propiedades y haga clic en la pestaña Vista previa.
8. Seleccione la subpestaña myFile para obtener una vista previa de lo que se generaría para
este objeto.

Extracción de propiedades de objetos

Las propiedades del objeto se referencian como variables y se encierran entre signos de
porcentaje: %variable%. Los nombres de variables distinguen entre mayúsculas y
minúsculas y los nombres de propiedades se definen, por convención, en CamelCase.
Las propiedades se extraen como los siguientes tipos:
• Cadena: devuelve texto.
• Booleano: devuelve verdadero o falso.
• Objeto: devuelve el ID del objeto o nulo.
Ejemplo

Este archivo se genera para %Nombre%, que es un %Color% %Forma%.


Resultado:

Este archivo se genera para MyObject, que es un triángulo rojo.

274 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Las propiedades estándar definidas en el metamodelo público de PowerDesigner (consulte


el Capítulo 8, El metamodelo público de PowerDesigner en la página 343) se referencian
mediante sus nombres públicos, que están escritos en CamelCase. Puede inferir los nombres
públicos de muchas propiedades a partir de sus etiquetas en las hojas de propiedades de los
objetos, pero en caso de duda, haga clic en el botón Menú de la hoja de propiedades en la
parte inferior de la hoja de propiedades y seleccione Buscar en la Ayuda de objetos del
metamodelo para revisar todas las propiedades disponibles para el objeto. .
Los atributos extendidos (consulte Atributos extendidos (perfil) en la página 41) se
referencian por su nombre definido en el editor de recursos.

Nota:Para acceder a un atributo extendido definido en otro archivo de extensión adjunto al


modelo, prefije el nombre con la opción de formato .D. Por ejemplo:
%.D:MiExtAtt%

Acceso a colecciones de subobjetos u objetos


relacionados
Un OOM contiene una colección de clases y las clases contienen colecciones de atributos y
operaciones. Para iterar sobre una colección, use la macro .foreach_item.
Ejemplo

%Nombre% contiene:
.foreach_item(Widgets)
\n\t%Nombre% (%Color% %Forma%)
.siguiente
Resultado:

MiObjeto contiene:
Widget1 (Triángulo rojo)
Widget2 (cuadrado amarillo)
Widget3 (círculo verde)

Las colecciones estándar definidas en el metamodelo público de PowerDesigner (consulte


el Capítulo 8, El metamodelo público de PowerDesigner en la página 343) se referencian
mediante sus nombres públicos, que están escritos en CamelCase. Puede inferir nombres
públicos para muchas colecciones a partir de sus etiquetas en las pestañas de la hoja de
propiedades del objeto, pero en caso de duda, haga clic en el botón Menú de la hoja de

Personalización y ampliación de PowerDesigner 275


CAPÍTULO 5: Personalización de Generación con GTL

propiedades en la parte inferior de la hoja de propiedades y seleccione Buscar en la Ayuda


de objetos del metamodelo para revisar todas las colecciones disponibles para el objeto.
Las colecciones extendidas (consulte Colecciones y composiciones extendidas (perfil) en la
página 48 y Colecciones calculadas (perfil) en la página 50) están referenciadas por su
nombre.
Puede utilizar las siguientes palabras clave para acceder a la información sobre una
colección:
Nombre Descripción

Primero (objeto) Devuelve el primer elemento de la colección.

Esta (booleano) Devuelve True si la colección está vacía o false si contiene uno o más
vacio miembros.

Contar (entero) Devuelve el número de elementos de la colección. Puede usar esta


palabra clave para definir criterios basados en el tamaño de la colección, por
ejemplo, Attributes.Count>=10.

Ejemplo

%Name% está asociado con las reglas comerciales


%AttachedRules.Count%, de las cuales la primera es
%AttachedRules.First.Name%.
Resultado:

myClass está asociado a 3 reglas de negocio,


de las cuales la primera es myRule.

Formateando su salida

Puede cambiar el formato de las variables incorporando opciones de formato en la sintaxis


de las variables. Las nuevas líneas y tabulaciones se especifican utilizando las secuencias de
escape \n y \t respectivamente.
%[[-][x][.[-]y][opciones]:]variable%

Las siguientes opciones de formato de variables están disponibles:


Opción Descripción

276 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

[-][x].[-]y[M] extrae la primeraycaracteres o, para -y, el últimoycaracteres.


SiXse especifica yyes mas bajo queX, luego se agregan espacios en
blanco o ceros a la derecha de los caracteres extraídos para llenar el
ancho hastaX. Para -x, los espacios en blanco o ceros se agregan a la
izquierda y la salida se justifica a la derecha.
Si se agrega la opción M, entonces la primeraXcaracteres de la variable
se descartan y el siguienteyse emiten caracteres.
Por lo tanto, para un objeto llamado abcdefghijklmnopqrstuvwxyz
(con paréntesis presentes simplemente para demostrar el relleno):
Salida de plantilla
(%.3:Nombre%) da (abc)
(%.-3:Nombre%) da (xyz)
(%10.3:Nombre%) da (abc) (%10.-3:Nombre%) da
(xyz)
(%-10.3:Nombre%) da (abc)
(%-10.-3:Nombre%) da (xyz)
(%10.3M:Nombre%) da (jkl)

L[F], U[F] y c Convierte la salida a minúsculas o mayúsculas. Si se especifica F, solo


se convierte el primer carácter. c es equivalente a UF.

q y q Rodea la variable con comillas simples o dobles.

A Elimina la sangría y alinea el texto en el borde izquierdo.

T Recorta los espacios en blanco iniciales y finales de la variable.

H Convierte número a hexadecimal.

Opción Descripción

Personalización y ampliación de PowerDesigner 277


CAPÍTULO 5: Personalización de Generación con GTL

D Devuelve el valor legible por humanos de un atributo utilizado en la


interfaz de PowerDesigner cuando este valor difiere de la
representación interna.
Por ejemplo, el valor del atributo Visibilidad se almacena internamente
como +, pero se muestra como público en la hoja de propiedades. La
plantilla %Visibility% se genera como +, pero %.D:Visibility% se genera
como público.

Nota:Puede acceder a los atributos extendidos definidos en otro archivo


de extensión prefijándolos con la opción .D (verExtracción de
propiedades de objetosen la página 246).

X Escape de los caracteres prohibidos de XML.

mi [Obsoleto: use el ! operador de evaluación de potencia en su lugar,


consulteOperadores GTLen la página 252].

Ejemplos

Este archivo se genera para %.UQ:Name%. Tiene la forma de %.L:Color%


%.L:Forma%.

Este archivo se genera para "MYGADGET". Tiene la forma de un


triángulo rojo.

La siguiente plantilla se aplica al objeto abcdefghijklmnopqrstuvwxyz

%12.3QMFU:Nombre%
Resultado:

"Lmn"

Control de saltos de línea en cadenas de cabeza y cola


Las cadenas de encabezado y cola en un bloque macro solo se generan cuando es necesario.
Si el bloque no devuelve nada, las cadenas de encabezado y cola no aparecen, lo que puede
ayudar a controlar la creación de nuevas líneas.
Ejemplo

278 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

El texto y las líneas nuevas en el encabezado y el final de cada bucle .foreach_item solo se imprimen
si la colección no está vacía. Cuando esta plantilla se aplica a una clase con atributos pero sin
operaciones, el texto // Operaciones y las nuevas líneas especificadas antes y después de la lista de
operaciones no se imprimirán:

código de clase%" {
.foreach_item(Atributos, // Atributos\n,\n\n)
%Tipo de datos% %Código%
.if (%ValorInicial%)
= %ValorInicial%
.terminara si
.siguiente(\n)
.foreach_item(Operaciones, // Operaciones\n,\n\n)
%ReturnType% %Code%(...)
.siguiente(\n)
<Fuente>
}
Resultado:

clase "C1" {// Atributos


int a1 = 10 int a2 int
a3 = 5 int a4

<Fuente>
}

Nota:Para imprimir un espacio en blanco entre la llave y la cadena // Atributos, debe encerrar la
cadena principal entre comillas dobles:
.foreach_item(Atributos," // Atributos\n",\n)

Bloques Condicionales

Coloque el texto que contiene una variable entre corchetes para que aparezca solo si la
variable se resuelve en un valor no nulo.
También puede usar un formulario similar a las expresiones ternarias de C y Java para
imprimir una cadena si la variable es verdadera o no es nula:
[variable ? si no es nulo]
Opcionalmente, puede incluir una cadena para imprimir si la variable se evalúa como falsa,
nula o la cadena vacía:
[variable ? si no es nulo: si es nulo]
Ejemplos

Personalización y ampliación de PowerDesigner 279


CAPÍTULO 5: Personalización de Generación con GTL

Atributo %Código%[ = %ValorInicial%];


Resultado:

Atributo A1 =0;
Atributo A2 =100;
Atributo A3;
Atributo A4 =10;

La clase %Name% es [%Abstract%?Abstract:Concrete].


Resultado si se selecciona la propiedad Resumen:

La clase myClass es abstracta.


Resultado si no se selecciona la propiedad Resumen:

La clase myClass es Concrete.

Acceso a variables globales

Puede insertar información como su nombre de usuario y la fecha actual con variables globales.
Nombre Descripción

%ModeloActivo% (objeto) Devuelve el UID del modelo. Utilice %ActiveModel.Name%


para obtener el nombre del modelo.

%OpcionesGen% (struct) Devuelve las opciones de generación del modelo.

%Modo de vista (booleano) Devuelve verdadero en la pestaña Vista previa, falso cuando
previa% se genera en un archivo.

%Fecha actual% (cadena) Devuelve la fecha y la hora del sistema actual formateadas
usando la configuración local.

%Usuario (cadena) Devuelve el inicio de sesión del usuario actual.


actual%
%NuevoUUID% (cadena) Devuelve un nuevo identificador único universal.

Ejemplo

280 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Este archivo fue generado a partir de %ActiveModel.Name% por


%CurrentUser% en %CurrentDate%.
Resultado:

Este archivo fue generado a partir de My Model por jsmith el


martes 6 de noviembre de 2012 a las 16:06:41.

Operadores GTL

GTL admite operadores aritméticos y lógicos estándar junto con algunos operadores de
plantilla avanzados.
Se admiten los siguientes operadores aritméticos y lógicos estándar, donde x e y pueden ser
números o plantillas que se resuelven en números:
Operador Descripción

= Operador de asignación.

== y != Operadores igual a y no igual a.

> y < Operadores mayor que y menor que.

>= y <= Operadores mayor o igual que y menor o igual que.

&& y || Operadores lógicos AND y OR lógicos.

%+(x,y)% Operador de suma.

%-(x,y)% Operador de sustracción.

%*(x,y)% Operador de multiplicación.

%/(x,y)% Operador de división.

%&(x,y)% Operador y campo de bits lógico

En este ejemplo, la plantilla de la columna de la izquierda produce el resultado de la derecha:


Plantilla Resultados

Personalización y ampliación de PowerDesigner 281


CAPÍTULO 5: Personalización de Generación con GTL

Número base= %Número% Número básico= 4


Número+1= %+(Número,1)% Número+1= 5
Número-1= %-(Número,1)% Número-1= 3
Número*2= %*(Número,2)% Número*2= 8
Número/2= %/(Número,2)% Número/2= 2
Número&1= %&(Número,1)% Número&1= 0

También se admiten los siguientes operadores de plantilla avanzados:


Operador Descripción

* Operador de desreferenciación - Corresponde a una evaluación doble, devolviendo


una plantilla en lugar de texto, utilizando la sintaxis:

%*plantilla [(P1,P2...)]%
Para obtener información sobre los parámetros de la plantilla, consultePasar
parámetros a una plantillaen la página 260.
En el siguiente ejemplo, una variable local se devuelve normalmente y en forma
desreferenciada:

.set_value(C, Código)
%C%
%*C%
Resultado:

Código
%Código%

! Operador de evaluación de potencia - Evalúa los resultados de la evaluación de la


variable como plantilla.
En el siguiente ejemplo, una variable local se devuelve normalmente y en una
forma evaluada por potencia:

.set_value(C, %%MiAtributo%%)
%C%
%!C%
Resultado:

%MiAtributo%
Rojo

282 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

El ! El operador puede aplicarse cualquier número de veces. Por ejemplo:

%!!t%

Esto genera los resultados de la evaluación de la evaluación de la evaluación de la


plantilla t.

Operador Descripción

?
Operador de existencia: comprueba si una plantilla, una variable local o una
propiedad está presente y devuelve falso si no lo está.
Por ejemplo:
.set_value (miVariable, 20, nuevo)
%miVariable?%
.unset (miVariable)
%miVariable?%

Resultado:

verdadero
Falso

+ Operador de visibilidad: prueba si una propiedad de objeto es visible en la interfaz


y devuelve falso si no lo es.

Por ejemplo, para probar si el campo Tipo se muestra en la pestaña General de


una hoja de propiedades de la base de datos en un DMM (lo que significa que un
archivo de extensión del servidor de replicación está adjunto al modelo), ingrese
lo siguiente:
%Base de datos.Tipo+%

Personalización y ampliación de PowerDesigner 283


CAPÍTULO 5: Personalización de Generación con GTL

Alcance de la traducción

El alcance inicial de una plantilla es siempre la metaclase en la que se define. Todos los
atributos, colecciones y plantillas estándar y extendidos definidos en la metaclase del objeto
activo y sus padres son visibles, pero solo un objeto está activo en un momento dado.
Ejemplos

La siguiente plantilla se aplica a un paquete P1, que contiene una clase C1, que contiene las
operaciones O1 y O2, cada una de las cuales contiene los parámetros P1 y P2. El alcance cambia, lo
que afecta el valor de la variable %Name%, a medida que se recorre cada colección. La palabra
clave Outer se utiliza para volver temporalmente a los ámbitos anteriores:

%Nombre%
.foreach_item(Clases)
\n\t*%Nombre% en %Externo.Nombre%
.foreach_item(Operaciones)
\n\t*%Nombre% en %Externo.Nombre% en %Externo.Nombre.Externo%
.foreach_item(Parámetros)
\n\t\t*%Name% en %Outer.Name% en %Outer.Outer.Name% en
%exterior.exterior.exterior.nombre%
.próximo
.próximo
.próximo
Resultado:

P1
*C1 en P1
*O1 en C1 en P1
*P1 en O1 en C1 en P1
*P2 en O1 en C1 en P1
*O2 en C1 en P1
*P1 en O2 en C1 en P1
*P2 en O2 en C1 en P1

El alcance externo se restaura cuando deja un bloque .foreach_item. Los ámbitos anidados forman
una jerarquía que se puede ver como un árbol, siendo el ámbito de nivel superior la raíz. Use Parent
en lugar de Outer para subir por encima del alcance del objeto original. Por ejemplo, no se generará
nada si se aplica la siguiente plantilla al parámetro P1:

%Name% en %Outer.Name% en %Outer.Outer.Name%


Sin embargo, esta plantilla producirá resultados:

%Nombre% en %Parent.Name% en %Parent.Parent.Name%

284 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Resultado:

P1 en O1 en C1

Traducción de atajos

Los accesos directos se desreferencian durante la traducción, de modo que el alcance del
objeto de destino reemplaza el alcance del acceso directo. Esto es diferente de VB Script,
donde la traducción de atajos recupera el atajo en sí. Puede utilizar la variable %IsShortcut%
para comprobar si un objeto es un acceso directo y la palabra clave Shortcut para acceder a
las propiedades del propio acceso directo.
Plantilla

En este ejemplo, la plantilla se aplica a un paquete OOM P1 que contiene dos clases y dos accesos
directos a clases en P2:

.foreach_item(Clases)
\n*Clase %Código% [%IsShortcut% ? Del paquete %Package.Name% : Local
Objeto]
.próximo
Resultado:

*Objeto Local Clase C1


*Objeto Local Clase C2
*Clase C3 Del paquete P2
*Clase C4 Del paquete P2

Nota:Si su modelo contiene accesos directos a objetos en otro modelo que no está abierto,
un cuadro de diálogo lo invita a abrir el modelo de destino. Puede usar la macro
.set_interactive_mode para cambiar este comportamiento (consulte Macro
.set_interactive_mode en la página 278).

Secuencias de escape

GTL admite varias secuencias de escape para simplificar el diseño de sus plantillas y
archivos generados, y para hacer accesibles los caracteres reservados.

Personalización y ampliación de PowerDesigner 285


CAPÍTULO 5: Personalización de Generación con GTL

Las siguientes secuencias de escape se pueden usar dentro de las plantillas:


Secuencia de Descripción
escape
\norte Nueva línea. Para ver ejemplos del uso de nuevas líneas en
macrobloques, consulteControl de saltos de línea en cadenas de
cabeza y colaen la página 250.
\t Pestaña

\\ barra invertida

\ al final de la línea Carácter de continuación (ignora la nueva línea)

. al principio de la línea Comentario. Ignora la línea.

Secuencia de Descripción
escape
.. al principio de la línea Carácter de punto (para generar una macro).

%% Carácter de porcentaje.

Plantillas de llamadas

Puede llamar a una plantilla desde un archivo generado o desde otra plantilla ingresando su
nombre entre signos de porcentaje. Las propiedades de objeto, las colecciones y las variables
locales y globales se llaman de la misma manera. En el momento de la generación, una
llamada de plantilla se reemplaza por el contenido de la plantilla, que luego se resuelve en
su valor textual final.
Ejemplos:

• %Name%: llama a la propiedad Name del objeto


• %myTemplate%: llama a la plantilla %myTemplate%
• %CurrentDate%: llama a la variable global %CurrentDate%
(consulte Acceso a variables globales en la página 251)
Dividir plantillas en unidades concisas y llamarlas en el momento de la generación ayuda
con la legibilidad y la reutilización. Por ejemplo, puede definir una condición de uso común
en una plantilla y hacer referencia a ella en muchas otras plantillas:
Ejemplo

La plantilla %isInner% se define como:

.bool (%ContainerClassifier%!=null)

286 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

La plantilla %QualifiedCode% llama a la plantilla %isInner% para probar si la clase es una clase
interna:

.if (%isInner%)
%ContainerClassifier.QualifiedCode%::%Code%
.demás
%Código%
.terminara si
Resultado:

C2::C1
La plantilla %QualifiedCode% se aplica a la clase C1, que es una clase interna de C2.

Herencia y polimorfismo
Las plantillas se definen en una metaclase particular en un archivo o extensión de definición
de lenguaje y son heredadas y están disponibles para los hijos de la metaclase. Por ejemplo,
una plantilla definida en la metaclase Classifier está disponible para plantillas o archivos
generados definidos en las metaclases Class e Interface.
GTL admite los siguientes conceptos OO como parte de la herencia:
• Polimorfismo: la elección de la plantilla a evaluar se realiza en el momento de la
traducción. Una plantilla definida en un clasificador puede acceder a plantillas
definidas en sus hijos (clase, interfaz). En el siguiente ejemplo, el contenido de
%definition% depende de si se está procesando una clase o una interfaz:

• Anulación de plantilla: una plantilla definida en una metaclase dada puede ser
anulada por una plantilla del mismo nombre definida en una clase secundaria. En el
siguiente ejemplo, la plantilla definida en la metaclase Classifier se reemplaza por la
definida en la metaclase Class:

Personalización y ampliación de PowerDesigner 287


CAPÍTULO 5: Personalización de Generación con GTL

Puede ver el elemento principal anulado haciendo clic con el botón derecho en la plantilla
secundaria y seleccionando Ir a superdefinición. Puede especificar el uso de la plantilla
principal anteponiendo la llamada de plantilla con el operador calificador ::. Por ejemplo:
%Clasificador::isAbstract%.
• Sobrecarga de plantillas: puede sobrecargar las definiciones de su plantilla y probar
diferentes condiciones. Las plantillas también se pueden definir según criterios (ver
Criterios (Perfil) en la página 40) o estereotipos (ver Estereotipos (Perfil) en la página
37), y las condiciones correspondientes se combinan. En el momento de la
traducción, se evalúa cada condición y se aplica la plantilla adecuada (o, en caso de
que no coincida, la plantilla predeterminada). Por ejemplo:

Puede definir la misma plantilla varias veces en la jerarquía de un archivo de definición de


idioma y archivos de extensiones, y PowerDesigner lo resolverá mediante reglas de herencia.
Por ejemplo, el archivo de definición de idioma myLang OOM y el archivo de extensión
myExtension contienen cada uno una plantilla %t% definida en cada una de las metaclases
Classifier y Class:
Archivo de definición de idioma Archivo de extensión myExtension
myLang
• Clasificador:
• Clasificador:
• archivo generado
• archivo generado myFile
myOtherFile
• plantilla %t%
• plantilla %t%
• Clase:
• Clase:
• plantilla %t%
• plantilla %t%
Las metaclases Class e Interface heredan de la metaclase Classifier, y cada una generará un
myFile y un myOtherFile.

Las siguientes llamadas de plantilla son posibles en myLang/Classifier/myFile (que no puede


acceder a las plantillas en myExtension):

288 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Llamada de plantilla en myFile Plantilla llamada

%t% o miLang/Clase/t
%myLang::t%

%Clasificador::t% o myLang/Clasificador/t
%myLang::Clasificador::t%

Las siguientes llamadas de plantilla son posibles en myExtension/Classifier/myOtherFile


(que puede acceder tanto a sus propias plantillas como a las de myLang):
Llamada de plantilla en myOtherFile Plantilla llamada

%t% o miExtensión/Clase/t
%miExtensión::t%

%Clasificador::t% o miExtensión/Clasificador/t
%miExtensión::Clasificador::t%

%miIdioma::t% o miLang/Clase/t
%miLang::Clase::t%

%myLang::Clasificador::t% myLang/Clasificador/t

Nota:Para que un archivo de extensión llegue a las plantillas definidas en un archivo de


definición de idioma, se debe seleccionar la propiedad Complementar la generación de
idioma en la extensión (consulte Propiedades del archivo de extensión en la página 14).
Pasar parámetros a una plantilla
Puede pasar parámetros a una plantilla, usando la sintaxis:%t(p1,p2...)%.
Los valores de los parámetros no pueden contener caracteres % (no puede pasar una plantilla)
y están separados por comas. Se recuperan en la plantilla usando variables locales con los
nombres
@1, @2, ....
Ejemplos

La siguiente plantilla llama:

%myTemplate(bien,soleado,24,12)%

llama a %myTemplate%:

Personalización y ampliación de PowerDesigner 289


CAPÍTULO 5: Personalización de Generación con GTL

El clima hoy es %@1% y %@2%, con una máxima de %@3% y una mínima
de %@4%.
Resultado:

El tiempo hoy es bueno y soleado, con una máxima de 24 y una


mínima de 12.

290 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Ejemplos

La plantilla %Attributes% se define de la siguiente manera:

.foreach_item(Atributos)
.if (%Visibilidad% == %@1%)
%Tipo de datos% %Código%
.terminara si
.siguiente(\n)
La plantilla %AttributeList% llama a %Attributes% tres veces, pasando un valor de visibilidad
diferente cada vez para recorrer solo los atributos que tienen esta visibilidad:

Atributos de clase "% Code%":


// Público
%atributos(+)%

// Protegido
%atributos(#)%

// Privado
%atributos(-)%
Resultado:

Atributos de clase "C1":


// Int
public alto
int ancho

// Forma int
protegida

// Costo
int privado
precio int

Plantillas recursivas
Una plantilla puede llamarse a sí misma, pero dicha plantilla debe contener algún tipo de
criterio o cambio de alcance para evitar un bucle infinito.
Ejemplo

La clase C1 es interna a la clase C2, que a su vez es interna a C3. La plantilla %topContainerCode
% prueba si el clasificador actual es interno a otro y, de ser así, se llama a sí mismo en el clasificador
de contenedores para realizar la misma prueba hasta que llega a un clasificador que no es interno,
momento en el que imprime el código de la parte superior. envase:

Personalización y ampliación de PowerDesigner 291


CAPÍTULO 5: Personalización de Generación con GTL

.if (%isInner%)
%ContainerClassifier.topContainerCode%
.demás
%Código%
.terminara si
Resultado:

C3

Extensiones de metamodelo específicas de GTL

Se proporcionan varios atributos y colecciones calculados como extensiones específicas de


GTL para el metamodelo.
Los siguientes atributos calculados son extensiones de metamodelo específicas de GTL:
metaclase Atributos específicos de GTL

PdCommon.BaseObject
• isSelected (booleano): verdadero si el objeto es parte de la
selección en el cuadro de diálogo de generación
• isShorctut (booleano): verdadero si se accedió al objeto
eliminando la referencia de un acceso directo

PdCommon.BaseModel
• GenOptions (struct): da acceso a las opciones de generación
definidas por el usuario

PdOOM.*
• ActualComment (cadena): comentario limpio (con /**, /*, */ y //
eliminados)

PdOOM.Asociación
• RoleAMinMultiplicity (cadena)
• RoleAMaxMultiplicity (cadena)
• RoleBMinMultiplicity (cadena)
• RoleBMaxMultiplicity (cadena)

metaclase Atributos específicos de GTL

292 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

PdOOM.Atributo
• MinMultiplicity (cadena)
• MaxMultiplicity (cadena)
• Anulado (booleano)
• Prefijo de modificador de tipo de datos (cadena)
• DataTypeModifierSuffix (cadena)
• @<etiqueta> [específico de Java] (cadena) -
Javadoc@<etiqueta> atributo extendido con formato adicional

PdOOM.Clase
• MinCardinalidad (cadena)
• MaxCardinalidad (cadena)
• SimpleTypeAttribute [específico de XML]
• @<etiqueta> [específico de Java] (cadena) -
Javadoc@<etiqueta> atributo extendido con formato adicional

PdOOM.Interfaz
• @<etiqueta> [específico de Java] (cadena) -
Javadoc@<etiqueta> atributo extendido con formato adicional

PdOOM.Operación
• DeclaringInterface (objeto)
• GetSetAttribute (objeto)
• Anulado (booleano)
• ReturnTypeModifierPrefix (cadena)
• ReturnTypeModifierSuffix (cadena)
• @<tag> [específico de Java] (cadena) - Javadoc@<tag>
atributo extendido con formato adicional (especialmente para
@throws, @exception, @params)

PdOOM.Parámetro
• Prefijo de modificador de tipo de datos (cadena)
• DataTypeModifierSuffix (cadena)

Las siguientes colecciones calculadas son extensiones de metamodelo específicas de GTL:


Nombre de la metaclase Nombre de la colección

PdCommon.BaseModel Lista de <metaclase-nombre> generada: colección de todos los


objetos de tipo <metaclase-nombre> que forman parte de la
selección en el cuadro de diálogo de generación

PdComún. Enlaces de origen


BaseClassifierMapping

PdComún. Enlaces de origen


BaseAssociationMapping

Personalización y ampliación de PowerDesigner 293


CAPÍTULO 5: Personalización de Generación con GTL

Referencia de macros GTL

GTL admite macros para expresar la lógica de la plantilla y hacer un bucle en las colecciones
de objetos. Las palabras clave de macro tienen el prefijo . (punto), que debe ser el primer
carácter que no esté en blanco en la línea, y debe respetar el uso de saltos de línea en la
sintaxis de la macro.

Nota:Los parámetros de macro se pueden delimitar con comillas dobles, y esto es necesario
si el valor del parámetro incluye comas, llaves, espacios en blanco al principio o al final. La
secuencia de escape para comillas dobles dentro de un valor de parámetro es \". Cuando los
parámetros de macro especifican que un parámetro es de tipo plantilla simple, esto significa
que puede contener texto, variables y bloques condicionales, pero no macros. Parámetros de
tipo complejo la plantilla también puede incluir macros.

Están disponibles las siguientes macros:


• Macros condicionales y de bucle / iterativas:
• .if Macro en la página 275: evalúa las condiciones.
• Macro .foreach_item en la página 271: itera en colecciones de objetos.
• Macro .foreach_line en la página 273: itera en las líneas de un bloque de texto de
varias líneas.
• Macro .foreach_part en la página 274: itera en partes de una cadena.
• .break Macro en la página 266: rompe un bucle.
• Macros de formato y manipulación de cadenas:
• Macros .lowercase y .uppercase en la página 277: cambia las mayúsculas y
minúsculas de un bloque de texto.
• Macros .convert_name y .convert_code en la página 267: convierte códigos en
nombres o nombres en códigos.
• Macros .delete y .replace en la página 268: realice operaciones en subcadenas.
• Macro .unique en la página 281: filtra las líneas redundantes de un bloque de
texto.
• Macro .block en la página 265: agrega un encabezado y un pie de página a un
bloque de texto.
• Macros de comando de generación: para usar al escribir GTL en el contexto de la
ejecución de un comando de generación:
• Macro .vbscript en la página 281: incruste código de secuencia de comandos VB
dentro de una plantilla.
• Macro .execute_vbscript en la página 270: inicie vbscripts.
• Macro .execute_command en la página 269: inicia los ejecutables.
• Macro .abort_command en la página 265: detener la ejecución del comando.

294 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

• Macros .change_dir y .create_path en la página 266: cambie el directorio o cree


una ruta.
• Macro .log en la página 277: escribir mensajes de registro.
• Macros varias:
• Macros .set_object, .set_value y .unset en la página 279: cree objetos o variables
locales.
• .comment y .// Macro en la página 267: inserta un comentario en una plantilla.
• Macros .object y .collection en la página 278: devuelve una colección de objetos
según el alcance y la condición especificados.
• Macros .object y .collection en la página 278: devuelva un objeto o una colección
en función del ámbito y la condición especificados.
• Macro .bool en la página 266: evalúa una condición.
• Macro .set_interactive_mode en la página 278: define si la ejecución de GTL debe
interactuar con el usuario.
• Macros .error y .warning en la página 269

Macro .abort_command
Esta macro detiene un comando de generación.
Ejemplo

.si %_JAVAC%
.execute_command (%_JAVAC%,%Nombre de archivo%)
.demás
.abortar_comando
.terminara si

Para obtener información sobre los comandos de generación, consulte Categoría de


generación en la página 112.

.bloque macro
Esta macro envuelve un bloque de salida con un encabezado y/o un pie de página, si la salida
no está vacía.
.bloquear [(cabeza)]
entrada de bloque
.endblock[(cola)]

Están disponibles los siguientes parámetros:


Parámetro Descripción

Personalización y ampliación de PowerDesigner 295


CAPÍTULO 5: Personalización de Generación con GTL

cabeza [opcional] Generado solo sientrada de bloqueno está vacío.


Tipo: Plantilla sencilla

entrada de Especifica el texto que se va a generar entre la cabeza y la cola.


bloque
Tipo: Plantilla compleja

cola [opcional] Generado solo sientrada de bloqueno está vacío.


Tipo: Plantilla sencilla

Ejemplo Resulta
do
.bloque (<b>) <b>¡Mi comentario está en >
%Comentario negrita!<b
.bloque
% final (</b>) Nota:El <b>las etiquetas no se generarían si no
se ingresaron comentarios para un objeto en particular.

Macro .bool
Esta macro devuelve verdadero o falso según el valor de la condición especificada.
.bool (condición)

Están disponibles los siguientes parámetros:


Parámetro Descripción

condición Especifica la condición que se va a evaluar.


Tipo: Condición

Ejemplo Resultado

.bool(%.3:Código%= =ejb) verdadero

.romper macro
Esta macro se puede usar para salir de los bucles .foreach.
Ejemplo

296 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

.set_value(_hasMain, falso, nuevo)


.foreach_item(Operaciones)
.if (%Código% == principal)
.set_value(_hasMain, verdadero)
.romper
.terminara si
.próximo
%_hasPrincipal%

Macros .change_dir y .create_path


Estas macros cambian el directorio actual o crean la ruta especificada como parte de un
comando de generación.
.cambiar_dir (camino)

.create_path (camino)

Están disponibles los siguientes parámetros:


Parámetro Descripción

camino Especifica el directorio al que ir o crear.


Tipo: plantilla simple (se ignoran las secuencias de escape)

Ejemplo Resultado

.cambiar_dir(C:\temp) Cambia la ruta para escribir a C:\temp.

.create_path(C:\temp\mydir) Crea el nuevo directorio C:\temp\mydir.

Para obtener información sobre los comandos de generación, consulte Categoría de


generación en la página 112.

.comentario y .// Macro


Estas macros se utilizan para insertar comentarios en una plantilla. Las líneas que
comienzan con .// o .comment se ignoran durante la generación.
Ejemplo

Personalización y ampliación de PowerDesigner 297


CAPÍTULO 5: Personalización de Generación con GTL

.// Esto es un comentario


.comentario Esto también es un comentario

Macros .convert_name y .convert_code


Estas macros convierten el nombre del objeto en su código (o viceversa).
Utilice la siguiente sintaxis para convertir un nombre en un código:
.convertir_nombre
(expresión[,"separador"[,"delimitadores"],caso])

Utilice la siguiente sintaxis para convertir un código en un nombre:


.convertir_código (expresión[,"separador"[,"delimitadores"]])

Están disponibles los siguientes parámetros:


Parámetro Descripción

expresión Especifica el texto que se va a convertir. Para .convert_name, generalmente es la


variable %Name % y puede incluir un sufijo o prefijo.
Tipo: Plantilla sencilla

separador [opcional] Carácter generado cada vez que se declara un separador


endelimitadoresse encuentra en el código. Por ejemplo, "_" (guión bajo).
Teclee el texto

Parámetro Descripción

delimitadores [opcional] Especifica los diferentes delimitadores que probablemente existan en


el código o nombre de entrada, y que serán reemplazados porseparador. Puede
declarar varios separadores, por ejemplo "_ " y "-"
Teclee el texto

caso [opcional solo para .convert_name] Especifica el caso en el que convertir el


código. Puedes elegir entre:

• firstLowerWord - Primera palabra en


minúsculas, primeras letras de las siguientes
palabras en mayúsculas
• FirstUpperChar: primer carácter de todas las
palabras en mayúsculas
• lower_case - Todas las palabras en minúsculas
y separadas por un guión bajo

298 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

• UPPER_CASE: todas las palabras en mayúsculas y


separadas por un guión bajo

.eliminar y .reemplazar macros


Estas macros eliminan o reemplazan todas las instancias de la cadena dada en la
entrada de texto.
.borrar (cadena)entrada
de bloque.enddelete

.reemplazar
(cadena,cadena nueva)entrada
de bloque.endreplace

Están disponibles los siguientes parámetros:


Parámetro Descripción

cadena Especifica la cadena que se va a eliminar.


Teclee el texto

cadena nueva [.reemplazar solo] Especifica la cadena con la que reemplazarcadena.


Teclee el texto

entrada de Especifica el texto que se analizará para las instancias delcadenapara


bloque eliminar o reemplazar.
Tipo: Plantilla compleja
Ejemplos Resulta
do
.delete(Obtener Nombre del
ObtenerNombreDeCliente
) cliente
.enddelete

Personalización y ampliación de PowerDesigner 299


CAPÍTULO 5: Personalización de Generación con GTL

Ejemplos Resulta
do
.replace(Obtener,Estab EstablecerNombreDeC
ObtenerNombreDeClie
lecer) liente
.endreplace
nte

.reemplazar(" ", _) Nombre del


Nombre del cliente
.endreplace
cliente

Macros .error y .warning


Estas macros se utilizan para generar errores y advertencias durante la traducción. Los
errores detienen la generación, mientras que las advertencias son puramente informativas y
pueden activarse cuando se detecta una inconsistencia al aplicar la plantilla en un objeto en
particular. Los mensajes se muestran tanto en la pestaña Vista previa del objeto como en la
ventana Salida.
.mensaje de error
.mensaje de advertencia

Están disponibles los siguientes parámetros:


Parámetro Descripción

mensaje Especifica el texto del mensaje.


Tipo: Plantilla sencilla

Ejemplo

.error no se proporcionó un valor inicial para el atributo %Code%


de la clase %Parent.Code%

Macro .execute_command
Esta macro lanza ejecutables como parte de un comando de generación. Si hay una falla por
cualquier motivo (ejecutable no encontrado o salida enviada a stderr), entonces se detiene la
ejecución del comando.
.Ejecutar comando (cmd[,argumentos[,modo]])

Están disponibles los siguientes parámetros:


Parámetro Descripción

300 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

cmd Especifica la ruta al ejecutable.


Tipo: plantilla simple (se ignoran las secuencias de escape)

Parámetro Descripción

argumentos [opcional] Especifica argumentos para el ejecutable.


Tipo: plantilla simple (se ignoran las secuencias de escape)

modo [opcional] Especifica el modo de ejecución. Puede elegir entre:

• cmd_ShellExecute: se ejecuta como un proceso


independiente
• cmd_PipeOutput: bloquea hasta completarse y
muestra la salida ejecutable en la ventana
de salida
Ejemplo

.execute_command(bloc de notas, archivo1.txt, cmd_ShellExecute)

Para obtener información sobre los comandos de generación, consulte Categoría de


generación en la página 112.

Macro .execute_vbscript
Esta macro se usa para ejecutar un script de VB especificado en un archivo separado como
parte de un comando de generación.
.ejecutar_vbscript (archivo vbs[,script-parámetro])

Están disponibles los siguientes parámetros:


Parámetro Descripción

archivo vbs Especifica la ruta al script de VB.


Tipo: plantilla simple (se ignoran las secuencias de escape)

script- [opcional] Pasado al script a través de la propiedad global


parámetro ScriptInputParameters. Tipo: Plantilla sencilla

Ejemplo

Personalización y ampliación de PowerDesigner 301


CAPÍTULO 5: Personalización de Generación con GTL

.execute_vbscript(C:\muestras\vbs\login.vbs, %nombre de usuario%)


El resultado del script está disponible en la propiedad global ScriptResult (ver manipulando
Modelos, colecciones y objetos (secuencias de comandos)en la página 312). Se puede acceder al
objeto activo del ámbito de traducción actual a través de la colección ActiveSelection como
ActiveSelection.Item(0).

Para obtener información sobre los comandos de generación, consulte Categoría de


generación en la página 112.
Macro .foreach_item
Esta macro itera sobre una colección de subobjetos u objetos relacionados.
.foreach_item (recopilación[,cabeza[,cola[,filtrar[,orden]]]])producción
.próximo [(separador)]

Están disponibles los siguientes parámetros:


Parámetro Descripción

recopilación Especifica la colección sobre la que iterar.


Tipo: Plantilla sencilla

cabeza [opcional] Especifica el texto que se generará antes de la salida, a menos que la
colección esté vacía. Teclee el texto

cola [opcional] Especifica el texto que se generará después de la salida, a menos que la
colección esté vacía.
Teclee el texto
filtrar [opcional] Especifica un filtro para aplicar a la colección antes de la iteración.
Tipo: Condición simple

orden [opcional] Especifica el orden en el que se iterará la colección en el formato:

%Artículo 1.propiedad% <= %Artículo2.propiedad%


Cuando la comparación se evalúa como verdadera, %Item1% se colocará después
de %Item2%. De forma predeterminada, la colección está ordenada alfabéticamente
por nombre.
Tipo: Condición simple
producción Especifica el texto de salida para cada elemento de la colección.
Tipo: Plantilla compleja

302 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

separador [opcional] Especifica el texto que se generará entre cada instancia deproducción.
Teclee el texto

Nota:Si los valores de los parámetros contienen comas, llaves o espacios en blanco al
principio o al final, se deben delimitar con comillas dobles. Para escapar de las comillas
dobles dentro de un valor de parámetro, utilice \".

Ejemplos

lista sencilla:

.foreach_item(Atributos)
*%Código% (%TipoDeDatos%)[ = %ValorInicial%];
.siguiente(\n)
Resultado:

*disponible (booleano) = verdadero;


*costoreal (int);
*coste base (int);
*color (Cadena);
*altura (int) = 10;
*ancho (int) = 5;
*nombre (int);

Con cabeza y cola:

.foreach_item(Atributos,Atributos:\n,\n\nFin de la lista de
atributos)
*%Código% (%TipoDeDatos%)[ = %ValorInicial%];
.siguiente(\n)
Resultado:

Atributos:
*disponible (booleano) = verdadero;
*costoreal (int);
*coste base (int);
*color (Cadena);
*altura (int) = 10;
*ancho (int) = 5;
*nombre (int);

Fin de la lista de atributos

Personalización y ampliación de PowerDesigner 303


CAPÍTULO 5: Personalización de Generación con GTL

Con filtro:

.foreach_item(Atributos,,,%.1:Código%==a)
*%Código% (%TipoDeDatos%)[ = %ValorInicial%];
.siguiente(\n)
Resultado:

*disponible (booleano) = verdadero;


*costoreal (int);

Ejemplos

Con orden alfabético inverso:

.foreach_item(Atributos,,,, %Item1.Code% <= %Item2.Code% )


*%Código% (%TipoDeDatos%)[ = %ValorInicial%];
.siguiente(\n)
Resultado:

*ancho (int) = 5;
*nombre (int);
*altura (int) = 10;
*color (Cadena);
*coste base (int);
*disponible (booleano) = verdadero;
*costoreal (int);

Macro .foreach_line
Esta macro itera sobre las líneas del bloque de texto de varias líneas utilizando la variable
local especial %CurrentLine%.
.foreach_line (aporte[,cabeza[,cola]])producción
.próximo [(separador)]

Están disponibles los siguientes parámetros:


Parámetro Descripción

aporte Especifica el texto sobre el que iterar.


Tipo: Plantilla sencilla

304 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

cabeza [opcional] Especifica el texto que se generará antes de la salida, a menos


que no haya salida. Teclee el texto

cola [opcional] Especifica el texto que se generará después de la salida, a menos


que no haya salida.
Teclee el texto
producción Especifica el texto de salida para cada línea en la entrada.
Tipo: Plantilla compleja

separador [opcional] Especifica el texto que se generará entre cada línea deproducción.
Teclee el texto

Ejemplo

.foreach_line(%Comentario%,"/**\n","\n*/")
* %LíneaActual%
.siguiente("\n")
Resultado:

/**
* Este es mi comentario.* Es
un comentario de documentación de
estilo Java.
* Abarca varias líneas.*/

Macro .foreach_part
Esta macro itera sobre las partes de una cadena dividida por un delimitador utilizando la
variable local especial %CurrentPart%.
.foreach_part (aporte[,"delimitador"
[,cabeza[,cola]]])producción
.próximo[(separador)]

Están disponibles los siguientes parámetros:


Parámetro Descripción

aporte Especifica el texto sobre el que iterar.


Tipo: Plantilla sencilla

Personalización y ampliación de PowerDesigner 305


CAPÍTULO 5: Personalización de Generación con GTL

delimitador Especifica la subcadena que divide la entrada en partes. Puede especificar varios
caracteres, incluidos rangos. Por ejemplo [AZ] especifica que cualquier letra
mayúscula actúa como delimitador.
De forma predeterminada, el delimitador se establece en ' -_,\t' (espacio, guión,
guión bajo, coma o tabulación).
Nota:El delimitador debe estar entre comillas simples si contiene un espacio.
Teclee el texto

cabeza [opcional] Especifica el texto que se generará antes de la salida, a menos


que no haya salida. Teclee el texto

cola [opcional] Especifica el texto que se generará después de la salida, a menos


que no haya salida.
Teclee el texto
producción Especifica el texto de salida para cada parte de la entrada.
Tipo: Plantilla compleja

Parámetro Descripción

separador [opcional] Especifica el texto que se generará entre cada parte deproducción.
Teclee el texto

Por ejemplo:
Ejemplos

Esta plantilla se aplica a Mi clase:


.foreach_part (%Nombre%)
%.FU:ParteActual%
.próximo
Resultado:

Mi clase

Esta plantilla se aplica a Mi clase:


.foreach_part (%Nombre%,' -_',tbl_)
%.L:ParteActual%
.próximo(_)

306 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Resultado:

tbl_mi_clase

Esta plantilla se aplica a MyClass:


.foreach_part (%Nombre%,[AZ])
%.L:ParteActual%
.próximo(-)
Resultado:

mi clase

.si Macro
Esta macro se utiliza para la generación
condicional.
.si no]condición
producción
[(.elsif[no]condición producción)*]
[.demásproducción
] .terminara si
[(cola)]
Están disponibles los siguientes parámetros:

Parámetro Descripción
condición Especifica la condición a evaluar, en la forma:
variable[operador comparación]
Dóndecomparacióntal vez :
• Texto o una plantilla simple
• verdadero o falso
• nulo o no nulo
Si no se especifica ningún operador ni condición, la condición se evalúa como
verdadera a menos que el valor de la variable sea falso, nulo o la cadena vacía.
Sivariableycomparaciónno son enteros, los operadores realizan una
comparación de cadenas que tiene en cuenta los números incrustados. Por
ejemplo:
Clase_10 > Clase_2

Personalización y ampliación de PowerDesigner 307


CAPÍTULO 5: Personalización de Generación con GTL
Puede encadenar condiciones usando los operadores lógicos and or or.
Tipo: Plantilla sencilla

producción Especifica la salida si la condición es verdadera.


Tipo: Plantilla compleja
cola [opcional] Especifica el texto que se generará después de la salida, a menos
que la salida esté vacía. Teclee el texto

Ejemplos

Bloque .if simple:


.if %Resumen%
Esta clase es abstracta.
.terminara si
Resultado (si se selecciona la propiedad Resumen):

Esta clase es abstracta.

Con dos condiciones y una cláusula .else:

.if (%Resumen%==falso) && (%Visibilidad%=="+")


Esta clase es pública y concreta.
.demás
Esta no es una clase pública, concreta.
.terminara si
Resultado (si la propiedad Resumen no está seleccionada y la propiedad Visibilidad está
establecida en Público):
Esta clase es pública y concreta.

Ejemplos

Con una cláusula .elseif:


.if (%Resumen%==falso) && (%Visibilidad%=="+")
Esta clase es pública y concreta.
.elsif (%Visibility%=="+")
Esta clase es pública.
.demás
Esta no es una clase pública, concreta.
.terminara si

308 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

.macro de registro
Esta macro registra un mensaje en la pestaña Generación de la ventana Salida como parte de
un comando de generación.
.registromensaje
Ejemplo

.log variable de entorno indefinida: JAVAC

Para obtener información sobre los comandos de generación, consulte Categoría de


generación en la página 112.

Macros .lowercase y .uppercase


Estas macros convierten bloques de texto al caso especificado.
.minúsculas
entrada de bloque.endlowercase

.mayúsculas
entrada de bloque
.enduppercase

Están disponibles los siguientes parámetros:


Parámetro Descripción

entrada de bloque Especifica el texto a convertir.


Tipo: Plantilla compleja

Ejemplo Resultado

Aplicado a

.minúsculas
%Comentario%
.endlowercase Este es mi comentario.
Produce:

este es mi comentario

Personalización y ampliación de PowerDesigner 309


CAPÍTULO 5: Personalización de Generación con GTL

Macros .objeto y .colección


Estas macros devuelven un OID de objeto único o una colección de objetos como una
concatenación de OID terminados en punto y coma, y generalmente se usan para crear
plantillas que devuelven objetos para que los usen otras plantillas.
.recopilación (alcance[,filtrar])

.objeto (alcance[,filtrar])

Están disponibles los siguientes parámetros:


Parámetro Descripción

alcance Especifica la colección sobre la que iterar.


Tipo: plantilla simple que devuelve un alcance de colección

filtrar [opcional] Especifica una condición de filtro para filtrar la colección.


Tipo: plantilla simple

Ejemplos

.object(Atributos, (%.1:Código%>= a) y (%.1:Código% <= e))


Resultado:

C73C03B7-CD73-466A-B323-0B90B67E82FC

.colección(Atributos, (%.1:Código%>= a) y (%.1:Código% <= e))


Resultado:

C73C03B7-CD73-466A-B323-0B90B67E82FC;77E3F55C-
CF24-440F-84E7-5AA7B3399C00;F369CD8C-0C16-4896-9C2D-
0CD2F80D6980;0
0ADD959-0705-4061-BF77-BB1914EDC018;

Macro .set_interactive_mode
Esta macro se utiliza para definir si la ejecución de GTL debe interactuar con el usuario o
no.
.set_modo_interactivo(modo)

Están disponibles los siguientes parámetros:

310 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Parámetro Descripción

modo Especifica el nivel de interacción requerido. Puedes elegir entre:

• im_Batch: suprime los cuadros de diálogo y


siempre utiliza los valores predeterminados.
Por ejemplo, si su modelo contiene accesos
directos externos y el modelo de destino
para los accesos directos está cerrado, este
modo abrirá automáticamente el modelo sin
interacción del usuario.
• im_Dialog: muestra información y cuadros de
diálogo de confirmación que requieren la
interacción del usuario para que la
ejecución continúe.
• im_Abort: suprime los cuadros de diálogo y
aborta la ejecución si se encuentra un
diálogo.
Macros .set_object, .set_value y .unset
Estas macros se utilizan para definir una variable local de tipo objeto (objeto local) o valor
o para desactivarlas.
Utilice la siguiente sintaxis para crear un objeto local:
.set_objeto ( [alcance.]nombre[,ref-objeto[,modo]])

Utilice la siguiente sintaxis para crear una variable local:


.valor ajustado ( [alcance.]nombre,valor[,modo])

Utilice la siguiente sintaxis para eliminar un objeto o variable local:


.unset ( [alcance.]nombre)

Están disponibles los siguientes parámetros:


Parámetro Descripción

alcance [opcional] Especifica el ámbito de calificación. Si no se establece ningún


alcance, entonces el alcance es el objeto con el alcance actual. Use la palabra
clave this para dar explícitamente un alcance del objeto actual, o Parent para
dar un alcance del objeto principal.
Tipo: plantilla simple que devuelve un objeto o un ámbito de colección

Personalización y ampliación de PowerDesigner 311


CAPÍTULO 5: Personalización de Generación con GTL

nombre Especifica el nombre del objeto o variable, al que puede hacer referencia en
cualquier otro lugar de la plantilla en forma de %name%.

Tipo: Plantilla simple

ref-objeto [Solo .set_object - opcional] Especifica una referencia de objeto. Si no se


especifica ninguna referencia o se proporciona una cadena vacía, la variable es
una referencia al objeto activo en el ámbito de traducción actual. Tipo:
[alcance.]alcance del objeto]

Parámetro Descripción

valor [.set_value solamente] Especifica el valor que se le dará a la variable.


Tipo: plantilla simple (se ignoran las secuencias de escape)

modo [opcional] Especifica el modo de creación. Puedes elegir entre:

• new - Fuerza la (re)-definición de la variable en el ámbito actual.


Recomendado cuando una variable con el mismo nombre ya puede estar
definida en un ámbito anterior.
• actualizar – [predeterminado] Si ya existe una variable con el mismo
nombre, actualice la variable existente. De lo contrario, defina uno nuevo.
• newifundef: define la variable en el ámbito actual si no se ha definido en un
ámbito externo. De lo contrario, no hagas nada.

Ejemplos:
Ejemplos

.set_object(Atributo1, Atributos.Primero)
.set_value(FirstAttributeCode, %Attributes.First.Code%)
%FirstAttributeCode% (OID: %Attribute1%)
Resultado:

a1 (OID: 63442F85-48DF-42C8-92C1-0591F5D34525)

.set_value(this.key, %Code%-%ObjectID%)
Resultado:

C1-40D8F396-EE29-4B7B-8C78-E5A0C5A23325

312 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

.set_value(i, 1, nuevo)
%¿i?%
.unset(yo)
%¿i?%
Resultado:

verdadero
Falso
La primera llamada a %i?% da como resultado verdadero ya que la variable i está definida, y la
segunda da como resultado falso, porque no se ha configurado.

Nota:Puede utilizar el operador de desreferenciación, * (consulte Operadores GTL en la


página 252), para convertir el valor de un conjunto de variables con la macro .set_value en
un nombre de plantilla. Por ejemplo, el siguiente código es equivalente a %Code%.:
.set_value(i, Código)
%*i%
.única Macro
Esta macro genera un bloque en el que cada línea del texto generado es única y, a menudo,
se usa para calcular importaciones, inclusiones, definiciones de tipos o declaraciones de
reenvío en lenguajes como Java, C++ o C#.
.único
entrada de bloque
.endunique[(cola)]

Están disponibles los siguientes parámetros:


Parámetro Descripción

entrada de Especifica el bloque de texto que se va a procesar.


bloque
Tipo: Plantilla compleja

cola [opcional] Especifica el texto que se generará después de la salida, a menos que
la colección esté vacía. Teclee el texto

Ejemplo

Personalización y ampliación de PowerDesigner 313


CAPÍTULO 5: Personalización de Generación con GTL

.único
importar java.util.*;
importar java.lang.String;
%importaciones%
.endunique

Macro .vbscript
Esta macro se usa para incrustar código VBScript dentro de una plantilla como parte de un
comando de generación. El resultado del script está disponible como matriz ScriptResult.
.vbscript [(script-param-list)]entrada de bloque
.endvbscript [(cola)]

Están disponibles los siguientes parámetros:


Parámetro Descripción

script-param- Especifica los parámetros que se pasan al script a través de la tabla


list ScriptInputArray.
Tipo: lista de argumentos de plantilla simple separados por comas

entrada de Especifica el VBscript para ejecutar.


bloque
Teclee el texto

Parámetro Descripción

cola Anexado a la salida, si hay una


Teclee el texto

Ejemplos

Este sencillo script acepta las dos palabras hola y mundo como parámetros de entrada y las devuelve
como una sola cadena con un espacio entre ellas:

.vbscript(hola, mundo)
ScriptResult = ScriptInputArray(0) + " " + ScriptInputArray(1)
.endvbscript
Resultado:

Hola Mundo

314 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

Ejemplos

Este script acepta un código de atributo, lo compara con todos los códigos de atributo del modelo
actual y le agrega un 1 si coincide con cualquier otro código:
.set_value(_código,%@1%,nuevo)
.vbscript(%_código%)
Código de atributo atenuado
códigoatributo = ScriptInputArray(0)

Mientras que (attrFound(attrCode))


attrCode = attrCode + "1"
Encaminarse a

Función atributoEncontrado(códigoatributo)
Dim encontrado, atributo
encontrado = Falso
Para cada atributo en ActiveSelection.Item(0).Attributes
Si código.atributo = códigoatributo Entonces
encontrado = Verdadero
Salir por
Terminara si
Próximo

Para cada atributo en ActiveSelection.Item(0).InheritedAttributes


Si código.atributo = códigoatributo Entonces
encontrado = Verdadero
Salir por
Terminar si sigue
atributoEncontrado = encontrado
función final

ScriptResult = códigoatributo
.endvbscript

Nota:Se accede al objeto activo del ámbito de traducción actual como ActiveSelection.Item(0)
(verManipulación de modelos, colecciones y objetos (secuencias de comandos) en la página
312).

Para obtener información sobre los comandos de generación, consulte Categoría de


generación en la página 112.

Errores de traducción y sintaxis de GTL

Personalización y ampliación de PowerDesigner 315


CAPÍTULO 5: Personalización de Generación con GTL

Los mensajes de error detienen la generación del archivo en el que se han encontrado errores,
estos errores se muestran en la pestaña Vista previa de la hoja de propiedades del objeto
correspondiente.
Los mensajes de error tienen el siguiente formato:
target::catg-path full-template-name(line-number)
active-object-metaclass active-object-code): tipo de
error mensaje de error
Puede encontrar los siguientes errores de sintaxis:
Mensaje de error de sintaxis Descripción y corrección

error de análisis de condición Error de sintaxis en una expresión booleana

esperando .endif Agregue un .endif o .if (ver.si Macroen la página


275).
.else sin coincidencia .if
.endif sin .if coincidente

esperando .siguiente Agregue un .next o .foreach apropiado al bloque de


colección (por ejemplo, veaMacro .foreach_itemen la
.next sin coincidencias .foreach
página 271).

esperando .end%s Agregue un .end apropiado al bloque de macros (por


ejemplo, vea.única Macroen la página 281).

.end%s sin coincidencias .%s Agregue un .macro apropiado al .endmacro (por


ejemplo, veaMacro .vbscripten la página 281).

paréntesis que faltan o no coinciden Corrija los paréntesis que no coincidan.

parámetros inesperados:extra-parámetros Eliminar cualquier parámetro innecesario

macro desconocida Reemplazar con una macro válida (verReferencia de


macros GTLen la página 264).

.execute_command sintaxis incorrecta La sintaxis correcta se muestra en la pestaña Vista


previa o en la ventana Salida (verMacro
.execute_commanden la página 269).

Change_dir sintaxis incorrecta VerMacros .change_dir y .create_pathen la página


266.
convert_name sintaxis incorrecta VerMacros .convert_name y .convert_codeen la
convert_code sintaxis incorrecta página 267.

316 PowerDesigner
CAPÍTULO 5: Personalización de Generación con GTL

set_object sintaxis incorrecta VerMacros .set_object, .set_value y .unseten la


set_value sintaxis incorrecta página 279.

ejecutar_vbscript sintaxis incorrecta VerMacro .execute_vbscripten la página 270.

Los errores de traducción son errores de evaluación de una variable al evaluar una plantilla:
Mensaje de error de traducción Descripción y corrección

colección no resuelta:recopilación Colección desconocida (verAcceso a colecciones de


subobjetos u objetos relacionadosen la página 247).

Mensaje de error de traducción Descripción y corrección

miembro no Miembro desconocido, miembro de objeto nulo o


esperando una cadena en lugar de un objeto
resuelto:miembroobjeto nulo
(consulteExtracción de propiedades de objetosen la
esperando variable de objeto:objeto página 246).

sin alcance externo Uso inválido de la palabra clave Outer (verAlcance de


la traducciónen la página 255).

Error de ejecución de VBScript Error de secuencia de comandos de VB (verMacro


.vbscripten la página 281).
Interbloqueo detectado Interbloqueo debido a un bucle infinito.

Personalización y ampliación de PowerDesigner 317


CAPÍTULO 5: Personalización de Generación con GTL

318 PowerDesigner
CAPÍTULO 6 Traducir informes con Report

Archivos de lenguaje

Cuando crea un informe, selecciona un idioma de informe, que contiene todo el texto de
marco utilizado en la generación del informe para el idioma seleccionado, como los títulos
de las secciones del informe, los tipos de objetos de modelo y sus propiedades.
PowerDesigner se envía con soporte para inglés (predeterminado), francés y chino
simplificado y tradicional. Puede editar estos archivos o utilizarlos como base para crear sus
propios archivos para traducirlos a otros idiomas.
Los archivos de idioma del informe tienen una extensión .xrl y se almacenan en
install_dir/Resource
Archivos/Idiomas del informe. Para ver la lista de idiomas
del informe, seleccione Herramientas > Recursos > Idiomas del
informe. Para obtener información sobre las herramientas
disponibles en las listas de archivos de recursos, consulte
el Capítulo 1, Archivos de recursos de PowerDesigner en la
página 1.
En el siguiente ejemplo, la tarjeta de entidad, la descripción de la entidad y la anotación de
la entidad se muestran en inglés y francés tal como aparecerán en el panel Elementos del
informe:

Personalización y ampliación de PowerDesigner 319


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Los archivos de idioma del informe utilizan plantillas GTL (consulte el Capítulo 5,
Personalización de la generación con GTL en la página 245) para factorizar el trabajo de
traducción. Las plantillas de elementos de informe interactúan con sus traducciones de los
nombres de los objetos modelo y las variables lingüísticas (que manejan peculiaridades
sintácticas como formas plurales y artículos definidos) para generar automáticamente todos
los elementos textuales en un informe y reducir drásticamente (alrededor del 60%) el número
de cadenas que deben traducirse para generar informes en un nuevo idioma.
Por ejemplo, el título del informe francés Liste des données de l'entité MyEntity se genera
automáticamente de la siguiente manera:
• la lista - plantilla de elemento de informe de colecciones de objetos (consulte
Perfil/Categoría de plantillas de elementos de informe en la página 303) se traduce
como:
Lista de %@Value% %ParentMetaClass.OFTHECLSSNAME% %%PARENT%%

en el que se resuelven las siguientes variables:


• %@Value%: se resuelve en el tipo de objeto de la metaclase
(consulte Categoría de atributos de objeto en la página
298), données.
• %ParentMetaClass.OFTHECLSSNAME% %%PARENT%% - se resuelve
en el

320 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

tipo de objeto de la metaclase principal, generado por la variable lingüística


OFTHECLSSNAME (consulte Perfil/Categoría de variables lingüísticas en la página
300), l'entité.
• %%PARENT%%: se resuelve en el nombre del objeto específico
(consulte Categoría de atributos de objeto en la página
298), MyEntity.

Apertura de un archivo de idioma de informe

Puede revisar y editar los archivos de idioma del informe en el Editor de recursos.

1.Seleccione Herramientas > Recursos > Idiomas del informe para abrir la Lista de idiomas
del informe, que enumera todos los archivos .xrl disponibles:

2. Seleccione un idioma del informe y haga clic en el


Propiedadespara abrirlo en el Editor de recursos.

Nota:Puede abrir el archivo .xrl adjunto a un informe abierto en el Editor de informes


seleccionando
Informe > Propiedades del informey haciendo clic en la herramienta Editar idioma
actual junto a la lista Idioma. Puede cambiar el idioma del informe seleccionando otro
idioma en la lista.

Para obtener más información sobre las herramientas disponibles en la Lista de idiomas
de informes, consulte el Capítulo 1, Archivos de recursos de PowerDesigner en la página
1.

Personalización y ampliación de PowerDesigner 321


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Creación de un archivo de idioma de informe para un


nuevo idioma

Puede traducir informes y otros elementos de texto utilizados para generar informes de
PowerDesigner a un nuevo idioma.

1. Seleccione Herramientas > Recursos > Idiomas de informes para abrir la Lista de idiomas
de informes, que muestra todos los archivos de recursos de idiomas de informes
disponibles.
2. Haga clic en la herramienta Nuevo e ingrese el nombre que desea que aparezca en la Lista
de idiomas del informe.
3. [opcional] Seleccione un idioma de informe en la lista Copiar de.
4. Haga clic en Aceptar para abrir el nuevo archivo en el Editor de idioma del informe.
5. Abra la categoría Asignación de valores y traduzca cada uno de los valores de palabra
clave (consulte Categoría Asignación de valores en la página 291).
6. Abra la categoría Perfil > Variables lingüísticas para crear las reglas gramaticales
necesarias para la correcta evaluación de las plantillas de elementos de informe (consulte
Categoría Perfil/Variables lingüísticas en la página 300).
7. Abra la categoría Perfil > Plantillas de elementos de informe y traduzca las distintas
plantillas (consulte Categoría Plantillas de elementos de perfil/informe en la página 303).
A medida que traduce, puede descubrir variables lingüísticas adicionales que debe crear.
8. Haga clic en la pestaña Todas las clases para ver una lista que se puede ordenar de todas
las metaclases disponibles en el metamodelo de PowerDesigner (consulte la pestaña
Todas las clases en la página 299). Traduce cada uno de los nombres de las metaclases.
9. Haga clic en la pestaña Todos los atributos y colecciones para ver una lista ordenable de
todos los atributos y colecciones disponibles en el metamodelo de PowerDesigner
(consulte la pestaña Todos los atributos y colecciones en la página 300). Traduce cada
uno de los nombres de atributos y colecciones.
10Haga clic en la pestaña Todos los títulos de informes y revise los títulos de informes
generados automáticamente (consulte Pestaña Todos los títulos de informes en la página
297). Esta pestaña puede tardar varios segundos en mostrarse.
11Haga clic en la herramienta Guardar y haga clic en Aceptar para cerrar el Editor de idioma
del informe. El archivo de idioma del informe ahora está listo para adjuntarse a un
informe.
Propiedades del archivo de idioma del informe

Todos los archivos de idioma del informe se pueden abrir en el Editor de recursos y tienen
la misma estructura de categoría básica.

322 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

El nodo raíz de cada archivo contiene las siguientes propiedades:


Propiedad Descripción

Nombre Especifica el nombre del idioma del informe.

Código Especifica el código del idioma del informe.

Nombre del archivo [solo lectura] Especifica la ruta al archivo .xrl.

Comentario Especifica información adicional sobre el idioma del informe.

Categoría de asignación de valores


La categoría Asignación de valores contiene una lista de valores de palabras clave (como
Indefinido, Sí, Falso o Ninguno) para las propiedades de objetos que se muestran en
tarjetas, cheques y listas. Debe ingresar una traducción en la columna Valor para cada
palabra clave en la columna Nombre:

Personalización y ampliación de PowerDesigner 323


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Esta categoría contiene las siguientes subcategorías:


Subcategoría Descripción

Formularios Contiene una tabla de mapeo estándar para palabras clave de propiedades de
objetos en tarjetas y cheques, que está disponible para todos los modelos.
Debe proporcionar traducciones para los valores de las palabras clave en la
columna Valor.
Ejemplo: Archivos Embebidos.
Liza Contiene una tabla de mapeo estándar para palabras clave de propiedades de
objetos en listas, que está disponible para todos los modelos. Debe
proporcionar traducciones para los valores de las palabras clave en la
columna Valor.
Ejemplo: Verdadero.
Puede crear nuevas tablas de mapeo que contengan valores de palabras clave específicos
para tipos particulares de objetos modelo.
Ejemplo: crear una tabla de asignación y adjuntarla a un objeto de modelo
específico
Puede anular los valores en las tablas de asignación estándar para un objeto de modelo
específico creando una nueva tabla de asignación y asociándola al objeto.

324 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

En el siguiente ejemplo, la tabla de mapeo DisplayMap se utiliza para anular la tabla de


mapeo estándar para columnas PDM para proporcionar valores personalizados para la
propiedad Displayed, que controla la visualización de la columna seleccionada en el símbolo
de la tabla. Esta situación se puede resumir de la siguiente manera:
Nombre Valor

VERDADERO Desplegado

FALSO No mostrado

1. Abra la categoría Asignación de valores > Listas.


2. Haga clic con el botón derecho en la categoría Listas, seleccione Nuevo > Elemento de
mapa para crear una nueva lista y abra su hoja de propiedades.
3. Ingrese DisplayMap en el campo Nombre, ingrese los siguientes valores en la lista Valor
y haga clic en Aplicar:
• Nombre: VERDADERO, Valor: Mostrado.
• Nombre: FALSO, Valor: No mostrado.

4. Haga clic con el botón derecho en la categoría Listas, seleccione Nuevo > Categoría,
nombre la categoría Modelo de datos físicos y haga clic en Aplicar.
5. Para completar la recreación del árbol de Atributos de objetos de PDM, haga clic con el
botón derecho en el nuevo Físico

Personalización y ampliación de PowerDesigner 325


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

categoría Modelo de datos, seleccione Nuevo > Elemento de mapa, asigne un nombre a
la categoría Columna y haga clic en Aplicar.
6. Haga clic en la columna Nombre para crear un valor e ingrese Mostrado, que es el nombre
del atributo (propiedad) de la columna PDM.
7. Haga clic en la columna Valor e ingrese DisplayMap para especificar la tabla de mapeo
que se usará para ese atributo.

8. Haga clic en Aplicar para guardar sus cambios. Cuando genera un informe, la propiedad
Mostrado se mostrará usando los valores especificados:

Categoría de títulos de informes


La categoría Títulos de informes contiene traducciones de todos los títulos de informes
posibles que aparecen en el panel Elementos disponibles en el Editor de informes, los que se
generan con el Asistente de informes y otros elementos de texto misceláneos.

326 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Esta categoría contiene las siguientes subcategorías:


Subcategoría Descripción

ob- común Contiene los elementos de texto disponibles para todos los modelos. Debe
proyectos proporcionar traducciones de estos elementos aquí.
Ejemplo: HTMLNext proporciona el texto para el botón Siguiente en un
informe HTML.
Asistente para Contiene los títulos de los informes generados con el Asistente para informes.
informes Debe proporcionar traducciones de estos elementos aquí.
Ejemplo: El título de descripción breve proporciona el texto para una sección
de descripción breve cuando genera un informe con el Asistente de informes.

Subcategoría Descripción

Personalización y ampliación de PowerDesigner 327


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

[Modelos] Contiene los títulos de los informes y otros elementos de texto disponibles
para cada modelo. Estos se generan automáticamente, pero puede anular los
valores predeterminados.
Ejemplo: la lista DataTransformationTasks proporciona el texto para la lista
de tareas de transformación de datos de un proceso de transformación
determinado en el modelo de movimiento de datos.
De manera predeterminada (con la excepción de las subcategorías Objetos comunes y
Asistente de informes), estas traducciones se generan automáticamente a partir de las
plantillas en la categoría Perfil (consulte Categoría de plantillas de elementos de
perfil/informe en la página 303). Puede anular los valores generados automáticamente
ingresando su propio texto en el campo Nombre localizado, que presionará el botón Definido
por el usuario para indicar que el valor ya no se genera.

Nota:La pestaña Todos los títulos de informes (ver Pestaña Todos los títulos de informes en
la página 297) muestra las mismas traducciones que se muestran en esta categoría en un
formulario de lista simple y ordenable. Puede que le resulte más conveniente verificar y,
cuando corresponda, anular las traducciones generadas en esta pestaña.

Ejemplo: traducir el botón Anterior del informe HTML


El botón Anterior del informe HTML es un objeto común disponible para todos los modelos
y se encuentra en la categoría Objetos comunes. Debe traducir este elemento de texto
manualmente junto con los demás elementos de este y las categorías del Asistente para
informes.

1. Abra la categoría Títulos de informes > Objetos comunes.


2. Haga clic en la entrada HtmlPrevious para mostrar sus propiedades e ingrese una
traducción en el cuadro Valor. El botón Definido por el usuario se presiona para indicar
que el valor ya no se genera.

328 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

3. Haga clic en Aplicar para guardar sus cambios.


Pestaña Todos los títulos de informes
La pestaña Títulos de informes enumera todos los títulos de informes y otros elementos de
texto misceláneos disponibles en la categoría Títulos de informes en la pestaña General, pero
la estructura plana hace que sea más conveniente trabajar con ellos.

Personalización y ampliación de PowerDesigner 329


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Para cada informe enumerado en la columna Nombre, puede revisar o anular una traducción
en el
Nombre localizadocolumna. Puede ordenar la lista para agrupar objetos con nombres
similares y traducir elementos idénticos seleccionando varias líneas.
Categoría de atributos de objeto
La categoría Atributos de objetos contiene todas las metaclases, colecciones y atributos
disponibles en el metamodelo de PowerDesigner, organizados en forma de árbol:

330 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Esta categoría contiene las siguientes subcategorías:


Subcategoría Descripción

[Modelos] Contiene elementos de texto para metaclases, colecciones y atributos


disponibles para cada modelo, para los cuales debe proporcionar
traducciones.
Ejemplo: La acción proporciona el texto para un atributo de un proceso
en el modelo de proceso empresarial.
Objetos comunes Contiene elementos de texto para metaclases, colecciones y atributos
disponibles para todos los modelos, para los que debe proporcionar
traducciones.
Ejemplo: Diagram proporciona el texto de un diagrama en cualquier
modelo.
Para cada elemento se proporciona el nombre y debe proporcionar una traducción en el
campo Nombre localizado. Este valor lo recuperan las plantillas que ha especificado en la
categoría Perfil para generar títulos de informes predeterminados (consulte Categoría de
títulos de informes en la página 294).
Solo para las metaclases, las variables lingüísticas que ha especificado (consulte
Perfil/Categoría de variables lingüísticas en la página 300) se enumeran junto con los
resultados de su aplicación a las traducciones proporcionadas en el campo Nombre

Personalización y ampliación de PowerDesigner 331


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

localizado. Si es necesario, puede anular los valores generados automáticamente ingresando


su propio texto en la columna Valor, que presionará el botón Definido por el usuario para
indicar que el valor ya no se genera.

Pestaña Todas las clases


La pestaña Todas las clases enumera todas las metaclases disponibles en la categoría
Atributos de objeto en la pestaña General, pero la estructura plana hace que sea más
conveniente trabajar con ellas.

Para cada metaclase enumerada en la columna Nombre, debe ingresar una traducción en la
columna Nombre localizado. Puede ordenar la lista para agrupar objetos con nombres
similares y traducir elementos idénticos seleccionando varias líneas.
Pestaña Todos los atributos y colecciones
Todos los atributos y colecciones enumera todas las colecciones y atributos disponibles en
la categoría Atributos de objetos en la pestaña General, pero la estructura plana hace que sea
más conveniente trabajar con ellos.

332 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Para cada atributo o colección enumerados en la columna Nombre, debe ingresar una
traducción en la columna Nombre localizado. Puede ordenar la lista para agrupar objetos con
nombres similares y traducir elementos idénticos seleccionando varias líneas.

Perfil/Categoría de variables lingüísticas


La categoría Variables lingüísticas contiene plantillas, que especifican reglas gramaticales
para ayudar a crear las plantillas de elementos de informe.
Los ejemplos de reglas gramaticales incluyen la forma plural de un sustantivo y el artículo
definido correcto que debe preceder a un sustantivo (consulte Categoría de plantillas de
elementos de perfil/informe en la página 303).

Personalización y ampliación de PowerDesigner 333


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Especificar las reglas gramaticales apropiadas para su idioma e insertarlas en las plantillas
de elementos de su informe mejorará drásticamente la calidad de la generación automática
de los títulos de su informe. Puede crear tantas variables como requiera su idioma.
Cada variable lingüística y el resultado de su evaluación se muestran para cada metaclase en
la categoría Atributos de objeto (ver Categoría de atributos de objeto en la página 312).
Los siguientes son ejemplos de reglas gramaticales especificadas como variables lingüísticas
para completar plantillas de elementos de informe en el archivo de recursos de idioma del
informe en francés:
• GÉNERO: identifica como femenino un nombre de metaclase %Valor%, si termina con
"e" y como masculino en todos los demás casos:
.si (%.-1:@Valor% == e)
F
.demás
METRO
.terminara si

Por ejemplo: la table, la colonne, le trigger.


• CLSSNAMES: crea un plural agregando "x" al final del nombre de la metaclase %Value
%, si termina con "eau" o "au" y agrega "s" en todos los demás casos:

334 PowerDesigner
CAPÍTULO 6: Traducción de informes con archivos de idioma de informes
.if (%.-3:@Valor% == eau) o (%.-2:@Valor% == au) %@Valor%x
.demás
%@Valores
.terminara si

Por ejemplo: les tableaux, les tables, les entités.


• THECLSSNAME: inserta el artículo definido antes del nombre de la metaclase %Value%
insertando "l'", si comienza con una vocal, "le" si es masculino y "la" si no:
.si (%.1U:@Valor% == A) o (%.1U:@Valor% == E) o (%.1U:@Valor% == I)
o (%.1U:@Valor% = = O) o (%.1U:@Valor% == U) l'%@Valor%
.elsif (%GÉNERO% == M)
le %@Valor%
.else la
%@Value%
.terminara si

Por ejemplo: l'asociation, le package, la table.


• OFTHECLSSNAME – Inserta la preposición "de" más el artículo definido antes del
nombre de la metaclase %Value%, si comienza con una vocal o si es femenino, de lo
contrario "du".
.si (%.1U:@Valor% == A) o (%.1U:@Valor% == E) o (%.1U:@Valor% == I)
o (%.1U:@Valor% = = O) o (%.1U:@Value% == U) o (%GENDER% == F) de
%THECLSSNAME%
.else du
%@Value%
.terminara si
Por ejemplo: de la table, du package.
• OFCLSSNAME: inserta la preposición "d'" antes del nombre de la metaclase %Value%,
si comienza con una vocal, de lo contrario, "de".
.si (%.1U:@Valor% == A) o (%.1U:@Valor% == E) o (%.1U:@Valor% == I)
o (%.1U:@Valor% = = O) o (%.1U:@Valor% == U) d'%@Valor%
.else de
%@Value%
.terminara si

Por ejemplo: d'association, de table.


Categoría de plantillas de elementos de perfil/informe
La categoría Plantillas de elementos de informe contiene un conjunto de plantillas que, junto
con las traducciones que proporcionará para los nombres de metaclases, atributos y
colecciones, se evalúan para generar automáticamente todos los títulos de informe posibles
para los elementos de informe (libro, lista, tarjeta, etc.). )

Personalización y ampliación de PowerDesigner 335


CAPÍTULO 6: Traducción de informes con archivos de idioma de informes

Debe proporcionar traducciones para cada plantilla ingresando su propio texto. Las variables
(como %texto%) no deben traducirse.
Por ejemplo, la sintaxis de la plantilla para la lista de subobjetos contenidos dentro de una
colección que pertenece a un objeto es la siguiente:
Lista de %@Value% de %ParentMetaClass.@Value% %%PARENT%%

Cuando se evalúa esta plantilla, la variable %@Value% se resuelve en el valor del nombre
localizado del objeto, %ParentMetaClass.@Value% se resuelve en el valor del nombre
localizado del padre del objeto y %% PARENT%% se resuelve en el nombre del padre del
objeto.
En este ejemplo, traduce esta plantilla de la siguiente manera:
• Traduce los elementos no variables de la plantilla. Por ejemplo:
• Cree una variable lingüística denominada OFTHECLSSNAME para especificar la regla
gramatical utilizada en la plantilla (consulte Perfil/Categoría de variables lingüísticas en
la página 300).
Esta plantilla se reutilizará para crear títulos de informes para todas las listas de subobjetos
contenidos dentro de una colección perteneciente a un objeto.
Nota:No puede crear ni eliminar plantillas.

336 PowerDesigner
CAPÍTULO 7 Scripting PowerDesigner

Cuando se trabaja con modelos grandes o múltiples, puede ser tedioso realizar tareas
repetitivas, como modificar objetos usando reglas globales, importar o generar nuevos
formatos o verificar modelos. Tales operaciones se pueden automatizar a través de scripts.
Puede acceder a cualquier objeto de PowerDesigner y modificarlo mediante Java, VBScript,
C# o muchos otros lenguajes. En este capítulo, nos enfocamos principalmente en escribir
VBScript para ejecutar en el cuadro de diálogo Editar/Ejecutar script de PowerDesigner,
pero también puede llamar complementos desde los menús de PowerDesigner (consulte
Iniciar scripts y complementos desde los menús en la página 338) o crear un script para la
aplicación PowerDesigner. a través de la automatización OLE (consulte Automatización
OLE y complementos en la página 332).
El siguiente script ilustra la sintaxis básica de VBScript aplicada a la manipulación de
modelos y objetos de PowerDesigner, que incluye:
• Declaración de variable local
• Asignación de valor a una variable local (con el caso específico de objeto)
• Operador de condición: If Then / Else / End If
• Iteración en una lista: Para Cada / Siguiente
• Definición y convocatoria de un procedimiento: Sub
• Definición y llamada de una función: Función
• Manejo de errores usando sentencias On Error

Personalización y ampliación de PowerDesigner 337


CAPÍTULO 7: Scripting PowerDesigner

' Este es un comentario de VBScript.


Dim var ' Declaración de una variable local
var = 1 ' Asignación de valor para tipo
simple
Establecer var = ActiveModel ' Asignación de valor para un objeto.
ActiveModel es una propiedad global de PowerDesigner
Si no var es Nothing, entonces ' Condición en un objeto, probando si
es 'nulo'
Dim objt ' Declaración de otra variable local
Para cada objt en ActiveModel.Children ' Loop en la colección de
objetos Children
DescribeObject objt ' Llamada de procedimiento con objt como
parámetro (sin paréntesis). El procedimiento se define a
continuación. Próximo
Demás
salida "No hay modelo activo" ' La salida es un PowerDesigner
procedimiento que escribe texto en la ventana de
salida End If

' Este es un procedimiento - un método que no devuelve un valor


Sub DescribeObject(objt)
Dim desc ' Una declaración de variable dentro del procedimiento
desc = ComputeObjectLabel(objt) ' Una llamada de función con
objt como parámetro (entre paréntesis). La función se define a
continuación.
' Recuperamos el valor devuelto por la función en la variable desc
output desc ' Muestra la descripción del objeto en la salida End
Sub

' Esta es una función - un método que devuelve un valor


Función ComputeObjectLabel(objeto)
Dim label ' Declara una variable local para almacenar el objeto
label label = "" ' Inicializa la variable de etiqueta con un valor
predeterminado
Si objt no es nada entonces
label = "No hay ningún objeto"
ElseIf objt.IsShortcut() then ' IsShortcut es una función de
PowerDesigner disponible en objetos
label = objt.Name & " (atajo)" ' Concatenación de dos cadenas Else
On Error Goto 0 ' Desactiva la cancelación de la ejecución del script
en caso de error label = objt.Name ' Asigna la propiedad Name del
objeto a la variable local
On Error Resume Next ' Reactiva el error de ejecución del script
Terminara si
ComputeObjectLabel = label ' El valor se devuelve asignando un
variable implícita con el mismo nombre que la
función End Function

Nota:VBScript también se puede usar para crear comprobaciones personalizadas,


controladores de eventos, transformaciones y métodos en un archivo de extensión (consulte
el Capítulo 2, Archivos de extensión en la página 11) e incrustados o llamados desde

338 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

plantillas GTL (consulte Macro .execute_vbscript en la página 270 y . macro vbscript en la


página 281).

Los ejemplos de este capítulo pretenden presentar los conceptos y técnicas básicos para
controlar PowerDesigner mediante secuencias de comandos. Para obtener la documentación
completa del metamodelo de PowerDesigner, seleccione Ayuda > Ayuda de objetos del
metamodelo. Para obtener la documentación completa de VBScript, consulte el sitio MSDN
de Microsoft.
Ejecución de secuencias de comandos en PowerDesigner

Puede ejecutar secuencias de comandos VBScript en su cliente PowerDesigner seleccionando


Herramientas > Ejecutar
Comandospara abrir el cuadro de diálogo Editar/Ejecutar script. La salida del script se
imprime en la ventana Salida.

Las siguientes herramientas están disponibles en la barra de herramientas del cuadro de


diálogo Editar/Ejecutar script:

Personalización y ampliación de PowerDesigner 339


CAPÍTULO 7: Scripting PowerDesigner

Herramientas Descripción

Menú Editor [Mayús+F11]- Contiene los siguientes comandos:

• Nuevo [Ctrl+N]- Reinicializa el campo eliminando todo el contenido


existente.
• Abrir... [Ctrl+O]- Reemplaza el contenido del campo con el contenido del
archivo seleccionado.
• Insertar... [Ctrl+I]- Inserta el contenido del archivo seleccionado en el
cursor.
• Guardar [Ctrl+S]- Guarda el contenido del campo en el archivo
especificado.
• Guardar como...- Guarda el contenido del campo en un archivo nuevo.
• Seleccionar todo [Ctrl+A]- Selecciona todo el contenido del campo.
• Buscar... [Ctrl+F]- Abre un cuadro de diálogo para buscar texto en el
campo.
• Buscar siguiente... [F3]- Encuentra la siguiente aparición del texto buscado.
• Buscar anterior... [Mayús+F3]- Encuentra la aparición anterior del texto
buscado.
• Reemplazar... [Ctrl+H]- Abre un cuadro de diálogo para reemplazar el
texto en el campo.
• Ir a línea... [Ctrl+G]- Abre un cuadro de diálogo para ir a la línea
especificada.
• Alternar marcador [Ctrl+F2]Inserta o elimina un marcador (un cuadro
azul) en la posición del cursor. Tenga en cuenta que los marcadores no se
pueden imprimir y se pierden si actualiza la pestaña
• Siguiente marcador [F2]- Salta al siguiente marcador.
• Marcador anterior [Mayús+F2]- Salta al marcador anterior.
Editar con [Ctrl+E]- Abre el código de vista previa en un editor externo. Haga
clic en la flecha hacia abajo para seleccionar un editor en particular o Elija un
programa para especificar un nuevo editor. Los editores especificados aquí se
agregan a la lista de editores disponibles en Herramientas > Opciones generales
> Editores.
Guardar [Ctrl+S]- Guarda el contenido del campo en el archivo especificado.

Imprimir [Ctrl+P]- Imprime el contenido del campo.

Buscar [Ctrl+F]- Abre un cuadro de diálogo para buscar texto.

Cortar [Ctrl+X], Copiar [Ctrl+C] y Pegar [Ctrl+V]: realiza las acciones estándar
del portapapeles.

340 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Claro- Elimina la secuencia de comandos en el cuadro de diálogo.

Deshacer [Ctrl+Z]y Rehacer [Ctrl+Y]: retrocede o avanza a través de las


ediciones.
Se admiten varios niveles de Deshacer y Rehacer, pero si ejecuta un script que
modifica objetos en varios modelos, debe usar los comandos Deshacer o Rehacer
en cada uno de los modelos llamados por el script.
Herramientas Descripción

Ejecutar [F5]- Ejecuta el script. La salida se imprime en la ventana Salida.


Si se produce un error de compilación, se muestra un cuadro de mensaje,
aparece una breve descripción del error en el panel de resultados del cuadro de
diálogo y el cursor se coloca en la posición del error.
Puede detectar errores utilizando la instrucción On Error Resume Next, a menos
que se llame al script en el modo interactivo im_Abort (consulteMacro
.set_interactive_modeen la página 278).
Buscar en la Ayuda de Metamodel Objects [Ctrl+F1]- Abre el archivo de
ayuda de objetos del metamodelo de PowerDesigner, que proporciona
información detallada sobre todos los atributos, colecciones y métodos
disponibles para cada metaclase.
Muestras de archivos VBScript
PowerDesigner se envía con un conjunto de muestras de secuencias de comandos, que puede
utilizar como base para crear sus propias secuencias de comandos, y que se encuentran en la
carpeta VB Scripts del directorio de instalación de PowerDesigner. Estos scripts están
destinados a mostrarle la variedad de tareas que puede realizar en los modelos de
PowerDesigner utilizando VBScript.

¡Advertencia!Siempre debe hacer una copia de seguridad del script de muestra antes de
realizar cambios en él.

Modelo de muestra de escaneo


La siguiente secuencia de comandos explora cualquier modelo, recorre los paquetes y
enumera los objetos que contienen:

Personalización y ampliación de PowerDesigner 341


CAPÍTULO 7: Scripting PowerDesigner

Option Explicit ' Obliga a declarar cada variable


'antes de la asignación
InteractiveMode = im_Batch ' Suprime la visualización de diálogos
' obtener el modelo activo actual
Diagnóstico tenue
Establecer diag = ActiveDiagram ' el diagrama actual
Si (diag no es nada) Entonces
MsgBox "No hay diagrama activo"
Demás
fldr tenue
Establecer Fldr = diag.Parent
ListObjects(fldr)
Terminara si
' Subprocedimiento para escanear el paquete actual e imprimir
información sobre ' objetos del paquete actual y volver a llamar
al mismo subprocedimiento
' en todos los paquetes
secundarios Private Sub
ListObjects(fldr) salida
"Escaneo" & fldr.code Dim obj '
objeto en ejecución
Para cada obj en fldr.children
' Llamando al procedimiento sub para imprimir información sobre el
objeto DescribeObject obj
Próximo
' ir a los subpaquetes
Dim f 'carpeta en ejecución
Para cada f en fldr.Paquetes
'llamando al subprocedimiento para escanear el paquete de niños
ListObjects f
Próximo
Finalizar sub
' Subprocedimiento para imprimir información sobre el objeto
actual en la salida Private Sub DescribeObject(CurrentObject)
si CurrentObject.ClassName = "enlace de clase de asociación", salga
de sub
'salida "Encontrado"+CurrentObject.ClassName
salida "Encontrado "+CurrentObject.ClassName+"
"""+CurrentObject.Name
+""", Creado por "+CurrentObject.Creator+" en
"+Cstr(CurrentObject.CreationDate)
End Sub
Muestra de creación de modelo
El siguiente script crea un nuevo modelo OOM, luego crea una clase con atributos y
operaciones:

342 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

ValidationMode = True 'Obliga a PowerDesigner a validar


' acciones y errores de retorno en caso de una acción prohibida
InteractiveMode = im_Batch ' Suprime los diálogos de PowerDesigner
' Función principal
' Crear un modelo OOM con un diagrama de clases
Modelo tenue
Establecer modelo = CreateModel(PdOOM.cls_Model,
"|Diagram=ClassDiagram")
model.Name = "Gestión de clientes"
model.Code = "Gestión de clientes"
'Obtener el diagrama de clases
diagrama tenue
Establecer diagrama = modelo.ClassDiagrams.Item(0)
'Crear clases
modelo CreateClasses, diagrama
'función Crear clases
Función CreateClasses (modelo, diagrama)
' Crear una clase
cls tenues
Establecer cls =
model.CreateObject(PdOOM.cls_Class) cls.Name
= "Cliente" cls.Code = "Cliente" cls.Comment
= "Clase de cliente" cls.Stereotype = "Clase"
cls.Description = "La clase de cliente define los atributos y
comportamientos de un cliente".
'Crear atributos
Clases CreateAttributes
'Crea métodos
Clases CreateOperations
'Crear un símbolo para la clase
sim tenue
Establecer sym = diagrama.AttachObject(cls)
CreateClasses = Verdadero
función final

Personalización y ampliación de PowerDesigner 343


CAPÍTULO 7: Scripting PowerDesigner

'Crear función de atributos


Función CreateAttributes(cls)
Atributo tenue
Establecer attr =
cls.CreateObject(PdOOM.cls_Attribute) attr.Name
= "ID" attr.Code = "ID" attr.DataType = "int"
attr.Persistent = True attr.PersistentCode =
"ID" attr.PersistentDataType = "I "
atributo.IdentificadorPrincipal = Verdadero
Establecer attr =
cls.CreateObject(PdOOM.cls_Attribute) attr.Name
= "Name" attr.Code = "Name" attr.DataType =
"String" attr.Persistent = True
attr.PersistentCode = "NAME"
attr.PersistentDataType = "A30 "
Establecer attr =
cls.CreateObject(PdOOM.cls_Attribute) attr.Name
= "Teléfono" attr.Code = "Teléfono"
attr.DataType = "String" attr.Persistent = True
attr.PersistentCode = "TELÉFONO"
attr.PersistentDataType = "A20 "
Establecer attr =
cls.CreateObject(PdOOM.cls_Attribute) attr.Name
= "Correo electrónico" attr.Code = "Correo
electrónico" attr.DataType = "String"
attr.Persistent = True attr.PersistentCode =
"EMAIL" attr.PersistentDataType = "A30 "
CreateAttributes = Verdadero
función final
'Crear función de operaciones
Función CreateOperations(cls)
operación tenue
Establecer oper =
cls.CreateObject(PdOOM.cls_Operation) oper.Name
= "GetName" oper.Code = "GetName"
oper.ReturnType = "String" Dim body
cuerpo = "{" + vbCrLf
cuerpo = cuerpo + "volver Nombre;" + vbCrLf
cuerpo = cuerpo + "}"
oper.Cuerpo = cuerpo
Establecer oper =
cls.CreateObject(PdOOM.cls_Operation) oper.Name
= "SetName" oper.Code = "SetName"
oper.ReturnType = "void"
parámetro de atenuación
Establecer param =
oper.CreateObject(PdOOM.cls_Parameter) param.Name
= "newName" param.Code = "newName" param.DataType
= "String" body = "{" + vbCrLf

344 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner
cuerpo = cuerpo + " Nombre = nuevoNombre;" + vbCrLf
cuerpo = cuerpo + "}" oper.Body = cuerpo
CreateOperations = True
función final

Manipulación de modelos, colecciones y objetos


(secuencias de comandos)
Puede manipular el contenido de un modelo creándolo o abriéndolo y luego descendiendo
desde la raíz del modelo a través de colecciones de objetos. Varias propiedades, funciones y
constantes globales están disponibles en cualquier contexto y proporcionan puntos de entrada
para sus scripts.
Las siguientes propiedades globales brindan acceso al espacio de trabajo y los modelos que
contiene:

• ActiveWorkspace: recupera el espacio de trabajo actual.


• ActiveModel, ActivePackage y ActiveDiagram: recupera el
modelo, paquete o diagrama con el foco actual.
• ActiveSelection: colección de solo lectura de los objetos
seleccionados en el diagrama activo.
• Modelos: colección de modelos de solo lectura abierta en el
espacio de trabajo actual.
• RepositoryConnection: recupera la conexión del repositorio
actual (consulte Manipulación del repositorio (secuencias
de comandos) en la página 325).
Las siguientes funciones globales se usan comúnmente para crear o abrir modelos y realizar
acciones sobre ellos:

Personalización y ampliación de PowerDesigner 345


CAPÍTULO 7: Scripting PowerDesigner

• CreateModel() y OpenModel(): cree y abra un modelo (consulte


Creación y apertura de modelos (secuencias de comandos) en
la página 313).
• Salida (): imprime texto en la pestaña Script de la ventana
Salida de PowerDesigner.
• IsKindOf() - Prueba la metaclase del objeto.
• ExecuteCommand() - Inicia una aplicación externa
• EvaluateNamedPath() y MapToNamedPath(): administre rutas con
nombre en archivos de modelo.
• BeginTransaction(), CancelTransaction() y EndTransaction()
-
Iniciar, cancelar y confirmar transacciones.
Las siguientes constantes globales proporcionan información sobre la instancia de
PowerDesigner:
• UserName: recupera el nombre de inicio de sesión del usuario.
• Versión: devuelve la versión de PowerDesigner.
• HomeDirectory: devuelve el directorio de inicio de la
aplicación.
• RegistryHome: devuelve la ruta principal del registro de la
aplicación.
• Viewer: devuelve True si la aplicación en ejecución es una
versión de Viewer que tiene funciones limitadas.
• ValidationMode: de forma predeterminada, PowerDesigner
realiza varias comprobaciones para validar sus acciones y
da un error en el caso de una acción prohibida. Puede
configurar ValidationMode = False (que desactiva las reglas
de validación, como la exclusividad del nombre o los extremos
del enlace) para mejorar el rendimiento o si su algoritmo
requiere temporalmente un estado no válido.
• InteractiveMode: especifica el nivel de interacción
requerido. Puedes elegir entre:
• im_Batch [predeterminado]: suprime los cuadros de diálogo y
siempre usa los valores predeterminados. Por ejemplo, si su
modelo contiene accesos directos externos y el modelo de
destino para los accesos directos está cerrado, este modo
abrirá automáticamente el modelo sin interacción del
usuario.

346 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

• im_Dialog: muestra información y cuadros de diálogo de


confirmación que requieren la interacción del usuario para
que la ejecución continúe.
• im_Abort: suprime los cuadros de diálogo y aborta la
ejecución si se encuentra un diálogo.
• ShowMode [específico de OLE]: comprueba o cambia el estado
de visibilidad de la ventana principal de la aplicación.
Devuelve True si la ventana principal de la aplicación está
visible y no minimizada.
• Bloqueado [específico de OLE]: cuando se establece en
Verdadero, garantiza que PowerDesigner continúe ejecutándose
incluso después de que un cliente OLE se desconecte.
Para obtener información detallada sobre todas las propiedades, constantes y funciones
globales, seleccione Ayuda > Ayuda de objetos de MetaModel y navegue hasta Elementos
básicos.

Creación y apertura de modelos (secuencias de comandos)


Usted crea modelos y abre modelos existentes usando CreateModel() y
Funciones globales de OpenModel(). Se puede acceder al modelo
con el foco actual a través de la propiedad global
ActiveModel, y los modelos actualmente abiertos en el espacio
de trabajo están disponibles en la colección global Modelos.

Este script crea un nuevo OOM dirigido al lenguaje de análisis, crea algunas clases en él, las
muestra en el diagrama y luego guarda el modelo y lo cierra:
Dim nuevo modelo
establecer NewModel = CreateModel(PdOOM.Cls_Model,
"Idioma=Análisis|
Diagram=ClassDiagram|Copy")
Si NewModel es Nothing,
entonces
msgbox "Error al crear el modelo UML", vbOkOnly, "Error" ' Muestra
un mensaje de error
Demás
salida "El modelo UML ha sido creado" ' Mostrar un mensaje en
Salida
NewModel.SetNameAndCode "MyOOM", "MyOOM" 'Inicializa el nombre y el
código del modelo
For idx = 1 to 12 'Crea clases y muéstralas Set
obj=NewModel.Classes.CreateNew()
obj.SetNameAndCode "C" & idx, "C" & idx Set
sym=ActiveDiagram.AttachObject (obj)
Próximo
ActiveDiagram.AutoLayoutWithOptions(2)
NewModel.Save "c:\temp\MyOOM.oom" ' Guarda el modelo
NewModel.Close ' Cierra el modelo

Personalización y ampliación de PowerDesigner 347


CAPÍTULO 7: Scripting PowerDesigner

Establecer NewModel = Nothing ' Liberar la última referencia al


objeto para liberar memoria End If

Este script verifica que el modelo creado anteriormente existe y luego lo abre en el espacio
de trabajo:
Atenuar mi modelo, nombre de archivo
Nombre de archivo = "c:\temp\MyOOM.oom"
On Error Resume Next 'Evitar el mensaje de error de secuencias de
comandos genérico
Establecer MiModelo = OpenModel(Nombre de archivo)
Si MyModel no es nada, entonces ' Muestra un cuadro de mensaje
de error msgbox "Error al abrir el modelo:" + vbCrLf +
FileName, vbOkOnly,
"Error"
Else ' Muestra un mensaje en la salida
de salida "El OOM se ha abierto".
Terminara si
Exploración y modificación de colecciones (secuencias de
comandos)
La mayor parte de la navegación por metamodelos se realiza descendiendo desde la raíz del
modelo a través de colecciones de objetos a colecciones de subobjetos u objetos asociados.
Un OOM contiene una colección de clases y las clases contienen colecciones de atributos y
operaciones. Puede obtener información y explorar los miembros de una colección a través
de secuencias de comandos, así como agregar, eliminar y mover objetos en la colección.
Para explorar los miembros de una colección, navegue hasta el objeto principal y luego use
un bucle For each. Este script imprime los nombres de todas las tablas en un PDM abierto:
Atenuar mi modelo
Establecer MiModelo=ModeloActivo
Para cada t en MyModel.Tables
Salida "*" & t.Nombre

348 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner
Próximo
Cuando explore una colección, se recuperarán tanto los objetos completos de la colección
como los accesos directos.

Nota:Para obtener información sobre cómo acceder a las colecciones definidas en las
extensiones, consulte Crear y acceder a extensiones (secuencias de comandos) en la página
329.

Los siguientes tipos de colecciones aparecen en el metamodelo:


• Composiciones: contienen objetos que se eliminarán si se elimina el principal. Por
ejemplo, las colecciones PdPDM/Tables y PdPDM/Table/Columns son composiciones.
• Agregaciones: objetos de referencia que seguirán existiendo si se elimina el principal.
Por ejemplo, la colección PdCommon/NamedObject/AttachedRules (heredada por la
mayoría de los objetos) es una agregación.
• Colecciones desordenadas: contienen objetos sin un orden significativo. Por ejemplo, la
colección PdCDM/Entity/Relationships no está ordenada.
• Colecciones ordenadas: contienen objetos donde el usuario elige el orden. Por ejemplo,
se ordena la colección PdPDM/Table/Columns.
• Colecciones de solo lectura: solo se pueden explorar. Por ejemplo, la colección de
modelos globales (todos los modelos abiertos) es de solo lectura.
Las siguientes propiedades están disponibles para todas las colecciones:
• Recuento: recupera el número de objetos de la colección.
• Artículo[(índice)]: recupera el elemento especificado en la
colección como un objeto. Item(0) es el primer objeto (y el
predeterminado) y Item(-1) es el último objeto.
• MetaCollection: recupera la metadefinición de la colección
como un objeto.
• Tipo: recupera el tipo de objetos que puede contener la
colección.
• Origen: recupera el objeto en el que se define la colección.

Los siguientes métodos están disponibles para modificar colecciones escribibles:

• Crear nuevo([amable] y CreateNewAt(índice[,amable]) - [solo


composiciones]
Crea un nuevo objeto al final de la colección o en el índice especificado (predeterminado,
-1). El parámetro kind (por ejemplo, PdPDM.cls_Table) solo es necesario si la colección
admite varios tipos de objetos.
• Agregar(objeto) - Inserta el especificadoobjetoal final de la colección.

Personalización y ampliación de PowerDesigner 349


CAPÍTULO 7: Scripting PowerDesigner

• Insertar([índice][,objeto]) - Inserta el especificadoobjetoen la


colección en la posición de índice especificada (predeterminado, -1).
• Mover(índice2,índice1) - Mueve el objeto en la posicióníndice1para
posicionar index2 en la colección.
• Eliminar(objeto[, eliminar = y|n]) y RemoveAt([índice][,
eliminar =
y|n]) - Elimina el especificadoobjetoo el objeto en el índice
especificado (predeterminado, -1) de la colección. Para las agregaciones, también puede
especificar eliminar el objeto (los objetos eliminados de una composición siempre se
eliminan).
• Clear([delete = y|n]): elimina todos los objetos de la
colección y, opcionalmente, los elimina.
El siguiente guión:
• Crea un PDM,
• Crea objetos en las colecciones de composición desordenada Tables y BusinessRules del
modelo, y
• Agrega algunos objetos a la colección de agregación ordenada de AttachedRules de la
tabla T1 y luego manipula esa colección:

350 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Dim MiModelo, t, r, sym


establecer MiModelo = CreateModel(PdPDM.Cls_Model,"DBMS=SYASA12")
MiModelo.SetNameAndCode "MiPDM", "MiPDM"
'Crear tablas y reglas
Para idx = 1 a 12
Establecer t=MiModelo.Tablas.CrearNuevo()
t.SetNameAndCode "T" & idx, "T" & idx
Establecer sym=ActiveDiagram.AttachObject
(t) Establecer
r=MyModel.BusinessRules.CreateNew()
r.SetNameAndCode "BR" & idx, "BR" & idx
Próximo
ActiveDiagram.AutoLayoutWithOptions(2)
'Adjuntar reglas a la Tabla 1
Atenuar mi tabla
Establecer MiTabla=MiModelo.FindChildByName("T1",cls_table)
Para idx = 1 a 10
MyTable.AttachedRules.Add(MyModel.FindChildByName("BR" &
(idx),cls_businessrule))
Próximo
'Imprimir lista de reglas adjuntas a la Tabla 1
Salida "Reglas adjuntas a T1 (" & MyTable.AttachedRules.Count & ")"
Para cada r en MyTable.AttachedRules
Salida "*" & r.Nombre
Próximo
'Modificar reglas adjuntas por inserción, movimiento y eliminación
MyTable.AttachedRules.Insert 3,
MiModelo.FindChildByName("BR12",cls_businessrule)
MyTable.AttachedRules.Move 5,0
MyTable.AttachedRules.Remove(MyModel.FindChildByName("BR6",cls_busi
regla de ness))
'Imprimir lista modificada de reglas
Salida "Reglas modificadas adjuntas a T1 (" &
MyTable.AttachedRules.Count & ")"
Para cada r en MyTable.AttachedRules
Salida "*" & r.Nombre
Próximo
Acceso y modificación de objetos y propiedades (secuencias de
comandos)
Puede acceder y modificar cualquier objeto de PowerDesigner y sus propiedades mediante
script. Los objetos incluyen no solo objetos de diseño estándar (como tablas, clases, procesos
y columnas), sino también diagramas, símbolos y objetos funcionales (como un informe o
un repositorio). Un objeto pertenece a una metaclase del metamodelo PowerDesigner y
hereda propiedades, colecciones y métodos de su metaclase.
Se accede a los objetos raíz, como los modelos, mediante propiedades y funciones globales
(consulte Manipulación de modelos, colecciones y objetos (secuencias de comandos) en la
página 322), mientras que a los objetos estándar se accede mediante la exploración de

Personalización y ampliación de PowerDesigner 351


CAPÍTULO 7: Scripting PowerDesigner

colecciones (consulte Exploración y modificación de colecciones (secuencias de comandos)


en la página 314) o individualmente a través de los siguientes métodos:
• BuscarNiñoPorNombre("Nombre",Amable[,Parámetros opcionales]
• BuscarNiñoPorCódigo("Código",Amable[,Parámetros opcionales]
• BuscarNiñoPorRuta("Camino",Amable[,Parámetros opcionales]

Están disponibles los siguientes parámetros:


Parámetro Descripción

Nombre/Código/Camino Especifica el nombre o código de, o la ruta al objeto. Por ejemplo, para
encontrar la columna Dirección en la tabla Cliente en el paquete
Ventas desde el contexto del nodo del modelo, puede buscar por
nombre Dirección o por ruta
Ventas/Cliente/Dirección.
Amable Especifica la metaclase del objeto a buscar en el formulario
cls_PublicName. Por ejemplo, para buscar una columna, seleccione
cls_Column.
Estos identificadores de metaclases son únicos dentro de su biblioteca
de modelos pero, en casos como los paquetes, que aparecen en varios
tipos de modelos, debe prefijar el identificador con el nombre del
módulo (PdOOM.cls_Package). Cuando crea un modelo, debe usar el
prefijo del módulo (por ejemplo, PdPDM.cls_Model).
Parámetros opcionales Los siguientes parámetros son opcionales:
• "Estereotipo"- Especifica que el objeto a buscar debe tener el
estereotipo especificado.
• "Último encontrado"- Especifica comenzar la búsqueda después
de este objeto. Este parámetro se usa cuando varios objetos tienen
el mismo valor de ruta y se puede usar para iniciar una búsqueda
en un ciclo while que usa la coincidencia anterior como el último
parámetro encontrado.
• Sensible a mayúsculas y minúsculas=y|n- [predeterminado: y]
Especifica que la búsqueda distingue entre mayúsculas y
minúsculas.
• Incluir accesos directos- [predeterminado: n] Especifica que se
pueden encontrar accesos directos.
• UseCodeInPlaceOfName- [ByPath, predeterminado: n] Especifica
que el objeto puede ser encontrado por su código
(Predeterminado=n).
• separador de ruta- [ByPath, default= /, \ o ::)] Especifica el
carácter para separar los nodos en la ruta.
Puede obtener valores de atributo estándar utilizando la notación de puntos (objeto.atributo)
o utilizando los siguientes métodos:

352 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

• ObtenerAtributo("atributo") - recupera el valor almacenado


para el atributo
• ObtenerTextoAtributo("atributo"): recupera el valor que se
muestra para el atributo. Puede establecer valores de
atributo utilizando la notación de puntos (objeto.atributo=valor) o
usando los siguientes métodos:
• Establecer Atributo "atributo",valor
• EstablecerTextoAtributo "atributo", "valor"

Nota:Para obtener información sobre cómo obtener y configurar valores de atributos


extendidos, consulte Crear y acceder a extensiones (secuencias de comandos) en la página
349.

El siguiente script abre un OOM de muestra, encuentra una clase por nombre y un parámetro
por ruta y luego imprime y modifica algunas de sus propiedades:
Atenuar mi modelo, C, P
'Abrir archivo modelo
Establezca MyModel=OpenModel(EvaluateNamedPath("%_EXAMPLES%\" &
"UML2
Muestra.oom"))
'Obtener clase y parámetro
Establecer C=MiModelo.FindChildByName("OrderManager",cls_Class)
Establezca
P=Mimodelo.FindChildByPath("SecurityManager/CheckPassword/login",Pd
OOM.cls_Parameter)

'Imprimir valores iniciales


Salida "Valores iniciales:"
Propiedades de impresión C, P
'Modificar valores
C.Comment="Esta clase controla los pedidos."
C.SetAttributeText "Visibilidad", "privado"
P.Name="Nombre de inicio de sesión"
'Imprimir valores revisados
Salida "Valores revisados:"
Propiedades de impresión C, P

'Procedimiento para imprimir valores


Sub PrintProperties(MyClass, MyParam)
output "Class: " & MyClass.Name
salida vbTab & "Comentario: " & MyClass.Comment
salida vbTab & "Visibilidad: " &
MyClass.GetAttributeText("Visibility")
salida vbTab & "Persistente como: " &

Personalización y ampliación de PowerDesigner 353


CAPÍTULO 7: Scripting PowerDesigner

MyClass.GetAttributeText("PersistentGenerationMode")
muestra "Parámetro: " & MyParam.Parent & "". &
MiParam.Nombre
salida vbTab & "Tipo de datos: " & MyParam.DataType
salida vbTab & "Tipo de parámetro: " &
MyParam.GetAttributeText("ParameterType")
Finalizar sub

Creación de objetos (secuencias de comandos)


Por lo general, debe crear objetos a través de la colección en el objeto principal utilizando el
método CreateNew(). El método CreateObject(kind) también está disponible en objetos
modelo.
Este script crea una clase en un OOM, establece algunas de sus propiedades y luego crea un
atributo debajo de la clase, en cada caso creando los objetos dentro de las colecciones:

354 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Atenuar mi modelo
Establecer MiModelo = ModeloActivo
Atenuar mi clase
' Crear una clase
Establecer MiClase = MiModelo.Clases.CrearNuevo()
Si MyClass no es nada Entonces
' Mostrar un cuadro de mensaje
de error
msgbox "Error al crear una clase", vbOkOnly, "Error" Else
salida "La clase ha sido creada".
' Establecer nombre, código, comentario, estereotipo y
atributos finales
MyClass.SetNameAndCode "Cliente", "cliente"
MyClass.Comment = "Creado por script"
MiClase.Estereotipo = "MiEstereotipo"
MiClase.Final = verdadero
'Crear un atributo dentro de la clase
Dim MyAttr
Establecer MyAttr =
MyClass.Attributes.CreateNew() Si no MyAttr no
es nada Entonces
salida "El atributo ha sido creado". MyAttr.SetNameAndCode
"Nombre", "nombre del cliente"
MiAttr.TipoDeDatos = "Cadena"
' Restablecer la variable para evitar pérdidas de memoria
Terminara si
Terminara si
También puede crear objetos utilizando el método CreateObject(kind). Este script crea una
clase dentro de un OOM y establece algunas de sus propiedades:
Atenuar mi modelo
Establecer MiModelo = ModeloActivo
Atenuar mi clase
' Crear una clase
Establecer MiClase = MiModelo.CrearObjeto(cls_Clase)
MyClass.SetNameAndCode "Otra clase", "Clase2"
MiClase.Comentario = "Creado por CreateObject"

Al crear un objeto de vínculo, debe definir sus extremos. Este script crea dos clases y las une
mediante un enlace de asociación:
Atenuar mi modelo
Establecer MiModelo = ModeloActivo
Dim MiPrimeraClase, MiSegundaClase, MiAsociación
'Crear clases
Establecer MiPrimeraClase = MiModelo.Clases.CrearNuevo()
MiPrimeraClase.SetNameAndCode "Clase1", "C1"
Establecer MySecondClass = MyModel.Classes.CreateNew()
MiSegundaClase.SetNameAndCode "Clase2", "C2"
'Crear asociación
Establezca MyAssociation = MyModel.Associations.CreateNew()

Personalización y ampliación de PowerDesigner 355


CAPÍTULO 7: Scripting PowerDesigner
MiAsociación.Nombre = "A1"
' Definir sus extremos
Establecer MyAssociation.Object1 = MyFirstClass
Establecer MyAssociation.Object2 = MySecondClass
Visualización, formateo y posicionamiento de símbolos (secuencias
de comandos)
Cuando crea un objeto, no aparecerá en un diagrama a menos que use el
Método AttachObject() o AttachLinkObject(). Los símbolos son
objetos por derecho propio a los que se puede acceder a través
de colecciones en el objeto o diagrama principal. Puede
posicionar un símbolo usando el método Position() y cambiar su
formato usando LineWidth y otros atributos de formato.
El siguiente script crea dos clases, las une mediante un enlace de asociación y muestra los
tres símbolos en el diagrama activo:
Dim MiModelo, MiDiagrama, C1, C2, A1
Establecer MiModelo = ModeloActivo
Establecer MiDiagrama = ActiveDiagram
'Crear clases
Establecer C1 = MiModelo.Clases.CrearNuevo()
C1.Establecer nombre y código "C1", "C1"
Establecer C2 = MiModelo.Clases.CrearNuevo()
C2.Establecer nombre y código "C2", "C2"
'Mostrar símbolos de clase
MiDiagrama.AdjuntarObjeto(C1)
MiDiagrama.AdjuntarObjeto(C2)
'Crear asociación
Establecer A1 = MiModelo.Asociaciones.CrearNuevo()
A1.EstablecerNombreYCódigo = "A1", "A1"
' Definir sus extremos
Establecer A1.Objeto1 = C1
Establecer A1.Objeto2 = C2
' Muestra el símbolo de asociación
MiDiagrama.AdjuntarObjetoEnlace(A1)

El siguiente script crea un EAM y cuatro áreas de arquitectura, las alinea en un cuadrado y
formatea el área superior izquierda:

356 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Dim NewModel, idx, obj, sym


establecer NewModel = CreateModel (PdEAM.Cls_Model,
"Diagrama=Diagrama de Planificación Urbana")
NewModel.SetNameAndCode "MiEAM", "MiEAM"
Para idx = 1 a 4
Establecer
obj=NewModel.ArchitectureAreas.CreateNew()
obj.SetNameAndCode "A" & idx, "A" & idx
Establecer sym=ActiveDiagram.AttachObject (obj)
sym.width=30000 sym.height=20000
Próximo
atenuar A1, A2, A3, A4, X1, Y1
establecer A1 =
NewModel.FindChildByName("A1",cls_architecturearea).Symbols.Item(0)
establecer A2 =
NewModel.FindChildByName("A2",cls_architecturearea).Symbols.Item(0)
establecer A3 =
NewModel.FindChildByName("A3",cls_architecturearea).Symbols.Item(0)
establecer A4 =
NewModel.FindChildByName("A4",cls_architecturearea).Symbols.Item(0)
X1 = A1.Posición.X
Y1 = A1.Posición.Y
' Mueve los símbolos para que sean adyacentes
A2.Posición = NuevoPunto(X1 + A1.Ancho, Y1)
A3.Posición = NuevoPunto(X1, Y1 - A1.Altura)
A4.Posición = NewPoint(X1 + A1.Ancho, Y1 - A1.Altura)
A1.DashStyle = 2
A1.Ancho de línea = 3

Eliminación de objetos (secuencias de comandos)


Puede eliminar objetos mediante el método Eliminar.
El siguiente script crea un nuevo CDM, lo llena con entidades y relaciones y luego elimina
la entidad E5 y la relación R8:

Personalización y ampliación de PowerDesigner 357


CAPÍTULO 7: Scripting PowerDesigner

Dim MyModel, obj, sym, idx


establecer MiModelo = CreateModel(PdCDM.Cls_Model)
MiModelo.SetNameAndCode "MiCDM", "MiCDM"
'Crear entidades
Para idx = 1 a 12
Establecer obj=MyModel.Entities.CreateNew()
obj.SetNameAndCode "E" & idx, "E" & idx
Establecer sym=ActiveDiagram.AttachObject
(obj)
Próximo
'Crear relaciones
Para idx = 2 a 11
Establecer obj=MyModel.Relationships.CreateNew()
obj.SetNameAndCode "R" & idx-1, "R" & idx-1
Establecer obj.Object1 =
MyModel.FindChildByName("E" &
(idx-1), entidad_cls)
Establecer obj.Object2 = MyModel.FindChildByName("E" & (idx
+1),cls_entidad)
Establecer sym = ActiveDiagram.AttachLinkObject (obj)
Próximo
ActiveDiagram.AutoLayoutWithOptions(2)
'Eliminar objetos
MiModelo.FindChildByName("E5",cls_entity).Eliminar
MiModelo.FindChildByName("R8",cls_relationship).Eliminar
Creación de una selección de objetos (secuencias de comandos)
Puede crear una selección de objetos utilizando el método CreateSelection(). Puede realizar
acciones en la selección, como cambiar las propiedades o el formato o moverlos a otro
paquete.
El siguiente script crea un PDM, lo llena con tablas y luego hace una selección de tablas y
las mueve a un paquete:
Dim MyModel, obj, sym
establecer MiModelo = CreateModel(PdPDM.Cls_Model,"DBMS=SYASA12")
MiModelo.SetNameAndCode "MiPDM", "MiPDM"
'Crear tablas
Para idx = 1 a 12
Establecer obj=MiModelo.Tablas.CrearNuevo()

358 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

obj.SetNameAndCode "T" & idx, "T" & idx


Establecer sym=ActiveDiagram.AttachObject
(obj)
Próximo
ActiveDiagram.AutoLayoutWithOptions(2)
'Crear paquete
Atenuar mi paquete
Establecer MiPaquete=MiModelo.Paquetes.CrearNuevo()
MiPaquete.EstablecerNombreYCódigo "P1", "P1"
ActiveDiagram.AdjuntarObjeto (MiPaquete)
'Crear selección
Atenuar mi selección
Establecer MiSelección = ActiveModel.CreateSelection
Para idx = 1 a 5
MySelection.Objects.Add(MyModel.FindChildByName("T" &
(idx*2),cls_table))
Próximo
'Mover selección a paquete
MiSelección.MoveToPackage(MiPaquete)
Para agregar todas las tablas a la selección, use el método AddObjects:
MiSelección.AddObjects MiModelo,cls_table

Para eliminar un objeto de la selección, utilice el método Eliminar:


MiSelección.Objetos.Eliminar(MiModelo.FindChildByName("T6",cls_table
))

Control del espacio de trabajo (secuencias de comandos)


Puede acceder al espacio de trabajo actual mediante la propiedad global ActiveWorkspace,
abrir, guardar y cerrar espacios de trabajo y agregarle carpetas y documentos.
El siguiente script construye una estructura de carpetas simple en un espacio de trabajo y
agrega y crea varios modelos en él:

Personalización y ampliación de PowerDesigner 359


CAPÍTULO 7: Scripting PowerDesigner

Opción explícita
' Cierra el espacio de trabajo existente y guárdalo en Temp
Dim workspace, currentFolder Set
workspace = ActiveWorkspace
workspace.Load "%_EXAMPLES%\mywsp.sws"
Salida "Guardando el espacio de trabajo actual en "" Directorio de
ejemplo:
"+EvaluateNamedPath("%_EXAMPLES%\temp.sws") espacio
de trabajo.Guardar "%_EXAMPLES%\Temp.SWS" espacio de
trabajo.Cerrar
workspace.Name = "VBS WSP"
workspace.FileName = "VBSWSP.SWS"
workspace.Load "%_EXAMPLES%\Temp.SWS"
dim Elemento, subelemento
para cada elemento en el espacio de trabajo.niños
Si item.IsKindOf(PdWsp.cls_WorkspaceFolder) Entonces
ShowFolder (elemento)
renombrar elemento de carpeta,"CarpetaParaRenombrar",
"CarpetaRenombrada" deleteFolder elemento,"CarpetaParaEliminar"
carpetaactual = elemento
ElsIf item.IsKindOf(PdWsp.cls_WorkspaceModel) Entonces
ElsIf elemento.IsKindOf(PdWsp.cls_WorkspaceFile) Entonces
Terminar si
es el
siguiente
subcarpeta tenue
'insertar carpeta en
raíz Establecer
subcarpeta =
espacio de trabajo.Children.CreateNew(PdWsp.cls_WorkspaceFolder)
subfolder.name = "Nueva carpeta (VBS)"
'insertar carpeta en raíz en pos 6
Establecer subcarpeta = espacio de trabajo.Children.CreateNewAt(5,
PdWsp.cls_WorkspaceFolder)
subcarpeta.nombre = "Nueva carpeta (VBS) insertada en Pos5"'
' agregar una nueva carpeta en esta carpeta
Establecer subcarpeta =
subfolder.Children.CreateNew(PdWsp.cls_WorkspaceFolder)
subfolder.name = "NewSubFolder(VBS)"
subcarpeta.AddDocument EvaluateNamedPath("%_EXAMPLES%\pdmrep.rtf")
subcarpeta.AddDocument EvaluateNamedPath("%_EXAMPLES%\cdmrep.rtf")
subcarpeta.AddDocument
EvaluateNamedPath("%_EXAMPLES%\project.pdm")
subcarpeta.AddDocument EvaluateNamedPath( "%_EXAMPLES%\demo.oom")
atenuar último modelo
establecer último modelo = subcarpeta.AddDocument
(EvaluateNamedPath("%_EXAMPLES%\Ordinateurs.fem"))
lastmodel.abierto
lastmodel.name = "Computadoras"
lastmodel.close
'separando el modelo del espacio de trabajo
lastmodel.delete
espacio de trabajo. Guardar "%_EXAMPLES%\Final.SWS"

360 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Para obtener más información sobre las propiedades y los métodos disponibles en el espacio
de trabajo, seleccione Ayuda > Ayuda de objetos de MetaModel y vaya a
Bibliotecas/PdWSP/Espacio de trabajo.

Creación de accesos directos (secuencias de comandos)

Crea un atajo en un modelo usando el método CreateShortcut().


El siguiente script actúa sobre un OOM y crea un acceso directo de la clase C1 del paquete
P1 en el paquete P2:
Dim obj, acceso directo, destinatario
' Obtener clase para atajo
Establecer obj = ActiveModel.FindChildByPath("P1/C1",cls_Class)
' Obtener paquete para crear acceso directo en
Establecer destinatario =
ActiveModel.FindChildByPath("P2",PdOOM.cls_Package)
'Crear acceso directo
Establecer atajo =
obj.CreateShortcut(destinatario) Si no atajo
no es nada, entonces
salida "El atajo de clase se ha creado con éxito" End If
La siguiente secuencia de comandos crea un acceso directo de la clase C1 del paquete P1 del
modelo O1 directamente en el modelo O2:
Dim targetmodel, usingmodel, obj, atajo
Por cada m en Modelos
Salida m.Nombre
Si m.Name="O1" entonces 'Obtener modelo con objeto para
acceso directo
Establecer modelo de destino = m
Terminara si
Si m.Name="O2" entonces 'Obtener modelo para crear acceso
directo en
Establecer usandomodel=m
Terminara si
Próximo
' Obtener objeto para atajo
Establecer obj = modelo de
destino.FindChildByPath("P1/C1",cls_Class)
'Crear acceso directo
Establecer atajo = obj.CreateShortcut (modelo de
recepción) Si no atajo no es nada, entonces
salida "El atajo de clase se ha creado con éxito" End If

Personalización y ampliación de PowerDesigner 361


CAPÍTULO 7: Scripting PowerDesigner

Creación de asignaciones entre objetos (secuencias de


comandos)

Puede crear orígenes de datos en un modelo y, a partir de ahí, crear asignaciones desde
objetos de origen en otros modelos a objetos en el primer modelo mediante scripts.
El siguiente script crea un OOM y un PDM, los completa con clases y tablas, luego crea una
fuente de datos en el OOM, asocia el PDM con él y crea asignaciones:
Atenuar MiOOM, MiPDM
'Crear un OOM y un PDM
establecer MyOOM = CreateModel(PdOOM.Cls_Model, "|Idioma=Análisis|
Diagrama=ClassDiagram|Copiar")
MiOOM.SetNameAndCode "MiOOM", "OOM"
establecer MyPDM = CreateModel(PdPDM.Cls_Model, "|DBMS=Sybase SQL
Anywhere 12|Copiar")
MiPDM.EstablecerNombreYCódigo "MiPDM", "PDM"
'Crear clases y tablas
Para idx = 1 a 6
Establecer c=MiOOM.Clases.CrearNuevo()
c.SetNameAndCode "Clase" e idx, "C" e idx
Establezca t=MyPDM.Tables.CreateNew()
t.SetNameAndCode "Tabla" & idx, "T" & idx
Próximo
'Cree una fuente de datos en el OOM y agregue el PDM como su fuente
Dim ds, m1
Establecer ds =
MyOOM.DataSources.CreateNew()
ds.SetNameAndCode "MyPDM", "PDM"
ds.AddSource MyPDM

'Crear un mapeo entre C1 y T6


establecer m1 =
ds.CreateMapping(MyOOM.FindChildByName("Class1",cls_class))
m1.AddSource MyPDM.FindChildByName("Table6",cls_table)
' Recuperar asignaciones para cada clase en el OOM
Para cada c en MyOOM.Classes
Dim m, sc
establecer m = ds.GetMapping(c)
Si no m no es nada entonces
Salida c.Name & vbtab & "Asignado a: " para
cada sc en m.SourceClassifiers salida vbtab &
vbtab & "- " & sc.Name siguiente
Demás
Salida c.Name & vbtab & "No se definió asignación".
Terminara si
Próximo
Para obtener más información sobre la asignación de objetos, consulte la Guía de funciones
principales > Vinculación y sincronización de modelos > Asignaciones de objetos.

362 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Creación y generación de informes (secuencias de


comandos)

Puede crear un informe, examinar su contenido y generarlo como HTML o RTF mediante
secuencias de comandos.
Para crear un informe, utilice el método CreateReport() en un modelo. Por ejemplo:
modelo tenue
Establecer modelo = modelo
ActiveModel.CreateReport("MyReport")

Para examinar los informes de un modelo, utilice la colección Informes. Por ejemplo:
modelo tenue
Establecer modelo = ActiveModel
Para cada m en modelo.Informes
Salida m.Nombre
Próximo

Para generar un informe como RTF o HTML, utilice el método GenerateRTF() o


GenerateHTML():
establecer m =
ActiveModel para cada
r en m.Reports
nombre de archivo = "C:\temp\" & r.Nombre & ".htm"
r.GenerateHTML (nombre de archivo)
Próximo
Manipulación del repositorio (secuencias de comandos)

Puede conectarse al repositorio y registrar documentos dentro y fuera de él mediante un script


e iterar en las últimas versiones de los documentos del repositorio a través del objeto
RepositoryConnection. Puede administrar las carpetas y sucursales del repositorio y los
servidores LDAP y SMTP y la política de contraseñas del repositorio, pero no puede
manipular los usuarios y grupos del repositorio.
El siguiente script abre una conexión de repositorio, crea un nuevo PDM y lo registra, y
luego recorre la creación de tablas y consolidaciones adicionales, antes de cerrar la conexión:

Personalización y ampliación de PowerDesigner 363


CAPÍTULO 7: Scripting PowerDesigner

tenue rc
Establecer rc = RepositoryConnection
rc.Open "NOMBRE DEL REPOSITOR", "USUARIO", "PW", "DBUSER", "DBPW"
Salida "Antes de la consolidación"
ListChildren rc
Dim nuevo modelo
Establecer NewModel = CreateModel(PdPDM.Cls_Model,
"|Idioma=SYASIQ1540")
NewModel.Name = "Mi PDM"
NewModel.ConsolidateNew rc
Para i = 1 a 5
Para j = 1 a 5
NuevoModelo.Tablas.CrearNuevo()
Próximo
NuevoModelo.Consolidar
Próximo
Salida "Después de la consolidación"
ListChildren rc
rc.Cerrar

SublistaNiños(rc)
Para cada c en rc.ChildObjects
Salida c.Nombre & "(Modificado: " & c.ModificationDateInRepository &
")"
Próximo
Finalizar sub
Para comprobar un modelo, utilice el método CheckOut.
Para obtener información detallada sobre los miembros, las colecciones y los métodos
disponibles para generar secuencias de comandos en el repositorio, seleccione Ayuda >
Ayuda de objetos de MetaModel y navegue hasta Bibliotecas/PdRMG.

Generación de una base de datos (secuencias de


comandos)

Puede generar un PDM como un script SQL o directamente a una conexión de base de datos
en vivo usando el
Método GenerarBase de Datos(). Puede generar datos de prueba
con el método GenerateTestData().
El siguiente fragmento de secuencia de comandos abre un PDM de ejemplo y luego llama a
procedimientos para generar varias secuencias de comandos:

364 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Dim GenDir, MyModel


GenDir = "C:\temp\"
Establezca MyModel=OpenModel(EvaluateNamedPath("%_EXAMPLES%\" &
"proyecto.pdm"))

GenerateDatabaseScripts MyModel 'Genera un script SQL para crear la


base de datos
ModifyModel MyModel 'Modifica cada tabla en el modelo
GenerateAlterScripts MyModel - Genere scripts modificados para
modificar la base de datos
GenerateTestDataScript MyModel: genere datos de prueba para cargar
en la base de datos
Este procedimiento genera un script SQL para crear la base de datos:
Subgenerar scripts de base de datos (m)
Opciones tenues
Establecer opciones = m.GetPackageOptions()
InteractiveMode = im_Batch ' Evite mostrar la ventana de generación
opts.GenerateODBC = False ' Forzar la generación de secuencias de
comandos sql en lugar de ODBC
opts.GenerationPathName = GenDir opts.GenerationScriptName
= "MyScript.sql"
m.GenerateDatabase ' Inicia la función Generar base de datos End
Sub
Para generar una conexión de base de datos en vivo, se conectaría a la base de datos (usando
el
método ConnectToDatabase()) y luego establezca la propiedad
GenerateODBC en true.

Nota:Para obtener más información sobre las opciones de generación, seleccione Ayuda >
Ayuda de MetaModel Objects y vaya a Bibliotecas/PdPDM/BasePhysicalPackageOptions.

Este procedimiento modifica el modelo agregando una nueva columna a cada tabla:
Sub ModifyModel(m)
dim pTable, pCol
Para cada pTable en m.Tables
Establecer pCol = pTable.Columns.CreateNew()
pCol.SetNameAndCode "az" y pTable.Name, "AZ" y pTable.Code
pCol.Obligatorio = Falso
Próximo
Finalizar sub
Este procedimiento genera un script alter para modificar la base de datos:

Personalización y ampliación de PowerDesigner 365


CAPÍTULO 7: Scripting PowerDesigner

Sub GenerarAlterScripts(m)
Opciones de atenuación
Establecer pOpts = m.GetPackageOptions()
InteractiveMode = im_Batch ' Evite mostrar la ventana de generación
' establecer las opciones de generación usando las opciones del
paquete del modelo
pOpts.GenerateODBC = False ' Forzar la generación de secuencias de
comandos sql en lugar de ODBC
pOpts.GenerationPathName = GenDir
pOpts.DatabaseSynchronizationChoice = 0 'forzar apm ya guardado
como fuente
pOpts.DatabaseSynchronizationArchive = GenDir & "model.apm"
pOpts.GenerationScriptName = "MyAlterScript.sql"
m.ModifyDatabase ' Iniciar la función Modificar base de
datos End Sub
Este procedimiento genera datos de prueba para cargar en la base de datos:
Sub GenerarTestDataScript(m)
Opciones de atenuación
Establecer pOpts = m.GetPackageOptions()
InteractiveMode = im_Batch ' Evitar mostrar la ventana de
generación ' configurar las opciones de generación usando las
opciones del paquete modelo
pOpts.TestDataGenerationByODBC = False ' Forzar la generación de
secuencias de comandos sql en lugar de ODBC
pOpts.TestDataGenerationDeleteOldData = False
pOpts.TestDataGenerationPathName = GenDir
pOpts.TestDataGenerationScriptName = "MyTestData.sql"
m.GenerateTestData ' Inicia la función Generar datos de
prueba End Sub

Ingeniería inversa de una base de datos (scripting)

Puede conectarse a una base de datos mediante el método ConnectToDatabase() y aplicar


ingeniería inversa al esquema en un PDM mediante ReverseDatabase().
Para conectarse a una base de datos a través de un origen de datos de usuario o sistema,
defina una constante en el formato "ODBC:datasourcename" . Por ejemplo:
Const cnxDSN = "ODBC:muestra ASA 9.0"

Para usar un archivo de origen de datos, defina una constante con la ruta completa al archivo
DSN. Por ejemplo:
Const cnxDSN = "\\romeo\public\DATABASES\_filedsn
\sybase_asa9_muestra.dsn"

Este script crea un nuevo PDM, se conecta a una base de datos a través de una fuente de
datos del sistema, establece opciones de reversión y revierte todos los objetos al PDM:

366 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

' Definir fuente de datos ODBC y archivo PDM


Const cnxDSN = "ODBC: Mi base de datos"
Const cnxUSR = "MiUsuario"
Const cnxPWD = "Mi Contraseña"
Const filename = "C:\temp\MyReversedDB.pdm"

Dim pModel, pOpt


'Crear modelo con DBMS apropiado
Establezca pModel=CreateModel(PdPDM.cls_Model, "|DBMS=Sybase SQL
Anywhere
12")
'Ocultar diálogos
ModoInteractivo = im_Batch

'Conectar a la base de datos


pModel.ConnectToDatabase cnxDSN, cnxUSR, cnxPWD
' Establecer opciones inversas para invertir todos los objetos
enumerados a través de ODBC
Establecer pOpt = pModel.GetPackageOptions()
pOpt.ReversedScript = False
pOpt.ReverseAllTables = true
pOpt.ReverseAllViews = true
pOpt.ReverseAllStorage = true
pOpt.ReverseAllTablespace = true
pOpt.ReverseAllDomain = true
pOpt.ReverseAllUser = true
pOpt.ReverseAllProcedures = true
pOpt.ReverseAllTriggers = true
pOpt.ReverseAllSystemTables = true
pOpt.ReverseAllSynonyms = verdadero

' Invierte la base de datos en el modelo y luego guarda el modelo


pModel.ReverseDatabase pModel.save(nombre de
archivo)

Creación y acceso a extensiones (secuencias de


comandos)

Puede crear extensiones por script para definir propiedades adicionales, nuevas metaclases,
formularios y cualquier otro tipo de extensión al metamodelo estándar.
El siguiente ejemplo crea un EAM, luego crea una extensión dentro de él, define un nuevo
tipo de objeto llamado tableta derivado de la metaclase MobileDevice y crea un atributo
extendido y un nuevo formulario personalizado para él:

Personalización y ampliación de PowerDesigner 367


CAPÍTULO 7: Scripting PowerDesigner

Dim MyModel, MyExt, MyStype, MyExAtt, MyForm, FormDef


set MyModel =
CreateModel(PdEAM.Cls_Model,"Diagram=TechnologyInfrastructureDiagra
metro")
MiModelo.SetNameAndCode "MiEAM", "MiEAM"
'Crear extensión
Establecer MyExt = MyModel.ExtendedModelDefinitions.CreateNew()
MiExt.Nombre = "MiExtensión"
MiExt.Código = "MiExtensión"
'Crear estereotipo
Establecer MyStype = MyExt.AddMetaExtension(PdEAM.Cls_MobileDevice,
Cls_StereotypeTargetItem)
MiEstilo.Nombre = "Tableta"
MiEstilo.UseAsMetaClass = verdadero
'Crear atributo extendido
Establecer MiExAtt =
MiEstilo.AddMetaExtension(Cls_ExtendedAttributeTargetItem)
MyExAtt.Name = "Tipo de tableta"
MiExAtt.Label = "Tipo"
MyExAtt.DataType = "12" ' (String) Para obtener una lista completa
de valores,
' ver ExtendedAttributeTargetItem en la ayuda de objetos Metamodel
MyExAtt.ListOfValues = "iPad;Android;Playbook;Windows8"
MiExAtt.Valor = "iPad"
'Crear formulario para reemplazar la pestaña General
Establecer MyForm = MyStype.AddMetaExtension(Cls_FormTargetItem)
MiFormulario.Nombre = "ReemplazarGeneral"
MiFormulario.FormType = "GENERAL"
'Ensamblar definición de formulario
FormDef = "<Form><StandardNameAndCode Attribute=""NameAndCode"" />"
& vbcrlf
FormDef = FormDef + "<Atributo de atributo estándar=""Comentario""
/>" & vbcrlf
FormDef = FormDef + "<ExtendedAttribute Attribute=""TabletType"" />"
& vbcrlf
FormDef = FormDef + "<StandardAttribute Attribute=""KeywordList"" /
></Form>"
MiFormulario.Valor = FormDef
Puede obtener y establecer valores de atributos extendidos usando los siguientes métodos:
• ObtenerAtributoExtendido("recurso.atributo")
• ObtenerTextoAtributoExtendido("recurso.atributo")
• Establecer atributo extendido "recurso.atributo" "valor"
• Establecer texto de atributo extendido "recurso.atributo" "valor"

Puede acceder a colecciones definidas en una extensión usando los siguientes métodos:

368 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

• ObtenerColecciónPorEstereotipo("estereotipo": para nuevos tipos


de objetos definidos en un archivo de destino o de extensión
(consulte Promoción de un estereotipo a estado de metaclase
en la página 39).
• ObtenerColecciónExtendida("colección.de.recursos") - para
colecciones y composiciones extendidas (consulte Colecciones
y composiciones extendidas (Perfil) en la página 48).
• ObtenerColecciónCalculada("colección.de.recursos") - para
colecciones calculadas (ver Colecciones calculadas (Perfil)
en la página 50).
• ObtenerColecciónPorNombre("colección.de.recursos")-para cualquier
tipo de colección.

El siguiente script usa el método GetCollectionByStereotype() para acceder a la colección


de tabletas y el método SetExtendedAttribute para establecer el tipo de tableta:
Columna tenue, objeto
'No se puede acceder directamente a la colección de
tabletas set col =
ActiveModel.GetCollectionByStereotype("Tablet")
'Crear una matriz para contener los valores para asignar a las
propiedades de la tableta Dim myArray(3)
myArray(0) = "Tablet1, T1, PlayBook"
myArray(1) = "Tablet2, T2, Android"
myArray(2) = "Tablet3, T3, iPad"
myArray(3) = "Tablet4, T4, iPad"
CreateObjects col, miArray

'Procedimiento para asignar valores a propiedades


Sub CreateObjects(compColl, dataArray)
Para cada línea en dataArray
Dim myProps
myProps = split(line, ",") set obj
= compColl.CreateNew()
obj.Nombre = misAccesorios(0)
obj.Código = misAccesorios(1)
'Sintaxis especial para configurar el atributo extendido
obj.SetExtendedAttribute "MYEXT.TabletType", myProps(2) Next
Finalizar sub
Acceso a metadatos (secuencias de comandos)

Puede explorar la estructura del metamodelo de PowerDesigner como un modelo


independiente o a partir de instancias de objetos en su modelo.
Para obtener información general sobre el acceso y la navegación en el metamodelo, consulte
el Capítulo 8, El metamodelo público de PowerDesigner en la página 343. Las metaclases
(como

Personalización y ampliación de PowerDesigner 369


CAPÍTULO 7: Scripting PowerDesigner
CheckModelInternalMessage y FileReportItem) que no son
accesibles por
script son visibles en Metamodel.oom, pero llevan el estereotipo <<notScriptable>> y no se
enumeran en el archivo de ayuda de Metamodel Object.
Puede acceder a las metaclases, los metaatributos y las metacolecciones al iterar sobre las
colecciones que descienden de la raíz del MetaModel o individualmente a través de los
siguientes métodos:

• GetMetaClassByPublicName (nombre): para acceder a una metaclase por su nombre


público.
• GetMetaMemberByPublicName (nombre) - para acceder a un metaatributo o una
metacolección por su nombre público
El siguiente script atraviesa el metamodelo por biblioteca y enumera cada clase concreta:
para cada l en
MetaModel.Libraries para cada c
en l.Classes si c.Abstract =
false entonces
Salida l.PublicName + "." + c.PublicName final
si sigue siguiente

El siguiente script localiza la raíz de BaseClass y muestra los primeros dos niveles de
herencia debajo de ella:
establecer root =
MetaModel.GetMetaClassByPublicName("PdCommon.BaseObject") para cada
c en root.Children salida c.PublicName para cada cc en c.Children
salida " " + cc.PublicName siguiente siguiente

El siguiente script obtiene una tabla en un PDM y luego muestra la metaclase de la cual el
objeto es una instancia, la metaclase principal y la metabiblioteca de la metaclase, y todos
los atributos y colecciones que están disponibles en esa metaclase:
objeto tenue
Establecer objeto =
ActiveModel.FindChildByName("myTable",cls_Table)
Salida "Objeto:" + objeto.Nombre

metaclase tenue
Establecer metaclase = objeto.MetaClase
Salida "Metaclase:" + metaclase.PublicName
Salida "Padre:" + metaclase.Padre.PublicName
Salida "Metalibrary:" + metaclass.Library.PublicName
Salida "Atributos:"
Para cada atributo en metaclass.attributes
Salida " - " + attr.PublicName
Próximo
Salida "Colecciones:"
Para cada col en metaclass.colecciones

370 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

Salida "-" + coll.PublicName


Siguiente

Las propiedades y las colecciones son de solo lectura para todos los objetos del metamodelo.
Complementos y automatización OLE

OLE Automation proporciona una forma de comunicarse con PowerDesigner desde otra
aplicación utilizando la arquitectura COM. Puede escribir un programa utilizando cualquier
lenguaje compatible con COM, como macros de Word o Excel, VB, C++ o PowerBuilder.
Puede crear ejecutables que llamen a PowerDesigner o complementos que llame
PowerDesigner.
Los programas de VBScript que se ejecutan desde dentro de PowerDesigner y los programas
de automatización OLE son muy similares, pero OLE requiere que trabaje a través de un
objeto de aplicación de PowerDesigner y use una escritura más fuerte. Usted debe:
• Cree una instancia del objeto de la aplicación PowerDesigner y suéltelo cuando finalice
su secuencia de comandos:
Dim PD como PdCommon.Application
Establecer PD = CreateObject("PowerDesigner.Application")
'Ingrese el guión aquí
'Una vez que finaliza el script, libera el
objeto PD Establecer PD = Nada
Si PowerDesigner se está ejecutando actualmente, se utilizará esta instancia; de lo
contrario, se lanzará una nueva instancia. Si no especifica un número de versión, se utiliza
la versión más reciente. Para especificar una versión específica, utilice la sintaxis:
Establecer PD = CreateObject("PowerDesigner.Application.versión")
• Prefije todas las propiedades y funciones globales (consulte Manipulación de modelos,
colecciones y objetos (secuencias de comandos) en la página 312) con el objeto
Aplicación de PowerDesigner. Por ejemplo, para acceder al modelo con foco usando un
objeto de aplicación de PowerDesigner llamado PD, use la siguiente sintaxis:
PD.ActiveModel

Personalización y ampliación de PowerDesigner 371


CAPÍTULO 7: Scripting PowerDesigner

• Especifique los tipos de objetos siempre que sea posible. Por ejemplo, en lugar de
simplemente usar Dim cls, debe usar:
Dim cls como PdOOM.Class

Si su modelo contiene accesos directos, le recomendamos que utilice la siguiente sintaxis


para evitar errores de tiempo de ejecución cuando el modelo de destino está cerrado:
Dim obj como PdCommon.IdentifiedObject
• Adapte la sintaxis de ID de clase de objeto al idioma cuando cree el objeto. Para
VBScript, VBA y VB y otros lenguajes que admiten la enumeración definida fuera de
una clase, puede usar la sintaxis:
Dim cls como PdOOM.Class
Establecer cls = modelo.CrearObjeto(PdOOM.cls_Class)

Para C# y VB.NET, puede usar la siguiente sintaxis (donde PdOOM_Classes es el


nombre de la enumeración):
Dim cls As PdOOM.Class
Establecer cls =
modelo.CrearObjeto(PdOOM.PdOOM_Classes.cls_Class)
Para otros lenguajes como JavaScript o PowerBuilder, debe definir constantes que
representen los objetos que desea crear. Para obtener una lista completa de las constantes
de ID de clase, consulte el archivo VBScriptConstants.vbs en el directorio de
automatización OLE de PowerDesigner.
• Agregue referencias a las bibliotecas de tipos de objetos que necesita usar. Por ejemplo,
en un editor de VBA, seleccione Herramientas > Referencias:

Este script se inicia desde fuera de PowerDesigner, crea una instancia del objeto Aplicación
de PowerDesigner y luego lo usa para crear dos OOM a través de OLE Automation:

372 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

'* Propósito: este script muestra el número de clases definidas en


un OOM en la ventana de salida.
Opción explícita
' Función principal
Prueba VBT secundaria ()
' Definido el objeto de la aplicación PowerDesigner
Dim PD como PdCommon.Application
' Obtener el objeto de la aplicación PowerDesigner
Establecer PD = CreateObject("PowerDesigner.Application")
'Obtener el modelo activo actual
Dim modelo como PdCommon.BaseModel
Establecer modelo = PD.ActiveModel
Si el modelo no es nada entonces
MsgBox "No hay modelo actual."
ElsIf Not model.IsKindOf(PdOOM.cls_Model) Entonces
MsgBox "El modelo actual no es un modelo OOM".
Demás
' Mostrar el número de clases Dim
nbClass
nbClass = Modelo.Clases.Cuenta
PD.Salida "El modelo '" + modelo.Nombre + "' contiene " +
CStr(nbClass) + "clases".
'Crear un nuevo MOO
Dim model2 como PdOOM.Class
Establecer modelo2 = PD.CreateModel(PdOOM.cls_Model)
If Not model2 Is Nothing Then '
Copiar el nombre del autor
model2.Author = Model.Author
'Mostrar un mensaje en la ventana de salida
PD.Output "Se creó con éxito el modelo '" + model2.Name + "'".
Demás
MsgBox "No se puede crear un OOM".
Terminara si
Terminara si
' Liberar el objeto de la aplicación PowerDesigner
Establecer PD = Nada
Finalizar sub
Las muestras de automatización OLE para diferentes idiomas se proporcionan en el
directorio de automatización OLE dentro del directorio de instalación de PowerDesigner.

Creación de un complemento ActiveX


Puede crear complementos ActiveX para proporcionar funciones adicionales a
PowerDesigner y llamarlos a través de los elementos del menú.
Para operar como un complemento de PowerDesigner, el complemento ActiveX debe
implementar la interfaz IPDAddIn, que define los siguientes métodos, invocados por
PowerDesigner para dialogar con los menús y ejecutar los comandos definidos por el
complemento:

Personalización y ampliación de PowerDesigner 373


CAPÍTULO 7: Scripting PowerDesigner

• HRESULT Initialize([in] IDispatch * pApplication) y HRESULT


Uninitialize(): el método Initialize() inicializa la
comunicación entre PowerDesigner y el complemento.
PowerDesigner proporciona un puntero a su objeto de
aplicación, definido en la biblioteca de tipos PdCommon, que
le permite acceder al entorno de PowerDesigner (ventana de
salida, modelo activo, etc.). Se llama al método
Uninitialize() cuando se cierra PowerDesigner para liberar
todas las variables globales y limpiar todas las referencias
a los objetos de PowerDesigner.
• BSTR ProvideMenuItems([en] BSTR sMenu, [en] IDispatch
*pObj): se invoca cada vez que PowerDesigner necesita
mostrar un menú y devuelve un texto XML que describe los
elementos del menú para mostrar. Se llama una vez sin un
parámetro de objeto en la inicialización de PowerDesigner
para llenar los menús Importar e Invertir. Cuando hace clic
con el botón derecho en un símbolo en un diagrama, este
método se llama dos veces: una para el objeto y otra para
el símbolo. Por lo tanto, puede crear un método que solo se
invoque en los menús contextuales gráficos.
La DTD para la definición del menú es la siguiente:
<!Menú ELEMENT (Comando | Separador | Emergente)*>
<!Comando ELEMENTO>
<!Comando ATTLIST
Nombre CDATA #REQUERIDO
Leyenda CDATA #REQUERIDO>
<!ELEMENTO Separador>
<!ELEMENT PopUp (Comando | Separador | Ventana emergente)*>
<!ATTLIST ventana emergente
Leyenda CDATA #REQUERIDO>
Por ejemplo:
ProvideMenuItems ("Objeto", pModel)

devuelve el siguiente texto:


<Menú>
<Popup Caption="&Force">
<Command Name="Ingresar" Caption="Ingresar"/>
<Separador/>
<Command Name="CheckOut" Caption="Check &Out"/>
</POPUP>
</MENÚ>
• BOOL IsCommandSupported([in] BSTR sMenu, [in] IDispatch *
pObject, [in] BSTR sCommandName): le permite desactivar
dinámicamente los comandos definidos en un menú. El método

374 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner
debe devolver verdadero para habilitar un comando y falso
para deshabilitarlo.
• HRESULT DoCommand(en BSTR sMenu, en IDispatch *pObj, en
BSTR sCommandName): implementa la ejecución de un comando
designado por su nombre. Por ejemplo:
DoCommand ("Objeto", pModel, "Ingresar")

Nota:Para usar su complemento, guárdelo en el directorio Complementos debajo de su


directorio de instalación de PowerDesigner y actívelo a través de la ventana Opciones
generales de PowerDesigner (consulte Guía de funciones principales > Modelado con
PowerDesigner > Personalización de su entorno de modelado > Opciones generales >
Complementos ).

Creación de un complemento de archivo XML


Puede crear complementos XML para agrupar varios comandos para llamar a programas
ejecutables o secuencias de comandos VB y agregarlos a los menús de PowerDesigner.
La siguiente ilustración le ayuda a comprender la estructura del archivo XML:

Personalización y ampliación de PowerDesigner 375


CAPÍTULO 7: Scripting PowerDesigner

Nota:

La DTD está disponible en PD_installdir\Add-ins\XMLAddins.dtd.


El perfil es el elemento raíz del descriptor del complemento del archivo XML y puede
contener:

• Un elemento Shared, que define los menús que siempre están disponibles y sus
métodos asociados, junto con un atributo GlobalScript, que puede contener un script
global para funciones compartidas.
• Uno o más elementos de metaclase, que definen comandos y menús para una
metaclase específica, identificados por su nombre público precedido por su nombre
público de biblioteca de tipos.
Ambos elementos pueden contener subelementos de la siguiente manera:
• Los menús contienen elementos de menú que especifican una
ubicación, que puede ser una de las siguientes:
• FileImport - solo compartido
• FileExport - solo metaclase
• FileReverse: solo compartido
• Herramientas

376 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

• Ayuda
• Objeto: solo metaclases (predeterminado) Cada elemento del menú puede contener:
• Un elemento Command - cuyo Nombre debe ser igual al nombre de un Método, y
cuyo Caption define el nombre del comando que aparece en el menú.
• Un elemento Separador, que indica que desea insertar una línea en el menú.
• Un elemento emergente, que define un elemento de submenú que, a su vez, puede
contener comandos, separadores y ventanas emergentes.
• Métodos contiene elementos Método, que definen los métodos
utilizados en los menús, y que se definen mediante un
nombre y un VBScript. Un método definido bajo una
metaclase tiene el objeto actual como parámetro. Se tiene
en cuenta la herencia, por lo que un menú definido en la
metaclase PdCommon.NamedObject estará disponible en
PdOOM.Class.
El siguiente ejemplo define dos elementos de menú para el repositorio de Perforce y los
métodos que llaman:
<?versión xml="1.0" codificación="UTF-8"?>
<Perfil>
<Metaclase Nombre="PdOOM.Modelo">
<Menús>
<Ubicación del menú="Herramientas">
<Popup Caption="Forzar">
<Command Name="Ingresar" Caption="Ingresar"/>
<Separador/>
<Command Name="Pagar" Caption="Pagar"/>
</Ventana emergente>
</Menú>
</Menús>
<Métodos>
<Method Name="CheckIn"> Sub
%Method%(obj)
ejecutar_comando(p4, enviar %Nombre de archivo%, cmd_PipeOutput)
Finalizar Sub </Método>
<Method Name="CheckOut"> Sub
%Method%(obj)
ejecutar_comando( p4, editar %Nombre de archivo%, cmd_PipeOutput)
Finalizar Sub </Método>
</Métodos>
</Metaclase>
</Perfil>
El siguiente ejemplo define un script global al que hace referencia un método definido en
una metaclase:
<?versión xml="1.0" codificación="UTF-8"?>
<Perfil>
<Compartido>
<GlobalScript>

Personalización y ampliación de PowerDesigner 377


CAPÍTULO 7: Scripting PowerDesigner
Opción explícita
Función Imprimir (obj)
Salida obj.classname & " " &erio; nombre.obj
función final
</GlobalScript>
</Compartido>
<Metaclase Nombre="PdOOM.Clase">
<Menús>
<Menú>
<Popup Caption="Transformación">
<Command Name="ToInt" Caption="Convertir a interfaz"/>
<Separador/>
</Ventana emergente>
</Menú>
</Menús>
<Métodos>
<Nombre del método="ToInt">
Sub %Método%(obj)
Imprimir objeto
EjecutarComando("%MORFEO%\ToInt.vbs",
"", cmd_InternalScript)
Finalizar Sub </Método>
</Métodos>
</Metaclase>
</Perfil>

Nota:Para usar su complemento, guárdelo en el directorio Complementos debajo de su


directorio de instalación de PowerDesigner y actívelo a través de la ventana Opciones
generales de PowerDesigner (consulte Guía de funciones principales > Modelado con
PowerDesigner > Personalización de su entorno de modelado > Opciones generales >
Complementos ).

Lanzamiento de scripts y complementos desde los menús

Puede ampliar los menús de PowerDesigner para agregar comandos para invocar scripts
definidos en archivos de recursos o externamente y para iniciar ejecutables y complementos
ActiveX. Los complementos XML se pueden usar para agrupar y organizar varios comandos.
Puede ampliar los menús Archivo, Herramientas y Ayuda, y los menús contextuales
disponibles en los objetos del Navegador y los diagramas.
Puede modificar los menús de PowerDesigner de las siguientes formas:

378 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

• Comandos personalizados: se definen directamente en PowerDesigner y pueden llamar


a programas ejecutables o secuencias de comandos VB (consulte Agregar comandos al
menú Herramientas en la página 339).
• Extensiones de menú y método: se especifican en un DBMS o definición de lenguaje o
archivo de extensión y definen comandos para un objetivo o tipo de modelo específico
(consulte Menús (Perfil) en la página 81).
• Complementos de ActiveX: están escritos en lenguajes como VB, C#, C++ o cualquier
lenguaje compatible con COM, y permiten interacciones más complejas con
PowerDesigner, como habilitar y deshabilitar elementos de menú en función de la
selección de objetos y la interacción con el entorno de visualización de Windows (
consulte Creación de un complemento ActiveX en la página 334).

Nota:La sintaxis XML que se usa para definir menús en un complemento ActiveX o
XML es la misma que se usa en la creación de una extensión de menú, y puede usar la
página XML del menú del editor de recursos (consulte Menús (Perfil) en la página 81)
como ayuda. usted construye la sintaxis para sus complementos.

• Complementos XML: defina varios comandos para llamar a programas ejecutables o


scripts de VB. Los comandos vinculados a las mismas aplicaciones (por ejemplo, ASE,
IQ, etc.) deben recopilarse en el mismo archivo XML (consulte Creación de un
complemento de archivo XML en la página 335).

Adición de comandos al menú de herramientas


Puede crear sus propios elementos de menú en el menú Herramientas de PowerDesigner para
acceder
Objetos de PowerDesigner utilizando sus propios scripts o programas ejecutables. Puede
definir hasta
256 comandos en el cuadro de diálogo Personalizar comandos y controlar los contextos
(modelo, diagrama y tipo de objetivo) en los que aparecen.

1. Seleccione Herramientas > Ejecutar comandos > Personalizar comandos y haga clic en
la herramienta Agregar una fila.
2. Introduzca las siguientes propiedades:
Propiedad Descripción

Nombre Especifica el nombre del comando que aparecerá en el menú. Los


nombres deben ser únicos y pueden contener una letra de selección
(&Generar Java aparecerá como Generar Java)

Personalización y ampliación de PowerDesigner 379


CAPÍTULO 7: Scripting PowerDesigner

Submenú Especifica un submenú en el que colocar el comando. Puede ingresar el


suyo propio o seleccionar uno de:
• <Ninguno>: directamente en Herramientas > Ejecutar comandos
• Consultar modelo
• Exportar
• Generación
• Importar: también aparece en Archivo > Importar
• Inversa: también aparece en Archivo > Ingeniería inversa

Propiedad Descripción

Contexto Especifica cuándo está disponible el comando. Por defecto, el comando


está disponible en todo momento (*/*/*). Haga clic en el botón de
puntos suspensivos para restringir la visualización del comando a un
determinado:
• Tipo de modelo - por ejemplo OOM/*/*
• Modelo y tipo de diagrama: por ejemplo, OOM/diagrama de clases/
*
• Modelo, diagrama y tipo de destino: por ejemplo, OOM/diagrama de
clases/Java. De forma predeterminada, la lista contiene extensiones
disponibles para el tipo de modelo elegido. Haga clic en la
herramienta Ruta para navegar a otra carpeta que contenga
extensiones o DBMS o archivos de definición de idioma.

Tipo Especifica si el comando iniciará un ejecutable o VBScript.

Línea de comando Especifica la ruta al ejecutable o archivo de secuencia de comandos para


ejecutar. Haga clic en el botón de puntos suspensivos para navegar a un
archivo. Si su archivo es un VBScript, puede revisar o editar el script
haciendo clic en la herramienta Editar con en la barra de herramientas.
Comentario Especifica el texto que se muestra en la barra de estado cuando selecciona
el comando.

380 PowerDesigner
CAPÍTULO 7: Scripting PowerDesigner

[S]cómo en el Especifica que se debe mostrar el comando. Anule la selección de este


menú campo para ocultar el comando y conservar su definición.

Tecla aceleradora Asocia uno de los diez atajos de teclado reservados Ctrl-Shift-0 a
CtrlShift-9 con el comando.

3. Haga clic en Aceptar para guardar sus cambios.


Su comando ahora está disponible en Herramientas > Ejecutar comandos.

Nota:Los comandos personalizados se guardan de forma predeterminada en el Registro


en
HKEY_CURRENT_USER\Software\Sybase\PowerDesignerv
\PlugInCommands\submenúy están disponibles solo para el usuario que los define.
Para que estén disponibles para todos los usuarios, cree una entrada en la misma
ubicación en

Personalización y ampliación de PowerDesigner 381


CAPÍTULO 7: Scripting PowerDesigner
HKEY_LOCAL_MACHINE.
El nombre de la entrada es el nombre del comando y su valor adopta la siguiente
sintaxis, en la que solo el parámetro de la línea de comando es obligatorio y debe
terminar con | (tubería) carácter
[Ocultar:][Clave:acelerador:][Guion:]línea de comando[
|comentario]

Si desea insertar una tubería dentro de un comando, debe escapar con una segunda
tubería.

382 PowerDesigner
CAPÍTULO 8El metamodelo público de
PowerDesigner

El metamodelo público de PowerDesigner es una abstracción de los metadatos de todos los


Modelos de PowerDesigner, que describen los elementos de un modelo y la sintaxis y la
semántica de su manipulación.
Puede revisar el metamodelo público en PowerDesigner abriendo el directorio de instalación
\Examples\MetaModel.oom, y busque documentación exhaustiva de
todos los objetos, colecciones y métodos de metamodelo
disponibles a través de secuencias de comandos, seleccionando
Ayuda > Ayuda de objetos de metamodelo (consulte Uso del
archivo de ayuda de objetos de metamodelo en la página 347).
Este OOM y el archivo de ayuda lo ayudan a comprender la estructura de sus modelos,
especialmente cuando trabaja con:
• Plantillas de lenguaje de plantilla de generación (GTL) (consulte el Capítulo 5,
Personalización de la generación con GTL en la página 245).
• Secuencias de comandos de VB (consulte el Capítulo 7, Creación de secuencias de
comandos de PowerDesigner en la página 305).
• Archivos de modelo XML de PowerDesigner (consulte Formato de archivo de modelo
de PowerDesigner en la página 348).

Personalización y ampliación de PowerDesigner 383


CAPÍTULO 8: El metamodelo público de PowerDesigner

El metamodelo se divide en los siguientes paquetes principales:



PdBPM - Modelo de procesos de negocio
• PdCDM - Modelo de datos conceptuales
• PdCommon: contiene todos los objetos compartidos entre dos o más modelos y las clases
abstractas del modelo. Por ejemplo, en este paquete se definen las reglas comerciales,
que están disponibles en todos los modelos, y la clase BaseObject, de la que se derivan
todos los objetos del modelo. Otros paquetes de modelos están vinculados a PdCommon
mediante vínculos de generalización que indican que cada modelo hereda objetos
comunes del paquete PdCommon.
• PdEAM - Modelo de Arquitectura Empresarial
• PdFRM - Modelo libre
• PdGLM - Modelo de glosario
• PdILM: Modelo de movimiento de datos (el DMM se denominaba anteriormente Modelo
de liquidez de la información o ILM, y el nombre de la biblioteca PdILM se ha
conservado por compatibilidad con versiones anteriores)
• PdLDM - Modelo de datos lógicos
• PdMTM - Modelo Merise (disponible solo en francés)
• PdOOM - Modelo orientado a objetos
• PdPDM - Modelo de datos físicos
• PdPRJ - Proyecto
• PdRMG - Repositorio

384 PowerDesigner
CAPÍTULO 8: El metamodelo público de PowerDesigner

• PdRQM - Modelo de requisitos


• PdXSM - Modelo XML
• PdWSP - Espacio de trabajo
Cada uno de estos paquetes de nivel superior contiene los siguientes tipos de subobjetos,
organizados por diagrama o, en el caso de PdCommon, por subpaquetes:
• Funciones: todas las funciones implementadas por clases en el modelo. Por ejemplo,
Report (disponible en todos los modelos) pertenece a PdCommon y AbstractDataType
pertenece a
PdPDM.
• Objetos: objetos de diseño en el modelo.
• Símbolos - Representación gráfica de objetos de diseño

Navegando en el Metamodelo

Puede expandir y contraer los paquetes en el navegador para explorar su contenido. Haga
doble clic en un diagrama para mostrarlo en el lienzo.
Cada metaclase tiene un nombre, contiene cero o más atributos y asume cero o más roles en
asociaciones con otras clases, lo que le permite identificar colecciones. El metamodelo
público de PowerDesigner utiliza conceptos UML estándar:
• Nombres públicos: cada objeto en el metamodelo tiene un nombre y un código
correspondiente al nombre público del objeto, que es el identificador único del objeto
en una biblioteca o paquete modelo. Se hace referencia a los nombres públicos en los
archivos de modelo XML de PowerDesigner y cuando se utilizan GTL y secuencias
de comandos. El nombre público a menudo coincide con el nombre del objeto en la
interfaz de PowerDesigner, pero donde los dos divergen, el nombre público debe
usarse en scripts y plantillas GTL.
• Clases: se utilizan para representar metadatos de las siguientes maneras:
• Clases abstractas: se usan solo para compartir atributos y comportamientos, y no son
visibles en la interfaz de PowerDesigner.
• Clases instanciables/concretas: corresponden a los objetos que se muestran en la
interfaz. Tienen sus propios atributos y comportamientos además de los que heredan
de las clases abstractas a través de enlaces de generalización. Por ejemplo,
NamedObject es una clase abstracta que contiene atributos estándar como Nombre,
Código, Comentario,
Anotación y Descripción, que son heredados por la mayoría
de los objetos de diseño de PowerDesigner.
• Atributos de clase - son propiedades de objetos. Las clases vinculadas a otras clases
con vínculos de generalización suelen contener atributos derivados que se calculan a

Personalización y ampliación de PowerDesigner 385


CAPÍTULO 8: El metamodelo público de PowerDesigner

partir de los atributos o colecciones de la clase principal. Ni los atributos derivados


ni los atributos migrados desde asociaciones navegables se almacenan en el archivo
del modelo. Los atributos no derivados son propios de la clase, se almacenan en el
modelo y se guardan en el archivo del modelo.
• Asociaciones: expresan las conexiones semánticas entre clases. En la hoja de
propiedades de la asociación, los roles contienen información sobre el objeto final de
la asociación. Los objetos de PowerDesigner están vinculados a otros objetos
mediante colecciones, y el rol en el otro extremo de la asociación proporciona el
nombre de la colección de un objeto. Por ejemplo,
NamedOject tiene una colección de reglas comerciales llamada
AttachedRules y BusinessRule tiene una colección de objetos
llamada Objects:

Cuando las asociaciones tienen dos roles, solo la colección con el rol navegable se
guardará en el archivo XML. En el caso, solo se guarda la colección AttachedRules.
• Composiciones: expresa una asociación en la que los hijos viven y mueren con el
padre y, cuando se copia al padre, también se copia al hijo. Por ejemplo, Table tiene
una asociación de composición con la clase Column:

• Generalizaciones: muestra los vínculos de herencia existentes entre una clase más
general, generalmente abstracta, y una clase más específica, generalmente
instanciable. La clase más específica hereda de los atributos de la clase más genérica,
estos atributos se denominan atributos derivados. Por ejemplo, Class hereda de
Classifier

Cada diagrama muestra clases las conexiones entre metaclases a través de asociaciones y
generalizaciones. Las clases en verde se definen en el diagrama actual, mientras que las
clases en púrpura están presentes solo para brindar contexto. Para investigar una clase
morada, haga clic con el botón derecho en ella y seleccione Diagramas relacionados >
diagrama para abrir el diagrama donde está definido.
En el siguiente ejemplo, se define BusinessRule, mientras que NamedObject y BaseModel
están presentes solo para mostrar enlaces de herencia y composición:

386 PowerDesigner
CAPÍTULO 8: El metamodelo público de PowerDesigner

Haga doble clic en cualquier clase para mostrar su hoja de propiedades y revise las siguientes
pestañas:
• General- proporciona el nombre público en los campos Nombre y Código, un
Comentario que proporciona una breve descripción de la clase y muestra si es Resumen.

Nota:Los objetos, como RepositoryGroup, que no admiten secuencias de comandos,


tienen el estereotipo <<notScriptable>>.

• Atributos- enumera las propiedades definidas directamente en la clase, pero no las que
hereda a través de las clases principales.
• Asociaciones- enumera las asociaciones migradas para la clase, que representan
colecciones. La columna Rol B enumera las colecciones de la clase, mientras que la
columna Rol A enumera las colecciones en las que figura la clase.
• Operaciones- enumera los métodos disponibles para secuencias de comandos.
• dependencias- contiene las siguientes subpestañas (entre otras):
• Asociaciones
• generalizaciones- enumera los enlaces de generalización donde la clase actual es la
secundaria y hereda los atributos de una clase principal.
• Especializaciones- enumera los enlaces de generalización donde la clase actual es el
padre y sus hijos heredan atributos de ella.
• Atajos- enumera los accesos directos creados para el objeto actual.
• notas- puede incluir más información sobre las subpestañas Descripción o Anotación.
Usando el archivo de ayuda de Metamodel Objects

PowerDesigner proporciona documentación del metamodelo disponible en Ayuda > Ayuda


de objetos de metamodelo.
El archivo se puede abrir desde el cuadro de diálogo Editar/Ejecutar script (consulte Ejecutar
scripts en

Personalización y ampliación de PowerDesigner 387


CAPÍTULO 8: El metamodelo público de PowerDesigner

PowerDesigner en la página 307) o desde una metaclase en un archivo de recursos (ver


Metaclases (Perfil) en la página 33) haciendo clic en el botón Buscar en la Ayuda de
MetaModel o presionando Ctrl+F1. También se puede abrir desde cualquier hoja de
propiedades del objeto presionando Ctrl+F1 o haciendo clic en el botón Menú de hoja
de propiedades y seleccionando Buscar en la Ayuda de MetaModel.

Los tres nodos de nivel superior contienen la siguiente documentación:


Nodos Lo que puedes encontrar...

Elementos basicos Proporciona información general sobre:


• Colecciones de objetos: proporcionan la forma principal de navegar
por el metamodelo (verExploración y modificación de colecciones
(secuencias de comandos)en la página 314).
• Tipos estructurados: se utilizan para colocar símbolos en diagramas
(verVisualización, formateo y posicionamiento de símbolos
(secuencias de comandos)en la página 320).
• Propiedades, constantes y funciones globales: proporcionan puntos de
entrada para secuencias de comandos (consulteManipulación de
modelos, colecciones y objetos (secuencias de comandos)en la
página 312).

388 PowerDesigner
CAPÍTULO 8: El metamodelo público de PowerDesigner

bibliotecas Proporciona documentación exhaustiva de todas las propiedades,


colecciones y métodos programables para objetos de metamodelo,
organizados por módulo.
Apéndice Incluye una jerarquía expandible que muestra todas las metaclases en el
metamodelo de PowerDesigner, una muestra de código de VBScript y una
lista de las constantes de ID de clase utilizadas para identificar objetos en
ciertos contextos (verAcceso y modificación de objetos y propiedades
(secuencias de comandos)en la página 316).
Para obtener información sobre las propiedades, colecciones y métodos disponibles para una
metaclase en particular, navegue hasta ella en la categoría Bibliotecas o ubíquela en el índice.
Todas las propiedades, colecciones y métodos se enumeran en el índice.
Cada metaclase muestra la jerarquía de ancestros de los que desciende y hereda. Después de
una breve descripción y un símbolo, enumera:
• Miembros específicos: una tabla que enumera las propiedades, colecciones y métodos
definidos directamente en esta metaclase
• Definición completa: que enumera, en tablas separadas, las propiedades, colecciones
y métodos heredados de cada uno de sus ancestros. Por ejemplo, la metaclase Table
(ubicada en Libraries\PdPDM\Table) hereda miembros de:
• PdCommon.BaseObject
• PdCommon.IdentifiedObject
• PdCommon.ExtensibleObject
• PdCommon.NamedObject
• PdCommon.NamedClassifier
• PdPDM.BaseTable
• PdPDM.Ver

Formato de archivo de modelo de PowerDesigner

Los modelos de PowerDesigner están formados por objetos, cuyas propiedades e


interacciones se explican en el metamodelo público. Los modelos se pueden guardar en
formato de archivo binario o XML. Los archivos binarios son más pequeños y
significativamente más rápidos de abrir y guardar, pero los archivos de modelo XML se
pueden editar a mano o mediante programación (y se proporcionan DTD para cada tipo de
modelo en la carpeta DTD en el directorio de instalación).

¡Advertencia!Puede modificar un archivo de modelo XML utilizando un editor de texto o


XML, pero debe tener cuidado, ya que incluso un error de sintaxis menor puede hacer que el
archivo quede inutilizable. Si crea un objeto en un archivo XML copiando y pegando,

Personalización y ampliación de PowerDesigner 389


CAPÍTULO 8: El metamodelo público de PowerDesigner

asegúrese de eliminar el OID duplicado. PowerDesigner asignará automáticamente un OID


al nuevo objeto la próxima vez que abra el modelo.

Los siguientes elementos se utilizan en los archivos XML de PowerDesigner:


• <o:object>: un objeto modelo de PowerDesigner. La primera
vez que se menciona el objeto en una colección, PowerDesigner
le asigna una identificación usando la sintaxis <o:object
Id="XYZ"> (donde XYZ es un identificador único asignado
automáticamente a un objeto cuando se encuentra por primera
vez) o hace referencia a él con la sintaxis <o:object
Ref="XYZ"/>. La definición de objeto solo se usa en
colecciones de composición, donde el objeto principal es
propietario de los elementos secundarios en la asociación.
• <c:colección> - Una colección de objetos vinculados a otro
objeto. Puedes usar el
Metamodelo de PowerDesigner para visualizar las colecciones de un objeto. Por ejemplo
<c:Niños>.
• <a:attribute>: un objeto se compone de una serie de
atributos, cada uno de los cuales puede modificar de forma
independiente. Por ejemplo <a:IDObjeto>.

Los archivos de modelo XML de PowerDesigner tienen un elemento <o:model> en su raíz,


que contiene colecciones definidas en el metamodelo de PowerDesigner. El objeto modelo y
todos los demás elementos de objeto que contiene definen sus atributos y colecciones en
subelementos. La definición de un objeto implica la definición de sus atributos y sus
colecciones.
PowerDesigner verifica cada objeto y profundiza en las colecciones de este objeto para
definir cada nuevo objeto y colección en estas colecciones, y así sucesivamente, hasta que el
proceso encuentra objetos terminales que no necesitan más análisis.
Puede buscar un objeto en el metamodelo utilizando su nombre de objeto en el archivo XML
para comprender mejor su definición. Una vez que haya encontrado un objeto en el
metamodelo, puede leer la siguiente información:
• Cada objeto de PowerDesigner puede tener varias colecciones correspondientes a otros
objetos con los que interactuar, estas colecciones están representadas por las asociaciones
existentes entre los objetos. Los roles de las asociaciones (agregaciones y composiciones
incluidas) corresponden a las colecciones de un objeto. Por ejemplo, cada modelo de
PowerDesigner contiene una colección de dominios denominada Dominios.
Por lo general, las asociaciones tienen un solo rol, el rol se muestra en el lado opuesto de
la clase para la que representa una colección. Sin embargo, el metamodelo también
contiene asociaciones con dos roles, en tal caso, ambas colecciones no se pueden guardar
en el archivo XML. Puede identificar la colección que se guardará desde la hoja de

390 PowerDesigner
CAPÍTULO 8: El metamodelo público de PowerDesigner

propiedades de la asociación: el rol donde se selecciona la casilla de verificación


Navegable se guarda en el archivo.
En el siguiente ejemplo, la asociación tiene dos roles, lo que significa que Classifier tiene
una colección Actors y Actor2 tiene una colección ImplementationClasses:

Si muestra la hoja de propiedades de la asociación, puede ver que la casilla de


verificación Navegable está seleccionada para el rol Clase de implementación, lo que
significa que solo la colección Clase de implementación se guardará en el archivo.

Personalización y ampliación de PowerDesigner 391


CAPÍTULO 8: El metamodelo público de PowerDesigner

• Los atributos con el tipo de datos IOBJECT son atributos en el metamodelo mientras
aparecen como colecciones que contienen un único objeto en el archivo XML. Esto no
es cierto para Padres y Carpetas que no contienen ninguna colección.
Ejemplo: archivo XML OOM simple
En este ejemplo, exploraremos la estructura de un archivo de modelo OOM simple que
contiene dos clases y una asociación.

El archivo comienza con varias líneas que indican XML y detalles relacionados con el
modelo.
El primer objeto que aparece es la raíz del modelo <o:RootObject Id="01">. RootObject es
un contenedor de modelos que se define de forma predeterminada cada vez que crea y guarda
un modelo. RootObject contiene una colección denominada Children que se compone de
modelos.
En nuestro ejemplo, Children contiene solo un objeto modelo que se define de la siguiente
manera:
<o:Identificación del modelo="o2">
<a:Id. de objeto>3CEC45F3-A77D-11D5-BB88-0008C7EA916D</a:Id. de
objeto>
<a:Name>Modelo orientado a objetos_1</a:Name>
<a:Código>OBJECTORIENTEDMODEL_1</a:Código>
<a:FechaCreación>1000309357</a:FechaCreación>
<a:Creador>arturo</a:Creador>
<a:ModificationDate>1000312265</a:ModificationDate>
<a:Modifier>arturo</a:Modifier>
<a:Texto de opciones del modelo>
[Opciones de
modelo] ...
Debajo de la definición del objeto modelo, puede ver la serie de atributos ModelOptions.
Tenga en cuenta que ModelOptions no se limita a las opciones definidas en el cuadro de
diálogo Opciones de modelo de un modelo, reúne todas las propiedades guardadas en un
modelo, como las opciones de generación entre modelos.
Después de ModelOptions, puede identificar la colección <c:ObjectLanguage>. Este es el
lenguaje objeto vinculado al modelo. La segunda colección del modelo es
<c:ClassDiagrams>. Esta es la colección de diagramas vinculados al modelo, en nuestro
ejemplo, solo hay un diagrama definido en el siguiente párrafo:

392 PowerDesigner
CAPÍTULO 8: El metamodelo público de PowerDesigner
<o:ID de diagrama de clase="o4">
<a:Id. de objeto>3CEC45F6-A77D-11D5-BB88-0008C7EA916D</a:Id. de
objeto>
<a:Nombre>Diagrama de clases_1</a:Nombre>
<a:Código>CLASSDIAGRAM_1</a:Código>
<a:FechaCreación>1000309357</a:FechaCreación>
<a:Creador>arturo</a:Creador>
<a:ModificationDate>1000312265</a:ModificationDate>
<a:Modifier>arturo</a:Modifier>
<a:Preferencias de
visualización> ...
Al igual que para las opciones de modelo, la definición de ClassDiagram va seguida de una
serie de atributos de preferencias de visualización.
Dentro de la colección ClassDiagram, se encuentra una nueva colección llamada
<c:Symbols>. Esta colección reúne todos los símbolos del diagrama del modelo. El primer
objeto que se definirá en la colección Símbolos es AssociationSymbol:
<o:AssociationSymbol Id="o5">
<a:CenterTextOffset>(1, 1)</a:CenterTextOffset>
<a:FuenteTextOffset>(-1615, 244)</a:SourceTextOffset>
<a:DesviaciónTextoDestino>(974, -2)</a:DesviaciónTextoDestino>
<a:Rect>((-6637,-4350), (7988,1950))</a:Rect>
<a:ListaDePuntos>((-6637,1950),(7988,-4350))</a:ListaDePuntos>
<a:Estilo de flecha>8</a:Estilo de flecha>
<a:ShadowColor>13158600</a:ShadowColor>
<a:FontList>DISPNAME 0 Arial,8,N

AssociationSymbol contiene colecciones <c:SourceSymbol> y <c:DestinationSymbol>. En


ambas colecciones, los símbolos se mencionan pero no se definen: esto se debe a que
ClassSymbol no pertenece a las colecciones SourceSymbol o DestinationSymbol.
<c:Símbolo fuente>
<o: Símbolo de clase Ref="o6"/>
</c:Símbolo fuente>
<c:DestinoSímbolo>
<o: Símbolo de clase Ref="o7"/>
</c:DestinoSímbolo>

La colección de símbolos de asociación va seguida de la colección <c:Symbols>. Esta


colección contiene la definición de ambos símbolos de clase.
<o:Id. de símbolo de clase="o6">
<a:FechaCreación>1012204025</a:FechaCreación>
<a:ModificationDate>1012204025</a:ModificationDate>
<a:Rect>((-18621,6601), (-11229,12675))</a:Rect>
<a:FillColor>16777215</a:FillColor>
<a:ShadowColor>12632256</a:ShadowColor>
<a:FontList>ClassStereotype 0 Arial,8,N

Personalización y ampliación de PowerDesigner 393


CAPÍTULO 8: El metamodelo público de PowerDesigner

La colección <c:Classes> sigue a la colección <c:Symbols>. En esta colección, ambas clases


se definen con sus colecciones de atributos.
<o:Id. de clase="o10">
<a:Id. de objeto>10929C96-8204-4CEE-911#-E6F7190D823C</a:Id. de
objeto>
<a:Nombre>Pedido</a:Nombre>
<a:Código>Pedido</a:Código>
<a:FechaCreación>1012204026</a:FechaCreación>
<a:Creador>arturo</a:Creador>
<a:ModificationDate>1012204064</a:ModificationDate>
<a:Modifier>arturo</a:Modifier>
<c:Atributos>
<o:Id. de atributo="o14">

El atributo es un objeto terminal: no se requiere más ramificación para definir este objeto.
Cada colección que pertenece a un objeto analizado se expande y analiza y lo mismo ocurre
con las colecciones dentro de las colecciones.
Una vez que se examinan todos los objetos y colecciones, aparecen las siguientes marcas:
</o:ObjetoRaíz>
</Modelo>

394 PowerDesigner
CAPÍTULO 8: El metamodelo público de PowerDesigner

Personalización y ampliación de PowerDesigner 395


Índice

Eliminar 174
Índice Propiedad global ActiveDiagram 312, 320
Operador de resta %-(x,y)% 252 %ActiveModel% variable global 251
! operador de evaluación de Propiedad global ActiveModel 312, 313
potencia 252 != no igual al Colección global ActiveSelection 312
operador 252 Propiedad global ActiveWorkspace 312, 322
? operador de existencia 252 Complemento
.foreach_item ActiveX 334
ejemplo 27 .xems DoCommand
Ver archivos de extensión 334
[ ] operadores 213 Inicializar 334
[] bloque condicional 250 IsCommandSupported 334
* operador de desreferenciación 252 método 334
%*(x,y)% operador de multiplicación 252 ProvideMenuItems 334
operador de división %/(x,y)% 252 Desinicializar
.// macro 267 334 Agregar 144
\\ secuencia de escape 256 complementos 305
\n secuencia de escape 256 ActiveX 334 iniciar
\t secuencia de escape 256 338 Archivo XML
%&(x,y)% campo de bits lógico y operador 335 Método Add()
252 314
&& operador lógico AND 252 AñadirColIndex 160
%% secuencia de escape 256 AddColnCheck 152
+ operador de visibilidad 252 AddColnCheck 152
Operador de suma %+(x,y)% 252 agregar elementos en archivos de recursos 6
< menos que operador 252 Tipos de datos adicionales 110
<= menor o igual que el operador 252 AgregarÚnete 185
= operador de asignación 252 AddMetaExtension() método 329
== igual al operador 252 Método AddObjects() 321
> mayor que el operador 252 Añadir Cotización 136
>= mayor o igual que el operador 252 || Método AddSource() 324
operador lógico OR 252 AddTableCheck 148
ADTComentario 174
Después de crear 144, 189
A Controlador de eventos AfterDatabaseGenerate
Una opción de formato (alinear a la 75, 133
izquierda) 248 .abort_command Controlador de eventos
macro 265 clases abstractas 344 AfterDatabaseReverseEngineer 75,
atributos de tipo de datos 133
abstractos Después de la caída 144
PermitidoADT 176 Después de modificar 144
tipos de datos abstractos .AKCOLN PDM macro 235
ADTComentario 174 Un comentario clave 164
PermitidoADT 174 Pestaña Todos los atributos y colecciones 300
HabilitarAdtOnColn 174 Pestaña Todas las clases 299
HabilitarAdtOnDomn 174 Pestaña Todos los títulos de informes 297
Instalar 174 .ALLCOL PDM macro 236
Variables PDM 224

396 PowerDesigner
Índice

AllowedADT 148, 174, 176 C


AllowNullableColn 164
colecciones calculadas 50 Función
AltEnableAddColnChk 152
global CancelTransaction() 312
Alterar 144
Controlador de eventos CanLinkKind
AlterDBIgnorado 144
75 casos
AlterFooter 138
cambiando en GTL 277
Alterheader 138
.minúscula macro 277
AlterStatementList 144
.mayúsculas macro 277
AlterTableFooter 148
CaseSensitivityUsingQuote 136
AlterTableHeader 148
.cambiar_dir macro 266
Plaza bursátil norteamericana
CharFunc 140
Variables de PDM 227
CheckNull 152
asociaciones 344 Método
Comprobar en compromiso 166
AttachLinkObject() 320
Método CheckOut() 325
Método AttachObject() 320
Coreografía categoría proceso
Conjuntos de iconos de
lenguaje 109
atributos 46 Iconos de valores
atributos de clase
de atributos 46 Atributos 344
344 clases 344
Crear desde una hoja de
Método Clear()
propiedades 15 Colección de
314
atributos 330 Adjuntar
.CLIENTEXPRESSION macro 242
automáticamente 14
CloseDatabase 172 Cluster
Corrección automática 74
160 propiedad de código
.convert_code macro 267
B conversión en GTL 267
Tipos de datos básicos 110 .colección macro 278
AntesCrear 144 colecciones
Antes de crear la base de datos 172 acceder al primer elemento
Controlador de eventos 247 Método Add() 314
BeforeDatabaseGenerate 75, 133 colecciones calculadas 50
Controlador de eventos Método Clear() 314
BeforeDatabaseReverseEngineer 75, .colección macro 278
133 Palabra clave Count 247
Antes de la caída 144 Propiedad Count 314
AntesModificar 144 miembros de conteo 247
BeginTransaction() función global 312 Método CreateNew() 314,
Enlace 152, 173, 187, 188 318 Método CreateNewAt()
Papelera por defecto 173 314 colecciones extendidas
.bloque macro 265 48 composiciones extendidas
Comentario de bloque 135 48 Primera palabra clave 247
BlockTerminator macro .foreach_item 247, 271
135 .bool macro GetCalculatedCollection() método 329
266 booleanos GetCollectionByStereotype() método 329
.bool macro 266 Método GetExtendedCollection() 329
pruebas en GTL Insertar () método 314
266 Palabra clave IsEmpty 247
.romper macro 266 Propiedad del elemento 314

Personalización y ampliación de PowerDesigner 397


Índice

iteración en GTL 271 crear comandos personalizados 338, 339


Propiedad Kind 314 .comment macro 267 comentarios
Propiedad . // 267
MetaCollection 314 .comentario 267 en
Modificación por GTL 267 Confirmar 140
secuencia de comparación de archivos de recursos 7
comandos 314 Método Generación de lenguaje complementario 14, 89
Move() 314 opciones físicas compuestas 209 Tipos de datos
Alcance exterior 255 conceptuales 110 clases concretas 344 bloques
Ámbito principal 255 condicionales 250 .block macro 265 en GTL
Remove() método 314 265
devolución por GTL 278 procesamiento condicional
alcance 255 Propiedad de GTL 275
origen 314 prueba para .if macro 275 conexión a bases de
miembros 247 datos por script 326, 328
ColnPredeterminadoNombre 177 Método ConnectToDatabase() 328
ColnRuleName 177 Consolidar () método 325
ColumnComment 152 columnas Método ConsolidateNew() 325
AddColnCheck 152 Categoría de constantes objeto
AddColnCheck 152 lenguaje 110 ConstName 148, 152,
AltEnableAddColnChk 152 163, 164, 166 restricciones
Enlazar 152 Variables PDM 217 tablas
CheckNull 152 de conversión 1 .convert_code
ColumnComment 152 ConstName macro 267
152 .convert_name macro
DefineColnCheck 152 267 ConvertFunc 140
DropColnCheque 152 copiar archivos de
DropColnComp 152 recursos 7 Contar
EnableBindRegla 152 palabra clave 247
EnableComputedColn 152 Contar propiedad 314
HabilitarPredeterminado 152 Crear 144
Habilitar identidad 152 macro .create_path 266
EnableNotNullWithDflt 152 Crear antes de la clave 160
MaxConstLen 152 Crear cuerpo 189
ModificarCompColn 152 Crear predeterminado 173
ModificarColnDflt 152 CreateFunc 180
ModifyColnNull 152 Función global CreateModel() 312
ModifyColumn 152 Método CreateModel() 313
valores nulos 159 Método CreateNew() 314, 318
NullRequired 152, 159 CreateNewAt() método 314
Variables PDM 217 Método CreateObject() 318
permiso 152 Método CreateReport() 325
Renombrar 152 CreateSelection() método 321
SqlCheckQuery 152 CreateShortcut() método 323 creación
SqlPermQuery 152 de fuentes de datos por secuencia de
SqlStatistics 152 comandos 324 creación de asignaciones
Desvincular 152 variables por secuencia de comandos 324
235 comandos creación de metaclases a partir de

398 PowerDesigner
Índice

estereotipos 39 creación de EnableManyDatabases 172


archivos de recursos 7 criterios 40 tamaño estimado 202, 205
csv (tablas de conversión) 1 EX palabra clave 128
%CurrentDate% variable global GenerateDatabase() método 326
251 %CurrentUser% variable GenerateTestData() método 326
global 251 cheques personalizados generación por script 326 generación
71 de datos de prueba por script 326
autocorrección generación 120–122, 125, 133, 200
74 ejemplo 21, GetPackageOptions() método 326,
73, 74 328 conexión en vivo 125
secuencia de ModifyDatabase() método 326 orden
comandos 73 de generación de objetos 142
comandos OpenDatabase 172 Variables PDM
personalizados que 234 opciones físicas 129, 207
se agregan a los plantillas de procedimientos 120
menús 338, 339 ingeniería inversa 120, 124, 125, 128, 129,
propiedades personalizadas 131–133
Ver atributos ingeniería inversa por script 328 Método
extendidos símbolos ReverseDatabase() 328
personalizados 70 ReversedQueries 128
ejemplo 19 ReversedStatements 124
CustomFunc 180 scripts 121, 124
CustomProc 180 desencadenar elementos
de plantilla 120
D desencadenar plantillas
Opción de formato D (valores de 120
interfaz) 248 Propiedad DashStyle Ver también archivos de definición de
320 Fuentes de datos Método DBMS
AddSource() 324 creación por Categoría DataHandling
script 324 Categoría de tipo de lenguaje de proceso 109
datos (DBMS) 197 tipos de datos Categoría DataTypes
45, 112, 197 plantillas de paquetes Lenguaje XML
de bases de datos 120 seguridad de 112 formatos de fecha
bases de datos 137 DateFormat 136
PDM variables 230 DateFunc 140 fechas
sincronización de base de %CurrentDate% variable global 251
datos Formato de fecha y hora 136
Variables PDM 227 Cursores de paquete DB 190
bases de datos Excepciones del paquete DB 190
Después de crear 122 Paquete DB pragmas 190
AntesCrear 122 Tipos de paquetes de bases de datos 190
BeforeCreateDatabase 172 Variables del paquete de base de datos 190
CloseDatabase 172 paquetes de bases de datos
conexión mediante script Después de crear 189
326, 328 Método Crear cuerpo 189
ConnectToDatabase() 328 Variables PDM 228
plantillas de paquetes de Archivos de definición DBMS 1,
base de datos 120 119 [ ] operadores 213

Personalización y ampliación de PowerDesigner 399


Índice

atributos de tipos de GetEstimatedSize 202, 205


datos abstractos 176 tipos grupos 187 columnas de
de datos abstractos 174, índice 220 índices 160, 220
224 introducción 119 unir índices
Después de crear 122 185, 227 claves 163, 164 ,
ASE 227 219 Palabras clave categoría
BeforeCreate 122 140 conexión de base de
columnas 152, 159, 217 datos en vivo 125 generación
restricciones 217 de base de datos en vivo 206
Categoría de tipo de datos MaxConstLen 142
197 plantillas de paquete Categoría de objetos 142, 144, 148, 152,
de base de datos 120 159, 160,
seguridad de base de 163, 164, 166, 169, 171–174, 176,
datos 230 sincronización 177, 180, 181, 184–
de base de datos 227 197 Categoría ODBC 206
bases de datos 172, 234 parámetros 191 Macros PDM
formatos de fecha 137 212, 235–243
Cursores de paquete de Variables de PDM 212, 213, 215–217, 219,
base de datos 190 220,
Excepciones del paquete DB 190 222–224, 227, 228, 230–
Paquete DB pragmas 190 234 permisos 192 opciones físicas
Tipos de paquetes de bases de datos 129, 207, 209, 210 Ficha Opciones
190 físicas (comunes) 207 Ficha
Variables de paquete de Opciones físicas 207 claves
base de datos 190 primarias 163 privilegios 191
Paquetes de base de plantillas de procedimiento 120
datos 189, 228 procedimientos 180, 222, 234
Desencadenadores de Categoría de perfil 200 propiedades
DBMS 184 Valores 119 calificadores 185 columnas de
predeterminados 193, referencia 220 referencias 166, 220
231 Dimensiones 196, columnas de resultados 195
232 Dominios 173, 217 ingeniería inversa 120, 124, 125, 128, 129,
EnableOption 142 131–133, 234 ReversedQueries 128
Estimación del tamaño ReversedStatements 124 roles 188 reglas
de la base de datos 202, 177, 223 scripts 121, 124 secuencias 186,
205 Palabra clave EX 224 Categoría SQL 135 SQL Server 227
128 Atributos almacenamientos 171, 224 sinónimos 187,
extendidos 200, 207 224 Sintaxis categoría 135 tablas 144, 148,
Objetos extendidos 216 tablespaces 171, 224 valores de prueba
197, 233 Extensiones 213 formatos de tiempo 137 elementos de
207, 210 Archivo plantilla de activación 120 plantillas de
categoría 138 Categoría activación 120 activadores 181, 222, 234
de formato 136, 137 usuarios 177 vistas 169, 216 Operaciones
formularios 210 web 194
Categoría general 134 Parámetros web 195
generación 120–122, Servicios web 194, 231
125, 133, 200 Desencadenadores de DBMS 184
GenerationOrder 142 DclDelIntegridad 166

400 PowerDesigner
Índice

DclUpdIntegrity 166 Variables PDM 217


Contenedor de asociación SqlListDefaultQuery 173
predeterminado 117 UddtComentario 173
variable predeterminada Desvincular 173
144 DefaultDataType 110 UserTypeName 173 Soltar
valores predeterminados 144
193 DropColnCheque 152
Variables PDM 231 DropColnComp 152
Nombre de activador predeterminado 181 DropFunc 180
DefIndexColumna 160 DropTableCheck 148
Tipo de índice de definición 160
.DEFINIR PDM macro 236 mi
DefineColnCheck 152
Editar/Ejecutar Editor de scripts 307
.DEFINEIF PDM macro 237
editar archivos de recursos 6
Definir Unirse 166 incrustar archivos de recursos 6
DefineTableCheck 148 Habilitar 144
Opciones de definición 144 HabilitarAdtOnColn 174
.delete macro 268 Método HabilitarAdtOnDomn 174
Delete() 321 eliminación Habilitar alias 187
de elementos en archivos
HabilitarAscDesc 160
de recursos 6 Delimitador
EnableBindRegla 152, 173
135 dependencias 344
EnableChangeJoinOrder 166
matrices de dependencia
Habilitar verificación 134, 173
52 rutas de dependencia
EnableCluster 160, 163, 164, 166
54 rutas de dependencia
EnableComputedColn 152
54 diagramas
HabilitarConstName 134
Propiedad global ActiveDiagram 312,
HabilitarPredeterminado 152, 173
320
EnableDtbsPrefix 136
Método AttachLinkObject() 320
EnablefKeyName 166
Método AttachObject() 320
EnableFunc 180
mostrando símbolos por script 320
Habilitar función 160
creación de cuadros de
Habilitar identidad 152
diálogo a partir de
formularios 55 Habilitar integridad 134
ejemplo 67 HabilitarJidxColn 185
dimensiones 196 Habilitar muchas bases de datos 172
Variables PDM 232 Activar MultiCheck 134
directorios .change_dir Habilitar multiarchivo 138
266 cambiando en GTL Activar multidisparador 181
266 EnableNotNullWithDflt 152
dominios Habilitar opción 142
Atar 173 Habilitar propietario 160, 173, 180, 181, 186
Papelera por defecto 173 EnableOwnerPrefix 136
Crear predeterminado 173 Función global EndTransaction() 312
EnableBindRegla 173 .error macro 269
Habilitar verificación 173 .ERROR PDM macro
HabilitarPredeterminado 173 237 mensajes de error
Habilitar propietario 173

Personalización y ampliación de PowerDesigner 401


Índice

237 errores .error atributo extendido 15 archivos de extensión 15


macro 269 en GTL extensiones 15, 16, 18, 19, 21, 27, 29, 30
269 archivos generados 87 comandos de generación
secuencias de escape 114 opciones de generación 113 tareas de
\\ barra invertida 256 generación 114 incluir un formulario en un
\n nueva línea 256 formulario 64 abrir un cuadro de diálogo desde
\t pestaña 256 un formulario 67 abrir un cuadro de diálogo
%% signo de porcentaje 256 desde un menú 82 plantillas 87
EvaluateNamedPath() función global 312 formato de archivo de modelo XML
Controla 351 excluyendo metaclases de modelos 33
dores de ejecutables .execute_command macro 269
eventos lanzamiento con GTL 269
Event macro .execute_command 269
181 .execute_vbscript macro 270
AfterDatabaseGenerar 75, 133 ExecuteCommand() función global 312 exportar
AfterDatabaseReverseEngineer 75, archivos de extensión 14
133 extensiones 14
BeforeDatabaseGenerate 75, 133 tipos de atributos extendidos
BeforeDatabaseReverseEngineer 75, tipo 45
133 atributos extendidos 41, 207 acceder en otros
puede crear 75 archivos de extensión 246 agregar a
CanLinkKind 75 formularios 41 iconos de valor de
ObtenerTamaño Estimado 75, 202, atributo 46 crear desde una hoja de
205 propiedades 15 crear tipos para 45 tipos
Inicializar 75 de datos 45 mostrar en formularios 57
OnLanguageChanged 75 ejemplo 15 generación 200 especificar
OnLanguageChangeRequest 75 objetos como tipos de datos 48
OnLanguageChanging 75 colecciones extendidas 48
OnModelCerrar 75 visualización en formularios 57
OnModelAbierto 75 composiciones extendidas 48
OnModelSave 75 generación extendida 89 enlaces
OnNewFromTemplate 75 extendidos 36 definiciones de modelo
Validar 75 extendidas
EventDelimiter 181 Ver archivos de
Idioma de objeto extensión objetos
de categoría extendidos 36, 197
de eventos generación 133 variables
110 PDM 233 ingeniería inversa
EX palabra clave 128 ejemplos 133
.foreach_item 27 creación de una ficha de subobjetos extendidos 36 Metaclase
hoja de propiedades 61 creación de ExtendedLink 36
autocorrección de verificación Colección ExtendedModelDefinitions 329
personalizada 74 creación de secuencia de ExtendedObject metaclase 36
comandos de verificación personalizada 73 ExtendedSubObject metaclase 36,
creación de cheques personalizados 21 48 categoría de extensión 14
creación de símbolos personalizados 19 archivos de extensión 1, 11 adjuntar
creación de archivos generados 29 creación a un modelo 12 adjuntar
de estereotipos 18 creación de plantillas 27 automáticamente 14 categoría 14

402 PowerDesigner
Índice

generación de lenguaje definición de lenguaje de proceso 117


complementario 14 resolución Perfil categoría 11
de conflictos 11 creación 12, Método SetExtendedAttribute() 329
16 incrustado 12 ejemplo 15 Método SetExtendedAttributeText() 329
exportar desde un modelo 14 estereotipos 18, 37, 39, 329 plantillas 27,
Categoría de generación 14 84, 87, 245 perfiles de transformación 94
propiedades 14 compartido 12 transformaciones 92, 95 propiedad
modo de seguimiento 14 UseAsMetaclass 329
Categoría de perfil de Importaciones XML 96, 97, 100
transformación 14 Archivos de definición de lenguaje XML
Ver también 117 aplicaciones externas
extensiones extensiones 11, 207, ExecuteCommand() función global 312
210
accediendo por script 329 F
Método AddMetaExtension() 329
Categoría de archivo (DBMS)
adjuntar a un modelo 12
AlterFooter 138
colecciones calculadas 50
Alterheader 138
colecciones 329 criterios 40
Habilitar multiarchivo 138
verificaciones personalizadas 21, 71
Pie de página 138
símbolos personalizados 19, 70
Encabezado 138
matrices de dependencia 52, 54
GuiónExt 138
controladores de eventos 75, 133,
Comando de inicio 138
202, 205 ejemplo 15, 16, 18, 19, 21,
TableExt 138
27, 29, 30, 82 exportar desde un
TrgFooter 138
modelo 14 tipos de atributos
TrgEncabezado 138
extendidos 45 atributos extendidos
15, 41, 46, 48, 57, 200 colecciones UsoTrg1 138
extendidas 48, 57 composiciones TrgUsage2 138 TriggerExt
extendidas 48 enlaces extendidos 138
36 objetos extendidos 36 Uso1 138
subobjetos extendidos 36 Colección Uso2 138
ExtendedModelDefinitions 329 Método FindChildByCode() 316 Método
formularios 55, 57, 61, 64, 67 archivos FindChildByName() 316
generados 29, 85, 87, 89, 245 Método FindChildByPath() 316
Categoría de generación 11 Primera palabra clave 247
GetCalculatedCollection() método 329 FKAutoIndex 166
GetCollectionByStereotype() método .FKCOLN PDM macro 235
329 FKeyComment 166
GetExtendedAttribute() método 329 carpetas
Método GetExtendedAttributeText() creando por script 322
329 Método Pie de página 138, 160
GetExtendedCollection() 329 script .FOREACH_CHILD PDM macro 238
global 105 en archivos de definición .FOREACH_COLUMN PDM macro 239
de DBMS 200 menús 81, 338 macro .foreach_item 271
metaclases 33 métodos 57, 79, 81, macro .foreach_line 273
338 generaciones de objetos 100, .FOREACH_PARENT PDM macro 240
102, 103 archivos de definición de .foreach_part macro 274 clave
lenguaje de objeto 117 archivos de externa

Personalización y ampliación de PowerDesigner 403


Índice

variable 241 ejemplo de formulario


Categoría de formato (DBMS) en formulario 64
AddQuote 136 ejemplo de hoja de
CaseSensitivityUsingQuo propiedades 61
te 136 formatos de fecha reemplazar pestañas de
137 DateFormat 136, 137 propiedades 55
Formato de fecha y hora 136, 137 índices basados en funciones 131
EnableDtbsPrefix 136 FunctionComment 180
EnableOwnerPrefix 136
Char ilegal 136 GRAMO
LowerCaseOnly Categoría general (DBMS) EnableCheck 134
136 EnableConstName 134 EnableIntegridad
MaxScriptLen 134
136 formatos de Activar MultiCheck 134
hora 137 Soporte Sql 134
TimeFormat 136, UniqConstName 134
137 generalizaciones 344 archivos
UpperCaseOnly 136 generados 85, 87, 89, 245 ejemplo 29
opciones de formato Método GenerateDatabase() 326
A (alinear a la izquierda) 248 Método GenerarHTML() 325
D (valores de interfaz) 248 GenerateRTF() método 325
H (hexadecimal) 215, 248 GenerateTestData() método 326
L (minúsculas) 215, 248 generación de objetos de base de datos
LF (primer carácter en minúsculas) 142 generación de bases de datos
215, 248 mediante script 326 generación de
M (eliminar subcadena) 215, modelos 102 generación de datos de
248Q (comillas dobles) 215, prueba mediante script 326 generación
248 q (comillas simples) 120
215, 248 T (recortar espacios generación extendida 89 %GenOptions%
en blanco) 215, 248 variable global 251 conexión en vivo 125
U (mayúscula) 215, 248 Objetos extendidos PDM 133 secuencia de
UF (primer carácter en mayúscula) comandos después de 133 secuencia de
215, 248 comandos antes de 133 secuencias de
X (caracteres XML de escape) comandos 121, 122
248 formularios 210 categoría de generación 112 Categoría de
agregar botones 57 generación 11, 14 comandos de generación
agregar controles 112, 114 .abort_command macro 265
57 crear cuadros abortando 265
de diálogo 55 crear GTL 265
pestañas de opciones de generación 112, 113 tareas de
propiedades 55 generación 112, 114 Lenguaje de plantillas
ejemplo de cuadro de generación Ver GTL
de diálogo 67 Generación Orden 142
mostrar atributos %GenOptions% variable global 251
extendidos 57 Método GetAttribute() 316 Método
mostrar GetAttributeText() 316
colecciones GetCalculatedCollection() método 329
extendidas 57
GetCollectionByStereotype() método 329

404 PowerDesigner
Índice

ObtenerTamaño Estimado 202, 205 270 atributos extendidos 246


Controlador de eventos GetEstimatedSize formato de texto 248 archivos
75 generados 245 variables
GetExtendedAttribute() método 329 globales 251 operadores GTL
GetExtendedAttributeText() método 329 252 cadena principal 250
Método GetExtendedCollection() 329 herencia 257 introducción 245
GetMapping() método 324 %IsShortcut% 256
GetMetaClassByPublicName() método 330 iteración sobre una colección 271 iteración
Método sobre líneas en un bloque de texto 273
GetMetaMemberByPublicName() 330 iteración sobre partes de una cadena 274
Método GetPackageOptions() 326, 328 lanzamiento de ejecutables 269 saltos de
script global 71, 75, 79, 105 variables línea 250 macros 264 extensiones de
globales 105 metamodelo 262 nueva línea 250
%ModeloActivo% 251 propiedades de objeto 246 Alcance externo
%FechaActual% 251 255 salida de líneas únicas 281 sobrecarga
%UsuarioActual% 251 de plantillas 257 anulación de plantillas 257
%GenOptions% 251 parámetros 260 Alcance principal 255
%NuevoUUID% 251 polimorfismo 257 imprimir mensajes de
%Modo de vista previa% 251 error 269 imprimir mensajes de advertencia
ir a 269 propiedades 246 plantillas recursivas
superdefinición 5 262 reemplazar subcadenas 268 devolver
GrantOption colecciones por OID 278 devolver objetos
191, 192 por OID 278 alcance 255 %Shortcut% 256
GroupFunc 140 accesos directos 256 errores de sintaxis 283
grupos cadena de cola 250 plantillas 245 pruebas
Enlazar 187 condiciones booleanas 266 bloques de texto
SqlListChildrenQuery 187 250 errores de traducción 283 escribir
SqlPermQuery 187 mensajes de registro 277
Desvincular 187 macros GTL
GTL 84, 85, 245 cancelar comandos . // 267
de generación 265 acceder a .abortar_comando 265
atributos extendidos en otros .bloquear 265 .bool 266
archivos de extensión 246 .romper 266
romper bucles 266 plantillas de .cambiar_dir 266
llamadas 257 cambiar directorio 266 .colección 278
cambiar mayúsculas y minúsculas .comentario 267
277 colecciones 247 comentarios .convert_code 267
267 bloques condicionales 250, 265 .convertir_nombre 267
generación condicional 275 .create_path 266
controlar la interacción del usuario .eliminar 268
278 convertir nombres y códigos .error 269
267 crear archivos generados 245 .execute_command 269
crear rutas 266 crear plantillas 245 .ejecutar_vbscript 270
definir variables locales y tipos de .foreach_item 247, 271
valores 279 eliminar subcadenas 268 .foreach_line 273
incrustar VBScript 281 errores 283 .foreach_part 274
secuencias de escape .si 275
256 ejecutar VBScript .log 277

Personalización y ampliación de PowerDesigner 405


Índice

.minúsculas 277 AñadirColIndex 160


.objeto 278 Grupo 160
.reemplazar 268 CreateBeforeKey 160 DefIndexColumn 160
.set_interactive_mode 278 Tipo de índice de definición 160
.set_objeto 279 HabilitarAscDesc 160
.set_value 279 Habilitar clúster 160
.único 281 Habilitar función 160
.desarmar 279 Habilitar propietario 160
.mayúsculas 277 Pie de página 160
.vbscript 281 Encabezado 160
.advertencia 269 ÍndiceComentario 160
Operadores GTL Tipo de índice 160
! evaluación de potencia 252 MandIndexType 160
!= no igual a 252 MaxColÍndice 160
? existencia 252 Variables PDM 220
Resta %-(x,y)% 252 SqlSysIndexQuery 160
* desreferenciar 252 UniqName 160 IndexType 160 herencia
%*(x,y)% multiplicación 252 257 Método Insert() 314 Instalar 174 clases
%/(x,y)% división 252 instanciables 344 Propiedad global
%&(x,y)% campo de bits lógico y 252 InteractiveMode 312 colecciones inversas 48
&& AND lógico 252 Palabra clave IsEmpty 247
+ visibilidad 252 Función global IsKindOf() 312
%+(x,y)% suma 252 %IsShortcut% 256 Propiedad del elemento
< menos de 252 314
<= menor o igual a 252
= tarea 252 j
== igual a 252
.ÚNETE a la macro PDM 241
> mayor que 252
unir índices
>= mayor o igual a 252
AgregarÚnete 185
|| OR lógico 252
HabilitarJidxColn 185
JoinIndexComment 185
H Variables de PDM 227
Opción de formato H (hexadecimal) 215, JoinIndexComment 185
248 cadena de encabezado 250 Encabezado
138, 160
Directorio de inicio constante global 312 k
llaves
I Un comentario clave 164
IdentifierDelimiter 135 AllowNullableColn 164
.if macro 275 IllegalChar 136 Nombre constante 164
conjuntos de reglas de análisis e Habilitar clúster 164
impacto 1 MaxConstLen 164
Categoría de implementación lenguaje Variables PDM 219
de proceso 109 .INCOLN PDM macro claves primarias 163
240 columnas de índice SqlAkeyIndex 164
Variables PDM 220 UniqConstAutoIndex 164
IndexComment 160 índices UniqInTable 164

406 PowerDesigner
Índice

Categoría de palabras clave .log macro 277 escritura en


(DBMS) CharFunc 140 GTL 277
cometer 140 bucles .romper macro 266
ConvertFunc 140 rompiendo en GTL 266
FechaFunc 140 .lowercase macro 277
Función de grupo 140 minúsculas 277
Operadores de lista 140 LowerCaseOnly 136
NúmeroFunción 140
Otra función 140 METRO
ReservadoPredeterminado 140 Opción de formato M (eliminar subcadena) 215,
ReservedWord 248
140 Tipo de propiedad MandIndexType 160
314 Editor de mapas 100, 103
XML importa 97
asignaciones
L creación por secuencia de
Opción de formato L (minúsculas) 215, comandos 324 Método
248 GetMapping() 324 metamodelo
Opción de formato LF (primer carácter en 97, 103 objetos de metamodelo
minúsculas) 101 propiedades 100
215, 248 recuperación por secuencia de
Colección de comandos 324 Colección
bibliotecas 330 SourceClassifiers 324
Propiedad de la Función global MapToNamedPath() 312
biblioteca 330 MaxColÍndice 160
saltos de línea MaxConstLen 142, 148, 152, 164, 166
control en GTL 250 MaxPredeterminadoLen 177
LíneaComentario 135 MaxFuncLen 180
Propiedad LineWidth 320 Maxlen 144
Categoría de variables MaxScriptLen 136 mcc
lingüísticas 300 creación (conjuntos de categorías de
de objetos de enlace por modelos) 1
script 318 Menús MDA 92
vincular símbolos creación de comandos personalizados en
estableciendo extremos 338, 339 personalización a través de
por script 320 extensiones 81, 338 personalización a través
ListOperators 140 de complementos XML 338 ejemplo 82
generación de base de lanzamiento de complementos desde 338
datos en vivo 206 lanzamiento de scripts desde 338
variables locales combinación de archivos de recursos 8
definiendo en GTL 279 metaclase 33 Propiedad de la
.set_object 279 metaclase 330 metaclases 33
.set_value 279 agregar al archivo de extensión
.desarmar 279 33 crear a partir de estereotipos
Propiedad global 39 crear nuevos 36 excluir del
bloqueada 312 .log modelo 33 ExtendedLink 36
macro 277 registros ExtendedObject 36
ExtendedSubObject 36, 48 extender

Personalización y ampliación de PowerDesigner 407


Índice

33 subclasificar con criterios 40 PdGLM 344


subclasificar con estereotipos 37 PdILM 344
MetaCollection propiedad 314 PdLDM 344
metamodelo PdMTM 344 PdOOM 344
clases abstractas PdPDM 344
344 asociaciones PdPRJ 344
344 atributos 344 PdRMG 344
Colección de PdRQM 344
atributos 330 PdWSP 344
atributos calculados PdXSM 344 PowerDesigner 343
262 colecciones nombres públicos 344 propiedad
calculadas 262 PublicName 330 accesos directos 344
atributos de clase especializaciones 344 formato de archivo de
344 clases 344 modelo XML 348, 351 propiedad global de
clases concretas MetaModel 330 objetos de metamodelo
344 dependencias propiedades 101 Metamodel Objects
344 extensión por Help 343, 347 metamodel.oom 343
script 329 métodos 79
generalizaciones agregar a menús 81, 338 adjuntar a
344 botones de formulario 57
GetMetaClassByPublicName() categoría de modelo conjuntos 1
método 330 cheques de modelo creación de
Método cheques personalizados 71
GetMetaMemberByPublicName() modelo formato de
330 archivo bin 348
Extensiones DTD 348
específicas de GTL XML 348, 351 modelo
262 Clases generación 102 modelos
instanciables 344 %ActiveModel% variable global 251
Colección de Propiedad global de ActiveModel 312
bibliotecas 330 Función global CreateModel() 312
Biblioteca propiedad 330 Método CreateObject() 318 creación por
Propiedad metaclase 330 script 313 Colección global de modelos
Metamodel propiedad global 312 apertura por script 313 Función
330 Metamodel Objects global OpenModel() 312
Help 343, 347 Modelos colección global 312, 313
metamodel.oom 343 Atributos modificables 144
navegación 344 estereotipo ModificarCompColn 152
notScriptable 344 ModificarColnDflt 152
operaciones 344 Propiedad ModificarColnNull 152
principal 330 ModificarColumna 152
PdBPM 344 Método ModifyDatabase() 326 Método
PdCDM 344 Move() 314
PdComún 344 Método MoveToPackage() 321
PdEAM 344
PdFRM 344
norte
nombre propiedad
.convert_name macro

408 PowerDesigner
Índice

267 conversión en 112 comandos de generación


GTL 267 112, 114 opciones de
caminos con nombre generación 112, 113 tareas de
EvaluateNamedPath() función global generación 112, 114 Categoría
312 de nombres 110 Contenedor de
Función global MapToNamedPath() objetos 117 categoría de perfil
312 117 propiedades 107
Lenguaje de objeto Categoría de configuración
de categoría 110 perfiles de permisos de
de nombres objeto 1 propiedades de objeto
110 246
navegar en archivos de accediendo por script 316 modificando
recursos 5 nueva línea por script 316
250 Función global selecciones de objetos
NewPoint() 320 Colección global ActiveSelection 312
%NewUUID% variable global 251 Método AddObjects() 321 Método
.NMFCOL PDM macro 242 CreateSelection() 321 creación mediante
archivos de recursos no script 321 Método MoveToPackage() 321
certificados 3 estereotipo no Remove() método 321 objetos
programable 344 acceso por secuencia de comandos 316
NullRequired 152, 159 creación por secuencia de comandos 328
NumberFunc 140 creación de atajos por secuencias de
comandos 323 método Delete() 321
eliminación por secuencia de comandos
O
321 visualización en diagramas por
.objeto macro 278 secuencia de comandos 320 método
Categoría de atributos de FindChildByCode() 326
objetos 298 Contenedor Método FindChildByName() 316
de objetos 117 Método FindChildByPath() 316
Generaciones de objetos GetAttribute() método 316
102 scripts de GetAttributeText() método 316
inicialización 100
IsKindOf() función global 312
propiedades de mapeo
.objeto macro 278
100 mapeos 103 scripts
Ámbito externo 255 Ámbito
de posprocesamiento 100
principal 255 devuelto por GTL
archivos de definición de lenguaje de
278 ámbito 255 Método
objetos 1
SetAttribute() 316
Tipos de datos adicionales 110
Método SetAttributeText() 316
Tipos de datos básicos 110
Colección de símbolos 320
ConceptualDataTypes 110
Atributos de tipo de datos abstractos de
Categoría de constantes
categoría de objetos (DBMS) 176
110 tipos de datos 110
tipos de datos abstractos 174
Contenedor de asociación
Agregar 144
predeterminado 117
Después de crear 144
DefaultDataType 110
Después de la caída 144
Categoría de eventos 110
Después de modificar 144
extensiones 117
Alterar 144
categoría de generación
AlterDBIgnorado 144

Personalización y ampliación de PowerDesigner 409


Índice

AlterStatementList 144 163 privilegios 191


AntesCrear 144 procedimientos 180
BeforeDrop 144 calificadores 185
BeforeModify 144 referencias 166
columnas 152, 159 Crear columnas de resultados
144 bases de datos 172 195 ReversedStatements
Cursores de paquetes de 144 roles 188 reglas 177
bases de datos 190 secuencias 186
Excepciones del paquete DB 190 SqlAttrQuery 144
Paquete DB pragmas 190 SqlListQuery 144
Tipos de paquetes de bases de datos SqlOptsQuery 144
190 almacenamientos
Variables del paquete de base de datos 171 sinónimos 187
190 tablas 144, 148
Paquetes DB tablespaces 171
189 activadores 181
Desencadena usuarios 177 vistas
dores DBMS 169 operaciones
184 Variable web 194
predetermina Parámetros web 195
da 144 Servicios web 194
Valores ODBC categoría 206
predetermina VIEJO
dos 193 Propiedad global bloqueada 312
DefOptions Propiedad global ShowMode 312
144 Automatización OLE 305, 332
Dimensiones Controlador de eventos OnLanguageChanged 75
196 Dominios Controlador de eventos
173 Drop 144 OnLanguageChangeRequest 75
Habilitar 144 Controlador de eventos OnLanguageChanging
EnableOption 75
142 objetos Controlador de eventos OnModelClose 75
extendidos 197 Controlador de eventos OnModelOpen 75
GenerationOrd Controlador de eventos OnModelSave 75
er 142 grupos Controlador de eventos
187 índices OnNewFromTemplate 75 OpenDatabase
160 unir 172 apertura de archivos de recursos 3
índices 185 Función global OpenModel() 312 Método
claves 163, 164 OpenModel() 313 operaciones 344
MaxConstLen Opciones 144
142 Otra función 140
Maxlen 144 Exterior 255
Atributos Ventana de salida
modificables 144 Salida () función global 312
Opciones 144 Función global Output() 312
parámetros 191 Plantillas sobrecargadas 257
permisos 192 primordial
claves primarias plantillas 257

410 PowerDesigner
Índice

PAG predeterminados 231


parámetros 191, 260 dimensiones 232 dominios
Padre 255 Propiedad 217 objetos extendidos 233
padre 330 rutas formateo 215 columnas de
.create_path 266 índice 220 índices 220 unir
creando en GTL 266 índices 227 claves 219
especificando para archivos de procedimientos 222, 234
recursos 1 columnas de referencia 220
referencias 220 ingeniería
PdBPM 344
inversa 234 reglas 223
PdCDM 344
secuencias 224 SQL Server
PdComún 344
227 almacenamientos 224
PdEAM 344
sinónimos 224 tablas 216
PdFRM 344
tablespaces 224 valores de
PdGLM 344
prueba 213 disparadores 222,
PdILM 344
234 vistas 216 Servicios web
PdLDM 344
231
macros PDM 212
PdMTM 344
.AKCOLN 235
PdOOM 344
.ALLCOL 236
PdPDM 344
.EXPRESIÓNCLIENTE 242
PdPRJ 344
.DEFINIR 236 PdRMG 344
.DEFINE SI 237 PdRQM 344
.ERROR 237 PdWSP 344
.FK COLN 235 PdXSM 344
.PARA CADA_NIÑO 238 Permiso 148, 152, 180 permisos
.FOREACH_COLUMN 239 GrantOption 192
.FOREACH_PARENT 240 RevokeOption 192 opciones físicas 210
.INCOLN 240 opciones compuestas 209 valor predeterminado
.ÚNETE 241 207 definición de valores predeterminados en un
.NMFCOL 242 archivo DBMS 144 definición en un archivo
.PK COLN 235 DBMS 144, 207 DefOptions elemento DBMS
.SERVEREXPRESSION 242 144 atributos extendidos 207 lista de valores 207
.SQLXML243 Opciones DBMS artículo 144
Variables PDM 212 Ficha Opciones físicas (Común) 207 Ficha
Operadores [ ] Opciones físicas 207 ingeniería inversa
213 tipos de 129 opciones simples 207
datos abstractos Pestaña Opciones físicas (Común) 207
224 Ficha Opciones físicas 207
ASE 227 columnas 217 PkAutoIndex 163
restricciones 217 .PKCOLN PDM macro 235
seguridad de base de PKeyComment 163 modelos
datos 230 independientes de plataforma 92
sincronización de base modelos específicos de plataforma 92
de datos 227 bases de polimorfismo 257 Propiedad de
datos 234 paquetes de posición 320
base de datos 228 PowerDesigner metamodelo 343
valores

Personalización y ampliación de PowerDesigner 411


Índice

Formato de archivo de modelo Ajustes categoría 109 perfil


XML 351 ppf (perfiles de permisos Ver categoría de perfil
de objetos) 1 de archivos de extensión
Pestaña de vista previa archivos de definición de lenguaje de
%PreviewMode% variable global 251 objeto 117 archivos de definición de
%PreviewMode% variable global 251 lenguaje de proceso 117 archivos de
variable de clave principal 241 definición de lenguaje XML 117
llaves primarias Categoría de perfil 11
Nombre constante 163 Archivos de definición DBMS
Habilitar clúster 163 200 promoviendo un estereotipo a
PkAutoIndex 163 metaclase 37 promoviendo un
PKeyComentario 163 estereotipo a metaclase 39
Privilegios UseSpPrimKey propiedades 246 hojas de propiedades
163 ejemplo 61 forma en
GrantOption 191 forma ejemplo 64
RevokeOption 191 pestañas de propiedades
Sistema 191 plantillas de creando a partir de formularios
procedimiento 120 55 reemplazando por
ProcedimientoComentario formularios 55
180 procedimientos nombres públicos 344
CreateFunc 180 Propiedad PublicName 330
Función personalizada 180
CustomProc 180 q
DropFunc 180 Opción de formato Q (comillas dobles) 215, 248
EnableFunc 180 Opción de formato q (comillas simples) 215, 248
Habilitar propietario 180 calificadores 185 Citar
FunciónComentario 180 135
MaxFuncLen 180
Variables PDM 222, 234
permiso 180
R
ProcedimientoComentario 180 plantillas recursivas 262 columnas de
referencia
SqlPermQuery 180
Variables PDM 220 referencias
archivos de definición de lenguaje de
proceso 1 Comprobar en compromiso 166
Categoría de coreografía Nombre constante 166
109 Categoría de manejo DclDelIntegridad 166
de datos 109 Extensiones DclUpdIntegridad 166
117 Categoría de Definir Unirse 166
generación 112 EnableChangeJoinOrder 166
Comandos de generación Habilitar clúster 166
112, 114 Opciones de EnablefKeyName 166
generación 112, 113 FKAutoIndex 166
Tareas de generación FKeyComentario 166
112, 114 Categoría de MaxConstLen 166
implementación 109 Variables PDM 220
Categoría de perfil 117 SqlListChildrenQuery 166
Propiedades 107 UsarSpFornKey 166
RegistryHome constante global 312

412 PowerDesigner
Índice

Eliminar 174 actualización de archivos de recursos desde


Remove() método 314, 321 1
Renombrar 148, 152 RepositoryConnection propiedad global 312
.replace macro 268 Plantillas de ReservedDefault 140
elementos de informe categoría 303 ReservedWord 140 editor
archivos de idioma de informe 1, de recursos
287 Véase también archivos de
Pestaña Todos los atributos y recursos archivos de recursos
colecciones 300 agregar elementos 6 registrarse
Pestaña Todas las clases 299 en el repositorio 1 comparar 7
Pestaña Todos los títulos de comparar con el repositorio 1
informe 297 Creación 289 tablas de conversión 1 copiar 7
Categoría Variables lingüísticas 300 crear 7 csv (tablas de
Categoría Atributos de objeto 298 conversión) 1 archivos de
Apertura 288 Propiedades 290 definición DBMS 1 eliminar
Categoría Plantillas de elementos elementos 6 editar 6 incrustar 6
de informe 303 Categoría Títulos archivos de extensión 1 conjuntos
de informe 294 ejemplo de de reglas de análisis e impacto 1
traducción 295 mcc (conjuntos de categorías de
Asignación de valores modelos) 1 fusión 8 conjuntos de
categoría 291 plantillas de categorías de modelos 1
informes 1 Categoría de títulos de navegación en 5 no certificados 3
informes 294 informes Método archivos de definición de
CreateReport() 325 creación por lenguaje de objeto 1 perfiles de
script 325 Método permiso de objeto 1 apertura 3
GenerateHTML() 325 rutas 1 ppf (perfiles de permiso
Generar RTF () método 325 de objeto) 1 lenguaje de proceso
generación por archivos de definición 1 archivos
script 325 Colección de idioma de informe 1 plantillas
de informes 325 de informe 1 repositorio 1
traducción 287 restauración de valores predeterminados
Colección de informes 6 rtp (plantillas de informes) 1 rul
325 repositorio (conjuntos de reglas de análisis e
verificación de documentos por impacto) 1
secuencia de comandos 325 guardar 6 buscar 5 compartir 6 actualizar
verificación de documentos por desde el repositorio 1 upf (perfiles de
secuencia de comandos 325 usuario) 1 perfiles de usuario 1 xdb
verificación de archivos de (archivos de definición de DBMS) 1 xem
recursos en 1 método (archivos de extensión) 1 archivos de
CheckOut() 325 definición de lenguaje XML 1 xol (archivos
comparación de archivos de de definición de lenguaje de objeto) 1 xpl
recursos 1 conexión (lenguaje de proceso archivos de definición)
mediante script 325 método 1 xrl (archivos de idioma de informe) 1 xsl
Consolidate() 325 (archivos de definición de idioma XML) 1
Método ConsolidateNew() 325 restauración de valores predeterminados
Propiedad global en archivos de recursos 6 columnas de
RepositoryConnection 312 resultados 195 recuperación de
asignaciones por script 324 ingeniería

Personalización y ampliación de PowerDesigner 413


Índice

inversa 120 atributos 128 EX análisis e impacto) 1


palabra clave 128 extensión 128 RuleComment 177
índices basados en funciones 131 normas
conexión en vivo 125 bases de ColnPredeterminadoNombre 177
datos en vivo 129, 131, 132 ColnRuleName 177
objetos extendidos PDM 133 MaxPredeterminadoLen 177
variables PDM 234 opciones Variables PDM 223
físicas 129 calificadores 132 ReglaComentario 177
ReversedQueries 128 Nombre predeterminado de Uddt 177
ReversedStatements UddtRuleName 177
124 secuencia de
comandos después de
S
133 secuencia de
guardar archivos de
comandos antes de 133
recursos 6 ámbito
secuencias de
Exterior 255
comandos 124
Principal 255
bases de datos de ingeniería inversa por
ScriptExt 138
script 328
secuencias de
ReverseDatabase() método 328
comandos
Consultas invertidas 128
acceder a extensiones 329 acceder a
ReversedStatements 124, 144
propiedades de objetos 316 acceder a
RevokeOption 191, 192
objetos 316 propiedad global de
diagramas de robustez
ActiveModel 313 explorar colecciones 314
creación de cheques
cambiar formato de símbolo 320 registrar
personalizados 21 creación
documentos en el repositorio 325 retirar del
de símbolos
repositorio 325 conectarse a bases de datos
personalizados 19 creación
326, 328 conectarse al repositorio 325 crear
de extensión para 16
acceso directo 323 CreateModel() método
creación de archivos
313 creación de fuentes de datos 324
generados 29 creación de
creación de extensiones 329 creación de
estereotipos 18 creación de
objetos de enlace 318 creación de
plantillas 27 prueba de
asignaciones 324 creación de modelos 313
extensión 30
creación de selecciones de objetos 321
roles
creación de objetos 318 creación de
Enlazar 188
informes 325 creación de accesos directos
SqlListChildrenQuery 188
323 creación de símbolos 320 bases de
SqlPermQuery 188
datos 326, 328 eliminación de objetos 321
Desvincular 188 Editar/Ejecutar editor de scripts 307
rtp (plantillas de informes) 1
rul (conjuntos de reglas de
extendiendo el metamodelo 329 compartir archivos de recursos 6
carpetas 322 %Acceso directo% 256
generar bases de datos 326 accesos directos 344 generación de informes 325
Método CreateShortcut() 323
generar datos de prueba 326 creando por script 323 constantes globales 312
en GTL 256
funciones globales 312 ShowMode propiedad global 312 propiedades globales 312
Propiedad de origen 314

414 PowerDesigner
Índice

introducción 305 Colección SourceClassifiers 324


iniciar scripts a través de comandos personalizados 338,especializaciones 344
339 Categoría SQL (DBMS) 135 asignaciones 324 Metamodelo
de SQL Server 330 Variables PDM 227
Ayuda de objetos del metamodelo 347 SqlAkeyIndex 164 Colección
global de modelos 313 SqlAttrQuery 144 modificar colecciones 314
SqlChckQuery 148, 152 modificar propiedades de objetos 316
SqlContinuar 135
navegando en el metamodelo 330 SqlListChildrenQuery 166, 187, 188
estereotipo no programable 344 SqlListDefaultQuery 173
Automatización OLE 332 SqlListQuery 144 abriendo modelos 313
SqlListRefrTables 148 Método OpenModel() 313
SqlListSchema 148, 169 símbolos de posicionamiento 320
SqlOptsQuery 144
informes 325 SqlPermQuery 148, 152, 169, 177, 180, 187, 188
repositorio 325 SqlStatistics 152
bases de datos de ingeniería inversa 328 Soporte Sql 134
ejecución de secuencias de comandos 307 SqlSysIndexQuery 160 guiones de
muestra 309 .SQLXML PDM macro 243 transacciones 312 SqlXMLTable
148 Ejemplo de VBScript 305 SqlXMLView 169 espacio de trabajo 322
Comando de inicio 138
buscando en archivos de recursos 5 estereotipos 37, 39
Secuencia Comentario 186 ejemplo 18 secuencias promocionar a metaclase 37, 39
EnableOwner 186 Usar como metaclase 18, 37, 39
Variables PDM 224 Propiedad UseAsMetaclass 329
Secuencia Comentario 186 AlmacenamientoComentario 171
.SERVEREXPRESSION macro 242 almacenamientos
macro .set_interactive_mode 278 Variables PDM 224
macro .set_object 279 AlmacenamientoComentario 171
macro .set_value 279 instrumentos de cuerda
Método SetAttribute() 316 A (alinear a la izquierda) 248
Método SetAttributeText() 316 alinear a la izquierda 248
Método SetExtendedAttribute() 329 convertir a primer carácter en minúsculas 215,
Método SetExtendedAttributeText() 329 248
Categoría de configuración conversión al primer carácter en mayúsculas 215, lenguaje objeto 110
248
lenguaje de proceso 109 convertir a minúsculas 215, 248
lenguaje XML 112 convertir a mayúsculas 215, 248
eliminando subcadenas 215, 248 M (eliminar subcadena) 215,
.foreach_part macro 274 iterando 248Q (comillas dobles) 215,
en GTL 274 248 q (comillas simples) 215,
L (minúsculas) 215, 248 248 delimitar entre comillas
LF (primer carácter en minúsculas) 215, dobles 215, 248 delimitar
248 entre comillas simples 215,
248 T (recortar espacios en

Personalización y ampliación de PowerDesigner 415


Índice

blanco) 215, 248 recortar espacios en DropTableCheck 148


blanco 215, 248 U (mayúsculas) 215, MaxConstLen 148
248 Variables PDM 216
UF (primer carácter en mayúscula) 215, permiso 148
248 subclasificando metaclases con criterio 40 Renombrar 148
subclasificar metaclases con estereotipos 37 SqlCheckQuery 148
creación de SqlListRefrTables 148
submenús 339 SqlListSchema 148
subcadenas SqlPermQuery 148
eliminando en GTL 248, 268 SqlXMLTable 148
eliminando en PDM variables 215 TablaComentario 148
M (eliminar subcadena) 215, 248 TipoLista 148
reemplazando en GTL 268 UniqConstraintName 148
simbolos TablespaceComment 171
creación por secuencia de tablespaces
comandos 320 propiedad Variables PDM 224
DashStyle 320 formateo por TablespaceComentario 171
secuencia de comandos 320 cadena de cola 250 plantillas 84,
propiedad LineWidth 320 87, 245 llamar 257 ejemplo 27 F12
Función global NewPoint() 320 5 saltar a la plantilla referenciada 5
Propiedad de posición 320 Outer scope 255 sobrecargar 257
posicionamiento por script 320 anular 257 Parent scope 255 pasar
Colección de símbolos 320 sinónimos parámetros 260 recursivo 262 hacer
Habilitar alias 187 referencia a accesos directos 256
Variables PDM 224 alcance 255 Terminator 135 probar
Categoría de sintaxis (DBMS) valores de variable PDM 213 texto
BlockComment 135 formateo en GTL 248
BloqueTerminator 135 bloques de texto
Delimitador 135 cambio de mayúsculas y
IdentifierDelimiter 135 minúsculas en GTL 277
LíneaComentario 135 .foreach_line macro 273
Cita 135 iteración en GTL 273
SqlContinuar 135 .lowercase macro 277 salida
terminador 135 de líneas únicas en GTL 281
UseBlockTerm 135 errores .única macro 281
de sintaxis 283 macro
Sistema 191 .mayúsculas 277
Hora 181
T formatos de hora
Opción de formato T (recortar espacios en 137 TimeFormat
blanco) 215, 248 TableComment 148 TableExt 136
138 tablas Menú de herramientas creando
AddTableCheck 148 comandos personalizados en
PermitidoADT 148 338, 339
AlterTableFooter 148 modo de rastreo
AlterTableHeader 148 14 transacciones
Nombre constante 148 BeginTransaction() función global
DefineTableCheck 148 312

416 PowerDesigner
Índice

Función global CancelTransaction() 312 %NewUUID% variable global


Función global EndTransaction() 312 251 .unset macro 279 upf (perfiles de
Categoría de perfil de transformación 14 usuario) 1 mayúscula 277 .macro
perfiles de transformación 94 mayúscula 277
transformaciones 92 Sólo Mayúsculas 136
perfiles de transformación 94 guiones de Uso1 138
transformación 95 Uso2 138
errores de traducción 283 Usar como metaclase 18, 37, 39
TrgFooter 138 Propiedad UseAsMetaclass 329
TrgEncabezado 138 UseBlockTerm 135
TrgUsage1 138 TrgUsage2 UseErrorMsgTable 181
138 elementos de plantilla UseErrorMsgText 181
de activación 120 interacción del usuario
plantillas de activación controlando en GTL 278
120 TriggerComment 181 .set_interactive_mode macro 278
TriggerExt 138 perfiles de usuario 1
disparadores UserName global constante 312
Nombre de activador predeterminado 181 usuarios
Activar multidisparador 181 %CurrentUser% variable global
Habilitar propietario 181 251
Evento 181 SqlPermQuery 177 Nombre de
EventDelimiter 181 tipo de usuario 173
Variables PDM 222, 234 UsarSpFornKey 166
tiempo 181 UseSpPrimKey 163
Activador Comentario 181
UseErrorMsgTable 181 V
UseErrorMsgText 181 TypeList ValidationMode propiedad global
148, 169 312 Valores Categoría de
asignación 291 variable
tu clave externa 241
Opción de formato U (mayúsculas) 215, 248 clave principal 241
UddtComentario 173 Variables
Nombre predeterminado de Uddt 177 columnas 235
UddtRuleName 177 macro .vbscript 281
Opción de formato UF (primer carácter en VBScript 79, 95, 309
mayúsculas) incrustación en GTL 281
215, 248 ejemplo 305
Desvincular 152, 173, 187, 188 .execute_vbscript macro
UniqConstAutoIndex 164 270 ejecución con GTL
UniqConstName 134 270
UniqConstraintName 148 macro .vbscript 281
UniqInTable 164 Versión global constante 312
UniqName 160 .macro único Ver Cheque 169
281 Ver comentario 169
identificadores únicos Visor global constante
312 vistas

Personalización y ampliación de PowerDesigner 417


Índice

Variables de PDM 216 categoría de perfil 117 propiedades


SqlListSchema 169 107 Categoría de configuración 112
SqlPermQuery 169 Formato de archivo de modelo XML
SqlXMLView 169 351 xol (archivos de definición de
TipoLista 169 lenguaje de objeto) 1 xpl (archivos
Ver Cheque 169 de definición de idioma de proceso)
Ver comentario 169 1 xrl (archivos de idioma de informe)
Estilo de vista 169 1 xsl (archivos de definición de
Estilo de vista 169 idioma XML) 1

W
.warning macro 269
advertencias
en GTL 269
.warning macro 269
Operaciones web 194
Parámetros web 195
Servicios web 194
Variables de PDM 231 acceso al espacio
de trabajo por secuencia de comandos 322
Propiedad global ActiveWorkspace 312, 322
Colección secundaria 322 modificación por
secuencia de comandos 322 guardado por
secuencia de comandos 322

X
Opción de formato X (caracteres XML de
escape) 248 xdb (archivos de definición DBMS)
1
xem (archivos de extensión) 1
xems
Ver archivos de extensión
XML
extensiones para importar 96 importar
objetos desde 97
Complemento de
archivo XML 335
estructura 335
Importaciones XML 96
scripts de inicialización 100
propiedades de mapeo 100 mapeos
97 scripts de posprocesamiento 100
Archivos de definición de lenguaje XML 1
Categoría de tipos de datos 112 extensiones
117 categoría de generación 112 comandos de
generación 112, 114 opciones de generación
112, 113 tareas de generación 112, 114

418 PowerDesigner

También podría gustarte