DSL 2 - Apertura del Proyecto de Muestra
|
Para comenzar
El paso del tutorial utiliza la solución "inicial". |
En Revisando la aplicación tutorial inicial Examinamos la configuración básica del proyecto y comenzamos un flujo y ejecutamos un pago a través de él mientras está en DSL 1 - Presentando el DSL de Icon aprendimos sobre los conceptos básicos que componen el payments DSL.
Los flujos se mantienen a través del producto Jetbrains. MPS que luego utiliza el DSL de Icon. Por favor, asegúrese de haber descargado la versión correcta de MPS establecido en home.adoc#_setting_up_your_own_environment
Esta sección del tutorial es una guía para principiantes sobre cómo abrir el flujo de muestra en MPS y aprender la navegación básica alrededor de sus partes constitutivas.
Puede encontrar el siguiente video una introducción útil para entender tanto las piezas en movimiento de un IPF application y el flujo de trabajo de desarrollo de aplicaciones.
Apertura del Flujo
Para comenzar, abramos nuestro flujo. Para esto, iniciamos Jetbrains. MPS producto y se le debería solicitar que abra un proyecto:
Dado que estamos utilizando un proyecto existente, haremos clic en "Abrir" aquí para ver nuestro proyecto ipf-tutorial. Para abrir nuestro proyecto, necesitamos navegar a la raíz del dominio/mps directorio en nuestro proyecto [<tutorial-install-root>/solutions/initial/domain-root/mps]. Se resaltará con un pequeño cuadrado negro en la esquina del nombre del directorio, indicando que MPS puede identificar el directorio como la raíz de un MPS proyecto.
| Tenga cuidado al abrir una segunda ventana/instancia de MPS para ver una versión diferente de la MPS solución. Es probable que experimente contención entre las dos instancias. |
Estructura del Proyecto
Cuando el proyecto se abra, usted debe poder ver en la vista del proyecto a la izquierda:
|
Solución de problemas
Si no ha construido previamente su aplicación (por ejemplo, si ha llegado directamente de la solución), puede ver esto al abrir el proyecto:
Esto significa que el lenguaje aún no ha sido construido; para solucionar esto, simplemente ejecute desde la raíz del proyecto.
Si lo necesita, construyendo y ejecutando instructions se abordan con más profundidad durante:Revisando la aplicación tutorial inicial |
Tomemos un momento rápido para discutir la forma en que esto está estructurado.
-
Comenzará en el nivel más bajo.- el
Ipftutorialflow. Tenga en cuenta el símbolo "F" aquí, que denota que el "Ipftutorialflow" es un flujo. Veremos a medida que ampliemos y añadamos conceptos a nuestra solución que otros componentes tienen diferentes símbolos para declarar fácilmente qué son. -
Nuestro flujo está contenido en
ipftutorialmodel- Un model es un contenedor de agrupación que nos permite asociar flujos juntos. Desde una perspectiva de aplicación, trabajamos a nivel de modelo, por lo que toda la interacción se realiza a ese nivel. Usted introducirá el concepto de la clase de dominio.- que representa la única interfaz hacia un modelo-más tarde. -
Nuestro modelo está contenido en
Ipftutorialsolution- Una solución es un agrupamiento de modelos. Lo clave a tener en cuenta sobre las soluciones es que se construyen juntas, por lo que es fácil compartir componentes de diferentes modelos dentro de distintas soluciones. -
Finalmente, nuestra solución se encuentra en "IPF Tutorial Project" - Un project es simplemente una colección de soluciones.
En términos generales, la mayoría de las aplicaciones que construiremos funcionarán efectivamente como un proyecto.- solución única-modelo único-uno (o más) flujos configurados. Usted introducirá en Revisando la aplicación tutorial inicial cómo podemos compartir modelos entre diferentes proyectos.
En la parte superior de la vista del proyecto, podemos ver que actualmente nos encontramos en la "vista lógica". Esta es la mejor vista para navegar y trabajar con el DSL. Hay otras vistas disponibles:
Estos permiten visualizar nuestros componentes de diferentes maneras, por ejemplo, observando los archivos en bruto en el Sistema de Archivos. Esto es especialmente útil al intentar revisar cómo se ve y está estructurado el código generado. |
Visualizando el Flujo
Ahora, examinemos nuestro flujo. Si hacemos doble clic en él en la vista del proyecto, entonces deberíamos mostrar nuestro flujo en la ventana principal:
A medida que desplaza hacia abajo en el flujo, esperamos que comience a ver secciones que representen los conceptos que revisamos en la sección anterior de la serie de tutoriales.
El Visor de Flujo
Comencemos haciendo clic en cualquier parte de la pestaña de flujo y utilizando la barra de herramientas principal para seleccionar Herramientas > Abrir Visor de Flujo. Esto debería mostrar una nueva pestaña en la pantalla que exhibe un diagrama de nuestro flujo:
Aquí podemos ver que tenemos un flujo muy simple que recibe una solicitud de iniciación, crea la "Iniciación del Flujo".event y luego se completa inmediatamente. Efectivamente, es el flujo más simple que podemos tener.
El flo-viewer por defecto abre en línea una pestaña separada. Si lo desea, puede hacer clic en el pequeño engranaje en la esquina superior derecha:
Y luego elija, por ejemplo, desacoplarlo, lo que le permite mover el visor flo. ¡Esto es excelente cuando trabaja con múltiples pantallas! |
Una de las funciones clave del visor flo es que se actualiza en tiempo real mientras usted edita su flujo. ¡Eso significa que puede ver en vivo cómo los cambios que está realizando en la definición de su flujo impactan el flujo de manera gráfica!
Intenciones
Para aquellos que están familiarizados con los productos de JetBrains, puede que ya se haya encontrado con las intenciones. Estas son funciones de acceso directo que están diseñadas para proporcionar un acceso rápido y fácil a utilidades comunes. El Icon DSL tiene una serie de intenciones diferentes a lo largo del mismo para intentar facilitar un poco las cosas. Puede acceder a las intenciones desde cualquier lugar presionando Alt+Enter. Si lo hace ahora, veremos:
Aquí podemos ver que tenemos dos intenciones, una de crear una nueva versión del flujo (haremos esto en DSL 8 - Versionado) y uno para validar el flujo (¡usaremos esto mucho a lo largo de la serie de tutoriales!)
Lo otro que debe tener en cuenta sobre las intenciones es que son específicas para lo que usted está haciendo actualmente, por lo que, como veremos en secciones posteriores, la lista de intenciones puede proporcionar una serie de pequeños trucos útiles que son específicos para lo que usted está tratando de hacer en ese momento.
Inspeccionando el Flujo
Ahora que tenemos un flujo, es momento de construirlo. Primero, consulte nuestra configuración; en el menú superior, vaya a Build y asegúrese de que tanto "Guardar Modelos Transitorios" como "Verificar modelos antes de la generación" estén seleccionados.
-
La opción "Verificar modelos antes de la generación" permite MPS valide su modelo antes de que intente construirlo. Cualquier error se le mostrará a usted.- puede entonces hacer clic en ellos para ser dirigido al problema y así poder resolverlo.
-
La opción "Guardar Modelos Transitorios" permite MPS le muestra todos los pasos que ha tomado para generar el código. Normalmente no necesitamos esto, pero lo estamos estableciendo aquí como una forma de ayudarle a entender lo que se ha hecho durante la construcción.
Construyamos nuestro flujo haciendo clic derecho en el Ipftutorialmodel modelo y haga clic en reconstruir modelo ipftutorialmodel. Esto tomará unos segundos, luego, una vez finalizado, en el navegador expanda el transitorio final:
Inspeccionando los artefactos generados
Aquí puede ver algunos de los artefactos que se han generado para el flujo, estos incluyen:
-
Todo el código de la aplicación-esto incluye
-
El generado AKKA Event Comportamiento Sourced
-
Todos los puertos generados a los que la aplicación necesita integrarse.
-
La clase de dominio generada que permite la interacción externa con el flujo.
-
-
La documentación generada
-
Las Clases de Prueba BDD generadas
-
Las implementaciones de muestra generadas de los puertos creados.
Consulte algunos de estos artefactos, se discutirán con mayor profundidad en secciones futuras.