У меня есть список заказов. Каждый из них должен быть полностью обработан. Для каждого заказа необходимо выполнить несколько операций.
Пример обработки заказа выглядит следующим образом:
- проверка покупателя
- проверка продавца
- создать исторический заказ (отдельную сущность) для покупателя и продавца
- обновить покупателя
- обновить продавца
- сохранить исторические заказы из пт. 3
- отправка уведомлений
- обновление состояния заказа до «выполнено»
Теперь с моим списком заказов я перебираю с помощью для l oop. Как убедиться, что фиксация транзакции выполнена в конце текущей итерации? Я хочу избежать ситуации, когда шаги 4 и 5 фиксируются, а затем при выполнении сохранения на шаге 6 возникает некоторая исключительная ситуация. Я не могу остановить приложение, но мне нужно установить состояние ордера «отклонено» и продолжить обработку. Чего я действительно хочу добиться, так это:
for (Order o : orders){
try{
doStep1;
doStep2;
doStep3;
doStep4;
doStep5;
doStep6;
doStep7;
doStep8('completed');
commitAllUpdates&Saves;
} catch (Exception e){
doStep8('rejected');
}
Справка.