[rules-users] Checking OR condition in LHS

Edson Tirelli tirelli at post.com
Fri Apr 6 09:53:19 EDT 2007


  Sanjay,

  You almost got it right. If you are using 3.1M1 or later, you can do:

item : ItemVo ( itemStatusCode == ItemVo.STATUS_ACTIVE | ==
ItemVo.STATUS_DELETE )

   field connective constraints use a single "|" or "&".

   []s
   Edson

2007/4/4, Sanjay Singh - s0singh <Sanjay.Singh at wal-mart.com>:
>
> While this is working
>
> when
>         item : ItemVo(itemStatusCode == ItemVo.STATUS_INACTIVE) or
> ItemVo(itemStatusCode == ItemVo.STATUS_DELETE)
>
> Is this the right way of doing it ?
>
> thanks
>
> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Sanjay Singh -
> s0singh
> Sent: Wednesday, April 04, 2007 2:12 PM
> To: Rules Users List
> Subject: [rules-users] Checking OR condition in LHS
>
> when
>         item : ItemVo ( itemStatusCode == ItemVo.STATUS_ACTIVE ||
> ItemVo.STATUS_DELETE )
> when
>         item : ItemVo ( itemStatusCode == ItemVo.STATUS_ACTIVE ||
> itemStatusCode == ItemVo.STATUS_DELETE )
> when
>         item : ItemVo ( (itemStatusCode == ItemVo.STATUS_ACTIVE ||
> itemStatusCode == ItemVo.STATUS_DELETE) )
> when
>         item : ItemVo ( itemStatusCode == ItemVo.STATUS_ACTIVE || ==
> ItemVo.STATUS_DELETE )
> when
>         item : ItemVo ( ( itemStatusCode == ItemVo.STATUS_ACTIVE ) || (
> itemStatusCode == ItemVo.STATUS_DELETE ) )
> when
>         item : ItemVo ( itemStatusCode == ItemVo.STATUS_ACTIVE OR
> itemStatusCode == ItemVo.STATUS_DELETE )
>
> All of these when conditions fail for me .. Can somebody send the syntax
> for two attributes check with OR condition ..
>
> thanks
>
>
> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Sanjay Singh -
> s0singh
> Sent: Wednesday, April 04, 2007 8:13 AM
> To: Rules Users List
> Subject: RE: [rules-users] NullPointer in LHS dao calls ..
>
> Thanks Rahul
> Yes i was setting it in working memory thats why it was working in RHS
> .....
>
> workingMemory.setGlobal("itemValidationDao", itemValidationDao);
> and then in the DRL
> global com.walmart.itemfile.item.dao.ItemValidationDao
> itemValidationDao;
>
> I think i am missing something very basic ..
>
> thanks
>
> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org
> [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Rahul Phadnis
> Sent: Tuesday, April 03, 2007 5:42 PM
> To: Rules Users List
> Subject: Re: [rules-users] NullPointer in LHS dao calls ..
>
> 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/do
> cs/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
> >
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> -----------------------------------------
> *******************************************************************
> *** This email and any files transmitted with it are confidential
> and intended solely for the individual or entity to whom they are
> addressed. If you have received this email in error destroy it
> immediately. ******************************************************
> **************** Wal-Mart Confidential ****************************
> ******************************************
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> -----------------------------------------
> *******************************************************************
> *** This email and any files transmitted with it are confidential
> and intended solely for the individual or entity to whom they are
> addressed. If you have received this email in error destroy it
> immediately. ******************************************************
> **************** Wal-Mart Confidential ****************************
> ******************************************
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> -----------------------------------------
> *******************************************************************
> *** This email and any files transmitted with it are confidential
> and intended solely for the individual or entity to whom they are
> addressed. If you have received this email in error destroy it
> immediately. ******************************************************
> **************** Wal-Mart Confidential ****************************
> ******************************************
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
  Edson Tirelli
  Software Engineer - JBoss Rules Core Developer
  Office: +55 11 3124-6000
  Mobile: +55 11 9218-4151
  JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070406/f443f6a4/attachment.html 


More information about the rules-users mailing list