Quantcast

Getting Error while using Drools 5.3.0

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Getting Error while using Drools 5.3.0

mkhan_rt54fde

Hi,

My application works fine with Drools v 4.0.7. However, when I run my application using Drools 5.3.0, I am getting the following error:

org.drools.rule.InvalidRulePackage: Evaluator '>' does not support type 'ValueType = 'String' : [Rule name='VIN required for newer vehicles']


        at org.drools.rule.Package.checkValidity(Package.java:478)
        at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:481)
        at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:458)
        at org.drools.reteoo.ReteooRuleBase.addPackage(ReteooRuleBase.java:465)

Here is the condition I am using in my .dsl file:

[condition][]request contains no VIN and the car was built after year {value}=info: CarRulesInfo(quoteRequest.VIN == null, quoteRequest.modelyear > 1982 )

Any suggestions on how to fix this problem.

Thanks in advance.



Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [rules-users] Getting Error while using Drools 5.3.0

laune
The type of quoteRequest.modelyear is what?

If it's String, change it to int.

-W


On 24/04/2012, mkhan_rt54fde <[hidden email]> wrote:

>
> Hi,
>
> My application works fine with Drools v 4.0.7. However, when I run my
> application using Drools 5.3.0, I am getting the following error:
>
> org.drools.rule.InvalidRulePackage: Evaluator '>' does not support type
> 'ValueType = 'String' : [Rule name='VIN required for newer vehicles']
>
>
> at org.drools.rule.Package.checkValidity(Package.java:478)
> at
> org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:481)
> at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:458)
> at org.drools.reteoo.ReteooRuleBase.addPackage(ReteooRuleBase.java:465)
>
> Here is the condition I am using in my .dsl file:
>
> [condition][]request contains no VIN and the car was built after year
> {value}=info: CarRulesInfo(quoteRequest.VIN == null, quoteRequest.modelyear
>> 1982 )
>
> Any suggestions on how to fix this problem.
>
> Thanks in advance.
>
>
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Getting-Error-while-using-Drools-5-3-0-tp3936714p3936714.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Getting Error while using Drools 5.3.0

mkhan_rt54fde
In reply to this post by mkhan_rt54fde
Hi,

Thanks for the reply.

In my application,one of the input parameters is Year.In my java class,I am getting the modelyear from year and converting it an integer.But even then, I am getting the error posted earlier.Here is my rule file:

rule "Set Time To Live"
        when
                there is a restoration request
        then
                set quote process time to live to: 15
                add additional action "check state regulation for vintage car restoration"
end


#validation
rule "Year is required"
no-loop true
        when
                request does not contain model year
        then
                set reason of rejection to "year is required"
                reject request
end


#additional action
rule "VIN required for newer vehicles"
no-loop true
        when
                request contains no VIN and the car was built after year 1982
        then
                ask the customer to provide VIN
end

and here is my java class:

public class QuoteRequest {

        private Contact contact;
        private Address address;

        private String make;
        private String model;
        private String style;
        private String year;

        private String VIN;
        private String condition;
        private String description;
        private String zip;

        private List<Link> links = new ArrayList<Link>();

        public static void printForMe() {
                System.out.println("printing for you");
        }

        public Contact getContact() {
                return contact;
        }

        public void setContact(Contact contact) {
                this.contact = contact;
        }

        public Address getAddress() {
                return address;
        }

        public void setAddress(Address address) {
                this.address = address;
        }

        public String getMake() {
                return make;
        }

        public void setMake(String make) {
                this.make = make;
        }

        public String getModel() {
                return model;
        }

        public void setModel(String model) {
                this.model = model;
        }

        public String getStyle() {
                return style;
        }

        public void setStyle(String style) {
                this.style = style;
        }

        public String getYear() {
                return returnString(year);
        }
       
        public Integer getModelYear() {
                Integer modelYear = (getYear() == null) ? null : Integer.parseInt(year);
        return modelYear;
        }

        public void setYear(String year) {
                this.year = year;
        }

        public String getVIN() {
                return returnString(VIN);
        }

        public void setVIN(String vin) {
                VIN = vin;
        }

        public String getCondition() {
                return condition;
        }

        public void setCondition(String condition) {
                this.condition = condition;
        }

        public String getDescription() {
                return description;
        }

        public void setDescription(String description) {
                this.description = description;
        }

        public String getZip() {
                return zip;
        }

        public void setZip(String zip) {
                this.zip = zip;
        }

        public List<Link> getLinks() {
                return links;
        }

        public void setLinks(List<Link> links) {
                this.links = links;
        }
       
        private String returnString(String s) {
         return (s == null || s.isEmpty()) ? null : s;
        }
}

Are there any changes I need to make any changes to the java class to fix the error I am seeing?

Thanks.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [rules-users] Getting Error while using Drools 5.3.0

laune
This rule (and note the correct spelling of modelYear with a capital
'Y', in contrast to your first post) compiles and executes correctly
using 5.3.0.

rule qr
when
    info: CarRulesInfo( quoteRequest.VIN == null,
                        quoteRequest.modelYear > 1982 )
then
    System.out.println( "got new car" );
end

-W



On 25/04/2012, mkhan_rt54fde <[hidden email]> wrote:

> Hi,
>
> Thanks for the reply.
>
> In my application,one of the input parameters is Year.In my java class,I am
> getting the modelyear from year and converting it an integer.But even then,
> I am getting the error posted earlier.Here is my rule file:
>
> rule "Set Time To Live"
> when
> there is a restoration request
> then
> set quote process time to live to: 15
> add additional action "check state regulation for vintage car
> restoration"
> end
>
>
> #validation
> rule "Year is required"
> no-loop true
> when
> request does not contain model year
> then
> set reason of rejection to "year is required"
> reject request
> end
>
>
> #additional action
> rule "VIN required for newer vehicles"
> no-loop true
> when
> request contains no VIN and the car was built after year 1982
> then
> ask the customer to provide VIN
> end
>
> and here is my java class:
>
> public class QuoteRequest {
>
> private Contact contact;
> private Address address;
>
> private String make;
> private String model;
> private String style;
> private String year;
>
> private String VIN;
> private String condition;
> private String description;
> private String zip;
>
> private List<Link> links = new ArrayList<Link>();
>
> public static void printForMe() {
> System.out.println("printing for you");
> }
>
> public Contact getContact() {
> return contact;
> }
>
> public void setContact(Contact contact) {
> this.contact = contact;
> }
>
> public Address getAddress() {
> return address;
> }
>
> public void setAddress(Address address) {
> this.address = address;
> }
>
> public String getMake() {
> return make;
> }
>
> public void setMake(String make) {
> this.make = make;
> }
>
> public String getModel() {
> return model;
> }
>
> public void setModel(String model) {
> this.model = model;
> }
>
> public String getStyle() {
> return style;
> }
>
> public void setStyle(String style) {
> this.style = style;
> }
>
> public String getYear() {
> return returnString(year);
> }
>
> public Integer getModelYear() {
> Integer modelYear = (getYear() == null) ? null : Integer.parseInt(year);
> return modelYear;
> }
>
> public void setYear(String year) {
> this.year = year;
> }
>
> public String getVIN() {
> return returnString(VIN);
> }
>
> public void setVIN(String vin) {
> VIN = vin;
> }
>
> public String getCondition() {
> return condition;
> }
>
> public void setCondition(String condition) {
> this.condition = condition;
> }
>
> public String getDescription() {
> return description;
> }
>
> public void setDescription(String description) {
> this.description = description;
> }
>
> public String getZip() {
> return zip;
> }
>
> public void setZip(String zip) {
> this.zip = zip;
> }
>
> public List<Link> getLinks() {
> return links;
> }
>
> public void setLinks(List<Link> links) {
> this.links = links;
> }
>
> private String returnString(String s) {
> return (s == null || s.isEmpty()) ? null : s;
> }
> }
>
> Are there any changes I need to make any changes to the java class to fix
> the error I am seeing?
>
> Thanks.
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Getting-Error-while-using-Drools-5-3-0-tp3936714p3939076.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [rules-users] Getting Error while using Drools 5.3.0

mkhan_rt54fde
Hi,

Sorry for the delay in reply.

Thanks for pointing out the typo.I corrected that and redepolyed my application.However,this time, I am seeing the following error:

org.drools.rule.InvalidRulePackage: Evaluator '>' does not support type 'ValueType = 'String' : [Rule name='VIN required for newer vehicles']

Here is my .dslr file:

rule "Set Time To Live"
        when
                there is a restoration request
        then
                set quote process time to live to: 3
                add additional action "check state regulation for vintage car restoration"
end


#validation
rule "Year is required"
no-loop true
        when
                request does not contain model year
        then
                set reason of rejection to "year is required"
                reject request
end


#additional action
rule "VIN required for newer vehicles"
no-loop true
        when
                request contains no VIN and the car was built after year 1982
        then
                ask the customer to provide VIN
end

 
Here is my .dsl file:

[condition][]there is a restoration request=info: CarRulesInfo()
[consequence][]set quote process time to live to: {value}=info.setTimeToLive({value});
[condition][]request does not contain model year=info: CarRulesInfo(quoteRequest.year == null  )
[consequence][]reject request=info.setValid( false );
[condition][]request contains no VIN and the car was built after year {value}=info: CarRulesInfo(quoteRequest.VIN == null, quoteRequest.modelYear > 1982  )
[consequence][]ask the customer to provide VIN=info.setAdditionalActions("Ask customer to provide VIN number");
[consequence][]set reason of rejection to "{value}"=info.setReasonOfRejection("{value}");
[consequence][]add additional action "{value}"=info.setAdditionalActions("{value}");

and here is my java class:

public class QuoteRequest {

        private Contact contact;
        private Address address;

        private String make;
        private String model;
        private String style;
        private String year;

        private String VIN;
        private String condition;
        private String description;
        private String zip;

        private List<Link> links = new ArrayList<Link>();

        public static void printForMe() {
                System.out.println("printing for you");
        }

        public Contact getContact() {
                return contact;
        }

        public void setContact(Contact contact) {
                this.contact = contact;
        }

        public Address getAddress() {
                return address;
        }

        public void setAddress(Address address) {
                this.address = address;
        }

        public String getMake() {
                return make;
        }

        public void setMake(String make) {
                this.make = make;
        }

        public String getModel() {
                return model;
        }

        public void setModel(String model) {
                this.model = model;
        }

        public String getStyle() {
                return style;
        }

        public void setStyle(String style) {
                this.style = style;
        }

        public String getYear() {
                return returnString(year);
        }

        public Integer getModelYear() {
                Integer modelYear = (getYear() == null) ? null : Integer.parseInt(year);
               
                return modelYear;
        }

        public void setYear(String year) {
                this.year = year;
        }

        public String getVIN() {
                return returnString(VIN);
        }

        public void setVIN(String vin) {
                VIN = vin;
        }

        public String getCondition() {
                return condition;
        }

        public void setCondition(String condition) {
                this.condition = condition;
        }

        public String getDescription() {
                return description;
        }

        public void setDescription(String description) {
                this.description = description;
        }

        public String getZip() {
                return zip;
        }

        public void setZip(String zip) {
                this.zip = zip;
        }

        public List<Link> getLinks() {
                return links;
        }

        public void setLinks(List<Link> links) {
                this.links = links;
        }
       
        private String returnString(String s) {
                return (s == null || s.isEmpty()) ? null : s;
        }
}

Not sure why I am getting this error.Any suggestions?

Thanks.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [rules-users] Getting Error while using Drools 5.3.0

laune
Once again: A DRL rule written according to you Java code, your
DSL and your DSLR work fine. (Drools 5.3.0)

1) Write the rule in DRL and see what you get.

2) Obtain the result of DSL expansion and inspect the resulting DRL code.

-W



On 02/05/2012, mkhan_rt54fde <[hidden email]> wrote:

> Hi,
>
> Sorry for the delay in reply.
>
> Thanks for pointing out the typo.I corrected that and redepolyed my
> application.However,this time, I am seeing the following error:
>
> org.drools.rule.InvalidRulePackage: Evaluator '>' does not support type
> 'ValueType = 'String' : [Rule name='VIN required for newer vehicles']
>
> Here is my .dslr file:
>
> rule "Set Time To Live"
> when
> there is a restoration request
> then
> set quote process time to live to: 3
> add additional action "check state regulation for vintage car
> restoration"
> end
>
>
> #validation
> rule "Year is required"
> no-loop true
> when
> request does not contain model year
> then
> set reason of rejection to "year is required"
> reject request
> end
>
>
> #additional action
> rule "VIN required for newer vehicles"
> no-loop true
> when
> request contains no VIN and the car was built after year 1982
> then
> ask the customer to provide VIN
> end
>
>
> Here is my .dsl file:
>
> [condition][]there is a restoration request=info: CarRulesInfo()
> [consequence][]set quote process time to live to:
> {value}=info.setTimeToLive({value});
> [condition][]request does not contain model year=info:
> CarRulesInfo(quoteRequest.year == null  )
> [consequence][]reject request=info.setValid( false );
> [condition][]request contains no VIN and the car was built after year
> {value}=info: CarRulesInfo(quoteRequest.VIN == null, quoteRequest.modelYear
>> 1982  )
> [consequence][]ask the customer to provide
> VIN=info.setAdditionalActions("Ask customer to provide VIN number");
> [consequence][]set reason of rejection to
> "{value}"=info.setReasonOfRejection("{value}");
> [consequence][]add additional action
> "{value}"=info.setAdditionalActions("{value}");
>
> and here is my java class:
>
> public class QuoteRequest {
>
> private Contact contact;
> private Address address;
>
> private String make;
> private String model;
> private String style;
> private String year;
>
> private String VIN;
> private String condition;
> private String description;
> private String zip;
>
> private List<Link> links = new ArrayList<Link>();
>
> public static void printForMe() {
> System.out.println("printing for you");
> }
>
> public Contact getContact() {
> return contact;
> }
>
> public void setContact(Contact contact) {
> this.contact = contact;
> }
>
> public Address getAddress() {
> return address;
> }
>
> public void setAddress(Address address) {
> this.address = address;
> }
>
> public String getMake() {
> return make;
> }
>
> public void setMake(String make) {
> this.make = make;
> }
>
> public String getModel() {
> return model;
> }
>
> public void setModel(String model) {
> this.model = model;
> }
>
> public String getStyle() {
> return style;
> }
>
> public void setStyle(String style) {
> this.style = style;
> }
>
> public String getYear() {
> return returnString(year);
> }
>
> public Integer getModelYear() {
> Integer modelYear = (getYear() == null) ? null : Integer.parseInt(year);
>
> return modelYear;
> }
>
> public void setYear(String year) {
> this.year = year;
> }
>
> public String getVIN() {
> return returnString(VIN);
> }
>
> public void setVIN(String vin) {
> VIN = vin;
> }
>
> public String getCondition() {
> return condition;
> }
>
> public void setCondition(String condition) {
> this.condition = condition;
> }
>
> public String getDescription() {
> return description;
> }
>
> public void setDescription(String description) {
> this.description = description;
> }
>
> public String getZip() {
> return zip;
> }
>
> public void setZip(String zip) {
> this.zip = zip;
> }
>
> public List<Link> getLinks() {
> return links;
> }
>
> public void setLinks(List<Link> links) {
> this.links = links;
> }
>
> private String returnString(String s) {
> return (s == null || s.isEmpty()) ? null : s;
> }
> }
>
> Not sure why I am getting this error.Any suggestions?
>
> Thanks.
>
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Getting-Error-while-using-Drools-5-3-0-tp3936714p3954007.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [rules-users] Getting Error while using Drools 5.3.0

mkhan_rt54fde
Hi,

This issue has been resolved.The jar in my deployment pacakage did not have updated java class and the rules files.Rebuilt the jar and deployed my application.It worked.

Thanks for your help.

Best Regards.
Loading...