๐ฆ Rust Rule Engine - AI-Powered Edition
A powerful, high-performance rule engine for Rust supporting GRL (Grule Rule Language) syntax with advanced features like AI integration, method calls, custom functions, object interactions, and both file-based and inline rule management.
๐ Table of Contents
- ๐ Key Features
- ๐ค AI Integration
- ๐ Quick Start
- ๐ Examples
- ๐ REST API
- โก Parallel Processing
- ๐ Distributed & Cloud
- ๐งช All Examples
- ๐ Streaming
- ๐ Analytics
- ๐ง API Reference
- ๐ Changelog
๐ Key Features
- ๐ฅ GRL-Only Support: Pure Grule Rule Language syntax (no JSON)
- ๐ค AI Integration: Built-in support for ML models, LLMs, and AI-powered decision making
- ๐ Rule Files: External
.grlfiles for organized rule management - ๐ Inline Rules: Define rules as strings directly in your code
- ๐ Custom Functions: Register and call user-defined functions from rules
- ๐ฏ Method Calls: Support for
Object.method(args)and property access - ๐ง Knowledge Base: Centralized rule management with salience-based execution
- ๐พ Working Memory: Facts system for complex object interactions
- โก High Performance: Optimized execution engine with cycle detection and no-loop support
- ๐ No-Loop Protection: Prevent rules from firing themselves infinitely (Drools-compatible)
- ๐ก๏ธ Type Safety: Rust's type system ensures runtime safety
- ๐๏ธ Builder Pattern: Clean API with
RuleEngineBuilder - ๐ Execution Statistics: Detailed performance metrics and debugging
- ๐ Smart Dependency Analysis: AST-based field dependency detection and conflict resolution
- ๐ Parallel Processing: Multi-threaded rule execution with automatic dependency management
- ๐ Distributed Architecture: Scale across multiple nodes for high-performance processing
- ๐ Rule Templates: Parameterized rule templates for scalable rule generation
- ๐ Stream Processing: Real-time event processing with time windows (optional)
- ๐ Analytics: Built-in aggregations and trend analysis
- ๐จ Action Handlers: Custom action execution for rule consequences
- ๐ Advanced Analytics: Production-ready performance monitoring and optimization insights
๐ค AI Integration (NEW!)
Integrate AI/ML models seamlessly into your rules, similar to Drools Pragmatic AI:
Features
- ๐ค Sentiment Analysis: Real-time text sentiment evaluation
- ๐ก๏ธ Fraud Detection: ML-powered fraud scoring and detection
- ๐ Predictive Analytics: Customer tier prediction and scoring
- ๐ง LLM Reasoning: Large Language Model decision support
- ๐ Real-time ML Scoring: Dynamic model inference in rules
Example AI Rules
rule "AI Customer Service" salience 100 {
when
CustomerMessage.type == "complaint"
then
analyzeSentiment(CustomerMessage.text);
set(Ticket.priority, "high");
logMessage("๐ค AI analyzing customer sentiment");
}
rule "AI Fraud Detection" salience 90 {
when
Transaction.amount > 1000
then
detectFraud(Transaction.amount, Transaction.userId);
set(Transaction.status, "under_review");
sendNotification("๐ก๏ธ Checking for potential fraud", "security@company.com");
}
rule "AI Tier Prediction" salience 80 {
when
Customer.tier == "pending"
then
predictTier(Customer.id);
set(Customer.tierAssignedBy, "AI");
logMessage("๐ AI predicting customer tier");
}
Register AI Functions
// Register AI-powered functions
engine.register_function;
engine.register_function;
engine.register_function;
๐ Changelog
v0.5.0 (October 2025) - AI Integration ๐ค
- ๐ค AI-Powered Rules: Built-in support for AI/ML model integration
- Sentiment analysis functions for customer service automation
- ML-powered fraud detection with real-time risk scoring
- Predictive analytics for customer tier assignment
- LLM reasoning for complex business decision support
- Real-time ML scoring for dynamic pricing and recommendations
- ๐ง AI Function Registry: Easy registration and management of AI model functions
- ๐ Production AI Examples: Complete examples with simulated AI APIs
- ๐ AI Insights: Track AI model performance and decision outcomes
- ๐ AI-Enhanced REST API: HTTP endpoints for AI-powered rule execution
v0.4.1 (October 2025) - Enhanced Parser & Publishing
- ๐ง Enhanced GRL Parser: Improved parsing with complex nested conditions
- Support for parentheses grouping:
(age >= 18) && (status == "active") - Better handling of compound boolean expressions
- Improved error messages and validation
- Support for parentheses grouping:
- ๐ฆ Published to Crates.io: Available as
rust-rule-engine = "0.4.1" - ๐ Comprehensive Examples: Added 40+ examples covering all features
- ๐ Complete Documentation: Full API documentation and usage guides
v0.3.1 (October 2025) - REST API with Monitoring
- ๐ Production REST API: Complete web API with advanced analytics integration
- Comprehensive endpoints for rule execution and monitoring
- Real-time analytics dashboard with performance insights
- Health monitoring and system status endpoints
- CORS support and proper error handling
- Sample requests and complete API documentation
- Production-ready demo script for testing
v0.3.0 (October 2025) - AST-Based Dependency Analysis & Advanced Analytics
๐ Quick Start
Add to your Cargo.toml:
[]
= "0.3.1"
# For streaming features
= { = "0.3.1", = ["streaming"] }
๐ File-Based Rules
Create a rule file rules/example.grl:
rule "AgeCheck" salience 10 {
when
User.Age >= 18 && User.Country == "US"
then
User.setIsAdult(true);
User.setCategory("Adult");
log("User qualified as adult");
}
rule "VIPUpgrade" salience 20 {
when
User.IsAdult == true && User.SpendingTotal > 1000.0
then
User.setIsVIP(true);
log("User upgraded to VIP status");
}
use ;
use HashMap;
๐ Inline String Rules
Define rules directly in your code:
use ;
use HashMap;
๐ค Complete AI Integration Example
Here's a complete example showing how to build an AI-powered business rule system:
use ;
use HashMap;
๐ Dependency Analysis Example
use DependencyAnalyzer;
๐ฏ GRL Rule Language Features
Supported Syntax
// Basic rule
rule "RuleName" salience 10 {
when
Object.Property > 100 &&
Object.Status == "ACTIVE"
then
Object.setCategory("HIGH_VALUE");
processTransaction(Object.Id, Object.Amount);
log("Rule executed successfully");
}
// Rule with no-loop protection (prevents infinite self-activation)
rule "ScoreUpdater" no-loop salience 15 {
when
Player.score < 100
then
set(Player.score, Player.score + 10);
log("Score updated with no-loop protection");
}
Operators
- Comparison:
>,>=,<,<=,==,!= - Logical:
&&,|| - Value Types: Numbers, Strings (quoted), Booleans (
true/false)
Actions
- Method Calls:
Object.method(args) - Function Calls:
functionName(args) - Logging:
log("message")
๐ Examples
๐ E-commerce Rules
rule "VIPCustomer" salience 20 {
when
Customer.TotalSpent > 5000.0 && Customer.YearsActive >= 2
then
Customer.setTier("VIP");
sendWelcomePackage(Customer.Email, "VIP");
applyDiscount(Customer.Id, 15.0);
log("Customer upgraded to VIP");
}
rule "LoyaltyReward" salience 15 {
when
Customer.OrderCount >= 50
then
addLoyaltyPoints(Customer.Id, 500);
log("Loyalty reward applied");
}
๐ Vehicle Monitoring
rule "SpeedLimit" salience 25 {
when
Vehicle.Speed > Vehicle.SpeedLimit
then
triggerAlert(Vehicle.Id, "SPEED_VIOLATION");
logViolation(Vehicle.Driver, Vehicle.Speed);
Vehicle.setStatus("FLAGGED");
}
rule "MaintenanceDue" salience 10 {
when
Vehicle.Mileage > Vehicle.NextMaintenance
then
scheduleService(Vehicle.Id, Vehicle.Mileage);
notifyDriver(Vehicle.Driver, "Maintenance due");
}
๐ REST API with Monitoring
The engine provides a production-ready REST API with comprehensive analytics monitoring.
Quick Start
# Run the REST API server with full analytics monitoring
# Or use the demo script for testing
Available Endpoints
Rule Execution:
POST /api/v1/rules/execute- Execute rules with provided factsPOST /api/v1/rules/batch- Execute rules in batch mode
Analytics & Monitoring:
GET /api/v1/analytics/dashboard- Comprehensive analytics dashboardGET /api/v1/analytics/stats- Overall performance statisticsGET /api/v1/analytics/recent- Recent execution activityGET /api/v1/analytics/recommendations- Performance optimization recommendationsGET /api/v1/analytics/rules/{rule_name}- Rule-specific analytics
System:
GET /- API documentationGET /api/v1/health- Health checkGET /api/v1/status- System status
Example Requests
Execute Rules:
Analytics Dashboard:
Sample Response:
Production Configuration
The REST API includes:
- Real-time Analytics: Live performance monitoring
- Health Checks: Comprehensive system health monitoring
- CORS Support: Cross-origin resource sharing
- Error Handling: Proper HTTP status codes and error messages
- Sampling: Configurable analytics sampling for high-volume scenarios
- Memory Management: Automatic cleanup and retention policies
โก Performance & Architecture
Benchmarks
Performance benchmarks on a typical development machine:
Simple Rule Execution:
โข Single condition rule: ~4.5 ยตs per execution
โข With custom function call: ~4.8 ยตs per execution
Complex Rule Execution:
โข Multi-condition rules: ~2.7 ยตs per execution
โข 3 rules with conditions: ~2.8 ยตs per execution
Rule Parsing:
โข Simple GRL rule: ~1.1 ยตs per parse
โข Medium complexity rule: ~1.4 ยตs per parse
โข Complex multi-line rule: ~2.0 ยตs per parse
Facts Operations:
โข Create complex facts: ~1.8 ยตs
โข Get nested fact: ~79 ns
โข Set nested fact: ~81 ns
Memory Usage:
โข Base engine overhead: ~10KB
โข Per rule storage: ~1-2KB
โข Per fact storage: ~100-500 bytes
Run benchmarks: cargo bench
Key Performance Insights:
- Ultra-fast execution: Rules execute in microseconds
- Efficient parsing: GRL rules parse in under 2ยตs
- Optimized facts: Nanosecond-level fact operations
- Low memory footprint: Minimal overhead per rule
- Scales linearly: Performance consistent across rule counts
๐ Performance Comparison
Benchmark comparison with other rule engines:
Language/Engine Rule Execution Memory Usage Startup Time
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Rust (this engine) 2-5ยตs 1-2KB/rule ~1ms
.NET Rules Engine 15-50ยตs 3-8KB/rule ~50-100ms
Go Rules Framework 10-30ยตs 2-5KB/rule ~10-20ms
Java Drools 50-200ยตs 5-15KB/rule ~200-500ms
Python rule-engine 500-2000ยตs 8-20KB/rule ~100-300ms
Rust Advantages:
- 10x faster than .NET rule engines
- 5x faster than Go-based rule frameworks
- 50x faster than Java Drools
- 400x faster than Python implementations
- Zero GC pauses (unlike .NET/Java/Go)
- Minimal memory footprint
- Instant startup time
Why Rust Wins:
- No garbage collection overhead
- Zero-cost abstractions
- Direct memory management
- LLVM optimizations
- No runtime reflection costs
Key Design Decisions
- GRL-Only: Removed JSON support for cleaner, focused API
- Dual Sources: Support both file-based and inline rule definitions
- Custom Functions: Extensible function registry for business logic
- Builder Pattern: Fluent API for easy engine configuration
- Type Safety: Leverages Rust's type system for runtime safety
- Zero-Copy: Efficient string and memory management
๏ฟฝ Advanced Dependency Analysis (v0.3.0+)
The rule engine features sophisticated AST-based dependency analysis that automatically detects field dependencies and potential conflicts between rules.
Smart Field Detection
use ;
// Automatic field dependency detection
let rules = r#"
rule "DiscountRule" {
when Customer.VIP == true && Order.Amount > 100.0
then
Order.setDiscount(0.2);
Customer.setPoints(Customer.Points + 50);
}
rule "ShippingRule" {
when Order.Amount > 50.0
then
Order.setFreeShipping(true);
log("Free shipping applied");
}
"#;
let analyzer = new;
let analysis = analyzer.analyze_grl_rules?;
// Automatically detected dependencies:
// DiscountRule reads: [Customer.VIP, Order.Amount, Customer.Points]
// DiscountRule writes: [Order.Discount, Customer.Points]
// ShippingRule reads: [Order.Amount]
// ShippingRule writes: [Order.FreeShipping]
Conflict Detection
// Detect read-write conflicts between rules
let conflicts = analysis.find_conflicts;
for conflict in conflicts
// Smart execution ordering based on dependencies
let execution_order = analysis.suggest_execution_order;
Advanced Features
- ๐ฏ AST-Based Analysis: Proper parsing instead of regex pattern matching
- ๐ Recursive Conditions: Handles nested condition groups (AND/OR/NOT)
- ๐ง Function Side-Effects: Infers field modifications from function calls
- โก Zero False Positives: Accurate dependency detection
- ๐ Conflict Resolution: Automatic rule ordering suggestions
- ๐ Parallel Safety: Enables safe concurrent rule execution
๏ฟฝ๐ API Reference
Core Types
// Main engine builder
new
.with_rule_file?
.with_inline_grl?
.with_config
.build
// Value types
Integer
Number
String
Boolean
Object
// Facts management
let facts = new;
facts.add_value?;
facts.get?;
// Execution results
result.rules_fired // Number of rules that executed
result.cycle_count // Number of execution cycles
result.execution_time // Duration of execution
Function Registration
engine.register_function;
โก Parallel Rule Execution
The engine supports parallel execution for improved performance with large rule sets:
use ;
// Create parallel engine with custom configuration
let config = ParallelConfig ;
let mut engine = new;
// Add rules and facts
engine.add_rule;
engine.insert_fact;
// Execute rules in parallel
let result = engine.execute_parallel.await;
println!;
println!;
println!;
Parallel Execution Examples
# Simple parallel demo
# Performance comparison
๐ Distributed & Cloud Features
Scale your rule engine across multiple nodes for high-performance distributed processing:
Architecture Overview
โโโโโโโโโโโโโโโโโโโโโโโ
โ Load Balancer โ
โ (Route Requests) โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Node 1 โ โ Node 2 โ โ Node 3 โ
โValidationโ โ Pricing โ โ Loyalty โ
โ Rules โ โ Rules โ โ Rules โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโผโโโโโโโโโโโ
โ Shared Data โ
โ (Redis/PostgreSQL) โ
โโโโโโโโโโโโโโโโโโโโโโโ
Performance Benefits
- โก 3x Performance: Parallel processing across specialized nodes
- ๐ก๏ธ Fault Tolerance: If one node fails, others continue operation
- ๐ Horizontal Scaling: Add nodes to increase capacity
- ๐ Geographic Distribution: Deploy closer to users for reduced latency
Quick Demo
# Compare single vs distributed processing
Results:
Single Node: 1.4 seconds (sequential)
Distributed: 0.47 seconds (parallel)
โ 3x Performance Improvement!
Implementation Guide
See our comprehensive guides:
Cloud Deployment
Deploy on major cloud platforms:
Kubernetes:
apiVersion: apps/v1
kind: Deployment
metadata:
name: rule-engine-workers
spec:
replicas: 3
selector:
matchLabels:
app: rule-engine
Docker:
FROM rust:alpine
COPY target/release/rust-rule-engine /app/
EXPOSE 8080
CMD ["/app/rust-rule-engine"]
When to Use Distributed Architecture
โ Recommended for:
- High traffic (>10,000 requests/day)
- Complex rule sets (>500 rules)
- High availability requirements
- Geographic distribution needs
โ Not needed for:
- Simple applications (<100 rules)
- Low traffic scenarios
- Development/prototyping
- Limited infrastructure budget
๐งช All Examples
Core Features
# Basic rule execution
# E-commerce rules
# Custom functions
# Method calls
Performance & Scaling
# Parallel processing comparison
# Financial stress testing
# Distributed architecture demo
Advanced Features
# REST API with analytics
# Analytics and monitoring
# Rule file processing
# Advanced dependency analysis
Production Examples
# Fraud detection system
# Complete speedup demo
# Debug conditions
๐ Streaming Rule Engine (v0.2.0+)
For real-time event processing, enable the streaming feature:
## ๐ Streaming Rule Engine (v0.2.0+)
For real-time rule processing with streaming data:
```rust
use rust_rule_engine::streaming::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut engine = StreamRuleEngine::new();
// Add streaming rules
engine.add_rule(r#"
rule "HighVolumeAlert" {
when
WindowEventCount > 100 && volumeSum > 1000000
then
AlertService.trigger("High volume detected");
}
"#).await?;
// Register action handlers
engine.register_action_handler("AlertService", |action| {
println!("๐จ Alert: {:?}", action.parameters);
}).await;
// Start processing
engine.start().await?;
// Send events
let event = StreamEvent::new("TradeEvent", data, "exchange");
engine.send_event(event).await?;
Ok(())
}
Streaming Features:
- โฐ Time Windows: Sliding/tumbling window aggregations
- ๐ Real-time Analytics: Count, sum, average, min/max over windows
- ๐ฏ Pattern Matching: Event correlation and filtering
- โก High Throughput: Async processing with backpressure handling
- ๐จ Action Handlers: Custom callbacks for rule consequences
Real-World Integration Examples
๐ Kafka Consumer
use ;
async
๐ WebSocket Stream
use ;
async
๐ HTTP API Polling
async
๐๏ธ Database Change Streams
async
๐ File Watching
use ;
async
Use Case Examples
๐ Financial Trading
rule "CircuitBreaker"
๐ก๏ธ IoT Monitoring
rule "OverheatingAlert"
๐ก๏ธ Fraud Detection
rule "SuspiciousActivity"
๐ E-commerce Analytics
rule "FlashSaleOpportunity"
See docs/STREAMING.md for complete documentation and examples.
๐ Advanced Analytics & Performance Monitoring (v0.3.0+)
Get deep insights into your rule engine performance with built-in analytics and monitoring:
๐ง Quick Analytics Setup
use ;
// Configure analytics for production use
let analytics_config = AnalyticsConfig ;
// Enable analytics
let analytics = new;
engine.enable_analytics;
// Execute rules - analytics automatically collected
let result = engine.execute?;
// Access comprehensive insights
if let Some = engine.analytics
๐ No-Loop Protection
Prevent rules from infinitely triggering themselves - essential for rules that modify their own conditions:
๐ฏ The Problem
// โ Without no-loop: INFINITE LOOP!
rule "ScoreBooster" {
when
Player.score < 100
then
set(Player.score, Player.score + 10); // This changes the condition!
}
// Rule keeps firing: 50 โ 60 โ 70 โ 80 โ 90 โ 100 โ STOP (only due to max_cycles)
โ The Solution
// โ
With no-loop: SAFE!
rule "ScoreBooster" no-loop {
when
Player.score < 100
then
set(Player.score, Player.score + 10); // Rule fires once per cycle
}
// Rule fires once: 50 โ 60, then waits for next cycle
๐งช Usage Examples
use *;
// Method 1: Via GRL parsing
let grl = r#"
rule "SafeUpdater" no-loop salience 10 {
when Player.level < 5
then set(Player.level, Player.level + 1);
}
"#;
let rules = parse_rules?;
// Method 2: Via API
let rule = new
.with_no_loop
.with_salience;
// Method 3: Multiple positions supported
// rule "Name" no-loop salience 10 { ... } โ
// rule "Name" salience 10 no-loop { ... } โ
๐ฌ How It Works
- Per-Cycle Tracking: Engine tracks which rules fired in current cycle
- Skip Logic: Rules with
no_loop=trueskip if already fired this cycle - Fresh Start: Tracking resets at beginning of each new cycle
- Drools Compatible: Matches Drools behavior exactly
๐ฎ Real Example
๐ Analytics Features
- โฑ๏ธ Execution Timing: Microsecond-precision rule performance tracking
- ๐ Success Rate Monitoring: Track fired vs evaluated rule ratios
- ๐พ Memory Usage Estimation: Optional memory footprint analysis
- ๐ฏ Performance Rankings: Identify fastest and slowest rules
- ๐ฎ Smart Recommendations: AI-powered optimization suggestions
- ๐ Timeline Analysis: Recent execution history and trends
- โ๏ธ Production Sampling: Configurable sampling rates for high-volume environments
- ๐๏ธ Automatic Cleanup: Configurable data retention policies
๐๏ธ Production Configuration
// Production configuration with optimized settings
let production_config = production; // Built-in production preset
// Or custom configuration
let custom_config = AnalyticsConfig ;
๐ Rich Analytics Dashboard
// Get comprehensive performance report
let analytics = engine.analytics.unwrap;
// Overall statistics
let stats = analytics.overall_stats;
println!;
println!;
println!;
println!;
println!;
// Top performing rules
for rule_metrics in analytics.slowest_rules
// Recent activity timeline
for event in analytics.get_recent_events
๐ Performance Insights
The analytics system provides actionable insights:
- Slow Rule Detection: "Consider optimizing 'ComplexValidation' - average execution time is 15.3ms"
- Low Success Rate Alerts: "Rule 'RareCondition' has low success rate (12.5%) - review conditions"
- Dead Rule Detection: "Rule 'ObsoleteCheck' never fires despite 156 evaluations - review logic"
- Memory Usage Warnings: "Rule 'DataProcessor' uses significant memory - consider optimization"
๐ Analytics Examples
Check out the comprehensive analytics demo:
# Run the analytics demonstration
# Output includes:
# - Configuration summary
# - Performance rankings
# - Success rate analysis
# - Optimization recommendations
# - Recent execution timeline
Key Benefits:
- ๐ Performance Optimization: Identify bottlenecks automatically
- ๐ Production Monitoring: Real-time insights in live environments
- ๐ง Development Debugging: Detailed execution analysis during development
- ๐ Trend Analysis: Historical performance tracking and regression detection
- โก Zero-Overhead Option: Configurable sampling with minimal performance impact
๏ฟฝ Changelog
v0.3.0 (October 2025) - AST-Based Dependency Analysis & Advanced Analytics
- ๐ Revolutionary Dependency Analysis: Complete rewrite from hard-coded pattern matching to proper AST parsing
- ๐ฏ Smart Field Detection: Recursive condition tree traversal for accurate field dependency extraction
- ๐ง Function Side-Effect Analysis: Intelligent inference of field modifications from function calls
- โก Zero False Positives: Elimination of brittle string-based detection methods
- ๐ Parallel Processing Foundation: AST-based analysis enables safe concurrent rule execution
- ๐ Advanced Conflict Detection: Real data flow analysis for read-write conflict identification
- ๐๏ธ Production-Ready Safety: Robust dependency analysis for enterprise-grade rule management
- ๐ Advanced Analytics System: Comprehensive performance monitoring and optimization insights
- Real-time execution metrics with microsecond precision
- Success rate tracking and trend analysis
- Memory usage estimation and optimization recommendations
- Production-ready sampling and data retention policies
- Automated performance optimization suggestions
- Rich analytics dashboard with timeline analysis
- ๐ REST API with Monitoring: Production-ready web API with full analytics integration
- Comprehensive REST endpoints for rule execution
- Real-time analytics dashboard with performance insights
- Health monitoring and system status endpoints
- CORS support and proper error handling
- Sample requests and complete API documentation
v0.2.x - Core Features & Streaming
- ๐ Stream Processing: Real-time event processing with time windows
- ๐ Rule Templates: Parameterized rule generation system
- ๐ง Method Calls: Enhanced object method call support
- ๐ File-Based Rules: External
.grlfile support - โก Performance Optimizations: Microsecond-level rule execution
๏ฟฝ๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Support
- ๐ Documentation: docs.rs/rust-rule-engine
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
Built with โค๏ธ in Rust ๐ฆ