我是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”循环中等)吗?
感谢任何帮助。先感谢您。 马塞尔
答案 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 Profile
。 entity
是UML Standard Profile
中定义的刻板印象。 Soa Logic Profile::bOperation
和UML Standard Profile::entity
都是限定名称。
注意:您只需要使用UML-metamodel,此模型(.uml file
)已经包含有关应用的配置文件的信息。可以通过检查 .uml 文件来检查。另外,据我所知,* .profile.uml文件确实与 .uml 模型文件位于同一文件夹中。
巴拉圭的问候!