我开发了一个生成Kermeta XMI文件的转换。
我的问题是我会在后台运行这个转换(.kmt文件),也就是说从Java程序运行。
我尝试了很多代码但总是没有结果。
有人可以帮帮我吗? 提前感谢您的帮助。答案 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,它包含有用的初始化方法和可以从命令行调用的主要操作。
org.example.MainRunner.init4eclipse()
。然后调用主方法org.example.KerRichFactory.createFooToBar.transformFooToBar()
您可以调用任何其他类或方法(即使参数不是String)
基于kermeta转换构建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”