[rules-users] comparing an intersection of sets..

Wolfgang Laun wolfgang.laun at gmail.com
Thu Aug 26 10:36:44 EDT 2010


So as not to confuse everybody - it seems that the 5.1 textual version of a
dsl now looks like this:

[condition][]There is an element {eVar}={eVar} : Element()
[condition][]- called {nVar}={nVar} : name
[condition][]- other than {oVar}=this != {oVar}
[condition][]- where {eVar} is disjoint from {oVar}=eval(
{eVar}.disjointWith( {oVar} ) )
[condition][]- where {eVar} intersects with {oVar}=eval( !
{eVar}.disjointWith( {oVar} ) )
[consequence][]show disjoint {n1Var} and {n2Var}=System.out.println( {n1Var}
+ " and " + {n2Var} + " are disjoint.");
[consequence][]show intersecting {n1Var} and {n2Var}=System.out.println(
{n1Var} + " and " + {n2Var} + " intersect.");

(The documentation is not up-to-date, is it?)

-W


On 26 August 2010 16:15, Wolfgang Laun <wolfgang.laun at gmail.com> wrote:

> It is possible to hide the eval for computing the intersection in a DSL.
>
> Given
>
> public class Element {
>    private String name;
>    private Set<Integer> numbers;
>    public Element( String name, Integer... numbers ){ ... }
>    // getters...
>    public boolean disjointWith( Element other ){
>        Set<Integer> ownNumbers = new HashSet<Integer>( this.numbers );
>        ownNumbers.retainAll( other.getNumbers() );
>        return ownNumbers.isEmpty();
>    }
> }
>
> and the dsl
>
> [when]There is an element {eVar}={eVar} : Element()
> [when]- called {nVar}={nVar} : name
> [when]- other than {oVar}=this != {oVar}
> [when]- where {eVar} is disjoint from {oVar}=eval(
> {eVar}.disjointWith( {oVar} ) )
> [when]- where {eVar} intersects with {oVar}=eval( !
> {eVar}.disjointWith( {oVar} ) )
> [then]show disjoint {n1Var} and {n2Var}=System.out.println( {n1Var} +
> " and " + {n2Var} + " are disjoint.");
> [then]show intersecting {n1Var} and {n2Var}=System.out.println(
> {n1Var} + " and " + {n2Var} + " intersect.");
>
> you can write the drsl
>
> package appl.domain
> expander elements.dsl
>
> rule "find disjoint pairs"
> when
>    There is an element e1
>    - called n1
>    There is an element e2
>    - called n2
>    - other than e1
>    - where e1 is disjoint from e2
> then
>        show disjoint n1 and n2
> end
>
> On 25 August 2010 16:55, mechlife <gaiamech at gmail.com> wrote:
> >
> > Thanks for your response.
> >
> > I need to use it like 1-4 times depending on what the legacy rules are
> setup
> > on one rule but i do have thousands of rules.
> > Also, a future state might be to get these imported into a tool for
> business
> > users to start writing these and would definitely be more pleasing if
> they
> > had an operator that they could use.
> > Would you be able to point me to some resources on how to do the custom
> > operator
> > if the need arise.
> >
> > thanks again for your time.
> > --
> > View this message in context:
> http://drools-java-rules-engine.46999.n3.nabble.com/comparing-an-intersection-of-sets-tp1313555p1332184.html
> > 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
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100826/103dc552/attachment.html 


More information about the rules-users mailing list