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: user@drools.codehaus.org
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
>
>

Reply via email to