You are using variables (like $nissan) before binding them. Remember you can only use a variable "after" binding it.
[]s Edson 2008/8/20 Marcin Krol <[EMAIL PROTECTED]> > Hello everyone, > > I managed to produce my first example of Drools rules. However, I am having > problems with some field restrictions: > > Racing order:Unable to create restriction '[QualifiedIndentifierRestr: != > $nissan.pos ]' for field 'pos' in the rule 'Racing order' > > The problem is only SOME field restrictions produce this error. Other field > restrictions don't! > > If anybody has a hint or knows why this is not working, please let me know, > I would greatly appreciate it. > > > > The rules are: > > > #created on: 2008-08-20 > package com.sample > > #list any import classes here. > > #declare any global variables here > > dialect "mvel" > > import com.sample.Car; > > rule "Racing order" > when > > // Porsche was not red > $porsche : Car( manufacturer == "Porsche", > pos != $nissan.pos, > pos != $subaru.pos, > color != "red" > //color != "blue", > //color != $nissan.color, > //color != $subaru.color > ) > > > // First car was Nissan > $nissan : Car( manufacturer == "Nissan", > pos == 1, > color != $subaru.color, > color != $porsche.color ) > > // Subaru was blue > $subaru : Car( manufacturer == "Subaru", > //pos == 2, > pos != $nissan.pos, > pos != $porsche.pos, > color == "blue" ) > > // 2nd car was silver > Car( pos == 2, > color == "silver", > this in ( $nissan, $subaru, $porsche ) ) > > then > System.out.println( "Nissan " + $nissan.getPos() + " " + > $nissan.getColor() ); > System.out.println( "Subaru " + $subaru.getPos() + " " + > $subaru.getColor() ); > System.out.println( "Porsche " + $porsche.getPos() + " " + > $porsche.getColor() ); > > end > > > > > > The Car.java file: > > > package com.sample; > > public class Car { > private String manufacturer; > private String color; > private int pos; > > public Car() { > > } > > public Car(String manufacturer, String color, int pos) { > super(); > this.color = color; > this.pos = pos; > this.manufacturer = manufacturer; > } > > public String getManufacturer() { > return this.manufacturer; > } > > public float getPos() { > return this.pos; > } > > public String getColor() { > return this.color; > } > } > > > > > The CarExample.java file, which is the main app: > > > > package com.sample; > > import java.io.InputStreamReader; > > import org.drools.RuleBase; > import org.drools.RuleBaseFactory; > import org.drools.StatefulSession; > import org.drools.compiler.PackageBuilder; > import com.sample.Car; > > public class CarExample { > > public static void main(String[] args) throws Exception { > > final PackageBuilder builder = new PackageBuilder(); > builder.addPackageFromDrl( new InputStreamReader( > CarExample.class.getResourceAsStream( "CarExample.drl" ) ) ); > > final RuleBase ruleBase = RuleBaseFactory.newRuleBase(); > ruleBase.addPackage( builder.getPackage() ); > > final StatefulSession session = ruleBase.newStatefulSession(); > > String[] names = new String[] { "Nissan", "Subaru", "Porsche"}; > String[] colors = new String[] { "red", "blue", "silver"}; > int[] positions = new int[] { 1, 2, 3 }; > > for ( int n = 0; n < names.length; n++ ) { > for ( int c = 0; c < colors.length; c++ ) { > for ( int p = 0; p < positions.length; p++ ) { > session.insert( new Car( names[n], colors[c], > positions[p]) ); > } > } > } > > session.fireAllRules(); > session.dispose(); > } > > > > } > > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > -- Edson Tirelli JBoss Drools Core Development JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users