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/doc...
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(a)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@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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users