从Java程序执行Kermeta文件

时间:2015-10-22 06:23:28

标签: java transformation

我开发了一个生成Kermeta XMI文件的转换。

我的问题是我会在后台运行这个转换(.kmt文件),也就是说从Java程序运行。

我尝试了很多代码但总是没有结果。

有人可以帮帮我吗? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

运行kermeta程序取决于Kermeta的版本及其执行上下文。 使用Kermeta 2,kmt代码被编译为scala。由于scala与java的兼容性,可以直接从java调用此scala代码。 首先需要声明至少一个主操作才能生成适当的初始化操作。 假设你的kermeta代码中的类“org :: example :: FooToBar”中有一个方法“transformFooToBar”。 使用标记

将其声明为主入口点
@mainClass "org::example::FooToBar"
@mainOperation "transformFooToBar"

此主操作必须只有字符串参数。 这将生成一个实用程序scala类org.example.MainRunner,它包含有用的初始化方法和可以从命令行调用的主要操作。

  • 案例1 /使用来自eclipse插件的Kermeta 2代码 : 这是最简单的情况,调用方法org.example.MainRunner.init4eclipse()
在任何其他电话之前

。然后调用主方法org.example.KerRichFactory.createFooToBar.transformFooToBar()

您可以调用任何其他类或方法(即使参数不是String)

基于kermeta转换构建eclipse工具非常方便。

  • 案例2 / Kermeta 2代码从标准Ja​​va应用程序调用(即不在eclipse插件中运行) 然后,初始化方法为org.example.MainRunner.init()

案例2的常见陷阱:许多独立运行的转换仍然需要在内部补给系统中使用eclipse uri方案来操纵模型。 IE浏览器。 platform:/ plugin / ...,platform:/ resource / ...,pathmap:/ ...,甚至更复杂的uri映射(通常使用自定义协议)(你可以通过查看xmi文件轻松检查)作为文字) 在这种情况下,由于Eclipse平台未运行以提供搜索机制,因此您需要手动提供等效的URI映射,以将这些URI映射到本地系统URI(即文件:/ ...或jar:file: / URIs) 一种可能性是使用提供此类映射的urimap.properties文件。默认情况下,在eclipse中运行kermeta程序时,会为当前的eclipse配置生成urimap.properties。 将kermeta程序部署到另一台计算机或使用自定义部署打包时,您必须为目标计算机提供/计算等效文件。

为方便起见,您可以设置此urimap.properties文件的位置,这要归功于系统属性“urimap.file.location”