Acceleo:使用自定义UML Profile作为metamodal,以及它在模板中的刻板印象?

时间:2013-12-25 10:39:35

标签: acceleo metamodel stereotype

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

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

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

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

感谢任何帮助。先感谢您。 马塞尔

2 个答案:

答案 0 :(得分:1)

我认为你不能。

据我所知,您应该使用服务从UML元素(构造型等)中检索配置文件数据,但元模型仍然是UML,而且这不能为Acceleo更改。

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

答案 1 :(得分: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对应于bOperation中定义的构造型Soa Logic ProfileentityUML Standard Profile中定义的刻板印象。 Soa Logic Profile::bOperationUML Standard Profile::entity都是限定名称。

注意:您只需要使用UML-metamodel,此模型(.uml file)已经包含有关应用的配置文件的信息。可以通过检查 .uml 文件来检查。另外,据我所知,* .profile.uml文件确实 .uml 模型文件位于同一文件夹中。

巴拉圭的问候!