[rules-users] NullPointer in LHS dao calls ..

Rahul Phadnis rahul.phadnis at fatspaniel.com
Tue Apr 3 18:45:40 EDT 2007


Did you set the global in the WorkingMemory?

You can do that using the API at

http://labs.jboss.com/file-access/default/members/jbossrules/freezone/docs/3.0.5/apidocs/index.html
and yes that is for 3.0.5. I am sure there is an
equivalent for the version that you are using.

-Rahul
--- Sanjay Singh - s0singh <Sanjay.Singh at wal-mart.com>
wrote:

> Since i could not get the earlier code running i
> tried using eval in LHS
> side for Dao calls but i keep on getting
> NullPointerException ..
>  
> rule "Item should have a valid status"
> 
> when
> 
> ItemVo (statusCode : itemStatusCode != null)
> 
> eval(
> !itemValidationDao.isValidItemStatus(statusCode) )
> 
> then
> 
>
errors.addValidationError("invalidtemStatusCode","Item
> Status Code is
> invalid ");
> 
> end
> 
> Exception data: org.drools.RuntimeDroolsException:
> java.lang.NullPointerException
> 
> at org.drools.rule.EvalCondition.isAllowed(Unknown
> Source)
> 
> at
>
org.drools.reteoo.EvalConditionNode.assertTuple(Unknown
> Source)
> 
> at
>
org.drools.reteoo.LeftInputAdapterNode.createAndAssertTuple(Unknown
> Source)
> 
> at
>
org.drools.reteoo.LeftInputAdapterNode.assertObject(Unknown
> Source)
> 
> at
>
org.drools.reteoo.ObjectSource.propagateAssertObject(Unknown
> Source)
> 
> Can somebody please help .. thanks
> 
> ________________________________
> 
> From: Sanjay Singh - s0singh 
> Sent: Tuesday, April 03, 2007 11:01 AM
> To: 'Anstis, Michael (M.)'; Rules Users List
> Subject: RE: Hi.
> 
> 
> 
> Thanks for getting back to me Mike and Edson and
> Sorry for the delayed
> response.
>  
> I looked at your examples Mike and i felt better as
> you said that we can
> make dao calls in LHS .. And Edson suggested not to
> be afraid of
> suggesting the same constraint for more than one
> rule .. i guess i was
> looking at it more procedural way and dint want any
> repetition of those
> conditions as the top level IF block but looks like
> it won't hurt to
> mention these constraints in all the rules related
> to this check ...so i
> can include this check in all the rules .. hmm ..
>  
> Here is a quick test i was trying to do for calling
> the dao in LHS but
> it fails .. what am i missing .. 
>  
> package com.walmart.itemfile.item.rules
> 
> import com.walmart.itemfile.item.vo.ItemVo;
> 
> import com.walmart.itemfile.item.dao.ItemDao;
> 
> import
> com.walmart.itemfile.item.dao.ItemValidationDao;
> 
> import java.lang.String;
> 
> global
> com.walmart.itemfile.item.dao.ItemValidationDao
> itemValidationDao;
> 
> global com.walmart.itemfile.rules.ValidationErrorMap
> errors;
> 
> rule "Item should have a valid status"
> 
> when
> 
> ItemVo( statusCode : itemStatusCode != null)
> 
> ItemVo( statusCode == true ) from
> itemValidationDao.isValidItemStatus(statusCode) ..
> my isValidItemStatus
> method returns a boolean (not collection of codes)
> and i need to check
> if thats true than go to the RHS side .. is the line
> in green even right
> ... in any case it does not recognize
> itemValidationDao to begin with in
> LHS side .. RHS same call works .. 
> 
> then
> 
> errors.addValidationError("nullItemStatusCode","Item
> Status Code is
> null");
> 
> System.out.println("Item Base Defaults Called" +
> itemValidationDao.isValidItemStatus(statusCode));
> 
> System.out.println("Item Status Code is null");
> 
> end
> 
> Caused by: org.drools.rule.InvalidRulePackage:
> unknown:32:28 Unexpected
> token 'itemValidationDao'
> 
> 
> thanks for the help guys .. 
> 
> Sanjay
> 
> ________________________________
> 
> From: Anstis, Michael (M.)
> [mailto:manstis1 at ford.com] 
> Sent: Monday, March 26, 2007 8:57 AM
> To: Rules Users List
> Cc: Sanjay Singh - s0singh
> Subject: RE: Hi.
> 
> 
> Hi Sanjay,
>  
> To firstly answer your questions (in my opinion):
> 1. You can't do nested whens in the LHS but you can
> do nested if / else
> in the RHS (although you'd fore go the benefits of a
> RETE-based
> inference engine; but possible if you've got very
> few rules and
> facts...). I believe that there is work to have an
> "otherwise" statement
> for rule syntax, how progressed this is and how it
> will work I don't
> know - over to Mark and team?!? 
> 2. Yes, take a look at the "from" statement (new for
> 3.1-M1, see
>
http://wiki.jboss.org/wiki/Wiki.jsp?page=3.1M1ReleaseNotes)
> 3. Yes, take a look at rule-flow at
>
http://labs.jboss.com/portal/index.html?ctrl:cmd=render&ctrl:window=defa
>
ult.blog.PrjBlogPortletWindowDefaultBlog&project=jbossrules&from=1&link=
>
RuleFlow_%28Kris_Verlaenen%29#RuleFlow_%28Kris_Verlaenen%29
> (although I
> don't know if this is complete if 3.1-M1 - I think
> it's not). Although I
> don't think your rules really need rule-flow; you
> just need to identify
> and isolate the patterns (IF's) that would cause
> each "Do Something" to
> be ran and create a rule for each - this has the
> benefit of separating
> each action into a separate rule making maintenance
> a whole bunch
> easier).
>  
> Anyway, I'd try some rules like the following
> examples (the rest are
> based upon these):-
>  
> Rule "Rule 1"
> when
>     NewItem ( itemStatusCode == null) 
> then
>     //do something
> end
>  
> Rule "Rule 2"
> when
>     $u : User( )
>     $ni : NewItem ( $isc : itemStatusCode != null )
>     not Codes ( codes contains $isc ) from
> valDao.getValidItemStatusCodesForUser($u)
> then
>     //Do something
> end
>  
> Rule "Rule 3"
> when
> 
=== message truncated ===>
_______________________________________________
> 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