Núcleo - Cambios y Correcciones
Esta página cubre los cambios y correcciones del núcleo incluidos en la versión IPF-2025.2.0.
MongoDB
Cambiado
Esta versión añade soporte para MongoDB Cifrado de Campo a Nivel de Cliente (CSFLE). Para más detalles vea Inicio con Mongo DB.
Conector
Cambiado
-
El tipo de excepción del transporte ha cambiado de IllegalStateException a NoAvailableTransportException, que extiende IllegalStateException.
-
Los mensajes ahora intentan cada transporte solo una vez antes de fallar. Anteriormente probaban todos los transportes hasta que todos los disyuntores se abrieran.
Corregido
-
RequestReplySendConnectorahora lanza una excepción, en lugar de devolver la respuesta al llamador, cuando la validación de bean de respuesta está habilitada y la(s) verificación(es) especificada(s) por el validador de bean de respuesta proporcionado falla(n). -
El tipo de retorno de la etapa de la interfaz
DeadLetterAppendercambió deCompletableFuture<Void>aCompletionStage<Void>
Procesador de Entradas de Pago (renombrado desde Payment Releaser)
Payment Releaser se ha convertido en un Procesador Genérico de Entradas de Pago, capaz de hacer más que simplemente liberar entradas de pago para la ejecución. Además del lanzamiento resiliente de instrucciones y transacciones individuales para la ejecución, ahora es posible cancelar todas las transacciones de una instrucción programada para la ejecución.
Añadido
-
Nuevo módulo: payment-scheduler-adaptor-kafka. Adaptador para scheduler-received-connector-kafka. Permite el consumo de mensajes de Kafka publicados por las aplicaciones Persistent Scheduler que usan el módulo scheduler-external-trigger-kafka. El consumo de este mensaje dispara los métodos
prepareInstructionoprocessTransaction(renombrado dereleaseTransaction) delPaymentEntriesProcessor(renombrado dePaymentReleaser), con configuración predeterminada sobreescribible. Los detalles se pueden encontrar en Cómo activar el Releaser desde Persistent Scheduler vía Kafka -
La aplicación real de acciones de RELEASE y/o CANCEL a las Entradas de Pago se realiza a través de implementaciones de la interfaz
ProcessingStrategy. Para que el Procesador de Entradas de Pago pueda procesar una Acción (RELEASE, CANCEL o cualquier personalizada), debe proporcionar un bean que implemente la interfazProcessingStrategy. También debe proporcionar implementaciones de las interfacesProcessingRequestCreatoryRequestProcessor, y usarlas en su implementación deProcessingStrategy.
Cambiado
Múltiples cambios en el proceso de hacer genérico Payment Releaser:
-
La ruta raíz de configuración
ipf.core.payment-releasercambió aipf.core.payment-entry-processor -
La colección de base de datos
releaseExecutionInfosfue renombrada aexecutionInfos -
Interfaces y clases renombradas:
-
La interfaz
PaymentReleaserse renombró aPaymentEntriesProcessor -
La clase
AkkaPaymentReleaserse renombró aAkkaPaymentEntriesProcessor -
La clase
ReleaserExecutorse renombró aInstructionExecutorActor -
La interfaz
PaymentRequestCreatorse renombró aProcessingRequestCreator -
La interfaz
PaymentRequestSenderse renombró aRequestProcessor -
La interfaz
ReleaserStorese renombró aExecutionInfoStore -
La clase
MongoReleaserStorese renombró aMongoExecutionInfoStore
-
Capacidad de pasar información adicional para el servicio de ejecución downstream. Incluye los siguientes cambios incompatibles:
-
Se actualizaron las firmas de métodos de la interfaz
PaymentEntriesProcessor(renombrada dePaymentReleaser):-
los métodos
processInstruction(renombrado dereleaseInstruction) yprocessTransaction(renombrado dereleaseTransaction) ahora tienen un argumento adicional SupportingContext para aceptar datos de apoyo para la ejecución del pago
-
-
Se actualizó la especificación OpenAPI, generando interfaces Java actualizadas y afectando por lo tanto las firmas de métodos de
PaymentReleaserController-
el método
prepareReleaseInstructionya no tomaMono<SupportingBusinessDataMapForPrepareOperation>como argumento -
el método
processInstruction(renombrado dereleaseInstruction) ya no tomaMono<SupportingBusinessDataMapForReleaseOperation>como argumento -
el método
processInstruction(renombrado dereleaseInstruction) tomaMono<SupportingContext>como argumento -
el método
processTransaction(renombrado dereleaseTransaction) tomaMono<SupportingContext>como argumento
-
-
Los cambios de la especificación OpenAPI requieren actualizaciones a las interfaces ClientPort para acomodar:
-
los métodos de la interfaz
PrepareInstructionClientPortya no tomanSupportingBusinessDataMapForPrepareOperationcomo argumento -
los métodos de la interfaz
ReleaseInstructionClientPortya no tomanSupportingBusinessDataMapForReleaseOperationcomo argumento -
los métodos de la interfaz
ReleaseInstructionClientPortpueden tomarSupportingContextcomo argumento -
los métodos de la interfaz
ReleaseTransactionClientPortpueden tomarSupportingContextcomo argumento
-
-
Los cambios de OpenAPI significan que ProcessingContext ya no es requerido en el cuerpo para:
-
POST /api/v1/payment-releaser/instruction/{instructionUnitOfWorkID}/prepare-release
-
POST /api/v1/payment-releaser/instruction/{instructionUnitOfWorkID}/release
-
-
ProcessingRequestCreator(renombrado dePaymentRequestCreator) recibeSupportingContext, permitiendo que la Solicitud de Pago construida incorpore datos de apoyo antes de pasarse al servicio de ejecución-
Cambio a la firma del método
getPaymentInitiation()enPaymentDataSource; ahora devuelveMono<Optional<INIT>> -
initationAggregatorFunction, suministrada aBasePaymentWarehouseDataSourceahora es un bean opcional, ya que no todos los usuarios necesitarán suministrar una función de iniciación.
-
Programador Persistente de IPF
Añadido
-
Nuevo módulo: scheduler-external-trigger-kafka. Permite enviar un
ExternalTriggerCommand(implementación deSchedulingCommand) a través de un Kafka SendConnector para ser procesado por otro servicio en la fecha-hora programada. -
Nuevo módulo: scheduler-received-connector-kafka. Permite la recepción de
ExternalTriggerCommandvía Kafka. Este módulo debe incluirse como dependencia en los sistemas receptores. -
Soporte en el Floclient del Programador para enviar/recibir ejecuciones programadas mediante un
ExternalSchedulingHelperespecífico que dispara el dominio y proporciona un comando de entrada de "finalización" cuando se ejecuta elExternalSchedulingCommand.
Cambiado
-
Incompatible: la
SchedulerConnectorInterface(del artefacto mavenscheduler-client-connector-http) usa modelos de la API HTTP como argumentos de métodos, en lugar de modelos "core". -
Incompatible: la API HTTP recibe el objeto
ExternalTriggerCommanden el payload anidado para programar nuevos trabajos -
Floclient del Programador:
PaymentAsyncScheduleCompletedCommandrenombrado aSchedulePaymentReleaseCommand
Gestor de Tareas Humanas
Cambiado
Anteriormente, el flujo del Gestor de Tareas emitía un evento de dominio adicional, Registered, en respuesta al evento de dominio Flow Initiated.
No hay cambios en los estados del flujo ni en su camino de ejecución. La única modificación es que se ha eliminado el evento de dominio Registered,
y el evento de dominio Flow Initiated ha sido renombrado a Registered. Como resultado, las tareas recién creadas ya no tendrán el evento de dominio Flow Initiated almacenado en la base de datos.
NOTA: Este cambio no afecta la funcionalidad de la aplicación, ya que se ha proporcionado un adaptador de eventos apropiado.
Si algún consumidor dependía del evento de dominio Flow Initiated, puede usar con seguridad el evento de dominio Registered en su lugar,
ya que contiene los mismos datos de negocio.
Marco de Pruebas
Cambiado
El marco de pruebas ahora se ejecuta exclusivamente en JUnit 5 (Jupiter). Podría encontrar fallos de compilación si usa anotaciones o clases de aserción específicas de JUnit 4. Vea migración para pasos más específicos de migración.