2013-12-25 6 views
0

Я новичок в Акчелео. Я использую IBM RSA (8.5.1). Я создал собственный профиль UML (с несколькими стереотипами, расширяющими метаклассы по умолчанию, это довольно обычное явление). Профиль UML - это .epx-файл. Кроме того, я создал простую модель, на которой я применил свой пользовательский профиль UML и «пометил» несколько классов моими обычными стереотипами.Acceleo: используя пользовательский профиль 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 (в циклах «для» и т. Д.)?

Любая помощь приветствуется. Заранее спасибо. Marcell

ответ

0

Я не думаю, что вы можете.

Насколько я знаю, вы должны использовать службы для извлечения данных профиля из ваших элементов UML (стереотипы и т. Д.), Но метамодель остается UML, и это не может быть изменено для Acceleo.

Вы можете перебирать элементы UML в списках элементов, фильтрованных в соответствии с их информацией о стереотипах.

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, эта модель (.uml file) уже имеет информацию о применяемом профиле. Это можно проверить, проверив файл .uml. Кроме того, насколько я понимаю, файлы * .profile.uml имеют, чтобы быть в той же папке, что и файл модели .uml.

Привет из Парагвая!