Full Aggregator implementation.

//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,
        };
    }
}
1 It is necessary to be implemented by the Serializable.