Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧状态机跳过初始状态_Java_Spring_Spring Statemachine - Fatal编程技术网

Java 弹簧状态机跳过初始状态

Java 弹簧状态机跳过初始状态,java,spring,spring-statemachine,Java,Spring,Spring Statemachine,我对Spring状态机有问题: 我有国家的等级制度,就这样吧: { S1 - initial S2 S3 { S3S1 - initial S3S2 } } 目前我处于S2状态,希望转移到S3S2,我的假设是在这个转换中应该调用inital state操作,但事实并非如此。例如,S3表示使用某个模式窗口,在状态S3S1中,我应该初始化此窗口,然后在S3S2中,我可以使用此窗口内的一些控件,目前我无法通过定义从S2到S3S2的单个转

我对Spring状态机有问题:

我有国家的等级制度,就这样吧:

{
    S1 - initial
    S2
    S3 {
        S3S1 - initial
        S3S2
    }
}
目前我处于S2状态,希望转移到S3S2,我的假设是在这个转换中应该调用inital state操作,但事实并非如此。例如,S3表示使用某个模式窗口,在状态S3S1中,我应该初始化此窗口,然后在S3S2中,我可以使用此窗口内的一些控件,目前我无法通过定义从S2到S3S2的单个转换来完成此操作(如果我错了,请纠正我)


我在github中发现了这个非常古老的问题#71(),它指出“规范提到机器应该始终进入初始状态,但如果用户想直接进入子机器的状态,这有点尴尬。”,但在我对状态机思想的理解中,如果你不通过初始状态,这是非常有意义的。为什么你需要状态的层次结构呢?你可以在同一个层次上定义一切,在我看来,初始状态应该为同一地区的其他状态的工作做好准备。因此,我不认为应该跳过初始状态,或者在最坏的情况下,这种行为应该是可选的。

uml规范的某些部分提到,复合状态是通过其初始状态输入的,但措辞有点误导,因为这指的是转换在特定复合状态本身终止的情况,然后使用初始状态(也称为默认条目)。直接转换到其他子状态称为显式条目。还有通过入口点的控制入口,这是进入冲锋机的另一种方式


如果您需要在S3S2之前执行一些init逻辑,那么您可以尝试在其父状态S3中将其作为入口操作来执行。如果您确实从S2转换到S3S2,发生的顺序是,退出S2,进入S3,进入S3S2。

我对进入操作有不同的问题,有一些对异步外部系统的调用,我必须等待进一步的回答,我还需要能够中断这些调用,但我一调用Thread.sleep()就捕捉到InterruptedException。