目录
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));
使用场景:多个规则为一组时使用
如有问题,欢迎大家打扰