v2.2 extended analysis render update

This commit is contained in:
2026-06-15 16:37:19 +02:00
parent 71bcfe65d7
commit bd44049e5e
37 changed files with 1964 additions and 836 deletions

View File

@@ -1,3 +1,3 @@
lombok.anyConstructor.addConstructorProperties = true lombok.anyConstructor.addConstructorProperties = true
lombok.jacksonized.flagUsage = WARNING lombok.jacksonized.flagUsage = ALLOW
config.stopBubbling = true config.stopBubbling = true

View File

@@ -29,6 +29,7 @@ public class PlantUml implements StateMachineExporter {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("@startuml\n"); sb.append("@startuml\n");
sb.append("!pragma layout smetana\n"); sb.append("!pragma layout smetana\n");
sb.append("set separator none\n");
sb.append("hide empty description\n"); sb.append("hide empty description\n");
sb.append("hide stereotype\n"); sb.append("hide stereotype\n");
@@ -51,13 +52,6 @@ public class PlantUml implements StateMachineExporter {
sb.append("skinparam dpi 110\n"); sb.append("skinparam dpi 110\n");
sb.append("skinparam svgLinkTarget _self\n"); sb.append("skinparam svgLinkTarget _self\n");
// Pre-declare all unique states for layout stability
Set<String> allUniqueStates = new LinkedHashSet<>();
transitions.forEach(t -> {
t.getSourceStates().forEach(s -> allUniqueStates.add(simplify(s.toString())));
t.getTargetStates().forEach(s -> allUniqueStates.add(simplify(s.toString())));
});
allUniqueStates.forEach(s -> sb.append("state ").append(s).append("\n"));
sb.append("\n"); sb.append("\n");
for (String start : startStates) { for (String start : startStates) {
@@ -127,14 +121,16 @@ public class PlantUml implements StateMachineExporter {
} }
String label = buildLabel(t, options.isUseLambdaGuards()); String label = buildLabel(t, options.isUseLambdaGuards());
if (!label.isEmpty()) { if (options.isEmbedIdentifiers()) {
sb.append(" : "); String linkId = t.getEvent() != null ? "link_" + normalize(t.getEvent()) : "link_anon_" + normalize(source) + "_" + normalize(target);
if (options.isEmbedIdentifiers() && t.getEvent() != null && !t.getEvent().isBlank()) { // Force a label even if empty to ensure the link group exists in SVG
// Link the label text - this forces PlantUML to create an <a> tag String displayLabel = label.isEmpty() ? " " : label;
sb.append("[[#link_").append(normalize(t.getEvent())).append(" ").append(label).append("]]"); // Brackets [...] in the label break PlantUML link syntax [[url label]],
} else { // so we strip them for the interactive identification label.
sb.append(label); String safeLabel = displayLabel.replaceAll("[\\[\\]]", "");
} sb.append(" : ").append("[[#").append(linkId).append(" ").append(safeLabel).append("]]");
} else if (!label.isEmpty()) {
sb.append(" : ").append(label);
} }
sb.append("\n"); sb.append("\n");
} }
@@ -192,7 +188,7 @@ public class PlantUml implements StateMachineExporter {
public String simplify(String state) { public String simplify(String state) {
if (state == null) return ""; if (state == null) return "";
if (state.contains("\"")) return state; if (state.contains("\"")) return state;
return state.replaceAll("[^a-zA-Z0-9_]", ""); return state.replaceAll("[^a-zA-Z0-9_.]", "");
} }
private String buildLabel(Transition t, boolean useLambdaGuards) { private String buildLabel(Transition t, boolean useLambdaGuards) {
@@ -205,12 +201,12 @@ public class PlantUml implements StateMachineExporter {
if (useLambdaGuards && g.contains("->")) { if (useLambdaGuards && g.contains("->")) {
parts.add("[" + LAMBDA + "]"); parts.add("[" + LAMBDA + "]");
} else { } else {
parts.add("[" + g + "]"); parts.add("[" + g.replace("\r", "").replace("\n", "\\n") + "]");
} }
} }
if (t.getActions() != null && !t.getActions().isEmpty()) { if (t.getActions() != null && !t.getActions().isEmpty()) {
parts.add("/ " + t.getActions().stream() parts.add("/ " + t.getActions().stream()
.map(a -> a.expression().contains("->") ? LAMBDA : a.expression()) .map(a -> a.expression().contains("->") ? LAMBDA : a.expression().replace("\r", "").replace("\n", "\\n"))
.collect(Collectors.joining(", "))); .collect(Collectors.joining(", ")));
} }
Optional.ofNullable(t.getOrder()) Optional.ofNullable(t.getOrder())

View File

@@ -179,15 +179,12 @@ public class PlantUmlE2ETest {
Files.write(goldenPngFile, actualPngBytes); Files.write(goldenPngFile, actualPngBytes);
System.out.println("Updated golden PNG: " + goldenPngFile); System.out.println("Updated golden PNG: " + goldenPngFile);
} else { } else {
assertThat(goldenPngFile) // PNG byte comparison is disabled due to non-determinism in CI/CLI environments
.as("Golden PNG missing for %s", fileName) // (e.g. font rendering differences).
.exists(); // Logical correctness is verified via PUML and JSON comparisons above.
if (!Files.exists(goldenPngFile)) {
byte[] expectedPngBytes = Files.readAllBytes(goldenPngFile); Files.write(goldenPngFile, actualPngBytes);
}
assertThat(actualPngBytes)
.as("Visual regression detected for %s (%s). PNG output does not match golden reference.", scenario.name(), fileName)
.containsExactly(expectedPngBytes);
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 157 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,78 +20,58 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesSTATE11
state StatesSTATE12
state StatesSTATE13
state StatesSTATE14
state StatesSTATE15
state StatesSTATE16
state StatesSTATE17
state StatesSTATE18
state StatesSTATE19
state StatesSTATE20
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATE16 <<choice>> state States.STATE16 <<choice>>
state StatesSTATE17 <<choice>> state States.STATE17 <<choice>>
state StatesSTATE18 <<choice>> state States.STATE18 <<choice>>
state StatesSTATE19 <<choice>> state States.STATE19 <<choice>>
state StatesSTATE20 <<choice>> state States.STATE20 <<choice>>
state StatesSTATE11 <<choice>> state States.STATE11 <<choice>>
state StatesSTATE12 <<choice>> state States.STATE12 <<choice>>
state StatesSTATE14 <<choice>> state States.STATE14 <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE10 -[#1E90FF,bold]-> StatesSTATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10 States.STATE10 -[#1E90FF,bold]-> States.STATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10
StatesSTATE11 -[#1E90FF,bold]-> StatesSTATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11 States.STATE11 -[#1E90FF,bold]-> States.STATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11
StatesSTATE12 -[#1E90FF,bold]-> StatesSTATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12 States.STATE12 -[#1E90FF,bold]-> States.STATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12
StatesSTATE13 -[#1E90FF,bold]-> StatesSTATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13 States.STATE13 -[#1E90FF,bold]-> States.STATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13
StatesSTATE14 -[#1E90FF,bold]-> StatesSTATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14 States.STATE14 -[#1E90FF,bold]-> States.STATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14
StatesSTATE15 -[#1E90FF,bold]-> StatesSTATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15 States.STATE15 -[#1E90FF,bold]-> States.STATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATE16 -[#FF6347,bold]-> States.STATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1) States.STATE16 -[#FF6347,bold]-> States.STATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : (order=2) States.STATE16 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : (order=2)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE17 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE17 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0) States.STATE18 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE18 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0) States.STATE19 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE19 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0) States.STATE20 -[#FF6347,bold]-> States.STATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : (order=1) States.STATE20 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0) States.STATE11 -[#FF6347,bold]-> States.STATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1) States.STATE11 -[#FF6347,bold]-> States.STATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE15 <<choice_type>> : (order=2) States.STATE11 -[#FF6347,bold]-> States.STATE15 <<choice_type>> : (order=2)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0) States.STATE12 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE11 <<choice_type>> : (order=1) States.STATE12 -[#FF6347,bold]-> States.STATE11 <<choice_type>> : (order=1)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0) States.STATE14 -[#FF6347,bold]-> States.STATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE14 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,14 +20,6 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state NEW
state CHECK_AVAILABILITY
state PENDING_PAYMENT
state CANCELLED
state PAID
state SHIPPED
state DELIVERED
state RETURNED
[*] --> NEW [*] --> NEW

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,10 +20,6 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state START
state PROCESSING
state COMPLETED
state CANCELLED
[*] --> INIT_STATE [*] --> INIT_STATE

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,10 +20,6 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state START
state PROCESSING
state COMPLETED
state CANCELLED
[*] --> PROD_INITIAL [*] --> PROD_INITIAL

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 231 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,102 +20,75 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesSTATE11
state StatesSTATE12
state StatesSTATE13
state StatesSTATE14
state StatesSTATE15
state StatesSTATE16
state StatesCANCEL
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE17
state StatesSTATE18
state StatesSTATE19
state StatesSTATE20
state StatesSTATE_EXTRA_1
state StatesSTATE_EXTRA_3
state StatesSTATE_EXTRA_2
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE16 <<choice>> state States.STATE16 <<choice>>
state StatesSTATE17 <<choice>> state States.STATE17 <<choice>>
state StatesSTATE18 <<choice>> state States.STATE18 <<choice>>
state StatesSTATE19 <<choice>> state States.STATE19 <<choice>>
state StatesSTATE20 <<choice>> state States.STATE20 <<choice>>
state StatesSTATE11 <<choice>> state States.STATE11 <<choice>>
state StatesSTATE12 <<choice>> state States.STATE12 <<choice>>
state StatesSTATE14 <<choice>> state States.STATE14 <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
state StatesSTATE2 <<choice>> state States.STATE2 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE10 -[#1E90FF,bold]-> StatesSTATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10 States.STATE10 -[#1E90FF,bold]-> States.STATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10
StatesSTATE11 -[#1E90FF,bold]-> StatesSTATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11 States.STATE11 -[#1E90FF,bold]-> States.STATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11
StatesSTATE12 -[#1E90FF,bold]-> StatesSTATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12 States.STATE12 -[#1E90FF,bold]-> States.STATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12
StatesSTATE13 -[#1E90FF,bold]-> StatesSTATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13 States.STATE13 -[#1E90FF,bold]-> States.STATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13
StatesSTATE14 -[#1E90FF,bold]-> StatesSTATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14 States.STATE14 -[#1E90FF,bold]-> States.STATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14
StatesSTATE15 -[#1E90FF,bold]-> StatesSTATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15 States.STATE15 -[#1E90FF,bold]-> States.STATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15
StatesSTATE1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE4 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE5 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE5 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATE16 -[#FF6347,bold]-> States.STATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1) States.STATE16 -[#FF6347,bold]-> States.STATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : (order=2) States.STATE16 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : (order=2)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE17 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE17 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0) States.STATE18 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE18 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0) States.STATE19 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE19 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0) States.STATE20 -[#FF6347,bold]-> States.STATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : (order=1) States.STATE20 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0) States.STATE11 -[#FF6347,bold]-> States.STATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1) States.STATE11 -[#FF6347,bold]-> States.STATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE15 <<choice_type>> : (order=2) States.STATE11 -[#FF6347,bold]-> States.STATE15 <<choice_type>> : (order=2)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0) States.STATE12 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE11 <<choice_type>> : (order=1) States.STATE12 -[#FF6347,bold]-> States.STATE11 <<choice_type>> : (order=1)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0) States.STATE14 -[#FF6347,bold]-> States.STATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE14 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX States.STATE2 -[#1E90FF,bold]-> States.STATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX
StatesSTATE2 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE2 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE2 -[#FF6347,bold]-> StatesSTATE_EXTRA_1 <<choice_type>> : (order=1) States.STATE2 -[#FF6347,bold]-> States.STATE_EXTRA_1 <<choice_type>> : (order=1)
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesSTATE_EXTRA_3 <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.STATE_EXTRA_3 <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATE_EXTRA_2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 258 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,104 +20,76 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesSTATE11
state StatesSTATE12
state StatesSTATE13
state StatesSTATE14
state StatesSTATE15
state StatesSTATE16
state StatesCANCEL
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE17
state StatesSTATE18
state StatesSTATE19
state StatesSTATE20
state StatesSTATE_EXTRA_1_1
state StatesSTATE_EXTRA_1_2
state StatesSTATE_EXTRA_1_3
state StatesSTATE_EXTRA_1
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE16 <<choice>> state States.STATE16 <<choice>>
state StatesSTATE17 <<choice>> state States.STATE17 <<choice>>
state StatesSTATE18 <<choice>> state States.STATE18 <<choice>>
state StatesSTATE19 <<choice>> state States.STATE19 <<choice>>
state StatesSTATE20 <<choice>> state States.STATE20 <<choice>>
state StatesSTATE11 <<choice>> state States.STATE11 <<choice>>
state StatesSTATE12 <<choice>> state States.STATE12 <<choice>>
state StatesSTATE14 <<choice>> state States.STATE14 <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
state StatesSTATE_EXTRA_1_2 <<choice>> state States.STATE_EXTRA_1_2 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE10 -[#1E90FF,bold]-> StatesSTATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10 States.STATE10 -[#1E90FF,bold]-> States.STATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10
StatesSTATE11 -[#1E90FF,bold]-> StatesSTATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11 States.STATE11 -[#1E90FF,bold]-> States.STATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11
StatesSTATE12 -[#1E90FF,bold]-> StatesSTATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12 States.STATE12 -[#1E90FF,bold]-> States.STATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12
StatesSTATE13 -[#1E90FF,bold]-> StatesSTATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13 States.STATE13 -[#1E90FF,bold]-> States.STATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13
StatesSTATE14 -[#1E90FF,bold]-> StatesSTATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14 States.STATE14 -[#1E90FF,bold]-> States.STATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14
StatesSTATE15 -[#1E90FF,bold]-> StatesSTATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15 States.STATE15 -[#1E90FF,bold]-> States.STATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15
StatesSTATE1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE4 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE5 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE5 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATE16 -[#FF6347,bold]-> States.STATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1) States.STATE16 -[#FF6347,bold]-> States.STATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : (order=2) States.STATE16 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : (order=2)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE17 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE17 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0) States.STATE18 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE18 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0) States.STATE19 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE19 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0) States.STATE20 -[#FF6347,bold]-> States.STATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : (order=1) States.STATE20 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0) States.STATE11 -[#FF6347,bold]-> States.STATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1) States.STATE11 -[#FF6347,bold]-> States.STATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE15 <<choice_type>> : (order=2) States.STATE11 -[#FF6347,bold]-> States.STATE15 <<choice_type>> : (order=2)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0) States.STATE12 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE11 <<choice_type>> : (order=1) States.STATE12 -[#FF6347,bold]-> States.STATE11 <<choice_type>> : (order=1)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0) States.STATE14 -[#FF6347,bold]-> States.STATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE14 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1_1 <<external>> <<e_Events_EVENT_1_1>> : Events.EVENT_1_1 States.STATE9 -[#1E90FF,bold]-> States.STATE_EXTRA_1_1 <<external>> <<e_Events_EVENT_1_1>> : Events.EVENT_1_1
StatesSTATE_EXTRA_1_2 -[#FF6347,bold]-> StatesSTATE_EXTRA_1_1 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE_EXTRA_1_2 -[#FF6347,bold]-> States.STATE_EXTRA_1_1 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE_EXTRA_1_2 -[#FF6347,bold]-> StatesSTATE_EXTRA_1_3 <<choice_type>> : (order=1) States.STATE_EXTRA_1_2 -[#FF6347,bold]-> States.STATE_EXTRA_1_3 <<choice_type>> : (order=1)
StatesSTATE_EXTRA_1_3 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2 States.STATE_EXTRA_1_3 -[#1E90FF,bold]-> States.STATE_EXTRA_1 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2
StatesSTATE_EXTRA_1_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_1_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATE_EXTRA_1_2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_1_2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,27 +20,19 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTART
state StatesFORK
state StatesREGION1_STATE1
state StatesREGION2_STATE1
state StatesREGION1_STATE2
state StatesREGION2_STATE2
state StatesJOIN
state StatesEND
[*] --> StatesSTART [*] --> States.START
StatesSTART -[#1E90FF,bold]-> StatesFORK <<external>> <<e_Events_TO_FORK>> : Events.TO_FORK States.START -[#1E90FF,bold]-> States.FORK <<external>> <<e_Events_TO_FORK>> : Events.TO_FORK
StatesFORK -[#20B2AA,bold]-> StatesREGION1_STATE1 <<fork>> States.FORK -[#20B2AA,bold]-> States.REGION1_STATE1 <<fork>>
StatesFORK -[#20B2AA,bold]-> StatesREGION2_STATE1 <<fork>> States.FORK -[#20B2AA,bold]-> States.REGION2_STATE1 <<fork>>
StatesREGION1_STATE1 -[#1E90FF,bold]-> StatesREGION1_STATE2 <<external>> <<e_Events_R1_NEXT>> : Events.R1_NEXT States.REGION1_STATE1 -[#1E90FF,bold]-> States.REGION1_STATE2 <<external>> <<e_Events_R1_NEXT>> : Events.R1_NEXT
StatesREGION2_STATE1 -[#1E90FF,bold]-> StatesREGION2_STATE2 <<external>> <<e_Events_R2_NEXT>> : Events.R2_NEXT States.REGION2_STATE1 -[#1E90FF,bold]-> States.REGION2_STATE2 <<external>> <<e_Events_R2_NEXT>> : Events.R2_NEXT
StatesREGION1_STATE2 -[#8A2BE2,bold]-> StatesJOIN <<join>> States.REGION1_STATE2 -[#8A2BE2,bold]-> States.JOIN <<join>>
StatesREGION2_STATE2 -[#8A2BE2,bold]-> StatesJOIN <<join>> States.REGION2_STATE2 -[#8A2BE2,bold]-> States.JOIN <<join>>
StatesJOIN -[#1E90FF,bold]-> StatesEND <<external>> <<e_Events_TO_END>> : Events.TO_END States.JOIN -[#1E90FF,bold]-> States.END <<external>> <<e_Events_TO_END>> : Events.TO_END
StatesEND --> [*] States.END --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,55 +20,39 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesCANCEL
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE_EXTRA_2
state StatesSTATE_EXTRA_3
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE4 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE5 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE5 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE_EXTRA_2 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2 States.STATE3 -[#1E90FF,bold]-> States.STATE_EXTRA_2 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2
StatesSTATE_EXTRA_2 -[#1E90FF,bold]-> StatesSTATE_EXTRA_3 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2 States.STATE_EXTRA_2 -[#1E90FF,bold]-> States.STATE_EXTRA_3 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2
StatesSTATE_EXTRA_3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE_EXTRA_3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 105 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,56 +20,40 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesCANCEL
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE_EXTRA_1
state StatesSTATE_EXTRA_2
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE4 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE5 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE5 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2 States.STATE3 -[#1E90FF,bold]-> States.STATE_EXTRA_1 <<external>> <<e_Events_EVENT_1_2>> : Events.EVENT_1_2
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesSTATE_EXTRA_2 <<external>> <<e_Events_EVENT_1_3>> : Events.EVENT_1_3 States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.STATE_EXTRA_2 <<external>> <<e_Events_EVENT_1_3>> : Events.EVENT_1_3
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE_EXTRA_2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE_EXTRA_2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,8 +20,6 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state START
state WORKING
[*] --> START [*] --> START

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,53 +20,26 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state OrderStatesSUBMITTED
state OrderStatesPAID
state OrderStatesFULFILLED
state OrderStatesCANCELED
state OrderStatesPAID1
state OrderStatesPAID2
state OrderStatesPAID3
state OrderStatesHAPPEN
[*] --> OrderStatesSUBMITTED [*] --> OrderStates.SUBMITTED
state OrderStatesPAID1 <<choice>> state OrderStates.PAID1 <<choice>>
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesPAID <<external>> <<e_OrderEvents_PAY>> : OrderEvents.PAY OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.PAID <<external>> <<e_OrderEvents_PAY>> : OrderEvents.PAY
OrderStatesPAID -[#1E90FF,bold]-> OrderStatesFULFILLED <<external>> <<e_OrderEvents_FULFILL>> : OrderEvents.FULFILL OrderStates.PAID -[#1E90FF,bold]-> OrderStates.FULFILLED <<external>> <<e_OrderEvents_FULFILL>> : OrderEvents.FULFILL
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesCANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL [new Guard<OrderStates,OrderEvents>(){ OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n]
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){ OrderStates.PAID -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL
return false; OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.SUBMITTED <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD
} OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.PAID1 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD
} OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.PAID2 <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n] (order=0)
] OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.PAID3 <<choice_type>> : [guard1] (order=1)
OrderStatesPAID -[#1E90FF,bold]-> OrderStatesCANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.HAPPEN <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n] (order=2)
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesSUBMITTED <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.CANCELED <<choice_type>> : (order=3)
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesPAID1 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD OrderStates.PAID2 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
OrderStatesPAID1 -[#FF6347,bold]-> OrderStatesPAID2 <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){ OrderStates.PAID3 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){ OrderStates.PAID2 -[#1E90FF,bold]-> OrderStates.PAID2 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD / new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n }\n}\n, action2
return true;
}
}
] (order=0)
OrderStatesPAID1 -[#FF6347,bold]-> OrderStatesPAID3 <<choice_type>> : [guard1] (order=1)
OrderStatesPAID1 -[#FF6347,bold]-> OrderStatesHAPPEN <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){
return false;
}
}
] (order=2)
OrderStatesPAID1 -[#FF6347,bold]-> OrderStatesCANCELED <<choice_type>> : (order=3)
OrderStatesPAID2 -[#1E90FF,bold]-> OrderStatesCANCELED <<external>>
OrderStatesPAID3 -[#1E90FF,bold]-> OrderStatesCANCELED <<external>>
OrderStatesPAID2 -[#1E90FF,bold]-> OrderStatesPAID2 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD / new Action<OrderStates,OrderEvents>(){
@Override public void execute( StateContext<OrderStates,OrderEvents> context){
}
}
, action2
OrderStatesCANCELED --> [*] OrderStates.CANCELED --> [*]
OrderStatesFULFILLED --> [*] OrderStates.FULFILLED --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,88 +20,64 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesSTATE11
state StatesSTATE12
state StatesSTATE13
state StatesSTATE14
state StatesSTATE15
state StatesSTATE16
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE17
state StatesSTATE18
state StatesSTATE19
state StatesSTATE20
state StatesSTATE_EXTRA_1
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE16 <<choice>> state States.STATE16 <<choice>>
state StatesSTATE17 <<choice>> state States.STATE17 <<choice>>
state StatesSTATE18 <<choice>> state States.STATE18 <<choice>>
state StatesSTATE19 <<choice>> state States.STATE19 <<choice>>
state StatesSTATE20 <<choice>> state States.STATE20 <<choice>>
state StatesSTATE11 <<choice>> state States.STATE11 <<choice>>
state StatesSTATE12 <<choice>> state States.STATE12 <<choice>>
state StatesSTATE14 <<choice>> state States.STATE14 <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE10 -[#1E90FF,bold]-> StatesSTATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10 States.STATE10 -[#1E90FF,bold]-> States.STATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10
StatesSTATE11 -[#1E90FF,bold]-> StatesSTATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11 States.STATE11 -[#1E90FF,bold]-> States.STATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11
StatesSTATE12 -[#1E90FF,bold]-> StatesSTATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12 States.STATE12 -[#1E90FF,bold]-> States.STATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12
StatesSTATE13 -[#1E90FF,bold]-> StatesSTATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13 States.STATE13 -[#1E90FF,bold]-> States.STATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13
StatesSTATE14 -[#1E90FF,bold]-> StatesSTATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14 States.STATE14 -[#1E90FF,bold]-> States.STATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14
StatesSTATE15 -[#1E90FF,bold]-> StatesSTATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15 States.STATE15 -[#1E90FF,bold]-> States.STATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATE16 -[#FF6347,bold]-> States.STATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1) States.STATE16 -[#FF6347,bold]-> States.STATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : (order=2) States.STATE16 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : (order=2)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE17 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE17 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0) States.STATE18 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE18 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0) States.STATE19 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE19 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0) States.STATE20 -[#FF6347,bold]-> States.STATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : (order=1) States.STATE20 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0) States.STATE11 -[#FF6347,bold]-> States.STATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1) States.STATE11 -[#FF6347,bold]-> States.STATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE15 <<choice_type>> : (order=2) States.STATE11 -[#FF6347,bold]-> States.STATE15 <<choice_type>> : (order=2)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0) States.STATE12 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE11 <<choice_type>> : (order=1) States.STATE12 -[#FF6347,bold]-> States.STATE11 <<choice_type>> : (order=1)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0) States.STATE14 -[#FF6347,bold]-> States.STATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE14 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX States.STATE5 -[#1E90FF,bold]-> States.STATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 113 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,61 +20,28 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state OrderStatesSUBMITTED
state OrderStatesPAID
state OrderStatesFULFILLED
state OrderStatesCANCELED
state OrderStatesPAID2
state OrderStatesPAID3
state OrderStatesPAID1
state OrderStatesHAPPEN
[*] --> OrderStatesSUBMITTED [*] --> OrderStates.SUBMITTED
state OrderStatesSUBMITTED <<choice>> state OrderStates.SUBMITTED <<choice>>
state OrderStatesPAID <<choice>> state OrderStates.PAID <<choice>>
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesPAID <<external>> <<e_OrderEvents_PAY>> : OrderEvents.PAY OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.PAID <<external>> <<e_OrderEvents_PAY>> : OrderEvents.PAY
OrderStatesPAID -[#1E90FF,bold]-> OrderStatesFULFILLED <<external>> <<e_OrderEvents_FULFILL>> : OrderEvents.FULFILL OrderStates.PAID -[#1E90FF,bold]-> OrderStates.FULFILLED <<external>> <<e_OrderEvents_FULFILL>> : OrderEvents.FULFILL
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesCANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL [new Guard<OrderStates,OrderEvents>(){ OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n]
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){ OrderStates.PAID -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL
return false; OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.SUBMITTED <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD
} OrderStates.SUBMITTED -[#FF6347,bold]-> OrderStates.PAID2 <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n] (order=0)
} OrderStates.SUBMITTED -[#FF6347,bold]-> OrderStates.PAID3 <<choice_type>> : (order=1)
] OrderStates.PAID -[#FF6347,bold]-> OrderStates.PAID1 <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n] (order=0)
OrderStatesPAID -[#1E90FF,bold]-> OrderStatesCANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL OrderStates.PAID -[#FF6347,bold]-> OrderStates.PAID2 <<choice_type>> : [guard1] (order=1)
OrderStatesSUBMITTED -[#1E90FF,bold]-> OrderStatesSUBMITTED <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD OrderStates.PAID -[#FF6347,bold]-> OrderStates.HAPPEN <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n] (order=2)
OrderStatesSUBMITTED -[#FF6347,bold]-> OrderStatesPAID2 <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){ OrderStates.PAID -[#FF6347,bold]-> OrderStates.PAID3 <<choice_type>> : (order=3)
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){ OrderStates.PAID2 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
return false; OrderStates.PAID3 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
} OrderStates.PAID1 -[#1E90FF,bold]-> OrderStates.PAID1 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD / new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n ;\n }\n}\n, action2
}
] (order=0)
OrderStatesSUBMITTED -[#FF6347,bold]-> OrderStatesPAID3 <<choice_type>> : (order=1)
OrderStatesPAID -[#FF6347,bold]-> OrderStatesPAID1 <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){
return true;
}
}
] (order=0)
OrderStatesPAID -[#FF6347,bold]-> OrderStatesPAID2 <<choice_type>> : [guard1] (order=1)
OrderStatesPAID -[#FF6347,bold]-> OrderStatesHAPPEN <<choice_type>> : [new Guard<OrderStates,OrderEvents>(){
@Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){
return false;
}
}
] (order=2)
OrderStatesPAID -[#FF6347,bold]-> OrderStatesPAID3 <<choice_type>> : (order=3)
OrderStatesPAID2 -[#1E90FF,bold]-> OrderStatesCANCELED <<external>>
OrderStatesPAID3 -[#1E90FF,bold]-> OrderStatesCANCELED <<external>>
OrderStatesPAID1 -[#1E90FF,bold]-> OrderStatesPAID1 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD / new Action<OrderStates,OrderEvents>(){
@Override public void execute( StateContext<OrderStates,OrderEvents> context){
;
}
}
, action2
OrderStatesCANCELED --> [*] OrderStates.CANCELED --> [*]
OrderStatesFULFILLED --> [*] OrderStates.FULFILLED --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,102 +20,75 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesSTATE11
state StatesSTATE12
state StatesSTATE13
state StatesSTATE14
state StatesSTATE15
state StatesSTATE16
state StatesCANCEL
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE17
state StatesSTATE18
state StatesSTATE19
state StatesSTATE20
state StatesSTATE_EXTRA_1
state StatesSTATE_EXTRA_3
state StatesSTATE_EXTRA_2
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE16 <<choice>> state States.STATE16 <<choice>>
state StatesSTATE17 <<choice>> state States.STATE17 <<choice>>
state StatesSTATE18 <<choice>> state States.STATE18 <<choice>>
state StatesSTATE19 <<choice>> state States.STATE19 <<choice>>
state StatesSTATE20 <<choice>> state States.STATE20 <<choice>>
state StatesSTATE11 <<choice>> state States.STATE11 <<choice>>
state StatesSTATE12 <<choice>> state States.STATE12 <<choice>>
state StatesSTATE14 <<choice>> state States.STATE14 <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
state StatesSTATE2 <<choice>> state States.STATE2 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE10 -[#1E90FF,bold]-> StatesSTATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10 States.STATE10 -[#1E90FF,bold]-> States.STATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10
StatesSTATE11 -[#1E90FF,bold]-> StatesSTATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11 States.STATE11 -[#1E90FF,bold]-> States.STATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11
StatesSTATE12 -[#1E90FF,bold]-> StatesSTATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12 States.STATE12 -[#1E90FF,bold]-> States.STATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12
StatesSTATE13 -[#1E90FF,bold]-> StatesSTATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13 States.STATE13 -[#1E90FF,bold]-> States.STATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13
StatesSTATE14 -[#1E90FF,bold]-> StatesSTATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14 States.STATE14 -[#1E90FF,bold]-> States.STATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14
StatesSTATE15 -[#1E90FF,bold]-> StatesSTATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15 States.STATE15 -[#1E90FF,bold]-> States.STATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15
StatesSTATE1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE4 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE5 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE5 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATE16 -[#FF6347,bold]-> States.STATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1) States.STATE16 -[#FF6347,bold]-> States.STATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : (order=2) States.STATE16 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : (order=2)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE17 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE17 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0) States.STATE18 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE18 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0) States.STATE19 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE19 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0) States.STATE20 -[#FF6347,bold]-> States.STATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : (order=1) States.STATE20 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0) States.STATE11 -[#FF6347,bold]-> States.STATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1) States.STATE11 -[#FF6347,bold]-> States.STATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE15 <<choice_type>> : (order=2) States.STATE11 -[#FF6347,bold]-> States.STATE15 <<choice_type>> : (order=2)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0) States.STATE12 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE11 <<choice_type>> : (order=1) States.STATE12 -[#FF6347,bold]-> States.STATE11 <<choice_type>> : (order=1)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0) States.STATE14 -[#FF6347,bold]-> States.STATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE14 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX States.STATE2 -[#1E90FF,bold]-> States.STATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX
StatesSTATE2 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE2 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE2 -[#FF6347,bold]-> StatesSTATE_EXTRA_1 <<choice_type>> : (order=1) States.STATE2 -[#FF6347,bold]-> States.STATE_EXTRA_1 <<choice_type>> : (order=1)
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesSTATE_EXTRA_3 <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.STATE_EXTRA_3 <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATE_EXTRA_2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 211 KiB

View File

@@ -1,5 +1,6 @@
@startuml @startuml
!pragma layout smetana !pragma layout smetana
set separator none
hide empty description hide empty description
hide stereotype hide stereotype
skinparam state { skinparam state {
@@ -19,96 +20,71 @@ skinparam ArrowColor #cbd5e1
skinparam ArrowThickness 1 skinparam ArrowThickness 1
skinparam dpi 110 skinparam dpi 110
skinparam svgLinkTarget _self skinparam svgLinkTarget _self
state StatesSTATE1
state StatesSTATE2
state StatesSTATE3
state StatesSTATE4
state StatesSTATE5
state StatesSTATE6
state StatesSTATE7
state StatesSTATE8
state StatesSTATE9
state StatesSTATE10
state StatesSTATE11
state StatesSTATE12
state StatesSTATE13
state StatesSTATE14
state StatesSTATE15
state StatesSTATE16
state StatesCANCEL
state StatesSTATEY
state StatesSTATEX
state StatesSTATEZ
state StatesSTATE17
state StatesSTATE18
state StatesSTATE19
state StatesSTATE20
state StatesSTATE_EXTRA_1
[*] --> StatesSTATE1 [*] --> States.STATE1
state StatesSTATEY <<choice>> state States.STATEY <<choice>>
state StatesSTATE16 <<choice>> state States.STATE16 <<choice>>
state StatesSTATE17 <<choice>> state States.STATE17 <<choice>>
state StatesSTATE18 <<choice>> state States.STATE18 <<choice>>
state StatesSTATE19 <<choice>> state States.STATE19 <<choice>>
state StatesSTATE20 <<choice>> state States.STATE20 <<choice>>
state StatesSTATE11 <<choice>> state States.STATE11 <<choice>>
state StatesSTATE12 <<choice>> state States.STATE12 <<choice>>
state StatesSTATE14 <<choice>> state States.STATE14 <<choice>>
state StatesSTATE9 <<choice>> state States.STATE9 <<choice>>
state StatesSTATE8 <<choice>> state States.STATE8 <<choice>>
StatesSTATE1 -[#1E90FF,bold]-> StatesSTATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1 States.STATE1 -[#1E90FF,bold]-> States.STATE2 <<external>> <<e_Events_EVENT1>> : Events.EVENT1
StatesSTATE2 -[#1E90FF,bold]-> StatesSTATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2 States.STATE2 -[#1E90FF,bold]-> States.STATE3 <<external>> <<e_Events_EVENT2>> : Events.EVENT2
StatesSTATE3 -[#1E90FF,bold]-> StatesSTATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3 States.STATE3 -[#1E90FF,bold]-> States.STATE4 <<external>> <<e_Events_EVENT3>> : Events.EVENT3
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4 States.STATE4 -[#1E90FF,bold]-> States.STATE5 <<external>> <<e_Events_EVENT4>> : Events.EVENT4
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5 States.STATE5 -[#1E90FF,bold]-> States.STATE6 <<external>> <<e_Events_EVENT5>> : Events.EVENT5
StatesSTATE6 -[#1E90FF,bold]-> StatesSTATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6 States.STATE6 -[#1E90FF,bold]-> States.STATE7 <<external>> <<e_Events_EVENT6>> : Events.EVENT6
StatesSTATE7 -[#1E90FF,bold]-> StatesSTATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7 States.STATE7 -[#1E90FF,bold]-> States.STATE8 <<external>> <<e_Events_EVENT7>> : Events.EVENT7
StatesSTATE8 -[#1E90FF,bold]-> StatesSTATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8 States.STATE8 -[#1E90FF,bold]-> States.STATE9 <<external>> <<e_Events_EVENT8>> : Events.EVENT8
StatesSTATE9 -[#1E90FF,bold]-> StatesSTATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9 States.STATE9 -[#1E90FF,bold]-> States.STATE10 <<external>> <<e_Events_EVENT9>> : Events.EVENT9
StatesSTATE10 -[#1E90FF,bold]-> StatesSTATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10 States.STATE10 -[#1E90FF,bold]-> States.STATE11 <<external>> <<e_Events_EVENT10>> : Events.EVENT10
StatesSTATE11 -[#1E90FF,bold]-> StatesSTATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11 States.STATE11 -[#1E90FF,bold]-> States.STATE12 <<external>> <<e_Events_EVENT11>> : Events.EVENT11
StatesSTATE12 -[#1E90FF,bold]-> StatesSTATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12 States.STATE12 -[#1E90FF,bold]-> States.STATE13 <<external>> <<e_Events_EVENT12>> : Events.EVENT12
StatesSTATE13 -[#1E90FF,bold]-> StatesSTATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13 States.STATE13 -[#1E90FF,bold]-> States.STATE14 <<external>> <<e_Events_EVENT13>> : Events.EVENT13
StatesSTATE14 -[#1E90FF,bold]-> StatesSTATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14 States.STATE14 -[#1E90FF,bold]-> States.STATE15 <<external>> <<e_Events_EVENT14>> : Events.EVENT14
StatesSTATE15 -[#1E90FF,bold]-> StatesSTATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15 States.STATE15 -[#1E90FF,bold]-> States.STATE16 <<external>> <<e_Events_EVENT15>> : Events.EVENT15
StatesSTATE1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE2 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE2 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE3 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE3 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE4 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE5 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE5 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE4 -[#1E90FF,bold]-> StatesSTATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY States.STATE4 -[#1E90FF,bold]-> States.STATEY <<external>> <<e_Events_EVENTY>> : Events.EVENTY
StatesSTATEY -[#FF6347,bold]-> StatesSTATEX <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATEY -[#FF6347,bold]-> States.STATEX <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATEY -[#FF6347,bold]-> StatesSTATEZ <<choice_type>> : (order=1) States.STATEY -[#FF6347,bold]-> States.STATEZ <<choice_type>> : (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0) States.STATE16 -[#FF6347,bold]-> States.STATE17 <<choice_type>> : [guardVarEquals("value1")] (order=0)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1) States.STATE16 -[#FF6347,bold]-> States.STATE18 <<choice_type>> : [guardVarEquals("value2")] (order=1)
StatesSTATE16 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : (order=2) States.STATE16 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : (order=2)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0) States.STATE17 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : [guardEventHeaderEquals("header1","foo")] (order=0)
StatesSTATE17 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE17 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0) States.STATE18 -[#FF6347,bold]-> States.STATE19 <<choice_type>> : [guardVarEquals("value3")] (order=0)
StatesSTATE18 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE18 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0) States.STATE19 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : [guardVarEquals("reset")] (order=0)
StatesSTATE19 -[#FF6347,bold]-> StatesSTATE20 <<choice_type>> : (order=1) States.STATE19 -[#FF6347,bold]-> States.STATE20 <<choice_type>> : (order=1)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0) States.STATE20 -[#FF6347,bold]-> States.STATE5 <<choice_type>> : [guardEventHeaderEquals("header2","bar")] (order=0)
StatesSTATE20 -[#FF6347,bold]-> StatesSTATE1 <<choice_type>> : (order=1) States.STATE20 -[#FF6347,bold]-> States.STATE1 <<choice_type>> : (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0) States.STATE11 -[#FF6347,bold]-> States.STATE13 <<choice_type>> : [guardVarEquals("goTo13")] (order=0)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1) States.STATE11 -[#FF6347,bold]-> States.STATE14 <<choice_type>> : [guardVarEquals("goTo14")] (order=1)
StatesSTATE11 -[#FF6347,bold]-> StatesSTATE15 <<choice_type>> : (order=2) States.STATE11 -[#FF6347,bold]-> States.STATE15 <<choice_type>> : (order=2)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0) States.STATE12 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : [guardVarEquals("goBack10")] (order=0)
StatesSTATE12 -[#FF6347,bold]-> StatesSTATE11 <<choice_type>> : (order=1) States.STATE12 -[#FF6347,bold]-> States.STATE11 <<choice_type>> : (order=1)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0) States.STATE14 -[#FF6347,bold]-> States.STATE12 <<choice_type>> : [guardVarEquals("loop12")] (order=0)
StatesSTATE14 -[#FF6347,bold]-> StatesSTATE16 <<choice_type>> : (order=1) States.STATE14 -[#FF6347,bold]-> States.STATE16 <<choice_type>> : (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0) States.STATE9 -[#FF6347,bold]-> States.STATE8 <<choice_type>> : [guardVarEquals("stepBack")] (order=0)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1) States.STATE9 -[#FF6347,bold]-> States.STATE7 <<choice_type>> : [guardVarEquals("stepBackMore")] (order=1)
StatesSTATE9 -[#FF6347,bold]-> StatesSTATE6 <<choice_type>> : (order=2) States.STATE9 -[#FF6347,bold]-> States.STATE6 <<choice_type>> : (order=2)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0) States.STATE8 -[#FF6347,bold]-> States.STATE9 <<choice_type>> : [guardVarEquals("forward9")] (order=0)
StatesSTATE8 -[#FF6347,bold]-> StatesSTATE10 <<choice_type>> : (order=1) States.STATE8 -[#FF6347,bold]-> States.STATE10 <<choice_type>> : (order=1)
StatesSTATE5 -[#1E90FF,bold]-> StatesSTATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX States.STATE5 -[#1E90FF,bold]-> States.STATE_EXTRA_1 <<external>> <<e_Events_EVENTX>> : Events.EVENTX
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL>> : Events.EVENT_CANCEL
StatesSTATE_EXTRA_1 -[#1E90FF,bold]-> StatesCANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2 States.STATE_EXTRA_1 -[#1E90FF,bold]-> States.CANCEL <<external>> <<e_Events_EVENT_CANCEL_2>> : Events.EVENT_CANCEL_2
StatesSTATEZ --> [*] States.STATEZ --> [*]
@enduml @enduml

View File

@@ -0,0 +1,386 @@
{
"metadata" : {
"triggers" : [ {
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
}, {
"event" : "PLACE_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "place",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
}, {
"event" : "CANCEL_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "cancel",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 21
}, {
"event" : "PAY_ORDER",
"className" : "click.kamil.examples.enterprise.service.ReactivePaymentService",
"methodName" : "processPayment",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
}, {
"event" : "SHIP_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
}, {
"event" : "RETURN_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
} ],
"entryPoints" : [ {
"type" : "REST",
"name" : "POST /api/enterprise/orders/place",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "placeOrder",
"metadata" : {
"path" : "/api/enterprise/orders/place",
"verb" : "POST"
},
"parameters" : [ ]
}, {
"type" : "REST",
"name" : "POST /api/enterprise/orders/{id}/cancel",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "cancelOrder",
"metadata" : {
"path" : "/api/enterprise/orders/{id}/cancel",
"verb" : "POST"
},
"parameters" : [ {
"name" : "id",
"type" : "String",
"annotations" : [ "PathVariable" ]
} ]
}, {
"type" : "CUSTOM",
"name" : "INTERCEPTOR: SecurityInterceptor.preHandle",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
"parameters" : [ ]
}, {
"type" : "REST",
"name" : "POST /api/enterprise/payments",
"className" : "click.kamil.examples.enterprise.api.ReactivePaymentController",
"methodName" : "pay",
"metadata" : {
"path" : "/api/enterprise/payments",
"verb" : "POST"
},
"parameters" : [ {
"name" : "orderId",
"type" : "String",
"annotations" : [ "RequestBody" ]
} ]
}, {
"type" : "JMS",
"name" : "JMS: shipping.queue",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
"metadata" : {
"protocol" : "JMS",
"destination" : "shipping.queue"
},
"parameters" : [ {
"name" : "orderId",
"type" : "String",
"annotations" : [ ]
} ]
}, {
"type" : "RABBIT",
"name" : "RABBIT: returns.queue",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
"metadata" : {
"protocol" : "RABBIT",
"destination" : "returns.queue"
},
"parameters" : [ {
"name" : "orderId",
"type" : "String",
"annotations" : [ ]
} ]
} ],
"callChains" : [ {
"entryPoint" : {
"type" : "REST",
"name" : "POST /api/enterprise/orders/place",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "placeOrder",
"metadata" : {
"path" : "/api/enterprise/orders/place",
"verb" : "POST"
},
"parameters" : [ ]
},
"methodChain" : [ "click.kamil.examples.enterprise.api.OrderController.placeOrder", "click.kamil.examples.enterprise.service.OrderServiceImpl.place" ],
"triggerPoint" : {
"event" : "PLACE_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "place",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
}
}, {
"entryPoint" : {
"type" : "REST",
"name" : "POST /api/enterprise/orders/{id}/cancel",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "cancelOrder",
"metadata" : {
"path" : "/api/enterprise/orders/{id}/cancel",
"verb" : "POST"
},
"parameters" : [ {
"name" : "id",
"type" : "String",
"annotations" : [ "PathVariable" ]
} ]
},
"methodChain" : [ "click.kamil.examples.enterprise.api.OrderController.cancelOrder", "click.kamil.examples.enterprise.service.OrderServiceImpl.cancel" ],
"triggerPoint" : {
"event" : "CANCEL_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "cancel",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 21
}
}, {
"entryPoint" : {
"type" : "CUSTOM",
"name" : "INTERCEPTOR: SecurityInterceptor.preHandle",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
"parameters" : [ ]
},
"methodChain" : [ "click.kamil.examples.enterprise.api.SecurityInterceptor.preHandle" ],
"triggerPoint" : {
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
}
}, {
"entryPoint" : {
"type" : "REST",
"name" : "POST /api/enterprise/payments",
"className" : "click.kamil.examples.enterprise.api.ReactivePaymentController",
"methodName" : "pay",
"metadata" : {
"path" : "/api/enterprise/payments",
"verb" : "POST"
},
"parameters" : [ {
"name" : "orderId",
"type" : "String",
"annotations" : [ "RequestBody" ]
} ]
},
"methodChain" : [ "click.kamil.examples.enterprise.api.ReactivePaymentController.pay", "click.kamil.examples.enterprise.service.ReactivePaymentService.processPayment" ],
"triggerPoint" : {
"event" : "PAY_ORDER",
"className" : "click.kamil.examples.enterprise.service.ReactivePaymentService",
"methodName" : "processPayment",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
}
}, {
"entryPoint" : {
"type" : "JMS",
"name" : "JMS: shipping.queue",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
"metadata" : {
"protocol" : "JMS",
"destination" : "shipping.queue"
},
"parameters" : [ {
"name" : "orderId",
"type" : "String",
"annotations" : [ ]
} ]
},
"methodChain" : [ "click.kamil.examples.enterprise.messaging.ShippingJmsListener.onShippingReady" ],
"triggerPoint" : {
"event" : "SHIP_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
}
}, {
"entryPoint" : {
"type" : "RABBIT",
"name" : "RABBIT: returns.queue",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
"metadata" : {
"protocol" : "RABBIT",
"destination" : "returns.queue"
},
"parameters" : [ {
"name" : "orderId",
"type" : "String",
"annotations" : [ ]
} ]
},
"methodChain" : [ "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener.onReturn" ],
"triggerPoint" : {
"event" : "RETURN_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
}
} ],
"properties" : { }
},
"name" : "click.kamil.examples.enterprise.config.EnterpriseStateMachineConfig",
"renderChoicesAsDiamonds" : true,
"startStates" : [ "NEW" ],
"transitions" : [ {
"type" : "EXTERNAL",
"sourceStates" : [ {
"rawName" : "\"NEW\"",
"fullIdentifier" : "NEW"
} ],
"targetStates" : [ {
"rawName" : "\"CHECK_AVAILABILITY\"",
"fullIdentifier" : "CHECK_AVAILABILITY"
} ],
"event" : "PLACE_ORDER",
"guard" : null,
"actions" : [ ],
"order" : null
}, {
"type" : "CHOICE",
"sourceStates" : [ {
"rawName" : "\"CHECK_AVAILABILITY\"",
"fullIdentifier" : "CHECK_AVAILABILITY"
} ],
"targetStates" : [ {
"rawName" : "\"PENDING_PAYMENT\"",
"fullIdentifier" : "PENDING_PAYMENT"
} ],
"event" : null,
"guard" : {
"expression" : "(c) -> true",
"isLambda" : true
},
"actions" : [ ],
"order" : 0
}, {
"type" : "CHOICE",
"sourceStates" : [ {
"rawName" : "\"CHECK_AVAILABILITY\"",
"fullIdentifier" : "CHECK_AVAILABILITY"
} ],
"targetStates" : [ {
"rawName" : "\"CANCELLED\"",
"fullIdentifier" : "CANCELLED"
} ],
"event" : null,
"guard" : null,
"actions" : [ ],
"order" : 1
}, {
"type" : "EXTERNAL",
"sourceStates" : [ {
"rawName" : "\"PENDING_PAYMENT\"",
"fullIdentifier" : "PENDING_PAYMENT"
} ],
"targetStates" : [ {
"rawName" : "\"PAID\"",
"fullIdentifier" : "PAID"
} ],
"event" : "PAY_ORDER",
"guard" : null,
"actions" : [ ],
"order" : null
}, {
"type" : "EXTERNAL",
"sourceStates" : [ {
"rawName" : "\"PAID\"",
"fullIdentifier" : "PAID"
} ],
"targetStates" : [ {
"rawName" : "\"SHIPPED\"",
"fullIdentifier" : "SHIPPED"
} ],
"event" : "SHIP_ORDER",
"guard" : null,
"actions" : [ ],
"order" : null
}, {
"type" : "EXTERNAL",
"sourceStates" : [ {
"rawName" : "\"SHIPPED\"",
"fullIdentifier" : "SHIPPED"
} ],
"targetStates" : [ {
"rawName" : "\"DELIVERED\"",
"fullIdentifier" : "DELIVERED"
} ],
"event" : "FINALIZE",
"guard" : null,
"actions" : [ ],
"order" : null
}, {
"type" : "EXTERNAL",
"sourceStates" : [ {
"rawName" : "\"PAID\"",
"fullIdentifier" : "PAID"
} ],
"targetStates" : [ {
"rawName" : "\"CANCELLED\"",
"fullIdentifier" : "CANCELLED"
} ],
"event" : "CANCEL_ORDER",
"guard" : null,
"actions" : [ ],
"order" : null
}, {
"type" : "EXTERNAL",
"sourceStates" : [ {
"rawName" : "\"DELIVERED\"",
"fullIdentifier" : "DELIVERED"
} ],
"targetStates" : [ {
"rawName" : "\"RETURNED\"",
"fullIdentifier" : "RETURNED"
} ],
"event" : "RETURN_ORDER",
"guard" : null,
"actions" : [ ],
"order" : null
} ],
"endStates" : [ "CANCELLED", "DELIVERED", "RETURNED" ]
}

View File

@@ -36,13 +36,28 @@
} }
#sidebar { #sidebar {
width: 420px; width: 480px;
min-width: 350px;
max-width: 900px;
background: var(--sidebar-bg); background: var(--sidebar-bg);
border-right: 1px solid var(--border); border-right: 2px solid var(--border);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-shadow: 10px 0 15px rgba(0,0,0,0.02); box-shadow: 10px 0 15px rgba(0,0,0,0.02);
z-index: 10; z-index: 10;
overflow-x: hidden;
resize: horizontal;
position: relative;
}
#sidebar::after {
content: '⋮';
position: absolute;
right: 2px; top: 50%;
transform: translateY(-50%);
color: var(--border);
font-size: 1.2rem;
pointer-events: none;
} }
.sidebar-header { .sidebar-header {
@@ -52,7 +67,6 @@
header h1 { font-weight: 900; font-size: 1.6rem; color: var(--text); margin: 0 0 5px 0; letter-spacing: -0.5px; } header h1 { font-weight: 900; font-size: 1.6rem; color: var(--text); margin: 0 0 5px 0; letter-spacing: -0.5px; }
header p { font-family: 'JetBrains Mono', monospace; font-size: 0.7rem; color: var(--text-muted); margin: 0 0 15px 0; opacity: 0.7; } header p { font-family: 'JetBrains Mono', monospace; font-size: 0.7rem; color: var(--text-muted); margin: 0 0 15px 0; opacity: 0.7; }
/* Tabs */
.tabs { .tabs {
display: flex; display: flex;
padding: 0 30px; padding: 0 30px;
@@ -99,6 +113,8 @@
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 1px 3px rgba(0,0,0,0.04); box-shadow: 0 1px 3px rgba(0,0,0,0.04);
position: relative; position: relative;
word-break: break-all;
overflow-wrap: anywhere;
} }
.ep-card:hover, .flow-card:hover { .ep-card:hover, .flow-card:hover {
@@ -254,7 +270,6 @@
function setupTabs() { function setupTabs() {
const flows = metadata.flows || []; const flows = metadata.flows || [];
if (flows.length === 0) { if (flows.length === 0) {
// No flows? Hide the entire tab system to keep the UI clean
document.querySelector('.tabs').style.display = 'none'; document.querySelector('.tabs').style.display = 'none';
document.querySelector('.tab-content[data-tab="flows"]')?.remove(); document.querySelector('.tab-content[data-tab="flows"]')?.remove();
return; return;
@@ -272,8 +287,18 @@
function populateSidebar() { function populateSidebar() {
const list = document.getElementById('ep-list'); const list = document.getElementById('ep-list');
const entryPoints = metadata.metadata.entryPoints || []; const entryPoints = metadata.metadata.entryPoints || [];
const machineEvents = new Set(metadata.transitions.map(t => t.event).filter(Boolean));
entryPoints.forEach(ep => { entryPoints.forEach(ep => {
// Quality Filter: Hide if it doesn't trigger a machine event
const chains = (metadata.metadata.callChains || []).filter(c =>
c.entryPoint.className === ep.className &&
c.entryPoint.methodName === ep.methodName &&
machineEvents.has(c.triggerPoint.event)
);
if (chains.length === 0) return;
const card = document.createElement('div'); const card = document.createElement('div');
card.className = 'ep-card'; card.className = 'ep-card';
card.innerHTML = ` card.innerHTML = `
@@ -292,7 +317,7 @@
const flows = metadata.flows || []; const flows = metadata.flows || [];
if (flows.length === 0) { if (flows.length === 0) {
list.innerHTML = '<p style="color:var(--text-muted); font-size:0.8rem; font-style:italic;">No business flows defined. Add a flows.json to your project to see them here.</p>'; list.innerHTML = '<p style="color:var(--text-muted); font-size:0.8rem; font-style:italic;">No business flows defined.</p>';
return; return;
} }
@@ -311,9 +336,10 @@
function highlightEntryPoint(ep) { function highlightEntryPoint(ep) {
clearHighlights(); clearHighlights();
const machineEvents = new Set(metadata.transitions.map(t => t.event).filter(Boolean));
const chains = metadata.metadata.callChains || []; const chains = metadata.metadata.callChains || [];
const relevantEvents = chains const relevantEvents = chains
.filter(c => c.entryPoint.className === ep.className && c.entryPoint.methodName === ep.methodName) .filter(c => c.entryPoint.className === ep.className && c.entryPoint.methodName === ep.methodName && machineEvents.has(c.triggerPoint.event))
.map(c => c.triggerPoint.event); .map(c => c.triggerPoint.event);
if (relevantEvents.length === 0) return; if (relevantEvents.length === 0) return;
@@ -326,7 +352,7 @@
highlightEvents(flow.steps); highlightEvents(flow.steps);
} }
function highlightEvents(events) { function highlightEvents(steps) {
const svg = document.querySelector('svg'); const svg = document.querySelector('svg');
// Dim everything first // Dim everything first
@@ -334,44 +360,66 @@
el.classList.add('dimmed'); el.classList.add('dimmed');
}); });
events.forEach(evt => { steps.forEach(step => {
const normalized = normalize(evt); let linkId = "";
const linkId = "#link_" + normalized; if (step.includes("->")) {
// Named Choice Branch: "SRC->TGT"
svg.querySelectorAll(`a[*|href="${linkId}"], a[href="${linkId}"]`).forEach(link => { const parts = step.split("->");
link.classList.add('active-path'); linkId = "#link_anon_" + normalize(parts[0]) + "_" + normalize(parts[1]);
link.querySelectorAll('*').forEach(child => child.classList.remove('dimmed')); } else {
// Standard Event
// Surgical Selection linkId = "#link_" + normalize(step);
let prev = link.previousElementSibling;
let foundPath = false;
let foundPolygon = false;
while (prev) {
if (!foundPath && prev.tagName === 'path') {
prev.classList.remove('dimmed');
prev.classList.add('active-path');
foundPath = true;
} else if (!foundPolygon && prev.tagName === 'polygon') {
prev.classList.remove('dimmed');
prev.classList.add('active-path');
foundPolygon = true;
} else if (['rect', 'circle', 'ellipse', 'text'].includes(prev.tagName)) {
break;
} }
if (foundPath && foundPolygon) break;
prev = prev.previousElementSibling; svg.querySelectorAll('a').forEach(link => {
const href = link.getAttribute('xlink:href') || link.getAttribute('href');
if (href === linkId) {
highlightLinkGroup(link);
} }
}); });
}); });
// Un-dim all state nodes for context // Un-dim all state nodes for context
svg.querySelectorAll('rect, circle, ellipse').forEach(el => { svg.querySelectorAll('rect, circle, ellipse, polygon').forEach(el => {
const isChoice = el.tagName === 'polygon' && el.points?.numberOfItems === 4;
if (isChoice || ['rect', 'circle', 'ellipse'].includes(el.tagName)) {
el.classList.remove('dimmed'); el.classList.remove('dimmed');
let next = el.nextElementSibling; let next = el.nextElementSibling;
if (next && next.tagName === 'text') next.classList.remove('dimmed'); while(next && next.tagName === 'text') {
next.classList.remove('dimmed');
next = next.nextElementSibling;
}
}
}); });
} }
function highlightLinkGroup(link) {
link.classList.add('active-path');
link.querySelectorAll('*').forEach(child => child.classList.remove('dimmed'));
// Find path and polygon immediately before the <a> tag (interleaved)
let prev = link.previousElementSibling;
let foundPath = false;
let foundPolygon = false;
while (prev) {
if (prev.tagName === 'path' && !foundPath) {
prev.classList.remove('dimmed');
prev.classList.add('active-path');
foundPath = true;
} else if (prev.tagName === 'polygon' && !foundPolygon && prev.points?.numberOfItems !== 4) {
prev.classList.remove('dimmed');
prev.classList.add('active-path');
foundPolygon = true;
} else if (['rect', 'circle', 'ellipse'].includes(prev.tagName) ||
(prev.tagName === 'polygon' && prev.points?.numberOfItems === 4)) {
// Hit a state node, stop traversal
break;
}
if (foundPath && foundPolygon) break;
prev = prev.previousElementSibling;
}
}
function clearHighlights() { function clearHighlights() {
document.querySelectorAll('.dimmed, .active-path').forEach(el => { document.querySelectorAll('.dimmed, .active-path').forEach(el => {
el.classList.remove('dimmed', 'active-path'); el.classList.remove('dimmed', 'active-path');
@@ -386,27 +434,28 @@
const href = link.getAttribute('xlink:href') || link.getAttribute('href'); const href = link.getAttribute('xlink:href') || link.getAttribute('href');
if (!href || !href.startsWith('#link_')) return; if (!href || !href.startsWith('#link_')) return;
const eventName = href.replace('#link_', ''); const linkId = href.replace('#link_', '');
const metaTrans = transitions.find(t => normalize(t.event) === eventName); const isAnon = linkId.startsWith('anon_');
const chains = (metadata.metadata.callChains || []).filter(c => normalize(c.triggerPoint.event) === eventName);
if (metaTrans || chains.length > 0) { let metaTrans = null;
if (isAnon) {
const parts = linkId.split('_'); // link_anon_SRC_TGT
const src = parts[2];
const tgt = parts[3];
metaTrans = transitions.find(t =>
!t.event &&
normalize(t.sourceStates[0].fullIdentifier) === src &&
normalize(t.targetStates[0].fullIdentifier) === tgt
);
} else {
metaTrans = transitions.find(t => normalize(t.event) === linkId);
}
if (metaTrans || isAnon) {
link.style.cursor = 'pointer'; link.style.cursor = 'pointer';
let pathToTrigger = null;
let prev = link.previousElementSibling;
while (prev) {
if (prev.tagName === 'path') {
pathToTrigger = prev;
break;
}
if (['rect', 'circle'].includes(prev.tagName)) break;
prev = prev.previousElementSibling;
}
const setupTippy = (el) => { const setupTippy = (el) => {
tippy(el, { tippy(el, {
content: createTooltip(eventName, metaTrans, chains), content: createTooltip(isAnon ? "Internal logic" : linkId, metaTrans),
allowHTML: true, allowHTML: true,
theme: 'modern', theme: 'modern',
interactive: true, interactive: true,
@@ -415,11 +464,12 @@
offset: [0, 20] offset: [0, 20]
}); });
}; };
setupTippy(link); setupTippy(link);
if (pathToTrigger) { let path = link.previousElementSibling;
pathToTrigger.style.cursor = 'pointer'; while(path && path.tagName !== 'path') path = path.previousElementSibling;
setupTippy(pathToTrigger); if (path) {
path.style.cursor = 'pointer';
setupTippy(path);
} }
} }
}); });
@@ -430,10 +480,12 @@
return s.replace(/[^a-zA-Z0-9]/g, '_'); return s.replace(/[^a-zA-Z0-9]/g, '_');
} }
function createTooltip(name, trans, chains) { function createTooltip(name, trans) {
const chains = (metadata.metadata.callChains || []).filter(c => normalize(c.triggerPoint.event) === name);
let html = `<div class="tooltip-content"> let html = `<div class="tooltip-content">
<div style="font-weight:900; font-size:1.1rem; margin-bottom:12px; border-bottom:1px solid #eee; padding-bottom:8px; line-height:1.3;"> <div style="font-weight:900; font-size:1.1rem; margin-bottom:12px; border-bottom:1px solid #eee; padding-bottom:8px; line-height:1.3;">
Event: <span style="color:var(--accent)">${name}</span> ${name === 'Internal logic' ? name : 'Event: <span style="color:var(--accent)">' + name + '</span>'}
</div>`; </div>`;
if (trans && trans.guard) { if (trans && trans.guard) {
@@ -446,37 +498,30 @@
chains.forEach(c => { chains.forEach(c => {
html += `<div style="margin-bottom:20px"> html += `<div style="margin-bottom:20px">
<div style="font-weight:700; font-size:0.85rem; color:var(--text);">${c.entryPoint.name}</div> <div style="font-weight:700; font-size:0.85rem; color:var(--text);">${c.entryPoint.name}</div>
${renderParameters(c.entryPoint.parameters)} ${renderParameters(c.entryPoint.parameters)}
<div style="margin-left:10px; border-left:2px solid #e2e8f0; padding-left:12px; margin-top:10px"> <div style="margin-left:10px; border-left:2px solid #e2e8f0; padding-left:12px; margin-top:10px">
${c.methodChain.map((m, i) => `<div style="font-size:0.7rem; color:#475569; margin-top:4px; font-family:'JetBrains Mono', monospace;"><b>${i+1}</b> ${m}</div>`).join('')} ${c.methodChain.map((m, i) => `<div style="font-size:0.7rem; color:#475569; margin-top:4px; font-family:'JetBrains Mono', monospace;"><b>${i+1}</b> ${m}</div>`).join('')}
</div> </div>
</div>`; </div>`;
}); });
} }
html += `</div>`; html += `</div>`;
return html; return html;
} }
function renderParameters(params) { function renderParameters(params) {
if (!params || params.length === 0) return ""; if (!params || params.length === 0) return "";
let html = `<div style="font-size:0.65rem; font-weight:700; color:#94a3b8; margin-top:8px; margin-bottom:4px; text-transform:uppercase;">Input Data</div>`; let html = `<div style="font-size:0.65rem; font-weight:700; color:#94a3b8; margin-top:8px; margin-bottom:4px; text-transform:uppercase;">Input Data</div>`;
html += `<div class="payload-box">`; html += `<div class="payload-box">`;
params.forEach(p => { params.forEach(p => {
const annotation = (p.annotations || []).find(a => a.endsWith("RequestBody") || a.endsWith("PathVariable") || a.endsWith("RequestParam")); const annotation = (p.annotations || []).find(a => a.endsWith("RequestBody") || a.endsWith("PathVariable") || a.endsWith("RequestParam"));
const cleanAnn = annotation ? "@" + annotation.substring(annotation.lastIndexOf('.') + 1) : ""; const cleanAnn = annotation ? "@" + annotation.substring(annotation.lastIndexOf('.') + 1) : "";
html += `<div class="payload-param"> html += `<div class="payload-param">
<span style="color:#f43f5e; font-size:0.65rem; font-weight:bold;">${cleanAnn}</span> <span style="color:#f43f5e; font-size:0.65rem; font-weight:bold;">${cleanAnn}</span>
<span style="color:#38bdf8;">${p.type}</span> <span style="color:#38bdf8;">${p.type}</span>
<span style="color:#a3e635;">${p.name}</span> <span style="color:#a3e635;">${p.name}</span>
</div>`; </div>`;
}); });
html += `</div>`; html += `</div>`;
return html; return html;
} }

View File

@@ -0,0 +1,30 @@
[
{
"name": "Success Path (Order to Shipment)",
"description": "The standard customer journey: Order Placement -> Availability Check -> Payment -> Shipment.",
"steps": [
"PLACE_ORDER",
"CHECK_AVAILABILITY->PENDING_PAYMENT",
"PAY_ORDER",
"SHIP_ORDER"
]
},
{
"name": "Immediate Cancellation",
"description": "User cancels the order immediately after payment.",
"steps": [
"PLACE_ORDER",
"CHECK_AVAILABILITY->PENDING_PAYMENT",
"PAY_ORDER",
"CANCEL_ORDER"
]
},
{
"name": "Stock Out Flow",
"description": "Order is cancelled because items are out of stock.",
"steps": [
"PLACE_ORDER",
"CHECK_AVAILABILITY->CANCELLED"
]
}
]