Documentation for a newer release is available.
View Latest
Obtener datos agregados para su uso en una llamada externa
Obtener los datos del aggregate para usarlos en una domain function externa puede hacerse con la ayuda de las domain functions como se menciona en Domain Operations.
Todas las domain operations son asíncronas y devuelven un CompletionStage. Así que si queremos usar el resultado de getAggregate, necesitamos encadenar llamadas con thenCompose/thenApply para asegurarnos de no bloquear en ningún punto.
A continuación hay un ejemplo de envío de algunos datos a un SendConnector después de haber recuperado los datos del aggregate, ya que se requiere para rellenar algunos datos en el mensaje de solicitud del SendConnector.
public class SampleFraudActionAdapter implements FraudActionPort {
private final SendConnector<FraudRequest, OlafRequest> fraudSendConnector;
@Override
public CompletionStage<Void> execute(CheckFraudAction action) {
FraudRequest fraudRequest = new FraudRequest();
fraudRequest.fiToFICustomerCreditTransfer = action.getCustomerCreditTransfer();
return CredittransferDomain.getAggregate(action.getId())
.thenCompose(
aggregate -> {
fraudRequest.customFields.put("mykey", aggregate.getStatus().getStatus());
return fraudSendConnector.send(action.getProcessingContext(), fraudRequest)
.thenAccept(deliveryOutcome -> log.debug("FraudAdapter completed with {}", deliveryOutcome.getDeliveryReport().getOutcome()));
}
);
}
private class FraudRequest {
public FIToFICustomerCreditTransfer fiToFICustomerCreditTransfer;
public Map<String, String> customFields;
}
}