-
Notifications
You must be signed in to change notification settings - Fork 0
Home
This is an old version of DTRules. Go to DTRules/DTRules for the current repository
DTRules Version 4.0 has been released!
DTRules is a Decision Table based Rules Engine. (See DTRules.com for more information)
DTRules uses a combination of Decision Tables and Domain specific languages to describe complex policy and logic. Its deterministic approach to defining rules has proved very powerful on several large projects with thousands of decision tables each. This is about the best approach for implementing understood but large and complex policies and logic.
Decision Tables provide a common representation of policy and rules that can be understood by policy experts and developers alike. The English like domain specific language eliminates the requirement to learn a programming language to understand the conditions and actions.
In DTRules, the order of evaluation is strictly determined by the Decision Tables themselves. As such, DTRules is a Deterministic engine that relies on four features to qualify as a Rules Engine suitable for bridging the gap between domain experts and developers:
- Decision Tables provide a means of laying out the logic of a set of rules far more clearly than nested If-THEN statements in code
- The use of Contexts to provide scoping for rules rather than parameter passing mechanisms
- Support for extendable Domain-specific languages, allowing the rules to be written in English like statements tailored for the domain
Decision Tables provide a multi-dimensional view of logic. Decision Tables themselves layout a set of conditions and a set of actions to be performed. Different combinations of results can lead to different combinations of actions being taken. Yet the table form allows the user to consider each combination (represented by a column) with out the complexity of nested IF statements or uncertain order of evaluation.
The use of name scoping, or contexts, allows for more natural expression of conditions and actions. Actions are taken within the context of a Decision Table, and should an action perform another Decision Table, it too will be executed within the same context.
A Decision Table defines exactly the order and conditions under which Decision Tables are executed. Thus a set of Decision Tables provides a deterministic structure to the execution of the rules. Modifications of the Decision Tables becomes easier to understand, and the impact of modifications to the performance of the tables easier to predict.