[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