Introducción

Esta guía está destinada a llevar a un usuario desde nunca haber utilizado IPF antes hasta tener una aplicación en funcionamiento en menos de 5 minutos. Se asume que usted ya tiene acceso a los apropiados maven repositorio que contiene una versión de IPF.

Vamos a construir una aplicación de orquestación IPF simple:

quick start basic

Examinemos un poco más a fondo qué es lo que realmente compone el IPF application aquí:

quick start ipf

Aquí puede ver que la aplicación está construida utilizando varios componentes de IPF.

Usaremos el IPF Scaffolder para construir una aplicación esqueleto que contenga un único flujo de procesamiento. Luego podemos utilizar un simple http controlador para invocar el flujo y ver nuestros resultados en la Aplicación de Desarrollador IPF.

Ejecutando el Scaffolder

Primero, navegue al directorio en el que desea que se instale su proyecto generado. Aunque este directorio no necesita estar vacío, no debe contener una carpeta con el nombre del proyecto a generar y no debe tener un pom.xml archivo dentro de él.

mvn com.iconsolutions.ipf.build:ipf-project-scaffolder-maven:1. 0. 3. 1:scaffold \
-DipfVersion=2024. 2. 0 \
-DincludeSampleSystems=n \
-DincludeApplication=y \
-Dinclude E2E=n \
-DuseBuildScripts=n \
-DsolutionName=examplesolution \
-DmodelName=examplemodel \
-DgroupId=com.iconsolutions \
-Dversion=0. 0. 1-SNAPSHOT \
-DartifactId=quick-start \
-DoutputDir=/build/scaffolder
[IMPORTANTE]
====
Usted debe proporcionar la versión objetivo de ambos los scaffolder plugin (1. 0. 5 en el ejemplo anterior) y la versión de IPF (`ipfVersion`).

Las versiones deben ser compatibles. Por favor, verifique y reemplace los números según la documentación de lanzamiento de IPF y/o los detalles para su entorno objetivo.

Después de unos segundos, el proyecto se generará en el directorio de salida especificado.

Aquí puede ver que nuestro proyecto ahora reside en /build/scaffolder.

Si desea aprender más sobre las opciones de configuración proporcionadas y su significado, por favor consulte aquí.

Ahora veamos el /build/scaffolder/quick-start directorio y verá:

➜  mytest ls -ltr
drwxrwxr-x 8 icon0377 icon0377 4096 Aug 14 14:39 quick-start-domain (1)
drwxrwxr-x 3 icon0377 icon0377 4096 Aug 14 14:39 quick-start-service (3)
drwxrwxr-x 3 icon0377 icon0377 4096 Aug 14 14:39 quick-start-app (4)
-rw-rw-r-- 1 icon0377 icon0377 2400 Aug 14 14:39 Readme.md (2)
-rw-rw-r-- 1 icon0377 icon0377 2218 Aug 14 14:39 pom.xml

Las carpetas clave a tener en cuenta aquí son las:

<1>`quick-start-domain` - esto contiene todos los artefactos relacionados con la DSL y las definiciones de flujo. <2>`Readme.md` - esto contiene información sobre cómo ejecutar el proyecto generado. <3>`quick-start-service` - este es un módulo diseñado para contener toda la lógica de implementación para los diferentes puertos que se han generado dentro de su MPS solución. <4>`quick-start-app` - Este es el hogar del código de tiempo de ejecución de la aplicación, el código que se desplegará y utilizará el dominio generado por el IPF para procesar transacciones.

Habiendo generado el proyecto, puede construirlo. Muévase al directorio base del proyecto y ejecute:

mvn clean install

Esto construirá el proyecto, generando todos los artefactos y ejecutará tanto las pruebas de DSL como las pruebas de la aplicación. Tenga en cuenta que en las pruebas de la aplicación, esto utilizará el embedded mongo db.

Ahora ejecutemos la aplicación. Para ello, necesitaremos un entorno en el que ejecutarla.- el mínimo aquí es algo para consumir los mensajes enviados a processing data y una base de datos mongo.

El siguiente es el contenido de una muestra docker-componer yaml(infra.yml):

version: "3. 0"

services:

  # Infrastructure
  ipf-mongo:
    image:registry.ipf.iconsolutions.com/ipf-docker-mongodb:latest
    container_name: ipf-mongo
    volumes:
      - "./data:/data/db"
    ports:
      - "27017:27017"
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet

  ipf-developer-app:
    image:__dockerRegistry__ipf-developer-app:${icon-ods.version}
    container_name: ipf-developer-app
    ports:
      - "8081:8081"
      - "5006:5005"
    volumes:
      -./logs:/ipf/logs
      -./config/ipf-developer-app:/ipf-developer-app/conf
    user: "${UID:-1000}:${GID:-1000}"
    environment:
      - IPF_JAVA_ARGS=-Dma.glasnost.orika.writeClassFiles=false -Dma.glasnost.orika.writeSourceFiles=false -Dconfig.override_with_env_vars=true
    depends_on:
      - ipf-mongo
    healthcheck:
      test: [ "CMD", "curl", "http://localhost:8081/actuator/health" ]
En lo anterior, necesitará actualizar el ${icon-ods.version} con la versión objetivo que usted requiere.

Entonces podemos iniciar el entorno de soporte ejecutando:docker-compose -f infra.yml up -d

Esto iniciará un docker entorno que contiene:

  • Una instancia de una base de datos mongo.

  • Una instancia de la ipf-developer-app, que puede utilizarse para ver rápidamente los pagos.

Podemos entonces ejecutar nuestro IPF application código simplemente iniciando la aplicación como cualquier otra aplicación de Spring ejecutando el Application.java clase.

Una vez que todo esté en funcionamiento, puede realizar un pago simulado a través de la llamada al endpoint "submit" del controlador proporcionado. Una forma sencilla de hacer esto utilizando curl is:

curl -X POST localhost:8080/submit

Si tiene éxito, esto debería devolverle los detalles de identificación del pago:

{
  "requestId": "4cece8f7-1a7f-4eb8-a189-a0de5523175e",
  "uowId": "478a35ce-5e34-4e7b-a58b-060368fab758",
  "aggregateId": "QuickStartFlow|39437cdb-4612-42a8-b503-8963a211391a"
}

La clave id a considerar ahora es el uowId.- este es el identificador único para nuestra transacción.

Ahora abramos el Aplicación para Desarrolladores. Una vez abierto, haga clic en buscar y deberíamos ver:

developer app

Desde aquí puede hacer clic en el botón 'Ver' para comenzar a profundizar en los detalles de su transacción.