I couldn't find a way to say 'values not contains "milk"', hence the eval() and my subsequent request for assistance.
Does such syntax exist? -Mitch -----Original Message----- From: news [mailto:[EMAIL PROTECTED] On Behalf Of Russ Egan Sent: Wednesday, April 19, 2006 10:16 AM To: [email protected] Subject: RE: [drools-user] Indicator (ordered) Facts Did you try adding extra columns? Like: OrderedFact(type == "GroceryList", values contains "peas", values contains "milk"); Hello Mitch, > I ended up creating and OrderedFact Java object which contains a > String 'type' and List 'values' property. > > This allows me to do things like, > > rule "Create a grocery list" > when > not OrderedFact(type == "GroceryList") > then > assert(new OrderedFact("GroceryList", new String[] {"peas", > "carrots"})); > end > > rule "Add milk if the list contains peas" > when > f : OrderedFact(type == "GroceryList", values contains > "peas") > eval(!f.getValues().contains("milk")) > then > f.getValues().add("milk"); > end > -Mitch > > PS Is there a way to avoid the eval() in the second rule? > > -----Original Message----- >> From: Michael Neale [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, April 18, 2006 5:06 PM >> To: [email protected] >> Subject: Re: [drools-user] Indicator (ordered) Facts >> assert(new TempFact("MapExists")); something like that. You can use >> TempFact over and over. If you intern the string in the TempFact >> bean, then it could be pretty fast to check (as the JVM will do an >> identity compare before a string char compare I think). You only need >> to create it once. >> >> On 4/19/06, Mitch Christensen <[EMAIL PROTECTED]> wrote: >> >> Hey, >> >> Quite often I want to work with 'temporary' facts that I often refer >> to as >> 'indicator' facts. With Jess I used to use ordered facts for this >> purpose. >> In Drools, do I have to create a Java bean for every such case? >> What if I wanted to do the following, >> >> then >> assert("MapExists"); >> end >> How would I match this fact elsewhere? >> >> -Mitch >>
