Primeros pasos
Esta guía tiene como objetivo llevar a un usuario que nunca ha usado IPF a tener una aplicación en ejecución en menos de 5 minutos. Se asume que ya tienes acceso al repositorio de Maven correspondiente que contiene una versión de IPF.
Vamos a construir una sencilla aplicación de orquestación IPF:

Veamos un poco más en detalle qué compone la aplicación IPF aquí:

Aquí puedes ver que la aplicación está construida usando varios componentes de IPF.
Usaremos IPF Scaffolder para construir una aplicación esqueleto que contenga un único flujo de procesamiento. Luego podremos usar un controlador HTTP simple para invocar el flujo y ver nuestros resultados en la IPF Developer Application.
Ejecutar el Scaffolder
Primero navega al directorio donde quieres que se instale tu 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 archivo pom.xml dentro.
mvn com.iconsolutions.ipf.build:ipf-project-scaffolder-maven:1.0.3.1:scaffold \
-DipfVersion=2024.2.0 \
-DincludeSampleSystems=n \
-DincludeApplication=y \
-DincludeE2E=n \
-DuseBuildScripts=n \
-DsolutionName=examplesolution \
-DmodelName=examplemodel \
-DgroupId=com.iconsolutions \
-Dversion=0.0.1-SNAPSHOT \
-DartifactId=quick-start \
-DoutputDir=/build/scaffolder
|
Debes proporcionar la versión de destino tanto del plugin del scaffolder (1.0.5 en el ejemplo anterior) como la versión de IPF ( Las versiones deben ser compatibles. Por favor, verifica y reemplaza los números según la documentación de versiones de IPF y/o los detalles de tu entorno objetivo. |
Tras unos segundos, el proyecto se generará en el directorio de salida especificado.
Aquí puedes ver que nuestro proyecto ahora reside en /build/scaffolder.
Si quieres aprender más sobre las opciones de configuración proporcionadas y su significado, por favor revisa aquí.
Ahora veamos el directorio /build/scaffolder/quick-start y verás:
➜ 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:
| 1 | quick-start-domain - contiene todos los artefactos relacionados con el DSL y las definiciones de flujos. |
| 2 | Readme.md - contiene información sobre cómo ejecutar el proyecto generado. |
| 3 | quick-start-service - es un módulo diseñado para albergar toda la lógica de implementación para los diferentes puertos que se han generado dentro de tu solución MPS. |
| 4 | quick-start-app - es el hogar del código de tiempo de ejecución de la aplicación, el código que se desplegará y usará el dominio IPF generado para procesar transacciones. |
Habiendo generado el proyecto, puedes construirlo. Muévete al directorio base del proyecto y ejecuta:
mvn clean install
Esto construirá el proyecto, generando todos los artefactos y ejecutando tanto las pruebas de DSL como las de aplicación. Ten en cuenta que, en las pruebas de la aplicación, se usará la base de datos Mongo incrustada.
Ahora ejecutemos la aplicación. Para ello necesitaremos un entorno en el que ejecutarla: el mínimo aquí es algo que consuma los mensajes enviados para procesar datos y una base de datos Mongo.
Lo siguiente es el contenido de un ejemplo de docker-compose (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 tendrás que actualizar ${icon-ods.version} con la versión objetivo que necesites. |
Luego podemos iniciar el entorno de soporte ejecutando: docker-compose -f infra.yml up -d
Esto levantará un entorno Docker que contiene:
-
Una instancia de una base de datos Mongo.
-
Una instancia de
ipf-developer-app, que puede utilizarse para ver pagos rápidamente.
A continuación, podemos ejecutar nuestro código de aplicación IPF simplemente iniciando la aplicación como cualquier aplicación Spring ejecutando la clase Application.java.
Una vez que todo esté arriba, podemos enviar un pago de prueba llamando al endpoint "submit" del controlador proporcionado. Una forma sencilla de hacerlo usando curl es:
curl -X POST localhost:8080/submit
Si tiene éxito, esto debería devolverte 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 a considerar ahora es uowId: este es el identificador único de nuestra transacción.
Ahora abre Developer Application. Una vez abierto, haz clic en buscar y deberíamos ver:
Desde aquí puedes hacer clic en el botón 'View' para empezar a profundizar en los detalles de tu transacción.