Well, I hope you get paid for all the extra work ;-)

Define, in your .drl file,

function float safe( Float v ){
      return v == null ? 0 : v;
}

and wrap all references to the "dangerous" field(s) in your LHS pattern expressions with this call, except, of course, in the rule where you fix and log the field.

-W



2009/5/13 Shabbir Dhari <sdhari@hotmail.com>

Well I cant explain you all the issues and requirements here. Simply we dont have provision to do so. We have to check the null in the rules and log the message plus other evaluation and arithmetic.
 


Date: Wed, 13 May 2009 10:36:59 +0200

Subject: Re: [rules-users] NullPointerException with Wrapper objects
From: wolfgang.laun@gmail.com
To: rules-users@lists.jboss.org

But you do control the insertion of your facts. Rather than cluttering rules with conditions dealing with irregular values, preprocess the object. And you should be able to log from there, just as well.
-W

2009/5/13 Shabbir Dhari <sdhari@hotmail.com>
I can not initialize property as need to log the message. The bean comes from outside our application scope. We do not have control to make them menodatory. And we need to log the message. You mean there is no solution of this problem? And remember my second rule does not compare propery but it performs some calculations. 
 

Date: Wed, 13 May 2009 09:01:05 +0200

Subject: Re: [rules-users] NullPointerException with Wrapper objects
From: wolfgang.laun@gmail.com

To: rules-users@lists.jboss.org

What about setting the field to 0 in the constructor of Salary?
Or using float (not java.lang.Float)?
-W

2009/5/13 Shabbir Dhari <sdhari@hotmail.com>
I know this work around. But I have more than 50 rules using that attribute and it looks very ugly to put null on every rule and its not single attribute. There are more than 30 attributes in the bean and using them in LHS. Any other sophisticated way?

> Date: Tue, 12 May 2009 23:15:54 -0700
> From: greg_barton@yahoo.com
> Subject: Re: [rules-users] NullPointerException with Wrapper objects
> All conditions of all applicable rules are evaluated when you insert an object into working memory. This decides which rule actions can go on the agenda. Only when a rule action is on the agenda is the salience used to determine the order of action firing. So doing the null check in the way you're doing it will not work.
>
> You must put the null check in the same rule, before the potentially null property is used.
>
> rule "Nett Salary" salience 70
> when
> Salary ( loanDeduction != null, nett != ( gross – loanDeduction – pf) )
> then
> log("Invalid nett salary amount");
> end
>



Check out the new Windows Live Messenger Looking for a fresh way to share your photos?

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




Click Here View photos of singles in your area

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




Find out how with Windows Live! Want to stay on top of your life online?

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users