Hallo,

I was wondering if it's possible to create a rule that can only be activated once. So if at a certain point the LHS is matching, it will be fired and deactivated immediately, so the rule never ever gets fired for the object it has updated, no matter if the LHS will matches after a few updates()'s at a later time.

The only way I can achieve this, is by manually evaluating in the LHS if the certain object has the certain values I am gonna set in the RHS, so if it has, I don't fire the rule. But this takes some unnessery time and I was wondering if it couldn't be more easier/faster.

Example:
----------------------------------------------------

$product : Product(title matches "(?i).*SOMEWORD.*", $productClasses : productClasses)
$activated : Boolean(booleanValue == false)
from accumulate($productClass : ProductClass( schema.code == "DROOLS", code == "012345" ) from $productClasses,
                                 init(boolean activated = false;),
                                 action( activated = true;),
                                 result( activated ) )

then

Set the schema and code of the product

update($product)

----------------------------------------------------

So in the example above I am actually iterating over all the productClasses of the product and checking if they have the right codes. If I actually could just fire the rule on all the products whose title matches "(?i).*SOMEWORD.*", and deactivate the rule for the instance of the $product, I wouldn't have to accumulate over the list of productClasses of the product to see if the rule
was fired before for this particulare product.

The "no-loop" attribute doesn't work here, because it gets ignored when another rule updates the product. So when this rule has fired, and updated the product, some other rule gets activated and updates the product, and than this rule gets fired, because the LHS still matches.

Any help is welcome,

Waruzjan
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to