Documentation for a newer release is available. View Latest

Generación

Visión general

La generación ocurre cuando un proyecto basado en flo-lang se construye usando 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 código (Java) ejecutable.

  • Documentación - esta es una representación en Asciidoc 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 usarse para verificar su capacidad. Estos se generan en forma de scripts BDD (.story). También se proporciona un arnés de pruebas de 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 (principalmente el almacén de datos operativos, u ODS).

Unidad de Generación

La unidad de generación es el 'Modelo'. Esto significa que cualquier cosa definida dentro de un modelo se generará como una sola unidad y, por lo tanto, existirá como un solo paquete. Todo lo generado dentro de un modelo se empaquetará junto y, por ende, se desplegará junto. Consideremos ahora qué sucede después de haber modelado nuestro proceso y cómo podemos usar esto para generar una aplicación IPF.

Supongamos que tenemos un modelo simple que contiene un flujo y una llamada a algún componente DSL de ejemplo. Esto podría ser cualquiera de los componentes discutidos en la sección de conceptos, por ejemplo, una llamada a un dominio externo. Cuando se invoca la generación sobre este modelo, veremos que se crean varios elementos clave:

generation 1

Elementos Clave Generados

En la imagen anterior, podemos ver que hay cuatro cosas clave a tener en cuenta durante el proceso de generación:

  • Las Clases ESB - estas clases colectivamente forman el Akka Event-Sourced Behaviour, que sirve como el motor que orquesta el procesamiento de un flujo a medida que recibe varias entradas durante su ciclo de vida.

  • La clase del Dominio del Modelo - esta clase sirve como la interfaz central para interactuar con el dominio modelado por IPF, y proporciona un conjunto de métodos que permiten el suministro de todo lo que el dominio necesita para funcionar.

  • La clase de Operaciones del Modelo - esta clase proporciona acceso a una serie de funciones relacionadas con el comportamiento que proporciona 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 de Puerto - el modelo flo-lang generado se adhiere a los principios de arquitectura hexagonal, con las clases de puerto representando las interfaces a través de las cuales una aplicación IPF 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 mediante una implementación de adaptador.

Para abreviar, solo se ha incluido una selección de los artefactos generados más relevantes. Entre muchos otros, algunos ejemplos notables incluyen historias de prueba y archivos asciidoc.