Drools动态创建规则文件并动态调用

目录

1、编写规则内容,如下图

2、创建KieSession

3、根据规则名称货主匹配规则进行执行

 3.1、根据规则名称完全匹配方式执行

3.2、根据规则名称前缀匹配方式执行


1、编写规则内容,如下图

package rules;
import org.springblade.risk.entity.QualificationInformationRule;
import org.springblade.risk.entity.RuleResult;
global RuleResult ruleResult;
rule "qualification_info_not_receiver_info_Risk"
    enabled true
    when
        $qualification:QualificationInformationRule(null == unloadingPerson || null == unloadingPersonPhone);
    then
        $riskResult:ruleResult.setTitle("资质规则信息风控-收货方信息缺失");
    end
rule "qualification_info_not_deliver_info_Risk"
    enabled true
    when
        $qualification:QualificationInformationRule(null == ownerName || null == ownerPhone);
    then
        $riskResult:ruleResult.setTitle("资质规则信息风控-发货方信息缺失");
    end
rule "qualification_info_car_relative_certificate_Risk"
    enabled true
    when
        $qualification:QualificationInformationRule(tNum == 0 || bNum == 0 || dNum == 0);
    then
        $riskResult:ruleResult.setTitle("资质规则信息风控-车辆相关证件缺失(车辆未进行认证或审核中)");
    end

此处的内容根据自己的业务情况进行编写和改动

2、根据内容动态创建KieSession

新建kieHelper类,调用addContent把内容添加进来,采用drools标准格式后缀为.drl文件类型动态创建

/**
	 * 根据规则配置信息动态创建KieSession
	 * @param ruleContent
	 * @return
	 */
	public static KieSession createRule(String ruleContent) {
		KieHelper kieHelper = new KieHelper();
		kieHelper.addContent(ruleContent, ResourceType.DRL);
		KieSession kieSession = kieHelper.build().newKieSession();
		return kieSession;
	}

 调用kieHelper.build().newKieSession()方法进行创建

3、根据规则名称或者名称前缀匹配进行过滤执行

 3.1、根据规则名称完全匹配方式执行

调用new RuleNameEqualsAgendaFilter(ruleName)

kieSession.fireAllRules(new RuleNameEqualsAgendaFilter(ruleName));

3.2、根据规则名称前缀匹配方式执行

调用new RuleNameStartsWithAgendaFilter(rulePrefix)

result = kieSession.fireAllRules(new RuleNameStartsWithAgendaFilter(rulePrefix));

使用场景:多个规则为一组时使用

如有问题,欢迎大家打扰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值