Frequently Asked Questions
Common questions about DTRules and decision tables.
What is DTRules?
DTRules is a decision table rules engine that lets you express complex business logic using spreadsheet-like tables. Instead of writing if-else chains in code, you define your rules in Excel or a visual editor, making them readable and maintainable by both developers and business analysts.
How does DTRules compare to other rule engines?
Unlike BRMS systems that use forward-chaining inference (like Drools), DTRules uses decision tables for deterministic rule execution. This means rules execute in a predictable, top-to-bottom order. The result is faster execution, easier debugging, and rules that business people can actually read and understand.
What programming languages are supported?
DTRules has native implementations in Java and Go. The Java implementation is the original, with 20+ years of production use. The Go implementation provides 130x faster operator lookup and includes a REST API for language-agnostic integration.
Is DTRules open source?
Yes! DTRules is released under the Apache License 2.0. You can use it freely in commercial and non-commercial projects, modify the source code, and distribute your modifications. The only requirement is to include the license notice in distributions.
How do I get started?
Start with the quickstart guide for your preferred language (Java or Go). You'll create a simple decision table, define your data model using EDD (Entity Description Dictionary), and execute your first rules in about 10 minutes.
Can business users edit the rules?
Yes! Decision tables can be authored in Excel, making them accessible to business analysts and policy experts. The visual UI also provides a user-friendly interface for creating and editing rules without writing code.
How do decision tables work?
A decision table is like a spreadsheet where columns represent different scenarios and rows represent conditions and actions. The engine evaluates conditions from top to bottom, finds matching columns, and executes the corresponding actions. This tabular format makes complex logic easy to visualize and verify.
What's the Expression Language?
DTRules includes a human-readable expression language for writing conditions and actions. Instead of code like 'if (age >= 18 && status == "active")', you write 'age >= 18 and status = "active"'. The language includes 75+ operators for arithmetic, comparisons, strings, arrays, dates, and more.
Is DTRules suitable for high-performance applications?
Yes. The Go implementation is highly optimized for performance, with benchmarks showing 130x faster operator lookup compared to map-based approaches. DTRules has been used in production systems processing millions of eligibility determinations.
How do I test my decision tables?
DTRules supports multiple testing approaches: unit tests with expected inputs/outputs, test scenarios defined in Excel alongside your rules, and programmatic testing through the API. The deterministic execution model makes testing straightforward - the same inputs always produce the same outputs.
Where can I see DTRules in action?
Check out the interactive poker demo on this site! It showcases DTRules decision tables controlling AI player behavior in a Texas Hold'em game. The Decision Theater shows exactly how the AI makes decisions based on hand strength, position, and table dynamics.
How do I get help or report issues?
For questions and discussions, open an issue on the GitHub repository. For bugs, please include steps to reproduce, expected vs actual behavior, and your environment details. The community is responsive and contributions are welcome!
Still have questions? We're here to help.