[rules-users] Pattern order affects activation

Wolfgang Laun wolfgang.laun at gmail.com
Thu Feb 14 12:57:36 EST 2013


Please restate your problem, correcting (see below)...

On 14/02/2013, DOLECEK Ales <Ales.Dolecek at nextiraone.eu> wrote:

> rule "Remove unsued phones"
> 	when
> 		exists Customer()
> 		not Customer(phone == $value)
> 		$unused: Phone($value: value)
> 	then
> 		retract($unused);
> end

Provide the accurate code of your rule. This one isn't correct, since
use of $value precedes its definition....


>
> There might be multiple Customer and Phone facts in the working memory and
> the purpose of the rule is to remove phones that do not belong to any of the
> customers. The rule should not be activated while there are no Customers in
> WM - hence the "exists Customer()". This is becaus there are other rules,
> taht might use the phones to lookup customers.
>
> There Phone with value = "test" in working memory when Customer with phone =
> "test" is inserted. BTW: Both facts are immutable.

Please provide a more accurate description, preferably (correct &
working) Java code.

-W

>
> The behavior differs depending on order of the 3 patterns in the LHS of the
> rule.
>
> 1) If the "exists Customer()" is first activation is created
> 	- this is wrong since the "exists Customer()" shall be false
>
> 2) if I move the "exists Customer()" between the other patterns activation
> is created and immediatelly canceled
> 	- this is also wrong since, although in my case (where are no side effects)
> it works
>
> 3) Finally if the "exists Customer()" comes last the then activation is not
> created at all
> 	- this is correct
>
> Is this bug or am I missing something important about rule language?
> Rewriting the LHS with expicit infix and does not help:
>
> 		(exists Customer()) and
> 		(not Customer(phone == $value)) and
> 		($unused: Phone($value: value))
>
>
> Ales
>
> FYI: I'm using 5.5.0.Final
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>


More information about the rules-users mailing list