Скажем, у вас есть бизнес-логический метод, который может выполнять некоторую операцию по нескольким объектам. Возможно, вы хотите вызвать набор лотерейных номеров для веб-службы, один раз для каждого человека, выбранного из списка. В Java код может выглядеть примерно так:
Set<Person> selectedPeople = ... // fetch list of people
for ( Person person : selectedPeople ) {
String lotteryNumber = callLotteryNumberWebService( person );
// ...
}
Обратите внимание, что веб-служба номера лотереи может иметь побочные эффекты, например, запись о том, что человек запросил номер лотереи (возможно, взимать плату с их учетной записи), поэтому, даже если вызов веб-службы не срабатывает для одного человека, возможно, это удалось для другие. Эта информация (номера лотереи) должна быть возвращена на более высокий уровень (вид).
Если это был случай, когда выполнялась одна операция, метод бизнес-логики мог возвращать одно значение (например, номер лотереи) или выдавать исключение с любыми деталями отказа. Но для массовых операций было бы возможно, чтобы некоторые из операций преуспели, а некоторые из них потерпели неудачу.
Это похоже на проблему, которая возникает во многих приложениях, и должен быть чистый способ ее обработки. Итак, каков наилучший способ передать этот тип информации обратно с уровня бизнес-логики на другой уровень в приложении (например, представление), желательно общим способом, который может использоваться повторно для разных типов данных и операций?