如何验证我的SCXML是否定义了有效的状态机?

时间:2015-07-29 08:12:49

标签: java scxml

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

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

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

1 个答案:

答案 0 :(得分:2)

uSCXML发行版中的uscxml-analyze工具就是这样做的:

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

它会检查一大堆issues

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

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