[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