[jboss-svn-commits] JBL Code SVN: r26525 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 14 00:10:23 EDT 2009
Author: KrisVerlaenen
Date: 2009-05-14 00:10:23 -0400 (Thu, 14 May 2009)
New Revision: 26525
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
Log:
JBRULES-2054: XOR Split not working properly inside CompositeNode
- fixed generation of rules for nested nodes
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java 2009-05-14 02:47:19 UTC (rev 26524)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java 2009-05-14 04:10:23 UTC (rev 26525)
@@ -265,7 +265,7 @@
private String generateRules(final Process process) {
- StringBuilder builder = new StringBuilder();
+ StringBuffer builder = new StringBuffer();
if ( process instanceof WorkflowProcessImpl ) {
WorkflowProcessImpl ruleFlow = (WorkflowProcessImpl) process;
@@ -290,38 +290,44 @@
}
Node[] nodes = ruleFlow.getNodes();
- for ( int i = 0; i < nodes.length; i++ ) {
- if ( nodes[i] instanceof Split ) {
- Split split = (Split) nodes[i];
- if ( split.getType() == Split.TYPE_XOR || split.getType() == Split.TYPE_OR ) {
- for ( Connection connection : split.getDefaultOutgoingConnections() ) {
- Constraint constraint = split.getConstraint( connection );
- if ( "rule".equals( constraint.getType() ) ) {
- builder.append( createSplitRule( process,
- connection,
- split.getConstraint( connection ).getConstraint() ) );
- }
+ generateRules(nodes, process, builder);
+ }
+ return builder.toString();
+ }
+
+ private void generateRules(Node[] nodes, Process process, StringBuffer builder) {
+ for ( int i = 0; i < nodes.length; i++ ) {
+ if ( nodes[i] instanceof Split ) {
+ Split split = (Split) nodes[i];
+ if ( split.getType() == Split.TYPE_XOR || split.getType() == Split.TYPE_OR ) {
+ for ( Connection connection : split.getDefaultOutgoingConnections() ) {
+ Constraint constraint = split.getConstraint( connection );
+ if ( "rule".equals( constraint.getType() ) ) {
+ builder.append( createSplitRule( process,
+ connection,
+ split.getConstraint( connection ).getConstraint() ) );
}
}
- } else if ( nodes[i] instanceof MilestoneNode ) {
- MilestoneNode milestone = (MilestoneNode) nodes[i];
- builder.append( createMilestoneRule( process,
- milestone ) );
- } else if ( nodes[i] instanceof StartNode ) {
- StartNode startNode = (StartNode) nodes[i];
- List<Trigger> triggers = startNode.getTriggers();
- if ( triggers != null ) {
- for ( Trigger trigger : triggers ) {
- if ( trigger instanceof ConstraintTrigger ) {
- builder.append( createStartConstraintRule( process,
- (ConstraintTrigger) trigger ) );
- }
+ }
+ } else if ( nodes[i] instanceof MilestoneNode ) {
+ MilestoneNode milestone = (MilestoneNode) nodes[i];
+ builder.append( createMilestoneRule( process,
+ milestone ) );
+ } else if ( nodes[i] instanceof StartNode ) {
+ StartNode startNode = (StartNode) nodes[i];
+ List<Trigger> triggers = startNode.getTriggers();
+ if ( triggers != null ) {
+ for ( Trigger trigger : triggers ) {
+ if ( trigger instanceof ConstraintTrigger ) {
+ builder.append( createStartConstraintRule( process,
+ (ConstraintTrigger) trigger ) );
}
}
}
+ } else if ( nodes[i] instanceof NodeContainer ) {
+ generateRules( ((NodeContainer) nodes[i]).getNodes(), process, builder);
}
}
- return builder.toString();
}
private String createSplitRule(Process process,
More information about the jboss-svn-commits
mailing list