Generación
Descripción general
La generación ocurre cuando un proyecto basado en flo-lang se construye utilizando maven. Este proceso interpreta el código DSL que ha sido definido en MPS para generar los siguientes artefactos:
-
Código-este es un conjunto completo de ejecutables (Java) código.
-
Documentación-esta es una representación en ASCII de la información proporcionada en el DSL.
-
Casos de Prueba-cada camino a través de los flujos diseñados resultará en un caso de prueba separado que puede ser utilizado para verificar su capacidad. Estos se generan en forma de scripts BDD (
.storyarchivos). También se proporciona un arnés de prueba IPF para facilitar la ejecución de estas pruebas. -
Visualización-se proporcionan una serie de artefactos, tanto SVG como orientados a gráficos, para permitir la visualización de los flujos generados en otras herramientas (predominantemente el operational data store, o ODS).
Unidad Generacional
La unidad generacional es el 'Modelo'. Esto significa que cualquier cosa definida dentro de un modelo será generada como una única unidad y, por lo tanto, existe como un único paquete. Cualquier cosa generada dentro de un modelo será empaquetada junta y, por ende, desplegada junta. Ahora consideremos qué sucede después de haber modelado nuestro proceso y cómo podemos utilizar esto para generar un IPF application.
Supongamos que tenemos un modelo simple que contiene un flujo y una llamada a algún componente de DSL de ejemplo. Este podría ser cualquiera de los componentes discutidos en la sección de <LINK TO CONCEPTS SECTION>[conceptos], por ejemplo, una llamada a un dominio externo. Cuando se invoca la generación en este modelo, veremos que se crean una serie de elementos clave:
Elementos Clave Generados
En la imagen anterior, podemos ver que hay cuatro aspectos clave a tener en cuenta durante el proceso de generación:
-
Las Clases ESB- estas clases forman colectivamente el Akka Event-Comportamiento Sourced, que sirve como el motor que orquesta el procesamiento de un flujo a medida que recibe diversas entradas a lo largo de su ciclo de vida.
-
La clase Modelo de Dominio- Esta clase sirve como la interfaz central para interactuar con el dominio modelado por IPF y proporciona un conjunto de métodos que permiten la provisión de todo lo que el dominio necesita para funcionar.
-
La clase Model Operations- Esta clase proporciona acceso a una serie de funciones relacionadas con el comportamiento que ofrece el dominio (por ejemplo, abortar el flujo). También proporciona acceso al descriptor del flujo. El descriptor contiene información útil sobre la configuración de un flujo y, por lo tanto, es utilizado por varios otros componentes que interactúan con flo-lang.
-
Las clases Port- el modelo flo-lang generado se adhiere a los principios de la arquitectura hexagonal, con las clases de puerto representando las interfaces a través de las cuales un IPF application interactúa con el dominio. Como parte del proceso de generación, cada componente DSL en el modelo flo-lang definirá su propio puerto, permitiendo que la lógica de negocio requerida se aplique a través de una implementación de adaptador.
Para mayor brevedad, solo se ha incluido una selección de los artefactos generados más relevantes. Entre los muchos otros, algunos ejemplos notables incluyen historias de prueba y asciidoc archivos.