Basically, a rule engine will provide more agility to your project :
- rules are declarative and more expressive than nested IF/THEN/ELSE of your favorite programming language.
- rules are more maintainable : adding/removing or modifying a rule is very easy and does not require to change the overall ruleset.
- rule engines are powerful : rule languages provide powerful constructs and features that cannot be expressed easily in a normal programming language.
- rule engines are very efficient : even if they do not have native code performance, rule engines provide optimizations so that performances are usually not an issue.
So, as a general rule, a rule engine is a very good way to add decision logic automation to your project if :
- rules will change ‘often’ (more often than normal patch releases of your application).
- you will have to deal with a lot of rules.
- you can afford a rule engine specialist or a consultant in your dev-team.
In the contrary, I would not recommend to adopt rule engines you answer “no” to at least two of the items above.
- rules will never change or change very rarely: hard coded decision logic could do the job.
- you have very few rules : no need for a rule engine, you programming language should be enough.
- You cannot afford a rule engine specialist : don’t risk to lose control over your project and avoid modules that no one can maintain.
Advertisement