一个简单的easyRule的demo打印奇数偶数
1、引入pom
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-rules-core</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-rules-mvel</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-rules-spel</artifactId>
<version>4.1.0</version>
</dependency>
2、定义抽象类
package com.example.test.ruleengine;
import org.jeasy.rules.api.Facts;
import org.jeasy.rules.core.BasicRule;
public abstract class BasicRuleEntity extends BasicRule {
@Override
public boolean evaluate(Facts facts) {
int o = facts.get("NUM");
return evaluate(o);
}
@Override
public void execute(Facts facts) throws Exception {
int o = facts.get("NUM");
execute(o);
}
protected abstract boolean evaluate(int num);
protected abstract void execute(int num);
}
3、奇数规则
package com.example.test.ruleengine;
public class OddRule extends BasicRuleEntity {
@Override
protected boolean evaluate(int num) {
return num % 2 == 1;
}
@Override
public String getName() {
return "奇数规则";
}
@Override
protected void execute(int num) {
System.out.println(num + "是一个奇数");
}
}
4、偶数规则
package com.example.test.ruleengine;
public class EvenRule extends BasicRuleEntity {
@Override
protected boolean evaluate(int num) {
return num % 2 == 0;
}
@Override
public String getName() {
return "偶数规则";
}
@Override
protected void execute(int num) {
System.out.println();
System.out.println(num + "是一个偶数");
}
}
5、测试
package com.example.test.ruleengine;
import org.jeasy.rules.api.Facts;
import org.jeasy.rules.api.Rules;
import org.jeasy.rules.api.RulesEngine;
import org.jeasy.rules.api.RulesEngineParameters;
import org.jeasy.rules.core.DefaultRulesEngine;
public class RuleEnginTest {
public static void main(String[] args) {
// 规则注册
Rules rules = new Rules();
rules.register(new EvenRule());
rules.register(new OddRule());
//创建规则引擎
RulesEngineParameters parameters = new RulesEngineParameters().skipOnFirstAppliedRule(true)
.skipOnFirstFailedRule(true);
RulesEngine rulesEngine = new DefaultRulesEngine(parameters);
//传入参数,触发规则
Facts facts = new Facts();
facts.put("NUM",1);
rulesEngine.fire(rules, facts);
}
}
运行结果: