[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