Prechádzať zdrojové kódy

Added trace and highlighting support for composite states and choice pseudo states.
YAKHMI-409 YAKHMI-410 YAKHMI-411 YAKHMI-414

terfloth@itemis.de 14 rokov pred
rodič
commit
f46eb896b5
49 zmenil súbory, kde vykonal 1908 pridanie a 36 odobranie
  1. 8 8
      plugins/org.yakindu.sct.model.sexec.edit/.settings/org.eclipse.jdt.core.prefs
  2. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_TraceNodeExecuted.gif
  3. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_TraceStateEntered.gif
  4. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_TraceStateExited.gif
  5. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_TraceNodeExecuted.gif
  6. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_TraceStateEntered.gif
  7. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_TraceStateExited.gif
  8. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_TraceNodeExecuted.gif
  9. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_TraceStateEntered.gif
  10. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_TraceStateExited.gif
  11. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_TraceNodeExecuted.gif
  12. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_TraceStateEntered.gif
  13. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_TraceStateExited.gif
  14. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_TraceNodeExecuted.gif
  15. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_TraceStateEntered.gif
  16. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_TraceStateExited.gif
  17. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/TraceNodeExecuted.gif
  18. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/TraceStateEntered.gif
  19. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/TraceStateExited.gif
  20. 6 0
      plugins/org.yakindu.sct.model.sexec.edit/plugin.properties
  21. 30 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ExecutionStateItemProvider.java
  22. 15 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ReactionItemProvider.java
  23. 15 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/SequenceItemProvider.java
  24. 72 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/SexecItemProviderAdapterFactory.java
  25. 15 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/StateCaseItemProvider.java
  26. 139 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceNodeExecutedItemProvider.java
  27. 139 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceStateEnteredItemProvider.java
  28. 139 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceStateExitedItemProvider.java
  29. 12 1
      plugins/org.yakindu.sct.model.sexec.interpreter/src/org/yakindu/sct/model/sexec/interpreter/impl/AbstractExecutionFlowInterpreter.java
  30. 22 4
      plugins/org.yakindu.sct.model.sexec.interpreter/src/org/yakindu/sct/model/sexec/interpreter/impl/ExecutionFlowInterpreter.xtend
  31. 9 0
      plugins/org.yakindu.sct.model.sexec/model/sexec.ecore
  32. 8 0
      plugins/org.yakindu.sct.model.sexec/model/sexec_trace.ecore
  33. 27 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecFactory.java
  34. 284 1
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecPackage.java
  35. 53 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/TraceNodeExecuted.java
  36. 53 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/TraceStateEntered.java
  37. 53 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/TraceStateExited.java
  38. 34 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/SexecFactoryImpl.java
  39. 99 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/SexecPackageImpl.java
  40. 160 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceNodeExecutedImpl.java
  41. 158 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceStateEnteredImpl.java
  42. 158 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceStateExitedImpl.java
  43. 46 18
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/ModelSequencer.xtend
  44. 55 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/util/SexecAdapterFactory.java
  45. 73 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/util/SexecSwitch.java
  46. 4 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTDebugTarget.java
  47. 2 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/runtime/IExecutionFacadeListener.java
  48. 4 4
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/runtime/impl/ExecutionContextImpl.java
  49. 16 0
      plugins/org.yakindu.sct.simulation.ui/src/org/yakindu/sct/simulation/ui/model/presenter/SCTSourceDisplay.java

+ 8 - 8
plugins/org.yakindu.sct.model.sexec.edit/.settings/org.eclipse.jdt.core.prefs

@@ -1,8 +1,8 @@
-#Mon Nov 14 17:49:49 CET 2011
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#Fri Dec 16 01:18:57 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_TraceNodeExecuted.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_TraceStateEntered.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_TraceStateExited.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_TraceNodeExecuted.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_TraceStateEntered.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_TraceStateExited.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_TraceNodeExecuted.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_TraceStateEntered.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_TraceStateExited.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_TraceNodeExecuted.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_TraceStateEntered.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_TraceStateExited.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_TraceNodeExecuted.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_TraceStateEntered.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_TraceStateExited.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/TraceNodeExecuted.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/TraceStateEntered.gif


BIN
plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/TraceStateExited.gif


+ 6 - 0
plugins/org.yakindu.sct.model.sexec.edit/plugin.properties

@@ -92,3 +92,9 @@ _UI_ExecutionNode_simpleName_feature = Simple Name
 _UI_ExecutionNode_reactSequence_feature = React Sequence
 _UI_Step_caller_feature = Caller
 _UI_Check_refs_feature = Refs
+_UI_TraceStateEntered_type = Trace State Entered
+_UI_TraceStateExited_type = Trace State Exited
+_UI_TraceStateEntered_state_feature = State
+_UI_TraceStateExited_state_feature = State
+_UI_TraceNodeExecuted_type = Trace Node Executed
+_UI_TraceNodeExecuted_node_feature = Node

+ 30 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ExecutionStateItemProvider.java

@@ -239,11 +239,26 @@ public class ExecutionStateItemProvider
 				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
+				 SexecFactory.eINSTANCE.createTraceNodeExecuted()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
 				 SexecFactory.eINSTANCE.createReactionFired()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
+				 SexecFactory.eINSTANCE.createTraceStateEntered()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
+				 SexecFactory.eINSTANCE.createTraceStateExited()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
@@ -299,11 +314,26 @@ public class ExecutionStateItemProvider
 				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
+				 SexecFactory.eINSTANCE.createTraceNodeExecuted()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
 				 SexecFactory.eINSTANCE.createReactionFired()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
+				 SexecFactory.eINSTANCE.createTraceStateEntered()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
+				 SexecFactory.eINSTANCE.createTraceStateExited()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.EXECUTION_STATE__ENTER_SEQUENCE,

+ 15 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ReactionItemProvider.java

@@ -266,10 +266,25 @@ public class ReactionItemProvider
 				(SexecPackage.Literals.REACTION__EFFECT,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.REACTION__EFFECT,
+				 SexecFactory.eINSTANCE.createTraceNodeExecuted()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.REACTION__EFFECT,
 				 SexecFactory.eINSTANCE.createReactionFired()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.REACTION__EFFECT,
+				 SexecFactory.eINSTANCE.createTraceStateEntered()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.REACTION__EFFECT,
+				 SexecFactory.eINSTANCE.createTraceStateExited()));
 	}
 
 	/**

+ 15 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/SequenceItemProvider.java

@@ -203,10 +203,25 @@ public class SequenceItemProvider
 				(SexecPackage.Literals.SEQUENCE__STEPS,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.SEQUENCE__STEPS,
+				 SexecFactory.eINSTANCE.createTraceNodeExecuted()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.SEQUENCE__STEPS,
 				 SexecFactory.eINSTANCE.createReactionFired()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.SEQUENCE__STEPS,
+				 SexecFactory.eINSTANCE.createTraceStateEntered()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.SEQUENCE__STEPS,
+				 SexecFactory.eINSTANCE.createTraceStateExited()));
 	}
 
 }

+ 72 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/SexecItemProviderAdapterFactory.java

@@ -487,6 +487,29 @@ public class SexecItemProviderAdapterFactory extends SexecAdapterFactory impleme
 		return stateCaseItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.TraceNodeExecuted} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceNodeExecutedItemProvider traceNodeExecutedItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sexec.TraceNodeExecuted}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTraceNodeExecutedAdapter() {
+		if (traceNodeExecutedItemProvider == null) {
+			traceNodeExecutedItemProvider = new TraceNodeExecutedItemProvider(this);
+		}
+
+		return traceNodeExecutedItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.ReactionFired} instances.
 	 * <!-- begin-user-doc -->
@@ -510,6 +533,52 @@ public class SexecItemProviderAdapterFactory extends SexecAdapterFactory impleme
 		return reactionFiredItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.TraceStateEntered} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceStateEnteredItemProvider traceStateEnteredItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sexec.TraceStateEntered}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTraceStateEnteredAdapter() {
+		if (traceStateEnteredItemProvider == null) {
+			traceStateEnteredItemProvider = new TraceStateEnteredItemProvider(this);
+		}
+
+		return traceStateEnteredItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.TraceStateExited} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceStateExitedItemProvider traceStateExitedItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sexec.TraceStateExited}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTraceStateExitedAdapter() {
+		if (traceStateExitedItemProvider == null) {
+			traceStateExitedItemProvider = new TraceStateExitedItemProvider(this);
+		}
+
+		return traceStateExitedItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.CheckRef} instances.
 	 * <!-- begin-user-doc -->
@@ -699,7 +768,10 @@ public class SexecItemProviderAdapterFactory extends SexecAdapterFactory impleme
 		if (unscheduleTimeEventItemProvider != null) unscheduleTimeEventItemProvider.dispose();
 		if (stateSwitchItemProvider != null) stateSwitchItemProvider.dispose();
 		if (stateCaseItemProvider != null) stateCaseItemProvider.dispose();
+		if (traceNodeExecutedItemProvider != null) traceNodeExecutedItemProvider.dispose();
 		if (reactionFiredItemProvider != null) reactionFiredItemProvider.dispose();
+		if (traceStateEnteredItemProvider != null) traceStateEnteredItemProvider.dispose();
+		if (traceStateExitedItemProvider != null) traceStateExitedItemProvider.dispose();
 	}
 
 }

+ 15 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/StateCaseItemProvider.java

@@ -230,10 +230,25 @@ public class StateCaseItemProvider
 				(SexecPackage.Literals.STATE_CASE__STEP,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.STATE_CASE__STEP,
+				 SexecFactory.eINSTANCE.createTraceNodeExecuted()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.STATE_CASE__STEP,
 				 SexecFactory.eINSTANCE.createReactionFired()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.STATE_CASE__STEP,
+				 SexecFactory.eINSTANCE.createTraceStateEntered()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.STATE_CASE__STEP,
+				 SexecFactory.eINSTANCE.createTraceStateExited()));
 	}
 
 	/**

+ 139 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceNodeExecutedItemProvider.java

@@ -0,0 +1,139 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.TraceNodeExecuted;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sexec.TraceNodeExecuted} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TraceNodeExecutedItemProvider
+	extends TraceItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceNodeExecutedItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNodePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Node feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TraceNodeExecuted_node_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_TraceNodeExecuted_node_feature", "_UI_TraceNodeExecuted_type"),
+				 SexecPackage.Literals.TRACE_NODE_EXECUTED__NODE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns TraceNodeExecuted.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TraceNodeExecuted"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TraceNodeExecuted)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TraceNodeExecuted_type") :
+			getString("_UI_TraceNodeExecuted_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 139 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceStateEnteredItemProvider.java

@@ -0,0 +1,139 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.TraceStateEntered;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sexec.TraceStateEntered} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TraceStateEnteredItemProvider
+	extends TraceItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceStateEnteredItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addStatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the State feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addStatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TraceStateEntered_state_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_TraceStateEntered_state_feature", "_UI_TraceStateEntered_type"),
+				 SexecPackage.Literals.TRACE_STATE_ENTERED__STATE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns TraceStateEntered.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TraceStateEntered"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TraceStateEntered)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TraceStateEntered_type") :
+			getString("_UI_TraceStateEntered_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 139 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceStateExitedItemProvider.java

@@ -0,0 +1,139 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.TraceStateExited;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sexec.TraceStateExited} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TraceStateExitedItemProvider
+	extends TraceItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceStateExitedItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addStatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the State feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addStatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TraceStateExited_state_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_TraceStateExited_state_feature", "_UI_TraceStateExited_type"),
+				 SexecPackage.Literals.TRACE_STATE_EXITED__STATE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns TraceStateExited.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TraceStateExited"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TraceStateExited)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TraceStateExited_type") :
+			getString("_UI_TraceStateExited_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 12 - 1
plugins/org.yakindu.sct.model.sexec.interpreter/src/org/yakindu/sct/model/sexec/interpreter/impl/AbstractExecutionFlowInterpreter.java

@@ -13,6 +13,7 @@ package org.yakindu.sct.model.sexec.interpreter.impl;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.yakindu.sct.model.sexec.ExecutionNode;
 import org.yakindu.sct.model.sexec.ExecutionState;
 import org.yakindu.sct.model.sexec.ReactionFired;
 import org.yakindu.sct.model.sexec.interpreter.IExecutionFlowInterpreter;
@@ -37,7 +38,9 @@ public abstract class AbstractExecutionFlowInterpreter implements
 
 	public void addExecutionListener(IExecutionFacadeListener listener) {
 		synchronized (_listeners) {
-			_listeners.add(listener);
+			if (! _listeners.contains(listener)) {
+				_listeners.add(listener);
+			}
 		}
 	}
 
@@ -64,6 +67,14 @@ public abstract class AbstractExecutionFlowInterpreter implements
 		}
 	}
 
+	protected void notifyStateExited(ExecutionNode executionState) {
+		synchronized (_listeners) {
+			for (IExecutionFacadeListener listener : _listeners) {
+				listener.pseudoStateExecuted((Vertex) executionState.getSourceElement());
+			}
+		}
+	}
+
 	protected void notifyTransitionFired(ReactionFired reactionfired) {
 		synchronized (_listeners) {
 			for (IExecutionFacadeListener listener : _listeners) {

+ 22 - 4
plugins/org.yakindu.sct.model.sexec.interpreter/src/org/yakindu/sct/model/sexec/interpreter/impl/ExecutionFlowInterpreter.xtend

@@ -54,6 +54,9 @@ import org.yakindu.sct.model.stext.naming.StextNameProvider
 import org.yakindu.sct.model.sexec.interpreter.ITimingService
 import com.google.inject.name.Named
 import org.yakindu.sct.model.sexec.interpreter.InterpreterModule
+import org.yakindu.sct.model.sexec.TraceStateEntered
+import org.yakindu.sct.model.sexec.TraceStateExited
+import org.yakindu.sct.model.sexec.TraceNodeExecuted
 /**
  * 
  * @author andreas muelder - Initial contribution and API
@@ -70,7 +73,7 @@ class ExecutionFlowInterpreter extends AbstractExecutionFlowInterpreter {
 	@Inject 
 	ITimingService timingService 
 	@Inject
-	@Named(InterpreterModule::INTERPRETER_NAME)
+	@Named("InterpreterName")
 	String interpreterName
 	
 	ExecutionFlow flow
@@ -113,7 +116,7 @@ class ExecutionFlowInterpreter extends AbstractExecutionFlowInterpreter {
 	}
 	
 	override runCycle() {
-		executionContext.stateConfiguration.forEach(state | state.reactSequence.execute)
+		executionContext.stateConfiguration.toList.forEach(state | state.reactSequence.execute)
 		executionContext.resetRaisedEvents
 	} 
 
@@ -170,6 +173,21 @@ class ExecutionFlowInterpreter extends AbstractExecutionFlowInterpreter {
 		null
 	}
 	
+	def dispatch execute(TraceStateEntered entered){
+		notifyStateEntered(entered.state)
+		null
+	}
+	
+	def dispatch execute(TraceStateExited exited){
+		notifyStateExited(exited.state)
+		null
+	}
+	
+	def dispatch execute(TraceNodeExecuted executed){
+		notifyStateExited(executed.node)
+		null
+	}
+	
 	def dispatch execute(Check check){
 		if(check.condition == null)
 			return true
@@ -179,7 +197,7 @@ class ExecutionFlowInterpreter extends AbstractExecutionFlowInterpreter {
 	}
 	def dispatch execute(EnterState enterState){
 		executionContext.stateConfiguration.add(enterState.state)
-		notifyStateEntered(enterState.state)
+//		notifyStateEntered(enterState.state)
 		null
 	}
 	def dispatch execute(Execution execution){ 
@@ -188,7 +206,7 @@ class ExecutionFlowInterpreter extends AbstractExecutionFlowInterpreter {
 	
 	def dispatch execute(ExitState exitState){
 		executionContext.stateConfiguration.remove(exitState.state)
-		notifyStateExited(exitState.state)
+//		notifyStateExited(exitState.state)
 		null
 	}
 	def dispatch execute(If ifStep){

+ 9 - 0
plugins/org.yakindu.sct.model.sexec/model/sexec.ecore

@@ -117,7 +117,16 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="step" eType="#//Step" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Trace" abstract="true" eSuperTypes="#//Step"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TraceNodeExecuted" eSuperTypes="#//Trace">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//ExecutionNode"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ReactionFired" eSuperTypes="#//Trace">
     <eStructuralFeatures xsi:type="ecore:EReference" name="reaction" eType="#//Reaction"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TraceStateEntered" eSuperTypes="#//Trace">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="state" eType="#//ExecutionState"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TraceStateExited" eSuperTypes="#//Trace">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="state" eType="#//ExecutionState"/>
+  </eClassifiers>
 </ecore:EPackage>

+ 8 - 0
plugins/org.yakindu.sct.model.sexec/model/sexec_trace.ecore

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sexecTrace"
+    nsURI="http://www.yakindu.org/sct/sexec_trace/1.0.0" nsPrefix="trace">
+  <eClassifiers xsi:type="ecore:EClass" name="Trace" eSuperTypes="sexec.ecore#//Step"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TReactionTriggerWillEvaluate"/>
+</ecore:EPackage>

+ 27 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecFactory.java

@@ -187,6 +187,15 @@ public interface SexecFactory extends EFactory {
 	 */
 	StateCase createStateCase();
 
+	/**
+	 * Returns a new object of class '<em>Trace Node Executed</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Trace Node Executed</em>'.
+	 * @generated
+	 */
+	TraceNodeExecuted createTraceNodeExecuted();
+
 	/**
 	 * Returns a new object of class '<em>Reaction Fired</em>'.
 	 * <!-- begin-user-doc -->
@@ -196,6 +205,24 @@ public interface SexecFactory extends EFactory {
 	 */
 	ReactionFired createReactionFired();
 
+	/**
+	 * Returns a new object of class '<em>Trace State Entered</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Trace State Entered</em>'.
+	 * @generated
+	 */
+	TraceStateEntered createTraceStateEntered();
+
+	/**
+	 * Returns a new object of class '<em>Trace State Exited</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Trace State Exited</em>'.
+	 * @generated
+	 */
+	TraceStateExited createTraceStateExited();
+
 	/**
 	 * Returns a new object of class '<em>Check Ref</em>'.
 	 * <!-- begin-user-doc -->

+ 284 - 1
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecPackage.java

@@ -1381,6 +1381,61 @@ public interface SexecPackage extends EPackage {
 	 */
 	int TRACE_FEATURE_COUNT = STEP_FEATURE_COUNT + 0;
 
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.TraceNodeExecutedImpl <em>Trace Node Executed</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sexec.impl.TraceNodeExecutedImpl
+	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTraceNodeExecuted()
+	 * @generated
+	 */
+	int TRACE_NODE_EXECUTED = 23;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_NODE_EXECUTED__NAME = TRACE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_NODE_EXECUTED__COMMENT = TRACE__COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Caller</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_NODE_EXECUTED__CALLER = TRACE__CALLER;
+
+	/**
+	 * The feature id for the '<em><b>Node</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_NODE_EXECUTED__NODE = TRACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Trace Node Executed</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_NODE_EXECUTED_FEATURE_COUNT = TRACE_FEATURE_COUNT + 1;
+
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.ReactionFiredImpl <em>Reaction Fired</em>}' class.
 	 * <!-- begin-user-doc -->
@@ -1389,7 +1444,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getReactionFired()
 	 * @generated
 	 */
-	int REACTION_FIRED = 23;
+	int REACTION_FIRED = 24;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1437,6 +1492,117 @@ public interface SexecPackage extends EPackage {
 	int REACTION_FIRED_FEATURE_COUNT = TRACE_FEATURE_COUNT + 1;
 
 
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.TraceStateEnteredImpl <em>Trace State Entered</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sexec.impl.TraceStateEnteredImpl
+	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTraceStateEntered()
+	 * @generated
+	 */
+	int TRACE_STATE_ENTERED = 25;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_ENTERED__NAME = TRACE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_ENTERED__COMMENT = TRACE__COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Caller</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_ENTERED__CALLER = TRACE__CALLER;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_ENTERED__STATE = TRACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Trace State Entered</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_ENTERED_FEATURE_COUNT = TRACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.TraceStateExitedImpl <em>Trace State Exited</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sexec.impl.TraceStateExitedImpl
+	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTraceStateExited()
+	 * @generated
+	 */
+	int TRACE_STATE_EXITED = 26;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_EXITED__NAME = TRACE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_EXITED__COMMENT = TRACE__COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Caller</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_EXITED__CALLER = TRACE__CALLER;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_EXITED__STATE = TRACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Trace State Exited</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_STATE_EXITED_FEATURE_COUNT = TRACE_FEATURE_COUNT + 1;
+
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.ExecutionFlow <em>Execution Flow</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2044,6 +2210,27 @@ public interface SexecPackage extends EPackage {
 	 */
 	EClass getTrace();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.TraceNodeExecuted <em>Trace Node Executed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Trace Node Executed</em>'.
+	 * @see org.yakindu.sct.model.sexec.TraceNodeExecuted
+	 * @generated
+	 */
+	EClass getTraceNodeExecuted();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sexec.TraceNodeExecuted#getNode <em>Node</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Node</em>'.
+	 * @see org.yakindu.sct.model.sexec.TraceNodeExecuted#getNode()
+	 * @see #getTraceNodeExecuted()
+	 * @generated
+	 */
+	EReference getTraceNodeExecuted_Node();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.ReactionFired <em>Reaction Fired</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2065,6 +2252,48 @@ public interface SexecPackage extends EPackage {
 	 */
 	EReference getReactionFired_Reaction();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.TraceStateEntered <em>Trace State Entered</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Trace State Entered</em>'.
+	 * @see org.yakindu.sct.model.sexec.TraceStateEntered
+	 * @generated
+	 */
+	EClass getTraceStateEntered();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sexec.TraceStateEntered#getState <em>State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>State</em>'.
+	 * @see org.yakindu.sct.model.sexec.TraceStateEntered#getState()
+	 * @see #getTraceStateEntered()
+	 * @generated
+	 */
+	EReference getTraceStateEntered_State();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.TraceStateExited <em>Trace State Exited</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Trace State Exited</em>'.
+	 * @see org.yakindu.sct.model.sexec.TraceStateExited
+	 * @generated
+	 */
+	EClass getTraceStateExited();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sexec.TraceStateExited#getState <em>State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>State</em>'.
+	 * @see org.yakindu.sct.model.sexec.TraceStateExited#getState()
+	 * @see #getTraceStateExited()
+	 * @generated
+	 */
+	EReference getTraceStateExited_State();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.CheckRef <em>Check Ref</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2657,6 +2886,24 @@ public interface SexecPackage extends EPackage {
 		 */
 		EClass TRACE = eINSTANCE.getTrace();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.TraceNodeExecutedImpl <em>Trace Node Executed</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sexec.impl.TraceNodeExecutedImpl
+		 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTraceNodeExecuted()
+		 * @generated
+		 */
+		EClass TRACE_NODE_EXECUTED = eINSTANCE.getTraceNodeExecuted();
+
+		/**
+		 * The meta object literal for the '<em><b>Node</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRACE_NODE_EXECUTED__NODE = eINSTANCE.getTraceNodeExecuted_Node();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.ReactionFiredImpl <em>Reaction Fired</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -2675,6 +2922,42 @@ public interface SexecPackage extends EPackage {
 		 */
 		EReference REACTION_FIRED__REACTION = eINSTANCE.getReactionFired_Reaction();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.TraceStateEnteredImpl <em>Trace State Entered</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sexec.impl.TraceStateEnteredImpl
+		 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTraceStateEntered()
+		 * @generated
+		 */
+		EClass TRACE_STATE_ENTERED = eINSTANCE.getTraceStateEntered();
+
+		/**
+		 * The meta object literal for the '<em><b>State</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRACE_STATE_ENTERED__STATE = eINSTANCE.getTraceStateEntered_State();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.TraceStateExitedImpl <em>Trace State Exited</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sexec.impl.TraceStateExitedImpl
+		 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTraceStateExited()
+		 * @generated
+		 */
+		EClass TRACE_STATE_EXITED = eINSTANCE.getTraceStateExited();
+
+		/**
+		 * The meta object literal for the '<em><b>State</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRACE_STATE_EXITED__STATE = eINSTANCE.getTraceStateExited_State();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.CheckRefImpl <em>Check Ref</em>}' class.
 		 * <!-- begin-user-doc -->

+ 53 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/TraceNodeExecuted.java

@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Trace Node Executed</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.TraceNodeExecuted#getNode <em>Node</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sexec.SexecPackage#getTraceNodeExecuted()
+ * @model
+ * @generated
+ */
+public interface TraceNodeExecuted extends Trace {
+	/**
+	 * Returns the value of the '<em><b>Node</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Node</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Node</em>' reference.
+	 * @see #setNode(ExecutionNode)
+	 * @see org.yakindu.sct.model.sexec.SexecPackage#getTraceNodeExecuted_Node()
+	 * @model
+	 * @generated
+	 */
+	ExecutionNode getNode();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sexec.TraceNodeExecuted#getNode <em>Node</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Node</em>' reference.
+	 * @see #getNode()
+	 * @generated
+	 */
+	void setNode(ExecutionNode value);
+
+} // TraceNodeExecuted

+ 53 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/TraceStateEntered.java

@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Trace State Entered</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.TraceStateEntered#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sexec.SexecPackage#getTraceStateEntered()
+ * @model
+ * @generated
+ */
+public interface TraceStateEntered extends Trace {
+
+	/**
+	 * Returns the value of the '<em><b>State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>State</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>State</em>' reference.
+	 * @see #setState(ExecutionState)
+	 * @see org.yakindu.sct.model.sexec.SexecPackage#getTraceStateEntered_State()
+	 * @model
+	 * @generated
+	 */
+	ExecutionState getState();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sexec.TraceStateEntered#getState <em>State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>State</em>' reference.
+	 * @see #getState()
+	 * @generated
+	 */
+	void setState(ExecutionState value);
+} // TraceStateEntered

+ 53 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/TraceStateExited.java

@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Trace State Exited</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.TraceStateExited#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sexec.SexecPackage#getTraceStateExited()
+ * @model
+ * @generated
+ */
+public interface TraceStateExited extends Trace {
+
+	/**
+	 * Returns the value of the '<em><b>State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>State</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>State</em>' reference.
+	 * @see #setState(ExecutionState)
+	 * @see org.yakindu.sct.model.sexec.SexecPackage#getTraceStateExited_State()
+	 * @model
+	 * @generated
+	 */
+	ExecutionState getState();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sexec.TraceStateExited#getState <em>State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>State</em>' reference.
+	 * @see #getState()
+	 * @generated
+	 */
+	void setState(ExecutionState value);
+} // TraceStateExited

+ 34 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/SexecFactoryImpl.java

@@ -11,6 +11,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.yakindu.sct.model.sexec.*;
 import org.yakindu.sct.model.sexec.Call;
 import org.yakindu.sct.model.sexec.Check;
 import org.yakindu.sct.model.sexec.CheckRef;
@@ -101,7 +102,10 @@ public class SexecFactoryImpl extends EFactoryImpl implements SexecFactory {
 			case SexecPackage.UNSCHEDULE_TIME_EVENT: return createUnscheduleTimeEvent();
 			case SexecPackage.STATE_SWITCH: return createStateSwitch();
 			case SexecPackage.STATE_CASE: return createStateCase();
+			case SexecPackage.TRACE_NODE_EXECUTED: return createTraceNodeExecuted();
 			case SexecPackage.REACTION_FIRED: return createReactionFired();
+			case SexecPackage.TRACE_STATE_ENTERED: return createTraceStateEntered();
+			case SexecPackage.TRACE_STATE_EXITED: return createTraceStateExited();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -287,6 +291,16 @@ public class SexecFactoryImpl extends EFactoryImpl implements SexecFactory {
 		return stateCase;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceNodeExecuted createTraceNodeExecuted() {
+		TraceNodeExecutedImpl traceNodeExecuted = new TraceNodeExecutedImpl();
+		return traceNodeExecuted;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -297,6 +311,26 @@ public class SexecFactoryImpl extends EFactoryImpl implements SexecFactory {
 		return reactionFired;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceStateEntered createTraceStateEntered() {
+		TraceStateEnteredImpl traceStateEntered = new TraceStateEnteredImpl();
+		return traceStateEntered;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceStateExited createTraceStateExited() {
+		TraceStateExitedImpl traceStateExited = new TraceStateExitedImpl();
+		return traceStateExited;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 99 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/SexecPackageImpl.java

@@ -36,6 +36,9 @@ import org.yakindu.sct.model.sexec.StateVector;
 import org.yakindu.sct.model.sexec.Step;
 import org.yakindu.sct.model.sexec.TimeEvent;
 import org.yakindu.sct.model.sexec.Trace;
+import org.yakindu.sct.model.sexec.TraceNodeExecuted;
+import org.yakindu.sct.model.sexec.TraceStateEntered;
+import org.yakindu.sct.model.sexec.TraceStateExited;
 import org.yakindu.sct.model.sexec.UnscheduleTimeEvent;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 
@@ -186,6 +189,13 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 	 */
 	private EClass traceEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass traceNodeExecutedEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -193,6 +203,20 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 	 */
 	private EClass reactionFiredEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass traceStateEnteredEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass traceStateExitedEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -791,6 +815,24 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		return traceEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTraceNodeExecuted() {
+		return traceNodeExecutedEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTraceNodeExecuted_Node() {
+		return (EReference)traceNodeExecutedEClass.getEStructuralFeatures().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -809,6 +851,42 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		return (EReference)reactionFiredEClass.getEStructuralFeatures().get(0);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTraceStateEntered() {
+		return traceStateEnteredEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTraceStateEntered_State() {
+		return (EReference)traceStateEnteredEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTraceStateExited() {
+		return traceStateExitedEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTraceStateExited_State() {
+		return (EReference)traceStateExitedEClass.getEStructuralFeatures().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -987,8 +1065,17 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 
 		traceEClass = createEClass(TRACE);
 
+		traceNodeExecutedEClass = createEClass(TRACE_NODE_EXECUTED);
+		createEReference(traceNodeExecutedEClass, TRACE_NODE_EXECUTED__NODE);
+
 		reactionFiredEClass = createEClass(REACTION_FIRED);
 		createEReference(reactionFiredEClass, REACTION_FIRED__REACTION);
+
+		traceStateEnteredEClass = createEClass(TRACE_STATE_ENTERED);
+		createEReference(traceStateEnteredEClass, TRACE_STATE_ENTERED__STATE);
+
+		traceStateExitedEClass = createEClass(TRACE_STATE_EXITED);
+		createEReference(traceStateExitedEClass, TRACE_STATE_EXITED__STATE);
 	}
 
 	/**
@@ -1044,7 +1131,10 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		unscheduleTimeEventEClass.getESuperTypes().add(this.getStep());
 		stateSwitchEClass.getESuperTypes().add(this.getStep());
 		traceEClass.getESuperTypes().add(this.getStep());
+		traceNodeExecutedEClass.getESuperTypes().add(this.getTrace());
 		reactionFiredEClass.getESuperTypes().add(this.getTrace());
+		traceStateEnteredEClass.getESuperTypes().add(this.getTrace());
+		traceStateExitedEClass.getESuperTypes().add(this.getTrace());
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(namedElementEClass, NamedElement.class, "NamedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1134,9 +1224,18 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 
 		initEClass(traceEClass, Trace.class, "Trace", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		initEClass(traceNodeExecutedEClass, TraceNodeExecuted.class, "TraceNodeExecuted", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTraceNodeExecuted_Node(), this.getExecutionNode(), null, "node", null, 0, 1, TraceNodeExecuted.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		initEClass(reactionFiredEClass, ReactionFired.class, "ReactionFired", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getReactionFired_Reaction(), this.getReaction(), null, "reaction", null, 0, 1, ReactionFired.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(traceStateEnteredEClass, TraceStateEntered.class, "TraceStateEntered", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTraceStateEntered_State(), this.getExecutionState(), null, "state", null, 0, 1, TraceStateEntered.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(traceStateExitedEClass, TraceStateExited.class, "TraceStateExited", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTraceStateExited_State(), this.getExecutionState(), null, "state", null, 0, 1, TraceStateExited.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Create resource
 		createResource(eNS_URI);
 	}

+ 160 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceNodeExecutedImpl.java

@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.sexec.ExecutionNode;
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.TraceNodeExecuted;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trace Node Executed</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.TraceNodeExecutedImpl#getNode <em>Node</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TraceNodeExecutedImpl extends TraceImpl implements TraceNodeExecuted {
+	/**
+	 * The cached value of the '{@link #getNode() <em>Node</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNode()
+	 * @generated
+	 * @ordered
+	 */
+	protected ExecutionNode node;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceNodeExecutedImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SexecPackage.Literals.TRACE_NODE_EXECUTED;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionNode getNode() {
+		if (node != null && node.eIsProxy()) {
+			InternalEObject oldNode = (InternalEObject)node;
+			node = (ExecutionNode)eResolveProxy(oldNode);
+			if (node != oldNode) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.TRACE_NODE_EXECUTED__NODE, oldNode, node));
+			}
+		}
+		return node;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionNode basicGetNode() {
+		return node;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNode(ExecutionNode newNode) {
+		ExecutionNode oldNode = node;
+		node = newNode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.TRACE_NODE_EXECUTED__NODE, oldNode, node));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SexecPackage.TRACE_NODE_EXECUTED__NODE:
+				if (resolve) return getNode();
+				return basicGetNode();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SexecPackage.TRACE_NODE_EXECUTED__NODE:
+				setNode((ExecutionNode)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SexecPackage.TRACE_NODE_EXECUTED__NODE:
+				setNode((ExecutionNode)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SexecPackage.TRACE_NODE_EXECUTED__NODE:
+				return node != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TraceNodeExecutedImpl

+ 158 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceStateEnteredImpl.java

@@ -0,0 +1,158 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.yakindu.sct.model.sexec.ExecutionState;
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.TraceStateEntered;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trace State Entered</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.TraceStateEnteredImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TraceStateEnteredImpl extends TraceImpl implements TraceStateEntered {
+	/**
+	 * The cached value of the '{@link #getState() <em>State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getState()
+	 * @generated
+	 * @ordered
+	 */
+	protected ExecutionState state;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceStateEnteredImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SexecPackage.Literals.TRACE_STATE_ENTERED;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionState getState() {
+		if (state != null && state.eIsProxy()) {
+			InternalEObject oldState = (InternalEObject)state;
+			state = (ExecutionState)eResolveProxy(oldState);
+			if (state != oldState) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.TRACE_STATE_ENTERED__STATE, oldState, state));
+			}
+		}
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionState basicGetState() {
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setState(ExecutionState newState) {
+		ExecutionState oldState = state;
+		state = newState;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.TRACE_STATE_ENTERED__STATE, oldState, state));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_ENTERED__STATE:
+				if (resolve) return getState();
+				return basicGetState();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_ENTERED__STATE:
+				setState((ExecutionState)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_ENTERED__STATE:
+				setState((ExecutionState)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_ENTERED__STATE:
+				return state != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TraceStateEnteredImpl

+ 158 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceStateExitedImpl.java

@@ -0,0 +1,158 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.yakindu.sct.model.sexec.ExecutionState;
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.TraceStateExited;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trace State Exited</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.TraceStateExitedImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TraceStateExitedImpl extends TraceImpl implements TraceStateExited {
+	/**
+	 * The cached value of the '{@link #getState() <em>State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getState()
+	 * @generated
+	 * @ordered
+	 */
+	protected ExecutionState state;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceStateExitedImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SexecPackage.Literals.TRACE_STATE_EXITED;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionState getState() {
+		if (state != null && state.eIsProxy()) {
+			InternalEObject oldState = (InternalEObject)state;
+			state = (ExecutionState)eResolveProxy(oldState);
+			if (state != oldState) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.TRACE_STATE_EXITED__STATE, oldState, state));
+			}
+		}
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionState basicGetState() {
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setState(ExecutionState newState) {
+		ExecutionState oldState = state;
+		state = newState;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.TRACE_STATE_EXITED__STATE, oldState, state));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_EXITED__STATE:
+				if (resolve) return getState();
+				return basicGetState();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_EXITED__STATE:
+				setState((ExecutionState)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_EXITED__STATE:
+				setState((ExecutionState)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SexecPackage.TRACE_STATE_EXITED__STATE:
+				return state != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TraceStateExitedImpl

+ 46 - 18
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/ModelSequencer.xtend

@@ -75,12 +75,13 @@ import org.yakindu.sct.model.sexec.ExecutionNode
 import com.google.inject.name.Named
 
 class ModelSequencer {
-	
+	 
 	@Inject extension IQualifiedNameProvider qfnProvider
 	@Inject extension FactoryExtension factory
 	@Inject extension StatechartExtensions sct
+	
 	@Inject
-	@Named(SequencerModule::ADD_TRACES)
+	@Named("ADD_TRACES")
 	boolean _addTraceSteps 
 	
 	/* ==========================================================================
@@ -277,7 +278,7 @@ class ModelSequencer {
 		r.effect = mapToEffect(t)
 		
 		// TODO: move to other extension that can be added to module
-		if (_addTraceSteps) { (r.effect as Sequence).steps += r.newReactionFired() }
+		if (_addTraceSteps) { (r.effect as Sequence).steps += r.newTraceReactionFired() }
 	
 		return r
 	}
@@ -331,9 +332,12 @@ class ModelSequencer {
 		}
 
 		t.exitStates().fold(sequence, [seq, state | {
-			if (state != t.source // since we call the exit sequence of the source state we have to exclude it's exit action here
-				&& state.create.exitAction != null
-			) seq.steps.add(state.create.exitAction.newCall)
+			if (state != t.source) { // since we call the exit sequence of the source state we have to exclude it's exit action here
+	
+				if ( state.create.exitAction != null) seq.steps.add(state.create.exitAction.newCall)
+				if ( _addTraceSteps ) seq.steps += newTraceStateExited(state.create)
+			}
+			
 			seq
 		}])
 		
@@ -344,9 +348,10 @@ class ModelSequencer {
 
 		// define entry behavior of the transition
 		t.entryStates().reverse.fold(sequence, [seq, state | {
-			if (state != t.target // since we call the entry sequence of the target state we have to exclude it here
-				&& state.create.entryAction != null
-			) seq.steps.add(state.create.entryAction.newCall)
+			if (state != t.target) { // since we call the entry sequence of the target state we have to exclude it here
+				if (state.create.entryAction != null) seq.steps.add(state.create.entryAction.newCall)
+				if ( _addTraceSteps ) seq.steps += newTraceStateEntered(state.create)
+			}
 			seq
 		}])
 		
@@ -361,12 +366,31 @@ class ModelSequencer {
 	}	
 	
 	
-	def newReactionFired(Reaction r) {
+	def newTraceReactionFired(Reaction r) {
 		val rf = sexecFactory.createReactionFired
 		rf.reaction = r
 		rf
 	}
 	
+	def newTraceNodeExecuted(ExecutionNode node) {
+		val t = sexecFactory.createTraceNodeExecuted
+		t.node = node
+		t
+	}
+	
+	
+	def newTraceStateEntered(ExecutionState state) {
+		val t = sexecFactory.createTraceStateEntered
+		t.state = state
+		t
+	}
+	
+	def newTraceStateExited(ExecutionState state) {
+		val t = sexecFactory.createTraceStateExited
+		t.state = state
+		t
+	}
+	
 	
 	def List<State> exitStates(Transition t) {
 		val l = t.source.containers
@@ -528,12 +552,6 @@ class ModelSequencer {
 	def definePseudoStateReactions(ExecutionFlow flow, Statechart sc) {
 		
 		sc.allChoices().forEach( choice | choice.defineReaction() )
-//		val states = sc.allRegularStates
-//		
-//		states.filter(typeof(State)).filter(s | s.simple).forEach(s | defineCycle(s))
-//		states.filter(typeof(FinalState)).forEach(s | defineCycle(s))
-//		
-//		return flow
 	}
 	
 
@@ -552,6 +570,8 @@ class ModelSequencer {
 		execChoice.reactSequence.name = 'react'
 		execChoice.reactSequence.comment = 'The reactions of state ' + choice.name + '.'
 		
+		if ( _addTraceSteps ) execChoice.reactSequence.steps.add(0,choice.create.newTraceNodeExecuted)
+		
 		return execChoice.reactSequence
 	}	
 	
@@ -585,7 +605,7 @@ class ModelSequencer {
 
 	def Sequence createReactionSequence(ExecutionNode state, Step localStep) {	
 		val cycle = sexecFactory.createSequence
-		
+				
 		val localReactions = state.reactions.filter(r | ! r.transition).toList
 		var localSteps = sexecFactory.createSequence
 		localSteps.steps.addAll(localReactions.map(lr | {
@@ -754,7 +774,9 @@ class ModelSequencer {
 		seq.name = "enterSequence"
 		seq.comment = "Default enter sequence for state " + state.name
 		if (execState.entryAction != null) seq.steps.add(execState.entryAction.newCall)
-
+		
+		if ( _addTraceSteps ) seq.steps += execState.newTraceStateEntered
+		
 		if ( execState.leaf ) {
 			
 			seq.steps += state.newEnterStateStep
@@ -800,6 +822,9 @@ class ModelSequencer {
 		seq.name = "exitSequence"
 		seq.comment = "Default exit sequence for final state."
 		seq.steps += s.newExitStateStep
+				
+		if ( _addTraceSteps ) seq.steps += execState.newTraceStateExited
+		
 		execState.exitSequence = seq
 	}
 	
@@ -862,6 +887,9 @@ class ModelSequencer {
 		}
 
 		if (execState.exitAction != null) seq.steps.add(execState.exitAction.newCall)
+		
+		if ( _addTraceSteps ) seq.steps += execState.newTraceStateExited
+		
 		execState.exitSequence = seq
 	}
 	

+ 55 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/util/SexecAdapterFactory.java

@@ -10,6 +10,7 @@ import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
+import org.yakindu.sct.model.sexec.*;
 import org.yakindu.sct.model.sexec.Call;
 import org.yakindu.sct.model.sexec.Check;
 import org.yakindu.sct.model.sexec.CheckRef;
@@ -188,10 +189,22 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 				return createTraceAdapter();
 			}
 			@Override
+			public Adapter caseTraceNodeExecuted(TraceNodeExecuted object) {
+				return createTraceNodeExecutedAdapter();
+			}
+			@Override
 			public Adapter caseReactionFired(ReactionFired object) {
 				return createReactionFiredAdapter();
 			}
 			@Override
+			public Adapter caseTraceStateEntered(TraceStateEntered object) {
+				return createTraceStateEnteredAdapter();
+			}
+			@Override
+			public Adapter caseTraceStateExited(TraceStateExited object) {
+				return createTraceStateExitedAdapter();
+			}
+			@Override
 			public Adapter caseScopedElement(ScopedElement object) {
 				return createScopedElementAdapter();
 			}
@@ -507,6 +520,20 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.TraceNodeExecuted <em>Trace Node Executed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.model.sexec.TraceNodeExecuted
+	 * @generated
+	 */
+	public Adapter createTraceNodeExecutedAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.ReactionFired <em>Reaction Fired</em>}'.
 	 * <!-- begin-user-doc -->
@@ -521,6 +548,34 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.TraceStateEntered <em>Trace State Entered</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.model.sexec.TraceStateEntered
+	 * @generated
+	 */
+	public Adapter createTraceStateEnteredAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.TraceStateExited <em>Trace State Exited</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.model.sexec.TraceStateExited
+	 * @generated
+	 */
+	public Adapter createTraceStateExitedAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.CheckRef <em>Check Ref</em>}'.
 	 * <!-- begin-user-doc -->

+ 73 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/util/SexecSwitch.java

@@ -9,6 +9,7 @@ package org.yakindu.sct.model.sexec.util;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
+import org.yakindu.sct.model.sexec.*;
 import org.yakindu.sct.model.sexec.Call;
 import org.yakindu.sct.model.sexec.Check;
 import org.yakindu.sct.model.sexec.CheckRef;
@@ -274,6 +275,15 @@ public class SexecSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SexecPackage.TRACE_NODE_EXECUTED: {
+				TraceNodeExecuted traceNodeExecuted = (TraceNodeExecuted)theEObject;
+				T result = caseTraceNodeExecuted(traceNodeExecuted);
+				if (result == null) result = caseTrace(traceNodeExecuted);
+				if (result == null) result = caseStep(traceNodeExecuted);
+				if (result == null) result = caseNamedElement(traceNodeExecuted);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SexecPackage.REACTION_FIRED: {
 				ReactionFired reactionFired = (ReactionFired)theEObject;
 				T result = caseReactionFired(reactionFired);
@@ -283,6 +293,24 @@ public class SexecSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SexecPackage.TRACE_STATE_ENTERED: {
+				TraceStateEntered traceStateEntered = (TraceStateEntered)theEObject;
+				T result = caseTraceStateEntered(traceStateEntered);
+				if (result == null) result = caseTrace(traceStateEntered);
+				if (result == null) result = caseStep(traceStateEntered);
+				if (result == null) result = caseNamedElement(traceStateEntered);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SexecPackage.TRACE_STATE_EXITED: {
+				TraceStateExited traceStateExited = (TraceStateExited)theEObject;
+				T result = caseTraceStateExited(traceStateExited);
+				if (result == null) result = caseTrace(traceStateExited);
+				if (result == null) result = caseStep(traceStateExited);
+				if (result == null) result = caseNamedElement(traceStateExited);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -587,6 +615,21 @@ public class SexecSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Trace Node Executed</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Trace Node Executed</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTraceNodeExecuted(TraceNodeExecuted object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Reaction Fired</em>'.
 	 * <!-- begin-user-doc -->
@@ -602,6 +645,36 @@ public class SexecSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Trace State Entered</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Trace State Entered</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTraceStateEntered(TraceStateEntered object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Trace State Exited</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Trace State Exited</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTraceStateExited(TraceStateExited object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Check Ref</em>'.
 	 * <!-- begin-user-doc -->

+ 4 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTDebugTarget.java

@@ -239,6 +239,10 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget,
 		fireChangeEvent(DebugEvent.CONTENT);
 	}
 
+	
+	public void pseudoStateExecuted(Vertex vertex) {		
+	}
+
 	public void transitionFired(Transition transition) {
 	}
 

+ 2 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/runtime/IExecutionFacadeListener.java

@@ -24,6 +24,8 @@ public interface IExecutionFacadeListener {
 
 	void stateLeft(Vertex vertex);
 
+	void pseudoStateExecuted(Vertex vertex);
+
 	void transitionFired(Transition transition);
 
 }

+ 4 - 4
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/runtime/impl/ExecutionContextImpl.java

@@ -88,18 +88,18 @@ public class ExecutionContextImpl extends AbstractExecutionContext implements
 	}
 
 	public boolean isEventRaised(String eventName) {
-		System.out.println("IsEvent Raised: " + eventName);
+//		System.out.println("IsEvent Raised: " + eventName);
 		synchronized (raisedEvents) {
 			for (ExecutionEvent event : raisedEvents) {
 				if (eventName.equals(event.getName())) {
-					System.out.println("True");
+//					System.out.println("True");
 					return true;
 				}
 			}
 		}
-		System.out.println("False");
+//		System.out.println("False");
 		for (ExecutionEvent event : raisedEvents) {
-			System.out.println(event.getName());
+//			System.out.println(event.getName());
 		}
 		return false;
 	}

+ 16 - 0
plugins/org.yakindu.sct.simulation.ui/src/org/yakindu/sct/simulation/ui/model/presenter/SCTSourceDisplay.java

@@ -106,6 +106,7 @@ public class SCTSourceDisplay implements ISimulationSessionListener,
 	}
 
 	public void stateEntered(final Vertex vertex) {
+		System.out.println("enter state: " + vertex.getName());
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
 				getSupport().fadeIn(vertex, parameters);
@@ -114,6 +115,8 @@ public class SCTSourceDisplay implements ISimulationSessionListener,
 	}
 
 	public void stateLeft(final Vertex vertex) {
+		System.out.println("leave state: " + vertex.getName());
+
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
 				getSupport().fadeOut(vertex, parameters);
@@ -121,7 +124,20 @@ public class SCTSourceDisplay implements ISimulationSessionListener,
 		});
 	}
 
+	
+	public void pseudoStateExecuted(final Vertex vertex) {
+		System.out.println("execute: " + vertex.getName() );
+
+		Display.getDefault().asyncExec(new Runnable() {
+			public void run() {
+				getSupport().flash(vertex, parameters);
+			}
+		});		
+	}
+
 	public void transitionFired(final Transition transition) {
+		System.out.println("take: " + transition.getSource().getName() + " -> " + transition.getTarget().getName());
+
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
 				getSupport().flash(transition, parameters);