Version 2

    Atomic Rules

     

    You may hear the term "atomic rule" meantioned from time to time.

    An atomic rule is a rule that has been distilled down into only the essentials. Normally this means that you may have started with a single more complex rule, and then distilled it down to multiple simple rules. It also means avoiding the "or" conditional element.

    This makes for simpler more maintainable rules (although more numerous), and may require you to flatten your domain object model to some extent.

     

    You can think of this as being analagous to normalising a database schema in an RDBMS. This can help performance (both for rules and databases). Just like normalisation, there may be times when it is not appropriate to have only atomic rules, and you need to have some rules that are "denormalised" so to speak.

     

    You don't have to worry about runtime performance with lots of small rules over fewer complex rules - the RETE network will share conditional elements efficiently if they are used across many rules.