Java API
This reference covers the core Java classes for integrating DTRules into your applications.
Core Classes
RulesDirectory
Entry point for loading rule configurations.
import com.dtrules.session.RulesDirectory;
// Load rules from DTRules.xml configuration
RulesDirectory rd = new RulesDirectory(path, "DTRules.xml");
// Get a rule set by name
RuleSet rs = rd.getRuleSet("MyRuleSet"); RuleSet
Represents a compiled set of rules.
import com.dtrules.session.RuleSet;
// Create a new session for execution
IRSession session = rs.newSession(); IRSession
The execution context for rules.
import com.dtrules.session.IRSession;
// Load input data
session.loadXml(inputStream, "mapping");
// Execute a decision table
session.execute("DecisionTableName");
// Execute with tracing
session.execute("DecisionTableName", true);
// Get entity state
EntityState state = session.getState();
// Print entity report
session.printEntityReport(outputStream, state, "results"); Data Loading
XML Data
// Load from file
FileInputStream input = new FileInputStream("data.xml");
session.loadXml(input, "mapping");
input.close();
// Load from string
String xmlData = "<data>...</data>";
session.loadXml(new ByteArrayInputStream(xmlData.getBytes()), "mapping"); Programmatic Data
// Get entity state
EntityState state = session.getState();
// Create an entity
IREntity person = state.createEntity("Person");
// Set attributes
person.set("name", "John Doe");
person.set("age", 35);
person.set("income", 50000.0);
// Add to an array
IREntity household = state.find("household");
household.addToArray("members", person); Excel Compilation
Excel2XML
Compiles Excel decision tables to XML.
import com.dtrules.compiler.Excel2XML;
String path = System.getProperty("user.dir");
// Simple compilation
Excel2XML.compile(path, "DTRules.xml", "MyRuleSet");
// Compilation with options
Excel2XML compiler = new Excel2XML(path, "DTRules.xml", "MyRuleSet");
compiler.compileRuleSet(
path,
"DTRules.xml",
"MyRuleSet",
"repository", // output directory
maps, // mapping configuration
5 // max columns per table
); Entity Access
// Get entity by name
IREntity app = state.find("application");
// Get attribute value
boolean eligible = (Boolean) app.get("eligible");
String status = (String) app.get("status");
double amount = (Double) app.get("benefit_amount");
// Get array attribute
List<IREntity> members = (List<IREntity>) app.get("members");
// Navigate relationships
IREntity household = (IREntity) app.get("household");
IREntity head = (IREntity) household.get("head");
String headName = (String) head.get("name"); Tracing and Debugging
// Enable tracing
session.setTrace(true);
// Execute with trace
session.execute("Main");
// Get trace output
String trace = session.getTraceOutput();
System.out.println(trace); Example: Complete Integration
public class EligibilityService {
private final RuleSet ruleSet;
public EligibilityService(String configPath) throws Exception {
RulesDirectory rd = new RulesDirectory(configPath, "DTRules.xml");
this.ruleSet = rd.getRuleSet("Eligibility");
}
public EligibilityResult determine(Application app) throws Exception {
// Create session
IRSession session = ruleSet.newSession();
// Load application data
EntityState state = session.getState();
IREntity appEntity = state.find("application");
// Map application to entity
mapApplicationToEntity(app, appEntity);
// Execute rules
session.execute("Determine_Eligibility");
// Extract results
boolean eligible = (Boolean) appEntity.get("eligible");
String reason = (String) appEntity.get("reason_code");
double benefit = (Double) appEntity.get("benefit_amount");
return new EligibilityResult(eligible, reason, benefit);
}
private void mapApplicationToEntity(Application app, IREntity entity) {
entity.set("applicant_name", app.getName());
entity.set("applicant_age", app.getAge());
entity.set("household_income", app.getHouseholdIncome());
// ... additional mappings
}
} Maven Dependency
<dependency>
<groupId>com.dtrules</groupId>
<artifactId>dtrules-engine</artifactId>
<version>1.0.0</version>
</dependency> Next Steps
- Go API - Go integration
- Java Quick Start - Getting started guide
- Testing Rules - Write Java tests