Refraction is the act of preventing a rule from firing multiple times in succession. Without refraction, at each loop iteration the same rules can be added to the agenda repeatedly. This is because the same conditions are satisfied. To prevent a single rule from firing repeatedly, a refraction condition is implemented. There are many types of refraction rules.
Some systems use a refraction condition that each rule may only be fired once. Once a rule has been fired, it may never be fired again until the system is reset.
In an intermittant rule refraction condition, a rule may never fire twice consecutively, and may not be added to the agenda again until a different rule fires first.
In a changing antecedent refraction condition, a rule may only fire if the attributes in the antecedent have changed.