[jboss-svn-commits] JBL Code SVN: r34253 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 28 08:13:47 EDT 2010


Author: KrisVerlaenen
Date: 2010-07-28 08:13:46 -0400 (Wed, 28 Jul 2010)
New Revision: 34253

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
Log:
JBRULES-2602: IntermediateCatchEvent node duplicated at runtime when used inside a subprocess
 - composite node now also checks for existence of incoming connection for Event node

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java	2010-07-28 12:05:51 UTC (rev 34252)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java	2010-07-28 12:13:46 UTC (rev 34253)
@@ -242,13 +242,35 @@
 		for (Node node: getCompositeNode().getNodes()) {
 			if (node instanceof EventNodeInterface) {
 				if (((EventNodeInterface) node).acceptsEvent(type, event)) {
-					EventNodeInstanceInterface eventNodeInstance = (EventNodeInstanceInterface) getNodeInstance(node);
-					eventNodeInstance.signalEvent(type, event);
+					if (node instanceof EventNode && ((EventNode) node).getFrom() == null) {
+						EventNodeInstanceInterface eventNodeInstance = (EventNodeInstanceInterface) getNodeInstance(node);
+						eventNodeInstance.signalEvent(type, event);
+					} else {
+						List<NodeInstance> nodeInstances = getNodeInstances(node.getId());
+						if (nodeInstances != null && !nodeInstances.isEmpty()) {
+							for (NodeInstance nodeInstance : nodeInstances) {
+								((EventNodeInstanceInterface) nodeInstance)
+										.signalEvent(type, event);
+							}
+						}
+					}
 				}
 			}
 		}
 	}
 
+	public List<NodeInstance> getNodeInstances(final long nodeId) {
+		List<NodeInstance> result = new ArrayList<NodeInstance>();
+		for (final Iterator<NodeInstance> iterator = this.nodeInstances
+				.iterator(); iterator.hasNext();) {
+			final NodeInstance nodeInstance = iterator.next();
+			if (nodeInstance.getNodeId() == nodeId) {
+				result.add(nodeInstance);
+			}
+		}
+		return result;
+	}
+
     public class CompositeNodeStartInstance extends NodeInstanceImpl {
 
         private static final long serialVersionUID = 400L;



More information about the jboss-svn-commits mailing list