@@ -286,9 +286,15 @@ configure(sampleProjects()) {
|
||||
apply plugin: 'spring-boot'
|
||||
configurations.archives.artifacts.removeAll { it.archiveTask.is jar }
|
||||
tasks.findByPath("artifactoryPublish")?.enabled = false
|
||||
// as samples are not published, we can use jdk8
|
||||
compileJava {
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
}
|
||||
dependencies {
|
||||
compile project(":spring-statemachine-core")
|
||||
compile "org.springframework:spring-context-support:$springVersion"
|
||||
testCompile project(":spring-statemachine-test")
|
||||
testCompile "org.springframework:spring-test:$springVersion"
|
||||
testCompile "org.hamcrest:hamcrest-core:$hamcrestVersion"
|
||||
testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion"
|
||||
|
||||
BIN
docs/src/reference/asciidoc/images/model-deployer.png
Normal file
BIN
docs/src/reference/asciidoc/images/model-deployer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
BIN
docs/src/reference/asciidoc/images/sm-deploy-1.png
Normal file
BIN
docs/src/reference/asciidoc/images/sm-deploy-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -32,6 +32,8 @@ normal build cycle. Samples in this chapter are:
|
||||
|
||||
<<statemachine-examples-eventservice>> Event Service.
|
||||
|
||||
<<statemachine-examples-deploy>> Deploy.
|
||||
|
||||
|
||||
[source,text]
|
||||
----
|
||||
@@ -1315,7 +1317,60 @@ should see `COUNT` variable to increase with every call.
|
||||
|
||||
image::images/sm-eventservice-4.png[width=500]
|
||||
|
||||
Order to implement actual logic to track user behaviour, you'd then
|
||||
define these in a various `Actions` in a state machine. You can
|
||||
associate different `Actions` with transitions, state entry's or state
|
||||
exits' and with various listener methods.
|
||||
[[statemachine-examples-deploy]]
|
||||
== Deploy
|
||||
Deploy is an example how state machine concepts can be used with an
|
||||
uml modeling to provide a generic error handling state. This state
|
||||
machine is a relatively complex example of how various features can be
|
||||
used to provide a centralized error handling concept.
|
||||
|
||||
image::images/model-deployer.png[width=500]
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Above statechart is designed using _Eclipse Papyrus Plugin_
|
||||
<<sm-papyrus>> and imported into _Spring StateMachine_ via its uml
|
||||
model file. _Actions_ and _Guards_ defined in a model are resolved
|
||||
from a _Spring Application Context_.
|
||||
====
|
||||
|
||||
In this state machice scenario we have two different behaviors,
|
||||
`DEPLOY` and `UNDEPLOY` what user tries to execute.
|
||||
|
||||
What is happening a above statechart:
|
||||
|
||||
* In `DEPLOY` state `INSTALL` and `START` states are entered
|
||||
conditionally. We enter `START` directly if product is already
|
||||
installed and no need to try to `START` if install fails.
|
||||
* In `UNDEPLOY` state we enter `STOP` conditionally if application is
|
||||
already running.
|
||||
* Conditional choices for `DEPLOY` and `UNDEPLOY` are done via
|
||||
_Choice_ pseudostate within those states and choices are selected
|
||||
by _Guards_.
|
||||
* We used _Exit Point_ pseudostates to have more controlled exit from
|
||||
`DEPLOY` and `UNDEPLOY` states.
|
||||
* After exit from `DEPLOY` and `UNDEPLOY` we go through a _Junction_
|
||||
pseudostate to make a choice if we want to go though `ERROR` state
|
||||
in case error was added into an _Extended State_.
|
||||
* Finally we go back to `READY` state to process new requests.
|
||||
|
||||
Lets get into actual demo. Run the boot based sample application:
|
||||
|
||||
[source,text,subs="attributes"]
|
||||
----
|
||||
# java -jar spring-statemachine-samples-deploy-{revnumber}.jar
|
||||
----
|
||||
|
||||
In a browser you see something like:
|
||||
|
||||
image::images/sm-deploy-1.png[width=500]
|
||||
|
||||
[IMPORTANT]
|
||||
====
|
||||
As we don't have a real _install_, _start_ or _stop_ functionality we
|
||||
simulate failures by checking existence of particular message headers.
|
||||
====
|
||||
|
||||
Now you can start to send event to a machine and choose various
|
||||
message headers which will drive a different functionality.
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ include 'spring-statemachine-samples:web'
|
||||
include 'spring-statemachine-samples:scope'
|
||||
include 'spring-statemachine-samples:security'
|
||||
include 'spring-statemachine-samples:eventservice'
|
||||
include 'spring-statemachine-samples:deploy'
|
||||
|
||||
rootProject.children.find {
|
||||
if (it.name == 'spring-statemachine-recipes') {
|
||||
|
||||
@@ -92,3 +92,11 @@ project('spring-statemachine-samples-eventservice') {
|
||||
compile("org.apache.commons:commons-pool2:$commonsPool2Version")
|
||||
}
|
||||
}
|
||||
|
||||
project('spring-statemachine-samples-deploy') {
|
||||
description = 'Spring State Machine Deploy Sample'
|
||||
dependencies {
|
||||
compile project(":spring-statemachine-uml")
|
||||
compile("org.springframework.boot:spring-boot-starter-thymeleaf:$springBootVersion")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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 demo.deploy;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class Application {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* 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 demo.deploy;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.statemachine.action.Action;
|
||||
import org.springframework.statemachine.config.EnableStateMachine;
|
||||
import org.springframework.statemachine.config.StateMachineConfigurerAdapter;
|
||||
import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer;
|
||||
import org.springframework.statemachine.config.builders.StateMachineModelConfigurer;
|
||||
import org.springframework.statemachine.config.model.StateMachineModelFactory;
|
||||
import org.springframework.statemachine.guard.Guard;
|
||||
import org.springframework.statemachine.uml.UmlStateMachineModelFactory;
|
||||
|
||||
@Configuration
|
||||
public class StateMachineConfig {
|
||||
|
||||
@Configuration
|
||||
@EnableStateMachine
|
||||
public static class Config extends StateMachineConfigurerAdapter<String, String> {
|
||||
|
||||
@Override
|
||||
public void configure(StateMachineConfigurationConfigurer<String, String> config)
|
||||
throws Exception {
|
||||
config
|
||||
.withConfiguration()
|
||||
.autoStartup(true)
|
||||
.listener(stateMachineLogListener());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(StateMachineModelConfigurer<String, String> model)
|
||||
throws Exception {
|
||||
model
|
||||
.withModel()
|
||||
.factory(modelFactory());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public StateMachineModelFactory<String, String> modelFactory() {
|
||||
return new UmlStateMachineModelFactory("classpath:model.uml");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public StateMachineLogListener stateMachineLogListener() {
|
||||
return new StateMachineLogListener();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> errorEntryAction() {
|
||||
return (context) -> {
|
||||
System.out.println("Should handle error " + context.getMessageHeader("error"));
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> readyEntryction() {
|
||||
return (context) -> {
|
||||
context.getExtendedState().getVariables().clear();
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> preparedeployEntryAction() {
|
||||
return (context) -> {
|
||||
System.out.println("Handle deploy prepare here");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> installEntryAction() {
|
||||
return (context) -> {
|
||||
System.out.println("Handle install here");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> startEntryAction() {
|
||||
return (context) -> {
|
||||
System.out.println("Handle start here");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> stopEntryAction() {
|
||||
return (context) -> {
|
||||
System.out.println("Handle stop here");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Action<String, String> exitErrorAction() {
|
||||
return (context) -> {
|
||||
if (context.getMessageHeaders().containsKey("hasError")) {
|
||||
context.getExtendedState().getVariables().put("hasError", true);
|
||||
context.getExtendedState().getVariables().put("error", new RuntimeException("Exception set in machine"));
|
||||
}
|
||||
if (context.getMessageHeaders().containsKey("isInstalled")) {
|
||||
context.getExtendedState().getVariables().put("isInstalled", true);
|
||||
}
|
||||
if (context.getMessageHeaders().containsKey("installedOk")) {
|
||||
context.getExtendedState().getVariables().put("installedOk", true);
|
||||
}
|
||||
if (context.getMessageHeaders().containsKey("isRunning")) {
|
||||
context.getExtendedState().getVariables().put("isRunning", true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Guard<String, String> isInstalledGuard() {
|
||||
return (context) -> {
|
||||
return context.getExtendedState().getVariables().containsKey("isInstalled");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Guard<String, String> installedOkGuard() {
|
||||
return (context) -> {
|
||||
return context.getExtendedState().getVariables().containsKey("installedOk");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Guard<String, String> isRunningGuard() {
|
||||
return (context) -> {
|
||||
return context.getExtendedState().getVariables().containsKey("isRunning");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Guard<String, String> hasErrorGuard() {
|
||||
return (context) -> {
|
||||
return context.getExtendedState().getVariables().containsKey("hasError");
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* 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 demo.deploy;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.messaging.MessageHeaders;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.statemachine.StateMachine;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
@Controller
|
||||
public class StateMachineController {
|
||||
|
||||
private final static String[] EVENTS = new String[] { "DEPLOY", "UNDEPLOY" };
|
||||
private final static String[] FAILS = new String[] { "isInstalled", "installedOk", "isRunning", "hasError" };
|
||||
|
||||
@Autowired
|
||||
private StateMachine<String, String> stateMachine;
|
||||
|
||||
@Autowired
|
||||
private StateMachineLogListener listener;
|
||||
|
||||
@RequestMapping("/")
|
||||
public String home() {
|
||||
return "redirect:/state";
|
||||
}
|
||||
|
||||
@RequestMapping("/state")
|
||||
public String feedAndGetState(@RequestParam(value = "event", required = false) String event,
|
||||
@RequestParam(value = "fail", required = false) Collection<String> fails, Model model) throws Exception {
|
||||
model.addAttribute("allTypes", EVENTS);
|
||||
model.addAttribute("failTypes", FAILS);
|
||||
if (StringUtils.hasText(event)) {
|
||||
Map<String , Object> headers = new HashMap<>();
|
||||
if (fails != null) {
|
||||
for (String fail : fails) {
|
||||
headers.put(fail, true);
|
||||
}
|
||||
}
|
||||
listener.resetMessages();
|
||||
stateMachine.sendEvent(MessageBuilder.createMessage(event, new MessageHeaders(headers)));
|
||||
}
|
||||
model.addAttribute("states", stateMachine.getState().getIds());
|
||||
model.addAttribute("messages", listener.getMessages());
|
||||
return "states";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* 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 demo.deploy;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.statemachine.StateContext;
|
||||
import org.springframework.statemachine.StateContext.Stage;
|
||||
import org.springframework.statemachine.listener.StateMachineListenerAdapter;
|
||||
import org.springframework.statemachine.state.State;
|
||||
|
||||
public class StateMachineLogListener extends StateMachineListenerAdapter<String, String> {
|
||||
|
||||
private final List<String> messages = new ArrayList<String>();
|
||||
|
||||
public List<String> getMessages() {
|
||||
return messages;
|
||||
}
|
||||
|
||||
public void resetMessages() {
|
||||
messages.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateEntered(State<String, String> state) {
|
||||
// messages.add("Enter " + state.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateExited(State<String, String> state) {
|
||||
// messages.add("Exit " + state.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateContext(StateContext<String, String> stateContext) {
|
||||
if (stateContext.getStage() == Stage.STATE_ENTRY) {
|
||||
messages.add("Enter " + stateContext.getTarget().getId());
|
||||
if (stateContext.getTarget().getId().equals("ERROR")) {
|
||||
messages.add("ERROR got exception " + stateContext.getExtendedState().getVariables().get("error"));
|
||||
}
|
||||
} else if (stateContext.getStage() == Stage.STATE_EXIT) {
|
||||
messages.add("Exit " + stateContext.getSource().getId());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
security:
|
||||
basic:
|
||||
enabled: false
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
|
||||
<include resource="org/springframework/boot/logging/logback/base.xml"/>
|
||||
|
||||
<logger name="org.springframework" level="INFO"/>
|
||||
<logger name="org.springframework.statemachine" level="DEBUG"/>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
|
||||
@@ -0,0 +1,662 @@
|
||||
<?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="_aWpBoAlKEeacC7Ug7AKYJw" type="PapyrusUMLStateMachineDiagram" name="StateMachine Diagram" measurementUnit="Pixel">
|
||||
<children xmi:type="notation:Shape" xmi:id="_aWpBoQlKEeacC7Ug7AKYJw" type="2000" gradient="16777215, -1, 1">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_aWpBoglKEeacC7Ug7AKYJw" type="2001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_aWpBowlKEeacC7Ug7AKYJw" width="1069" height="23"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_aWpBpAlKEeacC7Ug7AKYJw" type="2002">
|
||||
<children xmi:type="notation:Shape" xmi:id="_aWpBpQlKEeacC7Ug7AKYJw" type="3000">
|
||||
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aWpBpglKEeacC7Ug7AKYJw" source="RegionAnnotationKey">
|
||||
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aWpBpwlKEeacC7Ug7AKYJw" key="RegionZoneKey" value=""/>
|
||||
</eAnnotations>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_aWpBqAlKEeacC7Ug7AKYJw" type="3002">
|
||||
<children xmi:type="notation:Shape" xmi:id="_4Y5e4AlLEeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4Y6F8AlLEeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_6JO0EAlLEeacC7Ug7AKYJw" width="192"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4Y6F8QlLEeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_4Y6F8glLEeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4Y6F8wlLEeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Y6F9AlLEeacC7Ug7AKYJw" y="-1" width="192"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_4ZCBwAlLEeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_4ZCBwQlLEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZCBwglLEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_3MBJ4AnsEeacC7Ug7AKYJw" type="690">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_3L51IAnsEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_3MBJ4QnsEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_QBUrAAn3EeacC7Ug7AKYJw" type="692">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_QBLhEAn3EeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_QBUrAQn3EeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_4Yz_UAlLEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Y5e4QlLEeacC7Ug7AKYJw" x="86" y="23" width="192" height="148"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_7RUdgAlLEeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7RUdgglLEeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_A94XsAlMEeacC7Ug7AKYJw" width="631" height="23"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7RVEkAlLEeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_7RVEkQlLEeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7RVEkglLEeacC7Ug7AKYJw" type="6002">
|
||||
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7JqkEAlQEeacC7Ug7AKYJw" source="PapyrusCSSForceValue">
|
||||
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7JqkEQlQEeacC7Ug7AKYJw" key="visible" value="true"/>
|
||||
</eAnnotations>
|
||||
<children xmi:type="notation:Shape" xmi:id="_7JsZQAlQEeacC7Ug7AKYJw" type="3000">
|
||||
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7JsZRAlQEeacC7Ug7AKYJw" source="RegionAnnotationKey">
|
||||
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7JsZRQlQEeacC7Ug7AKYJw" key="RegionZoneKey" value=""/>
|
||||
</eAnnotations>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7JsZQglQEeacC7Ug7AKYJw" type="3002">
|
||||
<children xmi:type="notation:Shape" xmi:id="_7JtnYAlQEeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7JtnYglQEeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8aw_kAlQEeacC7Ug7AKYJw" width="400"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7JtnYwlQEeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_7JtnZAlQEeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_7JtnZQlQEeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7JtnZglQEeacC7Ug7AKYJw" y="-1" width="400"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_7J3YYAlQEeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_7J3YYQlQEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7J3YYglQEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_N1zKsAlfEeacC7Ug7AKYJw" type="690">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_N1qAwAlfEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_N1zKsQlfEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_7JtAUAlQEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7JtnYQlQEeacC7Ug7AKYJw" x="140" y="37" width="400"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_TFymAAlREeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_TFzNEAlREeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_VwqQ0AlREeacC7Ug7AKYJw" width="212"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_TFzNEQlREeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_TFzNEglREeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_TFzNEwlREeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_TFzNFAlREeacC7Ug7AKYJw" y="-1" width="212"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_TF6h0AlREeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_TF6h0QlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_TF6h0glREeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_ubTLUAlhEeacC7Ug7AKYJw" type="690">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_ubLPgAlhEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_ubTLUQlhEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_TFpcEAlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_TFymAQlREeacC7Ug7AKYJw" x="399" y="120" width="212" height="95"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_Wk2G0AlREeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Wk2G0glREeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_X_QPUAlREeacC7Ug7AKYJw" width="224"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Wk2G0wlREeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_Wk2G1AlREeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Wk2G1QlREeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wk2G1glREeacC7Ug7AKYJw" y="-1" width="224"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_Wk9bkAlREeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_Wk9bkQlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wk9bkglREeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_muE6UAn4EeacC7Ug7AKYJw" type="690">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_mt8-gAn4EeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_muE6UQn4EeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_WkruwAlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wk2G0QlREeacC7Ug7AKYJw" x="98" y="251" width="224" height="93"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_rOu78AlREeacC7Ug7AKYJw" type="11000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_rOvjAAlREeacC7Ug7AKYJw" type="11001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_rOvjAQlREeacC7Ug7AKYJw" x="-120" y="-20"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_rOvjAglREeacC7Ug7AKYJw" type="11002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_rOvjAwlREeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_rOj80AlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_rOu78QlREeacC7Ug7AKYJw" x="158" y="170"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_GEF00AlSEeacC7Ug7AKYJw" type="8000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_GEF00glSEeacC7Ug7AKYJw" type="8001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_GEF00wlSEeacC7Ug7AKYJw" x="25" y="3"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_GEF01AlSEeacC7Ug7AKYJw" type="8002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_GEF01QlSEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_GD19MAlSEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_GEF00QlSEeacC7Ug7AKYJw" x="21" y="50"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_X7WfYAlUEeacC7Ug7AKYJw" type="11000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_X7XGcAlUEeacC7Ug7AKYJw" type="11001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_X7XGcQlUEeacC7Ug7AKYJw" x="38" y="21"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_X7XGcglUEeacC7Ug7AKYJw" type="11002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_X7XGcwlUEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_X6_6EAlUEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_X7WfYQlUEeacC7Ug7AKYJw" x="461" y="359"/>
|
||||
</children>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7JsZQwlQEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Region" href="model.uml#_7JrLIAlQEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7JsZQQlQEeacC7Ug7AKYJw" width="631" height="438"/>
|
||||
</children>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7RVEkwlLEeacC7Ug7AKYJw" y="23" width="631" height="438"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_7RYu8AlLEeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_7RYu8QlLEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7RYu8glLEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="__JQewAlTEeacC7Ug7AKYJw" type="17000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="__JQewglTEeacC7Ug7AKYJw" type="17001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="__JRF0AlTEeacC7Ug7AKYJw" x="24" y="17"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="__JRF0QlTEeacC7Ug7AKYJw" type="17002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="__JRF0glTEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#__I55cAlTEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="__JQewQlTEeacC7Ug7AKYJw" y="396"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_7RQzIAlLEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7RUdgQlLEeacC7Ug7AKYJw" x="390" y="27" width="631" height="461"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_8X65MAlLEeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_8X65MglLEeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_BiFQ8AlMEeacC7Ug7AKYJw" width="630" height="23"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_8X65MwlLEeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_8X65NAlLEeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_8X65NQlLEeacC7Ug7AKYJw" type="6002">
|
||||
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z_VO4AlREeacC7Ug7AKYJw" source="PapyrusCSSForceValue">
|
||||
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z_V18AlREeacC7Ug7AKYJw" key="visible" value="true"/>
|
||||
</eAnnotations>
|
||||
<children xmi:type="notation:Shape" xmi:id="_z_WdAAlREeacC7Ug7AKYJw" type="3000">
|
||||
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z_WdBAlREeacC7Ug7AKYJw" source="RegionAnnotationKey">
|
||||
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z_WdBQlREeacC7Ug7AKYJw" key="RegionZoneKey" value=""/>
|
||||
</eAnnotations>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_z_WdAglREeacC7Ug7AKYJw" type="3002">
|
||||
<children xmi:type="notation:Shape" xmi:id="_z_XEEQlREeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_z_XEEwlREeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_2mihsAlREeacC7Ug7AKYJw" width="201"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_z_XrIAlREeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_z_XrIQlREeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_z_XrIglREeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_z_XrIwlREeacC7Ug7AKYJw" y="-1" width="201"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_z_XEEAlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_z_XEEglREeacC7Ug7AKYJw" x="160" y="17" width="201"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_4dYHgAlREeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4dYukAlREeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_5wgjUAlREeacC7Ug7AKYJw" width="189"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4dYukQlREeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_4dYukglREeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4dYukwlREeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4dYulAlREeacC7Ug7AKYJw" y="-1" width="189"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_4dli4AlREeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_4dli4QlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4dli4glREeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_qS-kcAn4EeacC7Ug7AKYJw" type="690">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_qS3PsAn4EeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_qS-kcQn4EeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_4dLTMAlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4dYHgQlREeacC7Ug7AKYJw" x="420" y="99" width="189" height="98"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_IegBwAlSEeacC7Ug7AKYJw" type="8000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_IegBwglSEeacC7Ug7AKYJw" type="8001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_IegBwwlSEeacC7Ug7AKYJw" x="25" y="3"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Iego0AlSEeacC7Ug7AKYJw" type="8002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_Iego0QlSEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_IeO8AAlSEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_IegBwQlSEeacC7Ug7AKYJw" x="21" y="23"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_TAc9kAlSEeacC7Ug7AKYJw" type="11000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_TAc9kglSEeacC7Ug7AKYJw" type="11001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_TAc9kwlSEeacC7Ug7AKYJw" x="-80" y="-20"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_TAdkoAlSEeacC7Ug7AKYJw" type="11002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_TAdkoQlSEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_TAKpsAlSEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_TAc9kQlSEeacC7Ug7AKYJw" x="195" y="111"/>
|
||||
</children>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_z_WdAwlREeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Region" href="model.uml#_z_V18QlREeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_z_WdAQlREeacC7Ug7AKYJw" width="630" height="248"/>
|
||||
</children>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8X65NglLEeacC7Ug7AKYJw" y="23" width="630" height="248"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_8X-jkAlLEeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_8X-jkQlLEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8X-jkglLEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_hgdqYAlSEeacC7Ug7AKYJw" type="17000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_hgdqYglSEeacC7Ug7AKYJw" type="17001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_hgdqYwlSEeacC7Ug7AKYJw" x="19" y="29"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_hgdqZAlSEeacC7Ug7AKYJw" type="17002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_hgdqZQlSEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_hgKvcAlSEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_hgdqYQlSEeacC7Ug7AKYJw" y="144"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_8X2AsAlLEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8X65MQlLEeacC7Ug7AKYJw" x="391" y="513" width="630" height="271"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_ETXs0AlMEeacC7Ug7AKYJw" type="6000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_ETXs0glMEeacC7Ug7AKYJw" type="6001">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Geb2MAlMEeacC7Ug7AKYJw" width="145"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_ETXs0wlMEeacC7Ug7AKYJw" type="19003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_ETXs1AlMEeacC7Ug7AKYJw" x="40"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_ETXs1QlMEeacC7Ug7AKYJw" type="6002">
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ETXs1glMEeacC7Ug7AKYJw" y="-1" width="145"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_ETb-QAlMEeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_ETb-QQlMEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ETb-QglMEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_WL460Al-EeacC7Ug7AKYJw" type="690">
|
||||
<element xmi:type="uml:OpaqueBehavior" href="model.uml#_WLxmEAl-EeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_WL460Ql-EeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:State" href="model.uml#_ETRmMAlMEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ETXs0QlMEeacC7Ug7AKYJw" x="22" y="234" width="145" height="119"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_ZvPYgAlMEeacC7Ug7AKYJw" type="8000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_ZvP_kAlMEeacC7Ug7AKYJw" type="8001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_ZvP_kQlMEeacC7Ug7AKYJw" x="25" y="3"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_ZvP_kglMEeacC7Ug7AKYJw" type="8002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_ZvP_kwlMEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_ZvIDwAlMEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZvPYgQlMEeacC7Ug7AKYJw" x="22" y="42"/>
|
||||
</children>
|
||||
<children xmi:type="notation:Shape" xmi:id="_WziNYAnxEeacC7Ug7AKYJw" type="12000">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_WziNYgnxEeacC7Ug7AKYJw" type="12001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_WziNYwnxEeacC7Ug7AKYJw" x="-84" y="37"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_WziNZAnxEeacC7Ug7AKYJw" type="12002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_WziNZQnxEeacC7Ug7AKYJw" x="25" y="-10"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Pseudostate" href="model.uml#_WzKZ8AnxEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_WziNYQnxEeacC7Ug7AKYJw" x="173" y="416"/>
|
||||
</children>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_aWpBqQlKEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:Region" href="model.uml#_aWoakAlKEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_aWpBqglKEeacC7Ug7AKYJw" width="1069" height="814"/>
|
||||
</children>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_aWpBqwlKEeacC7Ug7AKYJw" y="23" width="1069" height="814"/>
|
||||
</children>
|
||||
<children xmi:type="notation:BasicCompartment" xmi:id="_aahcEAlKEeacC7Ug7AKYJw" type="compartment_shape_display">
|
||||
<styles xmi:type="notation:TitleStyle" xmi:id="_aahcEQlKEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_aahcEglKEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<element xmi:type="uml:StateMachine" href="model.uml#_aWlXQAlKEeacC7Ug7AKYJw"/>
|
||||
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_aWpBrAlKEeacC7Ug7AKYJw" x="30" y="30" width="1069" height="837"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:StringValueStyle" xmi:id="_aWpBrQlKEeacC7Ug7AKYJw" name="diagram_compatibility_version" stringValue="1.1.0"/>
|
||||
<styles xmi:type="notation:DiagramStyle" xmi:id="_aWpBrglKEeacC7Ug7AKYJw"/>
|
||||
<styles xmi:type="style:PapyrusViewStyle" xmi:id="_aWpBrwlKEeacC7Ug7AKYJw">
|
||||
<owner xmi:type="uml:Model" href="model.uml#_aWepkAlKEeacC7Ug7AKYJw"/>
|
||||
</styles>
|
||||
<element xmi:type="uml:StateMachine" href="model.uml#_aWlXQAlKEeacC7Ug7AKYJw"/>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_bFs1IAlMEeacC7Ug7AKYJw" type="7000" source="_ZvPYgAlMEeacC7Ug7AKYJw" target="_4Y5e4AlLEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_bFs1IwlMEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_bFs1JAlMEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_bFs1JQlMEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_bFs1JglMEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_bFs1JwlMEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_bFs1KAlMEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_bFs1IQlMEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_bFk5UAlMEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bFs1IglMEeacC7Ug7AKYJw" points="[8, -1, -87, 0]$[85, -10, -10, -9]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGCzYAlMEeacC7Ug7AKYJw" id="(1.0,0.45)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGCzYQlMEeacC7Ug7AKYJw" id="(0.0,0.19148936170212766)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_2xUnoAlMEeacC7Ug7AKYJw" type="7000" source="_4Y5e4AlLEeacC7Ug7AKYJw" target="_7RUdgAlLEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_2xVOsAlMEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_2xVOsQlMEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_2xVOsglMEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_2xVOswlMEeacC7Ug7AKYJw" x="-12" y="-12"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_2xVOtAlMEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_2xVOtQlMEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_2xUnoQlMEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_2xHzUAlMEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2xUnoglMEeacC7Ug7AKYJw" points="[8, -1, -255, 0]$[215, -22, -48, -21]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2xveYAlMEeacC7Ug7AKYJw" id="(1.0,0.31756756756756754)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2xveYQlMEeacC7Ug7AKYJw" id="(0.0,0.09327548806941431)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="__nRiYAlREeacC7Ug7AKYJw" type="7000" source="_7JtnYAlQEeacC7Ug7AKYJw" target="_rOu78AlREeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="__nTXkAlREeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="__nTXkQlREeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="__nTXkglREeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="__nT-oAlREeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="__nT-oQlREeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="__nT-oglREeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="__nRiYQlREeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#__m9ZUAlREeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__nRiYglREeacC7Ug7AKYJw" points="[19, 47, -33, -77]$[53, 121, 1, -3]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oBwUAlREeacC7Ug7AKYJw" id="(0.1175,1.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oBwUQlREeacC7Ug7AKYJw" id="(0.48333333333333334,0.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_A_mnQAlSEeacC7Ug7AKYJw" type="7000" source="_rOu78AlREeacC7Ug7AKYJw" target="_TFymAAlREeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_A_mnQwlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_A_mnRAlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_A_mnRQlSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_A_mnRglSEeacC7Ug7AKYJw" x="-8" y="-17"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_A_mnRwlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_A_mnSAlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_A_mnQQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_A_X9wAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A_mnQglSEeacC7Ug7AKYJw" points="[25, 1, -157, -10]$[170, 10, -12, -1]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BAO5YAlSEeacC7Ug7AKYJw" id="(1.0,0.5)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BAO5YQlSEeacC7Ug7AKYJw" id="(0.0,0.631578947368421)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_CPLYwAlSEeacC7Ug7AKYJw" type="7000" source="_rOu78AlREeacC7Ug7AKYJw" target="_Wk2G0AlREeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_CPLYwwlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_CPLYxAlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_CPLYxQlSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_CPLYxglSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_CPLYxwlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_CPLYyAlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_CPLYwQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_CO7hIAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CPLYwglSEeacC7Ug7AKYJw" points="[-1, 9, 0, -145]$[-4, 150, -3, -4]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CP1gEAlSEeacC7Ug7AKYJw" id="(0.48333333333333334,1.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CP1gEQlSEeacC7Ug7AKYJw" id="(0.4049586776859504,0.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_Hc-TUAlSEeacC7Ug7AKYJw" type="7000" source="_GEF00AlSEeacC7Ug7AKYJw" target="_7JtnYAlQEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Hc-TUwlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hc-TVAlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Hc-TVQlSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hc-TVglSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_Hc-6YAlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_Hc-6YQlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_Hc-TUQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_HctNkAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Hc-TUglSEeacC7Ug7AKYJw" points="[8, -3, -116, 0]$[110, -3, -14, 0]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HdsFAAlSEeacC7Ug7AKYJw" id="(1.0,0.45)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HdsFAQlSEeacC7Ug7AKYJw" id="(0.0,0.3384615384615385)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_JkkR8AlSEeacC7Ug7AKYJw" type="7000" source="_IegBwAlSEeacC7Ug7AKYJw" target="_z_XEEQlREeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_JkkR8wlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_JkkR9AlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_JkkR9QlSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_JkkR9glSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_JkkR9wlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_JkkR-AlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_JkkR8QlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_JkTMMAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JkkR8glSEeacC7Ug7AKYJw" points="[8, -1, -136, 0]$[130, -1, -14, 0]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlQ1gAlSEeacC7Ug7AKYJw" id="(1.0,0.5)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlQ1gQlSEeacC7Ug7AKYJw" id="(0.0,0.3404255319148936)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_dksYYAlSEeacC7Ug7AKYJw" type="7000" source="_z_XEEQlREeacC7Ug7AKYJw" target="_TAc9kAlSEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_dks_cAlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_dks_cQlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_dks_cglSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_dks_cwlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_dks_dAlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_dks_dQlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_dksYYQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_dkZdcAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dksYYglSEeacC7Ug7AKYJw" points="[60, 47, 98, -57]$[-40, 103, -2, -1]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dlfCkAlSEeacC7Ug7AKYJw" id="(0.31840796019900497,1.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dlfCkQlSEeacC7Ug7AKYJw" id="(0.48333333333333334,0.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_eYJOkAlSEeacC7Ug7AKYJw" type="7000" source="_TAc9kAlSEeacC7Ug7AKYJw" target="_4dYHgAlREeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_eYJ1oAlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_eYJ1oQlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_eYJ1oglSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_eYJ1owlSEeacC7Ug7AKYJw" x="-5" y="-15"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_eYJ1pAlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_eYJ1pQlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_eYJOkQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_eX26sAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eYJOkglSEeacC7Ug7AKYJw" points="[20, 3, -150, -24]$[150, 20, -20, -7]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eY5cgAlSEeacC7Ug7AKYJw" id="(1.0,0.5)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eY5cgQlSEeacC7Ug7AKYJw" id="(0.0,0.22448979591836735)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_pap5wAlSEeacC7Ug7AKYJw" type="7000" source="_TAc9kAlSEeacC7Ug7AKYJw" target="_hgdqYAlSEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_pap5wwlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_pap5xAlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_pap5xQlSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_pap5xglSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_pap5xwlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_pap5yAlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_pap5wQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_paVwsAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pap5wglSEeacC7Ug7AKYJw" points="[-14, 5, 126, -42]$[-138, 51, 2, 4]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ztde8AlVEeacC7Ug7AKYJw" id="(0.25,1.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pbkfwQlSEeacC7Ug7AKYJw" id="(0.8,0.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_t58vkAlSEeacC7Ug7AKYJw" type="7000" source="_ETXs0AlMEeacC7Ug7AKYJw" target="_4Y5e4AlLEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_t58vkwlSEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_t58vlAlSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_t58vlQlSEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_t58vlglSEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_t58vlwlSEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_t58vmAlSEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_t58vkQlSEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_t5omgAlSEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_t58vkglSEeacC7Ug7AKYJw" points="[41, 0, -9, 243]$[42, -233, -8, 10]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_t62ugAlSEeacC7Ug7AKYJw" id="(0.7379310344827587,0.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_t62ugQlSEeacC7Ug7AKYJw" id="(0.22916666666666666,1.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_CYP_wAlTEeacC7Ug7AKYJw" type="7000" source="_4Y5e4AlLEeacC7Ug7AKYJw" target="_8X65MAlLEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_CYRN4AlTEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_CYRN4QlTEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_CYRN4glTEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_CYRN4wlTEeacC7Ug7AKYJw" x="-190" y="-47"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_CYRN5AlTEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_CYRN5QlTEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_CYP_wQlTEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_CX4zYAlTEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CYP_wglTEeacC7Ug7AKYJw" points="[0, 0, -152, -384]$[0, 384, -152, 0]$[152, 384, 0, 0]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CZLz4AlTEeacC7Ug7AKYJw" id="(0.796875,1.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CZLz4QlTEeacC7Ug7AKYJw" id="(0.0,0.14760147601476015)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_3VluIAlTEeacC7Ug7AKYJw" type="7000" source="_WziNYAnxEeacC7Ug7AKYJw" target="_ETXs0AlMEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_3VluIwlTEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_3VluJAlTEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_3VluJQlTEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_3VluJglTEeacC7Ug7AKYJw" x="22" y="-16"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_3VluJwlTEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_3VluKAlTEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_3VluIQlTEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_3VTaQAlTEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3VluIglTEeacC7Ug7AKYJw" points="[3, 0, 87, 69]$[-84, 0, 0, 69]$[-84, -69, 0, 0]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Wd34AlTEeacC7Ug7AKYJw" id="(0.0,0.4)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Wd34QlTEeacC7Ug7AKYJw" id="(0.46206896551724136,1.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_4cK7sAlTEeacC7Ug7AKYJw" type="7000" source="_WziNYAnxEeacC7Ug7AKYJw" target="_4Y5e4AlLEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4cK7swlTEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_4cK7tAlTEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4cK7tQlTEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_4cK7tglTEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_4cK7twlTEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_4cK7uAlTEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_4cK7sQlTEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_4b4n0AlTEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cK7sglTEeacC7Ug7AKYJw" points="[-1, -11, 15, 443]$[-5, -443, 11, 11]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hIvtsAnxEeacC7Ug7AKYJw" id="(0.55,0.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4c-M8QlTEeacC7Ug7AKYJw" id="(0.5,1.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_9BGfcAlTEeacC7Ug7AKYJw" type="7000" source="_4dYHgAlREeacC7Ug7AKYJw" target="_hgdqYAlSEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_9BHGgAlTEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_9BHGgQlTEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_9BHGgglTEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_9BHGgwlTEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_9BHGhAlTEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_9BHGhQlTEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_9BGfcQlTEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_9AwhMAlTEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9BGfcglTEeacC7Ug7AKYJw" points="[-19, 0, 290, -5]$[-306, 7, 3, 2]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9CC6oAlTEeacC7Ug7AKYJw" id="(0.0,0.8163265306122449)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9CC6oQlTEeacC7Ug7AKYJw" id="(1.0,0.35)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_EzPmEAlUEeacC7Ug7AKYJw" type="7000" source="_Wk2G0AlREeacC7Ug7AKYJw" target="__JQewAlTEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_EzPmEwlUEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_EzPmFAlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_EzPmFQlUEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_EzPmFglUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_EzPmFwlUEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_EzPmGAlUEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_EzPmEQlUEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_Eyy6IAlUEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EzPmEglUEeacC7Ug7AKYJw" points="[-20, -1, 134, 2]$[-150, -2, 4, 1]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E0Q5wAlUEeacC7Ug7AKYJw" id="(0.0,0.5319148936170213)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E0Q5wQlUEeacC7Ug7AKYJw" id="(1.0,0.45)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_HHPB8AlUEeacC7Ug7AKYJw" type="7000" source="__JQewAlTEeacC7Ug7AKYJw" target="_WziNYAnxEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_HHPpAAlUEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_HHPpAQlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_HHPpAglUEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_HHPpAwlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_HHPpBAlUEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_HHPpBQlUEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_HHPB8QlUEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_HG8uEAlUEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HHPB8glUEeacC7Ug7AKYJw" points="[1, 15, 201, -121]$[-198, 126, 2, -10]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HIGkoAlUEeacC7Ug7AKYJw" id="(0.0,0.5)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b8H30AnxEeacC7Ug7AKYJw" id="(1.0,0.4)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_cPRLoAlUEeacC7Ug7AKYJw" type="7000" source="_TFymAAlREeacC7Ug7AKYJw" target="_X7WfYAlUEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_cPRLowlUEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_cPRLpAlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_cPRysAlUEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_cPRysQlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_cPRysglUEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_cPRyswlUEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_cPRLoQlUEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_cO5YMAlUEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cPRLoglUEeacC7Ug7AKYJw" points="[0, 12, -2, -183]$[3, 204, 1, 9]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cQSfUAlUEeacC7Ug7AKYJw" id="(0.4339622641509434,1.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cQSfUQlUEeacC7Ug7AKYJw" id="(0.5,0.0)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_dT87wAlUEeacC7Ug7AKYJw" type="7000" source="_X7WfYAlUEeacC7Ug7AKYJw" target="_Wk2G0AlREeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_dT87wwlUEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_dT87xAlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_dT87xQlUEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_dT87xglUEeacC7Ug7AKYJw" x="4" y="46"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_dT87xwlUEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_dT87yAlUEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_dT87wQlUEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_dTlvYAlUEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dT87wglUEeacC7Ug7AKYJw" points="[-6, -2, 129, 45]$[-113, -48, 22, -1]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dU6lEAlUEeacC7Ug7AKYJw" id="(0.0,0.4)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dU6lEQlUEeacC7Ug7AKYJw" id="(1.0,0.6170212765957447)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_eX99gAlUEeacC7Ug7AKYJw" type="7000" source="_X7WfYAlUEeacC7Ug7AKYJw" target="__JQewAlTEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_eX99gwlUEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_eX99hAlUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_eX99hQlUEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_eX99hglUEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_eX99hwlUEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_eX99iAlUEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_eX99gQlUEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_eXmxIAlUEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eX99gglUEeacC7Ug7AKYJw" points="[-22, -3, 378, 53]$[-397, -54, 3, 2]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eZMFgAlUEeacC7Ug7AKYJw" id="(0.0,0.25)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eZMskAlUEeacC7Ug7AKYJw" id="(1.0,0.3)"/>
|
||||
</edges>
|
||||
<edges xmi:type="notation:Connector" xmi:id="_v2bqIAnxEeacC7Ug7AKYJw" type="7000" source="_hgdqYAlSEeacC7Ug7AKYJw" target="_WziNYAnxEeacC7Ug7AKYJw">
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_v2c4QAnxEeacC7Ug7AKYJw" type="7001">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_v2c4QQnxEeacC7Ug7AKYJw"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_v2c4QgnxEeacC7Ug7AKYJw" type="7002">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_v2c4QwnxEeacC7Ug7AKYJw" x="-6" y="-96"/>
|
||||
</children>
|
||||
<children xmi:type="notation:DecorationNode" xmi:id="_v2c4RAnxEeacC7Ug7AKYJw" type="7003">
|
||||
<layoutConstraint xmi:type="notation:Location" xmi:id="_v2c4RQnxEeacC7Ug7AKYJw" y="60"/>
|
||||
</children>
|
||||
<styles xmi:type="notation:FontStyle" xmi:id="_v2bqIQnxEeacC7Ug7AKYJw"/>
|
||||
<element xmi:type="uml:Transition" href="model.uml#_v2Fr4AnxEeacC7Ug7AKYJw"/>
|
||||
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v2bqIgnxEeacC7Ug7AKYJw" points="[0, 9, 191, 232]$[-197, 8, -6, 231]$[-197, -224, -6, -1]"/>
|
||||
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v3dk4AnxEeacC7Ug7AKYJw" id="(0.0,0.0)"/>
|
||||
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v3dk4QnxEeacC7Ug7AKYJw" id="(0.85,1.0)"/>
|
||||
</edges>
|
||||
</notation:Diagram>
|
||||
122
spring-statemachine-samples/deploy/src/main/resources/model.uml
Normal file
122
spring-statemachine-samples/deploy/src/main/resources/model.uml
Normal file
@@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_aWepkAlKEeacC7Ug7AKYJw" name="RootElement">
|
||||
<packagedElement xmi:type="uml:StateMachine" xmi:id="_aWlXQAlKEeacC7Ug7AKYJw" name="StateMachine">
|
||||
<region xmi:type="uml:Region" xmi:id="_aWoakAlKEeacC7Ug7AKYJw" name="Region1">
|
||||
<transition xmi:type="uml:Transition" xmi:id="_bFk5UAlMEeacC7Ug7AKYJw" source="_ZvIDwAlMEeacC7Ug7AKYJw" target="_4Yz_UAlLEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_2xHzUAlMEeacC7Ug7AKYJw" source="_4Yz_UAlLEeacC7Ug7AKYJw" target="_7RQzIAlLEeacC7Ug7AKYJw">
|
||||
<trigger xmi:type="uml:Trigger" xmi:id="_4rw7EAlMEeacC7Ug7AKYJw" event="_xHrekAlMEeacC7Ug7AKYJw"/>
|
||||
</transition>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_t5omgAlSEeacC7Ug7AKYJw" source="_ETRmMAlMEeacC7Ug7AKYJw" target="_4Yz_UAlLEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_CX4zYAlTEeacC7Ug7AKYJw" source="_4Yz_UAlLEeacC7Ug7AKYJw" target="_8X2AsAlLEeacC7Ug7AKYJw">
|
||||
<trigger xmi:type="uml:Trigger" xmi:id="_o5Oq4AlWEeacC7Ug7AKYJw" event="_-BZ7UAlSEeacC7Ug7AKYJw"/>
|
||||
</transition>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_3VTaQAlTEeacC7Ug7AKYJw" guard="_wLPjIAlaEeacC7Ug7AKYJw" source="_WzKZ8AnxEeacC7Ug7AKYJw" target="_ETRmMAlMEeacC7Ug7AKYJw">
|
||||
<ownedRule xmi:type="uml:Constraint" xmi:id="_wLPjIAlaEeacC7Ug7AKYJw">
|
||||
<specification xmi:type="uml:OpaqueExpression" xmi:id="_wLPjIQlaEeacC7Ug7AKYJw">
|
||||
<language>bean</language>
|
||||
<body>hasErrorGuard</body>
|
||||
</specification>
|
||||
</ownedRule>
|
||||
</transition>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_4b4n0AlTEeacC7Ug7AKYJw" source="_WzKZ8AnxEeacC7Ug7AKYJw" target="_4Yz_UAlLEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_HG8uEAlUEeacC7Ug7AKYJw" source="__I55cAlTEeacC7Ug7AKYJw" target="_WzKZ8AnxEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_v2Fr4AnxEeacC7Ug7AKYJw" source="_hgKvcAlSEeacC7Ug7AKYJw" target="_WzKZ8AnxEeacC7Ug7AKYJw"/>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_4Yz_UAlLEeacC7Ug7AKYJw" name="READY">
|
||||
<entry xmi:type="uml:OpaqueBehavior" xmi:id="_3L51IAnsEeacC7Ug7AKYJw" name="readyEntryction">
|
||||
<language>bean</language>
|
||||
<body>readyEntryction</body>
|
||||
</entry>
|
||||
<exit xmi:type="uml:OpaqueBehavior" xmi:id="_QBLhEAn3EeacC7Ug7AKYJw" name="exitErrorAction">
|
||||
<language>bean</language>
|
||||
<body>exitErrorAction</body>
|
||||
</exit>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_7RQzIAlLEeacC7Ug7AKYJw" name="DEPLOY">
|
||||
<connectionPoint xmi:type="uml:Pseudostate" xmi:id="__I55cAlTEeacC7Ug7AKYJw" name="EXITDEPLOY" kind="exitPoint"/>
|
||||
<region xmi:type="uml:Region" xmi:id="_7JrLIAlQEeacC7Ug7AKYJw" name="Region1">
|
||||
<transition xmi:type="uml:Transition" xmi:id="__m9ZUAlREeacC7Ug7AKYJw" source="_7JtAUAlQEeacC7Ug7AKYJw" target="_rOj80AlREeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_A_X9wAlSEeacC7Ug7AKYJw" guard="_i4oTAAlZEeacC7Ug7AKYJw" source="_rOj80AlREeacC7Ug7AKYJw" target="_TFpcEAlREeacC7Ug7AKYJw">
|
||||
<ownedRule xmi:type="uml:Constraint" xmi:id="_i4oTAAlZEeacC7Ug7AKYJw">
|
||||
<specification xmi:type="uml:OpaqueExpression" xmi:id="_i4oTAQlZEeacC7Ug7AKYJw">
|
||||
<language>bean</language>
|
||||
<body>isInstalledGuard</body>
|
||||
</specification>
|
||||
</ownedRule>
|
||||
</transition>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_CO7hIAlSEeacC7Ug7AKYJw" source="_rOj80AlREeacC7Ug7AKYJw" target="_WkruwAlREeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_HctNkAlSEeacC7Ug7AKYJw" source="_GD19MAlSEeacC7Ug7AKYJw" target="_7JtAUAlQEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_Eyy6IAlUEeacC7Ug7AKYJw" source="_WkruwAlREeacC7Ug7AKYJw" target="__I55cAlTEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_cO5YMAlUEeacC7Ug7AKYJw" source="_TFpcEAlREeacC7Ug7AKYJw" target="_X6_6EAlUEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_dTlvYAlUEeacC7Ug7AKYJw" guard="_q5qKMAlZEeacC7Ug7AKYJw" source="_X6_6EAlUEeacC7Ug7AKYJw" target="_WkruwAlREeacC7Ug7AKYJw">
|
||||
<ownedRule xmi:type="uml:Constraint" xmi:id="_q5qKMAlZEeacC7Ug7AKYJw">
|
||||
<specification xmi:type="uml:OpaqueExpression" xmi:id="_q5qKMQlZEeacC7Ug7AKYJw">
|
||||
<language>bean</language>
|
||||
<body>installedOkGuard</body>
|
||||
</specification>
|
||||
</ownedRule>
|
||||
</transition>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_eXmxIAlUEeacC7Ug7AKYJw" source="_X6_6EAlUEeacC7Ug7AKYJw" target="__I55cAlTEeacC7Ug7AKYJw"/>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_7JtAUAlQEeacC7Ug7AKYJw" name="PREPAREDEPLOY">
|
||||
<entry xmi:type="uml:OpaqueBehavior" xmi:id="_N1qAwAlfEeacC7Ug7AKYJw" name="preparedeployEntryAction">
|
||||
<language>bean</language>
|
||||
<body>preparedeployEntryAction</body>
|
||||
</entry>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_TFpcEAlREeacC7Ug7AKYJw" name="INSTALL">
|
||||
<entry xmi:type="uml:OpaqueBehavior" xmi:id="_ubLPgAlhEeacC7Ug7AKYJw" name="installEntryAction">
|
||||
<language>bean</language>
|
||||
<body>installEntryAction</body>
|
||||
</entry>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_WkruwAlREeacC7Ug7AKYJw" name="START">
|
||||
<entry xmi:type="uml:OpaqueBehavior" xmi:id="_mt8-gAn4EeacC7Ug7AKYJw" name="startEntryAction">
|
||||
<language>bean</language>
|
||||
<body>startEntryAction</body>
|
||||
</entry>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_rOj80AlREeacC7Ug7AKYJw" name="ISINSTALLED" kind="choice"/>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_GD19MAlSEeacC7Ug7AKYJw" name=""/>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_X6_6EAlUEeacC7Ug7AKYJw" name="INSTALLOK" kind="choice"/>
|
||||
</region>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_8X2AsAlLEeacC7Ug7AKYJw" name="UNDEPLOY">
|
||||
<connectionPoint xmi:type="uml:Pseudostate" xmi:id="_hgKvcAlSEeacC7Ug7AKYJw" name="EXITUNDEPLOY" kind="exitPoint"/>
|
||||
<region xmi:type="uml:Region" xmi:id="_z_V18QlREeacC7Ug7AKYJw" name="Region1">
|
||||
<transition xmi:type="uml:Transition" xmi:id="_JkTMMAlSEeacC7Ug7AKYJw" source="_IeO8AAlSEeacC7Ug7AKYJw" target="_z_XEEAlREeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_dkZdcAlSEeacC7Ug7AKYJw" source="_z_XEEAlREeacC7Ug7AKYJw" target="_TAKpsAlSEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_eX26sAlSEeacC7Ug7AKYJw" guard="_NU8SoAlaEeacC7Ug7AKYJw" source="_TAKpsAlSEeacC7Ug7AKYJw" target="_4dLTMAlREeacC7Ug7AKYJw">
|
||||
<ownedRule xmi:type="uml:Constraint" xmi:id="_NU8SoAlaEeacC7Ug7AKYJw">
|
||||
<specification xmi:type="uml:OpaqueExpression" xmi:id="_NU8SoQlaEeacC7Ug7AKYJw">
|
||||
<language>bean</language>
|
||||
<body>isRunningGuard</body>
|
||||
</specification>
|
||||
</ownedRule>
|
||||
</transition>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_paVwsAlSEeacC7Ug7AKYJw" source="_TAKpsAlSEeacC7Ug7AKYJw" target="_hgKvcAlSEeacC7Ug7AKYJw"/>
|
||||
<transition xmi:type="uml:Transition" xmi:id="_9AwhMAlTEeacC7Ug7AKYJw" source="_4dLTMAlREeacC7Ug7AKYJw" target="_hgKvcAlSEeacC7Ug7AKYJw"/>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_z_XEEAlREeacC7Ug7AKYJw" name="PREPAREUNDEPLOY"/>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_4dLTMAlREeacC7Ug7AKYJw" name="STOP">
|
||||
<entry xmi:type="uml:OpaqueBehavior" xmi:id="_qS3PsAn4EeacC7Ug7AKYJw" name="stopEntryAction">
|
||||
<language>bean</language>
|
||||
<body>stopEntryAction</body>
|
||||
</entry>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_IeO8AAlSEeacC7Ug7AKYJw" name=""/>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_TAKpsAlSEeacC7Ug7AKYJw" name="ISRUNNING" kind="choice"/>
|
||||
</region>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:State" xmi:id="_ETRmMAlMEeacC7Ug7AKYJw" name="ERROR">
|
||||
<entry xmi:type="uml:OpaqueBehavior" xmi:id="_WLxmEAl-EeacC7Ug7AKYJw" name="errorEntryAction">
|
||||
<language>bean</language>
|
||||
<body>errorEntryAction</body>
|
||||
</entry>
|
||||
</subvertex>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_ZvIDwAlMEeacC7Ug7AKYJw" name=""/>
|
||||
<subvertex xmi:type="uml:Pseudostate" xmi:id="_WzKZ8AnxEeacC7Ug7AKYJw" name="HASERROR" kind="junction"/>
|
||||
</region>
|
||||
</packagedElement>
|
||||
<packagedElement xmi:type="uml:Signal" xmi:id="_uqGo4AlMEeacC7Ug7AKYJw" name="DEPLOY"/>
|
||||
<packagedElement xmi:type="uml:SignalEvent" xmi:id="_xHrekAlMEeacC7Ug7AKYJw" name="SignalEventDEPLOY" signal="_uqGo4AlMEeacC7Ug7AKYJw"/>
|
||||
<packagedElement xmi:type="uml:Signal" xmi:id="_8ElCQAlSEeacC7Ug7AKYJw" name="UNDEPLOY"/>
|
||||
<packagedElement xmi:type="uml:SignalEvent" xmi:id="_-BZ7UAlSEeacC7Ug7AKYJw" name="SignalEventUNDEPLOY" signal="_8ElCQAlSEeacC7Ug7AKYJw"/>
|
||||
</uml:Model>
|
||||
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>Spring Statemachine Deploy Demo</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p th:text="'States: ' + ${states}" />
|
||||
</div>
|
||||
|
||||
<form action="#" data-th-action="@{/state}" data-th-object="${model}" method="post">
|
||||
<div>
|
||||
<p th:text="'Choose event'" />
|
||||
</div>
|
||||
<ul>
|
||||
<li th:each="ty : ${allTypes}">
|
||||
<input type="radio" name="event" th:value="${ty}" />
|
||||
<label th:text="${ty}">replaced</label>
|
||||
</li>
|
||||
</ul>
|
||||
<div>
|
||||
<p th:text="'Choose event header(s)'" />
|
||||
</div>
|
||||
<ul>
|
||||
<li th:each="ty : ${failTypes}">
|
||||
<input type="checkbox" name="fail" th:value="${ty}" />
|
||||
<label th:text="${ty}">replaced</label>
|
||||
</li>
|
||||
</ul>
|
||||
<button type="submit">Send Event</button>
|
||||
</form>
|
||||
|
||||
<div>
|
||||
<p th:text="'Messages:'" />
|
||||
<p th:each="ty : ${messages}" th:text="${ty}" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* 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 demo.deploy;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.SpringApplicationConfiguration;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringApplicationConfiguration(classes = { Application.class})
|
||||
@WebAppConfiguration
|
||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public class DeployTests {
|
||||
|
||||
private MockMvc mvc;
|
||||
|
||||
@Autowired
|
||||
private WebApplicationContext context;
|
||||
|
||||
@Test
|
||||
public void testHome() throws Exception {
|
||||
mvc.
|
||||
perform(get("/state")).
|
||||
andExpect(status().isOk());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeploy() throws Exception {
|
||||
mvc.
|
||||
perform(get("/state").param("event", "DEPLOY")).
|
||||
andExpect(status().isOk()).
|
||||
andExpect(content().string(containsString("States: [READY]")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUndeploy() throws Exception {
|
||||
mvc.
|
||||
perform(get("/state").param("event", "UNDEPLOY")).
|
||||
andExpect(status().isOk()).
|
||||
andExpect(content().string(containsString("States: [READY]")));
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
mvc = MockMvcBuilders.webAppContextSetup(context).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* 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 demo.deploy;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.SpringApplicationConfiguration;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.statemachine.StateMachine;
|
||||
import org.springframework.statemachine.test.StateMachineTestPlan;
|
||||
import org.springframework.statemachine.test.StateMachineTestPlanBuilder;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringApplicationConfiguration(classes = { StateMachineConfig.class})
|
||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public class StateMachineTests {
|
||||
|
||||
@Autowired
|
||||
private StateMachine<String, String> stateMachine;
|
||||
|
||||
@Test
|
||||
public void testDeployInstalledInstallOkInstallOk() throws Exception {
|
||||
Message<String> deploy = MessageBuilder.withPayload("DEPLOY")
|
||||
.setHeader("isInstalled", true)
|
||||
.setHeader("installedOk", true)
|
||||
.setHeader("hasError", true).build();
|
||||
StateMachineTestPlan<String, String> plan =
|
||||
StateMachineTestPlanBuilder.<String, String>builder()
|
||||
.stateMachine(stateMachine)
|
||||
.step().expectState("READY").and()
|
||||
.step().sendEvent(deploy)
|
||||
.expectStateChanged(6)
|
||||
.expectStateEntered("DEPLOY", "PREPAREDEPLOY", "INSTALL", "START", "ERROR", "READY")
|
||||
.expectStates("READY").and()
|
||||
.build();
|
||||
plan.test();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeployInstalledInstallOkInstallError() throws Exception {
|
||||
Message<String> deploy = MessageBuilder.withPayload("DEPLOY")
|
||||
.setHeader("isInstalled", true)
|
||||
.setHeader("hasError", true).build();
|
||||
StateMachineTestPlan<String, String> plan =
|
||||
StateMachineTestPlanBuilder.<String, String>builder()
|
||||
.stateMachine(stateMachine)
|
||||
.step().expectState("READY").and()
|
||||
.step().sendEvent(deploy)
|
||||
.expectStateChanged(5)
|
||||
.expectStateEntered("DEPLOY", "PREPAREDEPLOY", "INSTALL", "ERROR", "READY")
|
||||
.expectStates("READY").and()
|
||||
.build();
|
||||
plan.test();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeployInstalledInstallFail() throws Exception {
|
||||
Message<String> deploy = MessageBuilder.withPayload("DEPLOY")
|
||||
.setHeader("isInstalled", true).build();
|
||||
StateMachineTestPlan<String, String> plan =
|
||||
StateMachineTestPlanBuilder.<String, String>builder()
|
||||
.stateMachine(stateMachine)
|
||||
.step().expectState("READY").and()
|
||||
.step().sendEvent(deploy)
|
||||
.expectStateChanged(4)
|
||||
.expectStateEntered("DEPLOY", "PREPAREDEPLOY", "INSTALL", "READY")
|
||||
.expectStates("READY").and()
|
||||
.build();
|
||||
plan.test();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUndeploy() throws Exception {
|
||||
Message<String> deploy = MessageBuilder.withPayload("UNDEPLOY").build();
|
||||
StateMachineTestPlan<String, String> plan =
|
||||
StateMachineTestPlanBuilder.<String, String>builder()
|
||||
.stateMachine(stateMachine)
|
||||
.step().expectState("READY").and()
|
||||
.step().sendEvent(deploy)
|
||||
.expectStateChanged(3)
|
||||
.expectStateEntered("UNDEPLOY", "PREPAREUNDEPLOY", "READY")
|
||||
.expectStateExited("READY", "PREPAREUNDEPLOY", "UNDEPLOY")
|
||||
.expectStates("READY").and()
|
||||
.build();
|
||||
plan.test();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUndeployRunningOk() throws Exception {
|
||||
Message<String> deploy = MessageBuilder.withPayload("UNDEPLOY")
|
||||
.setHeader("isRunning", true)
|
||||
.setHeader("hasError", true).build();
|
||||
StateMachineTestPlan<String, String> plan =
|
||||
StateMachineTestPlanBuilder.<String, String>builder()
|
||||
.stateMachine(stateMachine)
|
||||
.step().expectState("READY").and()
|
||||
.step().sendEvent(deploy)
|
||||
.expectStateChanged(5)
|
||||
.expectStateEntered("UNDEPLOY", "PREPAREUNDEPLOY", "STOP", "ERROR", "READY")
|
||||
.expectStates("READY").and()
|
||||
.build();
|
||||
plan.test();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUndeployNotRunningOk() throws Exception {
|
||||
Message<String> undeploy = MessageBuilder.withPayload("UNDEPLOY").build();
|
||||
StateMachineTestPlan<String, String> plan =
|
||||
StateMachineTestPlanBuilder.<String, String>builder()
|
||||
.stateMachine(stateMachine)
|
||||
.step().expectState("READY").and()
|
||||
.step().sendEvent(undeploy)
|
||||
.expectStateChanged(3)
|
||||
.expectStateEntered("UNDEPLOY", "PREPAREUNDEPLOY", "READY")
|
||||
.expectStates("READY").and()
|
||||
.build();
|
||||
plan.test();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user