Cómo: Definir lenguajes específicos de dominio

Para definir un lenguaje específico de dominio, (DSL) se crea una solución de Visual Studio de una plantilla.La parte fundamental de la solución es el diagrama de definición ADSL, que se almacena en DslDefinition.dsl.La definición ADSL define las clases y las formas ADSL.Después de que se modifique y agregar a estos elementos, puede agregar código de programa para personalizar ADSL con más detalle.

Si no está familiarizado con el dominio (ADSL), se recomienda ejecutar DSL Tools Lab, que puede encontrar en este sitio: SDK de Visualizaton y modelado

En este tema

Selección de una solución de plantilla

Modelos para Definir ADSL

Tipos de elementos del modelo

formas en el diagrama

referencias y conectores

Formas que Contienen muestra: Formas de compartimiento

puertos en el límite de otra forma

Calles

Tipos de propiedades

Personalizar ADSL

Solución de problemas

Selección de una solución de plantilla

Para definir un DSL, debe haber instalado los siguientes componentes:

Visual Studio

https://go.microsoft.com/fwlink/?LinkId=185579

Visual Studio SDK

https://go.microsoft.com/fwlink/?LinkId=185580

El SDK de visualización y modelado de Visual Studio

https://go.microsoft.com/fwlink/?LinkID=186128

Para crear un nuevo lenguaje específico, creará una nueva solución de Visual Studio mediante la plantilla de proyecto de lenguaje específico de dominio.

Para crear una solución ADSL

  1. Cree una solución con la plantilla de Lenguaje específico , que se encuentran en Otros tipos de proyecto y extensibilidad en el cuadro de diálogo de Nuevo proyecto .

    Cuadro de diálogo para crear solución DSL

    Al hacer clic en Aceptar, Asistente específico del lenguaje se abre y muestra una lista de soluciones ADSL de la plantilla.

  2. Haga clic en cada plantilla para ver una descripción.Elija la solución que se parece más estrechamente a lo que desea crear.

    Cada plantilla ADSL define ADSL que funciona básico.Se editan este ADSL para ajustarse dispone de requisitos.

    Haga clic en cada ejemplo para obtener más información.

    • flujo de la tarea seleccione para crear un ADSL que tiene calles.Calles es particiones vertical u horizontal del diagrama.

    • modelos componentes seleccione para crear un ADSL que tiene puertos.Los puertos son pequeñas formas al borde de una forma más grande.

    • diagramas de clases seleccione para definir ADSL que tiene formas de compartimiento.Las formas de compartimiento contienen listas de elementos.

    • lenguaje mínimo seleccione en otros casos, o si no está seguro.

      [!NOTA]

      Si desea crear un diagrama de clases o un diagrama de componentes, considere utilizar los modelos UML.Las herramientas de modelado UML proporciona un conjunto de diagramas que están integrados alrededor de un único modelo.Son extensibles y pueden ser integrados con un ADSL con ModelBus.Para obtener más información, vea Desarrollar modelos para el diseño de software.

    • diseñador mínimo de WinForm seleccione o diseñador mínimo de WPF para crear ADSL que se muestra en los formularios Windows Forms o superficie de WPF.Deberá escribir código para definir el editor.Para obtener más información, vea los temas siguientes:

      Crear lenguajes específicos de dominio basados en Windows Forms

      Crear lenguajes específicos de dominio basados en WPF

  3. Escriba una extensión de nombre de archivo para ADSL en la página del asistente correspondiente.Ésta es la extensión que los archivos que contienen las instancias ADSL utilizarán.

    • Elija una extensión de nombre de archivo que no está asociado a ninguna aplicación en el equipo, o en cualquier equipo donde desea instalar ADSL.Por ejemplo, docx y htm se extensiones de nombre de archivo inaceptables.

    • El asistente mostrará si la extensión especificado se utiliza como ADSL.Considere el uso de una extensión de nombre de archivo.También puede restablecer la instancia de Visual Studio SDK Experimental de vaciado a antiguos diseñadores experimentales.Haga clic en Iniciar, haga clic Todos los programas, Microsoft Visual Studio 2010 SDK, Herramientasy, a continuación restablezca la instancia de Microsoft Visual Studio 2010 Experimental.

  4. Puede o ajustar los valores de las otras páginas, o mantenga los valores predeterminados.

  5. Haga clic en Finalizar.

    El asistente crea una solución que contiene dos o tres proyectos, y genera código de definición ADSL.

La interfaz de usuario se parece ahora a la siguiente imagen.

diseñador dsl

Esta solución define un lenguaje específico de dominio.Para obtener más información, vea Información general sobre la interfaz de usuario de las herramientas de los lenguajes específicos de dominio.

Bb126581.collapse_all(es-es,VS.110).gifpruebe la solución

La solución de la plantilla proporciona ADSL que funciona, que puede modificar o utilizar tal cual.

Para probar la solución, presione F5 o CTRL+F5.Una nueva instancia de Visual Studio se abre en modo experimental.

En la nueva instancia de Visual Studio, en el explorador de soluciones, abra el archivo de ejemplo.Abra como un diagrama, con un cuadro de herramientas.

Si ejecuta una solución que ha creado a partir de la plantilla de lenguaje mínimo , Visual Studio experimental será similar al siguiente ejemplo:

Bb126581.DSL_min(es-es,VS.110).png

Experimente con las herramientas.Cree los elementos y conectar.

Cierre la instancia experimental de Visual Studio.

[!NOTA]

Cuando haya modificado DSL, no podrá ver las formas en el archivo de prueba de ejemplo.Sin embargo, podrá crear nuevos elementos.

Bb126581.collapse_all(es-es,VS.110).gifModificar la plantilla ADSL

Cambie y mantenga algunas o todas las clases de dominio y las clases de la forma en la definición de ADSL de la plantilla.Los nuevos nombres de clase deben ser nombres válidos de CLR, sin espacios ni puntuación.

es especialmente útil conservar estas clases:

  • La clase raíz aparece en la parte superior izquierda del diagrama de definición ADSL, en Clases y Relaciones.Cámbiele el nombre a un nombre diferente ADSL.Por ejemplo, DSL denominado MusicLibrary puede tener una clase raíz denominada Music.

  • La clase del diagrama aparece a la derecha inferior del diagrama de definición ADSL, en la columna de Elementos del diagrama .Puede que tenga que desplazarse hacia la derecha para verla.Normalmente se denomina TheDslDiagrama.

  • Si utilizó la plantilla de flujo de la tarea y desea crear diagramas con calles, mantener y para cambiar el nombre de la clase de dominio de Actor y la forma de ActorSwimlane.

Elimine o cambiar otras clases para adaptarse a los requisitos.

Modelos para Definir ADSL

Se recomienda desarrollar ADSL agregando o ajustando uno o dos características al mismo tiempo.Agregue una característica, ejecute ADSL y pruébelo, y agregue una o dos más características.Una característica típica ADSL podría ser:

  • Una clase de dominio, la relación de incrustación que conecta el elemento con el modelo, la forma requería a los elementos gráficos de la clase en el diagrama, y la herramienta de elementos que permite a los usuarios crear elementos.

  • Las propiedades del dominio de una clase de dominio y de los elementos decorator que se mostrarán en una forma.

  • Una relación de referencia y el conector que se muestra en el diagrama y la herramienta de conector que permite a los usuarios crear vínculos.

  • Una personalización que requiere código de programa, como una restricción de validación o un comando de menú.

Las secciones siguientes describen cómo construir las clases más útiles de características ADSL.Hay muchos otros modelos que ADSL puede construirse, pero son frecuentemente utilizados.

[!NOTA]

Después de agregar una característica, no olvide hacer clic Transformar todas las plantillas en la barra de herramientas del explorador de soluciones antes de compilar y ejecutar ADSL.

La ilustración siguiente muestra clases y la parte de relaciones ADSL que se utiliza como un ejemplo de este tema.

Relaciones de incrustación y referencia

La ilustración siguiente es un modelo de ejemplo de este ADSL:

Modelo de instancia de DSL generado

[!NOTA]

“Modelo” hace referencia a una instancia ADSL que los usuarios crean, y se muestra normalmente como un diagrama.En este tema se describe el diagrama de definición ADSL y diagramas modelos que aparecen cuando se utiliza ADSL.

Definición de clases de dominio

Las clases de dominio representan conceptos ADSL.Las instancias son elementosdel modelo.Por ejemplo en un MusicLibrary ADSL podría tener clases de dominio denominadas Album y Song.

Para crear una clase de dominio, puede arrastrar de la herramienta de Nombre denominado Class al diagrama, y después cambia el nombre de la clase.

Para obtener más información, vea Propiedades de las clases de dominio.

Bb126581.collapse_all(es-es,VS.110).gifCree una Relación que inserta para cada clase de dominio

Cada clase de dominio a menos que la clase raíz debe ser el destino de al menos una relación que inserta, o debe heredar de una clase que es el destino de una relación de incrustación.

En un modelo, cada elemento del modelo es un nodo en un único árbol de relaciones de incrustación.El origen y destino de una relación de incrustación con frecuencia se denominan primario y secundario.

La selección de un elemento primario para una clase de dominio depende de cómo desea las duraciones de los elementos para depender de otros elementos.Si un nodo de un árbol se elimina, su subárbol se elimina normalmente también.Los tipos de elementos que tienen un existente independiente por consiguiente se insertan directamente bajo la clase raíz.

Normalmente, si se muestra un elemento dentro de otro elemento, desea indicar una relación propietario.En ese caso, la clase primaria más adecuada es la clase contenedora.La excepción es cuando el elemento que se consulta dentro de un contenedor es simplemente un vínculo de referencia a un elemento independiente.En ese caso, eliminando el contenedor elimina la referencia pero no el destino.

En los modelos de definición ADSL descritos en este tema, asumiremos que los elementos mostrados dentro de un contenedor se eliminarán cuando se elimine el contenedor.Esquemas más complejos son posibles, y pueden tener acceso definiendo reglas.

Cómo se muestra el elemento

Clase primaria (de incrustación)

Ejemplo de plantilla de solución ADSL

Forma de diagrama.

Calle.

Clase raíz ADSL.

lenguaje mínimo.

Flujo de tareas: Clase de actor.

Forma en calle.

Clase de dominio de elementos que se muestran como calles.

Flujo de tareas: clase de la tarea.

Elemento de lista de la forma, donde se elimina el elemento si se elimina el contenedor.

Puerto en el borde de la forma.

Clase de dominio que se asigna a la forma del contenedor.

diagrama de clases: Clase de atributos.

Diagrama de componentes: Clase de puerto.

Elemento de la lista, no eliminará si se elimina el contenedor.

Clase raíz ADSL.

Los vínculos de referencia de muestra de la lista.

Mostrado no directamente.

la clase cuyo forma la partición.

En el ejemplo de la biblioteca de Music, álbumes se muestran como rectángulos en que los títulos de Songs aparece.Por consiguiente el elemento primario de álbumes es la clase Music raíz, y el elemento primario de Song es álbum.

Para crear una clase de dominio y su insertar al mismo tiempo, haga clic en la herramienta de Relación de incrustación , después haga clic en la clase primaria, y haga clic en una parte en blanco del diagrama.

Normalmente no es necesario ajustar el nombre de la relación de incrustación y sus roles, porque seguirán los nombres de clase automáticamente.

Para obtener más información, vea Propiedades de las relaciones de dominio y Propiedades de los roles de dominio.

[!NOTA]

La incrustación no es igual que la herencia.Los elementos secundarios en una relación de incrustación no heredan características de sus elementos primarios.

Bb126581.collapse_all(es-es,VS.110).gifAgregue propiedades de dominio a cada clase de dominio

La configuración del almacén de las propiedades del dominio.los ejemplos son: Nombre, title, fecha de publicación.

Haga clic en Propiedades de dominio en la clase, presione la tecla Entrar, y escriba el nombre de una propiedad.El tipo predeterminado de una propiedad de dominio es string.Si desea cambiar el tipo, seleccione la propiedad de dominio, y establece tipo en la ventana de Propiedades .Si el tipo que desea no está en la lista desplegable, vea Tipos de propiedad de suma.

Establezca una propiedad Name del elemento. Seleccione una propiedad del dominio que se pueden utilizar para identificar elementos en el explorador del lenguaje.Por ejemplo, en la clase de dominio de Song que podría seleccionar la propiedad del dominio de título.en la ventana de Propiedades , establezca es el nombre de elemento a true.

Bb126581.collapse_all(es-es,VS.110).gifCrear clases derivadas de dominio

Si desea que una clase de dominio para tener tipos Variant que heredar sus propiedades y relaciones, cree las clases que derivan de ella.Por ejemplo, el álbum podría tener clases derivadas WMA y MP3.

Cree la clase derivada mediante la herramienta de Clase de dominio .

Haga clic en la herramienta de herencia , haga clic en la clase derivada, y haga clic en la clase base.

considere establecer Modificador de herencia de la clase base a resumen.Si cree que quizá necesite las instancias de la clase base, vea en lugar de crear una clase derivada independiente para ellos.

Las clases derivadas heredan las propiedades y los roles de sus clases base.

Bb126581.collapse_all(es-es,VS.110).gifColoque en orden el diagrama de definición ADSL

Al agregar relaciones, algunas de las clases aparecerán en más de un lugar.Para reducir el número de aspectos y crear el diagrama más ancho, haga clic con el botón secundario en la clase de destino de una relación, y haga clic Pasar el árbol aquí.Para el efecto, haga clic con el botón secundario en la clase de destino de una relación y haga clic opuestos Árbol dividido.Si no ve estos comandos de menú, asegúrese de que sólo la clase de dominio es seleccionado.

Utilice CTRL+Up y CTRL+Down para mover clases de dominio y clases de forma.

Bb126581.collapse_all(es-es,VS.110).gifPruebe las clases de dominio

Para probar las nuevas clases de dominio

  1. Haga clic en Todas las plantillas de transformación en la barra de herramientas del explorador de soluciones, para generar el código del diseñador ADSL.Puede automatizar este paso.Para obtener más información, vea Cómo: Transformar automáticamente todas las plantillas.

  2. Compile y ejecute ADSL. Presione F5 o CTRL+F5 para ejecutar una nueva instancia de Visual Studio en modo experimental.En la instancia experimental de Visual Studio, abra o cree un archivo con la extensión de nombre de archivo ADSL.

  3. Abra el Explorador. En el lado del diagrama es la ventana explorador de lenguaje, que normalmente se denomina Explorador de TheLanguage .Si no ve esta ventana, podría ser en una pestaña bajo el explorador de soluciones.Si no puede encontrarlo, en el menú de Ver , elija Otras ventanas, y haga clic en TheLanguageExplorador.

    El explorador muestra una vista de árbol del modelo.

  4. Cree nuevos elementos. Haga clic con el botón secundario en el nodo raíz en la parte superior, y haga clic en Agregar nuevoTheClass.

    Una nueva instancia de la clase aparece en el Explorador del lenguaje.

  5. Compruebe que cada instancia tiene un nombre diferente al crear nuevas instancias.Esto solo aparecerá si ha establecido la marca de es el nombre de elemento en una propiedad del dominio.

  6. Examine las propiedades del dominio. Con una instancia de la clase seleccionada, inspeccione la ventana Propiedades.Debe indicar a las propiedades de dominio esas definido en esta clase de dominio.

  7. Guarde el archivo, ciérrela, y abrirlo de nuevo.Todas las instancias que creó deben ser visibles en el explorador, después de que se expanda los nodos.

definición de las formas en el diagrama

Puede definir tipos de elementos que aparecen en un diagrama como rectángulos, elipses, o iconos.

Para definir una clase de elementos que aparecen como formas de un diagrama

  1. Definir y probar una clase de dominio como se describe en clases de dominio de Definir.

    • El elemento primario de la clase debe ser la clase raíz.Es decir, debe existir una relación de incrustación entre la clase raíz y la nueva clase de dominio.

    • Si el diagrama tiene calles, el elemento primario puede ser la clase de dominio que se asigna a un calle.Antes de continuar con este procedimiento, vea Definir ADSL que tiene Calles.

  2. Agregue una clase shape para representar los elementos del diagrama del modelo.Arrastre desde una de las siguientes herramientas al diagrama de definición ADSL:

    • Forma de geometría proporciona un rectángulo o una elipse.

    • Forma de imagen muestra una imagen que se proporciona.

    • Forma de compartimiento es un rectángulo que contiene una o más listas de elementos.

    Cambie la clase shape, que aparecerá a la derecha del diagrama de definición ADSL, bajo las formas y conectores.

  3. Defina una imagen, si creó una forma de la imagen.

    1. Cree un archivo de imagen de cualquier tamaño.Se admiten los formatos BMP, JPEG, GIF y EMF.

    2. En el explorador de soluciones, agregue el archivo a la solución bajo ADSL \Resources.

    3. Vuelva al diagrama de la definición de ADSL y seleccione la nueva clase de la imagen.

    4. En la ventana Propiedades, haga clic en la propiedad de Imagen .

    5. En el cuadro de diálogo de Seleccionar imagen , haga clic en el menú desplegable en Nombre de archivo, y seleccione la imagen.

  4. Agregue los elementos decorator de texto a la forma, para mostrar las propiedades del dominio.

    Para mostrar el nombre o el título del elemento de modelo, probablemente necesitará por lo menos un elemento decorator de texto.

    Haga clic con el botón secundario en el encabezado de la clase shape, elija Agregar, y haga clic en Text a decorador.Establezca el nombre del elemento decorator, y en la ventana Propiedades establezca su Posición.

  5. Conectar cada forma con un elemento del diagrama asignado a la clase de dominio que debe mostrar.

    Haga clic en la herramienta de Mapa del elemento del diagrama , haga clic en la clase de dominio, haga clic en la clase shape.

  6. Asigne las propiedades a los elementos decorator de texto.

    1. Seleccione la línea gris entre la clase de dominio y la clase shape que representa el mapa del elemento del diagrama.

    2. En la ventana de Detalles ADSL , haga clic en la pestaña de Mapas de decorador .Si no ve la ventana de Detalles ADSL , en el menú de Ver , elija Otras ventanas y no haga clic en Detalles ADSL.Suele ser necesario criar la parte superior de esta ventana para ver todo el contenido.

    3. Seleccione el nombre de un elemento decorator.En Propiedad display, seleccione el nombre de una propiedad de la clase de dominio.repita esto para cada decorador.

      Si desea mostrar una propiedad de un elemento relacionado, haga clic en el navegador desplegable de árbol en Ruta para mostrar la propiedad.

    4. Asegúrese de que una marca de verificación aparezca junto a cada nombre de decorador.

    Ventana de asignaciones de formas y detalles de DSL

  7. Haga un elemento de cuadro de herramientas para crear elementos de la clase de dominio.

    1. En Explorador ADSL, expanda el nodo de Editor y todos sus subnodos como mínimo.

    2. Haga clic con el botón secundario en el nodo bajo Fichas del cuadro de herramientas que tiene el mismo nombre que un DSL, por ejemplo MusicLibrary.Haga clic en Agregue el elemento.

      [!NOTA]

      Si hace clic con el botón secundario en el nodo de Herramientas , no ve Agregue el elemento.En su lugar, haga clic en el nodo a él.

    3. En la ventana Propiedades con la nueva herramienta del elemento seleccionado, establezca class a la clase de dominio agregado recientemente.

    4. establezca Título y Información sobre herramientas.

    5. establezca Icono de cuadro de herramientas a un icono que aparezca en el cuadro de herramientas.Puede establecerlo en un nuevo icono o un icono ya usado para otra herramienta.

      Para crear un nuevo icono, abra ADSL \Resources en Explorador de soluciones.Copie y pegue uno de los archivos BMP existentes del elemento.Cambie la copia pegado, y haga doble clic para editarlo.

      Vuelva al diagrama de definición ADSL, seleccione la herramienta, y haga clic en [...] de la ventana Propiedades en Icono de cuadro de herramientas.En el cuadro de diálogo de Mapa de bits seleccione , seleccione el archivo de .BMP en el menú desplegable.

Para obtener más información, vea Propiedades de las formas geométricas y Propiedades de las formas de imagen.

para probar las formas

  1. Haga clic en Todas las plantillas de transformación en la barra de herramientas del explorador de soluciones, para generar el código del diseñador ADSL.

  2. Compile y ejecute ADSL. Presione F5 o CTRL+F5 para ejecutar una nueva instancia de Visual Studio en modo experimental.En la instancia experimental de Visual Studio, abra o cree un archivo con la extensión de nombre de archivo ADSL.

  3. Compruebe que las herramientas del elemento aparecen en el cuadro de herramientas.

  4. Cree las formas arrastrando de una herramienta sobre el diagrama del modelo.

  5. Compruebe que aparece cada elemento decorator de texto, y que:

    1. Puede modificarlo, a menos que haya establecido la marca de Es readonly de la interfaz de usuario en la propiedad del dominio.

    2. Cuando edite la propiedad en la ventana Propiedades o en el elemento decorator, se actualiza la otra vista.

Después de que primero pruebe una forma, quizá desee envolver algunas sus propiedades y agregar más características avanzadas.Para obtener más información, vea Personalizar y ampliar lenguajes específicos de dominio.

Definir las relaciones de referencia

Puede definir una relación de referencia entre cualquier clase de dominio de origen y cualquier tipo de dominio de destino.Las relaciones de referencia se muestran habitualmente en un diagrama como conectores, que son líneas entre las formas.

Por ejemplo, si álbumes de música y Artists se muestran como formas en el diagrama, puede definir una relación denominada ArtistsAppearedOnAlbums que vincula Artists a álbumes en los que han trabajado.Vea el ejemplo de la ilustración.

Modelo de instancia de DSL generado

Las relaciones de referencia también pueden vincular los elementos del mismo tipo.Por ejemplo, en un ADSL que representa un árbol de familia, la relación entre elementos primarios y sus elementos secundarios es una relación de referencia de Person To Person.

Bb126581.collapse_all(es-es,VS.110).gifDefina una referencia Relación

Haga clic en la herramienta de Relación de referencia, haga clic en la clase de dominio de origen de la relación y, a continuación haga clic en la clase de dominio de destino.La clase de destino puede ser igual que la clase de origen.

Cada relación tiene dos roles, representados por línea en cada lado del cuadro de la relación.Puede seleccionar cada rol y establecer sus propiedades en la ventana Propiedades.

Debe cambiar el nombre de los roles.Por ejemplo, en una relación entre la persona y person, puede cambiar los nombres predeterminados a los elementos primarios y secundarios, administrador y Subordinates, Teacher y student, etc.

Ajuste las multiplicidades de cada rol, si es necesario.Si desea que cada persona para tener al menos un administrador, establezca la multiplicidad que aparece debajo de la etiqueta de administrador en el diagrama en 0..1.

Agregue propiedades de dominio a la relación. En la ilustración, la relación de Artista-Álbum tiene una propiedad del rol.

Establezcala propiedad dePermite duplicadosde la relación, si más de un vínculo de la misma clase puede existir entre los mismos pares de elementos del modelo.Por ejemplo, podría permitir que un Teacher enseñe más de un Subject To cada student.

Asignaciones de formas para conectores

Para obtener más información, vea Propiedades de las relaciones de dominio y Propiedades de los roles de dominio.

Bb126581.collapse_all(es-es,VS.110).gifDefina un conector para mostrar el Relación

Un conector muestra una línea entre dos formas en el diagrama del modelo.

Arrastre la herramienta de conector al diagrama de la definición del ADSL.

Agregue los elementos decorator de texto si desea mostrar etiquetas en el conector.establezca sus posiciones.Para permitir al usuario mover un elemento decorator de texto, establezca la propiedad de es movible .

Utilice la herramienta de Mapa del elemento del diagrama para vincular el conector a la relación de referencia.

Con el elemento del diagrama seleccionado asignado, abra la ventana de Detalles ADSL , y abre la ficha de Mapas de decorador .

Seleccione cada decorador y Propiedad display determinado a la propiedad correcta del dominio.

Asegúrese de que una marca de verificación aparezca junto a cada elemento de la lista de decoradores .

Bb126581.collapse_all(es-es,VS.110).gifDefina una herramienta de generación de Conexión

En la ventana de Explorador ADSL , expanda el nodo de Editor y todos sus subnodos.

Haga clic con el botón secundario en el nodo que tiene el mismo nombre que un DSL, y haga clic en Agregue la nueva herramienta de conexión.

Mientras la nueva herramienta está seleccionado, en la ventana Propiedades:

  • establezca Título y Información sobre herramientas.

  • Haga clic en Generador de conexión y seleccione el generador adecuado para la nueva relación.

  • Establezca Icono de cuadro de herramientas el icono que desea que aparezca en el cuadro de herramientas.Puede establecerlo en un nuevo icono o un icono ya usado para otra herramienta.

    Para crear un nuevo icono, abra ADSL \Resources en Explorador de soluciones.Copie y pegue uno de los archivos BMP existentes del elemento.Cambie la copia pegado, y haga doble clic para editarlo.

    Vuelva al diagrama de definición ADSL, seleccione la herramienta, y haga clic en [...] de la ventana Propiedades en Icono de cuadro de herramientas.En el cuadro de diálogo de Mapa de bits seleccione , seleccione el archivo de .BMP en el menú desplegable.

Para probar una referencia Relación y el conector

  1. Haga clic en Todas las plantillas de transformación en la barra de herramientas del explorador de soluciones, para generar el código del diseñador ADSL.

  2. Compile y ejecute ADSL. Presione F5 o CTRL+F5 para ejecutar una nueva instancia de Visual Studio en modo experimental.En la instancia experimental de Visual Studio, abra o cree un archivo con la extensión de nombre de archivo ADSL.

  3. Compruebe que la herramienta de conexión aparece en el cuadro de herramientas.

  4. Cree las formas arrastrando de una herramienta sobre el diagrama del modelo.

  5. Crear conexiones entre las formas.Haga clic en la herramienta de conector, haga clic en la forma, y haga clic en otra forma.

  6. Comprobará que no puede crear conexiones entre las clases inadecuadas. Por ejemplo, si la relación es entre álbumes y Artists, compruebe que no puede vincularse Artists a Artists.

  7. Compruebe que las multiplicidades son correctos. Por ejemplo, compruebe que no puede conectar a una persona a más de un administrador.

  8. Compruebe que aparece cada elemento decorator de texto, y que:

    1. Puede modificarlo, a menos que haya establecido la marca de Es readonly de la interfaz de usuario en la propiedad del dominio.

    2. Cuando edite la propiedad en la ventana Propiedades o en el elemento decorator, se actualiza la otra vista.

Después de que primero probar un conector, quizá desee envolver algunas sus propiedades y agregar más características avanzadas.Para obtener más información, vea Personalizar y ampliar lenguajes específicos de dominio.

Definiendo las formas que Contienen muestra: Formas de compartimiento

Una forma de compartimiento contiene una o más listas de elementos.Por ejemplo, en una biblioteca de Music DSL, podría utilizar formas de compartimiento para representar álbumes de música.en cada álbum, hay una lista de Songs.

Forma de compartimiento

En el método más simple para lograr de este efecto en una definición ADSL, defina una clase de dominio para el contenedor, y una clase de dominio para cada lista.La clase del contenedor se asigna a la forma de compartimiento.

Asignación de formas

Para obtener más información, vea Propiedades de las formas de compartimiento.

para definir una forma de Compartment

  1. Crear la clase de dominio del contenedor.Haga clic en la herramienta de Relación de incrustación , haga clic en la clase de la raíz del modelo, y haga clic en una parte en blanco del diagrama de la definición del ADSL.Esto crea la clase de dominio que se denomina Album en la figura de ejemplo.

    También en lugar de incrustación en la clase raíz, puede insertar el contenedor en una clase de dominio asignado a un calle.

    Agregue una propiedad de dominio como nombre a la clase, y establezca el marcador de es el nombre de elemento en la ventana Propiedades.

  2. Crear la clase de dominio del elemento de lista.Haga clic en la herramienta de Relación de incrustación , haga clic en la clase del contenedor (álbum) y haga clic en una parte en blanco del diagrama.Esto crea la clase de dominio que se denomina Song en la figura de ejemplo.

    Agregue una propiedad de dominio como título a la clase, y establezca el marcador de es el nombre de elemento .

    Agregue otras propiedades del dominio.

    Agregue otra clase de dominio del elemento de lista para cada lista que desea mostrar.

  3. Para combinar varios tipos de elemento en la lista, cree las clases que heredan de la clase de la lista.cree enumerar el resumen de la clase estableciendo su Modificador de herencia.

    Por ejemplo, si desea que la música clásica que se ordenen por el compositor en lugar de artista, puede crear dos subclases de Song, de ClassicalSong y de NonClassicalSong.

  4. Cree la forma del compartimiento.Arrastre desde la herramienta de Forma de compartimiento al diagrama de la definición del ADSL.

    Agregue un elemento decorator de texto y establezca su nombre.

    agregue un compartimiento y establezca su nombre.

  5. Para permitir al usuario ocultar los compartimientos de la lista, haga clic con el botón secundario en la clase del compartimiento, elija Agregar, y haga clic en Expandir o el decorador expandcollapse.En la ventana Propiedades, establezca la posición de decorador.

  6. Haga clic en la herramienta de Mapa del elemento del diagrama , haga clic en la clase de dominio del contenedor, y haga clic en la forma del compartimiento.

  7. Seleccione el vínculo del mapa del elemento del diagrama entre la clase de dominio y la forma.en la ventana de Detalles ADSL :

    1. Haga clic en la pestaña de decoradores .Haga clic en el nombre del elemento decorator y seleccione el elemento adecuado en Propiedad display.Asegúrese de que una marca de verificación aparece junto al nombre del elemento decorator.

    2. Haga clic en la pestaña de Mapas de compartimiento .

      Haga clic en el nombre del compartimiento.

      En Ruta de acceso mostrada de la colección de elementos, navegue a la clase de elemento de lista (Song).Haga clic en la flecha de lista desplegable para utilizar la herramienta del explorador.

      En Muestre la propiedad, seleccione la propiedad que se debe mostrar en la lista.En el ejemplo, es título.

[!NOTA]

Utilizando los campos de ruta en los campos de Decorator del mapa de asignación y de Compartment, puede crear relaciones complejas entre las clases de dominio y la forma del compartimiento.

Para definir una herramienta para crear una forma

  1. Haga un elemento de cuadro de herramientas para crear elementos de la clase de dominio.

  2. En Explorador ADSL, expanda el nodo de Editor y todos sus subnodos como mínimo.

  3. Haga clic con el botón secundario en el nodo bajo Fichas del cuadro de herramientas que tiene el mismo nombre que un DSL, por ejemplo MusicLibrary.Haga clic en Agregue el elemento.

    [!NOTA]

    Si hace clic con el botón secundario en el nodo de Herramientas , no ve Agregue el elemento.En su lugar, haga clic en el nodo a él.

  4. En la ventana Propiedades con la nueva herramienta del elemento seleccionado, establezca class a la clase de dominio agregado recientemente.

  5. establezca Título y Información sobre herramientas.

  6. establezca Icono de cuadro de herramientas a un icono que aparezca en el cuadro de herramientas.Puede establecerlo en un nuevo icono o un icono ya usado para otra herramienta.

    Para crear un nuevo icono, abra ADSL \Resources en Explorador de soluciones.Copie y pegue uno de los archivos existentes de la herramienta .BMP del elemento.Cambie la copia pegado, y haga doble clic para editarlo.

    Vuelva al diagrama de definición ADSL, seleccione la herramienta, y haga clic en [...] de la ventana Propiedades en Icono de cuadro de herramientas.En el cuadro de diálogo de Mapa de bits seleccione , seleccione el archivo BMP en el menú desplegable.

Para probar una forma de compartimiento

  1. Haga clic en Todas las plantillas de transformación en la barra de herramientas del explorador de soluciones, para generar el código del diseñador ADSL.

  2. Compile y ejecute ADSL. Presione F5 o CTRL+F5 para ejecutar una nueva instancia de Visual Studio en modo experimental.En la instancia experimental de Visual Studio, abra o cree un archivo con la extensión de nombre de archivo ADSL.

  3. compruebe que la herramienta aparezca en el cuadro de herramientas.

  4. Arrastre la herramienta sobre el diagrama del modelo.se crea una forma.

    Compruebe que el nombre del elemento aparece y se establece automáticamente en un valor predeterminado.

  5. Haga clic con el botón secundario en el encabezado de la nueva forma, y haga clic en agregar El elemento de lista. en el ejemplo, el comando es agrega Song.

    Compruebe que el elemento aparece en la lista y que tiene un nombre.

  6. Haga clic en uno de los elementos de lista, y luego examine la ventana Propiedades.Debe ver las propiedades de los elementos de lista.

  7. Abra el Explorador del lenguaje.Compruebe que puede ver los nodos contenedores con nodos de elemento de lista en.

Explorador generado de DSL

Después de que primero pruebe una forma de compartimiento, quizá desee envolver algunas de sus propiedades y agregar más características avanzadas.Para obtener más información, vea Personalizar y ampliar lenguajes específicos de dominio.

Bb126581.collapse_all(es-es,VS.110).gifMostrar un vínculo de referencia en un Compartment

Normalmente, un elemento que se muestra en un compartimiento es un elemento secundario del elemento representado por la forma del compartimiento.Pero a veces, desea mostrar un elemento al que está vinculado con una relación de referencia.

Por ejemplo, podríamos agregar un segundo compartimiento a AlbumShape que muestra una lista de Artists vinculado al álbum.

En este caso, el compartimiento debe mostrar el vínculo, en lugar del elemento de referencia.Esto es porque cuando el usuario selecciona el elemento en el compartimiento y presione SUPRIMIR, el vínculo que se va a eliminar, no el elemento de referencia.

Sin embargo, puede hacer que el nombre del elemento de referencia aparece en el compartimiento.

El procedimiento siguiente supone que ha creado la clase de dominio, la relación de referencia, la forma de compartimiento, y el mapa del elemento del diagrama, como se describió anteriormente en esta sección.

Para mostrar un vínculo de referencia en un compartimiento

  1. Agregue un compartimiento a la forma de compartimiento.En el diagrama de la definición de DSL, haga clic con el botón secundario en la clase del compartimiento, elija Agregar, y haga clic en compartimiento.

  2. Establezca Ruta de acceso mostrada de la colección de elementos para navegar hasta el vínculo, en lugar del elemento de destino.Haga clic en el menú desplegable y utilice la vista de árbol para seleccionar la relación de referencia en lugar del destino.en el ejemplo, la relación es ArtistAppearedOnAlbums.

  3. Establezca Ruta para mostrar la propiedad para navegar de vínculo al elemento de destino.En el ejemplo, es Artist.

  4. Establezca Muestre la propiedad a la propiedad correspondiente del elemento de destino, como nombre.

  5. Transformar todas las plantillas, compile y ejecute DSL, y abre un modelo de la prueba.

  6. En el diagrama del modelo, cree las clases adecuadas de forma, establezca sus nombres, y vínculos entre ellos.En la forma de compartimiento, los nombres de elementos vinculados deben aparecer.

  7. Seleccione el vínculo o el elemento en la forma de compartimiento.El vínculo y el elemento deben desaparezca.

definición de puertos en el límite de otra forma

Un puerto es una forma ubicada en el límite de otra forma.

Los puertos también se pueden utilizar para proporcionar un punto de conexión fijo de otra forma, a la que el usuario puede dibujar los conectores.En este caso, puede crear la forma de puerto transparente.

Para ver un ejemplo que utiliza puertos, seleccione la plantilla de Diagrama de componentes cuando se crea una nueva solución ADSL.Este ejemplo muestra a cuestiones principales que considere cuando defina puertos:

  • Hay una clase que representa el contenedor de los puertos, Componentde dominio.

  • Hay una clase de dominio que representa puertos.En el ejemplo, es ComponentPort.

  • Hay una relación de incrustación de la clase de dominio del contenedor a la clase de dominio de puerto.Para obtener más información, vea Definición de clases de dominio.

  • Si desea diferentes tipos de puerto que se mezclará en el mismo contenedor, puede crear las subclases de la clase de dominio de puerto.en el ejemplo, InPort y OutPort heredar de ComponentPort.

  • La clase de dominio del contenedor se puede asignar a cualquier clase de forma.en el ejemplo, es ComponentShape.Para obtener más información, vea Definición de formas.

  • Las clases de dominio de puerto se asignan a las formas de puerto.Puede asignar las clases derivadas para separar clases del puerto, o para asignar la clase base a una clase del puerto.

En otros aspectos, formas de puerto se comportan como se describe en Definición de formas.

Para obtener más información, vea Propiedades de las formas de puerto.

Definir ADSL que tiene Calles

Calles es una partición horizontal o vertical de un diagrama.Cada calle corresponde a un elemento de modelo.La definición ADSL requiere una clase de dominio en calle.

La mejor manera de crear ADSL con calles es crear una nueva solución ADSL y elegir la plantilla de solución de flujo de la tarea.En la definición de DSL, la clase de Actor es la clase de dominio asignada al calle.Cambie el esto y las clases para adaptarse al proyecto.

Para agregar una clase que se mostrará como forma dentro de un calle, cree una Relación que introduce entre la clase de calle y la nueva clase.Los usuarios podrán a arrastrar los elementos desde un calle a otro, pero cada elemento estará siempre dentro de un calle determinado.En la plantilla de solución del flujo de la tarea, FlowElement es un elemento secundario de la clase de calle.

Para agregar una clase que se mostrará como forma independientemente de calles, cree una Relación que inserta entre la clase raíz y la nueva clase.Los usuarios podrán colocar estas formas cualquier parte del diagrama, incluso a través de los límites de calles y fuera de calles.En la plantilla de solución del flujo de la tarea, comentario es un elemento secundario de la clase raíz.

Para obtener más información, vea Propiedades de las calles.

Tipos de propiedad de suma

Bb126581.collapse_all(es-es,VS.110).gifDominio Enumeraciones y Literales

Una enumeración de dominio es un tipo con varios valores literales.

Para agregar una enumeración, haga clic con el botón secundario del dominio la raíz del modelo en Explorador ADSL y haga clic Agregue la nueva enumeración de dominio.El elemento aparecerá en Explorador ADSL bajo el nodo de Tipos de dominio .este elemento no aparece en el diagrama.

Para agregar literales de la enumeración a la enumeración, haga clic con el botón secundario del dominio enumeración de dominio en Explorador ADSL y haga clic Agregue el nuevo literal de enumeración.

De forma predeterminada, una propiedad que tiene un tipo de enumeración se puede establecer un valor de enumeración al mismo tiempo.Si desea que los usuarios y los desarrolladores para poder establecer cualquier combinación de valores - “campo de bits” - establecen la propiedad de IsFlags de Enumeración.

Bb126581.collapse_all(es-es,VS.110).giftipos externos

Al establecer el tipo de una propiedad de dominio, si no encuentra el tipo que desee en la lista desplegable de tipo , puede agregar un tipo externo.Por ejemplo, podría agregar el tipo de System.Drawing.Color a la lista.

Para agregar un tipo, haga clic con el botón secundario en la raíz del modelo en el Explorador ADSL, y haga clic Agregue el nuevo tipo externo.en la ventana Propiedades, establezca el nombre a Color y el espacio de nombres a System.Drawing.Este tipo ahora aparece en el Explorador ADSL en Tipos de dominio.Puede elegirlo siempre que establezca el tipo de una propiedad del dominio.

Personalizar ADSL

Mediante las técnicas descritas en este tema, puede crear rápidamente un DSL con una notación diagramática, un formato legible de XML, y las herramientas básicas necesarias para generar código y otros artefactos.

Hay dos métodos de ampliar la definición ADSL:

  1. ajustar ADSL con más características de definición ADSL.Por ejemplo, puede crear una sola herramienta de conector que puede crear varios tipos de conector, y puede controlar las reglas por las que eliminar un elemento también elimina elementos relacionados.Estas técnicas se obtiene acceso principalmente estableciendo valores en la definición de DSL, y algunas requieren algunas líneas de código de programa.

    Para obtener más información, vea Personalizar y ampliar lenguajes específicos de dominio.

  2. Extender las herramientas de modelado utilizando el código de programa para lograr efectos más avanzados.Por ejemplo, puede crear comandos de menú que pueden cambiar el modelo, y puede crear herramientas que se integran dos o más el dominio (ADSL).VMSDK está diseñado específicamente para facilitar integrar las extensiones con el código que se genera a partir de la definición del ADSL.Para obtener más información, vea Escribir código para personalizar lenguajes específicos de dominio.

Bb126581.collapse_all(es-es,VS.110).gifCambiar la definición ADSL

Cuando se crea cualquier elemento en una definición ADSL, muchos valores predeterminados se establecen automáticamente.Después de que se hayan establecido, puede cambiarlos.Esto simplifica el desarrollo ADSL, mientras todavía tiene en cuenta personalizaciones eficaces.

Por ejemplo, si asigna una forma en un elemento, la ruta de acceso del elemento primario de asignación se establece automáticamente como la relación de incrustación de la clase de dominio.Sin embargo, si habilita automáticamente cambio posterior la relación de incrustación, la ruta de acceso del elemento primario no cambian.

Debe ser por consiguiente en cuenta que cuando cambia algunas relaciones en la definición de DSL, no es raro que los errores se notifican cuando se guarda la definición, o cuando se transforma Todas las plantillas.La mayoría de estos errores son fáciles de corregir.Haga doble clic en el informe de errores para ver la ubicación del error.

Vea también Cómo: Cambiar el espacio de nombres de los lenguajes específicos de dominio.

Solución de problemas

La tabla siguiente se muestran algunos de los problemas más comunes que se producen al diseñar un DSL, así como sugerencias para la solución.Más consejo está disponible en Foro de Extensibililty de las herramientas de visualización.

Problema

Sugerencia

Los cambios que he realizado en el archivo de definición ADSL no tiene ningún efecto.

Haga clic en Transformar todas las plantillas en la barra de herramientas al explorador de soluciones y, a continuación recompile la solución.

Las formas muestran el nombre de un elemento decorator en lugar del valor de propiedad.

Configurar la asignación de decorador.En el diagrama de la definición de DSL, haga clic en el mapa del elemento del diagrama, que es la línea gris entre la clase de dominio y la clase shape.

Abra la ventana de Detalles ADSL .Si no puede ver, en el menú ver, elija Otras ventanas, y haga clic en Detalles ADSL.

Haga clic en la pestaña de Mapas de decorador .Seleccione el nombre del elemento decorator.Compruebe que la casilla adyacente está activado.En Propiedad display, seleccione el nombre de una propiedad del dominio.

Para obtener más información, vea formas en el diagrama.

En el Explorador ADSL, no se puede agregar a una colección.Por ejemplo, cuando las herramientas del botón secundario, no considera ningún “agregar comandos de herramientas” en el menú.

En el explorador para my DSL, no se puede agregar un elemento a una lista.

Haga clic con el botón secundario en el elemento en el nodo que está intentando.Cuando desee agregar una lista, el comando add no está en el nodo en la lista, pero en su propietario.

Creé una clase de dominio, pero no puedo crear instancias en el explorador del lenguaje.

Cada clase de dominio excepto la raíz debe ser el destino de una relación de incrustación.

En el explorador para my DSL, los elementos se muestran sólo con sus nombres de tipo.

En la definición de DSL, seleccione una propiedad del dominio de la clase y en la ventana Propiedades, establezca es el nombre de elemento en true.

Mi ADSL siempre abre en el Editor XML.

Esto puede suceder debido a un error mientras el archivo se ha leído.Sin embargo, incluso después de corregir el error, debe restaurar explícitamente el editor para ser el diseñador ADSL.

Haga clic con el botón secundario en el elemento de proyecto, haga clic Abrir con y TheLanguageseleccioneDiseñador (valor predeterminado).

El cuadro de herramientas del ADSL no aparece después de cambiar los nombres de ensamblado.

Inspeccione y actualizar DslPackage\GeneratedCode\Package.tt para obtener más información, vea Cómo: Cambiar el espacio de nombres de los lenguajes específicos de dominio.

El cuadro de herramientas del ADSL no aparece, pero no he cambiado el nombre del ensamblado.

O, aparece un cuadro de mensaje que indica el error cargar una extensión.

restablezca la instancia experimental, y recompile la solución.

  1. En el menú Inicio de Windows, en Todos los programas, expanda Visual Studio SDK, después Herramientas, y haga clic en restablezca la instancia de Microsoft Visual Studio Experimental.

  2. En el menú de Visual StudioGenerar , haga clic en Volver a generar solución.

Vea también

Tareas

Crear lenguajes específicos de dominio basados en Windows Forms

Conceptos

Introducción a los lenguajes específicos de dominio

Crear lenguajes específicos de dominio basados en WPF