Mehr States im xmi parser beruecksichtigt.

git-svn-id: https://projects.brucker.ch/su4sml/svn/infsec-import/trunk/src/su4sml@3044 3260e6d1-4efc-4170-b0a7-36055960796d
This commit is contained in:
Achim D. Brucker 2005-09-09 14:58:20 +00:00
parent 76390fcbee
commit 552f62e765
5 changed files with 707 additions and 36 deletions

239
examples/test1.xmi Normal file
View File

@ -0,0 +1,239 @@
<?xml version = '1.0' encoding = 'UTF-8' ?>
<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' xmlns:UML2 = 'org.omg.xmi.namespace.UML2'
timestamp = 'Wed Sep 07 14:35:37 MEST 2005'>
<XMI.header>
<XMI.documentation>
<XMI.exporter>Netbeans XMI Writer</XMI.exporter>
<XMI.exporterVersion>1.0</XMI.exporterVersion>
</XMI.documentation>
</XMI.header>
<XMI.content>
<UML:Model xmi.id = 'I6fb16dm10626316d7cmm7f55' name = 'model 1' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:UseCase xmi.id = 'I6fb16dm10626316d7cmm7f51' name = 'Use_Case_1' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
</UML:Namespace.ownedElement>
</UML:Model>
<UML:ActivityGraph xmi.id = 'I6fb16dm10626316d7cmm7f50' isSpecification = 'false'>
<UML:StateMachine.context>
<UML:UseCase xmi.idref = 'I6fb16dm10626316d7cmm7f51'/>
</UML:StateMachine.context>
<UML:StateMachine.top>
<UML:CompositeState xmi.id = 'I6fb16dm10626316d7cmm7f4f' name = '' isSpecification = 'false'
isConcurrent = 'false'>
<UML:CompositeState.subvertex>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f4a' name = 'S1' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ece'/>
</UML:StateVertex.outgoing>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f49' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f4b' language = 'java'
body = 'Murks'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:Pseudostate xmi.id = 'I6fb16dm10626316d7cmm7f42' name = 'Forker' visibility = 'public'
isSpecification = 'false' kind = 'fork'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f21'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7efc'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f3d'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ece'/>
</UML:StateVertex.incoming>
</UML:Pseudostate>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f29' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e9a'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f21'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f28' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f2a' language = 'java'
body = 'M2'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f0d' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f0c' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f0e' language = 'java'
body = 'M3'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f04' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e74'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f03' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f05' language = 'java'
body = 'Doit'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7ee8' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7ee7' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7ee9' language = 'java'
body = 'Action_State_5'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7edf' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e87'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7efc'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7ede' name = 'Hallo' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7ee0' language = 'java'
body = 'Moagstme'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7ed6' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f3d'/>
</UML:StateVertex.outgoing>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7ed5' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7ed7' language = 'java'
body = 'Action_State_7'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:Pseudostate xmi.id = 'I6fb16dm10626316d7cmm7ebb' name = 'Joiner' visibility = 'public'
isSpecification = 'false' kind = 'join'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e74'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ead'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e9a'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e87'/>
</UML:StateVertex.incoming>
</UML:Pseudostate>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7eb5' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ead'/>
</UML:StateVertex.outgoing>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7eb4' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7eb6' language = 'java'
body = 'Action_State_8'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
</UML:CompositeState.subvertex>
</UML:CompositeState>
</UML:StateMachine.top>
<UML:StateMachine.transitions>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7f3d' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7ed6'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7f21' isSpecification = 'false'>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f29'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7efc' isSpecification = 'false'>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7edf'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7ece' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f4a'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7ead' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7eb5'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7e9a' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f29'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7e87' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7edf'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7e74' isSpecification = 'false'>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f04'/>
</UML:Transition.target>
</UML:Transition>
</UML:StateMachine.transitions>
</UML:ActivityGraph>
</XMI.content>
</XMI>

412
examples/test2.xmi Normal file
View File

@ -0,0 +1,412 @@
<?xml version = '1.0' encoding = 'UTF-8' ?>
<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' xmlns:UML2 = 'org.omg.xmi.namespace.UML2'
timestamp = 'Fri Sep 09 15:27:30 MEST 2005'>
<XMI.header>
<XMI.documentation>
<XMI.exporter>Netbeans XMI Writer</XMI.exporter>
<XMI.exporterVersion>1.0</XMI.exporterVersion>
</XMI.documentation>
</XMI.header>
<XMI.content>
<UML:Model xmi.id = 'I6fb16dm10626316d7cmm7f55' name = 'model 1' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:UseCase xmi.id = 'I6fb16dm10626316d7cmm7f51' name = 'Use_Case_1' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:Class xmi.id = 'I1747815m1063ac9d16dmm7ddc' name = 'ArrayIndexOutOfBoundsException'
visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
isAbstract = 'false' isActive = 'false'/>
<UML:Class xmi.id = 'I1747815m1063ac9d16dmm7dd4' name = '' visibility = 'public'
isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'
isActive = 'false'/>
</UML:Namespace.ownedElement>
</UML:UseCase>
<UML:Stereotype xmi.id = 'I1747815m1063ac9d16dmm7e99' name = 'CDL.perform'
visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
isAbstract = 'false'>
<UML:Stereotype.baseClass>ActionState</UML:Stereotype.baseClass>
</UML:Stereotype>
<UML:TagDefinition xmi.id = 'I1747815m1063ac9d16dmm7e8e' name = 'qweretyu'
isSpecification = 'false'>
<UML:TagDefinition.multiplicity>
<UML:Multiplicity xmi.id = 'I1747815m1063ac9d16dmm7e8d'>
<UML:Multiplicity.range>
<UML:MultiplicityRange xmi.id = 'I1747815m1063ac9d16dmm7e8c' lower = '1'
upper = '1'/>
</UML:Multiplicity.range>
</UML:Multiplicity>
</UML:TagDefinition.multiplicity>
</UML:TagDefinition>
<UML:TagDefinition xmi.id = 'I1747815m1063ac9d16dmm7e8a' name = 'asd' isSpecification = 'false'>
<UML:TagDefinition.multiplicity>
<UML:Multiplicity xmi.id = 'I1747815m1063ac9d16dmm7e89'>
<UML:Multiplicity.range>
<UML:MultiplicityRange xmi.id = 'I1747815m1063ac9d16dmm7e88' lower = '1'
upper = '1'/>
</UML:Multiplicity.range>
</UML:Multiplicity>
</UML:TagDefinition.multiplicity>
</UML:TagDefinition>
<UML:Stereotype xmi.id = 'I1747815m1063ac9d16dmm7e2a' name = 'invariant'
isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass>
</UML:Stereotype>
<UML:Package xmi.id = 'I1747815m1063ac9d16dmm7dcb' name = 'java' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:Package xmi.id = 'I1747815m1063ac9d16dmm7dcc' name = 'lang' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:DataType xmi.id = 'I1747815m1063ac9d16dmm7dcd' name = 'boolean' isSpecification = 'false'
isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:ClassifierInState xmi.id = 'I1747815m1063ac9d16dmm7ddb' name = 'ClassifierInState'
isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
<UML:ClassifierInState.type>
<UML:DataType xmi.idref = 'I1747815m1063ac9d16dmm7dcd'/>
</UML:ClassifierInState.type>
</UML:ClassifierInState>
</UML:Namespace.ownedElement>
</UML:DataType>
</UML:Namespace.ownedElement>
</UML:Package>
</UML:Namespace.ownedElement>
</UML:Package>
</UML:Namespace.ownedElement>
</UML:Model>
<UML:ActivityGraph xmi.id = 'I6fb16dm10626316d7cmm7f50' isSpecification = 'false'>
<UML:StateMachine.context>
<UML:UseCase xmi.idref = 'I6fb16dm10626316d7cmm7f51'/>
</UML:StateMachine.context>
<UML:StateMachine.top>
<UML:CompositeState xmi.id = 'I6fb16dm10626316d7cmm7f4f' name = '' isSpecification = 'false'
isConcurrent = 'false'>
<UML:CompositeState.subvertex>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f4a' name = 'S1' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ece'/>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e02'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e5b'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f49' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f4b' language = 'java'
body = 'Murks'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:Pseudostate xmi.id = 'I6fb16dm10626316d7cmm7f42' name = 'Forker' visibility = 'public'
isSpecification = 'false' kind = 'fork'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f21'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7efc'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f3d'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ece'/>
</UML:StateVertex.incoming>
</UML:Pseudostate>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f29' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e9a'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f21'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f28' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f2a' language = 'java'
body = 'M2'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f0d' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f0c' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f0e' language = 'java'
body = 'M3'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7f04' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e74'/>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e6e'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7f03' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7f05' language = 'java'
body = 'Doit'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7ee8' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7ee7' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7ee9' language = 'java'
body = 'Action_State_5'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7edf' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:ModelElement.stereotype>
<UML:Stereotype xmi.idref = 'I1747815m1063ac9d16dmm7e99'/>
</UML:ModelElement.stereotype>
<UML:ModelElement.taggedValue>
<UML:TaggedValue xmi.id = 'I1747815m1063ac9d16dmm7e8b' isSpecification = 'false'>
<UML:TaggedValue.dataValue>true</UML:TaggedValue.dataValue>
<UML:TaggedValue.type>
<UML:TagDefinition xmi.idref = 'I1747815m1063ac9d16dmm7e8e'/>
</UML:TaggedValue.type>
</UML:TaggedValue>
<UML:TaggedValue xmi.id = 'I1747815m1063ac9d16dmm7e87' isSpecification = 'false'>
<UML:TaggedValue.dataValue>5</UML:TaggedValue.dataValue>
<UML:TaggedValue.type>
<UML:TagDefinition xmi.idref = 'I1747815m1063ac9d16dmm7e8a'/>
</UML:TaggedValue.type>
</UML:TaggedValue>
</UML:ModelElement.taggedValue>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e87'/>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e81'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7efc'/>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7def'/>
</UML:StateVertex.incoming>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7ede' name = 'Hallo' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7ee0' language = 'java'
body = 'Moagstme'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7ed6' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7f3d'/>
</UML:StateVertex.outgoing>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7ed5' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7ed7' language = 'java'
body = 'Action_State_7'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:Pseudostate xmi.id = 'I6fb16dm10626316d7cmm7ebb' name = 'Joiner' visibility = 'public'
isSpecification = 'false' kind = 'join'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e74'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ead'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e9a'/>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7e87'/>
</UML:StateVertex.incoming>
</UML:Pseudostate>
<UML:ActionState xmi.id = 'I6fb16dm10626316d7cmm7eb5' name = '' visibility = 'public'
isSpecification = 'false' isDynamic = 'false'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I6fb16dm10626316d7cmm7ead'/>
</UML:StateVertex.outgoing>
<UML:State.entry>
<UML:CallAction xmi.id = 'I6fb16dm10626316d7cmm7eb4' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I6fb16dm10626316d7cmm7eb6' language = 'java'
body = 'Action_State_8'/>
</UML:Action.script>
</UML:CallAction>
</UML:State.entry>
</UML:ActionState>
<UML:Pseudostate xmi.id = 'I1747815m1063ac9d16dmm7e86' name = 'branch' visibility = 'public'
isSpecification = 'false' kind = 'junction'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e6e'/>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e5b'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e81'/>
</UML:StateVertex.incoming>
</UML:Pseudostate>
<UML:ObjectFlowState xmi.id = 'I1747815m1063ac9d16dmm7e29' name = 'First Objeect Flow Object'
visibility = 'public' isSpecification = 'false' isSynch = 'true'>
<UML:StateVertex.outgoing>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7def'/>
</UML:StateVertex.outgoing>
<UML:StateVertex.incoming>
<UML:Transition xmi.idref = 'I1747815m1063ac9d16dmm7e02'/>
</UML:StateVertex.incoming>
<UML:ObjectFlowState.type>
<UML:ClassifierInState xmi.idref = 'I1747815m1063ac9d16dmm7ddb'/>
</UML:ObjectFlowState.type>
</UML:ObjectFlowState>
</UML:CompositeState.subvertex>
</UML:CompositeState>
</UML:StateMachine.top>
<UML:StateMachine.transitions>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7f3d' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7ed6'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7f21' isSpecification = 'false'>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f29'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7efc' isSpecification = 'false'>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7edf'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7ece' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f4a'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7f42'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7ead' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7eb5'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7e9a' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f29'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7e87' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7edf'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I6fb16dm10626316d7cmm7e74' isSpecification = 'false'>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I6fb16dm10626316d7cmm7ebb'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f04'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I1747815m1063ac9d16dmm7e81' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7edf'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:Pseudostate xmi.idref = 'I1747815m1063ac9d16dmm7e86'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I1747815m1063ac9d16dmm7e6e' isSpecification = 'false'>
<UML:Transition.guard>
<UML:Guard xmi.id = 'I1747815m1063ac9d16dmm7e48' name = '' visibility = 'public'
isSpecification = 'false'>
<UML:Guard.expression>
<UML:BooleanExpression xmi.id = 'I1747815m1063ac9d16dmm7e47' language = 'java'
body = 'blubberguard * 4^$%^%$^'/>
</UML:Guard.expression>
</UML:Guard>
</UML:Transition.guard>
<UML:Transition.effect>
<UML:CallAction xmi.id = 'I1747815m1063ac9d16dmm7e3e' name = '' isSpecification = 'false'
isAsynchronous = 'false'>
<UML:Action.script>
<UML:ActionExpression xmi.id = 'I1747815m1063ac9d16dmm7e3d' language = 'java'
body = 'fghfgh 234234'/>
</UML:Action.script>
</UML:CallAction>
</UML:Transition.effect>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I1747815m1063ac9d16dmm7e86'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f04'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I1747815m1063ac9d16dmm7e5b' isSpecification = 'false'>
<UML:Transition.guard>
<UML:Guard xmi.id = 'I1747815m1063ac9d16dmm7e36' name = '' visibility = 'public'
isSpecification = 'false'>
<UML:Guard.expression>
<UML:BooleanExpression xmi.id = 'I1747815m1063ac9d16dmm7e35' language = 'java'
body = 'dfgdfgdf 234'/>
</UML:Guard.expression>
</UML:Guard>
</UML:Transition.guard>
<UML:Transition.source>
<UML:Pseudostate xmi.idref = 'I1747815m1063ac9d16dmm7e86'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f4a'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I1747815m1063ac9d16dmm7e02' isSpecification = 'false'>
<UML:Transition.source>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7f4a'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ObjectFlowState xmi.idref = 'I1747815m1063ac9d16dmm7e29'/>
</UML:Transition.target>
</UML:Transition>
<UML:Transition xmi.id = 'I1747815m1063ac9d16dmm7def' isSpecification = 'false'>
<UML:Transition.source>
<UML:ObjectFlowState xmi.idref = 'I1747815m1063ac9d16dmm7e29'/>
</UML:Transition.source>
<UML:Transition.target>
<UML:ActionState xmi.idref = 'I6fb16dm10626316d7cmm7edf'/>
</UML:Transition.target>
</UML:Transition>
</UML:StateMachine.transitions>
</UML:ActivityGraph>
</XMI.content>
</XMI>

View File

@ -41,6 +41,7 @@ datatype ActivityGraph = mk_ActivityGraph of
contextxmiid : string,
is_specification : bool,
top : StateVertex,
partition : (string * StateVertex_Id list) list,
transitions : Transition list}
end

View File

@ -99,7 +99,7 @@ datatype StateVertex =
outgoing : Transition_Id list,
incoming : Transition_Id list,
subvertex : StateVertex list,
submachine : StateMachine ,
submachine : StateMachine,
isDynamic : bool}
| State_SimpleState
of {xmiid : string,
@ -126,13 +126,13 @@ datatype StateVertex =
name : string,
is_specification : bool,
entry : Action option,
exit : Action option,
exit : Action option,
doActivity : Action option,
outgoing : Transition_Id list,
incoming : Transition_Id list,
isSynch : bool,
parameter : Parameter list,
types : Rep_OclType.Path list (* Classifier_Id *)}
type_ : Rep_OclType.Path option}
| State_FinalState
of {xmiid : string,
name : string,

View File

@ -592,6 +592,12 @@ fun mkState tree =
val isSpecification = getBoolAtt "isSpecification" atts
fun getTid x = (getXmiIdref o XmlTree.attributes_of) x
handle _ => "XXX"
fun getTrans str = List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter str)
val getIncoming = getTrans "UML:StateVertex.incoming"
val getOutgoing = getTrans "UML:StateVertex.outgoing"
val getSubvertex= (map mkState) o XmlTree.children_of o
(XmlTree.find "UML:CompositeState.subvertex")
(*
val visibility = getVisibility atts
*)
@ -600,27 +606,28 @@ fun mkState tree =
XMI.State_CompositState{
xmiid=xmiid,name=name,is_specification=isSpecification,
isConcurrent = getBoolAtt "isConcurrent" atts,
outgoing = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.outgoing"))
(trees),
incoming = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.incoming"))
(trees),
subvertex = ((map mkState) o XmlTree.children_of o
(XmlTree.find "UML:CompositeState.subvertex"))
(trees),
outgoing = getOutgoing trees, incoming = getIncoming trees,
subvertex = getSubvertex trees,
entry = NONE,
exit = NONE,
doActivity = NONE }
|"UML:SubactivityState" =>
XMI.CompositState_SubactivityState{
xmiid=xmiid,name=name,is_specification=isSpecification,
isConcurrent = getBoolAtt "isConcurrent" atts,
isDynamic = getBoolAtt "isDynamic" atts,
outgoing = getOutgoing trees, incoming = getIncoming trees,
subvertex = getSubvertex trees,
entry = NONE,
exit = NONE,
doActivity = NONE,
submachine = mkStateMachine (hd trees)
(* HACK ! So far, no UML tool supports this. Parser has to be adapted
of we find a first example ... *)}
|"UML:ActionState" =>
XMI.SimpleState_ActionState {
xmiid=xmiid,name=name,is_specification=isSpecification,
outgoing = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.outgoing"))
(trees),
incoming = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.incoming"))
(trees),
outgoing = getOutgoing trees, incoming = getIncoming trees,
isDynamic = getBoolAtt "isDynamic" atts,
entry = NONE,
exit = NONE,
@ -631,32 +638,43 @@ fun mkState tree =
entry = NONE,
exit = NONE,
doActivity = NONE,
kind = getPseudoStateKindAttr atts,
outgoing = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.outgoing"))
(trees),
incoming = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.incoming"))
(trees)}
kind = getPseudoStateKindAttr atts,
outgoing = getOutgoing trees,incoming = getIncoming trees}
|"UML:SimpleState" =>
XMI.State_SimpleState{
xmiid=xmiid,name=name,is_specification=isSpecification,
entry = NONE,
exit = NONE,
doActivity = NONE,
outgoing = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.outgoing"))
(trees),
incoming = (List.concat o (map ((map getTid) o XmlTree.children_of)) o
(XmlTree.filter "UML:StateVertex.incoming"))
(trees)}
| _ => raise IllFormed ("in mkState: This should not happen.")
outgoing = getOutgoing trees, incoming = getIncoming trees}
|"UML:ObjectflowState" =>
XMI.SimpleState_ObjectflowState{
xmiid=xmiid,name=name,is_specification=isSpecification,
entry = NONE,
exit = NONE,
doActivity = NONE,
outgoing = getOutgoing trees, incoming = getIncoming trees,
isSynch = getBoolAtt "isSynch" atts,
parameter = nil,
type_ = NONE}
|"UML:FinalState" =>
XMI.State_FinalState{
xmiid=xmiid,name=name,is_specification=isSpecification,
entry = NONE,
exit = NONE,
doActivity = NONE,
outgoing = getOutgoing trees,incoming = getIncoming trees}
|"UML:SyncState" =>
XMI.SyncState{
xmiid=xmiid,name=name,is_specification=isSpecification,
bound = 0,
outgoing = getOutgoing trees,incoming = getIncoming trees}
| _ => raise IllFormed ("in mkState: Unknown State Vertex.")
end
fun mkStateMachine tree =
and mkStateMachine tree =
let fun f atts trees = XMI.mk_StateMachine
{is_specification = getBoolAtt "isSpecification" atts,
xmiid = getXmiId atts,
@ -688,7 +706,8 @@ fun mkActivityGraph tree =
(trees),
transitions = ((map mkTransition) o XmlTree.children_of o
(XmlTree.find "UML:StateMachine.transitions"))
(trees)}
(trees),
partition = nil}
in XmlTree.apply_on "UML:ActivityGraph" f tree
end;