Expand description
§Rust Rule Engine v0.9.0 - Plugin System Edition
A high-performance rule engine for Rust with Plugin System, Built-in Utilities, GRL (Grule Rule Language) support, featuring modular architecture, extensive built-in functionality, method calls, object interactions, and complex condition evaluation.
§Features
- 🔌 Plugin System: Modular plugin architecture with lifecycle management
- 🛠️ Built-in Plugin Suite: 44+ actions & 33+ functions for common operations
- 🔥 GRL Support: Full Grule-compatible syntax
- 🎯 Method Calls:
$Object.method(args)and property access - 📊 Knowledge Base: Centralized rule management with salience
- 💾 Working Memory: Facts system for complex object interactions
- ⚡ High Performance: Optimized execution with cycle detection
- 🔄 Arithmetic: Complex calculations in conditions and actions
- 🛡️ Type Safety: Rust’s type system ensures runtime safety
§Quick Start with Plugins
use rust_rule_engine::*;
fn main() -> Result<()> {
// Create Knowledge Base and Engine
let kb = KnowledgeBase::new("Demo");
let mut engine = RustRuleEngine::new(kb);
let mut facts = Facts::new();
// Set up data
facts.set("user.age", Value::Number(25.0));
facts.set("user.premium", Value::Boolean(false));
// Define GRL rule
let rule = r#"
rule "PremiumUpgrade" salience 10 {
when
user.age >= 18 && user.premium == false
then
user.premium = true;
user.discount = 0.1;
}
"#;
// Parse and add rule to knowledge base
let rules = GRLParser::parse_rules(rule)?;
for r in rules {
engine.knowledge_base().add_rule(r)?;
}
// Execute with facts
let result = engine.execute(&facts)?;
println!("User premium status: {:?}", facts.get("user.premium"));
Ok(())
}Built-in Plugin Suite provides comprehensive functionality for common operations:
- String Utilities: 8 actions, 5 functions for text manipulation
- Math Operations: 10 actions, 6 functions for calculations
- Date/Time: 8 actions, 7 functions for temporal operations
- Actions: CurrentDate, CurrentTime, FormatDate, ParseDate, AddDays, AddHours, DateDiff, IsWeekend
- Functions: now, today, dayOfWeek, dayOfYear, year, month, day
§Validation (8 actions, 6 functions)
- Actions: ValidateEmail, ValidatePhone, ValidateUrl, ValidateRegex, ValidateRange, ValidateLength, ValidateNotEmpty, ValidateNumeric
- Functions: isEmail, isPhone, isUrl, isNumeric, isEmpty, inRange
§Collections (10 actions, 9 functions)
-
Actions: ArrayLength, ArrayPush, ArrayPop, ArraySort, ArrayFilter, ArrayMap, ArrayFind, ObjectKeys, ObjectValues, ObjectMerge
-
Functions: length, contains, first, last, reverse, join, slice, keys, values
// Create engine let mut engine = RustRuleEngine::new(kb);
// Create facts let facts = Facts::new(); let user = FactHelper::create_user(“john”, 25, “john@email.com”, “US”, false); facts.add_value(“User”, user)?;
// Execute rules let result = engine.execute(&facts)?; println!(“Rules fired: {}”, result.rules_fired);
Ok(()) }
Re-exports§
pub use errors::Result;pub use errors::RuleEngineError;pub use types::ActionType;pub use types::LogicalOperator;pub use types::Operator;pub use types::Value;pub use engine::engine::EngineConfig;pub use engine::engine::GruleExecutionResult;pub use engine::engine::RustRuleEngine;pub use engine::facts::FactHelper;pub use engine::facts::Facts;pub use engine::knowledge_base::KnowledgeBase;pub use engine::rule::Condition;pub use engine::rule::ConditionGroup;pub use engine::rule::Rule;pub use parser::grl::GRLParser;
Modules§
- engine
- Rule execution engine and related components
- errors
- Error types and result handling
- parser
- Rule parsing and language support
- plugins
- Built-in plugin system for extended functionality
- streaming
- Streaming rule engine for real-time event processing Rule Streaming Engine - Real-time Event Processing
- types
- Core type definitions for values, operators, and actions
Macros§
- impl_
fact - Macro to implement Fact trait easily
Structs§
- Rule
Engine Builder - Builder pattern for creating a RustRuleEngine with various configurations