小编ody*_*dyd的帖子

使用自定义 ecore 元模型进行 Acceleo 转换

首先,我对 Eclipse 的建模功能很陌生,所以这个问题可能是微不足道的,但我已经搜索了几天但没有找到答案。

我已经使用 ecore 建模项目创建了一个 ecore 元模型文件。URI 是这样的:/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore

我还生成了(通过 ATL 转换)一个 xmi 模型文件。第一个元素是这样的:

<?xml version="1.0" encoding="ISO-8859-1"?>
<RESTfulServicePSM
    xmi:version="2.0" 
    xmlns:xmi="http://www.omg.org/XMI" 
    xmlns="/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore" 
    name="WSAT">
Run Code Online (Sandbox Code Playgroud)

在 ATL 项目中,一切都按预期进行。

现在我需要使用 Acceleo 创建 M2T 转换。因此,对于初学者来说,我创建了两个模块,一个是 main :

[comment encoding = UTF-8 /]

[module PsmToCode('/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore')]
[import org::eclipse::acceleo::psm2code::files::ResourceModelClasses/]

[template public PsmToCode(aRESTfulServicePSM : RESTfulServicePSM)]
[comment @main/]
[for ( aCSharpResourceModel : CSharpResourceModel | aRESTfulServicePSM.hasCSharpRModel)]
        [aCSharpResourceModel.generateResourceModelClasses()/]
 [/for]
[/template]
Run Code Online (Sandbox Code Playgroud)

和另一个:

[comment encoding = UTF-8 /]
[module ResourceModelClasses('/com.auth.dotnetPSM.PSMmodel/model/PSMMetamodel.ecore')]

[template public generateResourceModelClasses(aCSharpResourceModel : CSharpResourceModel)]

[file (aCSharpResourceModel.parentName.toUpperFirst().concat('.cs'), false, 'UTF-8')]

[/file]
[/template]
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到一个Package …

eclipse metamodel acceleo eclipse-emf-ecore

4
推荐指数
1
解决办法
3022
查看次数

标签 统计

acceleo ×1

eclipse ×1

eclipse-emf-ecore ×1

metamodel ×1