//Aggregator Class
@SagaAggregator(
version = @SagaAggregatorVersion(major = 1, minor = 0, patch = 1),
idPrefix = "po",
name = "PlaceOrderAggregator",
sagaSerializable = PlaceOrderAggregatorSample.class
)
@Getter
@Setter
public class PlaceOrderAggregator extends Aggregator {
public PlaceOrderAggregator() {
super(PlaceOrderAggregator.class);
}
private String orderId;
private String username;
private int isActive;
private List<ItemDetail> itemDetails = new ArrayList<>();
}
//Pojo Class for Item Details
@Getter
@Setter
@Builder
class ItemDetail implements Serializable { (1)
private String itemName;
private int qty;
private double price;
}
//Saga Serializable Class
class PlaceOrderAggregatorSample implements SagaSerializable<PlaceOrderAggregator> {
@Override
public PlaceOrderAggregator[] getSamples() {
//sample-1
PlaceOrderAggregator aggregator1 = new PlaceOrderAggregator();
aggregator1.setOrderId(UUID.randomUUID().toString());
//sample-1
PlaceOrderAggregator aggregator2 = new PlaceOrderAggregator();
aggregator2.setOrderId(UUID.randomUUID().toString());
aggregator2.setUsername("mafei");
//sample-3
PlaceOrderAggregator aggregator3 = new PlaceOrderAggregator();
aggregator3.getItemDetails().add(
ItemDetail
.builder()
.itemName("Item-01")
.price(10.50)
.qty(2)
.build()
);
return new PlaceOrderAggregator[]{
aggregator1,
aggregator2,
aggregator3,
};
}
}