次States
の単純なステート マシンがEvents
ありTransitions
ます。
州:WIP, SUBMITTED, REJECTED, APPROVED
イベント:SUBMIT, APPROVE, REJECT
トランジション:
@Override
public void configure(StateMachineTransitionConfigurer<States,Events> transitions)
throws Exception {
transitions
.withExternal()
.source(States.WIP)
.target(States.SUBMIT)
.event(Events.SUBMIT)
.and()
.withExternal()
.source(States.SUBMITTED)
.target(States.APPROVED)
.event(Events.APPROVE)
.and()
.withExternal()
.source(States.SUBMITTED)
.target(States.REJECTED)
.event(Events.REJECT);;
}
- SUBMIT イベントの SUBMITTED への WIP
- APPROVE イベントの APPROVED に SUBMITTED
- REJECT イベントの SUBMITTED から REJECTED
WIP
以下のように初期状態として設定しました。
@Override
public void configure(StateMachineStateConfigurer<States, Events> states)
throws Exception {
states
.withStates()
.initial(States.WORK_IN_PROGRESS)
.states(EnumSet.allOf(States.class));
}
複数のユーザーがこのステート マシンと対話します。ソース状態とターゲット状態の組み合わせに対して同じイベントが複数回発生した場合、最初のイベントのみがステート マシンによって受け入れられ、後続のイベントは受け入れられません。
これはステート マシンからの有効な動作ですか? はいの場合、追加する必要がある追加の構成はありますか?