Giriş
Şu satırı dahil ederiz
import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter;
İki tane configure metodu var. Biri states diğeri transitions için
configure metodu
ÖrnekŞöyle yaparız
@Configuration @EnableStateMachine public class OrderStateMachineConfig extends EnumStateMachineConfigurerAdapter<OrderState,OrderEvent> { @Override public void configure(StateMachineStateConfigurer<OrderState,OrderEvent> states) throws Exception { states.withStates() .initial(OrderState.ORDERED) .states(EnumSet.allOf(OrderState.class)); } @Override public void configure(StateMachineTransitionConfigurer<OrderState,OrderEvent> transitions) throws Exception { transitions .withExternal() .source(OrderState.ORDERED).event(OrderEvent.ON_SHIPMENT)
.target(OrderState.SHIPPED) .and() .withExternal() .source(OrderState.ORDERED).event(OrderEvent.ON_CANCEL) .target(OrderState.CANCELLED) .and() ... } }
Örnek
Şöyle yaparız
@Configuration
@EnableStateMachineFactory
class PaymentStateMachineConfiguration :
  EnumStateMachineConfigurerAdapter<PaymentStates, PaymentEvents>() {
  override fun configure(states:
    StateMachineStateConfigurer<PaymentStates, PaymentEvents>) {
    states.withStates()
      .initial(AWAITING)
      .state(TRANSACTION_CREATED)
      .state(TRANSACTION_SENT)
      .state(TRANSACTION_FAILED)
      .end(SUCCEEDED)
  }
  override fun configure(transitions:
    StateMachineTransitionConfigurer<PaymentStates,PaymentEvents>) {
    transitions
      .withExternal()
      .source(AWAITING).target(TRANSACTION_CREATED).event(CREATE_TRANSACTION)
      .and()
      .withExternal()
      .source(TRANSACTION_CREATED).target(TRANSACTION_SENT).event(SEND_TRANSACTION)
      .and()
      ...
  }
} 
Hiç yorum yok:
Yorum Gönder