diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/exporter/PlantUml.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/exporter/PlantUml.java index 1dfd9d9..0bee44d 100644 --- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/exporter/PlantUml.java +++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/exporter/PlantUml.java @@ -5,6 +5,9 @@ import click.kamil.springstatemachineexporter.model.Transition; import click.kamil.springstatemachineexporter.model.TransitionType; import click.kamil.springstatemachineexporter.ast.common.StringUtils; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -17,22 +20,19 @@ import java.util.stream.Collectors; public class PlantUml implements StateMachineExporter { private final List choiceColors = List.of("FF6347", "4682B4", "32CD32", "FFD700", "6A5ACD", "FF69B4"); - private String getColor(Transition t, String source, Map choiceStateColorMap) { - if (t.getType() == null) - return "000000"; - return switch (t.getType()) { - case CHOICE -> choiceStateColorMap.getOrDefault(source, "000000"); - case EXTERNAL -> "1E90FF"; - case INTERNAL -> "32CD32"; - case LOCAL -> "FFA500"; - case JUNCTION -> "FF69B4"; - case JOIN -> "8A2BE2"; - case FORK -> "20B2AA"; - }; - } - private final String LAMBDA = "λ"; + private String loadBaseStyle() { + try (InputStream is = getClass().getResourceAsStream("/plantuml/default-style.puml")) { + if (is == null) return ""; + return new BufferedReader(new InputStreamReader(is)) + .lines() + .collect(Collectors.joining("\n")); + } catch (Exception e) { + return ""; + } + } + @Override public String export(String name, List transitions, @@ -42,9 +42,21 @@ public class PlantUml implements StateMachineExporter { StringBuilder sb = new StringBuilder(); sb.append("@startuml\n"); - sb.append("skinparam state {\n"); - sb.append(" BackgroundColor<> LightYellow\n"); - sb.append("}\n\n"); + + String style = loadBaseStyle(); + + StringBuilder choiceColorStyles = new StringBuilder(); + StringBuilder hideChoiceColors = new StringBuilder(); + for (int i = 0; i < choiceColors.size(); i++) { + choiceColorStyles.append(" .choice_color_").append(i) + .append(" { LineColor #").append(choiceColors.get(i)).append(" }\n"); + hideChoiceColors.append("hide <> stereotype\n"); + } + + style = style.replace("/* CHOICE_COLORS_PLACEHOLDER */", choiceColorStyles.toString()); + style = style.replace("/* HIDE_CHOICE_COLORS_PLACEHOLDER */", hideChoiceColors.toString()); + + sb.append(style).append("\n"); for (String start : startStates) { sb.append("[*] --> ").append(simplify(start)).append("\n"); @@ -60,12 +72,13 @@ public class PlantUml implements StateMachineExporter { } } - Map choiceStateColorMap = new HashMap<>(); + Map choiceStateClassMap = new HashMap<>(); int colorIndex = 0; for (String state : statesWithChoice) { + String className = "choice_color_" + (colorIndex % choiceColors.size()); sb.append("state ").append(state).append(" <>\n"); - choiceStateColorMap.put(state, choiceColors.get(colorIndex % choiceColors.size())); + choiceStateClassMap.put(state, className); colorIndex++; } @@ -80,6 +93,7 @@ public class PlantUml implements StateMachineExporter { sb.append("\n"); + Set usedEventStereotypes = new HashSet<>(); for (Transition t : transitions) { if (t.getSourceStates() == null || t.getSourceStates().isEmpty()) continue; @@ -104,8 +118,15 @@ public class PlantUml implements StateMachineExporter { String target = simplify(rawTarget); String transitionSource = source; - String color = getColor(t, source, choiceStateColorMap); - sb.append(transitionSource).append(" -[#").append(color).append(",bold]-> ").append(target); + String styleClass = getStyleClass(t, source, choiceStateClassMap); + String color = getLegacyColor(t, source, choiceStateClassMap); + sb.append(transitionSource).append(" -[#").append(color).append(",bold]-> ").append(target).append(" <<").append(styleClass).append(">>"); + + if (t.getEvent() != null && !t.getEvent().isBlank()) { + String eventClass = "e_" + normalize(t.getEvent()); + sb.append(" <<").append(eventClass).append(">>"); + usedEventStereotypes.add(eventClass); + } String label = buildLabel(t, useLambdaGuards); if (!label.isEmpty()) { @@ -116,6 +137,10 @@ public class PlantUml implements StateMachineExporter { } } + for (String eventClass : usedEventStereotypes) { + sb.append("hide <<").append(eventClass).append(">> stereotype\n"); + } + sb.append("\n"); for (String end : endStates) { sb.append(simplify(end)).append(" --> [*]\n"); @@ -125,6 +150,46 @@ public class PlantUml implements StateMachineExporter { return sb.toString(); } + private String normalize(String name) { + if (name == null) return ""; + return name.replaceAll("[^a-zA-Z0-9]", "_"); + } + + private String getLegacyColor(Transition t, String source, Map choiceStateClassMap) { + if (t.getType() == null) + return "000000"; + return switch (t.getType()) { + case CHOICE -> { + String className = choiceStateClassMap.get(source); + if (className != null && className.startsWith("choice_color_")) { + int index = Integer.parseInt(className.substring("choice_color_".length())); + yield choiceColors.get(index % choiceColors.size()); + } + yield "000000"; + } + case EXTERNAL -> "1E90FF"; + case INTERNAL -> "32CD32"; + case LOCAL -> "FFA500"; + case JUNCTION -> "FF69B4"; + case JOIN -> "8A2BE2"; + case FORK -> "20B2AA"; + }; + } + + private String getStyleClass(Transition t, String source, Map choiceStateClassMap) { + if (t.getType() == null) + return "default"; + return switch (t.getType()) { + case CHOICE -> choiceStateClassMap.getOrDefault(source, "choice_type"); + case EXTERNAL -> "external"; + case INTERNAL -> "internal"; + case LOCAL -> "local"; + case JUNCTION -> "junction"; + case JOIN -> "join"; + case FORK -> "fork"; + }; + } + @Override public String getFileExtension() { return ".puml"; diff --git a/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/PlantUmlRenderTest.java b/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/PlantUmlRenderTest.java new file mode 100644 index 0000000..293a502 --- /dev/null +++ b/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/PlantUmlRenderTest.java @@ -0,0 +1,144 @@ +package click.kamil.springstatemachineexporter; + +import click.kamil.springstatemachineexporter.exporter.PlantUml; +import click.kamil.springstatemachineexporter.exporter.StateMachineExporter; +import click.kamil.springstatemachineexporter.service.ExportService; +import click.kamil.springstatemachineexporter.utils.TestScenario; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@Tag("render") +public class PlantUmlRenderTest { + + private final List exporters = List.of(new PlantUml()); + private final ExportService exportService = new ExportService(exporters); + + private static List provideTestScenarios() { + return List.of( + new TestScenario( + "Complex State Machine", + Path.of("../state_machines/complex_state_machine"), + Path.of("src/test/resources/golden/ComplexStateMachineConfig"), + "ComplexStateMachineConfig" + ), + new TestScenario( + "Fork Join State Machine", + Path.of("../state_machines/forkjoin_state_machine"), + Path.of("src/test/resources/golden/ForkJoinStateMachineConfig"), + "ForkJoinStateMachineConfig" + ), + new TestScenario( + "Kamil Enum State Machine", + Path.of("../state_machines/enumstate_state_machine"), + Path.of("src/test/resources/golden/KamilEnumStateMachineConfiguration"), + "KamilEnumStateMachineConfiguration" + ), + new TestScenario( + "Simple Enum Join State Machine", + Path.of("../state_machines/simple_state_machine"), + Path.of("src/test/resources/golden/SimpleEnumStateMachineConfiguration"), + "SimpleEnumStateMachineConfiguration" + ), + new TestScenario( + "One State Machine (Inheritance)", + Path.of("../state_machines/inheritance_state_machine"), + Path.of("src/test/resources/golden/OneStateMachineConfiguration"), + "OneStateMachineConfiguration" + ), + new TestScenario( + "Two State Machine (Extra Functions)", + Path.of("../state_machines/inheritance_extra_functions_state_machine"), + Path.of("src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration"), + "TwoStateMachineConfiguration" + ), + new TestScenario( + "Three State Machine (Extra Functions 2)", + Path.of("../state_machines/inheritance_extra_functions2_state_machine"), + Path.of("src/test/resources/golden/ThreeStateMachineConfiguration"), + "ThreeStateMachineConfiguration" + ), + new TestScenario( + "F1 State Machine (Example 4)", + Path.of("../state_machines/inheritance_extra_functions3_state_machine"), + Path.of("src/test/resources/golden/F1StateMachineConfiguration"), + "F1StateMachineConfiguration" + ), + new TestScenario( + "F2 State Machine (Example 4)", + Path.of("../state_machines/inheritance_extra_functions3_state_machine"), + Path.of("src/test/resources/golden/F2StateMachineConfiguration"), + "F2StateMachineConfiguration" + ), + new TestScenario( + "G1 State Machine (Example 4)", + Path.of("../state_machines/inheritance_extra_functions3_state_machine"), + Path.of("src/test/resources/golden/G1StateMachineConfiguration"), + "G1StateMachineConfiguration" + ), + new TestScenario( + "G2 State Machine (Example 4)", + Path.of("../state_machines/inheritance_extra_functions3_state_machine"), + Path.of("src/test/resources/golden/G2StateMachineConfiguration"), + "G2StateMachineConfiguration" + ) + ); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("provideTestScenarios") + void testRenderMatchesGolden(TestScenario scenario, @TempDir Path tempDir) throws Exception { + exportService.runExporter(scenario.inputPath(), tempDir, List.of("puml")); + + // Find the generated directory + List generatedDirs; + try (var stream = Files.list(tempDir)) { + generatedDirs = stream.filter(Files::isDirectory).toList(); + } + + String targetBaseName = scenario.baseName(); + Path actualDir = generatedDirs.stream() + .filter(d -> d.getFileName().toString().endsWith(targetBaseName)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("No output directory found for " + targetBaseName)); + + String actualBaseName = actualDir.getFileName().toString(); + Path actualPumlFile = actualDir.resolve(actualBaseName + ".puml"); + + assertThat(actualPumlFile).exists(); + + // Render to PNG + renderToPng(actualPumlFile); + + Path actualPngFile = actualDir.resolve(actualBaseName + ".png"); + assertThat(actualPngFile).exists(); + + // Compare with Golden PNG + String goldenPngFileName = targetBaseName + ".png"; + Path goldenPngFile = scenario.goldenPath().resolve(goldenPngFileName); + + assertThat(goldenPngFile).as("Golden PNG %s should exist", goldenPngFileName).exists(); + + assertThat(Files.readAllBytes(actualPngFile)) + .as("Rendered PNG mismatch for %s", actualBaseName) + .isEqualTo(Files.readAllBytes(goldenPngFile)); + } + + private void renderToPng(Path pumlFile) throws IOException, InterruptedException { + ProcessBuilder pb = new ProcessBuilder("plantuml", "-nometadata", pumlFile.toAbsolutePath().toString()); + pb.inheritIO(); + Process process = pb.start(); + int exitCode = process.waitFor(); + if (exitCode != 0) { + throw new RuntimeException("PlantUML rendering failed with exit code " + exitCode); + } + } +} diff --git a/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.png b/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.png new file mode 100644 index 0000000..dccdd83 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.png differ diff --git a/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.puml b/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.puml index 0ca724f..544c534 100644 --- a/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.puml +++ b/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -16,44 +53,59 @@ state STATE9 <> state STATE19 <> state STATE18 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE10 -[#1E90FF,bold]-> STATE11 : EVENT10 -STATE11 -[#1E90FF,bold]-> STATE12 : EVENT11 -STATE12 -[#1E90FF,bold]-> STATE13 : EVENT12 -STATE13 -[#1E90FF,bold]-> STATE14 : EVENT13 -STATE14 -[#1E90FF,bold]-> STATE15 : EVENT14 -STATE15 -[#1E90FF,bold]-> STATE16 : EVENT15 -STATE16 -[#4682B4,bold]-> STATE17 : [guardVarEquals("value1")] (order=0) -STATE16 -[#4682B4,bold]-> STATE18 : [guardVarEquals("value2")] (order=1) -STATE16 -[#4682B4,bold]-> STATE19 : (order=2) -STATE17 -[#FF6347,bold]-> STATE20 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE17 -[#FF6347,bold]-> STATE16 : (order=1) -STATE18 -[#FFD700,bold]-> STATE19 : [guardVarEquals("value3")] (order=0) -STATE18 -[#FFD700,bold]-> STATE20 : (order=1) -STATE19 -[#32CD32,bold]-> STATE1 : [guardVarEquals("reset")] (order=0) -STATE19 -[#32CD32,bold]-> STATE20 : (order=1) -STATE20 -[#FF6347,bold]-> STATE5 : [guardEventHeaderEquals("header2","bar")] (order=0) -STATE20 -[#FF6347,bold]-> STATE1 : (order=1) -STATE11 -[#6A5ACD,bold]-> STATE13 : [guardVarEquals("goTo13")] (order=0) -STATE11 -[#6A5ACD,bold]-> STATE14 : [guardVarEquals("goTo14")] (order=1) -STATE11 -[#6A5ACD,bold]-> STATE15 : (order=2) -STATE12 -[#FFD700,bold]-> STATE10 : [guardVarEquals("goBack10")] (order=0) -STATE12 -[#FFD700,bold]-> STATE11 : (order=1) -STATE14 -[#32CD32,bold]-> STATE12 : [guardVarEquals("loop12")] (order=0) -STATE14 -[#32CD32,bold]-> STATE16 : (order=1) -STATE9 -[#4682B4,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#4682B4,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#4682B4,bold]-> STATE6 : (order=2) -STATE8 -[#FF69B4,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF69B4,bold]-> STATE10 : (order=1) +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE10 -[#1E90FF,bold]-> STATE11 <> <> : EVENT10 +STATE11 -[#1E90FF,bold]-> STATE12 <> <> : EVENT11 +STATE12 -[#1E90FF,bold]-> STATE13 <> <> : EVENT12 +STATE13 -[#1E90FF,bold]-> STATE14 <> <> : EVENT13 +STATE14 -[#1E90FF,bold]-> STATE15 <> <> : EVENT14 +STATE15 -[#1E90FF,bold]-> STATE16 <> <> : EVENT15 +STATE16 -[#4682B4,bold]-> STATE17 <> : [guardVarEquals("value1")] (order=0) +STATE16 -[#4682B4,bold]-> STATE18 <> : [guardVarEquals("value2")] (order=1) +STATE16 -[#4682B4,bold]-> STATE19 <> : (order=2) +STATE17 -[#FF6347,bold]-> STATE20 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE17 -[#FF6347,bold]-> STATE16 <> : (order=1) +STATE18 -[#FFD700,bold]-> STATE19 <> : [guardVarEquals("value3")] (order=0) +STATE18 -[#FFD700,bold]-> STATE20 <> : (order=1) +STATE19 -[#32CD32,bold]-> STATE1 <> : [guardVarEquals("reset")] (order=0) +STATE19 -[#32CD32,bold]-> STATE20 <> : (order=1) +STATE20 -[#FF6347,bold]-> STATE5 <> : [guardEventHeaderEquals("header2","bar")] (order=0) +STATE20 -[#FF6347,bold]-> STATE1 <> : (order=1) +STATE11 -[#6A5ACD,bold]-> STATE13 <> : [guardVarEquals("goTo13")] (order=0) +STATE11 -[#6A5ACD,bold]-> STATE14 <> : [guardVarEquals("goTo14")] (order=1) +STATE11 -[#6A5ACD,bold]-> STATE15 <> : (order=2) +STATE12 -[#FFD700,bold]-> STATE10 <> : [guardVarEquals("goBack10")] (order=0) +STATE12 -[#FFD700,bold]-> STATE11 <> : (order=1) +STATE14 -[#32CD32,bold]-> STATE12 <> : [guardVarEquals("loop12")] (order=0) +STATE14 -[#32CD32,bold]-> STATE16 <> : (order=1) +STATE9 -[#4682B4,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#4682B4,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#4682B4,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF69B4,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF69B4,bold]-> STATE10 <> : (order=1) +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype @enduml diff --git a/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.png new file mode 100644 index 0000000..422b6d4 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.puml index 05d40d7..7a89591 100644 --- a/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -18,58 +55,77 @@ state STATE9 <> state STATE19 <> state STATE18 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE10 -[#1E90FF,bold]-> STATE11 : EVENT10 -STATE11 -[#1E90FF,bold]-> STATE12 : EVENT11 -STATE12 -[#1E90FF,bold]-> STATE13 : EVENT12 -STATE13 -[#1E90FF,bold]-> STATE14 : EVENT13 -STATE14 -[#1E90FF,bold]-> STATE15 : EVENT14 -STATE15 -[#1E90FF,bold]-> STATE16 : EVENT15 -STATE1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE5 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#4682B4,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#4682B4,bold]-> STATEZ : (order=1) -STATE16 -[#4682B4,bold]-> STATE17 : [guardVarEquals("value1")] (order=0) -STATE16 -[#4682B4,bold]-> STATE18 : [guardVarEquals("value2")] (order=1) -STATE16 -[#4682B4,bold]-> STATE19 : (order=2) -STATE17 -[#FF6347,bold]-> STATE20 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE17 -[#FF6347,bold]-> STATE16 : (order=1) -STATE18 -[#FF69B4,bold]-> STATE19 : [guardVarEquals("value3")] (order=0) -STATE18 -[#FF69B4,bold]-> STATE20 : (order=1) -STATE19 -[#6A5ACD,bold]-> STATE1 : [guardVarEquals("reset")] (order=0) -STATE19 -[#6A5ACD,bold]-> STATE20 : (order=1) -STATE20 -[#32CD32,bold]-> STATE5 : [guardEventHeaderEquals("header2","bar")] (order=0) -STATE20 -[#32CD32,bold]-> STATE1 : (order=1) -STATE11 -[#FF69B4,bold]-> STATE13 : [guardVarEquals("goTo13")] (order=0) -STATE11 -[#FF69B4,bold]-> STATE14 : [guardVarEquals("goTo14")] (order=1) -STATE11 -[#FF69B4,bold]-> STATE15 : (order=2) -STATE12 -[#6A5ACD,bold]-> STATE10 : [guardVarEquals("goBack10")] (order=0) -STATE12 -[#6A5ACD,bold]-> STATE11 : (order=1) -STATE14 -[#FFD700,bold]-> STATE12 : [guardVarEquals("loop12")] (order=0) -STATE14 -[#FFD700,bold]-> STATE16 : (order=1) -STATE9 -[#FFD700,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#FFD700,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#FFD700,bold]-> STATE6 : (order=2) -STATE8 -[#FF6347,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF6347,bold]-> STATE10 : (order=1) -STATE2 -[#1E90FF,bold]-> STATE_EXTRA_1 : EVENTX -STATE2 -[#32CD32,bold]-> STATE1 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE2 -[#32CD32,bold]-> STATE_EXTRA_1 : (order=1) -STATE_EXTRA_1 -[#1E90FF,bold]-> STATE_EXTRA_3 : EVENTY -STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 -STATE_EXTRA_2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE10 -[#1E90FF,bold]-> STATE11 <> <> : EVENT10 +STATE11 -[#1E90FF,bold]-> STATE12 <> <> : EVENT11 +STATE12 -[#1E90FF,bold]-> STATE13 <> <> : EVENT12 +STATE13 -[#1E90FF,bold]-> STATE14 <> <> : EVENT13 +STATE14 -[#1E90FF,bold]-> STATE15 <> <> : EVENT14 +STATE15 -[#1E90FF,bold]-> STATE16 <> <> : EVENT15 +STATE1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE5 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#4682B4,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#4682B4,bold]-> STATEZ <> : (order=1) +STATE16 -[#4682B4,bold]-> STATE17 <> : [guardVarEquals("value1")] (order=0) +STATE16 -[#4682B4,bold]-> STATE18 <> : [guardVarEquals("value2")] (order=1) +STATE16 -[#4682B4,bold]-> STATE19 <> : (order=2) +STATE17 -[#FF6347,bold]-> STATE20 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE17 -[#FF6347,bold]-> STATE16 <> : (order=1) +STATE18 -[#FF69B4,bold]-> STATE19 <> : [guardVarEquals("value3")] (order=0) +STATE18 -[#FF69B4,bold]-> STATE20 <> : (order=1) +STATE19 -[#6A5ACD,bold]-> STATE1 <> : [guardVarEquals("reset")] (order=0) +STATE19 -[#6A5ACD,bold]-> STATE20 <> : (order=1) +STATE20 -[#32CD32,bold]-> STATE5 <> : [guardEventHeaderEquals("header2","bar")] (order=0) +STATE20 -[#32CD32,bold]-> STATE1 <> : (order=1) +STATE11 -[#FF69B4,bold]-> STATE13 <> : [guardVarEquals("goTo13")] (order=0) +STATE11 -[#FF69B4,bold]-> STATE14 <> : [guardVarEquals("goTo14")] (order=1) +STATE11 -[#FF69B4,bold]-> STATE15 <> : (order=2) +STATE12 -[#6A5ACD,bold]-> STATE10 <> : [guardVarEquals("goBack10")] (order=0) +STATE12 -[#6A5ACD,bold]-> STATE11 <> : (order=1) +STATE14 -[#FFD700,bold]-> STATE12 <> : [guardVarEquals("loop12")] (order=0) +STATE14 -[#FFD700,bold]-> STATE16 <> : (order=1) +STATE9 -[#FFD700,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#FFD700,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#FFD700,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF6347,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF6347,bold]-> STATE10 <> : (order=1) +STATE2 -[#1E90FF,bold]-> STATE_EXTRA_1 <> <> : EVENTX +STATE2 -[#32CD32,bold]-> STATE1 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE2 -[#32CD32,bold]-> STATE_EXTRA_1 <> : (order=1) +STATE_EXTRA_1 -[#1E90FF,bold]-> STATE_EXTRA_3 <> <> : EVENTY +STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +STATE_EXTRA_2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.png new file mode 100644 index 0000000..52a0c10 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.puml index 6687e17..fb47570 100644 --- a/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -18,59 +55,79 @@ state STATE_EXTRA_1_2 <> state STATE19 <> state STATE18 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE10 -[#1E90FF,bold]-> STATE11 : EVENT10 -STATE11 -[#1E90FF,bold]-> STATE12 : EVENT11 -STATE12 -[#1E90FF,bold]-> STATE13 : EVENT12 -STATE13 -[#1E90FF,bold]-> STATE14 : EVENT13 -STATE14 -[#1E90FF,bold]-> STATE15 : EVENT14 -STATE15 -[#1E90FF,bold]-> STATE16 : EVENT15 -STATE1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE5 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#FF6347,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#FF6347,bold]-> STATEZ : (order=1) -STATE16 -[#4682B4,bold]-> STATE17 : [guardVarEquals("value1")] (order=0) -STATE16 -[#4682B4,bold]-> STATE18 : [guardVarEquals("value2")] (order=1) -STATE16 -[#4682B4,bold]-> STATE19 : (order=2) -STATE17 -[#FF6347,bold]-> STATE20 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE17 -[#FF6347,bold]-> STATE16 : (order=1) -STATE18 -[#FF69B4,bold]-> STATE19 : [guardVarEquals("value3")] (order=0) -STATE18 -[#FF69B4,bold]-> STATE20 : (order=1) -STATE19 -[#6A5ACD,bold]-> STATE1 : [guardVarEquals("reset")] (order=0) -STATE19 -[#6A5ACD,bold]-> STATE20 : (order=1) -STATE20 -[#4682B4,bold]-> STATE5 : [guardEventHeaderEquals("header2","bar")] (order=0) -STATE20 -[#4682B4,bold]-> STATE1 : (order=1) -STATE11 -[#6A5ACD,bold]-> STATE13 : [guardVarEquals("goTo13")] (order=0) -STATE11 -[#6A5ACD,bold]-> STATE14 : [guardVarEquals("goTo14")] (order=1) -STATE11 -[#6A5ACD,bold]-> STATE15 : (order=2) -STATE12 -[#FFD700,bold]-> STATE10 : [guardVarEquals("goBack10")] (order=0) -STATE12 -[#FFD700,bold]-> STATE11 : (order=1) -STATE14 -[#32CD32,bold]-> STATE12 : [guardVarEquals("loop12")] (order=0) -STATE14 -[#32CD32,bold]-> STATE16 : (order=1) -STATE9 -[#32CD32,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#32CD32,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#32CD32,bold]-> STATE6 : (order=2) -STATE8 -[#FF69B4,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF69B4,bold]-> STATE10 : (order=1) -STATE9 -[#1E90FF,bold]-> STATE_EXTRA_1_1 : EVENT_1_1 -STATE_EXTRA_1_2 -[#FFD700,bold]-> STATE_EXTRA_1_1 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE_EXTRA_1_2 -[#FFD700,bold]-> STATE_EXTRA_1_3 : (order=1) -STATE_EXTRA_1_3 -[#1E90FF,bold]-> STATE_EXTRA_1 : EVENT_1_2 -STATE_EXTRA_1_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 -STATE_EXTRA_1_2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 -STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE10 -[#1E90FF,bold]-> STATE11 <> <> : EVENT10 +STATE11 -[#1E90FF,bold]-> STATE12 <> <> : EVENT11 +STATE12 -[#1E90FF,bold]-> STATE13 <> <> : EVENT12 +STATE13 -[#1E90FF,bold]-> STATE14 <> <> : EVENT13 +STATE14 -[#1E90FF,bold]-> STATE15 <> <> : EVENT14 +STATE15 -[#1E90FF,bold]-> STATE16 <> <> : EVENT15 +STATE1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE5 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#FF6347,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#FF6347,bold]-> STATEZ <> : (order=1) +STATE16 -[#4682B4,bold]-> STATE17 <> : [guardVarEquals("value1")] (order=0) +STATE16 -[#4682B4,bold]-> STATE18 <> : [guardVarEquals("value2")] (order=1) +STATE16 -[#4682B4,bold]-> STATE19 <> : (order=2) +STATE17 -[#FF6347,bold]-> STATE20 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE17 -[#FF6347,bold]-> STATE16 <> : (order=1) +STATE18 -[#FF69B4,bold]-> STATE19 <> : [guardVarEquals("value3")] (order=0) +STATE18 -[#FF69B4,bold]-> STATE20 <> : (order=1) +STATE19 -[#6A5ACD,bold]-> STATE1 <> : [guardVarEquals("reset")] (order=0) +STATE19 -[#6A5ACD,bold]-> STATE20 <> : (order=1) +STATE20 -[#4682B4,bold]-> STATE5 <> : [guardEventHeaderEquals("header2","bar")] (order=0) +STATE20 -[#4682B4,bold]-> STATE1 <> : (order=1) +STATE11 -[#6A5ACD,bold]-> STATE13 <> : [guardVarEquals("goTo13")] (order=0) +STATE11 -[#6A5ACD,bold]-> STATE14 <> : [guardVarEquals("goTo14")] (order=1) +STATE11 -[#6A5ACD,bold]-> STATE15 <> : (order=2) +STATE12 -[#FFD700,bold]-> STATE10 <> : [guardVarEquals("goBack10")] (order=0) +STATE12 -[#FFD700,bold]-> STATE11 <> : (order=1) +STATE14 -[#32CD32,bold]-> STATE12 <> : [guardVarEquals("loop12")] (order=0) +STATE14 -[#32CD32,bold]-> STATE16 <> : (order=1) +STATE9 -[#32CD32,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#32CD32,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#32CD32,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF69B4,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF69B4,bold]-> STATE10 <> : (order=1) +STATE9 -[#1E90FF,bold]-> STATE_EXTRA_1_1 <> <> : EVENT_1_1 +STATE_EXTRA_1_2 -[#FFD700,bold]-> STATE_EXTRA_1_1 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE_EXTRA_1_2 -[#FFD700,bold]-> STATE_EXTRA_1_3 <> : (order=1) +STATE_EXTRA_1_3 -[#1E90FF,bold]-> STATE_EXTRA_1 <> <> : EVENT_1_2 +STATE_EXTRA_1_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +STATE_EXTRA_1_2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.png b/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.png new file mode 100644 index 0000000..595c10d Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.png differ diff --git a/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.puml b/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.puml index 3e957a5..b2200b0 100644 --- a/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.puml +++ b/state_machine_exporter/src/test/resources/golden/ForkJoinStateMachineConfig/ForkJoinStateMachineConfig.puml @@ -1,19 +1,60 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> START -START -[#1E90FF,bold]-> FORK : TO_FORK -FORK -[#20B2AA,bold]-> REGION1_STATE1 -FORK -[#20B2AA,bold]-> REGION2_STATE1 -REGION1_STATE1 -[#1E90FF,bold]-> REGION1_STATE2 : R1_NEXT -REGION2_STATE1 -[#1E90FF,bold]-> REGION2_STATE2 : R2_NEXT -REGION1_STATE2 -[#8A2BE2,bold]-> JOIN -REGION2_STATE2 -[#8A2BE2,bold]-> JOIN -JOIN -[#1E90FF,bold]-> END : TO_END +START -[#1E90FF,bold]-> FORK <> <> : TO_FORK +FORK -[#20B2AA,bold]-> REGION1_STATE1 <> +FORK -[#20B2AA,bold]-> REGION2_STATE1 <> +REGION1_STATE1 -[#1E90FF,bold]-> REGION1_STATE2 <> <> : R1_NEXT +REGION2_STATE1 -[#1E90FF,bold]-> REGION2_STATE2 <> <> : R2_NEXT +REGION1_STATE2 -[#8A2BE2,bold]-> JOIN <> +REGION2_STATE2 -[#8A2BE2,bold]-> JOIN <> +JOIN -[#1E90FF,bold]-> END <> <> : TO_END +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype END --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.png new file mode 100644 index 0000000..4a888c7 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.puml index c546d51..d4342c0 100644 --- a/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -9,31 +46,43 @@ state STATE8 <> state STATEY <> state STATE9 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE5 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#4682B4,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#4682B4,bold]-> STATEZ : (order=1) -STATE9 -[#32CD32,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#32CD32,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#32CD32,bold]-> STATE6 : (order=2) -STATE8 -[#FF6347,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF6347,bold]-> STATE10 : (order=1) -STATE3 -[#1E90FF,bold]-> STATE_EXTRA_2 : EVENT_1_2 -STATE_EXTRA_2 -[#1E90FF,bold]-> STATE_EXTRA_3 : EVENT_1_2 -STATE_EXTRA_3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE5 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#4682B4,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#4682B4,bold]-> STATEZ <> : (order=1) +STATE9 -[#32CD32,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#32CD32,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#32CD32,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF6347,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF6347,bold]-> STATE10 <> : (order=1) +STATE3 -[#1E90FF,bold]-> STATE_EXTRA_2 <> <> : EVENT_1_2 +STATE_EXTRA_2 -[#1E90FF,bold]-> STATE_EXTRA_3 <> <> : EVENT_1_2 +STATE_EXTRA_3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.png new file mode 100644 index 0000000..4d8b45f Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.puml index 01cd684..72db72f 100644 --- a/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -9,32 +46,45 @@ state STATE8 <> state STATEY <> state STATE9 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE5 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#4682B4,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#4682B4,bold]-> STATEZ : (order=1) -STATE9 -[#32CD32,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#32CD32,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#32CD32,bold]-> STATE6 : (order=2) -STATE8 -[#FF6347,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF6347,bold]-> STATE10 : (order=1) -STATE3 -[#1E90FF,bold]-> STATE_EXTRA_1 : EVENT_1_2 -STATE_EXTRA_1 -[#1E90FF,bold]-> STATE_EXTRA_2 : EVENT_1_3 -STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE_EXTRA_2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE5 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#4682B4,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#4682B4,bold]-> STATEZ <> : (order=1) +STATE9 -[#32CD32,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#32CD32,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#32CD32,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF6347,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF6347,bold]-> STATE10 <> : (order=1) +STATE3 -[#1E90FF,bold]-> STATE_EXTRA_1 <> <> : EVENT_1_2 +STATE_EXTRA_1 -[#1E90FF,bold]-> STATE_EXTRA_2 <> <> : EVENT_1_3 +STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE_EXTRA_2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.png new file mode 100644 index 0000000..a600a67 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.puml index a124ee4..2941e64 100644 --- a/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.puml @@ -1,25 +1,66 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> SUBMITTED state PAID1 <> -SUBMITTED -[#1E90FF,bold]-> PAID : PAY -PAID -[#1E90FF,bold]-> FULFILLED : FULFILL -SUBMITTED -[#1E90FF,bold]-> CANCELED : CANCEL [λ] -PAID -[#1E90FF,bold]-> CANCELED : CANCEL -SUBMITTED -[#1E90FF,bold]-> SUBMITTED : ABCD -SUBMITTED -[#1E90FF,bold]-> PAID1 : ABCD -PAID1 -[#FF6347,bold]-> PAID2 : [λ] (order=0) -PAID1 -[#FF6347,bold]-> PAID3 : [guard1] (order=1) -PAID1 -[#FF6347,bold]-> HAPPEN : [λ] (order=2) -PAID1 -[#FF6347,bold]-> CANCELED : (order=3) -PAID2 -[#1E90FF,bold]-> CANCELED -PAID3 -[#1E90FF,bold]-> CANCELED -PAID2 -[#1E90FF,bold]-> PAID2 : ABCD / λ, action2 +SUBMITTED -[#1E90FF,bold]-> PAID <> <> : PAY +PAID -[#1E90FF,bold]-> FULFILLED <> <> : FULFILL +SUBMITTED -[#1E90FF,bold]-> CANCELED <> <> : CANCEL [λ] +PAID -[#1E90FF,bold]-> CANCELED <> <> : CANCEL +SUBMITTED -[#1E90FF,bold]-> SUBMITTED <> <> : ABCD +SUBMITTED -[#1E90FF,bold]-> PAID1 <> <> : ABCD +PAID1 -[#FF6347,bold]-> PAID2 <> : [λ] (order=0) +PAID1 -[#FF6347,bold]-> PAID3 <> : [guard1] (order=1) +PAID1 -[#FF6347,bold]-> HAPPEN <> : [λ] (order=2) +PAID1 -[#FF6347,bold]-> CANCELED <> : (order=3) +PAID2 -[#1E90FF,bold]-> CANCELED <> +PAID3 -[#1E90FF,bold]-> CANCELED <> +PAID2 -[#1E90FF,bold]-> PAID2 <> <> : ABCD / λ, action2 +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype CANCELED --> [*] FULFILLED --> [*] diff --git a/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.png new file mode 100644 index 0000000..5859418 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.puml index b36f6de..c2621f3 100644 --- a/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -17,48 +54,65 @@ state STATE9 <> state STATE19 <> state STATE18 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE10 -[#1E90FF,bold]-> STATE11 : EVENT10 -STATE11 -[#1E90FF,bold]-> STATE12 : EVENT11 -STATE12 -[#1E90FF,bold]-> STATE13 : EVENT12 -STATE13 -[#1E90FF,bold]-> STATE14 : EVENT13 -STATE14 -[#1E90FF,bold]-> STATE15 : EVENT14 -STATE15 -[#1E90FF,bold]-> STATE16 : EVENT15 -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#FF6347,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#FF6347,bold]-> STATEZ : (order=1) -STATE16 -[#4682B4,bold]-> STATE17 : [guardVarEquals("value1")] (order=0) -STATE16 -[#4682B4,bold]-> STATE18 : [guardVarEquals("value2")] (order=1) -STATE16 -[#4682B4,bold]-> STATE19 : (order=2) -STATE17 -[#FF6347,bold]-> STATE20 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE17 -[#FF6347,bold]-> STATE16 : (order=1) -STATE18 -[#6A5ACD,bold]-> STATE19 : [guardVarEquals("value3")] (order=0) -STATE18 -[#6A5ACD,bold]-> STATE20 : (order=1) -STATE19 -[#FFD700,bold]-> STATE1 : [guardVarEquals("reset")] (order=0) -STATE19 -[#FFD700,bold]-> STATE20 : (order=1) -STATE20 -[#4682B4,bold]-> STATE5 : [guardEventHeaderEquals("header2","bar")] (order=0) -STATE20 -[#4682B4,bold]-> STATE1 : (order=1) -STATE11 -[#6A5ACD,bold]-> STATE13 : [guardVarEquals("goTo13")] (order=0) -STATE11 -[#6A5ACD,bold]-> STATE14 : [guardVarEquals("goTo14")] (order=1) -STATE11 -[#6A5ACD,bold]-> STATE15 : (order=2) -STATE12 -[#FFD700,bold]-> STATE10 : [guardVarEquals("goBack10")] (order=0) -STATE12 -[#FFD700,bold]-> STATE11 : (order=1) -STATE14 -[#32CD32,bold]-> STATE12 : [guardVarEquals("loop12")] (order=0) -STATE14 -[#32CD32,bold]-> STATE16 : (order=1) -STATE9 -[#32CD32,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#32CD32,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#32CD32,bold]-> STATE6 : (order=2) -STATE8 -[#FF69B4,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF69B4,bold]-> STATE10 : (order=1) -STATE5 -[#1E90FF,bold]-> STATE_EXTRA_1 : EVENTX +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE10 -[#1E90FF,bold]-> STATE11 <> <> : EVENT10 +STATE11 -[#1E90FF,bold]-> STATE12 <> <> : EVENT11 +STATE12 -[#1E90FF,bold]-> STATE13 <> <> : EVENT12 +STATE13 -[#1E90FF,bold]-> STATE14 <> <> : EVENT13 +STATE14 -[#1E90FF,bold]-> STATE15 <> <> : EVENT14 +STATE15 -[#1E90FF,bold]-> STATE16 <> <> : EVENT15 +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#FF6347,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#FF6347,bold]-> STATEZ <> : (order=1) +STATE16 -[#4682B4,bold]-> STATE17 <> : [guardVarEquals("value1")] (order=0) +STATE16 -[#4682B4,bold]-> STATE18 <> : [guardVarEquals("value2")] (order=1) +STATE16 -[#4682B4,bold]-> STATE19 <> : (order=2) +STATE17 -[#FF6347,bold]-> STATE20 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE17 -[#FF6347,bold]-> STATE16 <> : (order=1) +STATE18 -[#6A5ACD,bold]-> STATE19 <> : [guardVarEquals("value3")] (order=0) +STATE18 -[#6A5ACD,bold]-> STATE20 <> : (order=1) +STATE19 -[#FFD700,bold]-> STATE1 <> : [guardVarEquals("reset")] (order=0) +STATE19 -[#FFD700,bold]-> STATE20 <> : (order=1) +STATE20 -[#4682B4,bold]-> STATE5 <> : [guardEventHeaderEquals("header2","bar")] (order=0) +STATE20 -[#4682B4,bold]-> STATE1 <> : (order=1) +STATE11 -[#6A5ACD,bold]-> STATE13 <> : [guardVarEquals("goTo13")] (order=0) +STATE11 -[#6A5ACD,bold]-> STATE14 <> : [guardVarEquals("goTo14")] (order=1) +STATE11 -[#6A5ACD,bold]-> STATE15 <> : (order=2) +STATE12 -[#FFD700,bold]-> STATE10 <> : [guardVarEquals("goBack10")] (order=0) +STATE12 -[#FFD700,bold]-> STATE11 <> : (order=1) +STATE14 -[#32CD32,bold]-> STATE12 <> : [guardVarEquals("loop12")] (order=0) +STATE14 -[#32CD32,bold]-> STATE16 <> : (order=1) +STATE9 -[#32CD32,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#32CD32,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#32CD32,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF69B4,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF69B4,bold]-> STATE10 <> : (order=1) +STATE5 -[#1E90FF,bold]-> STATE_EXTRA_1 <> <> : EVENTX +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.png new file mode 100644 index 0000000..cd2ed35 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.puml index e752d38..2a50ae0 100644 --- a/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.puml @@ -1,27 +1,68 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> SUBMITTED state PAID <> state SUBMITTED <> -SUBMITTED -[#1E90FF,bold]-> PAID : PAY -PAID -[#1E90FF,bold]-> FULFILLED : FULFILL -SUBMITTED -[#1E90FF,bold]-> CANCELED : CANCEL [λ] -PAID -[#1E90FF,bold]-> CANCELED : CANCEL -SUBMITTED -[#1E90FF,bold]-> SUBMITTED : ABCD -SUBMITTED -[#4682B4,bold]-> PAID2 : [λ] (order=0) -SUBMITTED -[#4682B4,bold]-> PAID3 : (order=1) -PAID -[#FF6347,bold]-> PAID1 : [λ] (order=0) -PAID -[#FF6347,bold]-> PAID2 : [guard1] (order=1) -PAID -[#FF6347,bold]-> HAPPEN : [λ] (order=2) -PAID -[#FF6347,bold]-> PAID3 : (order=3) -PAID2 -[#1E90FF,bold]-> CANCELED -PAID3 -[#1E90FF,bold]-> CANCELED -PAID1 -[#1E90FF,bold]-> PAID1 : ABCD / λ, action2 +SUBMITTED -[#1E90FF,bold]-> PAID <> <> : PAY +PAID -[#1E90FF,bold]-> FULFILLED <> <> : FULFILL +SUBMITTED -[#1E90FF,bold]-> CANCELED <> <> : CANCEL [λ] +PAID -[#1E90FF,bold]-> CANCELED <> <> : CANCEL +SUBMITTED -[#1E90FF,bold]-> SUBMITTED <> <> : ABCD +SUBMITTED -[#4682B4,bold]-> PAID2 <> : [λ] (order=0) +SUBMITTED -[#4682B4,bold]-> PAID3 <> : (order=1) +PAID -[#FF6347,bold]-> PAID1 <> : [λ] (order=0) +PAID -[#FF6347,bold]-> PAID2 <> : [guard1] (order=1) +PAID -[#FF6347,bold]-> HAPPEN <> : [λ] (order=2) +PAID -[#FF6347,bold]-> PAID3 <> : (order=3) +PAID2 -[#1E90FF,bold]-> CANCELED <> +PAID3 -[#1E90FF,bold]-> CANCELED <> +PAID1 -[#1E90FF,bold]-> PAID1 <> <> : ABCD / λ, action2 +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype CANCELED --> [*] FULFILLED --> [*] diff --git a/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.png new file mode 100644 index 0000000..422b6d4 Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.puml index 05d40d7..7a89591 100644 --- a/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -18,58 +55,77 @@ state STATE9 <> state STATE19 <> state STATE18 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE10 -[#1E90FF,bold]-> STATE11 : EVENT10 -STATE11 -[#1E90FF,bold]-> STATE12 : EVENT11 -STATE12 -[#1E90FF,bold]-> STATE13 : EVENT12 -STATE13 -[#1E90FF,bold]-> STATE14 : EVENT13 -STATE14 -[#1E90FF,bold]-> STATE15 : EVENT14 -STATE15 -[#1E90FF,bold]-> STATE16 : EVENT15 -STATE1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE5 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#4682B4,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#4682B4,bold]-> STATEZ : (order=1) -STATE16 -[#4682B4,bold]-> STATE17 : [guardVarEquals("value1")] (order=0) -STATE16 -[#4682B4,bold]-> STATE18 : [guardVarEquals("value2")] (order=1) -STATE16 -[#4682B4,bold]-> STATE19 : (order=2) -STATE17 -[#FF6347,bold]-> STATE20 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE17 -[#FF6347,bold]-> STATE16 : (order=1) -STATE18 -[#FF69B4,bold]-> STATE19 : [guardVarEquals("value3")] (order=0) -STATE18 -[#FF69B4,bold]-> STATE20 : (order=1) -STATE19 -[#6A5ACD,bold]-> STATE1 : [guardVarEquals("reset")] (order=0) -STATE19 -[#6A5ACD,bold]-> STATE20 : (order=1) -STATE20 -[#32CD32,bold]-> STATE5 : [guardEventHeaderEquals("header2","bar")] (order=0) -STATE20 -[#32CD32,bold]-> STATE1 : (order=1) -STATE11 -[#FF69B4,bold]-> STATE13 : [guardVarEquals("goTo13")] (order=0) -STATE11 -[#FF69B4,bold]-> STATE14 : [guardVarEquals("goTo14")] (order=1) -STATE11 -[#FF69B4,bold]-> STATE15 : (order=2) -STATE12 -[#6A5ACD,bold]-> STATE10 : [guardVarEquals("goBack10")] (order=0) -STATE12 -[#6A5ACD,bold]-> STATE11 : (order=1) -STATE14 -[#FFD700,bold]-> STATE12 : [guardVarEquals("loop12")] (order=0) -STATE14 -[#FFD700,bold]-> STATE16 : (order=1) -STATE9 -[#FFD700,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#FFD700,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#FFD700,bold]-> STATE6 : (order=2) -STATE8 -[#FF6347,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF6347,bold]-> STATE10 : (order=1) -STATE2 -[#1E90FF,bold]-> STATE_EXTRA_1 : EVENTX -STATE2 -[#32CD32,bold]-> STATE1 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE2 -[#32CD32,bold]-> STATE_EXTRA_1 : (order=1) -STATE_EXTRA_1 -[#1E90FF,bold]-> STATE_EXTRA_3 : EVENTY -STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 -STATE_EXTRA_2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE10 -[#1E90FF,bold]-> STATE11 <> <> : EVENT10 +STATE11 -[#1E90FF,bold]-> STATE12 <> <> : EVENT11 +STATE12 -[#1E90FF,bold]-> STATE13 <> <> : EVENT12 +STATE13 -[#1E90FF,bold]-> STATE14 <> <> : EVENT13 +STATE14 -[#1E90FF,bold]-> STATE15 <> <> : EVENT14 +STATE15 -[#1E90FF,bold]-> STATE16 <> <> : EVENT15 +STATE1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE5 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#4682B4,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#4682B4,bold]-> STATEZ <> : (order=1) +STATE16 -[#4682B4,bold]-> STATE17 <> : [guardVarEquals("value1")] (order=0) +STATE16 -[#4682B4,bold]-> STATE18 <> : [guardVarEquals("value2")] (order=1) +STATE16 -[#4682B4,bold]-> STATE19 <> : (order=2) +STATE17 -[#FF6347,bold]-> STATE20 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE17 -[#FF6347,bold]-> STATE16 <> : (order=1) +STATE18 -[#FF69B4,bold]-> STATE19 <> : [guardVarEquals("value3")] (order=0) +STATE18 -[#FF69B4,bold]-> STATE20 <> : (order=1) +STATE19 -[#6A5ACD,bold]-> STATE1 <> : [guardVarEquals("reset")] (order=0) +STATE19 -[#6A5ACD,bold]-> STATE20 <> : (order=1) +STATE20 -[#32CD32,bold]-> STATE5 <> : [guardEventHeaderEquals("header2","bar")] (order=0) +STATE20 -[#32CD32,bold]-> STATE1 <> : (order=1) +STATE11 -[#FF69B4,bold]-> STATE13 <> : [guardVarEquals("goTo13")] (order=0) +STATE11 -[#FF69B4,bold]-> STATE14 <> : [guardVarEquals("goTo14")] (order=1) +STATE11 -[#FF69B4,bold]-> STATE15 <> : (order=2) +STATE12 -[#6A5ACD,bold]-> STATE10 <> : [guardVarEquals("goBack10")] (order=0) +STATE12 -[#6A5ACD,bold]-> STATE11 <> : (order=1) +STATE14 -[#FFD700,bold]-> STATE12 <> : [guardVarEquals("loop12")] (order=0) +STATE14 -[#FFD700,bold]-> STATE16 <> : (order=1) +STATE9 -[#FFD700,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#FFD700,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#FFD700,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF6347,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF6347,bold]-> STATE10 <> : (order=1) +STATE2 -[#1E90FF,bold]-> STATE_EXTRA_1 <> <> : EVENTX +STATE2 -[#32CD32,bold]-> STATE1 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE2 -[#32CD32,bold]-> STATE_EXTRA_1 <> : (order=1) +STATE_EXTRA_1 -[#1E90FF,bold]-> STATE_EXTRA_3 <> <> : EVENTY +STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +STATE_EXTRA_2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml diff --git a/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.png b/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.png new file mode 100644 index 0000000..52657ce Binary files /dev/null and b/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.png differ diff --git a/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.puml index 3746f41..10ae77d 100644 --- a/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.puml +++ b/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.puml @@ -1,7 +1,44 @@ @startuml -skinparam state { - BackgroundColor<> LightYellow -} + + +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype [*] --> STATE1 @@ -17,55 +54,74 @@ state STATE9 <> state STATE19 <> state STATE18 <> -STATE1 -[#1E90FF,bold]-> STATE2 : EVENT1 -STATE2 -[#1E90FF,bold]-> STATE3 : EVENT2 -STATE3 -[#1E90FF,bold]-> STATE4 : EVENT3 -STATE4 -[#1E90FF,bold]-> STATE5 : EVENT4 -STATE5 -[#1E90FF,bold]-> STATE6 : EVENT5 -STATE6 -[#1E90FF,bold]-> STATE7 : EVENT6 -STATE7 -[#1E90FF,bold]-> STATE8 : EVENT7 -STATE8 -[#1E90FF,bold]-> STATE9 : EVENT8 -STATE9 -[#1E90FF,bold]-> STATE10 : EVENT9 -STATE10 -[#1E90FF,bold]-> STATE11 : EVENT10 -STATE11 -[#1E90FF,bold]-> STATE12 : EVENT11 -STATE12 -[#1E90FF,bold]-> STATE13 : EVENT12 -STATE13 -[#1E90FF,bold]-> STATE14 : EVENT13 -STATE14 -[#1E90FF,bold]-> STATE15 : EVENT14 -STATE15 -[#1E90FF,bold]-> STATE16 : EVENT15 -STATE1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE2 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE3 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE5 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE4 -[#1E90FF,bold]-> STATEY : EVENTY -STATEY -[#FF6347,bold]-> STATEX : [guardVarEquals("value1")] (order=0) -STATEY -[#FF6347,bold]-> STATEZ : (order=1) -STATE16 -[#4682B4,bold]-> STATE17 : [guardVarEquals("value1")] (order=0) -STATE16 -[#4682B4,bold]-> STATE18 : [guardVarEquals("value2")] (order=1) -STATE16 -[#4682B4,bold]-> STATE19 : (order=2) -STATE17 -[#FF6347,bold]-> STATE20 : [guardEventHeaderEquals("header1","foo")] (order=0) -STATE17 -[#FF6347,bold]-> STATE16 : (order=1) -STATE18 -[#6A5ACD,bold]-> STATE19 : [guardVarEquals("value3")] (order=0) -STATE18 -[#6A5ACD,bold]-> STATE20 : (order=1) -STATE19 -[#FFD700,bold]-> STATE1 : [guardVarEquals("reset")] (order=0) -STATE19 -[#FFD700,bold]-> STATE20 : (order=1) -STATE20 -[#4682B4,bold]-> STATE5 : [guardEventHeaderEquals("header2","bar")] (order=0) -STATE20 -[#4682B4,bold]-> STATE1 : (order=1) -STATE11 -[#6A5ACD,bold]-> STATE13 : [guardVarEquals("goTo13")] (order=0) -STATE11 -[#6A5ACD,bold]-> STATE14 : [guardVarEquals("goTo14")] (order=1) -STATE11 -[#6A5ACD,bold]-> STATE15 : (order=2) -STATE12 -[#FFD700,bold]-> STATE10 : [guardVarEquals("goBack10")] (order=0) -STATE12 -[#FFD700,bold]-> STATE11 : (order=1) -STATE14 -[#32CD32,bold]-> STATE12 : [guardVarEquals("loop12")] (order=0) -STATE14 -[#32CD32,bold]-> STATE16 : (order=1) -STATE9 -[#32CD32,bold]-> STATE8 : [guardVarEquals("stepBack")] (order=0) -STATE9 -[#32CD32,bold]-> STATE7 : [guardVarEquals("stepBackMore")] (order=1) -STATE9 -[#32CD32,bold]-> STATE6 : (order=2) -STATE8 -[#FF69B4,bold]-> STATE9 : [guardVarEquals("forward9")] (order=0) -STATE8 -[#FF69B4,bold]-> STATE10 : (order=1) -STATE5 -[#1E90FF,bold]-> STATE_EXTRA_1 : EVENTX -STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL -STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL : EVENT_CANCEL_2 +STATE1 -[#1E90FF,bold]-> STATE2 <> <> : EVENT1 +STATE2 -[#1E90FF,bold]-> STATE3 <> <> : EVENT2 +STATE3 -[#1E90FF,bold]-> STATE4 <> <> : EVENT3 +STATE4 -[#1E90FF,bold]-> STATE5 <> <> : EVENT4 +STATE5 -[#1E90FF,bold]-> STATE6 <> <> : EVENT5 +STATE6 -[#1E90FF,bold]-> STATE7 <> <> : EVENT6 +STATE7 -[#1E90FF,bold]-> STATE8 <> <> : EVENT7 +STATE8 -[#1E90FF,bold]-> STATE9 <> <> : EVENT8 +STATE9 -[#1E90FF,bold]-> STATE10 <> <> : EVENT9 +STATE10 -[#1E90FF,bold]-> STATE11 <> <> : EVENT10 +STATE11 -[#1E90FF,bold]-> STATE12 <> <> : EVENT11 +STATE12 -[#1E90FF,bold]-> STATE13 <> <> : EVENT12 +STATE13 -[#1E90FF,bold]-> STATE14 <> <> : EVENT13 +STATE14 -[#1E90FF,bold]-> STATE15 <> <> : EVENT14 +STATE15 -[#1E90FF,bold]-> STATE16 <> <> : EVENT15 +STATE1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE2 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE3 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE5 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE4 -[#1E90FF,bold]-> STATEY <> <> : EVENTY +STATEY -[#FF6347,bold]-> STATEX <> : [guardVarEquals("value1")] (order=0) +STATEY -[#FF6347,bold]-> STATEZ <> : (order=1) +STATE16 -[#4682B4,bold]-> STATE17 <> : [guardVarEquals("value1")] (order=0) +STATE16 -[#4682B4,bold]-> STATE18 <> : [guardVarEquals("value2")] (order=1) +STATE16 -[#4682B4,bold]-> STATE19 <> : (order=2) +STATE17 -[#FF6347,bold]-> STATE20 <> : [guardEventHeaderEquals("header1","foo")] (order=0) +STATE17 -[#FF6347,bold]-> STATE16 <> : (order=1) +STATE18 -[#6A5ACD,bold]-> STATE19 <> : [guardVarEquals("value3")] (order=0) +STATE18 -[#6A5ACD,bold]-> STATE20 <> : (order=1) +STATE19 -[#FFD700,bold]-> STATE1 <> : [guardVarEquals("reset")] (order=0) +STATE19 -[#FFD700,bold]-> STATE20 <> : (order=1) +STATE20 -[#4682B4,bold]-> STATE5 <> : [guardEventHeaderEquals("header2","bar")] (order=0) +STATE20 -[#4682B4,bold]-> STATE1 <> : (order=1) +STATE11 -[#6A5ACD,bold]-> STATE13 <> : [guardVarEquals("goTo13")] (order=0) +STATE11 -[#6A5ACD,bold]-> STATE14 <> : [guardVarEquals("goTo14")] (order=1) +STATE11 -[#6A5ACD,bold]-> STATE15 <> : (order=2) +STATE12 -[#FFD700,bold]-> STATE10 <> : [guardVarEquals("goBack10")] (order=0) +STATE12 -[#FFD700,bold]-> STATE11 <> : (order=1) +STATE14 -[#32CD32,bold]-> STATE12 <> : [guardVarEquals("loop12")] (order=0) +STATE14 -[#32CD32,bold]-> STATE16 <> : (order=1) +STATE9 -[#32CD32,bold]-> STATE8 <> : [guardVarEquals("stepBack")] (order=0) +STATE9 -[#32CD32,bold]-> STATE7 <> : [guardVarEquals("stepBackMore")] (order=1) +STATE9 -[#32CD32,bold]-> STATE6 <> : (order=2) +STATE8 -[#FF69B4,bold]-> STATE9 <> : [guardVarEquals("forward9")] (order=0) +STATE8 -[#FF69B4,bold]-> STATE10 <> : (order=1) +STATE5 -[#1E90FF,bold]-> STATE_EXTRA_1 <> <> : EVENTX +STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL +STATE_EXTRA_1 -[#1E90FF,bold]-> CANCEL <> <> : EVENT_CANCEL_2 +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype +hide <> stereotype STATEZ --> [*] @enduml