Core - Cambios y Soluciones
Esta página detalla todo lo necesario para comenzar con la versión de IPF. 2025.3.0
Nuevo
IPF Inicio Común
Core
-
Se añadió la capacidad de enmascarar la configuración sensible mostrada a través de Spring.
InfoContributor, vea Configuración de enmascaramiento
Conectores y Transportes
-
System events para reflejar los estados de los conectores (consulte System Events)
-
ConnectorStarted -
ConnectorAvailable -
ConnectorStopped -
ConnectorShutdownInitiated -
ConnectorUnavailable
-
-
System event para distinguir entre un transporte disponible (existente
TransportAvailable) y cuando ha comenzado a procesar (nuevoTransportStarted) -
Se añadió la capacidad de enmascarar la configuración sensible al utilizar el api-de-operaciones-de-conectores, vea Operaciones del Conector
Filtrado Bancario Cache
-
Configuración añadida que permite deshabilitar cache in
bank-filtering-parent. Por defecto,cache está habilitado, consulte Configuración de Caché.
Cambiado
Conectores
-
La creación del índice de correlación ahora admite la especificación del custom la configuración del quórum de confirmación, se puede realizar proporcionando un valor para
ipf.connector.correlation.commit-quorumpropiedad -
Reformuló cómo se determina la salud del conector con una nueva salud del conector.event procesador utilizando la salud del conector y del transporte system events
-
Tener al menos un transporte
UPcon un interruptor en unCLOSEDstate resultará en un informe de conectorUP
-
-
Se añadió una nueva propiedad de configuración.
timestamp-archived-and-failed-filesque se utiliza enLocalDirectoryConnectorTransport. Cuando se establece entrue, archivos movidos a /archive o /failed los directorios se marcan automáticamente con una marca de tiempo (es decir,file_20251020_143530.xml). El valor predeterminado esfalsepara preservar el comportamiento existente.
Procesador de Entradas de Pago (anteriormente Liberador de Pagos)
Se realizaron los siguientes cambios para que el Procesador de Entradas de Pagos pueda hacer coincidir los pagos almacenados con los suministrados.ProcessingEntity:
-
Especificación OpenAPI actualizada:
-
Todo HTTP las solicitudes pueden incluir opcionalmente un
ProcessingEntityen el cuerpo de la solicitud. Habilita la coincidencia de pagos almacenados contra elProcessingEntitycampos. Si elProcessingEntityno se proporciona en el cuerpo de la solicitud, entonces no se lleva a cabo ninguna lógica de coincidencia. -
Todo HTTP los cuerpos de solicitud son ahora opcionales
-
-
Interfaces de Java implementadas por el
PaymentReleaserControlleractualizado (generado a partir del actualizado OpenAPI especificación):-
the
prepareReleaseInstructionel método tomaMono<PrepareReleaseInstructionRequest>como argumento -
the
releaseInstructionyreleaseTransactionmétodos ya no tomanMono<SupportingContext>como argumento -
el
releaseInstructionyreleaseTransactionmétodos tomanMono<ReleaseRequest>como un argumento de método
-
-
PaymentEntriesProcessorjava cambios en la interfaz:-
el
prepareInstructionel método tomaProcessingEntitycomo un argumento de método (opcional) -
el
processInstructionel método tomaProcessingEntitycomo un argumento de método (opcional) -
the
processTransactionel método tomaProcessingEntitycomo un argumento de método (opcional)
-
-
the
ExecutionInfojava objeto (devuelto porprocessInstructionyprocessTransactionmétodos en elPaymentEntriesProcessorla interfaz) ha sido refactorizada:-
introducción de
PaymentHandlingInfo paymentHandlingInfocampo -
movimiento del
ProcessingActionType actionTypeySupportingContext supportingDatacampos deExecutionInfoobjeto enPaymentHandlingInfoobjeto. -
adición de
ProcessingEntity processingEntitycampo aPaymentHandlingInfoobjeto.
-
-
PaymentDataSourcejava las firmas de métodos de interfaz actualizadas:-
el
getPaymentInitiation,getPaymentInstruction,getPaymentTransactionsygetPaymentTransactionmétodos todos requerían un (nullable)ProcessingEntityargumento del método
-
-
el
BasePaymentWarehouseDataSourcela lógica de clase para devolver una Entrada de Pago ahora puede coincidir conProcessingEntity, con la lógica como sigue:-
si un
ProcessingEntityes proporcionado por el llamante, entonces elProcessingEntityen la Entrada de Pago debe coincidir para ser devuelto. -
si un
ProcessingEntityno es proporcionado por el llamador, entonces elProcessingEntityen la Entrada de Pago no se toma en consideración.
-
Administrador de Archivos
-
FileWriterAPIwriteyreactiveWritemétodos ahora devuelven un envueltoWriteResponseobjeto que contiene unversioncampo de cadena.-
Para el Administrador de Archivos S3, el
versionrepresenta el versionId del archivo S3 cargado si el bucket S3 tiene Versioning habilitado. Si el bucket S3 no tiene Versioning habilitado, elversionel campo será nulo. -
Para el Administrador de Archivos Local, el
versionel campo será nulo.
-
Cambios Importantes
Serialización
-
El IPF Akka el serializador ha sido actualizado para alinearse con la implementación de SerializationHelper. La configuración Jackson La visibilidad de JsonFactory ha cambiado de
ANYtoDEFAULT.-
Ver com.fasterxml.jackson.annotation. PropertyAccessor y fasterxml.github.io/jackson-annotations/javadoc/2.5/com/fasterxml/jackson/annotation/JsonAutoDetect. Visibility.html[com.fasterxml.jackson.annotation. JsonAutoDetect. Visibility] Valores de enumeración para más información.
-
La configuración anterior de
ANYsignificaba que todos los campos (incluidos los privados y protegidos) están serializados. -
En particular, esto puede afectar Java campos donde uno de los primeros dos caracteres es mayúscula (por ejemplo,
aFieldNameorBFieldName).-
Con
FIELD = DEFAULTconfigurado, los campos de ejemplo anteriores se serializan aafieldNameybfieldNamerespectivamente, lo que puede causar problemas durante la deserialización.
-
-
Esto es un conocido Problema de Jackson(fijo en Jackson 3.0), donde se aconseja utilizar el
@JsonPropertyanotación para estos campos. -
Si esa no es una solución ideal, puede revertir al uso de la configuración anterior configurando:
-
akka.serialization.jackson.ipf-akka-serializer.visibility. FIELD = ANY
-
Para más información sobre el IPF Akka serializador, consulte el documentación de serialización.
Conectores
Transport Message Encabezados
-
Obsoleto
ProcessingContextLas claves de encabezado han sido eliminadas. -
Obsoleto
MessageHeaders.fromProcessingContext()yMessageHeaders.toProcessingContext()se han eliminado los métodos
Ver Notas de migración para obtener detalles adicionales.
Creación del índice de correlación
-
Nombre de la propiedad de configuración
ipf.correlation.index-creation.enabled(para habilitar/deshabilitar la creación automática de un índice de correlación) se cambia aipf.connector.correlation.create-indexes -
Nombre de la propiedad de configuración
ipf.connector.correlation-timestamp-field-name(el nombre de la columna de marca de tiempo de creación) se cambia aipf.connector.correlation.timestamp-field-name -
Nombre de la propiedad de configuración
ipf.connector.correlation-expiry(el nombre de la columna de marca de tiempo de creación) se cambia aipf.connector.correlation.time-to-live
Contexto de Procesamiento
-
Claves de encabezado de mensaje en desuso
uowId,requestId,processingEntityyassociationIdse eliminan a favor de las claves definidas enContextPropagationSettingsclase. Ver Notas de migración para obtener detalles adicionales.
API
-
ConnectorHealthla clase ya no contiene una lista deTransportHealth, ahora acepta un String para el nombre del conector
Administrador de Archivos
-
FileWriterAPI cambios importantes a continuación. Ver API Referencia para obtener detalles sobre elWriteResponseobjeto.-
writeel método devuelveCompletionStage<WriteResponse>, anteriormente esto devolvíaCompletionStage<Void> -
reactiveWriteel método devuelveMono<WriteResponse>, anteriormente esto devolvíaMono<Void>
-
Kafka Message Logger
-
Kafka Message Logger anteriormente solo registró excepciones (y no propagó) (PAY-15687)