我正在运行一个分层的Spring状态机,在遍历初始转换到状态之后,默认子状态停止,我想使用statemachine.getState().问题是,它只给了我父状态,我找不到一个明显的方法来检索父状态和子状态.

机器有states个这样的 struct :

    StateMachineBuilder.Builder<ToolStates, ToolEvents> builder = StateMachineBuilder.builder();


    builder.configureStates()
       .withStates()
          .initial(ToolStates.UP)
          .state(ToolStates.UP, new ToolUpEventAction(), null)
          .state(ToolStates.DOWN                
          .and()
       .withStates()
          .parent(ToolStates.UP)
          .initial(ToolStates.STOPPED)
          .state(ToolStates.STOPPED,new ToolStoppedEventAction(), null )
          .state(ToolStates.IDLE)
          .state(ToolStates.PROCESSING,
                 new ToolBeginProcessingPartAction(),
                 new ToolDoneProcessingPartAction());

    ...

    builder.build();

ToolStatesToolEvents只是枚举.在客户机类中,在运行上面的构建器代码之后,当我随后调用statemachine.getState().getId();时,statemachine以statemachine.start();启动,它给我UP.在该调用之前,没有向statemachine发送任何事件.

希望这是一件非常明显的事情...

欢迎任何建议!

推荐答案

该文档描述了getStates()个:

https://docs.spring.io/spring-statemachine/docs/current/api/org/springframework/statemachine/state/State.html

java.util.Collection<State<S,E>>    getStates()
Gets all possible states this state knows about including itself and substates.

stateMachine.getState().getStates();

Java相关问答推荐

如何审查Java dtos中的自定义注释字段?

Jooq外键关系

neo4j java驱动程序是否会在错误发生时自动回滚事务?

在for—each循环中的AnimationTimer中的if语句'

蒙蒂霍尔比赛结果不正确

JPanel透支重叠的JComcoBox

如何从错误通道回复网关,使其不会挂起

如何获取Instant#of EpochSecond(?)的最大值

当Volatile关键字真的是必要的时候?

Domino Designer 14中的保存代理添加了重影库

Spring-Boot Kafka应用程序到GraalVM本机映像-找不到org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier

try 将JSON字符串响应从API转换为映射字符串、对象>;时出错

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

找出承载Cargo 的最小成本

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

Java嵌套流查找任意值

协同 routine 似乎并不比JVM线程占用更少的资源

[Guice/MissingImplementation]:未绑定任何实现

如何使用Jackson读取以方括号开头的JSON?

单例模式中热切初始化和惰性初始化的区别