Add fork and join state support for uml model

- Also add creation of an anonymous transition
- Relates to #193
This commit is contained in:
Janne Valkealahti
2016-04-16 14:50:31 +01:00
parent 78391822a9
commit 7938086c46
5 changed files with 499 additions and 2 deletions

View File

@@ -53,6 +53,7 @@ import org.springframework.statemachine.config.model.TransitionsData;
import org.springframework.statemachine.guard.Guard;
import org.springframework.statemachine.state.PseudoStateKind;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
* Model parser which constructs states and transitions data out from
@@ -69,6 +70,8 @@ public class UmlModelParser {
private final Collection<EntryData<String, String>> entrys = new ArrayList<EntryData<String, String>>();
private final Collection<ExitData<String, String>> exits = new ArrayList<ExitData<String, String>>();
private final Map<String, LinkedList<ChoiceData<String, String>>> choices = new HashMap<String, LinkedList<ChoiceData<String,String>>>();
private final Map<String, List<String>> forks = new HashMap<String, List<String>>();
private final Map<String, List<String>> joins = new HashMap<String, List<String>>();
/**
* Instantiates a new uml model parser.
@@ -100,9 +103,10 @@ public class UmlModelParser {
handleRegion(region);
}
// LinkedList can be passed due to generics, need to copy
HashMap<String, List<ChoiceData<String, String>>> choicesCopy = new HashMap<String, List<ChoiceData<String,String>>>();
HashMap<String, List<ChoiceData<String, String>>> choicesCopy = new HashMap<String, List<ChoiceData<String, String>>>();
choicesCopy.putAll(choices);
return new DataHolder(new StatesData<>(stateDatas), new TransitionsData<String, String>(transitionDatas, choicesCopy, null, null, entrys, exits));
return new DataHolder(new StatesData<>(stateDatas),
new TransitionsData<String, String>(transitionDatas, choicesCopy, forks, joins, entrys, exits));
}
private void handleRegion(Region region) {
@@ -162,6 +166,14 @@ public class UmlModelParser {
StateData<String, String> cpStateData = new StateData<>(parent, regionId, state.getName(), false);
cpStateData.setPseudoStateKind(PseudoStateKind.CHOICE);
stateDatas.add(cpStateData);
} else if (state.getKind() == PseudostateKind.FORK_LITERAL) {
StateData<String, String> cpStateData = new StateData<>(parent, regionId, state.getName(), false);
cpStateData.setPseudoStateKind(PseudoStateKind.FORK);
stateDatas.add(cpStateData);
} else if (state.getKind() == PseudostateKind.JOIN_LITERAL) {
StateData<String, String> cpStateData = new StateData<>(parent, regionId, state.getName(), false);
cpStateData.setPseudoStateKind(PseudoStateKind.JOIN);
stateDatas.add(cpStateData);
}
}
}
@@ -200,6 +212,23 @@ public class UmlModelParser {
} else {
list.addFirst(new ChoiceData<String, String>(transition.getSource().getName(), transition.getTarget().getName(), guard));
}
} else if (((Pseudostate)transition.getSource()).getKind() == PseudostateKind.FORK_LITERAL) {
List<String> list = forks.get(transition.getSource().getName());
if (list == null) {
list = new ArrayList<String>();
forks.put(transition.getSource().getName(), list);
}
list.add(transition.getTarget().getName());
}
}
if (transition.getTarget() instanceof Pseudostate) {
if (((Pseudostate)transition.getTarget()).getKind() == PseudostateKind.JOIN_LITERAL) {
List<String> list = joins.get(transition.getTarget().getName());
if (list == null) {
list = new ArrayList<String>();
joins.put(transition.getTarget().getName(), list);
}
list.add(transition.getSource().getName());
}
}
@@ -215,9 +244,38 @@ public class UmlModelParser {
}
}
}
// create anonymous transition if needed
if (shouldCreateAnonymousTransition(transition)) {
transitionDatas.add(new TransitionData<String, String>(transition.getSource().getName(),
transition.getTarget().getName(), null));
}
}
}
private boolean shouldCreateAnonymousTransition(Transition transition) {
if (!transition.getTriggers().isEmpty()) {
return false;
}
if (!StringUtils.hasText(transition.getSource().getName())) {
return false;
}
if (!StringUtils.hasText(transition.getTarget().getName())) {
return false;
}
if (transition.getSource() instanceof Pseudostate) {
if (((Pseudostate)transition.getSource()).getKind() == PseudostateKind.FORK_LITERAL) {
return false;
}
}
if (transition.getTarget() instanceof Pseudostate) {
if (((Pseudostate)transition.getTarget()).getKind() == PseudostateKind.JOIN_LITERAL) {
return false;
}
}
return true;
}
private StateData<String, String> handleActions(StateData<String, String> stateData, State state) {
if (state.getEntry() instanceof Activity) {
String beanId = ((Activity)state.getEntry()).getName();

View File

@@ -296,6 +296,22 @@ public class UmlStateMachineModelFactoryTests extends AbstractUmlTests {
assertThat(stateMachine.getState().getIds(), containsInAnyOrder("S4"));
}
@Test
@SuppressWarnings("unchecked")
public void testSimpleForkJoin() {
context.register(Config7.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
stateMachine.start();
assertThat(stateMachine.getState().getIds(), containsInAnyOrder("SI"));
stateMachine.sendEvent("E1");
assertThat(stateMachine.getState().getIds(), containsInAnyOrder("S2", "S20", "S30"));
stateMachine.sendEvent("E2");
assertThat(stateMachine.getState().getIds(), containsInAnyOrder("S2", "S21", "S30"));
stateMachine.sendEvent("E3");
assertThat(stateMachine.getState().getIds(), containsInAnyOrder("SF"));
}
@Configuration
@EnableStateMachine
public static class Config2 extends StateMachineConfigurerAdapter<String, String> {
@@ -401,6 +417,24 @@ public class UmlStateMachineModelFactoryTests extends AbstractUmlTests {
}
}
@Configuration
@EnableStateMachine
public static class Config7 extends StateMachineConfigurerAdapter<String, String> {
@Override
public void configure(StateMachineModelConfigurer<String, String> model) throws Exception {
model
.withModel()
.factory(modelFactory());
}
@Bean
public StateMachineModelFactory<String, String> modelFactory() {
Resource model = new ClassPathResource("org/springframework/statemachine/uml/simple-forkjoin.uml");
return new UmlStateMachineModelFactory(model);
}
}
public static class LatchAction implements Action<String, String> {
CountDownLatch latch = new CountDownLatch(1);
@Override

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>

View File

@@ -0,0 +1,356 @@
<?xml version="1.0" encoding="UTF-8"?>
<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_CsJ_AAPIEeaXyaQL1WyV3A" type="PapyrusUMLStateMachineDiagram" name="StateMachine Diagram" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_CsJ_AQPIEeaXyaQL1WyV3A" type="2000">
<children xmi:type="notation:DecorationNode" xmi:id="_CsJ_AgPIEeaXyaQL1WyV3A" type="2001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsJ_AwPIEeaXyaQL1WyV3A" width="700" height="23"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_CsJ_BAPIEeaXyaQL1WyV3A" type="2002">
<children xmi:type="notation:Shape" xmi:id="_CsJ_BQPIEeaXyaQL1WyV3A" type="3000">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CsJ_BgPIEeaXyaQL1WyV3A" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CsJ_BwPIEeaXyaQL1WyV3A" key="RegionZoneKey" value=""/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_CsJ_CAPIEeaXyaQL1WyV3A" type="3002">
<children xmi:type="notation:Shape" xmi:id="_IPcocAPIEeaXyaQL1WyV3A" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_IPdPgAPIEeaXyaQL1WyV3A" type="8001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_IPdPgQPIEeaXyaQL1WyV3A" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_IPdPggPIEeaXyaQL1WyV3A" type="8002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_IPdPgwPIEeaXyaQL1WyV3A" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="simple-forkjoin.uml#_IPSQYAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPcocQPIEeaXyaQL1WyV3A" x="13" y="85"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Iy1pYAPIEeaXyaQL1WyV3A" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_Iy2QcAPIEeaXyaQL1WyV3A" type="6001"/>
<children xmi:type="notation:DecorationNode" xmi:id="_Iy2QcQPIEeaXyaQL1WyV3A" type="19003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Iy2QcgPIEeaXyaQL1WyV3A" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Iy2QcwPIEeaXyaQL1WyV3A" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Iy2QdAPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:State" href="simple-forkjoin.uml#_IyviwAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Iy1pYQPIEeaXyaQL1WyV3A" x="70" y="87"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_LFPJ0APIEeaXyaQL1WyV3A" type="5000">
<children xmi:type="notation:DecorationNode" xmi:id="_LFPJ0gPIEeaXyaQL1WyV3A" type="5001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_LFPJ0wPIEeaXyaQL1WyV3A" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_LFPJ1APIEeaXyaQL1WyV3A" type="5002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_LFPw4APIEeaXyaQL1WyV3A" x="25" y="-10"/>
</children>
<element xmi:type="uml:FinalState" href="simple-forkjoin.uml#_LFC8kAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LFPJ0QPIEeaXyaQL1WyV3A" x="630" y="127"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_YIMCwAPIEeaXyaQL1WyV3A" type="10000">
<children xmi:type="notation:DecorationNode" xmi:id="_YIMCwgPIEeaXyaQL1WyV3A" type="10001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_YIMCwwPIEeaXyaQL1WyV3A" y="-40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_YIMCxAPIEeaXyaQL1WyV3A" type="10002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_YIMCxQPIEeaXyaQL1WyV3A" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="simple-forkjoin.uml#_YIEuAAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_YIMCwQPIEeaXyaQL1WyV3A" x="150" y="127"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_a9e04APIEeaXyaQL1WyV3A" type="9000">
<children xmi:type="notation:DecorationNode" xmi:id="_a9e04gPIEeaXyaQL1WyV3A" type="9001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_a9e04wPIEeaXyaQL1WyV3A" y="-40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_a9e05APIEeaXyaQL1WyV3A" type="9002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_a9fb8APIEeaXyaQL1WyV3A" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="simple-forkjoin.uml#_a9XgIAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_a9e04QPIEeaXyaQL1WyV3A" x="550" y="127"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_f-AIcAPIEeaXyaQL1WyV3A" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_f-AIcgPIEeaXyaQL1WyV3A" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_h1M6oAPIEeaXyaQL1WyV3A" width="261" height="23"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_f-AIcwPIEeaXyaQL1WyV3A" type="19003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_f-AIdAPIEeaXyaQL1WyV3A" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_f-AIdQPIEeaXyaQL1WyV3A" type="6002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iu7_AAPIEeaXyaQL1WyV3A" source="PapyrusCSSForceValue">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iu7_AQPIEeaXyaQL1WyV3A" key="visible" value="true"/>
</eAnnotations>
<children xmi:type="notation:Shape" xmi:id="_iu90MAPIEeaXyaQL1WyV3A" type="3000">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iu90NAPIEeaXyaQL1WyV3A" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iu90NQPIEeaXyaQL1WyV3A" key="RegionZoneKey" value="T"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_iu90MgPIEeaXyaQL1WyV3A" type="3002">
<children xmi:type="notation:Shape" xmi:id="_mL_UsAPIEeaXyaQL1WyV3A" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_mL_UsgPIEeaXyaQL1WyV3A" type="6001"/>
<children xmi:type="notation:DecorationNode" xmi:id="_mL_UswPIEeaXyaQL1WyV3A" type="19003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_mL_UtAPIEeaXyaQL1WyV3A" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_mL_UtQPIEeaXyaQL1WyV3A" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mL_UtgPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:State" href="simple-forkjoin.uml#_mL08oAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mL_UsQPIEeaXyaQL1WyV3A" x="80" y="17"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_mkQDsAPIEeaXyaQL1WyV3A" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_mkQDsgPIEeaXyaQL1WyV3A" type="6001"/>
<children xmi:type="notation:DecorationNode" xmi:id="_mkQDswPIEeaXyaQL1WyV3A" type="19003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_mkQDtAPIEeaXyaQL1WyV3A" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_mkQDtQPIEeaXyaQL1WyV3A" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mkQDtgPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:State" href="simple-forkjoin.uml#_mkFEkAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mkQDsQPIEeaXyaQL1WyV3A" x="180" y="17"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_55n88APIEeaXyaQL1WyV3A" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_55okAAPIEeaXyaQL1WyV3A" type="8001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_55okAQPIEeaXyaQL1WyV3A" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_55okAgPIEeaXyaQL1WyV3A" type="8002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_55okAwPIEeaXyaQL1WyV3A" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="simple-forkjoin.uml#_55YFUAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_55n88QPIEeaXyaQL1WyV3A" x="20" y="17"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_iu90MwPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:Region" href="simple-forkjoin.uml#_iu8mEAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_iu90MQPIEeaXyaQL1WyV3A" width="261" height="98"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_j0iVIAPIEeaXyaQL1WyV3A" type="3000">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j0iVJAPIEeaXyaQL1WyV3A" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j0iVJQPIEeaXyaQL1WyV3A" key="RegionZoneKey" value="B"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_j0iVIgPIEeaXyaQL1WyV3A" type="3002">
<children xmi:type="notation:Shape" xmi:id="_sraPMAPIEeaXyaQL1WyV3A" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_sraPMgPIEeaXyaQL1WyV3A" type="6001"/>
<children xmi:type="notation:DecorationNode" xmi:id="_sraPMwPIEeaXyaQL1WyV3A" type="19003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_sraPNAPIEeaXyaQL1WyV3A" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_sraPNQPIEeaXyaQL1WyV3A" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_sraPNgPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:State" href="simple-forkjoin.uml#_srPQEAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_sraPMQPIEeaXyaQL1WyV3A" x="80" y="39"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_tDMdEAPIEeaXyaQL1WyV3A" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_tDNEIAPIEeaXyaQL1WyV3A" type="6001"/>
<children xmi:type="notation:DecorationNode" xmi:id="_tDNEIQPIEeaXyaQL1WyV3A" type="19003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_tDNEIgPIEeaXyaQL1WyV3A" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_tDNEIwPIEeaXyaQL1WyV3A" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_tDNEJAPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:State" href="simple-forkjoin.uml#_tDCFAAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_tDMdEQPIEeaXyaQL1WyV3A" x="180" y="39"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_7hRQMAPIEeaXyaQL1WyV3A" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_7hRQMgPIEeaXyaQL1WyV3A" type="8001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_7hRQMwPIEeaXyaQL1WyV3A" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_7hRQNAPIEeaXyaQL1WyV3A" type="8002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_7hRQNQPIEeaXyaQL1WyV3A" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="simple-forkjoin.uml#_7hD00APIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hRQMQPIEeaXyaQL1WyV3A" x="20" y="59"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_j0iVIwPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:Region" href="simple-forkjoin.uml#_j0hHAAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_j0iVIQPIEeaXyaQL1WyV3A" y="98" width="261" height="120"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-AIdgPIEeaXyaQL1WyV3A" y="23" width="261" height="218"/>
</children>
<element xmi:type="uml:State" href="simple-forkjoin.uml#_f92XcAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-AIcQPIEeaXyaQL1WyV3A" x="230" y="27" width="261" height="241"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsJ_CQPIEeaXyaQL1WyV3A"/>
</children>
<element xmi:type="uml:Region" href="simple-forkjoin.uml#_CsHiwAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsJ_CgPIEeaXyaQL1WyV3A" width="700" height="287"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsJ_CwPIEeaXyaQL1WyV3A" y="23" width="700" height="287"/>
</children>
<element xmi:type="uml:StateMachine" href="simple-forkjoin.uml#_Cr6HYAPIEeaXyaQL1WyV3A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_CsJ_DAPIEeaXyaQL1WyV3A" x="30" y="30" width="700" height="310"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_CsJ_DQPIEeaXyaQL1WyV3A" name="diagram_compatibility_version" stringValue="1.1.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_CsJ_DgPIEeaXyaQL1WyV3A"/>
<styles xmi:type="style:PapyrusViewStyle" xmi:id="_CsJ_DwPIEeaXyaQL1WyV3A">
<owner xmi:type="uml:Model" href="simple-forkjoin.uml#_CrssAAPIEeaXyaQL1WyV3A"/>
</styles>
<element xmi:type="uml:StateMachine" href="simple-forkjoin.uml#_Cr6HYAPIEeaXyaQL1WyV3A"/>
<edges xmi:type="notation:Connector" xmi:id="_9j8SkAPIEeaXyaQL1WyV3A" type="7000" source="_IPcocAPIEeaXyaQL1WyV3A" target="_Iy1pYAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_9j8SkwPIEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9j8SlAPIEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_9j8SlQPIEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9j8SlgPIEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_9j85oAPIEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9j85oQPIEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_9j8SkQPIEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_9hO80APIEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9j8SkgPIEeaXyaQL1WyV3A" points="[8, 2, -39, 10]$[73, 39, 26, 47]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9ko2IAPIEeaXyaQL1WyV3A" id="(1.0,0.65)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9ko2IQPIEeaXyaQL1WyV3A" id="(0.0,0.06382978723404255)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_ADeQEAPJEeaXyaQL1WyV3A" type="7000" source="_Iy1pYAPIEeaXyaQL1WyV3A" target="_YIMCwAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_ADeQEwPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ADeQFAPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ADeQFQPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ADeQFgPJEeaXyaQL1WyV3A" x="4" y="26"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ADeQFwPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ADeQGAPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_ADeQEQPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_ADNKUAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ADeQEgPJEeaXyaQL1WyV3A" points="[9, 5, -48, -31]$[59, 36, 2, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AEMBwAPJEeaXyaQL1WyV3A" id="(1.0,0.6382978723404256)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AEMBwQPJEeaXyaQL1WyV3A" id="(0.0,0.375)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_D5uI4APJEeaXyaQL1WyV3A" type="7000" source="_YIMCwAPIEeaXyaQL1WyV3A" target="_mL_UsAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_D5uI4wPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_D5uI5APJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_D5uI5QPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_D5uI5gPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_D5uI5wPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_D5uI6APJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_D5uI4QPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_D5dDIAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D5uI4gPJEeaXyaQL1WyV3A" points="[0, 0, -160, 60]$[200, -25, 40, 35]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D6aFYAPJEeaXyaQL1WyV3A" id="(1.0,0.45)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D6aFYQPJEeaXyaQL1WyV3A" id="(0.0,0.6595744680851063)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_FgR3AAPJEeaXyaQL1WyV3A" type="7000" source="_YIMCwAPIEeaXyaQL1WyV3A" target="_sraPMAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_FgR3AwPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_FgR3BAPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_FgR3BQPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_FgR3BgPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_FgR3BwPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_FgR3CAPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_FgR3AQPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_FgAxQAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FgR3AgPJEeaXyaQL1WyV3A" points="[10, 4, -150, -56]$[197, 103, 37, 43]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fg8lYAPJEeaXyaQL1WyV3A" id="(1.0,0.625)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fg8lYQPJEeaXyaQL1WyV3A" id="(0.0,0.46808510638297873)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_Hg0LYAPJEeaXyaQL1WyV3A" type="7000" source="_55n88APIEeaXyaQL1WyV3A" target="_mL_UsAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_Hg0ycAPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hg0ycQPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Hg0ycgPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hg0ycwPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Hg0ydAPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hg0ydQPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_Hg0LYQPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_HgkTwAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Hg0LYgPJEeaXyaQL1WyV3A" points="[8, 1, -52, 0]$[53, -8, -7, -9]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hhe5wAPJEeaXyaQL1WyV3A" id="(1.0,0.45)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hhe5wQPJEeaXyaQL1WyV3A" id="(0.0,0.2127659574468085)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_IOl3YAPJEeaXyaQL1WyV3A" type="7000" source="_7hRQMAPIEeaXyaQL1WyV3A" target="_sraPMAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_IOmecgPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_IOmecwPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_IOmedAPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_IOmedQPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_IOmedgPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_IOmedwPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_IOmecAPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_IOTjgAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IOmecQPJEeaXyaQL1WyV3A" points="[0, 9, -74, 0]$[76, 17, 2, 8]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IPTCAAPJEeaXyaQL1WyV3A" id="(1.0,0.6)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IPTCAQPJEeaXyaQL1WyV3A" id="(0.0,0.7659574468085106)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_KIIy8APJEeaXyaQL1WyV3A" type="7000" source="_mL_UsAPIEeaXyaQL1WyV3A" target="_mkQDsAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_KIIy8wPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KIIy9APJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_KIIy9QPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KIIy9gPJEeaXyaQL1WyV3A" x="-2" y="-13"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_KIIy9wPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KIIy-APJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_KIIy8QPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_KH4UQAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KIIy8gPJEeaXyaQL1WyV3A" points="[40, 10, -64, -16]$[100, 26, -4, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KIyTMAPJEeaXyaQL1WyV3A" id="(1.0,0.46808510638297873)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KIyTMQPJEeaXyaQL1WyV3A" id="(0.0,0.5319148936170213)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_KwWpgAPJEeaXyaQL1WyV3A" type="7000" source="_sraPMAPIEeaXyaQL1WyV3A" target="_tDMdEAPIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_KwWpgwPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KwWphAPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_KwWphQPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KwWphgPJEeaXyaQL1WyV3A" x="1" y="-18"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_KwWphwPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_KwWpiAPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_KwWpgQPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_KwInEAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KwWpggPJEeaXyaQL1WyV3A" points="[40, 9, -67, -17]$[100, 27, -7, 1]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KxAJwAPJEeaXyaQL1WyV3A" id="(1.0,0.6170212765957447)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KxAJwQPJEeaXyaQL1WyV3A" id="(0.0,0.5531914893617021)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_MofP0APJEeaXyaQL1WyV3A" type="7000" source="_mkQDsAPIEeaXyaQL1WyV3A" target="_a9e04APIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_Mof24APJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Mof24QPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Mof24gPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Mof24wPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Mof25APJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Mof25QPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_MofP0QPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_MoM78APJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MofP0gPJEeaXyaQL1WyV3A" points="[40, 24, -102, -62]$[140, 90, -2, 4]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MpTvMAPJEeaXyaQL1WyV3A" id="(1.0,0.6170212765957447)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MpTvMQPJEeaXyaQL1WyV3A" id="(0.0,0.6)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_NR4LEAPJEeaXyaQL1WyV3A" type="7000" source="_tDMdEAPIEeaXyaQL1WyV3A" target="_a9e04APIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_NR4yIAPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_NR4yIQPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_NR4yIgPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_NR4yIwPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_NR4yJAPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_NR4yJQPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_NR4LEQPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_NRphkAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NR4LEgPJEeaXyaQL1WyV3A" points="[40, 15, -103, 43]$[141, -20, -2, 8]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NSiSYAPJEeaXyaQL1WyV3A" id="(1.0,0.2978723404255319)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NSi5cAPJEeaXyaQL1WyV3A" id="(0.0,0.825)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_QKNDEAPJEeaXyaQL1WyV3A" type="7000" source="_a9e04APIEeaXyaQL1WyV3A" target="_LFPJ0APIEeaXyaQL1WyV3A">
<children xmi:type="notation:DecorationNode" xmi:id="_QKNDEwPJEeaXyaQL1WyV3A" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_QKNqIAPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_QKNqIQPJEeaXyaQL1WyV3A" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_QKNqIgPJEeaXyaQL1WyV3A"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_QKNqIwPJEeaXyaQL1WyV3A" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_QKNqJAPJEeaXyaQL1WyV3A" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_QKNDEQPJEeaXyaQL1WyV3A"/>
<element xmi:type="uml:Transition" href="simple-forkjoin.uml#_QJ79UAPJEeaXyaQL1WyV3A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QKNDEgPJEeaXyaQL1WyV3A" points="[10, 1, -80, -9]$[98, 10, 8, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QK6NsAPJEeaXyaQL1WyV3A" id="(1.0,0.525)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QK6NsQPJEeaXyaQL1WyV3A" id="(0.0,0.55)"/>
</edges>
</notation:Diagram>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_CrssAAPIEeaXyaQL1WyV3A" name="RootElement">
<packagedElement xmi:type="uml:StateMachine" xmi:id="_Cr6HYAPIEeaXyaQL1WyV3A" name="StateMachine">
<region xmi:type="uml:Region" xmi:id="_CsHiwAPIEeaXyaQL1WyV3A" name="Region1">
<transition xmi:type="uml:Transition" xmi:id="_9hO80APIEeaXyaQL1WyV3A" source="_IPSQYAPIEeaXyaQL1WyV3A" target="_IyviwAPIEeaXyaQL1WyV3A"/>
<transition xmi:type="uml:Transition" xmi:id="_ADNKUAPJEeaXyaQL1WyV3A" source="_IyviwAPIEeaXyaQL1WyV3A" target="_YIEuAAPIEeaXyaQL1WyV3A">
<trigger xmi:type="uml:Trigger" xmi:id="_lTnQUAPKEeaXyaQL1WyV3A" event="_Lej94APKEeaXyaQL1WyV3A"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_D5dDIAPJEeaXyaQL1WyV3A" source="_YIEuAAPIEeaXyaQL1WyV3A" target="_mL08oAPIEeaXyaQL1WyV3A"/>
<transition xmi:type="uml:Transition" xmi:id="_FgAxQAPJEeaXyaQL1WyV3A" source="_YIEuAAPIEeaXyaQL1WyV3A" target="_srPQEAPIEeaXyaQL1WyV3A"/>
<transition xmi:type="uml:Transition" xmi:id="_QJ79UAPJEeaXyaQL1WyV3A" source="_a9XgIAPIEeaXyaQL1WyV3A" target="_LFC8kAPIEeaXyaQL1WyV3A"/>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_IPSQYAPIEeaXyaQL1WyV3A"/>
<subvertex xmi:type="uml:State" xmi:id="_IyviwAPIEeaXyaQL1WyV3A" name="SI"/>
<subvertex xmi:type="uml:FinalState" xmi:id="_LFC8kAPIEeaXyaQL1WyV3A" name="SF"/>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_YIEuAAPIEeaXyaQL1WyV3A" name="S1" kind="fork"/>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_a9XgIAPIEeaXyaQL1WyV3A" name="S3" kind="join"/>
<subvertex xmi:type="uml:State" xmi:id="_f92XcAPIEeaXyaQL1WyV3A" name="S2">
<region xmi:type="uml:Region" xmi:id="_iu8mEAPIEeaXyaQL1WyV3A" name="Region1">
<transition xmi:type="uml:Transition" xmi:id="_HgkTwAPJEeaXyaQL1WyV3A" source="_55YFUAPIEeaXyaQL1WyV3A" target="_mL08oAPIEeaXyaQL1WyV3A"/>
<transition xmi:type="uml:Transition" xmi:id="_KH4UQAPJEeaXyaQL1WyV3A" source="_mL08oAPIEeaXyaQL1WyV3A" target="_mkFEkAPIEeaXyaQL1WyV3A">
<trigger xmi:type="uml:Trigger" xmi:id="_pahbUAPKEeaXyaQL1WyV3A" event="_OEQ00APKEeaXyaQL1WyV3A"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_MoM78APJEeaXyaQL1WyV3A" source="_mkFEkAPIEeaXyaQL1WyV3A" target="_a9XgIAPIEeaXyaQL1WyV3A"/>
<subvertex xmi:type="uml:State" xmi:id="_mL08oAPIEeaXyaQL1WyV3A" name="S20"/>
<subvertex xmi:type="uml:State" xmi:id="_mkFEkAPIEeaXyaQL1WyV3A" name="S21"/>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_55YFUAPIEeaXyaQL1WyV3A"/>
</region>
<region xmi:type="uml:Region" xmi:id="_j0hHAAPIEeaXyaQL1WyV3A" name="Region2">
<transition xmi:type="uml:Transition" xmi:id="_IOTjgAPJEeaXyaQL1WyV3A" source="_7hD00APIEeaXyaQL1WyV3A" target="_srPQEAPIEeaXyaQL1WyV3A"/>
<transition xmi:type="uml:Transition" xmi:id="_KwInEAPJEeaXyaQL1WyV3A" source="_srPQEAPIEeaXyaQL1WyV3A" target="_tDCFAAPIEeaXyaQL1WyV3A">
<trigger xmi:type="uml:Trigger" xmi:id="_r52kgAPKEeaXyaQL1WyV3A" event="_Qc11wAPKEeaXyaQL1WyV3A"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_NRphkAPJEeaXyaQL1WyV3A" source="_tDCFAAPIEeaXyaQL1WyV3A" target="_a9XgIAPIEeaXyaQL1WyV3A"/>
<subvertex xmi:type="uml:State" xmi:id="_srPQEAPIEeaXyaQL1WyV3A" name="S30"/>
<subvertex xmi:type="uml:State" xmi:id="_tDCFAAPIEeaXyaQL1WyV3A" name="S31"/>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_7hD00APIEeaXyaQL1WyV3A"/>
</region>
</subvertex>
</region>
</packagedElement>
<packagedElement xmi:type="uml:Signal" xmi:id="_EqiFUAPKEeaXyaQL1WyV3A" name="E1"/>
<packagedElement xmi:type="uml:Signal" xmi:id="_GO8eYAPKEeaXyaQL1WyV3A" name="E2"/>
<packagedElement xmi:type="uml:Signal" xmi:id="_JdNxMAPKEeaXyaQL1WyV3A" name="E3"/>
<packagedElement xmi:type="uml:SignalEvent" xmi:id="_Lej94APKEeaXyaQL1WyV3A" name="SignalEventE1" signal="_EqiFUAPKEeaXyaQL1WyV3A"/>
<packagedElement xmi:type="uml:SignalEvent" xmi:id="_OEQ00APKEeaXyaQL1WyV3A" name="SignalEventE2" signal="_GO8eYAPKEeaXyaQL1WyV3A"/>
<packagedElement xmi:type="uml:SignalEvent" xmi:id="_Qc11wAPKEeaXyaQL1WyV3A" name="SignalEventE3" signal="_JdNxMAPKEeaXyaQL1WyV3A"/>
</uml:Model>