Преглед на файлове

Added testcases for Test_ParallelRegions statechart.
Refactoring of templates.

markus.muehlbrandt@itemis.de преди 13 години
родител
ревизия
c9b235e1bd
променени са 11 файла, в които са добавени 1692 реда и са изтрити 722 реда
  1. 490 282
      examples/org.yakindu.sct.generator.java.trafficlight/src-gen/org/yakindu/sct/runtime/java/trafficlightwaiting/TrafficLightWaitingCycleBasedStatemachine.java
  2. 9 4
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomCycleBasedStatemachine.xpt
  3. 11 0
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/Expression.ext
  4. 2 2
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/TypeModelExtensions.ext
  5. 202 76
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_deephistory/Test_DeepHistoryCycleBasedStatemachine.java
  6. 316 144
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_hierarchy/Test_HierarchyCycleBasedStatemachine.java
  7. 11 3
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_parallelregions/DefaultInterface.java
  8. 41 5
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_parallelregions/DefaultInterfaceImpl.java
  9. 406 129
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_parallelregions/Test_ParallelRegionsCycleBasedStatemachine.java
  10. 202 76
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_shallowhistory/Test_ShallowHistoryCycleBasedStatemachine.java
  11. 2 1
      test-plugins/org.yakindu.sct.generator.java.runtime.test/src/org/yakindu/sct/generator/java/runtime/test/AllCycleBasedStatemachineTests.java

Файловите разлики са ограничени, защото са твърде много
+ 490 - 282
examples/org.yakindu.sct.generator.java.trafficlight/src-gen/org/yakindu/sct/runtime/java/trafficlightwaiting/TrafficLightWaitingCycleBasedStatemachine.java


+ 9 - 4
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/CustomCycleBasedStatemachine.xpt

@@ -26,11 +26,16 @@ Contributors:
 «ENDDEFINE»
 
 «DEFINE ActionCode FOR StateSwitch-»
-	«FOREACH cases AS stateCase ITERATOR iter -»
-	«IF iter.counter1 > 1»else «ENDIF»if (isStateActive(State.«stateCase.state.getName()»)) {
-		«EXPAND ActionCode FOR stateCase.step»
+	«getComment()»
+	switch(stateVector[«stateConfigurationIdx»]) {
+		«FOREACH cases AS stateCase»
+  			case «stateCase.state.getName()» :
+  				«EXPAND ActionCode FOR stateCase.step»
+  				break;
+		«ENDFOREACH»
+  			default:
+    			break;
 	}
-	«ENDFOREACH-»
 «ENDDEFINE»
 
 «DEFINE ActionCode FOR ScheduleTimeEvent-»

+ 11 - 0
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/Expression.ext

@@ -102,6 +102,9 @@ String toCode(NumericalAddSubtractExpression expression) :
 String toCode(NumericalMultiplyDivideExpression expression) :
   	"("+expression.leftOperand.toCode() + getOperator(expression.operator) + expression.rightOperand.toCode()+")";
 
+String toCode(NumericalUnaryExpression expression) :
+    getOperator(expression.operator) + " ( " + expression.operand.toCode() + " ) ";
+
 String toCode(ElementReferenceExpression exp) :
     if (EventDefinition.isInstance(exp.value)) then
     	"occuredEvents.contains("+((EventDefinition)exp.value).getContext().toFirstLower()+"get"+((EventDefinition)exp.value).getName()+"())"
@@ -116,6 +119,14 @@ String getOperator(AdditiveOperator operator) :
     	case AdditiveOperator::minus : " - "
     	default : ""
     };
+    
+String getOperator(UnaryOperator operator) :
+	switch (operator) {
+	  case (UnaryOperator::negative) : " -"
+	  case (UnaryOperator::positive) : " + "
+	  case (UnaryOperator::complement) : " ~ "
+	  default : ""
+	};
 
 String getOperator(MultiplicativeOperator operator) : 
     switch(operator) {

+ 2 - 2
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/TypeModelExtensions.ext

@@ -18,7 +18,7 @@ String getJavaType(Type this) :
 		case "integer" : "int"
 		case "boolean" : "boolean"
 		case "string" : "string"
-		default : ""
+		default : "//"+this
 		};
 		
 String getJavaClassType(Type this) :
@@ -29,7 +29,7 @@ String getJavaClassType(Type this) :
 		case "string" : "String"
 		case "void" : "Void"
 		case null : "Void"
-		default : ""
+		default : "//"+this
 		};
 		
 String getInitialValue(Type this) :

+ 202 - 76
test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_deephistory/Test_DeepHistoryCycleBasedStatemachine.java

@@ -87,21 +87,36 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState3() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
 
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -122,21 +137,36 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState6() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
 
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -144,15 +174,26 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
-				if (isStateActive(State.State6)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+					case State6 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State9)) {
-					stateVector[0] = null;
+						break;
+
+					case State8 :
+						stateVector[0] = null;
+
+						break;
+
+					case State9 :
+						stateVector[0] = null;
+
+						break;
 
+					default :
+						break;
 				}
 
 				nextStateIndex = 0;
@@ -175,21 +216,36 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState8() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
 
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -197,15 +253,26 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
-				if (isStateActive(State.State6)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+					case State6 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State9)) {
-					stateVector[0] = null;
+						break;
 
+					case State8 :
+						stateVector[0] = null;
+
+						break;
+
+					case State9 :
+						stateVector[0] = null;
+
+						break;
+
+					default :
+						break;
 				}
 
 				nextStateIndex = 0;
@@ -213,12 +280,21 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 
 			} else {
 				if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-					if (isStateActive(State.State8)) {
-						stateVector[0] = null;
+					//Handle exit of all possible states on position 0...
+					switch (stateVector[0]) {
 
-					} else if (isStateActive(State.State9)) {
-						stateVector[0] = null;
+						case State8 :
+							stateVector[0] = null;
 
+							break;
+
+						case State9 :
+							stateVector[0] = null;
+
+							break;
+
+						default :
+							break;
 					}
 
 					nextStateIndex = 0;
@@ -242,21 +318,36 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState9() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
 
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -264,15 +355,26 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
-				if (isStateActive(State.State6)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+					case State6 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State9)) {
-					stateVector[0] = null;
+						break;
+
+					case State8 :
+						stateVector[0] = null;
+
+						break;
+
+					case State9 :
+						stateVector[0] = null;
 
+						break;
+
+					default :
+						break;
 				}
 
 				nextStateIndex = 0;
@@ -280,12 +382,21 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 
 			} else {
 				if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-					if (isStateActive(State.State8)) {
-						stateVector[0] = null;
+					//Handle exit of all possible states on position 0...
+					switch (stateVector[0]) {
 
-					} else if (isStateActive(State.State9)) {
-						stateVector[0] = null;
+						case State8 :
+							stateVector[0] = null;
+
+							break;
 
+						case State9 :
+							stateVector[0] = null;
+
+							break;
+
+						default :
+							break;
 					}
 
 					nextStateIndex = 0;
@@ -309,21 +420,36 @@ public class Test_DeepHistoryCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState5() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
 
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;

+ 316 - 144
test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_hierarchy/Test_HierarchyCycleBasedStatemachine.java

@@ -82,17 +82,29 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState9() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent1())) {
-			if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-				defaultInterface.setVarS1(defaultInterface.getVarS1() - (1));
+				case State9 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State10)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS1(defaultInterface.getVarS1() - (1));
 
-				defaultInterface.setVarS1(defaultInterface.getVarS1() - (1));
+					break;
+
+				case State10 :
+					stateVector[0] = null;
+
+					defaultInterface
+							.setVarS1(defaultInterface.getVarS1() - (1));
+
+					break;
 
+				default :
+					break;
 			}
+
 			defaultInterface.setVarS1(defaultInterface.getVarS1() - (1));
 
 			defaultInterface.setVarS2(1);
@@ -119,17 +131,29 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState10() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent1())) {
-			if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-				defaultInterface.setVarS1(defaultInterface.getVarS1() - (1));
+				case State9 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State10)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS1(defaultInterface.getVarS1() - (1));
 
-				defaultInterface.setVarS1(defaultInterface.getVarS1() - (1));
+					break;
+
+				case State10 :
+					stateVector[0] = null;
+
+					defaultInterface
+							.setVarS1(defaultInterface.getVarS1() - (1));
 
+					break;
+
+				default :
+					break;
 			}
+
 			defaultInterface.setVarS1(defaultInterface.getVarS1() - (1));
 
 			defaultInterface.setVarS2(1);
@@ -158,37 +182,60 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState3() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State5 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State7)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State7 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					break;
 
+				default :
+					break;
 			}
+
 			defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 			defaultInterface.setVarS1(1);
@@ -258,37 +305,60 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState5() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State5 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State7)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State7 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
+				case State8 :
+					stateVector[0] = null;
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					break;
+
+				default :
+					break;
 			}
+
 			defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 			defaultInterface.setVarS1(1);
@@ -300,31 +370,43 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent7())) {
-				if (isStateActive(State.State5)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+					case State5 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State7)) {
-					stateVector[0] = null;
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						break;
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+					case State7 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						break;
 
+					case State8 :
+						stateVector[0] = null;
+
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
+
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
+
+						break;
+
+					default :
+						break;
 				}
+
 				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 				defaultInterface.setVarS2(defaultInterface.getVarS2() + (1));
@@ -404,37 +486,60 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState7() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State5 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State7)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State7 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
+
+				case State8 :
+					stateVector[0] = null;
 
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					break;
+
+				default :
+					break;
 			}
+
 			defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 			defaultInterface.setVarS1(1);
@@ -446,31 +551,43 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent7())) {
-				if (isStateActive(State.State5)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+					case State5 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State7)) {
-					stateVector[0] = null;
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						break;
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+					case State7 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						break;
 
+					case State8 :
+						stateVector[0] = null;
+
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
+
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
+
+						break;
+
+					default :
+						break;
 				}
+
 				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 				defaultInterface.setVarS2(defaultInterface.getVarS2() + (1));
@@ -480,19 +597,29 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 
 			} else {
 				if (occuredEvents.contains(defaultInterface.getEventEvent8())) {
-					if (isStateActive(State.State7)) {
-						stateVector[0] = null;
+					//Handle exit of all possible states on position 0...
+					switch (stateVector[0]) {
 
-						defaultInterface
-								.setVarS2(defaultInterface.getVarS2() - (1));
+						case State7 :
+							stateVector[0] = null;
 
-					} else if (isStateActive(State.State8)) {
-						stateVector[0] = null;
+							defaultInterface.setVarS2(defaultInterface
+									.getVarS2() - (1));
 
-						defaultInterface
-								.setVarS2(defaultInterface.getVarS2() - (1));
+							break;
+
+						case State8 :
+							stateVector[0] = null;
 
+							defaultInterface.setVarS2(defaultInterface
+									.getVarS2() - (1));
+
+							break;
+
+						default :
+							break;
 					}
+
 					defaultInterface
 							.setVarS2(defaultInterface.getVarS2() - (1));
 
@@ -526,37 +653,60 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 	}
 	private void reactState8() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State5 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State7)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+				case State7 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
-				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
 
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					defaultInterface
+							.setVarS2(defaultInterface.getVarS2() - (1));
+
+					break;
+
+				default :
+					break;
 			}
+
 			defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 			defaultInterface.setVarS1(1);
@@ -568,31 +718,43 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent7())) {
-				if (isStateActive(State.State5)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+					case State5 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State7)) {
-					stateVector[0] = null;
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						break;
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+					case State7 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
-					defaultInterface
-							.setVarS2(defaultInterface.getVarS2() - (1));
+						break;
+
+					case State8 :
+						stateVector[0] = null;
+
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
+
+						defaultInterface
+								.setVarS2(defaultInterface.getVarS2() - (1));
 
+						break;
+
+					default :
+						break;
 				}
+
 				defaultInterface.setVarS2(defaultInterface.getVarS2() - (1));
 
 				defaultInterface.setVarS2(defaultInterface.getVarS2() + (1));
@@ -602,19 +764,29 @@ public class Test_HierarchyCycleBasedStatemachine implements IStatemachine {
 
 			} else {
 				if (occuredEvents.contains(defaultInterface.getEventEvent8())) {
-					if (isStateActive(State.State7)) {
-						stateVector[0] = null;
+					//Handle exit of all possible states on position 0...
+					switch (stateVector[0]) {
 
-						defaultInterface
-								.setVarS2(defaultInterface.getVarS2() - (1));
+						case State7 :
+							stateVector[0] = null;
 
-					} else if (isStateActive(State.State8)) {
-						stateVector[0] = null;
+							defaultInterface.setVarS2(defaultInterface
+									.getVarS2() - (1));
 
-						defaultInterface
-								.setVarS2(defaultInterface.getVarS2() - (1));
+							break;
+
+						case State8 :
+							stateVector[0] = null;
 
+							defaultInterface.setVarS2(defaultInterface
+									.getVarS2() - (1));
+
+							break;
+
+						default :
+							break;
 					}
+
 					defaultInterface
 							.setVarS2(defaultInterface.getVarS2() - (1));
 

+ 11 - 3
test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_parallelregions/DefaultInterface.java

@@ -13,7 +13,7 @@ package org.yakindu.sct.runtime.java.test_parallelregions;
 public interface DefaultInterface {
 
 	public enum Events {
-		Event1, Event2, Event3, Event4, Event5, Event6,
+		Event1, Event2, Event3, Event4, Event5, Event6, Event7, Event8, Event9, Event10,
 	}
 
 	public void raiseEvent1();
@@ -28,6 +28,14 @@ public interface DefaultInterface {
 
 	public void raiseEvent6();
 
-	public boolean getVarBla();
-	public void setVarBla(boolean value);
+	public void raiseEvent7();
+
+	public void raiseEvent8();
+
+	public void raiseEvent9();
+
+	public void raiseEvent10();
+
+	public int getVarReg3();
+	public void setVarReg3(int value);
 }

+ 41 - 5
test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_parallelregions/DefaultInterfaceImpl.java

@@ -20,6 +20,10 @@ public class DefaultInterfaceImpl implements DefaultInterface {
 	private final Event<Events> EventEvent4 = new Event<Events>(Events.Event4);
 	private final Event<Events> EventEvent5 = new Event<Events>(Events.Event5);
 	private final Event<Events> EventEvent6 = new Event<Events>(Events.Event6);
+	private final Event<Events> EventEvent7 = new Event<Events>(Events.Event7);
+	private final Event<Events> EventEvent8 = new Event<Events>(Events.Event8);
+	private final Event<Events> EventEvent9 = new Event<Events>(Events.Event9);
+	private final Event<Events> EventEvent10 = new Event<Events>(Events.Event10);
 
 	private Test_ParallelRegionsCycleBasedStatemachine statemachine;
 
@@ -76,13 +80,45 @@ public class DefaultInterfaceImpl implements DefaultInterface {
 		return EventEvent6;
 	}
 
-	private boolean varBla;
+	public void raiseEvent7() {
+		statemachine.getOccuredEvents().add(EventEvent7);
+	}
+
+	public Event<Events> getEventEvent7() {
+		return EventEvent7;
+	}
+
+	public void raiseEvent8() {
+		statemachine.getOccuredEvents().add(EventEvent8);
+	}
+
+	public Event<Events> getEventEvent8() {
+		return EventEvent8;
+	}
+
+	public void raiseEvent9() {
+		statemachine.getOccuredEvents().add(EventEvent9);
+	}
+
+	public Event<Events> getEventEvent9() {
+		return EventEvent9;
+	}
+
+	public void raiseEvent10() {
+		statemachine.getOccuredEvents().add(EventEvent10);
+	}
+
+	public Event<Events> getEventEvent10() {
+		return EventEvent10;
+	}
+
+	private int varReg3 = -(1);
 
-	public boolean getVarBla() {
-		return varBla;
+	public int getVarReg3() {
+		return varReg3;
 	}
 
-	public void setVarBla(boolean value) {
-		varBla = value;
+	public void setVarReg3(int value) {
+		varReg3 = value;
 	}
 }

+ 406 - 129
test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_parallelregions/Test_ParallelRegionsCycleBasedStatemachine.java

@@ -71,208 +71,485 @@ public class Test_ParallelRegionsCycleBasedStatemachine
 	}
 
 	public void enter() {
+		nextStateIndex = 0;
+		stateVector[0] = State.State1;
 
-		enterSequenceState1();
 	}
 
-	private boolean conditionState1Tr0() {
-		return occuredEvents.contains(defaultInterface.getEventEvent1());
-	}
-	private boolean conditionState3Tr0() {
-		return occuredEvents.contains(defaultInterface.getEventEvent2());
-	}
-	private boolean conditionState5Tr0() {
-		return occuredEvents.contains(defaultInterface.getEventEvent3());
-	}
-	private boolean conditionState6Tr0() {
-		return occuredEvents.contains(defaultInterface.getEventEvent4());
-	}
-	private boolean conditionState7Tr0() {
-		return (occuredEvents.contains(defaultInterface.getEventEvent5()) || occuredEvents
-				.contains(defaultInterface.getEventEvent3()));
+	private void reactState1() {
+		if (occuredEvents.contains(defaultInterface.getEventEvent1())) {
+			stateVector[0] = null;
+
+			nextStateIndex = 0;
+			stateVector[0] = State.State3;
+
+			defaultInterface.setVarReg3(7);
+
+			nextStateIndex = 2;
+			stateVector[2] = State.State7;
+
+		}
 	}
-	private boolean conditionState8Tr0() {
-		return occuredEvents.contains(defaultInterface.getEventEvent6());
+	private void reactState2() {
 	}
-	private void actionsState1Tr0() {
+	private void reactState3() {
+		if (occuredEvents.contains(defaultInterface.getEventEvent10())) {
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-		exitSequenceState1();
+				case State3 :
+					stateVector[0] = null;
 
-		enterSequenceState2();
+					break;
 
-	}
-	private void actionsState3Tr0() {
+				case State5 :
+					stateVector[0] = null;
 
-		exitSequenceState3();
+					break;
 
-		enterSequenceState4();
+				case State6 :
+					stateVector[0] = null;
 
-	}
-	private void actionsState5Tr0() {
+					break;
 
-		exitSequenceState5();
+				default :
+					break;
+			}
 
-		enterSequenceState6();
+			//Handle exit of all possible states on position 1...
+			switch (stateVector[1]) {
 
-	}
-	private void actionsState6Tr0() {
+				case State9 :
+					stateVector[1] = null;
 
-		exitSequenceState6();
+					break;
 
-		enterSequenceState5();
+				default :
+					break;
+			}
 
-	}
-	private void actionsState7Tr0() {
+			//Handle exit of all possible states on position 2...
+			switch (stateVector[2]) {
 
-		exitSequenceState7();
+				case State7 :
+					stateVector[2] = null;
 
-		enterSequenceState8();
+					defaultInterface.setVarReg3(-(1));
 
-	}
-	private void actionsState8Tr0() {
+					break;
 
-		exitSequenceState8();
+				case State8 :
+					stateVector[2] = null;
 
-		enterSequenceState7();
+					defaultInterface.setVarReg3(-(1));
 
-	}
-	private void entryActionState2() {
-		defaultInterface.setVarBla(true);
+					break;
 
-	}
+				default :
+					break;
+			}
 
-	private void enterSequenceState1() {
-		nextStateIndex = 0;
-		stateVector[0] = State.State1;
+			nextStateIndex = 0;
+			stateVector[0] = State.State1;
 
-	}
+		} else {
+			if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
+				stateVector[0] = null;
 
-	private void enterSequenceState2() {
+				nextStateIndex = 0;
+				stateVector[0] = State.State5;
 
-		entryActionState2();
+				nextStateIndex = 1;
+				stateVector[1] = State.State9;
 
-		enterSequenceState3();
+			} else {
+				if ((occuredEvents.contains(defaultInterface.getEventEvent3()) || occuredEvents
+						.contains(defaultInterface.getEventEvent9()))) {
+					stateVector[0] = null;
 
-		enterSequenceState7();
-	}
+					nextStateIndex = 0;
+					stateVector[0] = State.State1;
 
-	private void enterSequenceState3() {
-		nextStateIndex = 0;
-		stateVector[0] = State.State3;
+				}
+			}
 
+		}
+	}
+	private void reactState4() {
 	}
+	private void reactState5() {
+		if (occuredEvents.contains(defaultInterface.getEventEvent10())) {
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-	private void enterSequenceState4() {
+				case State3 :
+					stateVector[0] = null;
 
-		enterSequenceState5();
+					break;
 
-		enterSequenceState9();
-	}
+				case State5 :
+					stateVector[0] = null;
 
-	private void enterSequenceState5() {
-		nextStateIndex = 0;
-		stateVector[0] = State.State5;
+					break;
 
-	}
+				case State6 :
+					stateVector[0] = null;
 
-	private void enterSequenceState6() {
-		nextStateIndex = 0;
-		stateVector[0] = State.State6;
+					break;
 
-	}
+				default :
+					break;
+			}
 
-	private void enterSequenceState9() {
-		nextStateIndex = 1;
-		stateVector[1] = State.State9;
+			//Handle exit of all possible states on position 1...
+			switch (stateVector[1]) {
 
-	}
+				case State9 :
+					stateVector[1] = null;
 
-	private void enterSequenceState7() {
-		nextStateIndex = 2;
-		stateVector[2] = State.State7;
+					break;
 
-	}
+				default :
+					break;
+			}
 
-	private void enterSequenceState8() {
-		nextStateIndex = 2;
-		stateVector[2] = State.State8;
+			//Handle exit of all possible states on position 2...
+			switch (stateVector[2]) {
 
-	}
-	private void exitSequenceState1() {
-		stateVector[0] = null;
+				case State7 :
+					stateVector[2] = null;
 
-	}
-	private void exitSequenceState3() {
-		stateVector[0] = null;
+					defaultInterface.setVarReg3(-(1));
 
-	}
-	private void exitSequenceState5() {
-		stateVector[0] = null;
+					break;
 
-	}
-	private void exitSequenceState6() {
-		stateVector[0] = null;
+				case State8 :
+					stateVector[2] = null;
 
-	}
-	private void exitSequenceState9() {
-		stateVector[1] = null;
+					defaultInterface.setVarReg3(-(1));
 
-	}
-	private void exitSequenceState7() {
-		stateVector[2] = null;
+					break;
 
-	}
-	private void exitSequenceState8() {
-		stateVector[2] = null;
+				default :
+					break;
+			}
 
-	}
-	private void reactState1() {
-		if (conditionState1Tr0()) {
+			nextStateIndex = 0;
+			stateVector[0] = State.State1;
 
-			actionsState1Tr0();
-		}
-	}
-	private void reactState2() {
-	}
-	private void reactState3() {
-		if (conditionState3Tr0()) {
+		} else {
+			if (occuredEvents.contains(defaultInterface.getEventEvent3())) {
+				stateVector[0] = null;
 
-			actionsState3Tr0();
-		}
+				nextStateIndex = 0;
+				stateVector[0] = State.State6;
 
-	}
-	private void reactState4() {
-	}
-	private void reactState5() {
-		if (conditionState5Tr0()) {
+			}
 
-			actionsState5Tr0();
 		}
-
 	}
 	private void reactState6() {
-		if (conditionState6Tr0()) {
+		if (occuredEvents.contains(defaultInterface.getEventEvent10())) {
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			actionsState6Tr0();
-		}
+				case State3 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				case State6 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 1...
+			switch (stateVector[1]) {
+
+				case State9 :
+					stateVector[1] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 2...
+			switch (stateVector[2]) {
+
+				case State7 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				case State8 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				default :
+					break;
+			}
+
+			nextStateIndex = 0;
+			stateVector[0] = State.State1;
+
+		} else {
+			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
+				stateVector[0] = null;
+
+				nextStateIndex = 0;
+				stateVector[0] = State.State5;
+
+			}
 
+		}
 	}
 	private void reactState9() {
+		if (occuredEvents.contains(defaultInterface.getEventEvent10())) {
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
+
+				case State3 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				case State6 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 1...
+			switch (stateVector[1]) {
+
+				case State9 :
+					stateVector[1] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 2...
+			switch (stateVector[2]) {
+
+				case State7 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				case State8 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				default :
+					break;
+			}
+
+			nextStateIndex = 0;
+			stateVector[0] = State.State1;
 
+		} else {
+			if (occuredEvents.contains(defaultInterface.getEventEvent8())) {
+				stateVector[1] = null;
+
+				nextStateIndex = 0;
+				stateVector[0] = State.State1;
+
+			}
+
+		}
 	}
 	private void reactState7() {
-		if (conditionState7Tr0()) {
+		if (occuredEvents.contains(defaultInterface.getEventEvent10())) {
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			actionsState7Tr0();
-		}
+				case State3 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				case State6 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 1...
+			switch (stateVector[1]) {
+
+				case State9 :
+					stateVector[1] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 2...
+			switch (stateVector[2]) {
+
+				case State7 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				case State8 :
+					stateVector[2] = null;
 
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				default :
+					break;
+			}
+
+			nextStateIndex = 0;
+			stateVector[0] = State.State1;
+
+		} else {
+			if ((occuredEvents.contains(defaultInterface.getEventEvent5()) || occuredEvents
+					.contains(defaultInterface.getEventEvent3()))) {
+				stateVector[2] = null;
+
+				defaultInterface.setVarReg3(-(1));
+
+				defaultInterface.setVarReg3(8);
+
+				nextStateIndex = 2;
+				stateVector[2] = State.State8;
+
+			} else {
+				if (occuredEvents.contains(defaultInterface.getEventEvent7())) {
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					nextStateIndex = 0;
+					stateVector[0] = State.State1;
+
+				}
+			}
+
+		}
 	}
 	private void reactState8() {
-		if (conditionState8Tr0()) {
+		if (occuredEvents.contains(defaultInterface.getEventEvent10())) {
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			actionsState8Tr0();
-		}
+				case State3 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				case State6 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 1...
+			switch (stateVector[1]) {
+
+				case State9 :
+					stateVector[1] = null;
+
+					break;
+
+				default :
+					break;
+			}
+
+			//Handle exit of all possible states on position 2...
+			switch (stateVector[2]) {
+
+				case State7 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
+
+					break;
+
+				case State8 :
+					stateVector[2] = null;
+
+					defaultInterface.setVarReg3(-(1));
 
+					break;
+
+				default :
+					break;
+			}
+
+			nextStateIndex = 0;
+			stateVector[0] = State.State1;
+
+		} else {
+			if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
+				stateVector[2] = null;
+
+				defaultInterface.setVarReg3(-(1));
+
+				defaultInterface.setVarReg3(7);
+
+				nextStateIndex = 2;
+				stateVector[2] = State.State7;
+
+			}
+
+		}
 	}
 	public void runCycle() {
 		outEvents.clear();

+ 202 - 76
test-plugins/org.yakindu.sct.generator.java.runtime.test/src-gen/org/yakindu/sct/runtime/java/test_shallowhistory/Test_ShallowHistoryCycleBasedStatemachine.java

@@ -87,21 +87,36 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 	}
 	private void reactState3() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
 
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -122,21 +137,36 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 	}
 	private void reactState6() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
 
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -144,15 +174,26 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
-				if (isStateActive(State.State6)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+					case State6 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State9)) {
-					stateVector[0] = null;
+						break;
+
+					case State8 :
+						stateVector[0] = null;
+
+						break;
+
+					case State9 :
+						stateVector[0] = null;
+
+						break;
 
+					default :
+						break;
 				}
 
 				nextStateIndex = 0;
@@ -175,21 +216,36 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 	}
 	private void reactState8() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
 
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -197,15 +253,26 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
-				if (isStateActive(State.State6)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+					case State6 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State9)) {
-					stateVector[0] = null;
+						break;
 
+					case State8 :
+						stateVector[0] = null;
+
+						break;
+
+					case State9 :
+						stateVector[0] = null;
+
+						break;
+
+					default :
+						break;
 				}
 
 				nextStateIndex = 0;
@@ -213,12 +280,21 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 
 			} else {
 				if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-					if (isStateActive(State.State8)) {
-						stateVector[0] = null;
+					//Handle exit of all possible states on position 0...
+					switch (stateVector[0]) {
 
-					} else if (isStateActive(State.State9)) {
-						stateVector[0] = null;
+						case State8 :
+							stateVector[0] = null;
 
+							break;
+
+						case State9 :
+							stateVector[0] = null;
+
+							break;
+
+						default :
+							break;
 					}
 
 					nextStateIndex = 0;
@@ -242,21 +318,36 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 	}
 	private void reactState9() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
 
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
+
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;
@@ -264,15 +355,26 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 
 		} else {
 			if (occuredEvents.contains(defaultInterface.getEventEvent4())) {
-				if (isStateActive(State.State6)) {
-					stateVector[0] = null;
+				//Handle exit of all possible states on position 0...
+				switch (stateVector[0]) {
 
-				} else if (isStateActive(State.State8)) {
-					stateVector[0] = null;
+					case State6 :
+						stateVector[0] = null;
 
-				} else if (isStateActive(State.State9)) {
-					stateVector[0] = null;
+						break;
+
+					case State8 :
+						stateVector[0] = null;
+
+						break;
+
+					case State9 :
+						stateVector[0] = null;
 
+						break;
+
+					default :
+						break;
 				}
 
 				nextStateIndex = 0;
@@ -280,12 +382,21 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 
 			} else {
 				if (occuredEvents.contains(defaultInterface.getEventEvent6())) {
-					if (isStateActive(State.State8)) {
-						stateVector[0] = null;
+					//Handle exit of all possible states on position 0...
+					switch (stateVector[0]) {
 
-					} else if (isStateActive(State.State9)) {
-						stateVector[0] = null;
+						case State8 :
+							stateVector[0] = null;
+
+							break;
 
+						case State9 :
+							stateVector[0] = null;
+
+							break;
+
+						default :
+							break;
 					}
 
 					nextStateIndex = 0;
@@ -309,21 +420,36 @@ public class Test_ShallowHistoryCycleBasedStatemachine implements IStatemachine
 	}
 	private void reactState5() {
 		if (occuredEvents.contains(defaultInterface.getEventEvent2())) {
-			if (isStateActive(State.State3)) {
-				stateVector[0] = null;
+			//Handle exit of all possible states on position 0...
+			switch (stateVector[0]) {
 
-			} else if (isStateActive(State.State6)) {
-				stateVector[0] = null;
+				case State3 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State8)) {
-				stateVector[0] = null;
+					break;
 
-			} else if (isStateActive(State.State9)) {
-				stateVector[0] = null;
+				case State6 :
+					stateVector[0] = null;
 
-			} else if (isStateActive(State.State5)) {
-				stateVector[0] = null;
+					break;
+
+				case State8 :
+					stateVector[0] = null;
+
+					break;
+
+				case State9 :
+					stateVector[0] = null;
+
+					break;
+
+				case State5 :
+					stateVector[0] = null;
+
+					break;
 
+				default :
+					break;
 			}
 
 			nextStateIndex = 0;

+ 2 - 1
test-plugins/org.yakindu.sct.generator.java.runtime.test/src/org/yakindu/sct/generator/java/runtime/test/AllCycleBasedStatemachineTests.java

@@ -18,7 +18,8 @@ import org.junit.runners.Suite;
 		TestInterfaceTestCycleBasedStatemachine.class,
 		TestLocalActionsCycleBasedStatemachine.class,
 		TestExpressionCycleBasedStatemachine.class,
-		TestHierarchyCycleBasedStatemachine.class
+		TestHierarchyCycleBasedStatemachine.class,
+		TestParallelRegionsCycleBasedStatemachine.class
 		})
 
 public class AllCycleBasedStatemachineTests {