Crear y editar una macro

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Referencia del programador > Editor de scripts > Macros >

Crear y editar una macro

A continuación describimos las operaciones necesarias para crear una macro nueva y editar macros ya disponibles.

 

Crear una macro nueva

Haga clic con el botón derecho en la carpeta Macros del panel Estructura del proyecto de scripting y seleccione Agregar macro en el menú contextual. En realidad este comando siempre está disponible en el menú contextual que aparece al hacer clic con el botón derecho en cualquier elemento del panel. Otra opción es hacer clic en el icono Macro nueva de la barra de herramientas del panel Estructura del proyecto de scripting.

 

El documento de macro recién creado (y vacío) aparece en la ventana principal del editor y el nombre de la macro aparece en la barra de título (imagen siguiente).

 

ScrMacroTree

 

Poner un nombre a la macro o cambiarle el nombre

Para dar un nombre a una macro o cambiar su nombre, haga clic en el nombre de la macro en el panel Estructura del proyecto de scripting y pulse la tecla F2. También puede hacer clic con el botón derecho en la macro y seleccionar Cambiar el nombre de la macro en el menú contextual.

 

Abrir una macro

Para abrir una macro haga clic con el botón derecho en la macro en el panel Estructura del proyecto (imagen anterior) y seleccione Abrir en el menú contextual. La macro se abre en la ventana principal y su nombre aparece en la barra de título del Editor de scripts (imagen siguiente). También puede abrir la macro haciendo doble clic en el nombre de la macro en el panel Estructura del proyecto.

 

La imagen siguiente muestra la macro Ejemplo de búsqueda del archivo de proyecto Bank_MultiLanguage.ump disponible en la carpeta ...\UModelExamples.

 

scr-mac-open

 

Editar la macro

Para editar una macro escriba o edite su código en la ventana principal del editor.

 

A continuación puede ver un ejemplo de macro que busca elementos UML por nombre y por tipo.

 

// ############################################

// Macro "Ejemplo de búsqueda"

// Buscar elementos del modelo UML por nombre y por tipo

// ############################################

 

// variables globales de la macro

var bMatchCase                = false;

var bMatchWholeName = false;

 

var bSearchClasses                = true;

var bSearchInterfaces        = true;

var bSearchEnumerations        = true;

var bSearchPackages                  = true;

var bSearchProperties          = true;

var bSearchOperations          = true;

var bSearchEnumLiterals        = true;

var bSearchOthers                = false;

 

// importar el espacio de nombres System.Windows.Forms

CLR.Import( "System.Windows.Forms" );

 

// comprobar si el tipo de elemento UML se debe tener en cuenta

function MatchKind( objUMLElement )

{

 if ( objUMLElement.KindName == "Class"                                 ) return bSearchClasses;

 if ( objUMLElement.KindName == "Interface"                         ) return bSearchInterfaces;

 if ( objUMLElement.KindName == "Enumeration"                ) return bSearchEnumerations;

 if ( objUMLElement.KindName == "Package"                         ) return bSearchPackages;

 if ( objUMLElement.KindName == "Property"                         ) return bSearchProperties;

 if ( objUMLElement.KindName == "Operation"                         ) return bSearchOperations;

 if ( objUMLElement.KindName == "EnumerationLiteral"        ) return bSearchEnumLiterals;

 return bSearchOthers;

}

 

// comprobar si el nombre de elemento UML coincide con las opciones de búsqueda

function MatchName( objUMLNamedElement, sFindText )

{

 var sName = objUMLNamedElement.Name;

 if ( !bMatchCase )

         sName = sName.toUpperCase();

 

 if ( bMatchWholeName )

         return ( sName == sFindText )

 else

         return ( sName.indexOf( sFindText ) != -1 )

}

 

// buscar todos los elementos recursivamente

function Find( objUMLElement, sFindText )

{

 // solo nos interesan los elementos con nombre

 if ( objUMLElement.IsKindOf( "NamedElement" ) )

 {

         var objUMLNamedElement = objUMLElement;

         

         // mostrar solo los elementos cuyo nombre y tipo coincide con la búsqueda

         if ( MatchKind( objUMLNamedElement ) && 

              MatchName( objUMLNamedElement, sFindText ) )

         {

                 // crear una nueva clase ListViewItem

                 var newItem = CLR.Create( "ListViewItem", objUMLNamedElement.KindName );

                 // y añadirla a los elementos de la vista de lista

                 lastForm.lvResults.Items.Add( newItem );

                 // anexar nombre y nombre conpleto en los subelementos

                 newItem.SubItems.Add( objUMLNamedElement.Name );

                 newItem.SubItems.Add( objUMLNamedElement.QualifiedName );

         }

 }

 

 // iterar en todos los elementos secundarios (ownedElements)

 var ownedElements = objUMLElement.OwnedElements;

 var itr = new Enumerator( ownedElements );

 for ( ; !itr.atEnd(); itr.moveNext() )

         Find( itr.item(), sFindText );

}

 

// crear y mostrar el formulario

ShowForm( "Ejemplo de búsqueda" );

 

Nota: en las macros no se pueden usar parámetros ni valores devueltos.

 

Definir una macro como macro automática

Cuando una macro se define como macro automática, la macro se puede ejecutar automáticamente cuando (i) se inicia UModel o (ii) cuando se carga un proyecto de Altova UModel en UModel. Si quiere que las macros automáticas se ejecuten automáticamente cuando tengan lugar estos dos eventos, marque la casilla Ejecutar macros automáticas:

 

Cuando se inicie UModel: marque la casilla Ejecutar macros automáticas de la sección Scripting del cuadro de diálogo "Opciones" de UModel (Herramientas | Opciones).
Cuando se cargue un proyecto de UModel en UModel: marque la casilla Ejecutar macros automáticas en el cuadro de diálogo "Script" (imagen siguiente) (Proyecto | Configuración de script).

 

scr-mac-auto

 

Para definir una macro como macro automática, en el Editor de scripts haga clic con el botón derecho en la macro y seleccione el comando Establecer como macro automática. Este comando es un conmutador: haga clic otra vez en el comando para que la macro deje de ser automática.

 


© 2019 Altova GmbH