v2.3 extended analysis render update

This commit is contained in:
2026-06-15 22:00:38 +02:00
parent bd44049e5e
commit ac05513b6c
30 changed files with 2341 additions and 146 deletions

View File

@@ -18,6 +18,8 @@ import java.util.Set;
@JsonIgnoreProperties(ignoreUnknown = true)
public class AnalysisResult {
private final String name;
@Builder.Default
private final Set<click.kamil.springstatemachineexporter.model.State> states = java.util.Collections.emptySet();
private final List<Transition> transitions;
private final Set<String> startStates;
private final Set<String> endStates;

View File

@@ -11,6 +11,8 @@ import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.ClassInstanceCreation;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.LambdaExpression;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
@@ -175,15 +177,15 @@ public class AstTransitionParser {
Expression secondArg = resolveArg((Expression) args.get(1), argsMap);
if ("last".equals(methodName)) {
// For 'last', the second argument is an action, not a guard
parseAction(secondArg, t);
parseAction(secondArg, t, cu);
} else {
// For 'first' and 'then', the second argument is a guard
parseGuard(secondArg, t);
parseGuard(secondArg, t, cu);
}
}
if (args.size() > 2) {
Expression thirdArg = resolveArg((Expression) args.get(2), argsMap);
parseAction(thirdArg, t);
parseAction(thirdArg, t, cu);
}
t.setOrder(orderCounter++);
transitions.add(t);
@@ -226,28 +228,43 @@ public class AstTransitionParser {
}
case "guard" -> {
Expression resolved = resolveArg((Expression) args.get(0), argsMap);
parseGuard(resolved, t);
parseGuard(resolved, t, cu);
}
case "action" -> {
Expression resolved = resolveArg((Expression) args.get(0), argsMap);
parseAction(resolved, t);
parseAction(resolved, t, cu);
}
}
}
return t;
}
private static void parseGuard(Object arg, Transition t) {
private static String extractInternalLogic(Expression expr, CompilationUnit cu) {
if (expr instanceof MethodInvocation mi) {
IMethodBinding binding = mi.resolveMethodBinding();
if (binding != null) {
ASTNode declNode = cu.findDeclaringNode(binding.getKey());
if (declNode instanceof MethodDeclaration md) {
return md.toString();
}
}
}
return null;
}
private static void parseGuard(Object arg, Transition t, CompilationUnit cu) {
QuotedExpression quotedExpr = QuotedExpression.of(arg);
if (quotedExpr != null) {
t.setGuard(Guard.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression())));
String internalLogic = extractInternalLogic(quotedExpr.getExpression(), cu);
t.setGuard(Guard.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic));
}
}
private static void parseAction(Object arg, Transition t) {
private static void parseAction(Object arg, Transition t, CompilationUnit cu) {
QuotedExpression quotedExpr = QuotedExpression.of(arg);
if (quotedExpr != null) {
t.getActions().add(Action.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression())));
String internalLogic = extractInternalLogic(quotedExpr.getExpression(), cu);
t.getActions().add(Action.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic));
}
}

View File

@@ -44,6 +44,23 @@ public class TransitionStateUtils {
.collect(Collectors.toSet());
}
public static Set<State> findAllStates(Collection<Transition> transitions, Set<String> initialStates, Set<String> endStates) {
Set<State> allStates = new java.util.HashSet<>();
if (transitions != null) {
transitions.forEach(t -> {
if (t.getSourceStates() != null) allStates.addAll(t.getSourceStates());
if (t.getTargetStates() != null) allStates.addAll(t.getTargetStates());
});
}
if (initialStates != null) {
initialStates.forEach(s -> allStates.add(State.of(s)));
}
if (endStates != null) {
endStates.forEach(s -> allStates.add(State.of(s)));
}
return allStates;
}
private static Stream<String> normalizeStates(Collection<State> states) {
return states.stream()
.map(State::toString)

View File

@@ -198,15 +198,15 @@ public class PlantUml implements StateMachineExporter {
}
if (t.getGuard() != null) {
String g = t.getGuard().expression();
if (useLambdaGuards && g.contains("->")) {
if (useLambdaGuards && t.getGuard().isLambda()) {
parts.add("[" + LAMBDA + "]");
} else {
parts.add("[" + g.replace("\r", "").replace("\n", "\\n") + "]");
parts.add("[" + g.replaceAll("[\\n\\r]+", " ").replaceAll("\\s{2,}", " ").trim() + "]");
}
}
if (t.getActions() != null && !t.getActions().isEmpty()) {
parts.add("/ " + t.getActions().stream()
.map(a -> a.expression().contains("->") ? LAMBDA : a.expression().replace("\r", "").replace("\n", "\\n"))
.map(a -> (useLambdaGuards && a.isLambda()) ? LAMBDA : a.expression().replaceAll("[\\n\\r]+", " ").replaceAll("\\s{2,}", " ").trim())
.collect(Collectors.joining(", ")));
}
Optional.ofNullable(t.getOrder())

View File

@@ -1,7 +1,7 @@
package click.kamil.springstatemachineexporter.model;
public record Action(String expression, boolean isLambda) {
public static Action of(String expression, boolean isLambda) {
return expression != null ? new Action(expression, isLambda) : null;
public record Action(String expression, boolean isLambda, String internalLogic) {
public static Action of(String expression, boolean isLambda, String internalLogic) {
return expression != null ? new Action(expression, isLambda, internalLogic) : null;
}
}

View File

@@ -1,7 +1,7 @@
package click.kamil.springstatemachineexporter.model;
public record Guard(String expression, boolean isLambda) {
public static Guard of(String expression, boolean isLambda) {
return expression != null ? new Guard(expression, isLambda) : null;
public record Guard(String expression, boolean isLambda, String internalLogic) {
public static Guard of(String expression, boolean isLambda, String internalLogic) {
return expression != null ? new Guard(expression, isLambda, internalLogic) : null;
}
}

View File

@@ -147,9 +147,11 @@ public class ExportService {
Set<String> startStates = TransitionStateUtils.findStartStates(transitions, initialStatesAst);
Set<String> endStates = TransitionStateUtils.findEndStates(transitions, endStatesAst);
Set<click.kamil.springstatemachineexporter.model.State> allStates = TransitionStateUtils.findAllStates(transitions, initialStatesAst, endStatesAst);
AnalysisResult result = AnalysisResult.builder()
.name(className)
.states(allStates)
.transitions(transitions)
.startStates(startStates)
.endStates(endStates)
@@ -172,11 +174,13 @@ public class ExportService {
List<Transition> transitions = AstTransitionParser.parseTransitions(m, context);
Set<String> startStates = TransitionStateUtils.findStartStates(transitions);
Set<String> endStates = TransitionStateUtils.findEndStates(transitions);
Set<String> startStates = TransitionStateUtils.findStartStates(transitions, null);
Set<String> endStates = TransitionStateUtils.findEndStates(transitions, null);
Set<click.kamil.springstatemachineexporter.model.State> allStates = TransitionStateUtils.findAllStates(transitions, null, null);
AnalysisResult result = AnalysisResult.builder()
.name(uniqueName)
.states(allStates)
.transitions(transitions)
.startStates(startStates)
.endStates(endStates)

View File

@@ -233,7 +233,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -250,7 +251,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -281,7 +283,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -312,7 +315,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -343,7 +347,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -374,7 +379,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -405,7 +411,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -422,7 +429,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -453,7 +461,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -484,7 +493,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -515,7 +525,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -532,7 +543,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -563,7 +575,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -293,7 +293,8 @@
"event" : null,
"guard" : {
"expression" : "(c) -> true",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -317,7 +317,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -348,7 +349,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -365,7 +367,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -396,7 +399,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -427,7 +431,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -458,7 +463,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -489,7 +495,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -520,7 +527,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -537,7 +545,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -568,7 +577,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -599,7 +609,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -630,7 +641,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -647,7 +659,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -678,7 +691,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -723,7 +737,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

@@ -317,7 +317,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -348,7 +349,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -365,7 +367,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -396,7 +399,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -427,7 +431,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -458,7 +463,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -489,7 +495,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -520,7 +527,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -537,7 +545,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -568,7 +577,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -599,7 +609,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -630,7 +641,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -647,7 +659,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -678,7 +691,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -723,7 +737,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -233,7 +233,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -264,7 +265,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -281,7 +283,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -312,7 +315,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -233,7 +233,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -264,7 +265,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -281,7 +283,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -312,7 +315,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -51,7 +51,8 @@
"event" : "OrderEvents.CANCEL",
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : null
@@ -107,7 +108,8 @@
"event" : null,
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -124,7 +126,8 @@
"event" : null,
"guard" : {
"expression" : "guard1",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -141,7 +144,8 @@
"event" : null,
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : 2
@@ -198,10 +202,12 @@
"guard" : null,
"actions" : [ {
"expression" : "new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
}, {
"expression" : "action2",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
} ],
"order" : null
} ],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -27,17 +27,17 @@ state OrderStates.PAID1 <<choice>>
OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.PAID <<external>> <<e_OrderEvents_PAY>> : OrderEvents.PAY
OrderStates.PAID -[#1E90FF,bold]-> OrderStates.FULFILLED <<external>> <<e_OrderEvents_FULFILL>> : OrderEvents.FULFILL
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]
OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL [λ]
OrderStates.PAID -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL
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.PAID2 <<choice_type>> : [λ] (order=0)
OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.PAID3 <<choice_type>> : [guard1] (order=1)
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)
OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.HAPPEN <<choice_type>> : [λ] (order=2)
OrderStates.PAID1 -[#FF6347,bold]-> OrderStates.CANCELED <<choice_type>> : (order=3)
OrderStates.PAID2 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
OrderStates.PAID3 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
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
OrderStates.PAID2 -[#1E90FF,bold]-> OrderStates.PAID2 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD / λ, action2
OrderStates.CANCELED --> [*]
OrderStates.FULFILLED --> [*]

View File

@@ -247,7 +247,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -278,7 +279,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -295,7 +297,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -326,7 +329,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -357,7 +361,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -388,7 +393,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -419,7 +425,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -450,7 +457,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -467,7 +475,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -498,7 +507,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -529,7 +539,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -560,7 +571,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -577,7 +589,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -608,7 +621,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -51,7 +51,8 @@
"event" : "OrderEvents.CANCEL",
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : null
@@ -93,7 +94,8 @@
"event" : null,
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -124,7 +126,8 @@
"event" : null,
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -141,7 +144,8 @@
"event" : null,
"guard" : {
"expression" : "guard1",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -158,7 +162,8 @@
"event" : null,
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
},
"actions" : [ ],
"order" : 2
@@ -215,10 +220,12 @@
"guard" : null,
"actions" : [ {
"expression" : "new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n ;\n }\n}\n",
"isLambda" : true
"isLambda" : true,
"internalLogic" : null
}, {
"expression" : "action2",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
} ],
"order" : null
} ],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -28,18 +28,18 @@ state OrderStates.PAID <<choice>>
OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.PAID <<external>> <<e_OrderEvents_PAY>> : OrderEvents.PAY
OrderStates.PAID -[#1E90FF,bold]-> OrderStates.FULFILLED <<external>> <<e_OrderEvents_FULFILL>> : OrderEvents.FULFILL
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]
OrderStates.SUBMITTED -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL [λ]
OrderStates.PAID -[#1E90FF,bold]-> OrderStates.CANCELED <<external>> <<e_OrderEvents_CANCEL>> : OrderEvents.CANCEL
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.PAID2 <<choice_type>> : [λ] (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)
OrderStates.PAID -[#FF6347,bold]-> OrderStates.PAID1 <<choice_type>> : [λ] (order=0)
OrderStates.PAID -[#FF6347,bold]-> OrderStates.PAID2 <<choice_type>> : [guard1] (order=1)
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)
OrderStates.PAID -[#FF6347,bold]-> OrderStates.HAPPEN <<choice_type>> : [λ] (order=2)
OrderStates.PAID -[#FF6347,bold]-> OrderStates.PAID3 <<choice_type>> : (order=3)
OrderStates.PAID2 -[#1E90FF,bold]-> OrderStates.CANCELED <<external>>
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
OrderStates.PAID1 -[#1E90FF,bold]-> OrderStates.PAID1 <<external>> <<e_OrderEvents_ABCD>> : OrderEvents.ABCD / λ, action2
OrderStates.CANCELED --> [*]
OrderStates.FULFILLED --> [*]

View File

@@ -317,7 +317,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -348,7 +349,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -365,7 +367,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -396,7 +399,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -427,7 +431,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -458,7 +463,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -489,7 +495,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -520,7 +527,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -537,7 +545,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -568,7 +577,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -599,7 +609,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -630,7 +641,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -647,7 +659,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -678,7 +691,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -723,7 +737,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0

View File

@@ -317,7 +317,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -348,7 +349,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -365,7 +367,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -396,7 +399,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -427,7 +431,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -458,7 +463,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -489,7 +495,8 @@
"event" : null,
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -520,7 +527,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -537,7 +545,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -568,7 +577,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -599,7 +609,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -630,7 +641,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0
@@ -647,7 +659,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 1
@@ -678,7 +691,8 @@
"event" : null,
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false
"isLambda" : false,
"internalLogic" : null
},
"actions" : [ ],
"order" : 0