1

私はssmに傾いています.blowは私のデモ設定です:

@Override
    public void configure(StateMachineConfigurationConfigurer<States, Events> config) throws Exception {
        config.withConfiguration()
                .autoStartup(true)
                .listener(listener());
    }

    @Override
    public void configure(StateMachineStateConfigurer<States, Events> states) throws Exception {
        states.withStates()
                .initial(States.S_1)
                .state(States.S_1, myAction(), null)
                .end(States.S_END)
                .states(EnumSet.allOf(States.class));
    }

    @Override
    public void configure(StateMachineTransitionConfigurer<States, Events> transitions) throws Exception {
        transitions
                .withExternal()
                .source(States.S_1).target(States.S_2).event(Events.E1).action(myAction());
    }

2 つのイベントをマシンに送信しますが、1 回実行されます。

stateMachine.sendEvent(Events.E1);
stateMachine.sendEvent(Events.E1);

ssm には状態がありますか?どうすればステートレスで実行できますか?

ビジネス手順を定義するために使用したいだけです。

4

3 に答える 3

3

イベントE1がマシンを からS_1に取るようS_2です。そのイベントを再度送信しても、マシンは既に状態にあり、からへS_2の移行は発生しないため、何もしません。S_1S_2

マシンをステートレスにする意味がわからない?

于 2016-09-23T10:27:02.363 に答える
1

ステートマシンは、保存された状態に反応することが目標であるため、ステートフルです...そして、イベントは状態を変更します...

あなたの場合、ステートマシンではなく「単純な」サービスレイヤーが必要になると思います

于 2016-10-14T12:48:11.200 に答える