简短:是否可以在 Papyrus 中创建分层(嵌套)状态机 UML 图,然后使用它来构建工作状态机实例?
解释:
没有嵌套状态的简单示例,如文档中所示,工作正常。
我尝试了两种创建嵌套状态的方法:
- 在我的主机中创建状态并将另一个子机链接到它(属性-> 子机)
- 在单状态机中创建所有内容,使用子状态创建状态
在这两种情况下,创建的 Spring 状态机都不能识别子机状态。
当我使用此代码列出应用程序中的所有状态时:
public List<String> getAllStates() {
List<String> list = new ArrayList<>();
Collection<State<String, String>> states = machine.getStates();
for (State state : states) {
Collection<State<String, String>> substates = state.getStates();
for (State<String, String> substate : substates) {
list.add(substate.getIds().toString());
}
}
return list;
}
,它只列出了两种状态,初始化和处理。当我发送事件时,机器从初始化进入处理,而不是[处理,准备]。
我是在做错事,还是在尝试做一些 Spring Statemachine 甚至没有实现的事情?也就是说,是否可以仅从 UML 图创建单级状态机?
编辑:
感谢 Janne Valkealahti 阅读此问题并确保 spring-statemachine 具有此选项。
看来这毕竟是我的错,但我不确定在哪里以及如何(创建/编辑了几个类似的图表但没有成功)。可能它与昨天发生在我的 Fedora 24 上的一些 Papyrus / Eclipse 警告和错误有关。今天,在从头开始创建新图表后,一切都按预期工作。这是新的工作图,状态机列出了所有状态和子状态。