title: Rules Engine - pros and cons
body: <p>I'm auditing a project that uses what is called a <a href="http://en.wikipedia.org/wiki/Business_rules_engine" rel="noreferrer">Rules Engine</a>. In short, it's a way to externalize business logic from application code. </p>
  
  <p>This concept is entirely new to me and I'm pretty skeptical about it. After hearing people talk about <a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html" rel="noreferrer">Anemic Domain Models</a> for the past few years, I'm questioning the Rules Engine Approach. To me they seem like a great way to WEAKEN a domain model. For example say I'm doing a java webapp interacting with a Rules Engine. Then I decide I want to have an Android app based on the same domain. Unless I want the Android app to interact with the Rules Engine as well, I'm going to have to miss out on whatever business logic was already written. </p>
  
  <p>As I don't have any experience with them yet, just curiosity, I was interested to hear about the pros and cons are in using a Rules Engine? The only pro that I can think of is that you don't need to rebuild your entire Application just to change some business rule (but really, how many apps really have that many changes?). But using a Rules Engine to solve that problem kind of sounds to me like putting a band-aid over a shotgun wound. </p>
  
  <p>UPDATE - since writing this, the god himself, Martin Fowler, has <a href="http://martinfowler.com/bliki/RulesEngine.html" rel="noreferrer">blogged about using a Rules engine</a>.</p>