Hello,
up to now I used Magic Draw as a modeling tool. Due to restrictions
concerning the number of actions that can be created (with the community
edition) I switched to Topcased. I started creating my profile with Topcased
and after that I created my first models. The first tests were ok, but then
I got an error message from oAW (I'll show it with a small example after
describing the problem). After some time of investigation I found out that
the usage of an enumeration seems to be the problem. As soon as I add an
enumeration with an enumeration literal to my model, oAW reports an
EvaluationException. After deleting the enumeration literal everything works
fine.

I created a small template and a small workflow to ensure that it was not a
coincidence. Here is my simple workflow:

<?xml version="1.0" encoding="ISO-8859-1"?>
<workflow>      
        <bean class="oaw.uml2.Setup" standardUML2Setup="true"/> 
        
        <bean id="mm_uml2" class="org.openarchitectureware.uml2.UML2MetaModel" 
/>
        
        <bean id="mm_test"
class="org.openarchitectureware.uml2.profile.ProfileMetaModel">
                <profile value="test/TestProfile.profile.uml" />
        </bean> 
        
        <component class="oaw.emf.XmiReader">
        <modelFile value="test/EnumTest.uml"/>
        <outputSlot value="model"/>
        </component>
        
        <component id="enum_test_generator" class="oaw.xpand2.Generator"
skipOnErrors="true">
                <metaModel idRef="mm_uml2" />
                <metaModel idRef="mm_test" />
                
        <expand value="test::EnumTest::root FOR model"/>
        <outlet path="src-gen" overwrite="true" />
        </component>
</workflow>

And here the corresponding template (its not a meaningful template, but it
is sufficient for demonstration):

«DEFINE root FOR uml::Model»
«FILE "testoutput.txt"» 
«FOREACH this.eAllContents.typeSelect(uml::Class) AS c»
class «c.name»  
«ENDFOREACH» 

«FOREACH this.eAllContents.typeSelect(TestProfile::Stereotype1) AS c»
test «c.name»
«ENDFOREACH»

«FOREACH this.eAllContents.typeSelect(uml::Enumeration) AS e»
enum «e.name»
«ENDFOREACH»
«ENDFILE»
«ENDDEFINE»

TestProfile is my Profile that simply contains one stereotype Stereotype1
(with baseclass uml::Class).

When I execute the workflow using a model without enumerations everything
works fine. The file contains the expected output. Adding an enumeration
does not change everything (now the enumeration is shown in the output as
well). But adding an enumeration literal causes problems. Here the output
after adding one enumeration literal to the enumeration:

2312 INFO  CompositeComponent - Generator(enum_test_generator): generating
'test::EnumTest::root FOR model' => src-gen
2547 ERROR AbstractExpressionsUsingWorkflowComponent - Error in Component
enum_test_generator of type org.openarchitectureware.xpand2.Generator: 
        EvaluationException : null
        test::EnumTest.xpt[65,40] on line 3
'this.eAllContents.typeSelect(uml::Class)'
        [23,37] on line 1 'EXPAND test::EnumTest::root FOR model'               
      

2547 ERROR WorkflowRunner     - Workflow interrupted. Reason:
EvaluationException : null
        test::EnumTest.xpt[65,40] on line 3
'this.eAllContents.typeSelect(uml::Class)'
        [23,37] on line 1 'EXPAND test::EnumTest::root FOR model'

2547 ERROR WorkflowRunner     - ERROR in Component enum_test_generator of
type org.openarchitectureware.xpand2.Generator
        null [this.eAllContents.typeSelect(uml::Class)]  in workflow:
Generator(enum_test_generator): generating 'test::EnumTest::root FOR model'
=> src-gen
2547 ERROR WorkflowRunner     - ERROR in Component enum_test_generator of
type org.openarchitectureware.xpand2.Generator
        null [org.openarchitectureware.xpand2.ast.foreachstatem...@1dec1dd]  in
workflow: Generator(enum_test_generator): generating 'test::EnumTest::root
FOR model' => src-gen
2547 ERROR WorkflowRunner     - ERROR in Component enum_test_generator of
type org.openarchitectureware.xpand2.Generator
        null [org.openarchitectureware.xpand2.ast.filestatem...@189c036]  in
workflow: Generator(enum_test_generator): generating 'test::EnumTest::root
FOR model' => src-gen
2547 ERROR WorkflowRunner     - ERROR in Component enum_test_generator of
type org.openarchitectureware.xpand2.Generator
        null [root : uml::Model]  in workflow: Generator(enum_test_generator):
generating 'test::EnumTest::root FOR model' => src-gen
2547 ERROR WorkflowRunner     - ERROR in Component enum_test_generator of
type org.openarchitectureware.xpand2.Generator
        null [EXPAND test::EnumTest::root FOR model]  in workflow:
Generator(enum_test_generator): generating 'test::EnumTest::root FOR model'
=> src-gen

After that I deleted the profile and created a model with some classes
(without using any profile). Moreover I adjusted the workflow and template.
After these changes I can execute the workflow with a model containg
enumerations and enumeration literals without any errors.

Is there any explanation for this behavior? I hope I simply did something
wrong. 

By the way, I'm using oAW 4.3.1 and Topcased 2.5. 

Thank you in advance.

Regards,
Klaus
-- 
View this message in context: 
http://www.nabble.com/Problems-using-Topcased-in-conjunction-with-enumeration-and-own-profile-tp24613148s17564p24613148.html
Sent from the Fornax-Platform mailing list archive at Nabble.com.


------------------------------------------------------------------------------
_______________________________________________
Fornax-developer mailing list
Fornax-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fornax-developer

Reply via email to