いくつかのオブジェクトに対して何らかの操作を実行できるビジネスロジックメソッドがあるとします。たぶん、リストから選択された人ごとに1回、宝くじ番号選択Webサービスに電話をかけたいと思うかもしれません。Javaでは、コードは次のようになります。
Set<Person> selectedPeople = ... // fetch list of people
for ( Person person : selectedPeople ) {
String lotteryNumber = callLotteryNumberWebService( person );
// ...
}
宝くじ番号のWebサービスには、その人が宝くじ番号を要求したことを記録する(おそらくアカウントに請求する)などの副作用がある可能性があるため、ある人のWebサービス呼び出しが失敗した場合でも、他の人のWebサービス呼び出しは成功した可能性があることに注意してください。この情報(宝くじ番号)は、より高いレベル(ビュー)にフィードバックする必要があります。
これが単一の操作が行われた場合、ビジネスロジックメソッドは単一の値(たとえば、宝くじ番号)を返すか、失敗の詳細を含む例外をスローする可能性があります。ただし、一括操作の場合、いくつかの操作が成功し、いくつかが失敗する可能性があります。
これは多くのアプリケーションで発生するタイプの問題のようであり、それを処理するためのクリーンな方法があるはずです。では、このタイプの情報をビジネスロジックレイヤーからアプリケーションの別のレイヤー(ビューなど)にフィードバックするための最良の方法は何ですか?できれば、さまざまなタイプのデータや操作に再利用できる一般的な方法でしょうか?