0

我是 Acceleo 的新手。我使用 IBM RSA (8.5.1)。我创建了一个自定义 UML 配置文件(带有一些扩展默认元类的原型,这很常见)。UML 配置文件是一个 .epx 文件。此外,我创建了一个简单的模型,在该模型上应用了我的自定义 UML 配置文件,并用我的自定义原型“标记”了一些类。

我的问题(对不起,如果它是微不足道的,但我没有找到一个直接的答案......):

  • 我可以在 Acceleo 中使用我的自定义 UML 配置文件作为元模型吗?简单地说,而不是在我的模块文件中写入以下内容: [module main(' http://www.eclipse.org/uml2/3.0.0/UML ')] (这个工作正常)我可以写这样的东西:[模块主('平台:/resource/MyProfileProject/MyProfile.epx')]?如果我尝试这样做,我会收到一条错误消息:“无法解析元模型”。我尝试将我的 UML 配置文件从 .epx 格式转换为 .xmi 和 .uml。这些都不起作用。

  • 如果这可以以某种方式工作,我可以使用我的自定义构造型作为 Acceleo 模板中的类型限定符(在“for”循环等中)吗?

任何帮助表示赞赏。先感谢您。马塞尔

4

2 回答 2

1

我不认为你可以。

据我所知,您应该使用服务从您的 UML 元素(原型等)中检索配置文件数据,但元模型仍然是 UML,对于 Acceleo 无法更改。

您可以在根据原型信息过滤的元素列表上迭代 UML 元素。

于 2013-12-26T18:43:32.330 回答
0

可以办到。我正在添加一个示例来展示如何做到这一点,因为我花了一些时间来检索配置文件的刻板印象。我添加它以供将来参考(给可能需要它的人)。

[comment encoding = UTF-8 /]
[module generate('http://www.eclipse.org/uml2/4.0.0/UML')]

[template public generateElement(p : Class)]
[comment @main /]
[file (p.name.concat('.php'), false)]
  [if (hasStereotype(p, 'Soa Logic Profile::bOperation'))]
    code for bOperation stereotype  
  [/if]
  [if (hasStereotype(p, 'UML Standard Profile::entity'))]
    code for entity stereotype
  [/if]

  [p._package.member.getApplicableStereotypes().qualifiedName/]
  [hasStereotype(p, 'Soa Logic Profile::bOperation')/]

[/file]
[/template]

请注意,在上面的代码中,限定名称Soa Logic Profile::bOperation对应bOperationSoa Logic Profile. entity是在UML Standard Profile. Soa Logic Profile::bOperation和都是UML Standard Profile::entity限定名称。

注意:您只需要使用 UML 元模型,这个模型(.uml file)已经有关于应用配置文件的信息。这可以通过检查.uml文件来检查。此外,据我了解, *.profile.uml 文件必须与.uml模型文件位于同一文件夹中。

来自巴拉圭的问候!

于 2014-11-16T22:18:31.587 回答