Просмотр исходного кода

sexec model now supports
* traceability from ExecutionStates to sgraph-States and sexec-Reactions to sgraph-Transitions
* ReactionFired trace step that notifies about the execution of a transition.
( YAKHMI-351 )

terfloth@itemis.de 14 лет назад
Родитель
Сommit
81f7c3f573
37 измененных файлов с 1752 добавлено и 37 удалено
  1. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_entryAction_ReactionFired.gif
  2. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateExecutionState_exitAction_ReactionFired.gif
  3. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateReaction_effect_ReactionFired.gif
  4. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateSequence_steps_ReactionFired.gif
  5. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/ctool16/CreateStateCase_step_ReactionFired.gif
  6. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/MappedElement.gif
  7. BIN
      plugins/org.yakindu.sct.model.sexec.edit/icons/full/obj16/ReactionFired.gif
  8. 5 0
      plugins/org.yakindu.sct.model.sexec.edit/plugin.properties
  9. 33 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ExecutionStateItemProvider.java
  10. 149 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/MappedElementItemProvider.java
  11. 139 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ReactionFiredItemProvider.java
  12. 28 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ReactionItemProvider.java
  13. 5 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/SequenceItemProvider.java
  14. 48 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/SexecItemProviderAdapterFactory.java
  15. 5 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/StateCaseItemProvider.java
  16. 103 0
      plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceItemProvider.java
  17. 9 2
      plugins/org.yakindu.sct.model.sexec/model/sexec.ecore
  18. 1 1
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/ExecutionState.java
  19. 54 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/MappedElement.java
  20. 1 1
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/Reaction.java
  21. 53 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/ReactionFired.java
  22. 18 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecFactory.java
  23. 260 32
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecPackage.java
  24. 21 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/Trace.java
  25. 94 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/ExecutionStateImpl.java
  26. 161 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/MappedElementImpl.java
  27. 160 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/ReactionFiredImpl.java
  28. 94 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/ReactionImpl.java
  29. 22 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/SexecFactoryImpl.java
  30. 89 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/SexecPackageImpl.java
  31. 43 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceImpl.java
  32. 3 1
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/FactoryExtension.xtend
  33. 11 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/ModelSequencer.xtend
  34. 54 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/util/SexecAdapterFactory.java
  35. 70 0
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/util/SexecSwitch.java
  36. 2 0
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/FactoryExtension.java
  37. 17 0
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/ModelSequencer.java

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


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


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


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


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


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


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


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

@@ -79,3 +79,8 @@ _UI_StateCase_state_feature = State
 _UI_ExecutionFlow_exitSequence_feature = Exit Sequence
 _UI_ExecutionState_reactSequence_feature = React Sequence
 _UI_ExecutionState_stateVector_feature = State Vector
+_UI_MappedElement_type = Mapped Element
+_UI_Trace_type = Trace
+_UI_ReactionFired_type = Reaction Fired
+_UI_MappedElement_sourceElement_feature = Source Element
+_UI_ReactionFired_reaction_feature = Reaction

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

@@ -61,12 +61,35 @@ public class ExecutionStateItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addSourceElementPropertyDescriptor(object);
 			addSimpleNamePropertyDescriptor(object);
 			addLeafPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Source Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSourceElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MappedElement_sourceElement_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_MappedElement_sourceElement_feature", "_UI_MappedElement_type"),
+				 SexecPackage.Literals.MAPPED_ELEMENT__SOURCE_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Simple Name feature.
 	 * <!-- begin-user-doc -->
@@ -277,6 +300,11 @@ public class ExecutionStateItemProvider
 				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__ENTRY_ACTION,
+				 SexecFactory.eINSTANCE.createReactionFired()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
@@ -332,6 +360,11 @@ public class ExecutionStateItemProvider
 				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.EXECUTION_STATE__EXIT_ACTION,
+				 SexecFactory.eINSTANCE.createReactionFired()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(SexecPackage.Literals.EXECUTION_STATE__ENTER_SEQUENCE,

+ 149 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/MappedElementItemProvider.java

@@ -0,0 +1,149 @@
+/**
+ * <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.common.util.ResourceLocator;
+
+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.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.yakindu.sct.model.sexec.SexecPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sexec.MappedElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MappedElementItemProvider
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MappedElementItemProvider(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);
+
+			addSourceElementPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Source Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSourceElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MappedElement_sourceElement_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_MappedElement_sourceElement_feature", "_UI_MappedElement_type"),
+				 SexecPackage.Literals.MAPPED_ELEMENT__SOURCE_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns MappedElement.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MappedElement"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_MappedElement_type");
+	}
+
+	/**
+	 * 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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return SexecEditPlugin.INSTANCE;
+	}
+
+}

+ 139 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/ReactionFiredItemProvider.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.ReactionFired;
+import org.yakindu.sct.model.sexec.SexecPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sexec.ReactionFired} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ReactionFiredItemProvider
+	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 ReactionFiredItemProvider(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);
+
+			addReactionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Reaction feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReactionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ReactionFired_reaction_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ReactionFired_reaction_feature", "_UI_ReactionFired_type"),
+				 SexecPackage.Literals.REACTION_FIRED__REACTION,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ReactionFired.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ReactionFired"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ReactionFired)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ReactionFired_type") :
+			getString("_UI_ReactionFired_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);
+	}
+
+}

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

@@ -61,11 +61,34 @@ public class ReactionItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addSourceElementPropertyDescriptor(object);
 			addTransitionPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Source Element feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSourceElementPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MappedElement_sourceElement_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_MappedElement_sourceElement_feature", "_UI_MappedElement_type"),
+				 SexecPackage.Literals.MAPPED_ELEMENT__SOURCE_ELEMENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Transition feature.
 	 * <!-- begin-user-doc -->
@@ -242,6 +265,11 @@ public class ReactionItemProvider
 			(createChildParameter
 				(SexecPackage.Literals.REACTION__EFFECT,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.REACTION__EFFECT,
+				 SexecFactory.eINSTANCE.createReactionFired()));
 	}
 
 	/**

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

@@ -202,6 +202,11 @@ public class SequenceItemProvider
 			(createChildParameter
 				(SexecPackage.Literals.SEQUENCE__STEPS,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.SEQUENCE__STEPS,
+				 SexecFactory.eINSTANCE.createReactionFired()));
 	}
 
 }

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

@@ -165,6 +165,29 @@ public class SexecItemProviderAdapterFactory extends SexecAdapterFactory impleme
 		return namedElementItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.MappedElement} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MappedElementItemProvider mappedElementItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sexec.MappedElement}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMappedElementAdapter() {
+		if (mappedElementItemProvider == null) {
+			mappedElementItemProvider = new MappedElementItemProvider(this);
+		}
+
+		return mappedElementItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.Check} instances.
 	 * <!-- begin-user-doc -->
@@ -418,6 +441,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.ReactionFired} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReactionFiredItemProvider reactionFiredItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sexec.ReactionFired}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createReactionFiredAdapter() {
+		if (reactionFiredItemProvider == null) {
+			reactionFiredItemProvider = new ReactionFiredItemProvider(this);
+		}
+
+		return reactionFiredItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sexec.CheckRef} instances.
 	 * <!-- begin-user-doc -->
@@ -587,6 +633,7 @@ public class SexecItemProviderAdapterFactory extends SexecAdapterFactory impleme
 	 */
 	public void dispose() {
 		if (namedElementItemProvider != null) namedElementItemProvider.dispose();
+		if (mappedElementItemProvider != null) mappedElementItemProvider.dispose();
 		if (executionFlowItemProvider != null) executionFlowItemProvider.dispose();
 		if (executionStateItemProvider != null) executionStateItemProvider.dispose();
 		if (reactionItemProvider != null) reactionItemProvider.dispose();
@@ -604,6 +651,7 @@ public class SexecItemProviderAdapterFactory extends SexecAdapterFactory impleme
 		if (unscheduleTimeEventItemProvider != null) unscheduleTimeEventItemProvider.dispose();
 		if (stateSwitchItemProvider != null) stateSwitchItemProvider.dispose();
 		if (stateCaseItemProvider != null) stateCaseItemProvider.dispose();
+		if (reactionFiredItemProvider != null) reactionFiredItemProvider.dispose();
 	}
 
 }

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

@@ -229,6 +229,11 @@ public class StateCaseItemProvider
 			(createChildParameter
 				(SexecPackage.Literals.STATE_CASE__STEP,
 				 SexecFactory.eINSTANCE.createStateSwitch()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SexecPackage.Literals.STATE_CASE__STEP,
+				 SexecFactory.eINSTANCE.createReactionFired()));
 	}
 
 	/**

+ 103 - 0
plugins/org.yakindu.sct.model.sexec.edit/src/org/yakindu/sct/model/sexec/provider/TraceItemProvider.java

@@ -0,0 +1,103 @@
+/**
+ * <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.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.Trace;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sexec.Trace} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TraceItemProvider
+	extends StepItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TraceItemProvider(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);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Trace)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Trace_type") :
+			getString("_UI_Trace_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);
+	}
+
+}

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

@@ -6,6 +6,9 @@
   <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MappedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceElement" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ExecutionFlow" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ScopedElement #//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="states" upperBound="-1"
         eType="#//ExecutionState" containment="true"/>
@@ -16,7 +19,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="exitSequence" eType="#//Sequence"
         containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ExecutionState" eSuperTypes="#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionState" eSuperTypes="#//NamedElement #//MappedElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="simpleName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="leaf" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         defaultValueLiteral="false"/>
@@ -35,7 +38,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="stateVector" eType="#//StateVector"
         containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Reaction" eSuperTypes="#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Reaction" eSuperTypes="#//NamedElement #//MappedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="check" eType="#//Check"
         containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="effect" eType="#//Step"
@@ -103,4 +106,8 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="state" eType="#//ExecutionState"/>
     <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="ReactionFired" eSuperTypes="#//Trace">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="reaction" eType="#//Reaction"/>
+  </eClassifiers>
 </ecore:EPackage>

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

@@ -32,7 +32,7 @@ import org.eclipse.emf.common.util.EList;
  * @model
  * @generated
  */
-public interface ExecutionState extends NamedElement {
+public interface ExecutionState extends NamedElement, MappedElement {
 	/**
 	 * Returns the value of the '<em><b>Simple Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->

+ 54 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/MappedElement.java

@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mapped Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.MappedElement#getSourceElement <em>Source Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sexec.SexecPackage#getMappedElement()
+ * @model
+ * @generated
+ */
+public interface MappedElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Source Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source Element</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source Element</em>' reference.
+	 * @see #setSourceElement(EObject)
+	 * @see org.yakindu.sct.model.sexec.SexecPackage#getMappedElement_SourceElement()
+	 * @model
+	 * @generated
+	 */
+	EObject getSourceElement();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sexec.MappedElement#getSourceElement <em>Source Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source Element</em>' reference.
+	 * @see #getSourceElement()
+	 * @generated
+	 */
+	void setSourceElement(EObject value);
+
+} // MappedElement

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

@@ -25,7 +25,7 @@ package org.yakindu.sct.model.sexec;
  * @model
  * @generated
  */
-public interface Reaction extends NamedElement {
+public interface Reaction extends NamedElement, MappedElement {
 	/**
 	 * Returns the value of the '<em><b>Check</b></em>' containment reference.
 	 * <!-- begin-user-doc -->

+ 53 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/ReactionFired.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>Reaction Fired</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.ReactionFired#getReaction <em>Reaction</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sexec.SexecPackage#getReactionFired()
+ * @model
+ * @generated
+ */
+public interface ReactionFired extends Trace {
+	/**
+	 * Returns the value of the '<em><b>Reaction</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Reaction</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Reaction</em>' reference.
+	 * @see #setReaction(Reaction)
+	 * @see org.yakindu.sct.model.sexec.SexecPackage#getReactionFired_Reaction()
+	 * @model
+	 * @generated
+	 */
+	Reaction getReaction();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sexec.ReactionFired#getReaction <em>Reaction</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reaction</em>' reference.
+	 * @see #getReaction()
+	 * @generated
+	 */
+	void setReaction(Reaction value);
+
+} // ReactionFired

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

@@ -61,6 +61,15 @@ public interface SexecFactory extends EFactory {
 	 */
 	NamedElement createNamedElement();
 
+	/**
+	 * Returns a new object of class '<em>Mapped Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Mapped Element</em>'.
+	 * @generated
+	 */
+	MappedElement createMappedElement();
+
 	/**
 	 * Returns a new object of class '<em>Check</em>'.
 	 * <!-- begin-user-doc -->
@@ -160,6 +169,15 @@ public interface SexecFactory extends EFactory {
 	 */
 	StateCase createStateCase();
 
+	/**
+	 * Returns a new object of class '<em>Reaction Fired</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Reaction Fired</em>'.
+	 * @generated
+	 */
+	ReactionFired createReactionFired();
+
 	/**
 	 * Returns a new object of class '<em>Check Ref</em>'.
 	 * <!-- begin-user-doc -->

+ 260 - 32
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/SexecPackage.java

@@ -68,7 +68,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getExecutionFlow()
 	 * @generated
 	 */
-	int EXECUTION_FLOW = 1;
+	int EXECUTION_FLOW = 2;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.NamedElementImpl <em>Named Element</em>}' class.
@@ -98,6 +98,34 @@ public interface SexecPackage extends EPackage {
 	 */
 	int NAMED_ELEMENT_FEATURE_COUNT = 1;
 
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.MappedElementImpl <em>Mapped Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sexec.impl.MappedElementImpl
+	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getMappedElement()
+	 * @generated
+	 */
+	int MAPPED_ELEMENT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Source Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAPPED_ELEMENT__SOURCE_ELEMENT = 0;
+
+	/**
+	 * The number of structural features of the '<em>Mapped Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAPPED_ELEMENT_FEATURE_COUNT = 1;
+
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -178,7 +206,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getExecutionState()
 	 * @generated
 	 */
-	int EXECUTION_STATE = 2;
+	int EXECUTION_STATE = 3;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.ReactionImpl <em>Reaction</em>}' class.
@@ -188,7 +216,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getReaction()
 	 * @generated
 	 */
-	int REACTION = 3;
+	int REACTION = 4;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.StepImpl <em>Step</em>}' class.
@@ -198,7 +226,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getStep()
 	 * @generated
 	 */
-	int STEP = 6;
+	int STEP = 7;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.SequenceImpl <em>Sequence</em>}' class.
@@ -208,7 +236,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getSequence()
 	 * @generated
 	 */
-	int SEQUENCE = 7;
+	int SEQUENCE = 8;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.CheckImpl <em>Check</em>}' class.
@@ -218,7 +246,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getCheck()
 	 * @generated
 	 */
-	int CHECK = 8;
+	int CHECK = 9;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.IfImpl <em>If</em>}' class.
@@ -228,7 +256,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getIf()
 	 * @generated
 	 */
-	int IF = 10;
+	int IF = 11;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.ExecutionImpl <em>Execution</em>}' class.
@@ -238,7 +266,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getExecution()
 	 * @generated
 	 */
-	int EXECUTION = 11;
+	int EXECUTION = 12;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.EnterStateImpl <em>Enter State</em>}' class.
@@ -248,7 +276,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getEnterState()
 	 * @generated
 	 */
-	int ENTER_STATE = 12;
+	int ENTER_STATE = 13;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.ExitStateImpl <em>Exit State</em>}' class.
@@ -258,7 +286,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getExitState()
 	 * @generated
 	 */
-	int EXIT_STATE = 13;
+	int EXIT_STATE = 14;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.StateVectorImpl <em>State Vector</em>}' class.
@@ -268,7 +296,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getStateVector()
 	 * @generated
 	 */
-	int STATE_VECTOR = 4;
+	int STATE_VECTOR = 5;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.TimeEventImpl <em>Time Event</em>}' class.
@@ -278,7 +306,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTimeEvent()
 	 * @generated
 	 */
-	int TIME_EVENT = 5;
+	int TIME_EVENT = 6;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -289,6 +317,15 @@ public interface SexecPackage extends EPackage {
 	 */
 	int EXECUTION_STATE__NAME = NAMED_ELEMENT__NAME;
 
+	/**
+	 * The feature id for the '<em><b>Source Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_STATE__SOURCE_ELEMENT = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
 	/**
 	 * The feature id for the '<em><b>Simple Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -296,7 +333,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__SIMPLE_NAME = NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int EXECUTION_STATE__SIMPLE_NAME = NAMED_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Leaf</b></em>' attribute.
@@ -305,7 +342,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__LEAF = NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int EXECUTION_STATE__LEAF = NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>React Sequence</b></em>' containment reference.
@@ -314,7 +351,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__REACT_SEQUENCE = NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int EXECUTION_STATE__REACT_SEQUENCE = NAMED_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Reactions</b></em>' containment reference list.
@@ -323,7 +360,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__REACTIONS = NAMED_ELEMENT_FEATURE_COUNT + 3;
+	int EXECUTION_STATE__REACTIONS = NAMED_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Entry Action</b></em>' containment reference.
@@ -332,7 +369,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__ENTRY_ACTION = NAMED_ELEMENT_FEATURE_COUNT + 4;
+	int EXECUTION_STATE__ENTRY_ACTION = NAMED_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Exit Action</b></em>' containment reference.
@@ -341,7 +378,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__EXIT_ACTION = NAMED_ELEMENT_FEATURE_COUNT + 5;
+	int EXECUTION_STATE__EXIT_ACTION = NAMED_ELEMENT_FEATURE_COUNT + 6;
 
 	/**
 	 * The feature id for the '<em><b>Enter Sequence</b></em>' containment reference.
@@ -350,7 +387,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__ENTER_SEQUENCE = NAMED_ELEMENT_FEATURE_COUNT + 6;
+	int EXECUTION_STATE__ENTER_SEQUENCE = NAMED_ELEMENT_FEATURE_COUNT + 7;
 
 	/**
 	 * The feature id for the '<em><b>Exit Sequence</b></em>' containment reference.
@@ -359,7 +396,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__EXIT_SEQUENCE = NAMED_ELEMENT_FEATURE_COUNT + 7;
+	int EXECUTION_STATE__EXIT_SEQUENCE = NAMED_ELEMENT_FEATURE_COUNT + 8;
 
 	/**
 	 * The feature id for the '<em><b>State Vector</b></em>' containment reference.
@@ -368,7 +405,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE__STATE_VECTOR = NAMED_ELEMENT_FEATURE_COUNT + 8;
+	int EXECUTION_STATE__STATE_VECTOR = NAMED_ELEMENT_FEATURE_COUNT + 9;
 
 	/**
 	 * The number of structural features of the '<em>Execution State</em>' class.
@@ -377,7 +414,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EXECUTION_STATE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 9;
+	int EXECUTION_STATE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 10;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -388,6 +425,15 @@ public interface SexecPackage extends EPackage {
 	 */
 	int REACTION__NAME = NAMED_ELEMENT__NAME;
 
+	/**
+	 * The feature id for the '<em><b>Source Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REACTION__SOURCE_ELEMENT = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
 	/**
 	 * The feature id for the '<em><b>Check</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -395,7 +441,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION__CHECK = NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int REACTION__CHECK = NAMED_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Effect</b></em>' containment reference.
@@ -404,7 +450,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION__EFFECT = NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int REACTION__EFFECT = NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Transition</b></em>' attribute.
@@ -413,7 +459,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION__TRANSITION = NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int REACTION__TRANSITION = NAMED_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of structural features of the '<em>Reaction</em>' class.
@@ -422,7 +468,7 @@ public interface SexecPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;
+	int REACTION_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Size</b></em>' attribute.
@@ -585,7 +631,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getCall()
 	 * @generated
 	 */
-	int CALL = 14;
+	int CALL = 15;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.ScheduleTimeEventImpl <em>Schedule Time Event</em>}' class.
@@ -595,7 +641,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getScheduleTimeEvent()
 	 * @generated
 	 */
-	int SCHEDULE_TIME_EVENT = 15;
+	int SCHEDULE_TIME_EVENT = 16;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.UnscheduleTimeEventImpl <em>Unschedule Time Event</em>}' class.
@@ -605,7 +651,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getUnscheduleTimeEvent()
 	 * @generated
 	 */
-	int UNSCHEDULE_TIME_EVENT = 16;
+	int UNSCHEDULE_TIME_EVENT = 17;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.CheckRefImpl <em>Check Ref</em>}' class.
@@ -615,7 +661,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getCheckRef()
 	 * @generated
 	 */
-	int CHECK_REF = 9;
+	int CHECK_REF = 10;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -950,7 +996,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getStateSwitch()
 	 * @generated
 	 */
-	int STATE_SWITCH = 17;
+	int STATE_SWITCH = 18;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -996,7 +1042,7 @@ public interface SexecPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getStateCase()
 	 * @generated
 	 */
-	int STATE_CASE = 18;
+	int STATE_CASE = 19;
 
 	/**
 	 * The feature id for the '<em><b>State</b></em>' reference.
@@ -1026,6 +1072,90 @@ public interface SexecPackage extends EPackage {
 	int STATE_CASE_FEATURE_COUNT = 2;
 
 
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.TraceImpl <em>Trace</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sexec.impl.TraceImpl
+	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTrace()
+	 * @generated
+	 */
+	int TRACE = 20;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE__NAME = STEP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE__COMMENT = STEP__COMMENT;
+
+	/**
+	 * The number of structural features of the '<em>Trace</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRACE_FEATURE_COUNT = STEP_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sexec.impl.ReactionFiredImpl <em>Reaction Fired</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sexec.impl.ReactionFiredImpl
+	 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getReactionFired()
+	 * @generated
+	 */
+	int REACTION_FIRED = 21;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REACTION_FIRED__NAME = TRACE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REACTION_FIRED__COMMENT = TRACE__COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Reaction</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REACTION_FIRED__REACTION = TRACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Reaction Fired</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REACTION_FIRED_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 -->
@@ -1253,6 +1383,27 @@ public interface SexecPackage extends EPackage {
 	 */
 	EAttribute getNamedElement_Name();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.MappedElement <em>Mapped Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Mapped Element</em>'.
+	 * @see org.yakindu.sct.model.sexec.MappedElement
+	 * @generated
+	 */
+	EClass getMappedElement();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sexec.MappedElement#getSourceElement <em>Source Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Source Element</em>'.
+	 * @see org.yakindu.sct.model.sexec.MappedElement#getSourceElement()
+	 * @see #getMappedElement()
+	 * @generated
+	 */
+	EReference getMappedElement_SourceElement();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.Check <em>Check</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1549,6 +1700,37 @@ public interface SexecPackage extends EPackage {
 	 */
 	EReference getStateCase_Step();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.Trace <em>Trace</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Trace</em>'.
+	 * @see org.yakindu.sct.model.sexec.Trace
+	 * @generated
+	 */
+	EClass getTrace();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.ReactionFired <em>Reaction Fired</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Reaction Fired</em>'.
+	 * @see org.yakindu.sct.model.sexec.ReactionFired
+	 * @generated
+	 */
+	EClass getReactionFired();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sexec.ReactionFired#getReaction <em>Reaction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Reaction</em>'.
+	 * @see org.yakindu.sct.model.sexec.ReactionFired#getReaction()
+	 * @see #getReactionFired()
+	 * @generated
+	 */
+	EReference getReactionFired_Reaction();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sexec.CheckRef <em>Check Ref</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1821,6 +2003,24 @@ public interface SexecPackage extends EPackage {
 		 */
 		EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.MappedElementImpl <em>Mapped Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sexec.impl.MappedElementImpl
+		 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getMappedElement()
+		 * @generated
+		 */
+		EClass MAPPED_ELEMENT = eINSTANCE.getMappedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Source Element</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MAPPED_ELEMENT__SOURCE_ELEMENT = eINSTANCE.getMappedElement_SourceElement();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.CheckImpl <em>Check</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -2069,6 +2269,34 @@ public interface SexecPackage extends EPackage {
 		 */
 		EReference STATE_CASE__STEP = eINSTANCE.getStateCase_Step();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.TraceImpl <em>Trace</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sexec.impl.TraceImpl
+		 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getTrace()
+		 * @generated
+		 */
+		EClass TRACE = eINSTANCE.getTrace();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.ReactionFiredImpl <em>Reaction Fired</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sexec.impl.ReactionFiredImpl
+		 * @see org.yakindu.sct.model.sexec.impl.SexecPackageImpl#getReactionFired()
+		 * @generated
+		 */
+		EClass REACTION_FIRED = eINSTANCE.getReactionFired();
+
+		/**
+		 * The meta object literal for the '<em><b>Reaction</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference REACTION_FIRED__REACTION = eINSTANCE.getReactionFired_Reaction();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sexec.impl.CheckRefImpl <em>Check Ref</em>}' class.
 		 * <!-- begin-user-doc -->

+ 21 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/Trace.java

@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Trace</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.sct.model.sexec.SexecPackage#getTrace()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Trace extends Step {
+} // Trace

+ 94 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/ExecutionStateImpl.java

@@ -12,11 +12,13 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.sct.model.sexec.ExecutionState;
+import org.yakindu.sct.model.sexec.MappedElement;
 import org.yakindu.sct.model.sexec.Reaction;
 import org.yakindu.sct.model.sexec.Sequence;
 import org.yakindu.sct.model.sexec.SexecPackage;
@@ -30,6 +32,7 @@ import org.yakindu.sct.model.sexec.Step;
  * <p>
  * The following features are implemented:
  * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.ExecutionStateImpl#getSourceElement <em>Source Element</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sexec.impl.ExecutionStateImpl#getSimpleName <em>Simple Name</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sexec.impl.ExecutionStateImpl#isLeaf <em>Leaf</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sexec.impl.ExecutionStateImpl#getReactSequence <em>React Sequence</em>}</li>
@@ -45,6 +48,16 @@ import org.yakindu.sct.model.sexec.Step;
  * @generated
  */
 public class ExecutionStateImpl extends NamedElementImpl implements ExecutionState {
+	/**
+	 * The cached value of the '{@link #getSourceElement() <em>Source Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject sourceElement;
+
 	/**
 	 * The default value of the '{@link #getSimpleName() <em>Simple Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -174,6 +187,44 @@ public class ExecutionStateImpl extends NamedElementImpl implements ExecutionSta
 		return SexecPackage.Literals.EXECUTION_STATE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getSourceElement() {
+		if (sourceElement != null && sourceElement.eIsProxy()) {
+			InternalEObject oldSourceElement = (InternalEObject)sourceElement;
+			sourceElement = eResolveProxy(oldSourceElement);
+			if (sourceElement != oldSourceElement) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT, oldSourceElement, sourceElement));
+			}
+		}
+		return sourceElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetSourceElement() {
+		return sourceElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceElement(EObject newSourceElement) {
+		EObject oldSourceElement = sourceElement;
+		sourceElement = newSourceElement;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT, oldSourceElement, sourceElement));
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -520,6 +571,9 @@ public class ExecutionStateImpl extends NamedElementImpl implements ExecutionSta
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT:
+				if (resolve) return getSourceElement();
+				return basicGetSourceElement();
 			case SexecPackage.EXECUTION_STATE__SIMPLE_NAME:
 				return getSimpleName();
 			case SexecPackage.EXECUTION_STATE__LEAF:
@@ -551,6 +605,9 @@ public class ExecutionStateImpl extends NamedElementImpl implements ExecutionSta
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT:
+				setSourceElement((EObject)newValue);
+				return;
 			case SexecPackage.EXECUTION_STATE__SIMPLE_NAME:
 				setSimpleName((String)newValue);
 				return;
@@ -591,6 +648,9 @@ public class ExecutionStateImpl extends NamedElementImpl implements ExecutionSta
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT:
+				setSourceElement((EObject)null);
+				return;
 			case SexecPackage.EXECUTION_STATE__SIMPLE_NAME:
 				setSimpleName(SIMPLE_NAME_EDEFAULT);
 				return;
@@ -630,6 +690,8 @@ public class ExecutionStateImpl extends NamedElementImpl implements ExecutionSta
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT:
+				return sourceElement != null;
 			case SexecPackage.EXECUTION_STATE__SIMPLE_NAME:
 				return SIMPLE_NAME_EDEFAULT == null ? simpleName != null : !SIMPLE_NAME_EDEFAULT.equals(simpleName);
 			case SexecPackage.EXECUTION_STATE__LEAF:
@@ -652,6 +714,38 @@ public class ExecutionStateImpl extends NamedElementImpl implements ExecutionSta
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MappedElement.class) {
+			switch (derivedFeatureID) {
+				case SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT: return SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MappedElement.class) {
+			switch (baseFeatureID) {
+				case SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT: return SexecPackage.EXECUTION_STATE__SOURCE_ELEMENT;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 161 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/MappedElementImpl.java

@@ -0,0 +1,161 @@
+/**
+ * <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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.yakindu.sct.model.sexec.MappedElement;
+import org.yakindu.sct.model.sexec.SexecPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mapped Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.MappedElementImpl#getSourceElement <em>Source Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MappedElementImpl extends EObjectImpl implements MappedElement {
+	/**
+	 * The cached value of the '{@link #getSourceElement() <em>Source Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject sourceElement;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MappedElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SexecPackage.Literals.MAPPED_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getSourceElement() {
+		if (sourceElement != null && sourceElement.eIsProxy()) {
+			InternalEObject oldSourceElement = (InternalEObject)sourceElement;
+			sourceElement = eResolveProxy(oldSourceElement);
+			if (sourceElement != oldSourceElement) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT, oldSourceElement, sourceElement));
+			}
+		}
+		return sourceElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetSourceElement() {
+		return sourceElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceElement(EObject newSourceElement) {
+		EObject oldSourceElement = sourceElement;
+		sourceElement = newSourceElement;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT, oldSourceElement, sourceElement));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT:
+				if (resolve) return getSourceElement();
+				return basicGetSourceElement();
+		}
+		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.MAPPED_ELEMENT__SOURCE_ELEMENT:
+				setSourceElement((EObject)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT:
+				setSourceElement((EObject)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT:
+				return sourceElement != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //MappedElementImpl

+ 160 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/ReactionFiredImpl.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.Reaction;
+import org.yakindu.sct.model.sexec.ReactionFired;
+import org.yakindu.sct.model.sexec.SexecPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reaction Fired</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.ReactionFiredImpl#getReaction <em>Reaction</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ReactionFiredImpl extends TraceImpl implements ReactionFired {
+	/**
+	 * The cached value of the '{@link #getReaction() <em>Reaction</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReaction()
+	 * @generated
+	 * @ordered
+	 */
+	protected Reaction reaction;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReactionFiredImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SexecPackage.Literals.REACTION_FIRED;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Reaction getReaction() {
+		if (reaction != null && reaction.eIsProxy()) {
+			InternalEObject oldReaction = (InternalEObject)reaction;
+			reaction = (Reaction)eResolveProxy(oldReaction);
+			if (reaction != oldReaction) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.REACTION_FIRED__REACTION, oldReaction, reaction));
+			}
+		}
+		return reaction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Reaction basicGetReaction() {
+		return reaction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReaction(Reaction newReaction) {
+		Reaction oldReaction = reaction;
+		reaction = newReaction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.REACTION_FIRED__REACTION, oldReaction, reaction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SexecPackage.REACTION_FIRED__REACTION:
+				if (resolve) return getReaction();
+				return basicGetReaction();
+		}
+		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.REACTION_FIRED__REACTION:
+				setReaction((Reaction)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SexecPackage.REACTION_FIRED__REACTION:
+				setReaction((Reaction)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SexecPackage.REACTION_FIRED__REACTION:
+				return reaction != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ReactionFiredImpl

+ 94 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/ReactionImpl.java

@@ -9,9 +9,11 @@ package org.yakindu.sct.model.sexec.impl;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.yakindu.sct.model.sexec.Check;
+import org.yakindu.sct.model.sexec.MappedElement;
 import org.yakindu.sct.model.sexec.Reaction;
 import org.yakindu.sct.model.sexec.SexecPackage;
 import org.yakindu.sct.model.sexec.Step;
@@ -23,6 +25,7 @@ import org.yakindu.sct.model.sexec.Step;
  * <p>
  * The following features are implemented:
  * <ul>
+ *   <li>{@link org.yakindu.sct.model.sexec.impl.ReactionImpl#getSourceElement <em>Source Element</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sexec.impl.ReactionImpl#getCheck <em>Check</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sexec.impl.ReactionImpl#getEffect <em>Effect</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sexec.impl.ReactionImpl#isTransition <em>Transition</em>}</li>
@@ -32,6 +35,16 @@ import org.yakindu.sct.model.sexec.Step;
  * @generated
  */
 public class ReactionImpl extends NamedElementImpl implements Reaction {
+	/**
+	 * The cached value of the '{@link #getSourceElement() <em>Source Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject sourceElement;
+
 	/**
 	 * The cached value of the '{@link #getCheck() <em>Check</em>}' containment reference.
 	 * <!-- begin-user-doc -->
@@ -91,6 +104,44 @@ public class ReactionImpl extends NamedElementImpl implements Reaction {
 		return SexecPackage.Literals.REACTION;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getSourceElement() {
+		if (sourceElement != null && sourceElement.eIsProxy()) {
+			InternalEObject oldSourceElement = (InternalEObject)sourceElement;
+			sourceElement = eResolveProxy(oldSourceElement);
+			if (sourceElement != oldSourceElement) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SexecPackage.REACTION__SOURCE_ELEMENT, oldSourceElement, sourceElement));
+			}
+		}
+		return sourceElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetSourceElement() {
+		return sourceElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceElement(EObject newSourceElement) {
+		EObject oldSourceElement = sourceElement;
+		sourceElement = newSourceElement;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SexecPackage.REACTION__SOURCE_ELEMENT, oldSourceElement, sourceElement));
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -222,6 +273,9 @@ public class ReactionImpl extends NamedElementImpl implements Reaction {
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case SexecPackage.REACTION__SOURCE_ELEMENT:
+				if (resolve) return getSourceElement();
+				return basicGetSourceElement();
 			case SexecPackage.REACTION__CHECK:
 				return getCheck();
 			case SexecPackage.REACTION__EFFECT:
@@ -240,6 +294,9 @@ public class ReactionImpl extends NamedElementImpl implements Reaction {
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case SexecPackage.REACTION__SOURCE_ELEMENT:
+				setSourceElement((EObject)newValue);
+				return;
 			case SexecPackage.REACTION__CHECK:
 				setCheck((Check)newValue);
 				return;
@@ -261,6 +318,9 @@ public class ReactionImpl extends NamedElementImpl implements Reaction {
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case SexecPackage.REACTION__SOURCE_ELEMENT:
+				setSourceElement((EObject)null);
+				return;
 			case SexecPackage.REACTION__CHECK:
 				setCheck((Check)null);
 				return;
@@ -282,6 +342,8 @@ public class ReactionImpl extends NamedElementImpl implements Reaction {
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case SexecPackage.REACTION__SOURCE_ELEMENT:
+				return sourceElement != null;
 			case SexecPackage.REACTION__CHECK:
 				return check != null;
 			case SexecPackage.REACTION__EFFECT:
@@ -292,6 +354,38 @@ public class ReactionImpl extends NamedElementImpl implements Reaction {
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == MappedElement.class) {
+			switch (derivedFeatureID) {
+				case SexecPackage.REACTION__SOURCE_ELEMENT: return SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == MappedElement.class) {
+			switch (baseFeatureID) {
+				case SexecPackage.MAPPED_ELEMENT__SOURCE_ELEMENT: return SexecPackage.REACTION__SOURCE_ELEMENT;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

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

@@ -76,6 +76,7 @@ public class SexecFactoryImpl extends EFactoryImpl implements SexecFactory {
 	public EObject create(EClass eClass) {
 		switch (eClass.getClassifierID()) {
 			case SexecPackage.NAMED_ELEMENT: return createNamedElement();
+			case SexecPackage.MAPPED_ELEMENT: return createMappedElement();
 			case SexecPackage.EXECUTION_FLOW: return createExecutionFlow();
 			case SexecPackage.EXECUTION_STATE: return createExecutionState();
 			case SexecPackage.REACTION: return createReaction();
@@ -93,6 +94,7 @@ 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.REACTION_FIRED: return createReactionFired();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -138,6 +140,16 @@ public class SexecFactoryImpl extends EFactoryImpl implements SexecFactory {
 		return namedElement;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MappedElement createMappedElement() {
+		MappedElementImpl mappedElement = new MappedElementImpl();
+		return mappedElement;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -248,6 +260,16 @@ public class SexecFactoryImpl extends EFactoryImpl implements SexecFactory {
 		return stateCase;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ReactionFired createReactionFired() {
+		ReactionFiredImpl reactionFired = new ReactionFiredImpl();
+		return reactionFired;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

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

@@ -20,8 +20,10 @@ import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sexec.ExecutionState;
 import org.yakindu.sct.model.sexec.ExitState;
 import org.yakindu.sct.model.sexec.If;
+import org.yakindu.sct.model.sexec.MappedElement;
 import org.yakindu.sct.model.sexec.NamedElement;
 import org.yakindu.sct.model.sexec.Reaction;
+import org.yakindu.sct.model.sexec.ReactionFired;
 import org.yakindu.sct.model.sexec.ScheduleTimeEvent;
 import org.yakindu.sct.model.sexec.Sequence;
 import org.yakindu.sct.model.sexec.SexecFactory;
@@ -31,6 +33,7 @@ import org.yakindu.sct.model.sexec.StateSwitch;
 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.UnscheduleTimeEvent;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 
@@ -69,6 +72,13 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 	 */
 	private EClass namedElementEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass mappedElementEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -153,6 +163,20 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 	 */
 	private EClass stateCaseEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass traceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reactionFiredEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -427,6 +451,24 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getMappedElement() {
+		return mappedElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getMappedElement_SourceElement() {
+		return (EReference)mappedElementEClass.getEStructuralFeatures().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -679,6 +721,33 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		return (EReference)stateCaseEClass.getEStructuralFeatures().get(1);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTrace() {
+		return traceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getReactionFired() {
+		return reactionFiredEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getReactionFired_Reaction() {
+		return (EReference)reactionFiredEClass.getEStructuralFeatures().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -773,6 +842,9 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		namedElementEClass = createEClass(NAMED_ELEMENT);
 		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
 
+		mappedElementEClass = createEClass(MAPPED_ELEMENT);
+		createEReference(mappedElementEClass, MAPPED_ELEMENT__SOURCE_ELEMENT);
+
 		executionFlowEClass = createEClass(EXECUTION_FLOW);
 		createEReference(executionFlowEClass, EXECUTION_FLOW__STATES);
 		createEReference(executionFlowEClass, EXECUTION_FLOW__ENTER_SEQUENCE);
@@ -844,6 +916,11 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		stateCaseEClass = createEClass(STATE_CASE);
 		createEReference(stateCaseEClass, STATE_CASE__STATE);
 		createEReference(stateCaseEClass, STATE_CASE__STEP);
+
+		traceEClass = createEClass(TRACE);
+
+		reactionFiredEClass = createEClass(REACTION_FIRED);
+		createEReference(reactionFiredEClass, REACTION_FIRED__REACTION);
 	}
 
 	/**
@@ -880,7 +957,9 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		executionFlowEClass.getESuperTypes().add(theSGraphPackage.getScopedElement());
 		executionFlowEClass.getESuperTypes().add(this.getNamedElement());
 		executionStateEClass.getESuperTypes().add(this.getNamedElement());
+		executionStateEClass.getESuperTypes().add(this.getMappedElement());
 		reactionEClass.getESuperTypes().add(this.getNamedElement());
+		reactionEClass.getESuperTypes().add(this.getMappedElement());
 		timeEventEClass.getESuperTypes().add(theSGraphPackage.getEvent());
 		stepEClass.getESuperTypes().add(this.getNamedElement());
 		sequenceEClass.getESuperTypes().add(this.getStep());
@@ -894,11 +973,16 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		scheduleTimeEventEClass.getESuperTypes().add(this.getStep());
 		unscheduleTimeEventEClass.getESuperTypes().add(this.getStep());
 		stateSwitchEClass.getESuperTypes().add(this.getStep());
+		traceEClass.getESuperTypes().add(this.getStep());
+		reactionFiredEClass.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);
 		initEAttribute(getNamedElement_Name(), ecorePackage.getEString(), "name", null, 0, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(mappedElementEClass, MappedElement.class, "MappedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getMappedElement_SourceElement(), ecorePackage.getEObject(), null, "sourceElement", null, 0, 1, MappedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		initEClass(executionFlowEClass, ExecutionFlow.class, "ExecutionFlow", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getExecutionFlow_States(), this.getExecutionState(), null, "states", null, 0, -1, ExecutionFlow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getExecutionFlow_EnterSequence(), this.getSequence(), null, "enterSequence", null, 0, 1, ExecutionFlow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -971,6 +1055,11 @@ public class SexecPackageImpl extends EPackageImpl implements SexecPackage {
 		initEReference(getStateCase_State(), this.getExecutionState(), null, "state", null, 0, 1, StateCase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getStateCase_Step(), this.getStep(), null, "step", null, 0, 1, StateCase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(traceEClass, Trace.class, "Trace", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		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);
+
 		// Create resource
 		createResource(eNS_URI);
 	}

+ 43 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/impl/TraceImpl.java

@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.sct.model.sexec.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.yakindu.sct.model.sexec.SexecPackage;
+import org.yakindu.sct.model.sexec.Trace;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trace</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TraceImpl extends StepImpl implements Trace {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SexecPackage.Literals.TRACE;
+	}
+
+} //TraceImpl

+ 3 - 1
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/FactoryExtension.xtend

@@ -64,7 +64,8 @@ class FactoryExtension {
 	def ExecutionState create r : sexecFactory.createExecutionState create(RegularState state){
 		if (state != null) {
 			r.simpleName = if (state instanceof FinalState) "_final_" else state.name
-			r.name = state.fullyQualifiedName.toString.replaceAll(" ", "")		
+			r.name = state.fullyQualifiedName.toString.replaceAll(" ", "")	
+			r.sourceElement = state	
 		}
 	}
 	
@@ -75,6 +76,7 @@ class FactoryExtension {
 	def Reaction create r : sexecFactory.createReaction create(Transition tr){
 		r.name = tr.id
 		r.transition = true
+		r.sourceElement = tr
 	}
 	
 	def Reaction create r : sexecFactory.createReaction create(LocalReaction lr){

+ 11 - 0
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/ModelSequencer.xtend

@@ -233,6 +233,10 @@ class ModelSequencer {
 		val r = t.create 
 		if (t.trigger != null) r.check = mapToCheck(t.trigger)
 		r.effect = mapToEffect(t)
+		
+		// TODO: move to other extension that can be added to module
+		(r.effect as Sequence).steps += r.newReactionFired()
+	
 		return r
 	}
 
@@ -307,11 +311,18 @@ class ModelSequencer {
 		if (t.target != null && t.target instanceof State) {
 			sequence.steps.add((t.target as State).create.enterSequence.newCall)	
 		}
+		
 			
 		return sequence
 	}	
 	
 	
+	def newReactionFired(Reaction r) {
+		val rf = sexecFactory.createReactionFired
+		rf.reaction = r
+		rf
+	}
+	
 	
 	def List<State> exitStates(Transition t) {
 		val l = t.source.containers

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

@@ -94,6 +94,10 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 				return createNamedElementAdapter();
 			}
 			@Override
+			public Adapter caseMappedElement(MappedElement object) {
+				return createMappedElementAdapter();
+			}
+			@Override
 			public Adapter caseExecutionFlow(ExecutionFlow object) {
 				return createExecutionFlowAdapter();
 			}
@@ -166,6 +170,14 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 				return createStateCaseAdapter();
 			}
 			@Override
+			public Adapter caseTrace(Trace object) {
+				return createTraceAdapter();
+			}
+			@Override
+			public Adapter caseReactionFired(ReactionFired object) {
+				return createReactionFiredAdapter();
+			}
+			@Override
 			public Adapter caseScopedElement(ScopedElement object) {
 				return createScopedElementAdapter();
 			}
@@ -257,6 +269,20 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.MappedElement <em>Mapped Element</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.MappedElement
+	 * @generated
+	 */
+	public Adapter createMappedElementAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.Check <em>Check</em>}'.
 	 * <!-- begin-user-doc -->
@@ -425,6 +451,34 @@ public class SexecAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sexec.Trace <em>Trace</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.Trace
+	 * @generated
+	 */
+	public Adapter createTraceAdapter() {
+		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 -->
+	 * 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.ReactionFired
+	 * @generated
+	 */
+	public Adapter createReactionFiredAdapter() {
+		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 -->

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

@@ -95,6 +95,12 @@ public class SexecSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SexecPackage.MAPPED_ELEMENT: {
+				MappedElement mappedElement = (MappedElement)theEObject;
+				T result = caseMappedElement(mappedElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SexecPackage.EXECUTION_FLOW: {
 				ExecutionFlow executionFlow = (ExecutionFlow)theEObject;
 				T result = caseExecutionFlow(executionFlow);
@@ -107,6 +113,7 @@ public class SexecSwitch<T> extends Switch<T> {
 				ExecutionState executionState = (ExecutionState)theEObject;
 				T result = caseExecutionState(executionState);
 				if (result == null) result = caseNamedElement(executionState);
+				if (result == null) result = caseMappedElement(executionState);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -114,6 +121,7 @@ public class SexecSwitch<T> extends Switch<T> {
 				Reaction reaction = (Reaction)theEObject;
 				T result = caseReaction(reaction);
 				if (result == null) result = caseNamedElement(reaction);
+				if (result == null) result = caseMappedElement(reaction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -234,6 +242,23 @@ public class SexecSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SexecPackage.TRACE: {
+				Trace trace = (Trace)theEObject;
+				T result = caseTrace(trace);
+				if (result == null) result = caseStep(trace);
+				if (result == null) result = caseNamedElement(trace);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SexecPackage.REACTION_FIRED: {
+				ReactionFired reactionFired = (ReactionFired)theEObject;
+				T result = caseReactionFired(reactionFired);
+				if (result == null) result = caseTrace(reactionFired);
+				if (result == null) result = caseStep(reactionFired);
+				if (result == null) result = caseNamedElement(reactionFired);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -298,6 +323,21 @@ public class SexecSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Mapped Element</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>Mapped Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMappedElement(MappedElement object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Check</em>'.
 	 * <!-- begin-user-doc -->
@@ -478,6 +518,36 @@ public class SexecSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Trace</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</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTrace(Trace object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reaction Fired</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>Reaction Fired</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReactionFired(ReactionFired object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Check Ref</em>'.
 	 * <!-- begin-user-doc -->

+ 2 - 0
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/FactoryExtension.java

@@ -158,6 +158,7 @@ public class FactoryExtension {
         String _string = _fullyQualifiedName.toString();
         String _replaceAll = _string.replaceAll(" ", "");
         r.setName(_replaceAll);
+        r.setSourceElement(state);
       }
     }
     return r;
@@ -201,6 +202,7 @@ public class FactoryExtension {
       String _id = this.sce.id(tr);
       r.setName(_id);
       r.setTransition(true);
+      r.setSourceElement(tr);
     }
     return r;
   }

+ 17 - 0
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/ModelSequencer.java

@@ -29,6 +29,7 @@ import org.yakindu.sct.model.sexec.ExecutionState;
 import org.yakindu.sct.model.sexec.ExitState;
 import org.yakindu.sct.model.sexec.If;
 import org.yakindu.sct.model.sexec.Reaction;
+import org.yakindu.sct.model.sexec.ReactionFired;
 import org.yakindu.sct.model.sexec.ScheduleTimeEvent;
 import org.yakindu.sct.model.sexec.Sequence;
 import org.yakindu.sct.model.sexec.SexecFactory;
@@ -333,6 +334,10 @@ public class ModelSequencer {
       }
       Sequence _mapToEffect = this.mapToEffect(t);
       r.setEffect(_mapToEffect);
+      Step _effect = r.getEffect();
+      EList<Step> _steps = ((Sequence) _effect).getSteps();
+      ReactionFired _newReactionFired = this.newReactionFired(r);
+      CollectionExtensions.<ReactionFired>operator_add(_steps, _newReactionFired);
       return r;
     }
   }
@@ -549,6 +554,18 @@ public class ModelSequencer {
     }
   }
   
+  public ReactionFired newReactionFired(final Reaction r) {
+    ReactionFired _xblockexpression = null;
+    {
+      SexecFactory _sexecFactory = this.sexecFactory();
+      ReactionFired _createReactionFired = _sexecFactory.createReactionFired();
+      final ReactionFired rf = _createReactionFired;
+      rf.setReaction(r);
+      _xblockexpression = (rf);
+    }
+    return _xblockexpression;
+  }
+  
   public List<State> exitStates(final Transition t) {
     List<State> _xblockexpression = null;
     {