【发布时间】:2011-12-11 20:14:40
【问题描述】:
我正在寻找一种能够理解 DSL 的工具,我可以在其中定义生成 Java 代码的状态图,或者 DSL 中的状态图可以按原样运行。该工具最好用 Java 编写,并且必须通过 Harel 状态图(或等效的 UML 2 状态机)的定义来支持超状态和正交区域。或者,编写这样一个 DSL 的最佳库或工具是什么?
【问题讨论】:
标签: java uml dsl state-machine
我正在寻找一种能够理解 DSL 的工具,我可以在其中定义生成 Java 代码的状态图,或者 DSL 中的状态图可以按原样运行。该工具最好用 Java 编写,并且必须通过 Harel 状态图(或等效的 UML 2 状态机)的定义来支持超状态和正交区域。或者,编写这样一个 DSL 的最佳库或工具是什么?
【问题讨论】:
标签: java uml dsl state-machine
Yakindu 看起来不错:http://www.statecharts.org
【讨论】:
有一个用 Pharo Smalltalk 编写并发布在 OBJEKTspektrum 中的 Harel Statechart DSL:
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 的形式出现,因此可以很容易地被 Java 程序使用的 Scala 类继承。 你可以在这里找到它:http://dl.dropbox.com/u/4548797/AuDSLinScala-src.zip
【讨论】:
我开发了一个库,用于跟踪状态并在应用程序内的状态之间移动,称为 JavaKI。这是基于现在是 SproutCore JavaScript 框架一部分的 KI 框架。两者都基于 Harel 图表。
目前,JavaKI 不支持历史状态,但如果您需要,欢迎您实现此功能。 JavaKI 是基于 Java 的,并在 MIT 许可下获得许可。
https://github.com/joachimhs/JavaKI
使用 JavaKI,您可以在“Plain Old Java”中定义您的状态和状态图。
【讨论】: