Rete evaluation: with a proper logic representation (which is suitable only for crisp rules), the rules need not to be re-evaluated at every time step.
Scripting languages: Sometimes, the rules or FSMs are directly the primitives of an architecture (e.g. in Soar).