Personalizar y ampliar lenguajes específicos de dominioCustomizing and Extending a Domain-Specific Language

Visual Studio de modelado y visualización SDK (VMSDK) proporciona varios niveles en el que puede definir herramientas de modelado:Visual Studio Modeling and Visualization SDK (VMSDK) provides several levels at which you can define modeling tools:

  1. Definir un lenguaje específico de dominio (DSL) mediante el diagrama de definición DSL.Define a domain-specific language (DSL) using the DSL Definition diagram. Puede crear rápidamente un DSL con una notación esquemática, un formato XML legible y las herramientas básicas que se necesitan para generar código y otros artefactos.You can quickly create a DSL with a diagrammatic notation, a readable XML form, and the basic tools that are required to generate code and other artifacts.

    Para obtener más información, consulte cómo definir un lenguaje específico de dominio.For more information, see How to Define a Domain-Specific Language.

  2. Optimizar DSL mediante las características más avanzadas de la definición DSL.Fine-tune the DSL by using more advanced features of the DSL Definition. Por ejemplo, puede hacer que los vínculos adicionales aparezca cuando el usuario crea un elemento.For example, you can make additional links appear when the user creates an element. Estas técnicas se consiguen principalmente en la definición de DSL y algunos requieren unas pocas líneas de código de programa.These techniques are mostly achieved in the DSL Definition, and some require a few lines of program code.

  3. Extender las herramientas de modelado mediante código del programa.Extend your modeling tools by using program code. VMSDK está diseñado específicamente para facilitar la integración de las extensiones con el código que se genera a partir de la definición de DSL.VMSDK is designed specifically to make it easy to integrate your extensions with the code that is generated from the DSL Definition. Para obtener más información, consulte escribir código para personalizar un lenguaje específico de dominio.For more information, see Writing Code to Customise a Domain-Specific Language.

Note

Si ha actualizado el archivo de definiciones de DSL, no olvide hacer clic en Transformar todas las plantillas en la barra de herramientas del explorador de soluciones antes de volver a generar la solución.When you have updated the DSL Definitions file, do not forget to click Transform All Templates in the toolbar of Solution Explorer before rebuilding your solution.

En esta secciónIn this Section

Para lograr este efectoTo achieve this effect Consulte este temaRefer to this topic
Permite al usuario establecer las propiedades de color y el estilo de una forma.Allow the user to set the color and style properties of a shape. Haga clic en la clase de forma o conector, seleccione agregar exponey haga clic en un elemento.Right-click the shape or connector class, point to Add Exposed, and click an item.

Vea personalizar la presentación en el diagrama de.See Customizing Presentation on the Diagram.
Las distintas clases de elemento de modelo un aspecto similares en el diagrama, comparte las propiedades como inicial alto y ancho, color, información sobre herramientas.Different classes of model element look similar on the diagram, sharing properties such as initial height and width, color, tooltips. Usar la herencia entre formas o clases de conector.Use inheritance between shapes or connector classes. Asignaciones entre las clases de dominio derivada y formas derivadas heredan los detalles de asignación de los elementos primarios.Mappings between derived shapes and derived domain classes inherit the mapping details of the parents.

O bien, asignar clases de dominio diferente a la misma clase de forma.Or, map different domain classes to the same shape class.
Contextos de distintas formas, se muestra una clase de elemento de modelo.A class of model element is displayed by different shapes contexts. Asignar más de una clase de forma a la misma clase de dominio.Map more than one shape class to the same domain class. Cuando se compila la solución, siga el informe de errores y proporciona el código solicitado para decidir qué forma que se va a usar.When you build the solution, follow the error report and provide the requested code to decide what shape to use.
Forma y color u otras características como fuente indican el estado actual.Shape color or other features such as font indicate current state. Vea actualizar formas y conectores para reflejar el modelo.See Updating Shapes and Connectors to Reflect the Model.

Crear una regla que actualiza las propiedades expuestas.Create a rule that updates the exposed properties. Vea reglas propagarán los cambios en el modelo.See Rules Propagate Changes Within the Model.

O bien, utilice OnAssociatedPropertyChanged() para actualizar no exponen características como flechas de vínculo o la fuente.Or, use OnAssociatedPropertyChanged() to update non-exposed features such as link arrows or font.
Icono de forma cambia para indicar el estado.Icon on shape changes to indicate state. Establecer la visibilidad de la asignación decorador en la ventana Detalles de DSL.Set the visibility of the decorator mapping in the DSL Details window. Busque varias decoradores de imagen en la misma posición que él.Locate several image decorators on the same position. Vea actualizar formas y conectores para reflejar el modelo.See Updating Shapes and Connectors to Reflect the Model.

O bien, reemplazar ImageField.GetDisplayImage().Or, override ImageField.GetDisplayImage(). Vea el ejemplo en ImageField.See example in ImageField.
Establecer una imagen de fondo en cualquier formaSet a background image on any shape Invalidar InitializeInstanceResources() para agregar un ImageField anclado.Override InitializeInstanceResources() to add an anchored ImageField. Vea personalizar la presentación en el diagrama de.See Customizing Presentation on the Diagram.
Formas de anidar hasta cualquier profundidadNest shapes to any depth Configurar una recursiva árbol de incrustación.Set up a recursive embedding tree. Definir BoundsRules para contener las formas.Define BoundsRules to contain the shapes. Vea personalizar la presentación en el diagrama de.See Customizing Presentation on the Diagram.
Adjunta conectores en fijos puntos en los límites de un elemento.Attach connectors at fixed points on an element's boundary. Definir incrustados elementos terminal, en la que se representan mediante los puertos pequeños en el diagrama.Define embedded terminal elements, represented by small ports on the diagram. Use BoundsRules para corregir los puertos en su lugar.Use BoundsRules to fix the ports in place. Consulte el ejemplo de diagrama del circuito en SDK de visualización y modelado.See the Circuit Diagram sample at Visualization and Modeling SDK.
Campo de texto muestra un valor derivado de otros valores.Text field displays a value derived from other values. Asignar el elemento decorator de texto a una propiedad de dominio Calculated o almacenamiento personalizado.Map the text decorator to a Calculated or Custom Storage domain property. Para obtener más información, consulte calculadas y las propiedades de almacenamiento personalizada.For more information, see Calculated and Custom Storage Properties.
Propagar los cambios entre los elementos de modelo, o entre formasPropagate changes between model elements, or between shapes Vea validación en un lenguaje específico de dominio.See Validation in a Domain-Specific Language.
Propagar los cambios a los recursos como Sí Programa para la mejoraVisual Studio extensiones fuera de la tienda.Propagate changes to resources such as other Programa para la mejoraVisual Studio extensions outside the store. Vea controladores de eventos propagan los cambios fuera del modelo de.See Event Handlers Propagate Changes Outside the Model.
Ventana de propiedades muestra las propiedades de un elemento relacionado.Property window displays properties of a related element. Configurar la propiedad de reenvío.Set up Property Forwarding. Vea personalizar la ventana de propiedades.See Customizing the Properties Window.
Categorías de propiedadesProperty categories La ventana Propiedades se divide en secciones denominadas categorías.The properties window is divided into sections called categories. Establecer el categoría de las propiedades del dominio.Set the Category of your domain properties. Propiedades con el mismo nombre de categoría aparecerán en la misma sección.Properties with the same category name will appear in the same section. También puede establecer el categoría de un rol de relación.You can also set the Category of a relationship role.
Controlar el acceso a propiedades del dominioControl user access to domain properties Establecer es examinable false para impedir que una propiedad de dominio que aparecen en la ventana Propiedades en tiempo de ejecución.Set Is Browsable false to prevent a domain property from appearing in the Properties window at run time. Todavía puede asignar a decoradores de texto.You can still map it to text decorators.

Es de sólo lectura de interfaz de usuario impide que los usuarios cambiar una propiedad de dominio.Is UI Read Only prevents users from changing a domain property.

Acceso a la propiedad domain del programa no se ve afectado.Program access to the domain property is not affected.
Cambiar el nombre, el icono y la visibilidad de los nodos del explorador de modelos del ADSL.Change the name, icon, and visibility of nodes in your DSL's model explorer. Vea personalizar el Explorador de modelos.See Customizing the Model Explorer.
Habilitar copiar, cortar y pegarEnable copy, cut and paste Establecer el habilitar copiar pegar propiedad de la Editor nodo en el Explorador de DSL.Set the Enable Copy Paste property of the Editor node in DSL Explorer.
Copiar vínculos de referencia y sus destinos de cada vez que se copia un elemento.Copy reference links and their targets whenever an element is copied. Por ejemplo, copie los comentarios adjuntos a un elemento.For example, copy Comments attached to an item. Establecer el copia propaga propiedad del rol de origen (representado por la línea en un lado de la relación de dominio en el diagrama de definición DSL).Set the Propagates Copy property of the source role (represented by the line at one side of the domain relationship in the DSL Definition diagram).

Escribir código para reemplazar ProcessOnCopy para lograr efectos más complejos.Write code to override ProcessOnCopy to achieve more complex effects.

Vea personalizar el comportamiento de copia.See Customizing Copy Behavior.
Eliminar, cambiar el valor primario o volver a vincular elementos relacionados cuando se elimina un elemento.Delete, reparent, or relink related elements when an element is deleted. Establecer el propaga eliminar valor de un rol de relación.Set the Propagates Delete value of a relationship role. Para los efectos más complejos, invalida ShouldVisitRelationship y ShouldVisitRolePlayer métodos en el MyDslDeleteClosure (clase), definida en DomainModel.csFor more complex effects, override ShouldVisitRelationship and ShouldVisitRolePlayer methods in the MyDslDeleteClosure class, defined in DomainModel.cs

Vea personalizar el comportamiento de eliminaciónSee Customizing Deletion Behavior
Conservar el diseño de la forma y la apariencia de copia y arrastre y coloque.Preserve shape layout and appearance on copy and drag-drop. Agregar las formas y conectores a copiado ElementGroupPrototype.Add the shapes and connectors to the copied ElementGroupPrototype. Es el método más conveniente para invalidar ElementOperations.CreateElementGroupPrototype()The most convenient method to override is ElementOperations.CreateElementGroupPrototype()

Vea personalizar el comportamiento de copia.See Customizing Copy Behavior.
Pegar formas en la ubicación elegida, como la posición actual del cursor.Paste shapes in a chosen location, such as the current cursor position. Invalidar ClipboardCommandSet.ProcessOnCopy() para usar la versión específica de la ubicación de ElementOperations.Merge(). vea personalizar el comportamiento de copia.Override ClipboardCommandSet.ProcessOnCopy() to use the location-specific version of ElementOperations.Merge(). See Customizing Copy Behavior.
Crear vínculos adicionales al pegarCreate additional links on paste Invalidar ClipboardCommandSet.ProcessOnPasteCommand()Override ClipboardCommandSet.ProcessOnPasteCommand()
Habilitar arrastre y coloque los elementos de este diagrama, otros lenguajes DSL y WindowsEnable drag and drop from this diagram, other DSLs and Windows elements Vea Cómo: agregar un controlador de arrastrar y colocarSee How to: Add a Drag-and-Drop Handler
Permiten una forma o una herramienta y se puedan arrastrar una forma secundaria, por ejemplo, un puerto, tal y como si se arrastró el elemento primario.Allow a shape or tool to be dragged onto a child shape, such as a port, as if it were dragged onto the parent. Definir una directiva de mezcla de elemento en la clase de objeto de destino, para reenviar el objeto quitado al elemento primario.Define an Element Merge Directive on the target object class, to forward the dropped object to the parent. Vea Personalizar movimiento y la creación del elemento.See Customizing Element Creation and Movement.
Permite que una forma o herramienta que se pueden arrastrar a una forma y tienen vínculos adicionales o los objetos creados.Allow a shape or tool to be dragged onto a shape and have additional links or objects created. Por ejemplo, para permitir un comentario que se coloca en un elemento al que está vinculado.For example, to allow a comment to be dropped onto an item to which it is to be linked. Definir una directiva de mezcla de elemento en la clase de dominio de destino y definir los vínculos que se genere.Define an Element Merge Directive on the target domain class, and define the links to be generated. En casos complejos, puede agregar código personalizado.In complex cases, you can add custom code. Vea Personalizar movimiento y la creación del elemento.See Customizing Element Creation and Movement.
Crear un grupo de elementos con una herramienta.Create a group of elements with one tool. Por ejemplo, un componente con un conjunto fijo de puertos.For example, a component with a fixed set of ports. Invalide el método de inicialización del cuadro de herramientas en ToolboxHelper.cs.Override the toolbox initialization method in ToolboxHelper.cs. Crear un prototipo de grupo de elemento (EGP) que contiene los elementos y sus vínculos de relación.Create an Element Group Prototype (EGP) containing the elements and their relationship links. Vea personalizar herramientas y el cuadro de herramientas.See Customizing Tools and the Toolbox.

Incluya las formas de entidad de seguridad y el puertos en el EGP o definir BoundsRules para colocar las formas de puerto cuando se crea una instancia de la EGP.Either include the principal and port shapes in the EGP, or define BoundsRules to position the port shapes when the EGP is instantiated. Vea BoundsRules restringir la ubicación de la forma y el tamaño.See BoundsRules Constrain Shape Location and Size.
Usar una herramienta de conexión para crear instancias de varios tipos de relación.Use one connection tool to instantiate several types of relationship. Agregar vínculo conectar directivas (LCD) para el generador de conexión que se invoca por la herramienta.Add Link Connect Directives (LCD) to the Connection Builder that is invoked by the tool. Los paneles LCD determinan el tipo de la relación entre los tipos de los dos elementos.The LCDs determine the type of the relationship from the types of the two elements. Para facilitar esta dependen de los Estados de los elementos, puede agregar código personalizado.To make this depend on the states of the elements, you can add custom code. Vea personalizar herramientas y el cuadro de herramientas.See Customizing Tools and the Toolbox.
Herramientas rápidas - el usuario hacer doble clic en cualquier herramienta para crear muchas formas o conectores en sucesión.Sticky tools - the user can double-click any tool to create many shapes or connectors in succession. En el Explorador de DSL, seleccione la Editor nodo.In DSL Explorer, select the Editor node. En la ventana Propiedades, establezca utiliza elementos de cuadro de herramientas rápidas.In the Properties window, set Uses Sticky Toolbox Items.
Definir los comandos de menúDefine menu commands Vea Cómo: modificar un comando de menú estándarSee How to: Modify a Standard Menu Command
Restringir el modelo de reglas de validaciónConstrain the model with validation rules Vea validación en un lenguaje específico de dominioSee Validation in a Domain-Specific Language
Generar código, archivos de configuración o documentos desde un DSL.Generate code, configuration files, or documents from a DSL. Generar código a partir de lenguajes específicos de dominioGenerating Code from a Domain-Specific Language
Personalizar cómo se guardan los modelos al archivo.Customize how models are saved to file. Vea personalizar el almacenamiento de archivos y serialización XMLSee Customizing File Storage and XML Serialization
Guardar modelos en las bases de datos u otros recursos multimedia.Save models to databases or other media. Invalidar YourLanguageDocDataOverride YourLanguageDocData

Vea personalizar el almacenamiento de archivos y serialización XMLSee Customizing File Storage and XML Serialization
Integrar varios DSL para que funcionen como parte de una aplicación.Integrate several DSLs so that they work as part of one application. Vea integrar modelos mediante Modelbus de Visual Studio.See Integrating Models by using Visual Studio Modelbus.
Permitir ADSL ampliar por terceros y controlar la extensión.Allow your DSL to be extended by third parties, and control the extension. Ampliar DSL mediante MEFExtend your DSL by using MEF

Compartir clases entre DSL mediante una biblioteca DSLSharing Classes between DSLs by using a DSL Library

Definir una directiva de bloqueo para crear segmentos de solo lecturaDefining a Locking Policy to Create Read-Only Segments

Vea tambiénSee also

Note

En Visual Studio 2017, el SDK de transformación de plantilla de texto y el SDK de modelado de Visual Studio se instalan automáticamente al instalar características específicas de Visual Studio.In Visual Studio 2017, the Text Template Transformation SDK and the Visual Studio Modeling SDK are installed automatically when you install specific features of Visual Studio. Para obtener más información, consulte esta entrada de blog.For more details, see this blog post.