Define your states
public enum OrederStates {
   NEW, PAID, PACKAGED; // etc
}
Then define your events
public enum OrderEvents {
    PAYMENT, PACK, DELIVER; // etc 
}
Then declare your event listeners
@WithStateMachine
public class OrderEventHandler {
    @Autowired
    OrderService orderService;
    @OnTransition(src= "NEW",target = "PAID")
    handlePayment() {
       // Your code orderService.*
       // ..   
    }
    // Other handlers
}
Now configure your application to to use state machine
@Configuration
@EnableStateMachine
static class Config1 extends EnumStateMachineConfigurerAdapter<States, Events> {
    @Override
    public void configure(StateMachineStateConfigurer<States, Events> states)
            throws Exception {
        states
            .withStates()
                .initial(OrderStates.NEW)
                .states(EnumSet.allOf(OrderStates.class));
    }
    @Override
    public void configure(StateMachineTransitionConfigurer<States, Events> transitions)
            throws Exception {
        transitions
            .withExternal()
                .source(OrderStates.NEW).target(OrderStates.PAID)
                .event(OrderEvents.PAYMENT)
                .and()
            .withExternal()
                .source(OrderStates.PAID).target(OrderStates.PACKED)
                .event(OrderEvents.PACK);
    }
}
And finally use it in your Application/Controller 
public class MyApp {
    @Autowired
    StateMachine<States, Events> stateMachine;
    void doSignals() {
        stateMachine.start();
        stateMachine.sendEvent(OrderEvents.PAYMENT);
        stateMachine.sendEvent(Events.PACK);
    }
 }
Use this guide for getting started with state machine and this referce to learn more.