Supponiamo di disporre di un metodo di business logic in grado di eseguire alcune operazioni su un numero di oggetti. Forse vuoi chiamare un servizio di raccolta di numeri della lotteria, una volta per ogni persona selezionata da una lista. In Java, il codice potrebbe essere simile a questo:Gestione di errori e feedback durante l'esecuzione di operazioni bulk in un'architettura a più livelli
Set<Person> selectedPeople = ... // fetch list of people
for (Person person : selectedPeople) {
String lotteryNumber = callLotteryNumberWebService(person);
// ...
}
Si noti che il numero di servizio web della lotteria può avere effetti collaterali, come la registrazione che la persona ha richiesto un numero della lotteria (carica forse proprio account), quindi anche se la chiamata al servizio web non riesce per una persona, potrebbe avere successo per altri. Queste informazioni (i numeri della lotteria) dovranno essere riportate a un livello superiore (la vista).
Se questo è il caso in cui è stata eseguita una singola operazione, il metodo della logica di business potrebbe restituire un singolo valore (ad esempio il numero della lotteria) o generare un'eccezione con qualsiasi dettaglio dell'errore. Ma per le operazioni di massa, sarebbe possibile che alcune delle operazioni riuscissero e alcune fallissero.
Questo sembra un tipo di problema che si verificherebbe in molte applicazioni e ci dovrebbe essere un modo pulito per gestirlo. Quindi, qual è il modo migliore per alimentare questo tipo di informazioni dal livello della business logic a un altro livello in un'applicazione (come una vista), preferibilmente in un modo generico che può essere riutilizzato per diversi tipi di dati e operazioni?
Ottima risposta! –