Fali使用getAppliedStereotype来获取id和需求名称

时间:2017-07-04 16:39:41

标签: acceleo papyrus sysml

在Eclipse中,使用Papyrus neon和Acceleo 3.7 for SysML 1.4图表,getAppliedStereotype()返回null。 模块是

[module generate('http://www.eclipse.org/uml2/5.0.0/UML', 
'http://www.eclipse.org/papyrus/sysml/1.4/SysML',
 'http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks',
'http://www.eclipse.org/papyrus/sysml/1.4/SysML/Activities',
'http://www.eclipse.org/papyrus/sysml/1.4/SysML/Requirements',
'http://www.eclipse.org/papyrus/sysml/1.4/SysML/ModelElements')]

我在generate.java中添加了以下代码,但仍然无法正常工作

Map<URI, URI> uriMap = resourceSet.getURIConverter().getURIMap();
        // UML2 profiles
        URI uri = URI.createURI("platform:/plugin/org.eclipse.uml2.uml.resources");
        uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP), uri.appendSegment("libraries").appendSegment(""));
        uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP), uri.appendSegment("metamodels").appendSegment(""));
        uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP), uri.appendSegment("profiles").appendSegment(""));  
    // SysML profiles
        uri = URI.createURI("platform:/plugin/org.eclipse.papyrus.sysml14");
        uriMap.put(URI.createURI(SysMLResource.LIBRARIES_PATHMAP), uri.appendSegment("librairies").appendSegment(""));
        uriMap.put(URI.createURI("pathmap://SysML14_PROFILES/"), uri.appendSegment("model").appendSegment(""));  

像c.getAppliedStereotypes()这样的代码返回null。我想得到一个需求的信息,如下面的代码,由于getAppliedStereotype操作,它没有返回任何内容:

[for (re : uml::Class | uml::Class.allInstances()->select(cl : uml::Class | cl.getAppliedStereotype('SysML::Requirements::Requirement') <> null))] 
--[re.name/]
 Modellpfad : [re.qualifiedName/]
Id : [re.getValue(re.getAppliedStereotype('SysML::Requirements::Requirement'), 'id')/]
Text : [re.getValue(re.getAppliedStereotype('SysML::Requirements::Requirement'), 'text')/]
[/for]

1 个答案:

答案 0 :(得分:0)

好吧,如果您的模型元素都没有适用的构造型,那么您将找不到任何类或对象。因此,当您尝试打印具有已应用构造型的所有元素的已应用构造型而没有首先确保列表本身不为null时,您将失败。