Documentation for a newer release is available. View Latest

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:

quick start basic

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

quick start ipf

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 (ipfVersion).

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:

developer app

Desde aquí puedes hacer clic en el botón 'View' para empezar a profundizar en los detalles de tu transacción.