Easy Rules 是一个简单而强大的 Java 规则引擎,提供以下功能:
- 轻量级框架和易于学习的 API
- 基于 POJO 的开发
- 有用的抽象来定义业务规则并轻松应用它们
- 从原始规则创建复合规则的能力
- 使用表达式语言(如 MVEL、SpEL 和 JEXL)定义规则的能力
您可以自己构建一个简单的规则引擎。您只需要创建一堆具有条件和操作的对象,将它们存储在一个集合中,然后运行它们以评估条件并执行操作。
这正是 Easy Rules 所做的,它提供了Rule创建具有条件和操作的规则的抽象,以及RulesEngine贯穿一组规则以评估条件和执行操作的 API。
核心功能
- 轻量级库和易于学习的 API
- 基于 POJO 的开发,带有注释编程模型
- 用于定义业务规则并使用 Java 轻松应用它们的有用抽象
- 从原始规则创建复合规则的能力
- 使用表达式语言(如 MVEL、SpEL 和 JEXL)定义规则的能力
定义代码:
@Rule(name = "weather rule", description = "if it rains then take an umbrella") public class WeatherRule {
@Condition public boolean itRains(@Fact("rain") boolean rain) { return rain; } @Action public void takeAnUmbrella() { System.out.println("It rains, take an umbrella!"); } }
|
使用:
Rule weatherRule = new RuleBuilder() .name("weather rule") .description("if it rains then take an umbrella") .when(facts -> facts.get("rain").equals(true)) .then(facts -> System.out.println("It rains, take an umbrella!")) .build();
|
测试:
public class Test { public static void main(String[] args) { // define facts Facts facts = new Facts(); facts.put("rain", true);
// define rules Rule weatherRule = ... Rules rules = new Rules(); rules.register(weatherRule);
// fire rules on known facts RulesEngine rulesEngine = new DefaultRulesEngine(); rulesEngine.fire(rules, facts); } }
|