有没有适用于Java的Harel状态图DSL工具?

7
我正在寻找一种能够理解DSL的工具,我可以在其中定义我的状态图,并生成Java代码,或者直接运行DSL中的状态图。该工具最好使用Java编写,并且必须支持Harel状态图(或等效的UML 2状态机)的超级状态和正交区域。另外,有什么最好的库或工具可以编写这样的DSL吗?

哟呼!https://projects.spring.io/spring-statemachine/ - stephan f
4个回答

8
Yakindu看起来很不错:http://www.statecharts.org
  • Harel状态图
  • 可视化语言
  • 文本DSL
  • 生成Java代码
  • 生成C语言代码
  • 生成C++代码
  • 生成可配置/定制的代码
  • 基于Eclipse
  • 开源
  • 模拟
  • 历史和深度历史

Yakindu非常出色;我已经编辑了您的帖子,包括C和C++代码生成目标。 - pmf

3

有一种使用Pharo Smalltalk编写的Harel状态图DSL,并在OBJEKTspektrum上发布:
http://www.sigs-datacom.de/fileadmin/user_upload/zeitschriften/os/2011/04/krasemann_brauer_crasemann_OS_04_11.pdf
不幸的是,这是德语。但是,代码是用英语编写的:
www.squeaksource.com/AuDSL3.html

这个DSL的实现可以很容易地移植到Scala解析器组合器中,这意味着它将可用于Java。

如果您想要进行移植,我们将很乐意提供帮助(krasemann@acm.org)。
我们只是还没有这样做。

* 添加于2012-03-17 * 现在Scala端口已经准备好了。它作为一个Scala Trait出现,因此可以很容易地被您的Scala类继承,而该类可能会被您的Java程序使用。 您可以在这里找到它:http://dl.dropbox.com/u/4548797/AuDSLinScala-src.zip


1

ThingML是一种文本DSL,允许建模类似UML的状态机(包括组合状态、并行区域等)。通过ThingML规范,可以生成Java、C或JavaScript。这里提供了一系列教程。


1

我开发了一个库,用于跟踪应用程序中的状态并在状态之间切换,称为JavaKI。这基于现在是SproutCore JavaScript框架一部分的KI框架。两者都基于Harel图表。

目前,JavaKI不支持历史状态,但如果您需要,欢迎实现此功能。JavaKI基于Java并获得了MIT许可证。

https://github.com/joachimhs/JavaKI

使用JavaKI,您可以在“普通的Java”中定义状态和状态图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接