3

我刚刚开始研究定义状态机,SCXML看起来很有吸引力,尤其是Apache Commons SCXML for Java。显然我可以验证 XML(使用适当的 XSD)。

但是我显然找不到任何方法来验证定义的状态机是否有效(没有死胡同,没有无法到达的状态等)。

但是如何在执行之前验证定义的状态机呢?特别是我对可以集成到构建工具链中的工具(即从命令行)感兴趣。

4

1 回答 1

5

来自uSCXML发行版的 uscxml-analyze 工具可以做到这一点:

$ uscxml-browser -c ../../test/w3c/ecma/test144.scxml

它检查一大堆问题

  • 必需的属性
  • 有效的父元素
  • 有效的默认历史配置
  • 有效的初始转换
  • 有效的初始属性
  • 无法访问的状态层次结构
  • state id 属性的唯一性
  • 转换的有效目标
  • 冗余/不可选择的转换
  • 多余的历史元素
  • 目标集的合法配置
  • 一堆属性/元素组合约束
  • 数据模型表达式的有效语法

uSCXML 解释器还将在解释期间检查宏步骤内的循环。

于 2016-01-28T16:24:14.813 回答