[rules-users] NullPointerException with Wrapper objects

Greg Barton greg_barton at yahoo.com
Wed May 13 11:28:53 EDT 2009


Well, like Wolfgang said, good luck with that. :)  The only rules engine I know that does this is Tibco BusinessEvents, and it's accomplished by making a copy of your objects before inserting them into working memory.  

>From this forum post I'm guessing JRules doesn't do it: http://forums.ilog.com/brms/index.php?topic=1439.0

And probably Blaze Advisor doesn't do it either:
http://discuss.fico.com/blaze/board/message?board.id=Blaze_Advisor_Users_Forum&message.id=591

So, I'm thinking you're stuck with having to do null checks.

--- On Wed, 5/13/09, Shabbir Dhari <sdhari at hotmail.com> wrote:

> From: Shabbir Dhari <sdhari at hotmail.com>
> Subject: RE: [rules-users] NullPointerException with Wrapper objects
> To: rules-users at lists.jboss.org
> Date: Wednesday, May 13, 2009, 5:44 AM
> Thanks for all you efforts  :) but what is the difference
> between calling function from every rule or putting null
> check. I give up. I am looking for other rule engines.
>  
> 
> 
> Date: Wed, 13 May 2009 12:19:08 +0200
> Subject: Re: [rules-users] NullPointerException with
> Wrapper objects
> From: wolfgang.laun at gmail.com
> To: rules-users at lists.jboss.org
> 
> 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 at 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 at gmail.com
> To: rules-users at 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 at 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 at gmail.com 
> 
> To: rules-users at 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 at 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 at yahoo.com
> > Subject: Re: [rules-users] NullPointerException with
> Wrapper objects 
> 
> > To: rules-users at lists.jboss.org
> > 
> > 
> 
> > 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 at 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 at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 
> 
> _________________________________________________________________
> Want to stay on top of your life online? Find out how with
> Windows Live!
> http://windowslive.ninemsn.com.au/_______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users


      




More information about the rules-users mailing list