/simple-rule-engine-scala

Simple rule engine written in Scala

Primary LanguageScala

simple-rule-engine-scala

Simple rule engine written in Scala that uses reflection so it is slow ...

Example:

// Simple class definition
case class Person(name: String, age: Int)

// Create engine instance
val ruleEngine = new RuleEngine[Rule, Person]()

// Rules need to implement `RuleTrait`
// Don't worry about using Array of string as values, code will
// handle type-conversion
val rules: Array[Rule] = Array(
  Rule("name", Array("Test"), Equals, And),
  Rule("age", Array("123"), Equals, And)
)

// Make some objects
val models = Array(
  Person("Test", 123),
  Person("Not test!", 123)
)

// Create the `Person => Boolean` lambda
val filterFunc = ruleEngine.build(rules)

// Run the lambda against data
val result = models.filter(filterFunc)

// Assert count
assert(result.length == 1)