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

Maxim Veksler maxim.veksler at gmail.com
Thu Aug 21 02:13:42 EDT 2008


On Wed, Aug 20, 2008 at 8:57 PM, Edson Tirelli <tirelli at post.com> wrote:

>
>    You are using variables (like $nissan) before binding them. Remember you
> can only use a variable "after" binding it.
>
>    []s
>    Edson
>

Please allow me to a related question, regarding drools 3.0.x

In this LHS example, mentioned in this thread :

"""
       $fred : Golfer( name == "Fred")
       $bob : Golfer( name == "Bob",
               position != $fred.position,
               color == "plaid",
               color != $fred.color)
"""

$fred is a bind variable, but how is it possible to use a data member from
this variable inside another node's ruling ?

Judging from Drools 3, this should have failed with compilation errors,
assuming that it's a new feature of Drools 4, is there a possibility to
implement this behavior in drools3? as it would be great help for me in my
rules.

// Just for reference, the way I would implement the above logic in Drools 3
is :

"""
       $fred : Golfer( name == "Fred", $fredPosition : position, $fredColor
: color)
       $bob : Golfer( name == "Bob",
               position != $fredPosition,
               color == "plaid",
               color != $fredColor)
"""


Thank you,
Maxim.

>
>
> 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
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
Cheers,
Maxim Veksler

"Free as in Freedom" - Do u GNU ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080821/3638f977/attachment.html 


More information about the rules-users mailing list