Jared,  thanks for the reply.  I've looked at that (actually it was what I first considered) but I couldn't figure out how to allow ORing constraints with this method.  My application allows the user to mix and match about 6 different constraints for the File object.  They can either all be ANDed or ORed,but to keep complexity down we aren't allowing mixing AND and OR in the same constraint list.  If you or someone can explain how to use the '-' notation with OR I'd be interested.

Charles Binford

Jared Davis wrote:
Charles Binford <Charles.Binford <at> Sun.COM> writes:

  
I'm using the DSL feature of 4.07 and am having trouble getting it to
behave like I want.

I have a File object where I'm always going to have a "state"
constraint, plus one or more optional constraints based on user input. 
(I'm parsing user data to generate the .dsrl file on the fly).

Samples:
    file in "1.x" state where uid == 0 where gid == 0
Should turn into
   $f: File ( classState == "1.x", uid == 0, gid == 0 )

The key lines from my DSL file that do this are:
[condition][]file in "{state}" state {constraints}=$f: File ( classState
== "{state}" {constraints} )
[condition][]where {constraint}=, {constraint}

Unfortunately what I get is
   $f: File ( classState == "1.x", uid == 0 where gid == 0 )

If only have one "where" then all works fine.  If I add another
"[condition][]where {constraint}=, {constraint}"
line in my DSL file it works. The first DSL "where" line catches the
first "where uuid" and the second DSL line catches the "where gid".   On
the current path it looks like I'll have to set a hard limit on how many
constraints a user can specify and make sure I've dup'd the "where" line
that many times in the DSL file.  Of course I'd much rather leave it
open and have the single "where" line apply itself as many times as it can.

Thanks in advance for any help.

Charles Binford
Sun Microsystems
_______________________________________________
rules-users mailing list
rules-users <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


    


Have you looked at using the - operation? It doesn't meet your one line goal,
but it works.

The rule would look like this:

file in "1.x" state where
 - uid is 0
 - gid is 0
 - lastModified > 


the dsl would follow this cheese example from the drools docs (I grabbed it from
4.03)

[when]There is a Cheese with=Cheese()
[when]- age is less than {age}=age<{age}
[when]- type is '{type}'=type=='{type}'
[when]- country equal to '{country}'=country=='{country}'

Search the doc for the section "Adding constraints to facts" for more details.

HTH,

Jared Davis


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