Discussion
Rule Resolution Process
Hi,
In the lesson Rule Resolution Process it says
1.Check the rule cache. If the rule is present in the cache, go to Step 8.
and the steps 8 and 9 are
8.Find the best instance (and check to make sure there is not a duplicate rule).
9.Check that the Availability is not set to BLOCKED.
Why do we have to check for the Blocked if the rule is already present in the Cache. Can a rule be changed from Available to Blocked by someone else while it was sitting in the cache.It would not even be picked up if its BLOCKED in the first place. even if the availability changes, does not the system pulse invalidate that entry from the cache.
Thnaks,
Pradeep
With Blocked, the system wants to know that you're trying to access the rule, so that it can put up an error message telling you that the rule can't be run.
It helps to compare Blocked and Withdrawn, which perform similar functions, but result in different effects.
Let's say you have three rules of the same type, distributed as follows:
ABC-Work: ruleset 01-01-01
ABC-Work-Case: rulesets 01-01-15, 01-01-20
Using scenario #3, if the blocked rule was excluded from the cache, then the system would have no rule to run. As a general rule, you want to know that there was no rule of that name in the cache, because that would normally indicate that the rule is in a class or a ruleset that isn't part of the application so the user can't access it.
I hope that cleared up the issue for you. Rule resolution is a tricky subject, one that can be difficult to describe, let alone understand. If you have any additional questions, please respond with them and we'll do our best to answer them.