ODS Ingestion API
Descripción general
La ODS Ingestion API proporciona un mecanismo para que otros sistemas introduzcan datos en ODS. Normalmente, los datos de ODS se ingieren desde IPF Processing Data a través de Kafka, pero ODS también admite algunas APIs HTTP limitadas para ciertos casos de uso. Para la especificación OpenAPI completa, consulta ODS Ingestion Specification.
Casos de uso de la API
Asociar un identificador personalizado con una Unit Of Work
Un cliente puede desear encontrar unidades de trabajo de IPF por su propio identificador personalizado, que se ha determinado después de que el pago haya sido procesado. El cliente puede usar el endpoint de attachment para hacer POST del identificador adicional.
curl --request POST \
--url http://localhost:8080/attachments \
--header 'Content-Type: application/json' \
--data '{
"unitOfWorkId": "some-unit-of-work-id",
"attachmentType": "ALTERNATIVE_IDENTIFIER",
"name": "CaseId",
"value": "abc123-456efg-hij789"
}'
Adjuntar notas a una Unit Of Work
curl --request POST \
--url http://localhost:8080/attachments \
--header 'Content-Type: application/json' \
--data '{
"unitOfWorkId": "some-unit-of-work-id",
"attachmentId": "a-id-for-the-note",
"author": "Dave",
"division": "Accounts",
"reasonCode": "RC01",
"attachmentType": "TEXT",
"name": "Notes",
"value": "Some operator notes about the payment"
}'
Estructura del módulo
El módulo ods-ingestion está compuesto por varios submódulos.
ods-ingestion-spring
Genera el andamiaje de los controladores de Spring a partir de la especificación e incluye implementaciones de controladores de Spring y configuración de Spring.
Lo mínimo requerido para una aplicación Spring WebFlux que aloje la ODS Ingestion API.
Las implementaciones de los controladores delegan en interfaces en ods-ingestion-port, y la aplicación debe proporcionar una implementación de estas interfaces.
Generación de código
La especificación en ods-ingestion-api es procesada por openapi-generator, utilizando el back-end generador openapi, configurado para producir una única especificación json a partir de la especificación yaml de entrada.
Si esta especificación yaml se dividiera en archivos más pequeños, el resultado seguiría siendo una única especificación json.
La generación de código Java se realiza en dos partes: primero los modelos y luego el andamiaje del controlador de Spring.
Modelos
La especificación en ods-ingestion-api es procesada por openapi-generator, utilizando el back-end generador spring, configurado para generar solo modelos, bajo el paquete com.iconsolutions.ipf.ods.ingestion.model.
El resultado de construir este módulo es un jar que contiene una única especificación OpenAPI json y todos los tipos de modelo de Ingestion generados.
Este jar puede usarse posteriormente, proporcionando acceso a los tipos generados y/o para generar código adicional a partir de la especificación json única. Este jar se usa en el siguiente paso, generando el andamiaje del controlador de Spring.
Controladores de Spring
El módulo ods-ingestion-spring depende de ods-ingestion-api y utiliza la especificación json contenida en su jar de salida.
La especificación es procesada por openapi-generator, utilizando el back-end generador spring, configurado para generar solo interfaces, bajo el paquete com.iconsolutions.ipf.ods.ingestion.api.
El resultado de construir este módulo es un jar que contiene el andamiaje de los controladores de Spring generado, incluidas las implementaciones de los controladores y la configuración de Spring necesaria para habilitar estos controladores en una aplicación Spring Boot.
Consulta la sección Servidor Spring para más información.
Servidor Spring
El módulo ods-ingestion-spring está pensado como un starter que puede incluirse en cualquier aplicación Spring Boot que quiera servir la ODS Ingestion API.
Genera las interfaces de los controladores de Spring e implementa esos controladores.
Los controladores delegan en interfaces de búsqueda, definidas en ods-ingestion-port.
Cuando la aplicación que sirve la ODS Ingestion API se inicia, registrará la versión de la ODS Ingestion API.
2023-04-12 13:34:06.348 INFO 1 --- [ main] c.i.i.o.i.api.OdsIngestionApiConfig : ODS Ingestion API Version 2.2.34
Puertos
La aplicación que sirve la ODS Ingestion API utilizando el andamiaje de controladores generado y las implementaciones de controladores proporcionadas, debe proporcionar beans para cada uno de los tipos definidos en ods-ingestion-port.
Estas interfaces son agnósticas a la persistencia y actualmente están implementadas en la ODS Ingestion Application.
Se pueden usar implementaciones stub para estas interfaces si es necesario, para construir una aplicación ODS Ingestion "lite". Así es como se prueba la funcionalidad del controlador.