Prevention of conflicts
Rules can be written in such a way that they come in conflict with each other. For example can a template rule be set up to force a parameter to a certain value that a disallowed combination rule currently denies because of other parameters' values. Such a conflict can be within the same configuration or between a parent and a child configuration with a forced inheritance of parameter values.
In these kind of scenarios the rule engine anticipates and automatically prevents conflicts between rules by disallowing values that would cause a conflict.
Identification of rules in harmony
In some scenarios, the rule engine can anticipate that what looks like a conflict isn't a conflict and avoids unnecessary disallowed values. A typical example of this is when two forced template rules are triggered by different values of the same lookup parameter.
Example:
Template rule 1: Model = A forces Length = 1 000
Template rule 2: Model = B forces Length = 1 500
If Model has value A this means that Length is forced to 1 000. If some other parameter had forced Length to 1 000 the rule engine would disallow Model B since Length cannot be forced to both 1 000 and 1 500. However, since it's only Model A that forces Length to 1 000 the rule engine anticipates that this lock will disappear when changing to Model B and therefore Model B is allowed.
Clearing the value of a parameter
The rule engine makes sure that a configuration never comes in a faulty state so that a rule is violated (though warning attributes are allowed to be triggered). As a last resort the rule engine will clear a parameter value to avoid a conflict. There are two common scenarios when this happens:
•A parameter that was hidden becomes visible by a sub parameter rule, but the value that the parameter had before becoming hidden is no longer allowed so the value is cleared. This is done without notifying the user.
•When editing a stored configuration, the rule engine discovers that a stored value for a parameter is no longer allowed due to changes in the product's rules, so the value is cleared. A message is shown to notify the user.
Template rules that only recommend values are allowed to fail
Template rules can be either forced or non-forced. The later type is used for suggesting recommended values to the user, but if such a recommended value isn't allowed because of other rules it's considered OK, and the situation will not be prevented by the rule engine. When a non-forced template rule is triggered, it will set those parameters that can be set. If Show information box is set for a template rule this dialog will be shown even if one or more values couldn't be set so that the user is informed that system tried to set those values.
Template expression rules cannot be forced and are therefore always allowed to fail.