The problem is that with an imperative style language, we are implementing both, what needs to be done (business requirements) and how it needs to be done (algorithm). Let's look at declarative style programming, such as SQL, in relational databases (other declarative style languages include, for example, Prolog or XSLT). SQL describes what we want to search, it doesn't say anything about how the database should find the data. This is exactly what we need for our business requirements.
A rule engine provides an alternative computational model. We declare rules in pretty much the same way as the business analyst does the requirements—as a group of
then statements. The rule engine can then take these rules and execute them over our ...