On Tue, Sep 29, 2009 at 12:43 AM, Dave Schweisguth <dave@schweisguth.org> wrote:
Greetings fellow Droolers,

I've just begun using Drools and am very happy with it so far as it seems to
be a great fit for what we want to do. My left hand sides are not quite
beautiful enough, however, and I wondered if anyone could suggest
improvements.

1) One of my facts' properties is a set of strings. The goal is to "grep"
  them for some search string. The most convenient syntax I've come up with
  so far is to give the fact a method anyTextContains which loops over the
  set and calls contains(searchString) on each member, and then use

fact: Fact() eval(fact.anyTextContains("searchString"))

in my LHS. It's compact enough, but I wondered whether it could be done
without a custom method or eval. "from" seems not to be a possibility since
the collection is of strings, not objects. Any suggestions?

But any java.lang.String is an Object, although without a field (in the usual sense),
Nevertheless, try

rule "Match John"
     when
         Vote( $names : names ) // Set<String> names
         String( this matches "John" ) from $names
     then        
         System.out.println( "Hi John" );
end
 
-W