Guarde Su Primera Entrada de Pago

El artefacto de pago-almacén-mongo introduce un Spring Bean of MongoPaymentWarehouse en su aplicación. Esta clase implementa el PaymentWarehouse interfaz. Esta interfaz es el punto de entrada a la aplicación.

Para guardar su primera Entrada de Pago, simplemente llame al save(PaymentEntry paymentEntry) método. A continuación se presenta un ejemplo.

package com.iconsolutions.ipf.core.warehouse.port.mongo;

import com.iconsolutions.ipf.core.shared.domain.context.ProcessingContext;
import com.iconsolutions.ipf.core.shared.domain.context.UnitOfWorkId;
import com.iconsolutions.ipf.core.warehouse.BusinessDataEntry;
import com.iconsolutions.ipf.core.warehouse.PaymentEntry;
import com.iconsolutions.ipf.core.warehouse.PaymentEntryId;
import com.iconsolutions.ipf.core.warehouse.PaymentEntryType;
import com.iconsolutions.ipf.core.warehouse.port.PaymentWarehouse;
import lombok.RequiredArgsConstructor;
import reactor.core.publisher.Mono;

import java.util.List;

@RequiredArgsConstructor
public class ExampleSave {

    private final PaymentWarehouse paymentWarehouse;

    public Mono<PaymentEntry> save() {
        var unitOfWorkId = UnitOfWorkId.createRandom();
        var parentUnitOfWorkId = UnitOfWorkId.createRandom();
        var businessData = List.of(BusinessDataEntry.builder().objectId("xyz").build());
        var paymentEntry = PaymentEntry.builder()
                .id(PaymentEntryId.of("association", 1))
                .processingContext(ProcessingContext.of(unitOfWorkId))
                .relatedUnitOfWorkId(parentUnitOfWorkId)
                .globalState("PENDING")
                .type(PaymentEntryType.TRANSACTION)
                .data(businessData)
                .build();
        return paymentWarehouse.save(paymentEntry);
    }

}
ttl y expiryDate Los campos no necesitan ser establecidos al guardar un PaymentEntry. Estos campos se establecen cuando Mantenimiento del hogar is triggered y determine la expiración del objeto PaymentEntry. Si establece estos campos, estará controlando manualmente la expiración de sus objetos en lugar de delegarla a la Mantenimiento del hogar proceso. Para más detalles sobre estos dos campos, consulte Conjunto ttl y expiryDate campos .
Los campos en el PaymentEntry los objetos están intencionadamente definidos de manera laxa (como globalState) para que los campos puedan ser adaptados a sus casos de uso específicos.