drools规则引擎小案例二

最近遇到一个同学说想实现一个在一个规则文件中的多个规则中将上一个规则的执行输出作为下一个规则的执行条件,实现如下效果

login_rule_1 执行后给amount赋值为 10 login_rule_2  执行时如果 amount = 10 则将 flag 赋值为 true

package com.drools.rule.req
import com.drools.rule.req.LoginActionReq
rule login_rule_1 
when
 $s:LoginActionReq(loginNum==1) 
then
 $s.amount=10; 
update($s); 
end 
rule login_rule_2 
when
 $s:LoginActionReq(amount==10) 
then
 $s.flag=true; 
System.out.println($s.flag); 
update($s); 
end 

public static void main(String[] args) {

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("package com.drools.rule.req").append("\n");
    stringBuilder.append("import com.drools.rule.req.LoginActionReq").append("\n");
    stringBuilder.append("rule login_rule_1 ").append("\n");
    stringBuilder.append("when\n" + " $s:LoginActionReq(loginNum==1) ").append("\n");
    stringBuilder.append("then\n" + " $s.amount=10; ").append("\n");
    stringBuilder.append("update($s); ").append("\n");
    stringBuilder.append("end ").append("\n");

    stringBuilder.append("rule login_rule_2 ").append("\n");
    stringBuilder.append("when\n" + " $s:LoginActionReq(amount==10) ").append("\n");
    stringBuilder.append("then\n" + " $s.flag=true; ").append("\n");
    stringBuilder.append("System.out.println($s.flag); ").append("\n");
    stringBuilder.append("update($s); ").append("\n");
    stringBuilder.append("end ").append("\n");

    System.out.println(stringBuilder.toString());
    KieHelper helper = new KieHelper();

    helper.addContent(stringBuilder.toString(), ResourceType.DRL);


    KieSession kSession = helper.build().newKieSession();
    LoginActionReq actionReq = new LoginActionReq();
    actionReq.setLoginActionType("LOGIN");
    actionReq.setLoginNum(1);
    System.out.println("req : "+ JSON.toJSONString(actionReq));

    kSession.insert(actionReq);
    kSession.fireAllRules();
    kSession.dispose();
    System.out.println("resp : "+ JSON.toJSONString(actionReq));

}

执行main方法得到以下结果

期间出现 login_rule_2 一直无法执行的问,最后发现是因为  规则中加了  lock-on-active true 这个东西,去掉就好了,相关代码已提交,有兴趣的可以联系我获取了

补充一句,加微信别老是您您您的,都是打工人,不必这么客气,我也才18啊哈哈

也请大家关注下博客谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值