[rules-users] Object insertion on runtime

Michael Anstis michael.anstis at gmail.com
Tue Mar 8 05:56:35 EST 2011


I suspect your use of lock-on-active.

Expert's documentation states: "Whenever ... an agenda-group receives the
focus, any rule within that group that has lock-on-active set to true will
not be activated any more; irrespective of the origin of the update, the
activation of a matching rule is discarded". Both rules are in the default
MAIN agenda group so when the first inserts a new Price the update to WM
(insert in your case) is not visible to the other rule. Inserting a new
Price before calling fireAllRules or commenting out the price constraint in
the LHS alters the Facts\Patterns needing to be matched for activation to
occur.

So, try removing lock-on-active (or making the two rules in different agenda
groups).

With kind regards,

Mike

On 8 March 2011 09:53, FrankVhh <frank.vanhoenshoven at agserv.eu> wrote:

> Hi all,
>
> Since yesterday, I am having a problem with reading inserted objects from
> memory. I don't know why it does not go as planned, because it should be
> quite straightforward. It is getting boring to stare at the code, so maybe
> one of you can detect an error.
>
> There are 2 kinds of rules. One kind inserts price objects into working
> memory (as in example 1). THe other kind detects whether the price exists
> and adapts it to a product (as in example 2).
>
> Example 1 seems to work, but the engine does not seem to recognize them as
> a
> Price object. All original price attributes of the products remain
> unchanged
> unless:
>   - I manually insert a Prce object before calling fireAllRules()
>   or
>   - Checking for an existing price is commented out in the LHS
>
> Removing constraints from $price (just checking for existance of a price)
> does not help.
>
> Any idea what has been going wrong?
>
> Thanks in advance.
>
> ==============Example 1=================
> rule "Prices_17"
>
>        lock-on-active true
>        when
>        then
>                Price $price = new Price();
>                $price.setName("Blue autumn");
>                $price.setPrice(6);
>                insert($price);
>                System.out.println("Price " + $price.getName() + "
> inserted");
> end
> =============Example of usage=========================
>
> rule "Products_36"
>
>        lock-on-active true
>        when
>                $product: Product(colour == "Blue")
>                Season(season == Season.AUTUMN)
>                $price: Price(name == "Blue autumn")
>        then
>                $product.setPrice($price.getPrice());
>                update($product);
>                System.out.println("Rule executed");
> end
> ===================================================
>
> --
> View this message in context:
> http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650219.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/20110308/e8d5083b/attachment.html 


More information about the rules-users mailing list