sorry, it doesn't run, the eval() is not considered. I used the workaround found by George ("Rule Compilation Error"):
rule "AND" when ev : EventWM(field : field) eval(ev != null && field !="f1" && field !="f2" ) then System.out.println( "RULE AND" ); retract( ev ); end but it still doesn't run (a fact like: EventWM(field="f1") matches the LHS) how to write a similar test? Thank you. matteo. -----Messaggio originale----- Da: Demichelis Matteo Inviato: martedì 2 maggio 2006 18.33 A: 'user@drools.codehaus.org' Oggetto: R: [drools-user] R: [drools-user] and with binding I solved writing a rule in this way: rule "AND" when e : EventWM(field : field) eval(field !="f1" && field !="f2") then System.out.println("RULE AND"); end (similar to CLIPS "test conditional element"). Thanks. matteo. -----Messaggio originale----- Da: Mark Proctor [mailto:[EMAIL PROTECTED] Inviato: martedì 2 maggio 2006 17.36 A: user@drools.codehaus.org Oggetto: Re: [drools-user] R: [drools-user] and with binding think about it for a second: a : Fact() binds a variable to a Fact. How can you have a variable bound to two facts? With 'or' its allowed, as it can bind to one Fact in the first logic outcome and then to the other fact in the second logic outcome. Mark Demichelis Matteo wrote: > I tried, it compiles but the behaviour is not correct > because this LHS: > e : TestFact( field1 !="f1") && TestFact( field1 != "f2") > > and this: > e : TestFact( field1 !="f1") > > strangely match the same facts. > > It seems the problem is the compiler not supporting the binding with a '(' > that follows. > The same with a "or with binding", the 3.15 example seems not supported. > > > > > -----Messaggio originale----- > Da: Christopher G. Stach II [mailto:[EMAIL PROTECTED] > Inviato: martedì 2 maggio 2006 17.05 > A: user@drools.codehaus.org > Oggetto: Re: [drools-user] and with binding > > Demichelis Matteo wrote: > >> Hello, >> >> >> >> following the example 3.15 in JBoss Rules, "or with binding": >> >> pensioner: ( Person(....) or Person(...) ) >> >> >> >> I wrote this rule using "and with binding": >> >> >> >> rule "ClearUnknownDevice" >> >> when >> >> e : ( TestFact( field1 !="f1") && TestFact( field1 != "f2") >> ) >> >> then >> >> retract( e ); >> >> end >> >> >> >> I got 2 compilation error: >> >> unknown:8:6 mismatched token: [EMAIL PROTECTED],133:133='(',<21>,8:6]; >> expecting type >> ID >> >> unknown:8:76 Unexpected token ')' >> >> >> >> perhaps "and with binding" is not supported yet? >> >> >> >> thanks. >> >> matteo,. >> >> > > Try this: > > rule "ClearUnknownDevice" > > when > > e : TestFact( field1 !="f1") && TestFact( field1 != "f2") > > then > > retract( e ); > > end > > -------------------------------------------------------------------- CONFIDENTIALITY NOTICE This message and its attachments are addressed solely to the persons above and may contain confidential information. If you have received the message in error, be informed that any use of the content hereof is prohibited. Please return it immediately to the sender and delete the message. Should you have any questions, please contact us by replying to [EMAIL PROTECTED] Thank you www.telecomitalia.it --------------------------------------------------------------------