[rules-users] ELSE specification (was: logical 'not' - is there such a construct?)

Edson Tirelli tirelli at post.com
Wed Feb 21 07:32:15 EST 2007


    Vlad,

    Now I understood what you are looking for.
    Yes, we were discussing "else" some time ago, but we reached no 
conclusion yet, specially because of higher priority features we are 
rushing to get into the next major release due in a few weeks.
    Anyway, there are a few possible semantics to else and I wrote a 
small document with implementation suggestions. The semantics you 
expressed in your e-mail is the one I called (b) in the document (see 
attached).

    All,

    What I can say is that we have a major release soon and this is the 
best time for anyone looking for a "must have" feature to jump in and 
help. We would like to reinforce that this is a community project and if 
you need something that is not in the current plans, come aboard and 
help to improve the plan.
    First of all, we need a feature specification we can agree upon. So, 
if anyone has use cases for that, then you are probably the best person 
to help on defining the spec. In the specific case of "else", the 
attached document can be used as a start or you can start from scratch 
(ignore the implementation parts of it if you are not confident). Focus 
on the feature.
    After that, it is time for implementing the feature. If you feel you 
can help, it is certanly a good opportunity for learning too. If the 
spec is good, we can even raise its priority.

    So, the invitation is open to all. :) Feel free to become a 
drooler... :)

    []s
    Edson

Olenin, Vladimir (MOH) wrote:

>Well, probably to rephrase it, what is the status / thoughts on 'else'
>construct for rules? Basically global 'logical' not for rules would be the
>'else' branch of conditional statement (if DROOLS had one), correct? I've
>read some postings regarding this shortly after I joined the list (ie,
>around a month ago). I wonder if that discussion went anywhere....
>
>
>To clarify, I do need the _logical_ not, NOT exisitential. So that the
>constructs with logical 'not' would select an 'inverse' fact tuples, ie,
>tuples for facts that did not the condition.... Kind of simple logical
>statement transformation in boolean algebra (DeMorgan law?...):
>
>
>   MyObject( field == 'value' )  and MyObject2( field == 'value' )   --->
>!( MyObject( field != 'value' )   or MyObject2( field != 'value' ) )
>
>
>If '!' would mean "ALL TUPLES FOR FACTS IN THE RULE" XOR "SELECTED TUPLES",
>would the above conditions select the same set of tuples? I assume the
>engine should just 'expand' any such 'logical not' operands to move it into
>the coluimn constraints?..
>
>I might be confusing smth though.... On the second thought for my particular
>case 'existential' not should work too, so I guess the above is just a
>possible extention of functionality. It really has nothing to do with the
>rule engine itself (from what I see), but rather transformation of the
>logical expressions before they are feeded into the rules engine.
>
>Thanks for the answers, Edson.
>
>Vlad
>
>
>
>
>-----Original Message-----
>From: rules-users-bounces at lists.jboss.org
>[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Edson Tirelli
>Sent: 20 February 2007 16:30
>To: Rules Users List
>Subject: Re: [rules-users] logical 'not' - is there such a construct?
>
>    No, the "not" conditional element is an existential operator, so the 
>meaning is what you expressed in your first example. I thought that was 
>what you were looking for, but apparently it is not.
>    I never heard about any construction capable of doing what you are 
>asking for in a rules engine... maybe someone else can throw some light 
>in...
>
>    []s
>    Edson
>
>Olenin, Vladimir (MOH) wrote:
>
>  
>
>>So, if used like that, 'not' does not have 'existential' meaning then, but
>>simple 'negation'? I mean, the expression
>>
>>  not MyObject(field == 'value')
>>
>>would still mean 'not exists', correct? Would the expression
>>
>>  not (MyObject(field == 'value'))
>>
>>mean 
>>
>>  MyObject(field != 'value')
>>
>>then. In other worlds, "all objects OTHER then those matching the
>>constraint"?
>>
>>Thanks.
>>
>>Vlad
>>
>>-----Original Message-----
>>From: rules-users-bounces at lists.jboss.org
>>[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Edson Tirelli
>>Sent: 20 February 2007 14:37
>>To: Rules Users List
>>Subject: Re: [rules-users] logical 'not' - is there such a construct?
>>
>> Vlad,
>>
>>In 3.1M1 you can write:
>>
>>rule X
>>when
>>not (
>>MyObject( aaa == "bbb" ) and
>>MyObject2( bbb == "aaa" )
>>)
>>then
>>// do something
>>end
>>
>>But remember that variables bound inside the "not" block are not avaible 
>>in the consequence for obvious reasons.
>>
>>[]s
>>Edson
>>
>>Olenin, Vladimir (MOH) wrote:
>>
>> 
>>
>>    
>>
>>>Hi,
>>>
>>>I wonder if there is logical 'not' operator (in the meaning of "!=" -> 
>>>'not equal') which can be applied to the whole rule? Eg:
>>>
>>>Rule x
>>>
>>>When
>>>
>>>! (
>>>
>>>MyObject(aaa == "bbb")
>>>
>>>MyObject2(bbb == "aaa")
>>>
>>>)
>>>
>>>Then
>>>
>>>// do smth
>>>
>>>End
>>>
>>>Basically I'm looking for an operator to reverse the evaluation result 
>>>of the expression in the brackets. The use case: in my system all 
>>>rules are defined from 'rule passes' prospective, while the 
>>>application should take some action in case the rule is NOT passed 
>>>(ie, 'else' case).
>>>
>>>Any way to do that except reformulating the constraints themselves?
>>>
>>>Thanks,
>>>
>>>Vlad
>>>
>>>------------------------------------------------------------------------
>>>
>>>_______________________________________________
>>>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 --------------
A non-text attachment was scrubbed...
Name: JBRULES_ElseOtherwise.pdf
Type: application/pdf
Size: 114590 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20070221/b7b32564/attachment.pdf 


More information about the rules-users mailing list