[rules-users] How to use not operator in drool.

Anstis, Michael (M.) manstis1 at ford.com
Thu Sep 13 04:00:43 EDT 2007


What dialect do your rules use?
 
You could also simplify the logic using DeMorgans Theorem (which might
be troublesome to accomplish programmatically)
 
I don't know whether your example is flawed as the brackets don't match,
but assuming you mean something like this:-
 
(NOT (G13.1 IN ("1","2","3") OR (G250.8 = Y)))

 

You can re-write this as

 

(G13.1 NOT IN ("1","2","3") AND G250.8 != Y)

 

With kind regards,

 

Mike

 



________________________________

	From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of JOSHI, GAURAV
	Sent: 13 September 2007 08:20
	To: Rules Users List
	Subject: RE: [rules-users] How to use not operator in drool.
	
	

	Thank's for your sugession of using "not in" instead of "not"
but my problem is that "not" can also come without "in".

	 

	Actually I am making a generator of rule file from expression
like

	 ((NOT (ENDS WITH (G10.2, ",")))

	 

	 ((NOT (G13.1 IN ("1","2","3"))) OR (G250.8 = Y)))

	 

	Where G13.2, G250.8, G10.2 are variables coming from a map
inserted in working memory.

	 

	I am accessing these variables from map.

	 

	My rules are as follows

	 

	This rule is working fine.

	 

	rule "Editable_G10.3"

	when

	 

	 ((Map( this["G10.3"] !=8))||(Map( this["G10.2"] ==19)))

	 

	then

	System.out.println("comming
here----------------------------------------------------->");

	End

	 

	This is not working

	 

	rule "Mandatory_G10.3"

	when

	 (not((Map( this["G10.3"] !=8))||(Map( this["G10.2"] ==19)))) 

	Then

	System.out.println("comming
here----------------------------------------------------->");

	End

	 

	In also tried following approaches:

	1)      eval(not((Map( this["G10.3"] !=8))||(Map( this["G10.2"]
==19)))) 

	 

	2) eval(!((Map( this["G10.3"] !=8))||(Map( this["G10.2"]
==19)))) 

	 

	But in both cases it is giving same error:

	org.drools.rule.InvalidRulePackage: Rule Compilation error :
[Rule name=ValidationRuleExp_G10.3, agendaGroup=MAIN, salience=0,
no-loop=false]

	
com/telekurs/nva/mde/fe/ak/validation/Rule_ValidationRuleExp_G10_3_0.jav
a (11:495) : Cannot use this in a static context 

	
com/telekurs/nva/mde/fe/ak/validation/Rule_ValidationRuleExp_G10_3_0.jav
a (11:500) : Type mismatch: cannot convert from String to int

	 

	I am trying to find out some general concept so that I can
change just achieve the functionality of not.

	 

	Thanks

	Gaurav 

	 

	
________________________________


	From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Edson Tirelli
	Sent: Wednesday, September 12, 2007 10:20 PM
	To: Rules Users List
	Subject: Re: [rules-users] How to use not operator in drool.

	 

	
	   Remove your "eval" and use "or" instead of "||" for the OR
CE.
	
	   Although, I feel that this is not what you want... what you
want is simply:
	
	when
	    Map( this['city'] not in ( "mumbai", "delhi" ) ) 
	then
	    //...
	end
	 
	    []s
	    Edson

	2007/9/12, Gaurav2007 <gaurav.a.joshi at capgemini.com>:

	
	Hi ALL,
	
	I am using drool4.0.1 in my application i am able to use
IN,OR,AND operator
	but i am facing problem in using not operator.
	
	my requirement of not operator is just like a not gate.
	
	the way i am using it is : 
	
	eval(not((Map( this["city"] !="mumbai"))||(Map( this["city"]
=="delhi"))))
	
	
	so can you please help me out to solve this problem:
	should i use not operator or some thing else in drool. 
	
	Thanks,
	
	
	--
	View this message in context:
http://www.nabble.com/How-to-use-not-operator-in-drool.-tf4430240.html#a
12638430
<http://www.nabble.com/How-to-use-not-operator-in-drool.-tf4430240..html
#a12638430> 
	Sent from the drools - user mailing list archive at Nabble.com.
	
	_______________________________________________
	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 3529-6000
	  Mobile: +55 11 9287-5646
	  JBoss, a division of Red Hat @ www.jboss.com 

This message contains information that may be privileged or confidential
and is the property of the Capgemini Group. It is intended only for the
person to whom it is addressed. If you are not the intended recipient,
you are not authorized to read, print, retain, copy, disseminate,
distribute, or use this message or any part thereof. If you receive this
message in error, please notify the sender immediately and delete all
copies of this message.

	

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070913/42e5b2f9/attachment.html 


More information about the rules-users mailing list