descriptionDecision Table based Rules Engine
homepage URL
last changeWed, 17 Sep 2008 18:30:28 +0000 (17 13:30 -0500)
content tags
DTRules is a decision table based rules engine written in Java. It is easily integrated into Java applications on a server or stand alone client. The Decision Tables are maintained currently in Excel Spread Sheets. These are extracted to XML, then Compiled through a Domain Specific Language (DSL) which is also part of this project.

This approach to defining policy has been used by a number of States in the U.S. I originally developed the approach for the Texas TIERS Project (a server based application processing eligibility for over 50 aid and assistance programs in Texas). I rewrote the Rules Engine for the Ohio OFAST project (a stand alone application for doing corporate audits). The code bases for both of these projects were completely independent, and the ownership of both ended up in the hands of Texas and Ohio respectively. (The Texas Rules Engine was developed with federal funds, so it is a "government open source" project.)

This code base represents the third complete rewrite of the Rules Engine. This time it is being maintained as an Open Source Project.

This approach is very different from other Rules Engines that are available. The concept is to provide as clean and clear a representation of policy as is possible. In other words, what you define as your policy is what is executed. The order in which rules are applied is specified fully. Thus no need for the overhead and randomness of Forward Chaining or Backward Chaining.

The Performance of the Rules Engine is very high, despite being written in Java. The DSL is written in Flex and Cup, and is very easy to maintain and extend to other domains.

This rewrite also includes some huge improvements over the previous implementations. The biggest is its support of unbalanced Decision Tables. These allow the tables to be defined in a much more obvious fashion, and reduce the complexity of the logic, making the tables far easier to modify and maintain.

Furthermore, a context section has been added to the decision tables. Thus a calling table can simply execute a "Perform income calculations", and that table can indicate in the context section that this should be performed "for all incomes". Previously the calling table would have had to execute a "Perform income calculations for all incomes".

Paul Snow
2008-09-17 Paul SnowUpdated error messages when an error occurs within... master
2008-09-17 Paul SnowAdded support for a new EDD format, as well as support...
2008-09-15 Paul Snowmissing lib
2008-09-15 Paul Snowadd missing lib
2008-09-14 Paul Snowinitial load
9 years ago public
10 years ago maximus
10 years ago mob
10 years ago master
10 years ago standalone