添加到选择伪状态的操作似乎被默默地忽略了。这样做:
Builder builder = StateMachineBuilder.builder();
StateConfigurer states = builder.configureStates().withStates();
StateMachineTransitionConfigurer transitions = builder.configureTransitions();
StateConfigurer statesConfig = states.initial(INITIAL).states(EnumSet.allOf(StateType.class));
statesConfig.choice(StateType.CHOICE_STATE);
transitions.withChoice().source(StateType.CHOICE_STATE). //
first(StateType.S1, someGuard). //
last(StateType.S2);
states.state(StateType.CHOICE_STATE, someAction, null);
当输入 CHOICE_STATE 时,导致 someAction 永远不会被执行。
框架根本不允许将操作添加到 CHOICE_STATE 之外的转换(例如,到上面的 S1 或 S2)。
为了解决这个问题,我们实现了 CHOICE_STATE 之前的状态。然后我们可以像往常一样自由地向这个状态添加动作。我只是想知道这种限制的原因是什么,或者是否有某种方法可以将操作置于我可能错过的伪状态。