Не удалось получить требование в Acceleo

Не удается получить Требование от модели. Я пробовал getAppliedStereotypes(), но он все еще не работает. Код выглядит следующим образом:

 [comment encoding = UTF-8 /]
[module maintest('http://www.eclipse.org/papyrus/sysml/1.4/SysML',
 'http://www.eclipse.org/papyrus/sysml/1.4/SysML/Activities',
'http://www.eclipse.org/papyrus/sysml/1.4/SysML/Requirements', 
'http://www.eclipse.org/uml2/5.0.0/UML')/]

[template public maintestClass(aPackage : Package)]
 [comment @main /]
[file ((aPackage.name+'.m'), false, 'UTF-8')]
0000
 [for (r : Requirements::Requirement| aPackage.packagedElement->filter(Requirements::Requirement))]
11111   
 [/for]
[/file]
[/template]

Кроме того, с этой страницы http://techqa.info/programming/question/35093700/cannot-access-sysml-stereotypes-and-their-properties-in-acceleo, я могу получить требование, просто сгенерировав (re: Требования:: Требование) но он не может удовлетворить потребности, так как мне нужно поместить некоторые значения узлов в модель в документ, но этот шаблон не может получить информацию о модели. Или, может быть, какие-либо решения о получении информации об узлах в модели, которые получают только требование?


person lucia    schedule 25.07.2017    source источник


Ответы (1)


У меня была очень похожая проблема, и для ее решения я задал этот вопрос здесь, на который, как мне кажется, нашел ответ. Я просматриваю классы моей модели SysML и решаю, являются ли они блоками или требованиями. В зависимости от этого я вызываю разные импортированные шаблоны:

[comment encoding = UTF-8 /]
[module main('http://www.eclipse.org/papyrus/sysml/1.4/SysML', 'http://www.eclipse.org/uml2/5.0.0/UML')]

[import MULTIC_TOOLING_GenSystemC::files::modRequirement /]
[import MULTIC_TOOLING_GenSystemC::files::modBlock /]

[template public mainTemplate(aClass : Class)]

    [comment @main/]
    [if (aClass.getAppliedStereotype('SysML::Blocks::Block')->notEmpty())]
        [let aBlock : Block = aClass.getStereotypeApplication(aClass.getAppliedStereotype('SysML::Blocks::Block'))]
        [tempBlock(aBlock)/]
        [/let]
    [/if]
    [if (aClass.getAppliedStereotype('SysML::Requirements::Requirement')->notEmpty())]
        [let aRequirement : Requirement = aClass.getStereotypeApplication(aClass.getAppliedStereotype('SysML::Requirements::Requirement'))]
            [tempRequirement(aRequirement)/]
        [/let]
    [/if]

[/template]
person pipsoft    schedule 31.01.2018