FUML13-27 Input parameter activity nodes should fire first

Change-Id: I0ccceb25a2889c88193a67b6b6a6d63a2e938278
Signed-off-by: jeremie.tatibouet <jeremie.tatibouet@cea.fr>
diff --git a/bundles/core/engines/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/impl/Activities/IntermediateActivities/ActivityNodeActivationGroup.java b/bundles/core/engines/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/impl/Activities/IntermediateActivities/ActivityNodeActivationGroup.java
index d2e06d2..1f66e2f 100644
--- a/bundles/core/engines/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/impl/Activities/IntermediateActivities/ActivityNodeActivationGroup.java
+++ b/bundles/core/engines/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/impl/Activities/IntermediateActivities/ActivityNodeActivationGroup.java
@@ -66,15 +66,17 @@
 	public List<IActivityNodeActivation> suspendedActivations = new ArrayList<IActivityNodeActivation>();
 
 	public void run(List<IActivityNodeActivation> activations) {
-		// Run the given node activations and then (concurrently) send an offer
-		// to all activations for nodes with no incoming edges within the given
-		// set.
+		// Run the given node activations. 
+		// Then concurrently send offers to all input activity parameter node activations (if any). 
+		// Finally, concurrently send offers to all activations of other kinds of nodes that have 
+		// no incoming edges with the given set (if any).
 		for (int i = 0; i < activations.size(); i++) {
 			IActivityNodeActivation activation = activations.get(i);
 			activation.run();
 		}
 		Debug.println("[run] Checking for enabled nodes...");
-		List<IActivityNodeActivation> enabledActivations = new ArrayList<IActivityNodeActivation>();
+		List<IActivityNodeActivation> enabledParameterNodeActivations = new ArrayList<IActivityNodeActivation>();
+		List<IActivityNodeActivation> enabledOtherActivations = new ArrayList<IActivityNodeActivation>();
 		for (int i = 0; i < activations.size(); i++) {
 			IActivityNodeActivation activation = activations.get(i);
 			Debug.println("[run] Checking node " + activation.getNode().getName() + "...");
@@ -94,14 +96,23 @@
 				}
 				if (isEnabled) {
 					Debug.println("[run] Node " + activation.getNode().getName() + " is enabled.");
-					enabledActivations.add(activation);
+					if (activation instanceof ActivityParameterNodeActivation) {
+					    enabledParameterNodeActivations.add(activation);
+					} else {
+					    enabledOtherActivations.add(activation);
+					}
 				}
 			}
 		}
+		// *** Send offers to all enabled activity parameter nodes concurrently. ***
+		for (Iterator<IActivityNodeActivation> i = enabledParameterNodeActivations.iterator(); i.hasNext();) {
+		    IActivityNodeActivation activation = (IActivityNodeActivation) i.next();
+		    activation.receiveOffer();
+		}
 		// Debug.println("[run] " + enabledActivations.size() +
 		// " node(s) are enabled.");
-		// *** Send offers to all enabled nodes concurrently. ***
-		for (Iterator<IActivityNodeActivation> i = enabledActivations.iterator(); i.hasNext();) {
+		// *** Send offers to all other enabled nodes concurrently. ***
+		for (Iterator<IActivityNodeActivation> i = enabledOtherActivations.iterator(); i.hasNext();) {
 			IActivityNodeActivation activation = i.next();
 			Debug.println("[run] Sending offer to node " + activation.getNode().getName() + ".");
 			activation.receiveOffer();