我想在Magic Draw中从我的状态机生成代码。MagicDraw支持类的代码生成,但不包括状态机选项。我试过使用SinelaboreRT软件。但是,它生成的代码有限。我们需要手动添加"Main"函数和其他在状态中定义的函数。我想知道是否可以生成一个可执行文件或C/C++/Java代码文件,其中包含所有提到的内部状态代码以及"Main"函数?
是的,我知道有三个主要选项:1(制作自己的代码生成器,2(购买商业代码生成器,例如LieberLieber
提供了一个看起来相当复杂的代码生成器;或者3(使用一个开源代码生成器,如Papyrus-RT
。
根据你的目标语言和框架,第一个选项实际上并没有那么难。对于我在MITRE的工作,我已经编写了一个生成器来获取正确形成的Magicdraw模型,并创建可部署的Spring微服务。我使用Spring状态机库来简化STM代码的生成。
我个人发现,从模型创建状态机最方便的方法是UML或任何其他DSL是的组合
Eclipse Papyrus/Eclipse XText/Eclipse XTend
如果你不想使用基于Eclipse的,块中也有新的类型
Langium
但他们现在有点新,但我建议你每6个月检查一次,他们看起来很有希望。
如果你想看看它是如何完成的,我有几个关于它的博客。
基于UML的
Akka有限状态机生成博客2纸莎草和弹簧状态机
基于DSL:
XText和弹簧状态机