[ATL] UML stereotype problem [message #83132] |
Sat, 31 May 2008 05:54  |
Eclipse User |
|
|
|
Originally posted by: hr_mi.live.cn
Hi everyone,
I make a helper to check the stereotype of a class ,the code is as
following :
--------------------------------------------------------
helper context UML!Class def: hasStereotype(stereotype : String) : Boolean =
self.getAppliedStereotypes()->exists(e|e.name=stereotype);
-------------------------------------------------------
My code is like this :
--------------------------
module uml2bpel; -- Module Template
create OUT : BPEL from IN : UML;
rule toProcess{
from
u : UML!"uml::Activity",c : UML!"uml::Class"
(u.oclIsTypeOf(UML!"uml::Activity") and
c.oclIsTypeOf(UML!"uml::Class") and c.name='onlinesale' and
c.hasStereotype('Process')
)
to
p : BPEL!Process(......
)
}
-------------------------------------
I select the UML metamodel by URI:http://www.eclipse.org/uml2/2.0.0/UML
but it dosen't work correctly.
Anyone can help me ??
Thanks very much.
Best for wishes!
|
|
|
|
Re: [ATL] UML stereotype problem [message #83179 is a reply to message #83147] |
Sat, 31 May 2008 07:31   |
Eclipse User |
|
|
|
Originally posted by: hr_mi.live.cn
urs zeidler 写道:
> unique schrieb:
>> Hi everyone,
>> I make a helper to check the stereotype of a class ,the code is as
>> following :
>> --------------------------------------------------------
>> helper context UML!Class def: hasStereotype(stereotype : String) : Boolean =
>> self.getAppliedStereotypes()->exists(e|e.name=stereotype);
>>
>> -------------------------------------------------------
>>
> Looks ok, but "UML!Class" means this context works only for UML!Class,
> you want element.("UML!Element")
> Because in the matching phase your guard "c.hasStereotype('Process')"
> will be testes with all elements and not all of them are "UML!Class".
> If you stick to your helper your guard should be :
> "
> (
> if u.oclIsTypeOf(UML!"uml::Activity") and
> c.oclIsTypeOf(UML!"uml::Class") then c.name='onlinesale' and
> c.hasStereotype('Process')
> else
> false
> endif
>> )
> "
>>
>> My code is like this :
>>
>> --------------------------
>> module uml2bpel; -- Module Template
>> create OUT : BPEL from IN : UML;
>>
>> rule toProcess{
>> from
>> u : UML!"uml::Activity",c : UML!"uml::Class"
>> (u.oclIsTypeOf(UML!"uml::Activity") and
>> c.oclIsTypeOf(UML!"uml::Class") and c.name='onlinesale' and
>> c.hasStereotype('Process')
>> )
>> to
>> p : BPEL!Process(......
>> )
>> }
>>
>> -------------------------------------
>>
>> I select the UML metamodel by URI:http://www.eclipse.org/uml2/2.0.0/UML
>> but it dosen't work correctly.
>>
>> Anyone can help me ??
>>
>> Thanks very much.
>> Best for wishes!
Hi urs zeidler,
Thanks for your help.
I acted as you advise, but it didn't work correctly. I mean that I
have a class named "onlinesale" and it has a stereotype named "Process"
in fact, but when I run my code , it didn't test it successfully .
what would the problem be ?
Thanks !
|
|
|
Re: [ATL] UML stereotype problem [message #83192 is a reply to message #83179] |
Sat, 31 May 2008 08:32   |
Eclipse User |
|
|
|
Originally posted by: me.urszeidler.de
unique schrieb:
> urs zeidler 写道:
>> unique schrieb:
>>> Hi everyone,
>>> I make a helper to check the stereotype of a class ,the code is as
>>> following :
>>> --------------------------------------------------------
>>> helper context UML!Class def: hasStereotype(stereotype : String) : Boolean =
>>> self.getAppliedStereotypes()->exists(e|e.name=stereotype);
>>>
>>> -------------------------------------------------------
>>>
>> Looks ok, but "UML!Class" means this context works only for UML!Class,
>> you want element.("UML!Element")
>> Because in the matching phase your guard "c.hasStereotype('Process')"
>> will be testes with all elements and not all of them are "UML!Class".
>> If you stick to your helper your guard should be :
>> "
>> (
>> if u.oclIsTypeOf(UML!"uml::Activity") and
>> c.oclIsTypeOf(UML!"uml::Class") then c.name='onlinesale' and
>> c.hasStereotype('Process')
>> else
>> false
>> endif
>>> )
>> "
>>> My code is like this :
>>>
>>> --------------------------
>>> module uml2bpel; -- Module Template
>>> create OUT : BPEL from IN : UML;
>>>
>>> rule toProcess{
>>> from
>>> u : UML!"uml::Activity",c : UML!"uml::Class"
>>> (u.oclIsTypeOf(UML!"uml::Activity") and
>>> c.oclIsTypeOf(UML!"uml::Class") and c.name='onlinesale' and
>>> c.hasStereotype('Process')
>>> )
>>> to
>>> p : BPEL!Process(......
>>> )
>>> }
>>>
>>> -------------------------------------
>>>
>>> I select the UML metamodel by URI:http://www.eclipse.org/uml2/2.0.0/UML
>>> but it dosen't work correctly.
>>>
>>> Anyone can help me ??
>>>
>>> Thanks very much.
>>> Best for wishes!
>
> Hi urs zeidler,
> Thanks for your help.
> I acted as you advise, but it didn't work correctly. I mean that I
> have a class named "onlinesale" and it has a stereotype named "Process"
> in fact, but when I run my code , it didn't test it successfully .
>
> what would the problem be ?
>
> Thanks !
try this helper
helper def : isStereotypeApplied (invar : UML2!"uml::Element", name
:String) : Boolean =
if invar.oclIsUndefined() then
false
else
not invar.getAppliedStereotypes() -> select(s| s.name=name)-> isEmpty()
endif
;
greetings,urs.
|
|
|
|
|
|
|
Re: [ATL] UML stereotype problem [message #83427 is a reply to message #83261] |
Mon, 02 June 2008 08:08  |
Eclipse User |
|
|
|
Originally posted by: hr_mi.live.cn
urs zeidler 写道:
>> rule toProcess{
>> from
>> u : UML!"uml::Activity", c :
>> UML!"uml::Class"(u.oclIsTypeOf(UML!"uml::Activity") and
>> if c.oclIsTypeOf(UML!"uml::Class") and c.name='onlinesale'
>> then c.isStereotypeApplied(c,'Process')
>> else false
>> endif
>> )
>> to
>> p :BPEL!"model::Process"(...)
>>
>> I annex my *.atl file , the meta-models and models ,would you please
>> check it ??
>
> This helper has no context, so you need to call it with
> thisModule.isStereotypeApplied(c,'Process').
>
> greetings, urs.
>
Hi urs ,
I really thank you for you help . I acted it , but it didn't test the
calss what I wanted to get. Actually there is a class named 'onlinesale'
having stereotype named "Process",but the result is empty , I cannot
find where the problem is .
Best regards!
|
|
|
Powered by
FUDForum. Page generated in 0.06815 seconds