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

2007-09-12 Thread Tim . Nguyen
I thought when you use eval, it is Java, not mvel. So i think this should
work:   eval (! (Map (.


Tim



   
 Gaurav2007
 <[EMAIL PROTECTED] 
 apgemini.com>  To 
 Sent by:  rules-users@lists.jboss.org 
 rules-users-bounc  cc 
 [EMAIL PROTECTED] 
 g Subject 
   [rules-users] How to use not
   operator in drool.  
 09/12/2007 08:49  
 AM
   
   
 Please respond to 
 Rules Users List  
 <[EMAIL PROTECTED] 
   s.jboss.org>
   
   





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#a12638430

Sent from the drools - user mailing list archive at Nabble.com.

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


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

2007-09-12 Thread Edson Tirelli
   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 <[EMAIL PROTECTED]>:
>
>
> 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#a12638430
> Sent from the drools - user mailing list archive at Nabble.com.
>
> ___
> rules-users mailing list
> rules-users@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
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


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

2007-09-13 Thread JOSHI, GAURAV

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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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 <[EMAIL PROTECTED]>:


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 
Sent from the drools - user mailing list archive at Nabble.com.

___
rules-users mailing list
rules-users@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.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


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

2007-09-13 Thread Anstis, Michael \(M.\)
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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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 <[EMAIL PROTECTED]>:


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




-- 
  Edson Tirelli 
  Software Engineer - JB

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

2007-09-13 Thread Mark Proctor

[EMAIL PROTECTED] wrote:

I thought when you use eval, it is Java, not mvel. So i think this should
work:   eval (! (Map (.

  

eval will use the language of dialect you specify for the rule.

Tim



   
 Gaurav2007
 <[EMAIL PROTECTED] 
 apgemini.com>  To 
 Sent by:  rules-users@lists.jboss.org 
 rules-users-bounc  cc 
 [EMAIL PROTECTED] 
 g Subject 
   [rules-users] How to use not
   operator in drool.  
 09/12/2007 08:49  
 AM
   
   
 Please respond to 
 Rules Users List  
 <[EMAIL PROTECTED] 
   s.jboss.org>
   
   






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#a12638430

Sent from the drools - user mailing list archive at Nabble.com.

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

  


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


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

2007-09-13 Thread Mark Proctor
not ( SomeClass() ) is an existential conditional eleemnt operator, 
it goes at the head of pattern, and checks if the pattern plus its field 
constraints exist in the session; it will cause a rule to fire once 
whether there is 1 or 100 matching patterns.


SomeClass( somefield not in ('x, 'y', 'z) ) is a field constraint on a 
pattern, it checks if the value of a field is in a list of values, it 
will cause the rule to fire for each and every possible rule match.


Mark
JOSHI, GAURAV wrote:


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.java 
(11:495) : Cannot use this in a static context


  
com/telekurs/nva/mde/fe/ak/validation/Rule_ValidationRuleExp_G10_3_0.java 
(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:* [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED] *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 <[EMAIL PROTECTED] 
<mailto:[EMAIL PROTECTED]>>:



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#a12638430 
<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 
<http://Nabble.com>.


___
rules-users mailing list
rules-users@lists.jboss.org <mailto:rules-users@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 <http://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.




___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
  


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


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

2007-09-14 Thread Arsalan S. Zaidi

Hi 

 

I'll try to explain the situation that Gaurav finds himself in. We're
working on this problem together and so far, we haven't been able to
crack it.

 

We're using drools to handle the business rules for an application. The
rules however, are not provided to us in a .drl file, rather, we get an
XLS sheet from the analysts with rules in a different grammar.

 

We're using ANTLR to read and parse these rules to generate the drools
rules programmatically. However, we're running into problems with NOT.

 

The input rules (in the non-drools business language) have a NOT
operator which works like '!' in Java. It flips the Boolean around, so
to speak. So:

 

NOT((some sub expression which evaluates to TRUE)) == FALSE

 

MVEL doesn't seem to support this. So how do we simulate it?

 

If it were only being used with NOT IN, we could manage, but its use is
completely arbitrary. Changes to the input rules or to the input rules
grammar have been (ha ha) ruled out.

 

Any help would be appreciated.

 

Regards,

_

Arsalan Zaidi / Capgemini - India (FS SBU) / Mumbai

Technical Architect
Mobile Phone: +91 - 9892 8970 03 / www.capgemini.com
<http://www.capgemini.com/> 


Together: the Collaborative Business Experience
_



From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Anstis,
Michael (M.)
Sent: 13 September 2007 13:31
To: Rules Users List
Subject: RE: [rules-users] How to use not operator in drool.

 

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.1NOT IN ("1","2","3") AND G250.8 != Y)

 

With kind regards,

 

Mike

 

 





From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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.

 



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

2007-09-14 Thread Edson Tirelli
Arsalan,

Unfortunately Drools does not have a field constraint negation operator,
mostly because when writing rules, it was not needed, since you can always
negate the constraint itself.
Although, I understand a agree with your use case. My suggestion is for
you to open a JIRA feature request and we will include that as soon as
possible in the product.
Although, meanwhile, the only workaround I can see for your case is to
translate the expression you are using directly into a java or mvel
expression and write it inside an in-line eval.

[]s
Edson

2007/9/14, Arsalan S. Zaidi <[EMAIL PROTECTED]>:
>
>  Hi
>
>
>
> I'll try to explain the situation that Gaurav finds himself in. We're
> working on this problem together and so far, we haven't been able to crack
> it.
>
>
>
> We're using drools to handle the business rules for an application. The
> rules however, are not provided to us in a .drl file, rather, we get an XLS
> sheet from the analysts with rules in a different grammar.
>
>
>
> We're using ANTLR to read and parse these rules to generate the drools
> rules programmatically. However, we're running into problems with NOT.
>
>
>
> The input rules (in the non-drools business language) have a NOT operator
> which works like '!' in Java. It flips the Boolean around, so to speak. So:
>
>
>
> NOT((some sub expression which evaluates to TRUE)) == FALSE
>
>
>
> MVEL doesn't seem to support this. So how do we simulate it?
>
>
>
> If it were only being used with NOT IN, we could manage, but its use is
> completely arbitrary. Changes to the input rules or to the input rules
> grammar have been (ha ha) ruled out.
>
>
>
> Any help would be appreciated.
>
>
>
> Regards,
>
> _
>
> Arsalan Zaidi / *Capgemini - India* *(FS SBU) /* Mumbai
>
> Technical Architect
> Mobile Phone: +91 – 9892 8970 03 / www.capgemini.com
>
>
> *Together: the Collaborative Business Experience*
> _____________
>   --------------
>
> *From:* [EMAIL PROTECTED] [mailto:
> [EMAIL PROTECTED] *On Behalf Of *Anstis, Michael (M.)
> *Sent:* 13 September 2007 13:31
> *To:* Rules Users List
> *Subject:* RE: [rules-users] How to use not operator in drool.
>
>
>
> 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.1NOT IN ("1","2","3") AND G250.8 != Y)
>
>
>
> With kind regards,
>
>
>
> Mike
>
>
>
>
>  --
>
> *From:* [EMAIL PROTECTED] [mailto:
> [EMAIL PROTECTED] *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
> *
>
&

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

2007-09-17 Thread Arsalan S. Zaidi

Hi Edson

 

Thanks for your reply. I guess we'll try and code in a work around for
now. It would be great to have this feature though! :-)

 

I've created a feature request in Jira.
http://jira.jboss.com/jira/browse/JBRULES-1199

 

Regards,

_

Arsalan Zaidi / Capgemini - India (FS SBU) / Mumbai

Technical Architect
Mobile Phone: +91 - 9892 8970 03 / www.capgemini.com
<http://www.capgemini.com/> 


Together: the Collaborative Business Experience
_



From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Edson Tirelli
Sent: 14 September 2007 18:42
To: Rules Users List
Subject: Re: [rules-users] How to use not operator in drool.

 


Arsalan,

Unfortunately Drools does not have a field constraint negation
operator, mostly because when writing rules, it was not needed, since
you can always negate the constraint itself. 
Although, I understand a agree with your use case. My suggestion is
for you to open a JIRA feature request and we will include that as soon
as possible in the product. 
Although, meanwhile, the only workaround I can see for your case is
to translate the expression you are using directly into a java or mvel
expression and write it inside an in-line eval.

[]s
Edson 

2007/9/14, Arsalan S. Zaidi <[EMAIL PROTECTED]>:

Hi 

 

I'll try to explain the situation that Gaurav finds himself in. We're
working on this problem together and so far, we haven't been able to
crack it.

 

We're using drools to handle the business rules for an application. The
rules however, are not provided to us in a .drl file, rather, we get an
XLS sheet from the analysts with rules in a different grammar.

 

We're using ANTLR to read and parse these rules to generate the drools
rules programmatically. However, we're running into problems with NOT.

 

The input rules (in the non-drools business language) have a NOT
operator which works like '!' in Java. It flips the Boolean around, so
to speak. So:

 

NOT((some sub expression which evaluates to TRUE)) == FALSE

 

MVEL doesn't seem to support this. So how do we simulate it?

 

If it were only being used with NOT IN, we could manage, but its use is
completely arbitrary. Changes to the input rules or to the input rules
grammar have been (ha ha) ruled out.

 

Any help would be appreciated.

 

Regards,

_

Arsalan Zaidi / Capgemini - India (FS SBU) / Mumbai

Technical Architect
Mobile Phone: +91 - 9892 8970 03 / www.capgemini.com
<http://www.capgemini.com/>  


Together: the Collaborative Business Experience
_



From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Anstis,
Michael (M.)
Sent: 13 September 2007 13:31
To: Rules Users List
Subject: RE: [rules-users] How to use not operator in drool.

 

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.1NOT IN ("1","2","3") AND G250.8 != Y)

 

With kind regards,

 

Mike

 

 





From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 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"