Add new tck test

- New ShowcaseMachine test
- Remove old showcase uml tests
- Relates to #278
This commit is contained in:
Janne Valkealahti
2016-11-23 17:59:18 +00:00
parent 0c3ea7fb2d
commit 5fefff4418
18 changed files with 1978 additions and 733 deletions

View File

@@ -1,459 +0,0 @@
/*
* Copyright 2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.statemachine.buildtests;
import java.util.Map;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.statemachine.StateContext;
import org.springframework.statemachine.StateMachine;
import org.springframework.statemachine.action.Action;
import org.springframework.statemachine.config.EnableStateMachine;
import org.springframework.statemachine.config.StateMachineConfigurerAdapter;
import org.springframework.statemachine.config.builders.StateMachineModelConfigurer;
import org.springframework.statemachine.config.model.StateMachineModelFactory;
import org.springframework.statemachine.guard.Guard;
import org.springframework.statemachine.test.StateMachineTestPlan;
import org.springframework.statemachine.test.StateMachineTestPlanBuilder;
import org.springframework.statemachine.uml.UmlStateMachineModelFactory;
@SuppressWarnings("unchecked")
public class ShowcaseUmlTests extends AbstractBuildTests {
@Test
public void testInitialState() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testA() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("A")
.expectStateChanged(0)
.expectStateEntered(0)
.expectStateExited(0)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testB() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("B")
.expectStateChanged(2)
.expectStateEntered(2)
.expectStateExited(2)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testCHKA() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("H")
.expectVariable("foo", 1)
.expectTransition(1)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("K")
.expectStateEntered(2)
.expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("A")
.expectStateChanged(2)
.expectStateEntered(2)
.expectStateExited(2)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testC() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testCK() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("K")
.expectStateEntered(2)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testD() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("D")
.expectStateEntered(3)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testCD() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("D")
.expectStateEntered(2)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testI() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("I")
.expectStateEntered(1)
.expectStates("S0", "S1", "S12").and()
.build();
plan.test();
}
@Test
public void testII() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("I")
.expectStateEntered(1)
.expectStateEntered(1)
.expectStateExited(1)
.expectStates("S0", "S1", "S12").and()
.step()
.sendEvent("I")
.expectStateChanged(2)
.expectStateEntered(3)
.expectStateExited(2)
.expectStates("S0", "S2", "S21", "S212").and()
.build();
plan.test();
}
@Test
public void testH() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step()
.expectStates("S0", "S1", "S11")
.expectVariable("foo", 0).and()
.step()
.sendEvent("H")
.expectTransition(1)
.expectVariable("foo", 0)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testCH() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step()
.expectStates("S0", "S1", "S11")
.expectVariable("foo", 0).and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("H")
.expectVariable("foo", 1)
.expectTransition(1)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testACH() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("A")
.expectStateChanged(0)
.expectStateEntered(0)
.expectStateExited(0)
.expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("H")
.expectVariable("foo", 1)
.expectTransition(1)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testE() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("E")
.expectStateChanged(3)
.expectStateEntered(4)
.expectStateExited(3)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testF() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("F")
.expectStateChanged(2)
.expectStateEntered(3)
.expectStateExited(2)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testG() throws Exception {
context.register(Config1.class);
context.refresh();
StateMachine<String, String> stateMachine = context.getBean(StateMachine.class);
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("G")
.expectStateChanged(2)
.expectStateEntered(3)
.expectStateExited(2)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Configuration
@EnableStateMachine
public static class Config1 extends StateMachineConfigurerAdapter<String, String> {
@Override
public void configure(StateMachineModelConfigurer<String, String> model) throws Exception {
model
.withModel()
.factory(modelFactory());
}
@Bean
public StateMachineModelFactory<String, String> modelFactory() {
return new UmlStateMachineModelFactory("classpath:org/springframework/statemachine/buildtests/showcase.uml");
}
@Bean
public Guard<String, String> exitGuard() {
return (context) -> {
return true;
};
}
@Bean
public FooGuard foo0Guard() {
return new FooGuard(0);
}
@Bean
public FooGuard foo1Guard() {
return new FooGuard(1);
}
@Bean
public FooAction fooAction() {
return new FooAction();
}
}
private static class FooAction implements Action<String, String> {
@Override
public void execute(StateContext<String, String> context) {
Map<Object, Object> variables = context.getExtendedState().getVariables();
Integer foo = context.getExtendedState().get("foo", Integer.class);
if (foo == null) {
variables.put("foo", 0);
} else if (foo == 0) {
variables.put("foo", 1);
} else if (foo == 1) {
variables.put("foo", 0);
}
}
}
private static class FooGuard implements Guard<String, String> {
private final int match;
public FooGuard(int match) {
this.match = match;
}
@Override
public boolean evaluate(StateContext<String, String> context) {
Object foo = context.getExtendedState().getVariables().get("foo");
return !(foo == null || !foo.equals(match));
}
}
@Override
protected AnnotationConfigApplicationContext buildContext() {
return new AnnotationConfigApplicationContext();
}
}

View File

@@ -15,12 +15,19 @@
*/
package org.springframework.statemachine.buildtests.tck;
import java.util.Map;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.statemachine.StateContext;
import org.springframework.statemachine.StateMachine;
import org.springframework.statemachine.action.Action;
import org.springframework.statemachine.config.StateMachineFactory;
import org.springframework.statemachine.guard.Guard;
import org.springframework.statemachine.test.StateMachineTestPlan;
import org.springframework.statemachine.test.StateMachineTestPlanBuilder;
@@ -107,4 +114,362 @@ public abstract class AbstractTckTests {
* @return StateMachine for SimpleSubMachine
*/
protected abstract StateMachine<String, String> getSimpleSubMachine() throws Exception;
@Test
public void testShowcaseMachineInitialState() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineA() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("A")
.expectStateChanged(0)
.expectStateEntered(0)
.expectStateExited(0)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineB() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("B")
.expectStateChanged(2)
.expectStateEntered(2)
.expectStateExited(2)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineCHKA() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("H")
.expectVariable("foo", 1)
.expectTransition(1)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("K")
.expectStateEntered(2)
.expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("A")
.expectStateChanged(2)
.expectStateEntered(2)
.expectStateExited(2)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineC() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineCK() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("K")
.expectStateEntered(2)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineD() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("D")
.expectStateEntered(3)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineCD() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("D")
.expectStateEntered(2)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineI() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("I")
.expectStateEntered(1)
.expectStates("S0", "S1", "S12").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineII() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("I")
.expectStateEntered(1)
.expectStateEntered(1)
.expectStateExited(1)
.expectStates("S0", "S1", "S12").and()
.step()
.sendEvent("I")
.expectStateChanged(2)
.expectStateEntered(3)
.expectStateExited(2)
.expectStates("S0", "S2", "S21", "S212").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineH() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step()
.expectStates("S0", "S1", "S11")
.expectVariable("foo", 0).and()
.step()
.sendEvent("H")
.expectTransition(1)
.expectVariable("foo", 0)
.expectStates("S0", "S1", "S11").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineCH() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step()
.expectStates("S0", "S1", "S11")
.expectVariable("foo", 0).and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("H")
.expectVariable("foo", 1)
.expectTransition(1)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineACH() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("A")
.expectStateChanged(0)
.expectStateEntered(0)
.expectStateExited(0)
.expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("C")
.expectStateEntered(3)
.expectStates("S0", "S2", "S21", "S211").and()
.step()
.sendEvent("H")
.expectVariable("foo", 1)
.expectTransition(1)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineE() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("E")
.expectStateChanged(3)
.expectStateEntered(4)
.expectStateExited(3)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineF() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("F")
.expectStateChanged(2)
.expectStateEntered(3)
.expectStateExited(2)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
@Test
public void testShowcaseMachineG() throws Exception {
StateMachine<String,String> stateMachine = getShowcaseMachine();
StateMachineTestPlan<String, String> plan =
StateMachineTestPlanBuilder.<String, String>builder()
.stateMachine(stateMachine)
.step().expectStates("S0", "S1", "S11").and()
.step()
.sendEvent("G")
.expectStateChanged(2)
.expectStateEntered(3)
.expectStateExited(2)
.expectStates("S0", "S2", "S21", "S211").and()
.build();
plan.test();
}
/**
* Return state machine for showcase tests.
*
* @return StateMachine for ShowcaseMachine
*/
protected abstract StateMachine<String, String> getShowcaseMachine() throws Exception;
@Configuration
protected static class ShowcaseMachineBeansConfig {
@Bean
public FooGuard foo0Guard() {
return new FooGuard(0);
}
@Bean
public FooGuard foo1Guard() {
return new FooGuard(1);
}
@Bean
public FooAction fooAction() {
return new FooAction();
}
}
protected static class FooAction implements Action<String, String> {
public FooAction() {
}
@Override
public void execute(StateContext<String, String> context) {
Map<Object, Object> variables = context.getExtendedState().getVariables();
Integer foo = context.getExtendedState().get("foo", Integer.class);
if (foo == null) {
variables.put("foo", 0);
} else if (foo == 0) {
variables.put("foo", 1);
} else if (foo == 1) {
variables.put("foo", 0);
}
}
}
protected static class FooGuard implements Guard<String, String> {
private final int match;
public FooGuard(int match) {
this.match = match;
}
@Override
public boolean evaluate(StateContext<String, String> context) {
Object foo = context.getExtendedState().getVariables().get("foo");
return !(foo == null || !foo.equals(match));
}
}
}

View File

@@ -16,6 +16,7 @@
package org.springframework.statemachine.buildtests.tck.javaconfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.statemachine.StateMachine;
import org.springframework.statemachine.buildtests.tck.AbstractTckTests;
@@ -51,6 +52,13 @@ public class AnnotationFactoryTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(ShowcaseMachineConfig.class);
context.refresh();
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
@EnableStateMachineFactory
static class SimpleMachineConfig extends StateMachineConfigurerAdapter<String, String> {
@@ -111,4 +119,125 @@ public class AnnotationFactoryTckTests extends AbstractTckTests {
.event("E3");
}
}
@Configuration
@EnableStateMachineFactory
static class ShowcaseMachineConfig extends StateMachineConfigurerAdapter<String, String> {
@Override
public void configure(StateMachineStateConfigurer<String, String> states)
throws Exception {
states
.withStates()
.initial("S0", fooAction())
.state("S0")
.and()
.withStates()
.parent("S0")
.initial("S1")
.state("S1")
.and()
.withStates()
.parent("S1")
.initial("S11")
.state("S11")
.state("S12")
.and()
.withStates()
.parent("S0")
.state("S2")
.and()
.withStates()
.parent("S2")
.initial("S21")
.state("S21")
.and()
.withStates()
.parent("S21")
.initial("S211")
.state("S211")
.state("S212");
}
@Override
public void configure(StateMachineTransitionConfigurer<String, String> transitions)
throws Exception {
transitions
.withExternal()
.source("S1").target("S1").event("A")
.guard(foo1Guard())
.and()
.withExternal()
.source("S1").target("S11").event("B")
.and()
.withExternal()
.source("S21").target("S211").event("B")
.and()
.withExternal()
.source("S1").target("S2").event("C")
.and()
.withExternal()
.source("S2").target("S1").event("K")
.and()
.withExternal()
.source("S1").target("S0").event("D")
.and()
.withExternal()
.source("S211").target("S21").event("D")
.and()
.withExternal()
.source("S0").target("S211").event("E")
.and()
.withExternal()
.source("S1").target("S211").event("F")
.and()
.withExternal()
.source("S2").target("S11").event("F")
.and()
.withExternal()
.source("S11").target("S211").event("G")
.and()
.withExternal()
.source("S211").target("S0").event("G")
.and()
.withInternal()
.source("S0").event("H")
.guard(foo0Guard())
.action(fooAction())
.and()
.withInternal()
.source("S2").event("H")
.guard(foo1Guard())
.action(fooAction())
.and()
.withInternal()
.source("S1").event("H")
.and()
.withExternal()
.source("S11").target("S12").event("I")
.and()
.withExternal()
.source("S211").target("S212").event("I")
.and()
.withExternal()
.source("S12").target("S212").event("I")
.and()
.withInternal()
.source("S11").event("J");
}
@Bean
public FooGuard foo0Guard() {
return new FooGuard(0);
}
@Bean
public FooGuard foo1Guard() {
return new FooGuard(1);
}
@Bean
public FooAction fooAction() {
return new FooAction();
}
}
}

View File

@@ -16,6 +16,7 @@
package org.springframework.statemachine.buildtests.tck.javaconfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.statemachine.StateMachine;
import org.springframework.statemachine.buildtests.tck.AbstractTckTests;
@@ -51,6 +52,13 @@ public class AnnotationTckTests extends AbstractTckTests {
return getStateMachineFromContext();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(ShowcaseMachineConfig.class);
context.refresh();
return getStateMachineFromContext();
}
@Configuration
@EnableStateMachine
static class SimpleMachineConfig extends StateMachineConfigurerAdapter<String, String> {
@@ -111,4 +119,125 @@ public class AnnotationTckTests extends AbstractTckTests {
.event("E3");
}
}
@Configuration
@EnableStateMachine
static class ShowcaseMachineConfig extends StateMachineConfigurerAdapter<String, String> {
@Override
public void configure(StateMachineStateConfigurer<String, String> states)
throws Exception {
states
.withStates()
.initial("S0", fooAction())
.state("S0")
.and()
.withStates()
.parent("S0")
.initial("S1")
.state("S1")
.and()
.withStates()
.parent("S1")
.initial("S11")
.state("S11")
.state("S12")
.and()
.withStates()
.parent("S0")
.state("S2")
.and()
.withStates()
.parent("S2")
.initial("S21")
.state("S21")
.and()
.withStates()
.parent("S21")
.initial("S211")
.state("S211")
.state("S212");
}
@Override
public void configure(StateMachineTransitionConfigurer<String, String> transitions)
throws Exception {
transitions
.withExternal()
.source("S1").target("S1").event("A")
.guard(foo1Guard())
.and()
.withExternal()
.source("S1").target("S11").event("B")
.and()
.withExternal()
.source("S21").target("S211").event("B")
.and()
.withExternal()
.source("S1").target("S2").event("C")
.and()
.withExternal()
.source("S2").target("S1").event("K")
.and()
.withExternal()
.source("S1").target("S0").event("D")
.and()
.withExternal()
.source("S211").target("S21").event("D")
.and()
.withExternal()
.source("S0").target("S211").event("E")
.and()
.withExternal()
.source("S1").target("S211").event("F")
.and()
.withExternal()
.source("S2").target("S11").event("F")
.and()
.withExternal()
.source("S11").target("S211").event("G")
.and()
.withExternal()
.source("S211").target("S0").event("G")
.and()
.withInternal()
.source("S0").event("H")
.guard(foo0Guard())
.action(fooAction())
.and()
.withInternal()
.source("S2").event("H")
.guard(foo1Guard())
.action(fooAction())
.and()
.withInternal()
.source("S1").event("H")
.and()
.withExternal()
.source("S11").target("S12").event("I")
.and()
.withExternal()
.source("S211").target("S212").event("I")
.and()
.withExternal()
.source("S12").target("S212").event("I")
.and()
.withInternal()
.source("S11").event("J");
}
@Bean
public FooGuard foo0Guard() {
return new FooGuard(0);
}
@Bean
public FooGuard foo1Guard() {
return new FooGuard(1);
}
@Bean
public FooAction fooAction() {
return new FooAction();
}
}
}

View File

@@ -74,4 +74,105 @@ public class BuilderTckTests extends AbstractTckTests {
.event("E3");
return builder.build();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
Builder<String, String> builder = StateMachineBuilder.builder();
builder.configureStates()
.withStates()
.initial("S0", new FooAction())
.state("S0")
.and()
.withStates()
.parent("S0")
.initial("S1")
.state("S1")
.and()
.withStates()
.parent("S1")
.initial("S11")
.state("S11")
.state("S12")
.and()
.withStates()
.parent("S0")
.state("S2")
.and()
.withStates()
.parent("S2")
.initial("S21")
.state("S21")
.and()
.withStates()
.parent("S21")
.initial("S211")
.state("S211")
.state("S212");
builder.configureTransitions()
.withExternal()
.source("S1").target("S1").event("A")
.guard(new FooGuard(1))
.and()
.withExternal()
.source("S1").target("S11").event("B")
.and()
.withExternal()
.source("S21").target("S211").event("B")
.and()
.withExternal()
.source("S1").target("S2").event("C")
.and()
.withExternal()
.source("S2").target("S1").event("K")
.and()
.withExternal()
.source("S1").target("S0").event("D")
.and()
.withExternal()
.source("S211").target("S21").event("D")
.and()
.withExternal()
.source("S0").target("S211").event("E")
.and()
.withExternal()
.source("S1").target("S211").event("F")
.and()
.withExternal()
.source("S2").target("S11").event("F")
.and()
.withExternal()
.source("S11").target("S211").event("G")
.and()
.withExternal()
.source("S211").target("S0").event("G")
.and()
.withInternal()
.source("S0").event("H")
.guard(new FooGuard(0))
.action(new FooAction())
.and()
.withInternal()
.source("S2").event("H")
.guard(new FooGuard(1))
.action(new FooAction())
.and()
.withInternal()
.source("S1").event("H")
.and()
.withExternal()
.source("S11").target("S12").event("I")
.and()
.withExternal()
.source("S211").target("S212").event("I")
.and()
.withExternal()
.source("S12").target("S212").event("I")
.and()
.withInternal()
.source("S11").event("J");
return builder.build();
}
}

View File

@@ -64,6 +64,13 @@ public class JpaJsonTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(TestConfig.class, ShowcaseMachineBeansConfig.class, ShowcaseMachineConfig.class, StateMachineFactoryConfig.class);
context.refresh();
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
public static class SimpleMachineConfig {
@@ -86,6 +93,17 @@ public class JpaJsonTckTests extends AbstractTckTests {
}
}
@Configuration
public static class ShowcaseMachineConfig {
@Bean
public StateMachineJackson2RepositoryPopulatorFactoryBean jackson2RepositoryPopulatorFactoryBean() {
StateMachineJackson2RepositoryPopulatorFactoryBean factoryBean = new StateMachineJackson2RepositoryPopulatorFactoryBean();
factoryBean.setResources(new Resource[]{new ClassPathResource("org/springframework/statemachine/buildtests/tck/jpa/ShowcaseMachine.json")});
return factoryBean;
}
}
@Configuration
@EnableStateMachineFactory
public static class StateMachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> {

View File

@@ -15,6 +15,9 @@
*/
package org.springframework.statemachine.buildtests.tck.jpa;
import java.util.Arrays;
import java.util.HashSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
@@ -33,10 +36,15 @@ import org.springframework.statemachine.data.RepositoryStateMachineModelFactory;
import org.springframework.statemachine.data.RepositoryTransition;
import org.springframework.statemachine.data.StateRepository;
import org.springframework.statemachine.data.TransitionRepository;
import org.springframework.statemachine.data.jpa.JpaActionRepository;
import org.springframework.statemachine.data.jpa.JpaGuardRepository;
import org.springframework.statemachine.data.jpa.JpaRepositoryAction;
import org.springframework.statemachine.data.jpa.JpaRepositoryGuard;
import org.springframework.statemachine.data.jpa.JpaRepositoryState;
import org.springframework.statemachine.data.jpa.JpaRepositoryTransition;
import org.springframework.statemachine.data.jpa.JpaStateRepository;
import org.springframework.statemachine.data.jpa.JpaTransitionRepository;
import org.springframework.statemachine.transition.TransitionKind;
/**
* Tck tests for machine configs build manually agains repository interfaces.
@@ -110,6 +118,110 @@ public class JpaManualTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(ShowcaseMachineBeansConfig.class, TestConfig.class, StateMachineFactoryConfig.class);
context.refresh();
JpaStateRepository stateRepository = context.getBean(JpaStateRepository.class);
JpaTransitionRepository transitionRepository = context.getBean(JpaTransitionRepository.class);
JpaActionRepository actionRepository = context.getBean(JpaActionRepository.class);
JpaGuardRepository guardRepository = context.getBean(JpaGuardRepository.class);
JpaRepositoryGuard foo0Guard = new JpaRepositoryGuard();
foo0Guard.setName("foo0Guard");
JpaRepositoryGuard foo1Guard = new JpaRepositoryGuard();
foo1Guard.setName("foo1Guard");
JpaRepositoryAction fooAction = new JpaRepositoryAction();
fooAction.setName("fooAction");
guardRepository.save(foo0Guard);
guardRepository.save(foo1Guard);
actionRepository.save(fooAction);
JpaRepositoryState stateS0 = new JpaRepositoryState("S0", true);
stateS0.setInitialAction(fooAction);
JpaRepositoryState stateS1 = new JpaRepositoryState("S1", true);
stateS1.setParentState(stateS0);
JpaRepositoryState stateS11 = new JpaRepositoryState("S11", true);
stateS11.setParentState(stateS1);
JpaRepositoryState stateS12 = new JpaRepositoryState("S12");
stateS12.setParentState(stateS1);
JpaRepositoryState stateS2 = new JpaRepositoryState("S2");
stateS2.setParentState(stateS0);
JpaRepositoryState stateS21 = new JpaRepositoryState("S21", true);
stateS21.setParentState(stateS2);
JpaRepositoryState stateS211 = new JpaRepositoryState("S211", true);
stateS211.setParentState(stateS21);
JpaRepositoryState stateS212 = new JpaRepositoryState("S212");
stateS212.setParentState(stateS21);
stateRepository.save(stateS0);
stateRepository.save(stateS1);
stateRepository.save(stateS11);
stateRepository.save(stateS12);
stateRepository.save(stateS2);
stateRepository.save(stateS21);
stateRepository.save(stateS211);
stateRepository.save(stateS212);
JpaRepositoryTransition transitionS1ToS1 = new JpaRepositoryTransition(stateS1, stateS1, "A");
transitionS1ToS1.setGuard(foo1Guard);
JpaRepositoryTransition transitionS1ToS11 = new JpaRepositoryTransition(stateS1, stateS11, "B");
JpaRepositoryTransition transitionS21ToS211 = new JpaRepositoryTransition(stateS21, stateS211, "B");
JpaRepositoryTransition transitionS1ToS2 = new JpaRepositoryTransition(stateS1, stateS2, "C");
JpaRepositoryTransition transitionS1ToS0 = new JpaRepositoryTransition(stateS1, stateS0, "D");
JpaRepositoryTransition transitionS211ToS21 = new JpaRepositoryTransition(stateS211, stateS21, "D");
JpaRepositoryTransition transitionS0ToS211 = new JpaRepositoryTransition(stateS0, stateS211, "E");
JpaRepositoryTransition transitionS1ToS211 = new JpaRepositoryTransition(stateS1, stateS211, "F");
JpaRepositoryTransition transitionS2ToS21 = new JpaRepositoryTransition(stateS2, stateS21, "F");
JpaRepositoryTransition transitionS11ToS211 = new JpaRepositoryTransition(stateS11, stateS211, "G");
JpaRepositoryTransition transitionS0 = new JpaRepositoryTransition(stateS0, stateS0, "H");
transitionS0.setKind(TransitionKind.INTERNAL);
transitionS0.setGuard(foo0Guard);
transitionS0.setActions(new HashSet<>(Arrays.asList(fooAction)));
JpaRepositoryTransition transitionS1 = new JpaRepositoryTransition(stateS1, stateS1, "H");
transitionS1.setKind(TransitionKind.INTERNAL);
JpaRepositoryTransition transitionS2 = new JpaRepositoryTransition(stateS2, stateS2, "H");
transitionS2.setKind(TransitionKind.INTERNAL);
transitionS2.setGuard(foo1Guard);
transitionS2.setActions(new HashSet<>(Arrays.asList(fooAction)));
JpaRepositoryTransition transitionS11ToS12 = new JpaRepositoryTransition(stateS11, stateS12, "I");
JpaRepositoryTransition transitionS12ToS212 = new JpaRepositoryTransition(stateS12, stateS212, "I");
JpaRepositoryTransition transitionS211ToS12 = new JpaRepositoryTransition(stateS211, stateS12, "I");
JpaRepositoryTransition transitionS11 = new JpaRepositoryTransition(stateS11, stateS11, "J");
JpaRepositoryTransition transitionS2ToS1 = new JpaRepositoryTransition(stateS2, stateS1, "K");
transitionRepository.save(transitionS1ToS1);
transitionRepository.save(transitionS1ToS11);
transitionRepository.save(transitionS21ToS211);
transitionRepository.save(transitionS1ToS2);
transitionRepository.save(transitionS1ToS0);
transitionRepository.save(transitionS211ToS21);
transitionRepository.save(transitionS0ToS211);
transitionRepository.save(transitionS1ToS211);
transitionRepository.save(transitionS2ToS21);
transitionRepository.save(transitionS11ToS211);
transitionRepository.save(transitionS0);
transitionRepository.save(transitionS1);
transitionRepository.save(transitionS2);
transitionRepository.save(transitionS11ToS12);
transitionRepository.save(transitionS12ToS212);
transitionRepository.save(transitionS211ToS12);
transitionRepository.save(transitionS11);
transitionRepository.save(transitionS2ToS1);
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
@EnableStateMachineFactory
public static class StateMachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> {

View File

@@ -86,6 +86,13 @@ public class MongoDbJsonTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(TestConfig.class, ShowcaseMachineBeansConfig.class, ShowcaseMachineConfig.class, StateMachineFactoryConfig.class);
context.refresh();
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
public static class SimpleMachineConfig {
@@ -108,6 +115,17 @@ public class MongoDbJsonTckTests extends AbstractTckTests {
}
}
@Configuration
public static class ShowcaseMachineConfig {
@Bean
public StateMachineJackson2RepositoryPopulatorFactoryBean jackson2RepositoryPopulatorFactoryBean() {
StateMachineJackson2RepositoryPopulatorFactoryBean factoryBean = new StateMachineJackson2RepositoryPopulatorFactoryBean();
factoryBean.setResources(new Resource[]{new ClassPathResource("org/springframework/statemachine/buildtests/tck/mongodb/ShowcaseMachine.json")});
return factoryBean;
}
}
@Configuration
@EnableStateMachineFactory
public static class StateMachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> {

View File

@@ -15,6 +15,9 @@
*/
package org.springframework.statemachine.buildtests.tck.mongodb;
import java.util.Arrays;
import java.util.HashSet;
import org.junit.Rule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -35,12 +38,15 @@ import org.springframework.statemachine.data.RepositoryStateMachineModelFactory;
import org.springframework.statemachine.data.RepositoryTransition;
import org.springframework.statemachine.data.StateRepository;
import org.springframework.statemachine.data.TransitionRepository;
import org.springframework.statemachine.data.mongodb.MongoDbActionRepository;
import org.springframework.statemachine.data.mongodb.MongoDbGuardRepository;
import org.springframework.statemachine.data.mongodb.MongoDbRepositoryAction;
import org.springframework.statemachine.data.mongodb.MongoDbRepositoryGuard;
import org.springframework.statemachine.data.mongodb.MongoDbRepositoryState;
import org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition;
import org.springframework.statemachine.data.mongodb.MongoDbStateRepository;
import org.springframework.statemachine.data.mongodb.MongoDbTransitionRepository;
import org.springframework.statemachine.transition.TransitionKind;
/**
* Tck tests for machine configs build manually agains repository interfaces.
@@ -130,6 +136,110 @@ public class MongoDbManualTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(ShowcaseMachineBeansConfig.class, TestConfig.class, StateMachineFactoryConfig.class);
context.refresh();
MongoDbStateRepository stateRepository = context.getBean(MongoDbStateRepository.class);
MongoDbTransitionRepository transitionRepository = context.getBean(MongoDbTransitionRepository.class);
MongoDbActionRepository actionRepository = context.getBean(MongoDbActionRepository.class);
MongoDbGuardRepository guardRepository = context.getBean(MongoDbGuardRepository.class);
MongoDbRepositoryGuard foo0Guard = new MongoDbRepositoryGuard();
foo0Guard.setName("foo0Guard");
MongoDbRepositoryGuard foo1Guard = new MongoDbRepositoryGuard();
foo1Guard.setName("foo1Guard");
MongoDbRepositoryAction fooAction = new MongoDbRepositoryAction();
fooAction.setName("fooAction");
guardRepository.save(foo0Guard);
guardRepository.save(foo1Guard);
actionRepository.save(fooAction);
MongoDbRepositoryState stateS0 = new MongoDbRepositoryState("S0", true);
stateS0.setInitialAction(fooAction);
MongoDbRepositoryState stateS1 = new MongoDbRepositoryState("S1", true);
stateS1.setParentState(stateS0);
MongoDbRepositoryState stateS11 = new MongoDbRepositoryState("S11", true);
stateS11.setParentState(stateS1);
MongoDbRepositoryState stateS12 = new MongoDbRepositoryState("S12");
stateS12.setParentState(stateS1);
MongoDbRepositoryState stateS2 = new MongoDbRepositoryState("S2");
stateS2.setParentState(stateS0);
MongoDbRepositoryState stateS21 = new MongoDbRepositoryState("S21", true);
stateS21.setParentState(stateS2);
MongoDbRepositoryState stateS211 = new MongoDbRepositoryState("S211", true);
stateS211.setParentState(stateS21);
MongoDbRepositoryState stateS212 = new MongoDbRepositoryState("S212");
stateS212.setParentState(stateS21);
stateRepository.save(stateS0);
stateRepository.save(stateS1);
stateRepository.save(stateS11);
stateRepository.save(stateS12);
stateRepository.save(stateS2);
stateRepository.save(stateS21);
stateRepository.save(stateS211);
stateRepository.save(stateS212);
MongoDbRepositoryTransition transitionS1ToS1 = new MongoDbRepositoryTransition(stateS1, stateS1, "A");
transitionS1ToS1.setGuard(foo1Guard);
MongoDbRepositoryTransition transitionS1ToS11 = new MongoDbRepositoryTransition(stateS1, stateS11, "B");
MongoDbRepositoryTransition transitionS21ToS211 = new MongoDbRepositoryTransition(stateS21, stateS211, "B");
MongoDbRepositoryTransition transitionS1ToS2 = new MongoDbRepositoryTransition(stateS1, stateS2, "C");
MongoDbRepositoryTransition transitionS1ToS0 = new MongoDbRepositoryTransition(stateS1, stateS0, "D");
MongoDbRepositoryTransition transitionS211ToS21 = new MongoDbRepositoryTransition(stateS211, stateS21, "D");
MongoDbRepositoryTransition transitionS0ToS211 = new MongoDbRepositoryTransition(stateS0, stateS211, "E");
MongoDbRepositoryTransition transitionS1ToS211 = new MongoDbRepositoryTransition(stateS1, stateS211, "F");
MongoDbRepositoryTransition transitionS2ToS21 = new MongoDbRepositoryTransition(stateS2, stateS21, "F");
MongoDbRepositoryTransition transitionS11ToS211 = new MongoDbRepositoryTransition(stateS11, stateS211, "G");
MongoDbRepositoryTransition transitionS0 = new MongoDbRepositoryTransition(stateS0, stateS0, "H");
transitionS0.setKind(TransitionKind.INTERNAL);
transitionS0.setGuard(foo0Guard);
transitionS0.setActions(new HashSet<>(Arrays.asList(fooAction)));
MongoDbRepositoryTransition transitionS1 = new MongoDbRepositoryTransition(stateS1, stateS1, "H");
transitionS1.setKind(TransitionKind.INTERNAL);
MongoDbRepositoryTransition transitionS2 = new MongoDbRepositoryTransition(stateS2, stateS2, "H");
transitionS2.setKind(TransitionKind.INTERNAL);
transitionS2.setGuard(foo1Guard);
transitionS2.setActions(new HashSet<>(Arrays.asList(fooAction)));
MongoDbRepositoryTransition transitionS11ToS12 = new MongoDbRepositoryTransition(stateS11, stateS12, "I");
MongoDbRepositoryTransition transitionS12ToS212 = new MongoDbRepositoryTransition(stateS12, stateS212, "I");
MongoDbRepositoryTransition transitionS211ToS12 = new MongoDbRepositoryTransition(stateS211, stateS12, "I");
MongoDbRepositoryTransition transitionS11 = new MongoDbRepositoryTransition(stateS11, stateS11, "J");
MongoDbRepositoryTransition transitionS2ToS1 = new MongoDbRepositoryTransition(stateS2, stateS1, "K");
transitionRepository.save(transitionS1ToS1);
transitionRepository.save(transitionS1ToS11);
transitionRepository.save(transitionS21ToS211);
transitionRepository.save(transitionS1ToS2);
transitionRepository.save(transitionS1ToS0);
transitionRepository.save(transitionS211ToS21);
transitionRepository.save(transitionS0ToS211);
transitionRepository.save(transitionS1ToS211);
transitionRepository.save(transitionS2ToS21);
transitionRepository.save(transitionS11ToS211);
transitionRepository.save(transitionS0);
transitionRepository.save(transitionS1);
transitionRepository.save(transitionS2);
transitionRepository.save(transitionS11ToS12);
transitionRepository.save(transitionS12ToS212);
transitionRepository.save(transitionS211ToS12);
transitionRepository.save(transitionS11);
transitionRepository.save(transitionS2ToS1);
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
@EnableStateMachineFactory
public static class StateMachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> {

View File

@@ -86,6 +86,13 @@ public class RedisJsonTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(TestConfig.class, ShowcaseMachineBeansConfig.class, ShowcaseMachineConfig.class, StateMachineFactoryConfig.class);
context.refresh();
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
public static class SimpleMachineConfig {
@@ -108,6 +115,17 @@ public class RedisJsonTckTests extends AbstractTckTests {
}
}
@Configuration
public static class ShowcaseMachineConfig {
@Bean
public StateMachineJackson2RepositoryPopulatorFactoryBean jackson2RepositoryPopulatorFactoryBean() {
StateMachineJackson2RepositoryPopulatorFactoryBean factoryBean = new StateMachineJackson2RepositoryPopulatorFactoryBean();
factoryBean.setResources(new Resource[]{new ClassPathResource("org/springframework/statemachine/buildtests/tck/redis/ShowcaseMachine.json")});
return factoryBean;
}
}
@Configuration
@EnableStateMachineFactory
public static class StateMachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> {

View File

@@ -15,6 +15,9 @@
*/
package org.springframework.statemachine.buildtests.tck.redis;
import java.util.Arrays;
import java.util.HashSet;
import org.junit.Rule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -35,12 +38,15 @@ import org.springframework.statemachine.data.RepositoryStateMachineModelFactory;
import org.springframework.statemachine.data.RepositoryTransition;
import org.springframework.statemachine.data.StateRepository;
import org.springframework.statemachine.data.TransitionRepository;
import org.springframework.statemachine.data.redis.RedisActionRepository;
import org.springframework.statemachine.data.redis.RedisGuardRepository;
import org.springframework.statemachine.data.redis.RedisRepositoryAction;
import org.springframework.statemachine.data.redis.RedisRepositoryGuard;
import org.springframework.statemachine.data.redis.RedisRepositoryState;
import org.springframework.statemachine.data.redis.RedisRepositoryTransition;
import org.springframework.statemachine.data.redis.RedisStateRepository;
import org.springframework.statemachine.data.redis.RedisTransitionRepository;
import org.springframework.statemachine.transition.TransitionKind;
/**
* Tck tests for machine configs build manually agains repository interfaces.
@@ -131,6 +137,110 @@ public class RedisManualTckTests extends AbstractTckTests {
return getStateMachineFactoryFromContext().getStateMachine();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(ShowcaseMachineBeansConfig.class, TestConfig.class, StateMachineFactoryConfig.class);
context.refresh();
RedisStateRepository stateRepository = context.getBean(RedisStateRepository.class);
RedisTransitionRepository transitionRepository = context.getBean(RedisTransitionRepository.class);
RedisActionRepository actionRepository = context.getBean(RedisActionRepository.class);
RedisGuardRepository guardRepository = context.getBean(RedisGuardRepository.class);
RedisRepositoryGuard foo0Guard = new RedisRepositoryGuard();
foo0Guard.setName("foo0Guard");
RedisRepositoryGuard foo1Guard = new RedisRepositoryGuard();
foo1Guard.setName("foo1Guard");
RedisRepositoryAction fooAction = new RedisRepositoryAction();
fooAction.setName("fooAction");
guardRepository.save(foo0Guard);
guardRepository.save(foo1Guard);
actionRepository.save(fooAction);
RedisRepositoryState stateS0 = new RedisRepositoryState("S0", true);
stateS0.setInitialAction(fooAction);
RedisRepositoryState stateS1 = new RedisRepositoryState("S1", true);
stateS1.setParentState(stateS0);
RedisRepositoryState stateS11 = new RedisRepositoryState("S11", true);
stateS11.setParentState(stateS1);
RedisRepositoryState stateS12 = new RedisRepositoryState("S12");
stateS12.setParentState(stateS1);
RedisRepositoryState stateS2 = new RedisRepositoryState("S2");
stateS2.setParentState(stateS0);
RedisRepositoryState stateS21 = new RedisRepositoryState("S21", true);
stateS21.setParentState(stateS2);
RedisRepositoryState stateS211 = new RedisRepositoryState("S211", true);
stateS211.setParentState(stateS21);
RedisRepositoryState stateS212 = new RedisRepositoryState("S212");
stateS212.setParentState(stateS21);
stateRepository.save(stateS0);
stateRepository.save(stateS1);
stateRepository.save(stateS11);
stateRepository.save(stateS12);
stateRepository.save(stateS2);
stateRepository.save(stateS21);
stateRepository.save(stateS211);
stateRepository.save(stateS212);
RedisRepositoryTransition transitionS1ToS1 = new RedisRepositoryTransition(stateS1, stateS1, "A");
transitionS1ToS1.setGuard(foo1Guard);
RedisRepositoryTransition transitionS1ToS11 = new RedisRepositoryTransition(stateS1, stateS11, "B");
RedisRepositoryTransition transitionS21ToS211 = new RedisRepositoryTransition(stateS21, stateS211, "B");
RedisRepositoryTransition transitionS1ToS2 = new RedisRepositoryTransition(stateS1, stateS2, "C");
RedisRepositoryTransition transitionS1ToS0 = new RedisRepositoryTransition(stateS1, stateS0, "D");
RedisRepositoryTransition transitionS211ToS21 = new RedisRepositoryTransition(stateS211, stateS21, "D");
RedisRepositoryTransition transitionS0ToS211 = new RedisRepositoryTransition(stateS0, stateS211, "E");
RedisRepositoryTransition transitionS1ToS211 = new RedisRepositoryTransition(stateS1, stateS211, "F");
RedisRepositoryTransition transitionS2ToS21 = new RedisRepositoryTransition(stateS2, stateS21, "F");
RedisRepositoryTransition transitionS11ToS211 = new RedisRepositoryTransition(stateS11, stateS211, "G");
RedisRepositoryTransition transitionS0 = new RedisRepositoryTransition(stateS0, stateS0, "H");
transitionS0.setKind(TransitionKind.INTERNAL);
transitionS0.setGuard(foo0Guard);
transitionS0.setActions(new HashSet<>(Arrays.asList(fooAction)));
RedisRepositoryTransition transitionS1 = new RedisRepositoryTransition(stateS1, stateS1, "H");
transitionS1.setKind(TransitionKind.INTERNAL);
RedisRepositoryTransition transitionS2 = new RedisRepositoryTransition(stateS2, stateS2, "H");
transitionS2.setKind(TransitionKind.INTERNAL);
transitionS2.setGuard(foo1Guard);
transitionS2.setActions(new HashSet<>(Arrays.asList(fooAction)));
RedisRepositoryTransition transitionS11ToS12 = new RedisRepositoryTransition(stateS11, stateS12, "I");
RedisRepositoryTransition transitionS12ToS212 = new RedisRepositoryTransition(stateS12, stateS212, "I");
RedisRepositoryTransition transitionS211ToS12 = new RedisRepositoryTransition(stateS211, stateS12, "I");
RedisRepositoryTransition transitionS11 = new RedisRepositoryTransition(stateS11, stateS11, "J");
RedisRepositoryTransition transitionS2ToS1 = new RedisRepositoryTransition(stateS2, stateS1, "K");
transitionRepository.save(transitionS1ToS1);
transitionRepository.save(transitionS1ToS11);
transitionRepository.save(transitionS21ToS211);
transitionRepository.save(transitionS1ToS2);
transitionRepository.save(transitionS1ToS0);
transitionRepository.save(transitionS211ToS21);
transitionRepository.save(transitionS0ToS211);
transitionRepository.save(transitionS1ToS211);
transitionRepository.save(transitionS2ToS21);
transitionRepository.save(transitionS11ToS211);
transitionRepository.save(transitionS0);
transitionRepository.save(transitionS1);
transitionRepository.save(transitionS2);
transitionRepository.save(transitionS11ToS12);
transitionRepository.save(transitionS12ToS212);
transitionRepository.save(transitionS211ToS12);
transitionRepository.save(transitionS11);
transitionRepository.save(transitionS2ToS1);
return getStateMachineFactoryFromContext().getStateMachine();
}
@Configuration
@EnableStateMachineFactory
public static class StateMachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> {

View File

@@ -53,6 +53,13 @@ public class UmlTckTests extends AbstractTckTests {
return getStateMachineFromContext();
}
@Override
protected StateMachine<String, String> getShowcaseMachine() throws Exception {
context.register(ShowcaseMachineConfig.class);
context.refresh();
return getStateMachineFromContext();
}
@Configuration
@EnableStateMachine
public static class SimpleMachineConfig extends StateMachineConfigurerAdapter<String, String> {
@@ -86,4 +93,36 @@ public class UmlTckTests extends AbstractTckTests {
return new UmlStateMachineModelFactory("classpath:org/springframework/statemachine/buildtests/tck/uml/SimpleSubMachine.uml");
}
}
@Configuration
@EnableStateMachine
public static class ShowcaseMachineConfig extends StateMachineConfigurerAdapter<String, String> {
@Override
public void configure(StateMachineModelConfigurer<String, String> model) throws Exception {
model
.withModel()
.factory(modelFactory());
}
@Bean
public StateMachineModelFactory<String, String> modelFactory() {
return new UmlStateMachineModelFactory("classpath:org/springframework/statemachine/buildtests/tck/uml/ShowcaseMachine.uml");
}
@Bean
public FooGuard foo0Guard() {
return new FooGuard(0);
}
@Bean
public FooGuard foo1Guard() {
return new FooGuard(1);
}
@Bean
public FooAction fooAction() {
return new FooAction();
}
}
}

View File

@@ -0,0 +1,186 @@
[
{
"@id": "1",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryAction",
"name": "fooAction"
},
{
"@id": "2",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryGuard",
"name": "foo0Guard"
},
{
"@id": "3",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryGuard",
"name": "foo1Guard"
},
{
"@id": "4",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"initial": true,
"initialAction": "1",
"state": "S0"
},
{
"@id": "5",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "4",
"initial": true,
"state": "S1"
},
{
"@id": "6",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "5",
"initial": true,
"state": "S11"
},
{
"@id": "7",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "5",
"state": "S12"
},
{
"@id": "8",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "4",
"state": "S2"
},
{
"@id": "9",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "8",
"initial": true,
"state": "S21"
},
{
"@id": "10",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "9",
"initial": true,
"state": "S211"
},
{
"@id": "11",
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryState",
"parentState": "9",
"state": "S212"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "5",
"target": "5",
"event": "A",
"guard": "3"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "5",
"target": "6",
"event": "B"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "9",
"target": "10",
"event": "B"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "5",
"target": "8",
"event": "C"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "5",
"target": "4",
"event": "D"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "10",
"target": "9",
"event": "D"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "4",
"target": "10",
"event": "E"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "5",
"target": "10",
"event": "F"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "8",
"target": "9",
"event": "F"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "6",
"target": "10",
"event": "G"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "4",
"target": "4",
"kind": "INTERNAL",
"guard": "2",
"actions": ["1"],
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "5",
"target": "5",
"kind": "INTERNAL",
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "8",
"target": "8",
"kind": "INTERNAL",
"guard": "3",
"actions": ["1"],
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "6",
"target": "7",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "7",
"target": "11",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "10",
"target": "7",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "6",
"target": "6",
"event": "J"
},
{
"_class": "org.springframework.statemachine.data.jpa.JpaRepositoryTransition",
"source": "8",
"target": "5",
"event": "K"
}
]

View File

@@ -0,0 +1,186 @@
[
{
"@id": "1",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryAction",
"name": "fooAction"
},
{
"@id": "2",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryGuard",
"name": "foo0Guard"
},
{
"@id": "3",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryGuard",
"name": "foo1Guard"
},
{
"@id": "4",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"initial": true,
"initialAction": "1",
"state": "S0"
},
{
"@id": "5",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "4",
"initial": true,
"state": "S1"
},
{
"@id": "6",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "5",
"initial": true,
"state": "S11"
},
{
"@id": "7",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "5",
"state": "S12"
},
{
"@id": "8",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "4",
"state": "S2"
},
{
"@id": "9",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "8",
"initial": true,
"state": "S21"
},
{
"@id": "10",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "9",
"initial": true,
"state": "S211"
},
{
"@id": "11",
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryState",
"parentState": "9",
"state": "S212"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "5",
"target": "5",
"event": "A",
"guard": "3"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "5",
"target": "6",
"event": "B"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "9",
"target": "10",
"event": "B"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "5",
"target": "8",
"event": "C"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "5",
"target": "4",
"event": "D"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "10",
"target": "9",
"event": "D"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "4",
"target": "10",
"event": "E"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "5",
"target": "10",
"event": "F"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "8",
"target": "9",
"event": "F"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "6",
"target": "10",
"event": "G"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "4",
"target": "4",
"kind": "INTERNAL",
"guard": "2",
"actions": ["1"],
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "5",
"target": "5",
"kind": "INTERNAL",
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "8",
"target": "8",
"kind": "INTERNAL",
"guard": "3",
"actions": ["1"],
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "6",
"target": "7",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "7",
"target": "11",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "10",
"target": "7",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "6",
"target": "6",
"event": "J"
},
{
"_class": "org.springframework.statemachine.data.mongodb.MongoDbRepositoryTransition",
"source": "8",
"target": "5",
"event": "K"
}
]

View File

@@ -0,0 +1,186 @@
[
{
"@id": "1",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryAction",
"name": "fooAction"
},
{
"@id": "2",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryGuard",
"name": "foo0Guard"
},
{
"@id": "3",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryGuard",
"name": "foo1Guard"
},
{
"@id": "4",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"initial": true,
"initialAction": "1",
"state": "S0"
},
{
"@id": "5",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "4",
"initial": true,
"state": "S1"
},
{
"@id": "6",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "5",
"initial": true,
"state": "S11"
},
{
"@id": "7",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "5",
"state": "S12"
},
{
"@id": "8",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "4",
"state": "S2"
},
{
"@id": "9",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "8",
"initial": true,
"state": "S21"
},
{
"@id": "10",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "9",
"initial": true,
"state": "S211"
},
{
"@id": "11",
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryState",
"parentState": "9",
"state": "S212"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "5",
"target": "5",
"event": "A",
"guard": "3"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "5",
"target": "6",
"event": "B"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "9",
"target": "10",
"event": "B"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "5",
"target": "8",
"event": "C"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "5",
"target": "4",
"event": "D"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "10",
"target": "9",
"event": "D"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "4",
"target": "10",
"event": "E"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "5",
"target": "10",
"event": "F"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "8",
"target": "9",
"event": "F"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "6",
"target": "10",
"event": "G"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "4",
"target": "4",
"kind": "INTERNAL",
"guard": "2",
"actions": ["1"],
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "5",
"target": "5",
"kind": "INTERNAL",
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "8",
"target": "8",
"kind": "INTERNAL",
"guard": "3",
"actions": ["1"],
"event": "H"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "6",
"target": "7",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "7",
"target": "11",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "10",
"target": "7",
"event": "I"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "6",
"target": "6",
"event": "J"
},
{
"_class": "org.springframework.statemachine.data.redis.RedisRepositoryTransition",
"source": "8",
"target": "5",
"event": "K"
}
]

View File

@@ -1,97 +1,88 @@
<?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="_uXOeAQ7PEeaxyZlCCSfciw" type="PapyrusUMLStateMachineDiagram" name="StateMachine Diagram" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_uXOeAg7PEeaxyZlCCSfciw" type="2000">
<children xmi:type="notation:DecorationNode" xmi:id="_uXOeAw7PEeaxyZlCCSfciw" type="2001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeBA7PEeaxyZlCCSfciw" width="1204" height="23"/>
<children xmi:type="notation:Shape" xmi:id="_uXOeAg7PEeaxyZlCCSfciw" type="StateMachine_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_uXOeAw7PEeaxyZlCCSfciw" type="StateMachine_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeBA7PEeaxyZlCCSfciw" width="1207" height="23"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_uXOeBQ7PEeaxyZlCCSfciw" type="2002">
<children xmi:type="notation:Shape" xmi:id="_uXOeBg7PEeaxyZlCCSfciw" type="3000">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIJ04LCLEeajqum4nY78QQ" type="StateMachine_RegionCompartment">
<children xmi:type="notation:Shape" xmi:id="_uXOeBg7PEeaxyZlCCSfciw" type="Region_Shape">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uXOeBw7PEeaxyZlCCSfciw" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uXOeCA7PEeaxyZlCCSfciw" key="RegionZoneKey" value=""/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_uXOeCQ7PEeaxyZlCCSfciw" type="3002">
<children xmi:type="notation:Shape" xmi:id="_BWOeoA7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_BWPFsA7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:BasicCompartment" xmi:id="_BILqELCLEeajqum4nY78QQ" type="Region_SubvertexCompartment">
<children xmi:type="notation:Shape" xmi:id="_BWOeoA7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_BWPFsA7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ECkwIA7QEeaxyZlCCSfciw" width="1067" height="42"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_BWPFsQ7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_BWPFsQ7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_BWPFsg7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_BWPFsw7QEeaxyZlCCSfciw" type="6002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_K7xckA7QEeaxyZlCCSfciw" source="PapyrusCSSForceValue">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K7xckQ7QEeaxyZlCCSfciw" key="visible" value="true"/>
</eAnnotations>
<children xmi:type="notation:Shape" xmi:id="_K7zRwA7QEeaxyZlCCSfciw" type="3000">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIMRILCLEeajqum4nY78QQ" type="State_RegionCompartment">
<children xmi:type="notation:Shape" xmi:id="_K7zRwA7QEeaxyZlCCSfciw" type="Region_Shape">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_K7z40g7QEeaxyZlCCSfciw" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K7z40w7QEeaxyZlCCSfciw" key="RegionZoneKey" value=""/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_K7z40A7QEeaxyZlCCSfciw" type="3002">
<children xmi:type="notation:Shape" xmi:id="_K70f4A7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_K70f4g7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:BasicCompartment" xmi:id="_BINfQLCLEeajqum4nY78QQ" type="Region_SubvertexCompartment">
<children xmi:type="notation:Shape" xmi:id="_K70f4A7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_K70f4g7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y8gMYA7QEeaxyZlCCSfciw" width="336" height="42"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_K70f4w7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_K70f4w7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_K70f5A7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_K70f5Q7QEeaxyZlCCSfciw" type="6002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eZD7sA7QEeaxyZlCCSfciw" source="PapyrusCSSForceValue">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eZD7sQ7QEeaxyZlCCSfciw" key="visible" value="true"/>
</eAnnotations>
<children xmi:type="notation:Shape" xmi:id="_eZEiwA7QEeaxyZlCCSfciw" type="3000">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIOGULCLEeajqum4nY78QQ" type="State_RegionCompartment">
<children xmi:type="notation:Shape" xmi:id="_eZEiwA7QEeaxyZlCCSfciw" type="Region_Shape">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eZEixA7QEeaxyZlCCSfciw" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eZEixQ7QEeaxyZlCCSfciw" key="RegionZoneKey" value=""/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_eZEiwg7QEeaxyZlCCSfciw" type="3002">
<children xmi:type="notation:Shape" xmi:id="_eZFJ0Q7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_eZFJ0w7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIOtYLCLEeajqum4nY78QQ" type="Region_SubvertexCompartment">
<children xmi:type="notation:Shape" xmi:id="_eZFJ0Q7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_eZFJ0w7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_twTygA7QEeaxyZlCCSfciw" width="140"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_eZFJ1A7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_eZFJ1A7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_eZFJ1Q7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_eZFJ1g7QEeaxyZlCCSfciw" type="6002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ab2LsA9tEeaqleSKKcvuHQ" source="PapyrusCSSForceValue">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ab2ywA9tEeaqleSKKcvuHQ" key="visible" value="true"/>
</eAnnotations>
<children xmi:type="notation:BasicCompartment" xmi:id="_BIOtYbCLEeajqum4nY78QQ" type="State_RegionCompartment">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_eZFJ1w7QEeaxyZlCCSfciw" y="-1" width="140"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_gTTNQA7wEeaqleSKKcvuHQ" type="compartment_shape_display">
<styles xmi:type="notation:TitleStyle" xmi:id="_gTTNQQ7wEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_gTTNQg7wEeaqleSKKcvuHQ"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Ab1koA9tEeaqleSKKcvuHQ" type="680">
<element xmi:type="uml:Transition" href="showcase.uml#_8uH8wA9sEeaqleSKKcvuHQ"/>
<children xmi:type="notation:Shape" xmi:id="_Ab1koA9tEeaqleSKKcvuHQ" type="Transition_InternalTransitionLabel">
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_8uH8wA9sEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_Ab1koQ9tEeaqleSKKcvuHQ"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_eZFJ0A7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_eZFJ0A7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_eZFJ0g7QEeaxyZlCCSfciw" x="106" y="41" width="140" height="149"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_gBocAA7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_gBocAg7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:Shape" xmi:id="_gBocAA7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_gBocAg7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyMxwA7QEeaxyZlCCSfciw" width="140"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_gBocAw7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_gBocAw7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_gBocBA7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_gBocBQ7QEeaxyZlCCSfciw" type="6002">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIPUcLCLEeajqum4nY78QQ" type="State_RegionCompartment">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_gBocBg7QEeaxyZlCCSfciw" y="-1" width="140"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_gBggMA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_gBggMA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_gBocAQ7QEeaxyZlCCSfciw" x="106" y="319" width="140" height="83"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_rSTCgA7REeaxyZlCCSfciw" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_rSTCgg7REeaxyZlCCSfciw" type="8001">
<children xmi:type="notation:Shape" xmi:id="_rSTCgA7REeaxyZlCCSfciw" type="Pseudostate_InitialShape">
<children xmi:type="notation:DecorationNode" xmi:id="_rSTCgg7REeaxyZlCCSfciw" type="Pseudostate_InitialFloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_rSTCgw7REeaxyZlCCSfciw" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_rSTChA7REeaxyZlCCSfciw" type="8002">
<children xmi:type="notation:DecorationNode" xmi:id="_rSTChA7REeaxyZlCCSfciw" type="Pseudostate_InitialStereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_rSTChQ7REeaxyZlCCSfciw" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="showcase.uml#_rSEZAA7REeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_rSTCgQ7REeaxyZlCCSfciw" x="23" y="50"/>
<element xmi:type="uml:Pseudostate" href="ShowcaseMachine.uml#_rSEZAA7REeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_rSTCgQ7REeaxyZlCCSfciw" x="24" y="57"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_eZEiww7QEeaxyZlCCSfciw"/>
</children>
<element xmi:type="uml:Region" href="showcase.uml#_eZD7sg7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:Region" href="ShowcaseMachine.uml#_eZD7sg7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_eZEiwQ7QEeaxyZlCCSfciw" width="336" height="493"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_K70f5g7QEeaxyZlCCSfciw" y="42" width="336" height="493"/>
@@ -100,104 +91,98 @@
<styles xmi:type="notation:TitleStyle" xmi:id="_gTQJ8Q7wEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_gTQJ8g7wEeaqleSKKcvuHQ"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_KieLgA9vEeaqleSKKcvuHQ" type="680">
<element xmi:type="uml:Transition" href="showcase.uml#_H5UX8A9vEeaqleSKKcvuHQ"/>
<children xmi:type="notation:Shape" xmi:id="_KieLgA9vEeaqleSKKcvuHQ" type="Transition_InternalTransitionLabel">
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_H5UX8A9vEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_KieLgQ9vEeaqleSKKcvuHQ"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_K7z41A7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_K7z41A7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_K70f4Q7QEeaxyZlCCSfciw" x="118" y="26" width="336" height="535"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_LkV4cA7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_LkV4cg7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:Shape" xmi:id="_LkV4cA7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_LkV4cg7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zy5B0A7QEeaxyZlCCSfciw" width="447" height="42"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_LkV4cw7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_LkV4cw7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_LkV4dA7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_LkV4dQ7QEeaxyZlCCSfciw" type="6002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h8g0UA7QEeaxyZlCCSfciw" source="PapyrusCSSForceValue">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h8g0UQ7QEeaxyZlCCSfciw" key="visible" value="true"/>
</eAnnotations>
<children xmi:type="notation:Shape" xmi:id="_h8g0Uw7QEeaxyZlCCSfciw" type="3000">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIPUcbCLEeajqum4nY78QQ" type="State_RegionCompartment">
<children xmi:type="notation:Shape" xmi:id="_h8g0Uw7QEeaxyZlCCSfciw" type="Region_Shape">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h8hbYg7QEeaxyZlCCSfciw" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h8hbYw7QEeaxyZlCCSfciw" key="RegionZoneKey" value=""/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_h8hbYA7QEeaxyZlCCSfciw" type="3002">
<children xmi:type="notation:Shape" xmi:id="_h8hbZQ7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_h8hbZw7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIP7gLCLEeajqum4nY78QQ" type="Region_SubvertexCompartment">
<children xmi:type="notation:Shape" xmi:id="_h8hbZQ7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_h8hbZw7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_kRypoA7QEeaxyZlCCSfciw" width="313" height="23"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_h8hbaA7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_h8hbaA7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_h8hbaQ7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_h8iCcA7QEeaxyZlCCSfciw" type="6002">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ku2ZEA7QEeaxyZlCCSfciw" source="PapyrusCSSForceValue">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ku2ZEQ7QEeaxyZlCCSfciw" key="visible" value="true"/>
</eAnnotations>
<children xmi:type="notation:Shape" xmi:id="_ku3AIQ7QEeaxyZlCCSfciw" type="3000">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIP7gbCLEeajqum4nY78QQ" type="State_RegionCompartment">
<children xmi:type="notation:Shape" xmi:id="_ku3AIQ7QEeaxyZlCCSfciw" type="Region_Shape">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ku3AJQ7QEeaxyZlCCSfciw" source="RegionAnnotationKey">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ku3AJg7QEeaxyZlCCSfciw" key="RegionZoneKey" value=""/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_ku3AIw7QEeaxyZlCCSfciw" type="3002">
<children xmi:type="notation:Shape" xmi:id="_ku3nMQ7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_ku3nMw7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIQikLCLEeajqum4nY78QQ" type="Region_SubvertexCompartment">
<children xmi:type="notation:Shape" xmi:id="_ku3nMQ7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_ku3nMw7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyMKsQ7QEeaxyZlCCSfciw" width="140"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ku3nNA7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_ku3nNA7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ku3nNQ7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ku3nNg7QEeaxyZlCCSfciw" type="6002">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIRJoLCLEeajqum4nY78QQ" type="State_RegionCompartment">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ku3nNw7QEeaxyZlCCSfciw" y="-1" width="140"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_ku3nMA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_ku3nMA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ku3nMg7QEeaxyZlCCSfciw" x="102" y="36" width="140" height="200"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_mFe00A7QEeaxyZlCCSfciw" type="6000">
<children xmi:type="notation:DecorationNode" xmi:id="_mFe00g7QEeaxyZlCCSfciw" type="6001">
<children xmi:type="notation:Shape" xmi:id="_mFe00A7QEeaxyZlCCSfciw" type="State_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_mFe00g7QEeaxyZlCCSfciw" type="State_NameLabel">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyMKsA7QEeaxyZlCCSfciw" width="139"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_mFe00w7QEeaxyZlCCSfciw" type="19003">
<children xmi:type="notation:DecorationNode" xmi:id="_mFe00w7QEeaxyZlCCSfciw" type="State_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_mFe01A7QEeaxyZlCCSfciw" x="40"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_mFe01Q7QEeaxyZlCCSfciw" type="6002">
<children xmi:type="notation:BasicCompartment" xmi:id="_BIRJobCLEeajqum4nY78QQ" type="State_RegionCompartment">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mFe01g7QEeaxyZlCCSfciw" y="-1" width="139"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_mFUcwA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_mFUcwA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mFe00Q7QEeaxyZlCCSfciw" x="103" y="303" width="139" height="83"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_ueSdYA7REeaxyZlCCSfciw" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_ueSdYg7REeaxyZlCCSfciw" type="8001">
<children xmi:type="notation:Shape" xmi:id="_ueSdYA7REeaxyZlCCSfciw" type="Pseudostate_InitialShape">
<children xmi:type="notation:DecorationNode" xmi:id="_ueSdYg7REeaxyZlCCSfciw" type="Pseudostate_InitialFloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ueSdYw7REeaxyZlCCSfciw" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ueSdZA7REeaxyZlCCSfciw" type="8002">
<children xmi:type="notation:DecorationNode" xmi:id="_ueSdZA7REeaxyZlCCSfciw" type="Pseudostate_InitialStereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ueSdZQ7REeaxyZlCCSfciw" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="showcase.uml#_ueClwA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Pseudostate" href="ShowcaseMachine.uml#_ueClwA7REeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ueSdYQ7REeaxyZlCCSfciw" x="22" y="49"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ku3AJA7QEeaxyZlCCSfciw"/>
</children>
<element xmi:type="uml:Region" href="showcase.uml#_ku3AIA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:Region" href="ShowcaseMachine.uml#_ku3AIA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ku3AIg7QEeaxyZlCCSfciw" width="313" height="398"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8iCcQ7QEeaxyZlCCSfciw" y="23" width="313" height="398"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_h8hbZA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_h8hbZA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8hbZg7QEeaxyZlCCSfciw" x="103" y="24" width="313" height="421"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_r7uaAA7REeaxyZlCCSfciw" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_r7uaAg7REeaxyZlCCSfciw" type="8001">
<children xmi:type="notation:Shape" xmi:id="_r7uaAA7REeaxyZlCCSfciw" type="Pseudostate_InitialShape">
<children xmi:type="notation:DecorationNode" xmi:id="_r7uaAg7REeaxyZlCCSfciw" type="Pseudostate_InitialFloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_r7uaAw7REeaxyZlCCSfciw" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_r7uaBA7REeaxyZlCCSfciw" type="8002">
<children xmi:type="notation:DecorationNode" xmi:id="_r7uaBA7REeaxyZlCCSfciw" type="Pseudostate_InitialStereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_r7uaBQ7REeaxyZlCCSfciw" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="showcase.uml#_r7fJcA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Pseudostate" href="ShowcaseMachine.uml#_r7fJcA7REeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_r7uaAQ7REeaxyZlCCSfciw" x="23" y="58"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8hbYQ7QEeaxyZlCCSfciw"/>
</children>
<element xmi:type="uml:Region" href="showcase.uml#_h8g0Ug7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:Region" href="ShowcaseMachine.uml#_h8g0Ug7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8g0VA7QEeaxyZlCCSfciw" width="447" height="496"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LkV4dg7QEeaxyZlCCSfciw" y="42" width="447" height="496"/>
@@ -206,26 +191,26 @@
<styles xmi:type="notation:TitleStyle" xmi:id="_gTezcQ7wEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_gTezcg7wEeaqleSKKcvuHQ"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_QGEW8A9vEeaqleSKKcvuHQ" type="680">
<element xmi:type="uml:Transition" href="showcase.uml#_ONj9MA9vEeaqleSKKcvuHQ"/>
<children xmi:type="notation:Shape" xmi:id="_QGEW8A9vEeaqleSKKcvuHQ" type="Transition_InternalTransitionLabel">
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_ONj9MA9vEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_QGEW8Q9vEeaqleSKKcvuHQ"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_LkOjsA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_LkOjsA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LkV4cQ7QEeaxyZlCCSfciw" x="550" y="26" width="447" height="538"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_qhIEQA7REeaxyZlCCSfciw" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_qhIEQg7REeaxyZlCCSfciw" type="8001">
<children xmi:type="notation:Shape" xmi:id="_qhIEQA7REeaxyZlCCSfciw" type="Pseudostate_InitialShape">
<children xmi:type="notation:DecorationNode" xmi:id="_qhIEQg7REeaxyZlCCSfciw" type="Pseudostate_InitialFloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_qhIEQw7REeaxyZlCCSfciw" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_qhIERA7REeaxyZlCCSfciw" type="8002">
<children xmi:type="notation:DecorationNode" xmi:id="_qhIERA7REeaxyZlCCSfciw" type="Pseudostate_InitialStereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_qhIERQ7REeaxyZlCCSfciw" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="showcase.uml#_qg1wYA7REeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_qhIEQQ7REeaxyZlCCSfciw" x="23" y="69"/>
<element xmi:type="uml:Pseudostate" href="ShowcaseMachine.uml#_qg1wYA7REeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_qhIEQQ7REeaxyZlCCSfciw" x="23" y="80"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_K7z40Q7QEeaxyZlCCSfciw"/>
</children>
<element xmi:type="uml:Region" href="showcase.uml#_K7yDoA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:Region" href="ShowcaseMachine.uml#_K7yDoA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_K7zRwQ7QEeaxyZlCCSfciw" width="1067" height="601"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_BWPFtA7QEeaxyZlCCSfciw" y="42" width="1067" height="601"/>
@@ -234,355 +219,367 @@
<styles xmi:type="notation:TitleStyle" xmi:id="_gTNGoQ7wEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_gTNGog7wEeaqleSKKcvuHQ"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_4khYMA9uEeaqleSKKcvuHQ" type="680">
<element xmi:type="uml:Transition" href="showcase.uml#_2YuPAA9uEeaqleSKKcvuHQ"/>
<children xmi:type="notation:Shape" xmi:id="_4khYMA9uEeaqleSKKcvuHQ" type="Transition_InternalTransitionLabel">
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_2YuPAA9uEeaqleSKKcvuHQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_4khYMQ9uEeaqleSKKcvuHQ"/>
</children>
<element xmi:type="uml:State" href="showcase.uml#_BWMCYA7QEeaxyZlCCSfciw"/>
<element xmi:type="uml:State" href="ShowcaseMachine.uml#_BWMCYA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_BWOeoQ7QEeaxyZlCCSfciw" x="118" y="11" width="1067" height="643"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_JePuoA7QEeaxyZlCCSfciw" type="8000">
<children xmi:type="notation:DecorationNode" xmi:id="_JePuog7QEeaxyZlCCSfciw" type="8001">
<children xmi:type="notation:Shape" xmi:id="_JePuoA7QEeaxyZlCCSfciw" type="Pseudostate_InitialShape">
<children xmi:type="notation:DecorationNode" xmi:id="_JePuog7QEeaxyZlCCSfciw" type="Pseudostate_InitialFloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JePuow7QEeaxyZlCCSfciw" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_JePupA7QEeaxyZlCCSfciw" type="8002">
<children xmi:type="notation:DecorationNode" xmi:id="_JePupA7QEeaxyZlCCSfciw" type="Pseudostate_InitialStereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JePupQ7QEeaxyZlCCSfciw" x="25" y="-10"/>
</children>
<element xmi:type="uml:Pseudostate" href="showcase.uml#_JeMEQA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_JePuoQ7QEeaxyZlCCSfciw" x="17" y="44"/>
<element xmi:type="uml:Pseudostate" href="ShowcaseMachine.uml#_JeMEQA7QEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_JePuoQ7QEeaxyZlCCSfciw" x="17" y="68"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeCg7PEeaxyZlCCSfciw"/>
</children>
<element xmi:type="uml:Region" href="showcase.uml#_uXOeAA7PEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeCw7PEeaxyZlCCSfciw" width="1204" height="791"/>
<element xmi:type="uml:Region" href="ShowcaseMachine.uml#_uXOeAA7PEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeCw7PEeaxyZlCCSfciw" width="1207" height="687"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeDA7PEeaxyZlCCSfciw" y="23" width="1204" height="791"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeDA7PEeaxyZlCCSfciw" y="23" width="1207" height="687"/>
</children>
<element xmi:type="uml:StateMachine" href="showcase.uml#_uXNP4A7PEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeDQ7PEeaxyZlCCSfciw" x="30" y="30" width="1204" height="814"/>
<element xmi:type="uml:StateMachine" href="ShowcaseMachine.uml#_uXNP4A7PEeaxyZlCCSfciw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uXOeDQ7PEeaxyZlCCSfciw" x="30" y="30" width="1207" height="710"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_uXOeDg7PEeaxyZlCCSfciw" name="diagram_compatibility_version" stringValue="1.1.0"/>
<styles xmi:type="notation:StringValueStyle" xmi:id="_uXOeDg7PEeaxyZlCCSfciw" name="diagram_compatibility_version" stringValue="1.2.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_uXOeDw7PEeaxyZlCCSfciw"/>
<styles xmi:type="style:PapyrusViewStyle" xmi:id="_uXOeEA7PEeaxyZlCCSfciw">
<owner xmi:type="uml:Model" href="showcase.uml#_uXKzoA7PEeaxyZlCCSfciw"/>
<owner xmi:type="uml:Model" href="ShowcaseMachine.uml#_uXKzoA7PEeaxyZlCCSfciw"/>
</styles>
<element xmi:type="uml:StateMachine" href="showcase.uml#_uXNP4A7PEeaxyZlCCSfciw"/>
<edges xmi:type="notation:Connector" xmi:id="_4owGQA7REeaxyZlCCSfciw" type="7000" source="_JePuoA7QEeaxyZlCCSfciw" target="_BWOeoA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_4owGQw7REeaxyZlCCSfciw" type="7001">
<element xmi:type="uml:StateMachine" href="ShowcaseMachine.uml#_uXNP4A7PEeaxyZlCCSfciw"/>
<edges xmi:type="notation:Connector" xmi:id="_4owGQA7REeaxyZlCCSfciw" type="Transition_Edge" source="_JePuoA7QEeaxyZlCCSfciw" target="_BWOeoA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_4owGQw7REeaxyZlCCSfciw" type="Transition_NameLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_bDkOALCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_4owGRA7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_4owtUA7REeaxyZlCCSfciw" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_4owtUA7REeaxyZlCCSfciw" type="Transition_GuardLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_bEFLYLCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_4owtUQ7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_4owtUg7REeaxyZlCCSfciw" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_4owtUw7REeaxyZlCCSfciw" y="60"/>
<children xmi:type="notation:DecorationNode" xmi:id="_4owtUg7REeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_bEpMELCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_4owtUw7REeaxyZlCCSfciw" y="59"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_4owGQQ7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_4ockQA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_4ockQA7REeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4owGQg7REeaxyZlCCSfciw" points="[8, -1, -112, 0]$[91, -20, -29, -19]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4pjXgA7REeaxyZlCCSfciw" id="(1.0,0.45)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4pjXgQ7REeaxyZlCCSfciw" id="(0.0,0.056910569105691054)"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4pjXgA7REeaxyZlCCSfciw" id="(0.9,0.45)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4pjXgQ7REeaxyZlCCSfciw" id="(0.0,0.1026438569206843)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_5U4zgA7REeaxyZlCCSfciw" type="7000" source="_qhIEQA7REeaxyZlCCSfciw" target="_K70f4A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_5U4zgw7REeaxyZlCCSfciw" type="7001">
<edges xmi:type="notation:Connector" xmi:id="_5U4zgA7REeaxyZlCCSfciw" type="Transition_Edge" source="_qhIEQA7REeaxyZlCCSfciw" target="_K70f4A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_5U4zgw7REeaxyZlCCSfciw" type="Transition_NameLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_exl-8LCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_5U4zhA7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_5U4zhQ7REeaxyZlCCSfciw" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_5U4zhQ7REeaxyZlCCSfciw" type="Transition_GuardLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_ex9LULCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_5U4zhg7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_5U4zhw7REeaxyZlCCSfciw" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_5U4ziA7REeaxyZlCCSfciw" y="60"/>
<children xmi:type="notation:DecorationNode" xmi:id="_5U4zhw7REeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_eyWM4LCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_5U4ziA7REeaxyZlCCSfciw" x="1" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_5U4zgQ7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_5UnGsA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_5UnGsA7REeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5U4zgg7REeaxyZlCCSfciw" points="[8, -1, -112, 0]$[85, -44, -35, -43]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5VnMQA7REeaxyZlCCSfciw" id="(1.0,0.45)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5VnMQQ7REeaxyZlCCSfciw" id="(0.0,0.12264150943396226)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5VnMQQ7REeaxyZlCCSfciw" id="(0.0,0.11775700934579439)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_6Q7lAA7REeaxyZlCCSfciw" type="7000" source="_rSTCgA7REeaxyZlCCSfciw" target="_eZFJ0Q7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_6Q7lAw7REeaxyZlCCSfciw" type="7001">
<edges xmi:type="notation:Connector" xmi:id="_6Q7lAA7REeaxyZlCCSfciw" type="Transition_Edge" source="_rSTCgA7REeaxyZlCCSfciw" target="_eZFJ0Q7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_6Q7lAw7REeaxyZlCCSfciw" type="Transition_NameLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_hGWP0LCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_6Q7lBA7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_6Q7lBQ7REeaxyZlCCSfciw" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_6Q7lBQ7REeaxyZlCCSfciw" type="Transition_GuardLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_hGv4cLCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_6Q7lBg7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_6Q7lBw7REeaxyZlCCSfciw" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_6Q7lCA7REeaxyZlCCSfciw" y="60"/>
<children xmi:type="notation:DecorationNode" xmi:id="_6Q7lBw7REeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_hHKIILCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_6Q7lCA7REeaxyZlCCSfciw" x="2" y="57"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_6Q7lAQ7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_6QpRIA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_6QpRIA7REeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6Q7lAg7REeaxyZlCCSfciw" points="[8, 0, -106, 0]$[89, -19, -25, -19]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6RvdUA7REeaxyZlCCSfciw" id="(1.0,0.45)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6RvdUQ7REeaxyZlCCSfciw" id="(0.0,0.21686746987951808)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6RvdUQ7REeaxyZlCCSfciw" id="(0.0,0.16778523489932887)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_7MxiMA7REeaxyZlCCSfciw" type="7000" source="_r7uaAA7REeaxyZlCCSfciw" target="_h8hbZQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_7MxiMw7REeaxyZlCCSfciw" type="7001">
<edges xmi:type="notation:Connector" xmi:id="_7MxiMA7REeaxyZlCCSfciw" type="Transition_Edge" source="_r7uaAA7REeaxyZlCCSfciw" target="_h8hbZQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_7MxiMw7REeaxyZlCCSfciw" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_7MxiNA7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_7MxiNQ7REeaxyZlCCSfciw" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_7MxiNQ7REeaxyZlCCSfciw" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_7MxiNg7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_7MxiNw7REeaxyZlCCSfciw" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_7MxiNw7REeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_7MxiOA7REeaxyZlCCSfciw" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_7MxiMQ7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_7Mf1YA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_7Mf1YA7REeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7MxiMg7REeaxyZlCCSfciw" points="[8, -1, -92, 0]$[70, -38, -30, -37]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Npr8A7REeaxyZlCCSfciw" id="(1.0,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Npr8Q7REeaxyZlCCSfciw" id="(0.0,0.10451306413301663)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_8IKMYA7REeaxyZlCCSfciw" type="7000" source="_ueSdYA7REeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_8IKzcA7REeaxyZlCCSfciw" type="7001">
<edges xmi:type="notation:Connector" xmi:id="_8IKMYA7REeaxyZlCCSfciw" type="Transition_Edge" source="_ueSdYA7REeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_8IKzcA7REeaxyZlCCSfciw" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_8IKzcQ7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_8IKzcg7REeaxyZlCCSfciw" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_8IKzcg7REeaxyZlCCSfciw" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_8IKzcw7REeaxyZlCCSfciw"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_8IKzdA7REeaxyZlCCSfciw" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_8IKzdA7REeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_8IKzdQ7REeaxyZlCCSfciw" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_8IKMYQ7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_8H6UwA7REeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_8H6UwA7REeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8IKMYg7REeaxyZlCCSfciw" points="[8, -1, -78, 0]$[70, -7, -16, -6]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8I7BYA7REeaxyZlCCSfciw" id="(1.0,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8I7BYQ7REeaxyZlCCSfciw" id="(0.0,0.115)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_GgWIMA7SEeaxyZlCCSfciw" type="7000" source="_K70f4A7QEeaxyZlCCSfciw" target="_BWOeoA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_GgWIMw7SEeaxyZlCCSfciw" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_GgWINA7SEeaxyZlCCSfciw"/>
<edges xmi:type="notation:Connector" xmi:id="_GgWIMA7SEeaxyZlCCSfciw" type="Transition_Edge" source="_K70f4A7QEeaxyZlCCSfciw" target="_BWOeoA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_GgWIMw7SEeaxyZlCCSfciw" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_GgWINA7SEeaxyZlCCSfciw" x="3" y="12"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_GgWINQ7SEeaxyZlCCSfciw" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_GgWINQ7SEeaxyZlCCSfciw" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_GgWINg7SEeaxyZlCCSfciw" x="2" y="15"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_GgWINw7SEeaxyZlCCSfciw" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_GgWINw7SEeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_GgWIOA7SEeaxyZlCCSfciw" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_GgWIMQ7SEeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_Gf6qYA7SEeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GgWIMg7SEeaxyZlCCSfciw" points="[-10, -1, 113, 0]$[-128, -3, -5, -2]"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_Gf6qYA7SEeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GgWIMg7SEeaxyZlCCSfciw"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GheJkA7SEeaxyZlCCSfciw" id="(0.0,0.3813084112149533)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GheJkQ7SEeaxyZlCCSfciw" id="(0.0,0.42457231726283046)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GheJkQ7SEeaxyZlCCSfciw" id="(0.0,0.4230171073094868)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_vT8BEA7TEeaxyZlCCSfciw" type="7000" source="_K70f4A7QEeaxyZlCCSfciw" target="_K70f4A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_vT8oIA7TEeaxyZlCCSfciw" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_vT8oIQ7TEeaxyZlCCSfciw"/>
<edges xmi:type="notation:Connector" xmi:id="_vT8BEA7TEeaxyZlCCSfciw" type="Transition_Edge" source="_K70f4A7QEeaxyZlCCSfciw" target="_K70f4A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_vT8oIA7TEeaxyZlCCSfciw" type="Transition_NameLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_Wk0x0LCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_vT8oIQ7TEeaxyZlCCSfciw" y="15"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_vT8oIg7TEeaxyZlCCSfciw" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_vT8oIw7TEeaxyZlCCSfciw" x="77" y="-10"/>
<children xmi:type="notation:DecorationNode" xmi:id="_vT8oIg7TEeaxyZlCCSfciw" type="Transition_GuardLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_Wlb10LCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_vT8oIw7TEeaxyZlCCSfciw" x="75" y="-10"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_vT8oJA7TEeaxyZlCCSfciw" type="7003">
<layoutConstraint xmi:type="notation:Location" xmi:id="_vT8oJQ7TEeaxyZlCCSfciw" y="60"/>
<children xmi:type="notation:DecorationNode" xmi:id="_vT8oJA7TEeaxyZlCCSfciw" type="Transition_StereotypeLabel">
<styles xmi:type="notation:BooleanValueStyle" xmi:id="_WmCSwLCLEeajqum4nY78QQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_vT8oJQ7TEeaxyZlCCSfciw" x="1" y="58"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_vT8BEQ7TEeaxyZlCCSfciw"/>
<element xmi:type="uml:Transition" href="showcase.uml#_vTq7UA7TEeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vT8BEg7TEeaxyZlCCSfciw" points="[0, 0, 0, -99]$[-68, 16, -68, -83]$[-68, 99, -68, 0]$[0, 99, 0, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vUrn8A7TEeaxyZlCCSfciw" id="(0.0,0.6768867924528302)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vUsPAA7TEeaxyZlCCSfciw" id="(0.0,0.910377358490566)"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_vTq7UA7TEeaxyZlCCSfciw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vT8BEg7TEeaxyZlCCSfciw" points="[268, 518, -643984, -643984]$[233, 518, -643984, -643984]$[233, 610, -643984, -643984]$[268, 610, -643984, -643984]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vUrn8A7TEeaxyZlCCSfciw" id="(0.0,0.7214953271028037)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vUsPAA7TEeaxyZlCCSfciw" id="(0.0,0.8934579439252337)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_y8IeQA9sEeaqleSKKcvuHQ" type="7000" source="_K70f4A7QEeaxyZlCCSfciw" target="_eZFJ0Q7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_y8JFUA9sEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_y8JFUQ9sEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_y8IeQA9sEeaqleSKKcvuHQ" type="Transition_Edge" source="_K70f4A7QEeaxyZlCCSfciw" target="_eZFJ0Q7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_y8JFUA9sEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_y8JFUQ9sEeaqleSKKcvuHQ" x="-8" y="-13"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_y8JFUg9sEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_y8JFUg9sEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_y8JFUw9sEeaqleSKKcvuHQ" x="-2" y="-12"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_y8JFVA9sEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_y8JFVA9sEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_y8JFVQ9sEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_y8IeQQ9sEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_y7xR4A9sEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y8IeQg9sEeaqleSKKcvuHQ" points="[-26, 0, -131, 3]$[80, -1, -25, 2]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y9JK4A9sEeaqleSKKcvuHQ" id="(0.0,0.3102803738317757)"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_y7xR4A9sEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y8IeQg9sEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y9JK4A9sEeaqleSKKcvuHQ" id="(0.0,0.308411214953271)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y9Jx8A9sEeaqleSKKcvuHQ" id="(0.0,0.5503355704697986)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_2geHsA9sEeaqleSKKcvuHQ" type="7000" source="_eZFJ0Q7QEeaxyZlCCSfciw" target="_gBocAA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_2geuwA9sEeaqleSKKcvuHQ" type="7001">
<edges xmi:type="notation:Connector" xmi:id="_2geHsA9sEeaqleSKKcvuHQ" type="Transition_Edge" source="_eZFJ0Q7QEeaxyZlCCSfciw" target="_gBocAA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_2geuwA9sEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_2geuwQ9sEeaqleSKKcvuHQ"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_2geuwg9sEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_2geuwg9sEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_2geuww9sEeaqleSKKcvuHQ"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_2geuxA9sEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_2geuxA9sEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_2geuxQ9sEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_2geHsQ9sEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_2gKlsA9sEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_2gKlsA9sEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2geHsg9sEeaqleSKKcvuHQ" points="[0, 15, 0, -93]$[-3, 90, -3, -18]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2hYtsA9sEeaqleSKKcvuHQ" id="(0.4785714285714286,1.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2hYtsQ9sEeaqleSKKcvuHQ" id="(0.4785714285714286,0.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_EdeOEA9tEeaqleSKKcvuHQ" type="7000" source="_K70f4A7QEeaxyZlCCSfciw" target="_LkV4cA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_Ede1IA9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Ede1IQ9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_EdeOEA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_K70f4A7QEeaxyZlCCSfciw" target="_LkV4cA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_Ede1IA9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Ede1IQ9tEeaqleSKKcvuHQ" x="-3" y="-15"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Ede1Ig9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_Ede1Ig9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Ede1Iw9tEeaqleSKKcvuHQ" x="-1" y="-18"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_Ede1JA9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_Ede1JA9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Ede1JQ9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_EdeOEQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_EdFzkA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EdeOEg9tEeaqleSKKcvuHQ" points="[7, 0, -118, -1]$[103, -18, -22, -19]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EebQUA9tEeaqleSKKcvuHQ" id="(1.0,0.1383177570093458)"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_EdFzkA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EdeOEg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EebQUA9tEeaqleSKKcvuHQ" id="(1.0,0.13644859813084112)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EebQUQ9tEeaqleSKKcvuHQ" id="(0.0,0.13568773234200743)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_G_jJQA9tEeaqleSKKcvuHQ" type="7000" source="_LkV4cA7QEeaxyZlCCSfciw" target="_K70f4A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_G_jJQw9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_G_jJRA9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_G_jJQA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_LkV4cA7QEeaxyZlCCSfciw" target="_K70f4A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_G_jJQw9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_G_jJRA9tEeaqleSKKcvuHQ" x="2" y="16"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_G_jJRQ9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_G_jJRQ9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_G_jJRg9tEeaqleSKKcvuHQ" y="16"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_G_jJRw9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_G_jJRw9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_G_jJSA9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_G_jJQQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_G_Mj8A9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_G_jJQg9tEeaqleSKKcvuHQ" points="[-2, 0, 116, 0]$[-98, -12, 20, -12]"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_G_Mj8A9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_G_jJQg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HAinwA9tEeaqleSKKcvuHQ" id="(0.0,0.26579925650557623)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HAjO0A9tEeaqleSKKcvuHQ" id="(1.0,0.2672897196261682)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_WLnDwA9tEeaqleSKKcvuHQ" type="7000" source="_LkV4cA7QEeaxyZlCCSfciw" target="_eZFJ0Q7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_WLnq0A9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_WLnq0Q9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_WLnDwA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_LkV4cA7QEeaxyZlCCSfciw" target="_eZFJ0Q7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_WLnq0A9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_WLnq0Q9tEeaqleSKKcvuHQ" x="-43" y="13"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_WLnq0g9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_WLnq0g9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_WLnq0w9tEeaqleSKKcvuHQ" x="-45" y="13"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_WLnq1A9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_WLnq1A9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_WLnq1Q9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_WLnDwQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_WLUI0A9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WLnDwg9tEeaqleSKKcvuHQ" points="[-5, -1, 199, 0]$[-191, 4, 13, 5]"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_WLUI0A9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WLnDwg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WMdYUA9tEeaqleSKKcvuHQ" id="(0.0,0.33643122676579923)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WMdYUQ9tEeaqleSKKcvuHQ" id="(1.0,0.6510067114093959)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WMdYUQ9tEeaqleSKKcvuHQ" id="(1.0,0.6577181208053692)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_bh0TcA9tEeaqleSKKcvuHQ" type="7000" source="_K70f4A7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_bh06gA9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_bh06gQ9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_bh0TcA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_K70f4A7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_bh06gA9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_bh06gQ9tEeaqleSKKcvuHQ" x="-107" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_bh06gg9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_bh06gg9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_bh06gw9tEeaqleSKKcvuHQ" x="-104" y="-13"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_bh06hA9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_bh06hA9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_bh06hQ9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_bh0TcQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_bhhYgA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bh0Tcg9tEeaqleSKKcvuHQ" points="[15, -1, -347, 23]$[346, -8, -16, 16]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bitEQA9tEeaqleSKKcvuHQ" id="(1.0,0.497196261682243)"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_bhhYgA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bh0Tcg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bitEQA9tEeaqleSKKcvuHQ" id="(1.0,0.502803738317757)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bitEQQ9tEeaqleSKKcvuHQ" id="(0.0,0.72)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_ifBWIA9tEeaqleSKKcvuHQ" type="7000" source="_eZFJ0Q7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_ifBWIw9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ifBWJA9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_ifBWIA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_eZFJ0Q7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_ifBWIw9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ifBWJA9tEeaqleSKKcvuHQ" x="-62" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ifBWJQ9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_ifBWJQ9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ifB9MA9tEeaqleSKKcvuHQ" x="-59" y="-10"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ifB9MQ9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_ifB9MQ9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_ifB9Mg9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_ifBWIQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_iepisA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ifBWIg9tEeaqleSKKcvuHQ" points="[12, 0, -391, 73]$[482, 41, 79, 114]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_if-YYA9tEeaqleSKKcvuHQ" id="(1.0,0.8590604026845637)"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_iepisA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ifBWIg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_if-YYA9tEeaqleSKKcvuHQ" id="(1.0,0.8791946308724832)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_if-YYQ9tEeaqleSKKcvuHQ" id="(0.0,0.445)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_nUTqEA9tEeaqleSKKcvuHQ" type="7000" source="_h8hbZQ7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_nUTqEw9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_nUTqFA9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_nUTqEA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_h8hbZQ7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_nUTqEw9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_nUTqFA9tEeaqleSKKcvuHQ" x="-7" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_nUTqFQ9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_nUTqFQ9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_nUTqFg9tEeaqleSKKcvuHQ" x="-1" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_nUTqFw9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_nUTqFw9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_nUTqGA9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_nUTqEQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_nUBWMA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nUTqEg9tEeaqleSKKcvuHQ" points="[-3, 1, -107, 36]$[100, -33, -4, 2]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nVIwgA9tEeaqleSKKcvuHQ" id="(0.0,0.5795724465558195)"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_nUBWMA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nUTqEg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nVIwgA9tEeaqleSKKcvuHQ" id="(0.0,0.5843230403800475)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nVIwgQ9tEeaqleSKKcvuHQ" id="(0.0,0.935)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_tl9OUA9tEeaqleSKKcvuHQ" type="7000" source="_ku3nMQ7QEeaxyZlCCSfciw" target="_mFe00A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_tl9OUw9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_tl9OVA9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_tl9OUA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_ku3nMQ7QEeaxyZlCCSfciw" target="_mFe00A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_tl9OUw9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_tl9OVA9tEeaqleSKKcvuHQ" x="-5" y="-7"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_tl9OVQ9tEeaqleSKKcvuHQ" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_tl9OVg9tEeaqleSKKcvuHQ"/>
<children xmi:type="notation:DecorationNode" xmi:id="_tl9OVQ9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_tl9OVg9tEeaqleSKKcvuHQ" x="-4" y="-8"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_tl9OVw9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_tl9OVw9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_tl9OWA9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_tl9OUQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_tlmpAA9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_tlmpAA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tl9OUg9tEeaqleSKKcvuHQ" points="[-2, 14, 10, -82]$[-23, 84, -11, -12]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tm3NQA9tEeaqleSKKcvuHQ" id="(0.4714285714285714,1.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tm3NQQ9tEeaqleSKKcvuHQ" id="(0.4714285714285714,0.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_9dRsUA9tEeaqleSKKcvuHQ" type="7000" source="_ku3nMQ7QEeaxyZlCCSfciw" target="_BWOeoA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_9dSTYA9tEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9dSTYQ9tEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_9dRsUA9tEeaqleSKKcvuHQ" type="Transition_Edge" source="_ku3nMQ7QEeaxyZlCCSfciw" target="_BWOeoA7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_9dSTYA9tEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9dSTYQ9tEeaqleSKKcvuHQ" x="-57" y="-15"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_9dSTYg9tEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_9dSTYg9tEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9dSTYw9tEeaqleSKKcvuHQ" x="53" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_9dSTZA9tEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_9dSTZA9tEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_9dSTZQ9tEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_9dRsUQ9tEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_9c3coA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9dRsUg9tEeaqleSKKcvuHQ" points="[17, -1, -170, 0]$[189, -2, 2, -1]"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_9c3coA9tEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9dRsUg9tEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9eRx4A9tEeaqleSKKcvuHQ" id="(1.0,0.14)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9eRx4Q9tEeaqleSKKcvuHQ" id="(1.0,0.343701399688958)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_CRELcA9uEeaqleSKKcvuHQ" type="7000" source="_BWOeoA7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_CRELcw9uEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_CRELdA9uEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_CRELcA9uEeaqleSKKcvuHQ" type="Transition_Edge" source="_BWOeoA7QEeaxyZlCCSfciw" target="_ku3nMQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_CRELcw9uEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_CRELdA9uEeaqleSKKcvuHQ" x="52" y="15"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_CRELdQ9uEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_CRELdQ9uEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_CRELdg9uEeaqleSKKcvuHQ" x="-45" y="14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_CRELdw9uEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_CRELdw9uEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_CRELeA9uEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_CRELcQ9uEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_CQtmIA9uEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CRELcg9uEeaqleSKKcvuHQ" points="[15, 2, 187, 26]$[-157, -26, 15, -2]"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_CQtmIA9uEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CRELcg9uEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CSKXoA9uEeaqleSKKcvuHQ" id="(1.0,0.552099533437014)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CSK-sA9uEeaqleSKKcvuHQ" id="(1.0,0.805)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CSK-sA9uEeaqleSKKcvuHQ" id="(1.0,0.81)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_In2uYA9uEeaqleSKKcvuHQ" type="7000" source="_ku3nMQ7QEeaxyZlCCSfciw" target="_h8hbZQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_In2uYw9uEeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_In2uZA9uEeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_In2uYA9uEeaqleSKKcvuHQ" type="Transition_Edge" source="_ku3nMQ7QEeaxyZlCCSfciw" target="_h8hbZQ7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_In2uYw9uEeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_In2uZA9uEeaqleSKKcvuHQ" x="-6" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_In2uZQ9uEeaqleSKKcvuHQ" type="7002">
<children xmi:type="notation:DecorationNode" xmi:id="_In2uZQ9uEeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_In2uZg9uEeaqleSKKcvuHQ" x="-6" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_In2uZw9uEeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_In2uZw9uEeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_In2uaA9uEeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_In2uYQ9uEeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_InjzcA9uEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_In2uYg9uEeaqleSKKcvuHQ" points="[0, 0, -34, 1]$[34, -1, 0, 0]"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_InjzcA9uEeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_In2uYg9uEeaqleSKKcvuHQ"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IotC8A9uEeaqleSKKcvuHQ" id="(1.0,0.355)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IotC8Q9uEeaqleSKKcvuHQ" id="(1.0,0.30641330166270786)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IotC8Q9uEeaqleSKKcvuHQ" id="(1.0,0.3087885985748218)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_JB0CUA91EeaqleSKKcvuHQ" type="7000" source="_gBocAA7QEeaxyZlCCSfciw" target="_mFe00A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_JB0pYA91EeaqleSKKcvuHQ" type="7001">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JB0pYQ91EeaqleSKKcvuHQ"/>
<edges xmi:type="notation:Connector" xmi:id="_JB0CUA91EeaqleSKKcvuHQ" type="Transition_Edge" source="_gBocAA7QEeaxyZlCCSfciw" target="_mFe00A7QEeaxyZlCCSfciw">
<children xmi:type="notation:DecorationNode" xmi:id="_JB0pYA91EeaqleSKKcvuHQ" type="Transition_NameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JB0pYQ91EeaqleSKKcvuHQ" x="-61" y="-16"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_JB0pYg91EeaqleSKKcvuHQ" type="7002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JB0pYw91EeaqleSKKcvuHQ"/>
<children xmi:type="notation:DecorationNode" xmi:id="_JB0pYg91EeaqleSKKcvuHQ" type="Transition_GuardLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JB0pYw91EeaqleSKKcvuHQ" x="-62" y="-14"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_JB0pZA91EeaqleSKKcvuHQ" type="7003">
<children xmi:type="notation:DecorationNode" xmi:id="_JB0pZA91EeaqleSKKcvuHQ" type="Transition_StereotypeLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_JB0pZQ91EeaqleSKKcvuHQ" y="60"/>
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_JB0CUQ91EeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="showcase.uml#_JBi8kA91EeaqleSKKcvuHQ"/>
<element xmi:type="uml:Transition" href="ShowcaseMachine.uml#_JBi8kA91EeaqleSKKcvuHQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JB0CUg91EeaqleSKKcvuHQ" points="[29, 0, -416, 0]$[421, -10, -24, -10]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JCjpMA91EeaqleSKKcvuHQ" id="(1.0,0.6506024096385542)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JCjpMQ91EeaqleSKKcvuHQ" id="(0.0,0.27710843373493976)"/>

View File

@@ -8,7 +8,7 @@
<body>fooAction</body>
</effect>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_vTq7UA7TEeaxyZlCCSfciw" guard="_BSJaoA72EeaqleSKKcvuHQ" source="_K7z41A7QEeaxyZlCCSfciw" target="_K7z41A7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_vTq7UA7TEeaxyZlCCSfciw" name="A" guard="_BSJaoA72EeaqleSKKcvuHQ" source="_K7z41A7QEeaxyZlCCSfciw" target="_K7z41A7QEeaxyZlCCSfciw">
<ownedRule xmi:type="uml:Constraint" xmi:id="_BSJaoA72EeaqleSKKcvuHQ">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_BSJaoQ72EeaqleSKKcvuHQ" name="foo1Guard">
<language>bean</language>
@@ -17,7 +17,7 @@
</ownedRule>
<trigger xmi:type="uml:Trigger" xmi:id="_ABwpQA7UEeaxyZlCCSfciw" event="_SMW40A7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_CQtmIA9uEeaqleSKKcvuHQ" source="_BWMCYA7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_CQtmIA9uEeaqleSKKcvuHQ" name="E" source="_BWMCYA7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_DnaTUA9uEeaqleSKKcvuHQ" event="_bNY0cA7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_2YuPAA9uEeaqleSKKcvuHQ" guard="_9kBYEA9uEeaqleSKKcvuHQ" kind="internal" source="_BWMCYA7QEeaxyZlCCSfciw" target="_BWMCYA7QEeaxyZlCCSfciw">
@@ -36,22 +36,22 @@
<subvertex xmi:type="uml:State" xmi:id="_BWMCYA7QEeaxyZlCCSfciw" name="S0">
<region xmi:type="uml:Region" xmi:id="_K7yDoA7QEeaxyZlCCSfciw" name="Region1">
<transition xmi:type="uml:Transition" xmi:id="_5UnGsA7REeaxyZlCCSfciw" source="_qg1wYA7REeaxyZlCCSfciw" target="_K7z41A7QEeaxyZlCCSfciw"/>
<transition xmi:type="uml:Transition" xmi:id="_Gf6qYA7SEeaxyZlCCSfciw" source="_K7z41A7QEeaxyZlCCSfciw" target="_BWMCYA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_Gf6qYA7SEeaxyZlCCSfciw" name="D" source="_K7z41A7QEeaxyZlCCSfciw" target="_BWMCYA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_QC5cgA7SEeaxyZlCCSfciw" event="_Y9yJUA7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_y7xR4A9sEeaqleSKKcvuHQ" source="_K7z41A7QEeaxyZlCCSfciw" target="_eZFJ0A7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_y7xR4A9sEeaqleSKKcvuHQ" name="B" source="_K7z41A7QEeaxyZlCCSfciw" target="_eZFJ0A7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_sXxSAA9vEeaqleSKKcvuHQ" event="_UYrmcA7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_EdFzkA9tEeaqleSKKcvuHQ" source="_K7z41A7QEeaxyZlCCSfciw" target="_LkOjsA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_EdFzkA9tEeaqleSKKcvuHQ" name="C" source="_K7z41A7QEeaxyZlCCSfciw" target="_LkOjsA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_GHxMsA9tEeaqleSKKcvuHQ" event="_WsyXEA7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_G_Mj8A9tEeaqleSKKcvuHQ" source="_LkOjsA7QEeaxyZlCCSfciw" target="_K7z41A7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_G_Mj8A9tEeaqleSKKcvuHQ" name="K" source="_LkOjsA7QEeaxyZlCCSfciw" target="_K7z41A7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_Jx2RwA9tEeaqleSKKcvuHQ" event="_qxhfoA7wEeaqleSKKcvuHQ"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_WLUI0A9tEeaqleSKKcvuHQ" source="_LkOjsA7QEeaxyZlCCSfciw" target="_eZFJ0A7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_WLUI0A9tEeaqleSKKcvuHQ" name="F" source="_LkOjsA7QEeaxyZlCCSfciw" target="_eZFJ0A7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_XwKmwA9tEeaqleSKKcvuHQ" event="_c-Eu8A7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_bhhYgA9tEeaqleSKKcvuHQ" source="_K7z41A7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_bhhYgA9tEeaqleSKKcvuHQ" name="F" source="_K7z41A7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_dRDccA9tEeaqleSKKcvuHQ" event="_c-Eu8A7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_H5UX8A9vEeaqleSKKcvuHQ" kind="internal" source="_K7z41A7QEeaxyZlCCSfciw" target="_K7z41A7QEeaxyZlCCSfciw">
@@ -79,10 +79,10 @@
<transition xmi:type="uml:Transition" xmi:id="_8uH8wA9sEeaqleSKKcvuHQ" kind="internal" source="_eZFJ0A7QEeaxyZlCCSfciw" target="_eZFJ0A7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="__2DXAA9sEeaqleSKKcvuHQ" event="_oHYNkA7wEeaqleSKKcvuHQ"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_iepisA9tEeaqleSKKcvuHQ" source="_eZFJ0A7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_iepisA9tEeaqleSKKcvuHQ" name="G" source="_eZFJ0A7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_kRNsgA9tEeaqleSKKcvuHQ" event="_ev8VMA7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_JBi8kA91EeaqleSKKcvuHQ" source="_gBggMA7QEeaxyZlCCSfciw" target="_mFUcwA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_JBi8kA91EeaqleSKKcvuHQ" name="I" source="_gBggMA7QEeaxyZlCCSfciw" target="_mFUcwA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_KWn5IA91EeaqleSKKcvuHQ" event="_jSt80A7REeaxyZlCCSfciw"/>
</transition>
<subvertex xmi:type="uml:State" xmi:id="_eZFJ0A7QEeaxyZlCCSfciw" name="S11"/>
@@ -93,19 +93,19 @@
<subvertex xmi:type="uml:State" xmi:id="_LkOjsA7QEeaxyZlCCSfciw" name="S2">
<region xmi:type="uml:Region" xmi:id="_h8g0Ug7QEeaxyZlCCSfciw" name="Region1">
<transition xmi:type="uml:Transition" xmi:id="_7Mf1YA7REeaxyZlCCSfciw" source="_r7fJcA7REeaxyZlCCSfciw" target="_h8hbZA7QEeaxyZlCCSfciw"/>
<transition xmi:type="uml:Transition" xmi:id="_nUBWMA9tEeaqleSKKcvuHQ" source="_h8hbZA7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_nUBWMA9tEeaqleSKKcvuHQ" name="B" source="_h8hbZA7QEeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_sa-B4A9tEeaqleSKKcvuHQ" event="_UYrmcA7REeaxyZlCCSfciw"/>
</transition>
<subvertex xmi:type="uml:State" xmi:id="_h8hbZA7QEeaxyZlCCSfciw" name="S21">
<region xmi:type="uml:Region" xmi:id="_ku3AIA7QEeaxyZlCCSfciw" name="Region1">
<transition xmi:type="uml:Transition" xmi:id="_8H6UwA7REeaxyZlCCSfciw" source="_ueClwA7REeaxyZlCCSfciw" target="_ku3nMA7QEeaxyZlCCSfciw"/>
<transition xmi:type="uml:Transition" xmi:id="_tlmpAA9tEeaqleSKKcvuHQ" source="_ku3nMA7QEeaxyZlCCSfciw" target="_mFUcwA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_tlmpAA9tEeaqleSKKcvuHQ" name="I" source="_ku3nMA7QEeaxyZlCCSfciw" target="_mFUcwA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_vC5GYA9tEeaqleSKKcvuHQ" event="_jSt80A7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_9c3coA9tEeaqleSKKcvuHQ" source="_ku3nMA7QEeaxyZlCCSfciw" target="_BWMCYA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_9c3coA9tEeaqleSKKcvuHQ" name="G" source="_ku3nMA7QEeaxyZlCCSfciw" target="_BWMCYA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_Aw2V4A9uEeaqleSKKcvuHQ" event="_ev8VMA7REeaxyZlCCSfciw"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_InjzcA9uEeaqleSKKcvuHQ" source="_ku3nMA7QEeaxyZlCCSfciw" target="_h8hbZA7QEeaxyZlCCSfciw">
<transition xmi:type="uml:Transition" xmi:id="_InjzcA9uEeaqleSKKcvuHQ" name="D" source="_ku3nMA7QEeaxyZlCCSfciw" target="_h8hbZA7QEeaxyZlCCSfciw">
<trigger xmi:type="uml:Trigger" xmi:id="_QRDUYA9uEeaqleSKKcvuHQ" event="_Y9yJUA7REeaxyZlCCSfciw"/>
</transition>
<subvertex xmi:type="uml:State" xmi:id="_ku3nMA7QEeaxyZlCCSfciw" name="S211"/>