[rules-users] Unable to create restriction '[QualifiedIndentifierRestr: != $nissan.pos ]' for field 'pos' , in the rule 'Racing order'

Edson Tirelli tirelli at post.com
Wed Aug 20 13:57:41 EDT 2008


   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 <mrkafk at gmail.com>

> 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080820/5ccad7ea/attachment.html 


More information about the rules-users mailing list