java开源引擎easyrule_【Urule介绍】开源可视化规则引擎

Urule是一款基于RETE算法的Java规则引擎,提供向导式规则集、脚本式规则集等七种规则定义方式,搭配WEB设计器,便于规则的定义、维护和发布。在实际场景中,通过Urule可以避免复杂的if-else逻辑,实现运营规则的灵活配置,提高开发效率。
摘要由CSDN通过智能技术生成

Urule介绍

由于工作需要,我参考了许多优秀JAVA实现的开源规则引擎框架,例如Drools等,但是在茫茫人海中我发现了一个可视化配置基于RETE算法的规则引擎,它的名字叫Urule,下面摘选自Urule官方Wiki:

URule是一款基于RETE算法纯Java的规则引擎产品。在URule当中提供了向导式规则集、脚本式规则集、决策表、

交叉决策表(PRO版)、决策树、评分卡及决策流共七种类型的规则定义方式,配合基于WEB的设计器,可快速实现

规则的定义、维护与发布。

复制代码

使用场景

有一天,小叶同学在撸着代码,产品MM找到小叶同学,评审一个每日登陆活动的需求,需求大概是这样的:

-5级以下用户登陆送5元红包

-5级以上用户登陆送10元红包

复制代码

小叶同学一看,So easy!两行代码敲下去就提测上线了:

//登陆事件触发代码

if (user.getLevel() <= 5) {

//发放5元红包

rewardGenerator.send("5元红包");

} else {

//发放10元红包

rewardGenerator.send("10元红包");

}

复制代码

过了一天,运营GG找产品MM反馈说活动太火爆,被褥羊毛太严重了,要修改一下规则:

-用户必须实名认证

-5级以下用户登陆送3元红包

-5级以上用户

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用的Java开源规则引擎有Drools、EasyRules、RuleBook和jBPM等。下面对它们进行简单的对比及演示: 1. Drools Drools是一款功能强大的Java规则引擎,拥有完整的规则引擎功能和规则管理功能。Drools支持多种规则格式,如DRL、Decision Table和Spreadsheet等,并且提供了多种规则匹配方式,如Rete和Phreak等。Drools还支持规则流程,能够将多个规则组合成一个规则流程。 下面是一个使用Drools的简单规则示例: ``` rule "Discount for VIP customers" when $customer : Customer(category == Category.VIP) $order : Order(customer == $customer, total > 1000) then $order.setDiscount(0.1); update($order); end ``` 2. EasyRules EasyRules是一款轻量级的Java规则引擎,它的设计理念是简单易用。EasyRules支持多种规则格式,如MVEL、Groovy和JavaScript等。EasyRules提供了基于注解的规则定义方式,可以通过注解来定义规则名、优先级、条件和动作等。 下面是一个使用EasyRules的简单规则示例: ``` @Rule(name = "Discount for VIP customers", priority = 1) public class DiscountRule { @Condition public boolean isVIP(@Fact("customer") Customer customer) { return customer.getCategory() == Category.VIP; } @Condition public boolean isHighTotal(@Fact("order") Order order) { return order.getTotal() > 1000; } @Action public void applyDiscount(@Fact("order") Order order) { order.setDiscount(0.1); } } ``` 3. RuleBook RuleBook是一款基于注解的Java规则引擎,它提供了简洁的API和易于理解的规则书写方式。RuleBook支持链式调用,可以非常方便地组合多个规则。 下面是一个使用RuleBook的简单规则示例: ``` RuleBook ruleBook = new RuleBook(); ruleBook.addRule(rule -> rule .name("Discount for VIP customers") .description("If the customer is VIP and the order total is over 1000, apply a 10% discount") .when(facts -> { Customer customer = facts.get("customer"); Order order = facts.get("order"); return customer.getCategory() == Category.VIP && order.getTotal() > 1000; }) .then(facts -> { Order order = facts.get("order"); order.setDiscount(0.1); })); ruleBook.run(facts); ``` 4. jBPM jBPM是一款基于BPMN 2.0标准的Java规则引擎,它提供了完整的业务流程管理功能和规则引擎功能。jBPM支持多种规则格式,如DRL、Decision Table和Spreadsheet等,并且提供了多种规则匹配方式,如Rete和Phreak等。jBPM还支持规则流程,能够将多个规则组合成一个规则流程。 下面是一个使用jBPM的简单规则示例: ``` KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("rules.drl"), ResourceType.DRL); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); ksession.insert(customer); ksession.insert(order); ksession.fireAllRules(); ``` 以上是对常用Java开源规则引擎的简单对比及演示,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值