Definiendo un Custom Clave de verificación de duplicados múltiple Mapping

Esta página explica cómo definir un mapping para una verificación de duplicados múltiple, por ejemplo, donde desea realizar verificaciones de duplicados en un mensaje que contiene múltiples transacciones.

1. Agregue un mapping función

Dentro de su MPS proyecto, añada un Mapping Biblioteca para su modelo. Haga clic derecho en su modelo y elija new→`v2Flo`→`Mapping Library`.

Los datos de salida deben ser Verificación de duplicados de múltiples solicitudes. Que debe especificar el transactionCacheEntryType y un mapa de entradas para las cuales le gustaría realizar verificaciones de duplicados.

Imagen de custom mapping función con todos los detalles completados

2. Utilice el mapping función dentro de su flujo

Dentro de su MPS flujo, haga clic izquierdo en el checkMultipleDuplicate acción que desea utilizar el custom mapping con.

Imagen de la función de verificación de dominio duplicado seleccionada

Presione Ctrl Alt I para abrir el Inspector. Cambie el Mapping en el inspector a su mapping función.

Imagen de custom mapping aplicado en inspector

3. Implemente su mapping adaptador

Necesita proporcionar un java implementación de su mapping función y proporciónelo en su declaración de dominio como un adaptador.

Por ejemplo:

public class CustomDuplicateCheckMappingAdapterMultiple implements CustomDuplicateCheckMappingMappingPort {

    @Override
    public CustomMultipleDuplicateMapFromPain001MappingOutput performCustomMultipleDuplicateMapFromPain001(CustomMultipleDuplicateMapFromPain001MappingParameters inputParameters) {
        // Logic to build a map of Duplicate Check Keys here
        var txnCounter = new AtomicInteger(0);
        Map<String, DuplicateCheckKey> duplicateCheckKeyMap = Optional.ofNullable(inputParameters.getPaymentInitiation())
                .map(CustomerCreditTransferInitiationV09::getPmtInf)
                .map(instruction -> instruction.stream()
                        .flatMap(CustomDuplicateCheckMappingAdapter::createCustomDuplicateCheckKeyForPain001Transaction)
                        // Using a linked hashmap to preserve order
                        .collect(Collectors.toMap(__ -> createIdForMultipleDuplicateCheck(inputParameters.getId(), txnCounter), Function.identity(), (x, y) -> y, LinkedHashMap::new))))
                .orElseThrow(() -> new IconRuntimeException("No payment initiation found"));
        return new CustomMultipleDuplicateMapFromPain001MappingOutput(DuplicateCheckMultipleRequest.builder()
                .transactionCacheEntryType("PAIN_001_MULTIPLE_CUSTOM")
                .duplicateCheckKeyMap(duplicateCheckKeyMap)
                .build());
    }
}

Lo anterior, itera a través de las transacciones del proporcionado pain. 001 mensaje y construye un mapa de DuplicateCheckKey entradas.

Este mapa está envuelto en un Verificación de duplicados clave de múltiples solicitudes sirve como entrada para el checkMultipleDuplicate función que procesará cada entrada y realizará una verificación de duplicados, recopilando los resultados en un Verificación de duplicados clave de respuesta múltiple. Además del mapa de Claves de Verificación de Duplicados, usted puede también especificar el transactionCacheEntryType en la solicitud (configurado para CheckMultipleDuplicatePain001 above)- el nombre de la acción se utilizará como predeterminado si no se especifica ninguno.

    @Bean
    public DuplicatecheckexampleDomain duplicatecheckexampleDomain(ActorSystem actorSystem,
                                                                   CustomDuplicateCheckMappingMappingPort customDuplicateCheckMappingAdapter,
                                                                   Dispatcher floDispatcher) {
        return new DuplicatecheckexampleDomain.Builder(actorSystem)
                .withCustomDuplicateCheckMappingMappingAdapter(customDuplicateCheckMappingAdapter)
                .withDispatcher(floDispatcher)
                .build();
    }

Puede encontrar más detalles sobre el uso de mapping funciones en DSL 6 - Mapping Funciones.

4. Manejo de múltiples respuestas de verificación de duplicados

Al manejar CONTAINS_DUPLICATES código de respuesta en su flujo, debe agregar el Duplicate Check Multiple Response business data elemento asociado al event como se muestra a continuación:

Imagen de verificación de duplicados failed domain event configuración

Esto hará que los resultados estén disponibles para el procesamiento posterior en su flujo.

Un ejemplo Duplicate Check Failed se muestra a continuación con el mapa de resultados mostrado. El orden de las entradas se conserva del mensaje fuente. En el ejemplo a continuación, el orden en el mapa de respuesta es el mismo que el orden de las transacciones en el mensaje fuente. La clave puede ser utilizada en el Duplicate Check Multiple Request mapa para recuperar la clave duplicada original utilizada para realizar la verificación de duplicados.

Imagen de verificación de duplicados failed domain event