目录

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 truewhen$qualification:QualificationInformationRule(null == unloadingPerson || null == unloadingPersonPhone);then$riskResult:ruleResult.setTitle("资质规则信息风控-收货方信息缺失");end
rule "qualification_info_not_deliver_info_Risk"enabled truewhen$qualification:QualificationInformationRule(null == ownerName || null == ownerPhone);then$riskResult:ruleResult.setTitle("资质规则信息风控-发货方信息缺失");end
rule "qualification_info_car_relative_certificate_Risk"enabled truewhen$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));

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

如有问题,欢迎大家打扰

Drools动态创建规则文件并动态调用相关推荐

  1. 动态创建excel文件,动态合并单元格并提供下载

    1.动态生成excel的原因 ** 出现的效果: ** 员工姓名没有自动合并单元格,在http://jxls.sourceforge.net/reference/xls_area.html 上面找了半 ...

  2. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  3. 动态生成JSP文件,并调用JSP程序

    2019独角兽企业重金招聘Python工程师标准>>> 下面这个JSP程序,动态生成可一个testDynamicInclude.inc.jsp,然后在后面调用它. 在JSP的动态生成 ...

  4. php生成ical文件,php – 动态创建.ics文件

    我为客户提供了一个可以发布活动的网站.而不是从iCal为每个事件手动创建.ics文件并上传它,而不是将其从数据库中拉出来并自动使用PHP自动创建一个.ics文件. 我可以从数据库中提取信息(没有问题) ...

  5. Mysql之存储过程,动态创建表和数据库-,动态删除-yellowcong

    今天在弄mycat 的时候,有一个需求,就是创建12个数据库,然后数据库里面都创建一个表,我当时想象,这个玩意也不难,于是寻思通过存储过程来动态创建表,只需要传递进来数据的前缀名称和表名称,即可创建1 ...

  6. C# 动态创建Label,及动态label事件

    参考文章:C#_动态生成控件以及添加事件处理 - 摩根船长 - 博客园 根据上文动态创建的label文章中做了2点的改动,也是为了方便测试. 第一点:switch中的生成我们的label事件.我把他封 ...

  7. 动态创建 Plist 文件

    简介 Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist ,因此通常被称为 plist文件,文件是xml格式的. 写入plist文件 在 ...

  8. Drools 规则文件语法概述

    概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规则语法.下面详细介绍一下Drools规则文件语法.具体参考官方文档: https:// ...

  9. Drools7 动态更新规则

    动态更新规则 上一章节讲述了 Drools7 和 Springboot2 集成使用,集成工作相对简单.可以快速开发.但是缺点也很明显,规则和配置文件绑定在项目中(耦合度太高).如果你不需要修改规则文件 ...

最新文章

  1. 5万字的《Java面试手册》V1.0版本,高清PDF免费获取
  2. MySQL的timestamp类型自动更新问题
  3. 废弃P-value,还是学学如何评估统计检验结果?
  4. TCP/IP入门(1) --链路层
  5. 【英语学习】【WOTD】cubit 释义/词源/示例
  6. 在Github中创建项目并与本地关联
  7. JNI中,getBytes()最好指明UTF-8
  8. thinkphp多表查询之join方法
  9. 中国卫生健康统计年鉴(2006-2021年)
  10. 讲解MySQL8.0备份与还原工具(mysqlbackup)
  11. Python语音基础操作--4.3共振峰估计
  12. Bootloader(启动引导程序)--->u-boot
  13. adb简介及常用命令
  14. 关于NTLDR的一些注意事项
  15. IDL实现火灾监测与火点提取
  16. [学]PHP爬虫框架phpspider
  17. 一线大厂对于Java高级架构师有怎样的要求?成为一名年薪80万需要具备什么能力
  18. oracle采购会计分录,采购、接收、应付业务和会计分录
  19. 网络原理 | 传输层重点协议之TCP协议(TCP连接的三次握手与四次挥手、TCP的安全机制与效率机制)
  20. qtCreator 请不要使用高性能显卡设置

热门文章

  1. plc四层单电梯课程设计
  2. 考研相关的经验和资源
  3. Spring事务的实现方式
  4. Logstash同步mysql数据
  5. 牛客Wannafly挑战赛29 A 御坂美琴 思维题
  6. linux telnet命令怎么算端口通,telnet命令怎么看端口通不通
  7. 进出口贸易被指遭港口部门挡路收费2000亿
  8. Vue中ref和$refs的介绍与使用
  9. 什么人适合学UI设计?可能说的就是你!
  10. html table clonenode,HTML DOM cloneNode() 方法