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 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动态创建规则文件并动态调用相关推荐
- 动态创建excel文件,动态合并单元格并提供下载
1.动态生成excel的原因 ** 出现的效果: ** 员工姓名没有自动合并单元格,在http://jxls.sourceforge.net/reference/xls_area.html 上面找了半 ...
- Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信
Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...
- 动态生成JSP文件,并调用JSP程序
2019独角兽企业重金招聘Python工程师标准>>> 下面这个JSP程序,动态生成可一个testDynamicInclude.inc.jsp,然后在后面调用它. 在JSP的动态生成 ...
- php生成ical文件,php – 动态创建.ics文件
我为客户提供了一个可以发布活动的网站.而不是从iCal为每个事件手动创建.ics文件并上传它,而不是将其从数据库中拉出来并自动使用PHP自动创建一个.ics文件. 我可以从数据库中提取信息(没有问题) ...
- Mysql之存储过程,动态创建表和数据库-,动态删除-yellowcong
今天在弄mycat 的时候,有一个需求,就是创建12个数据库,然后数据库里面都创建一个表,我当时想象,这个玩意也不难,于是寻思通过存储过程来动态创建表,只需要传递进来数据的前缀名称和表名称,即可创建1 ...
- C# 动态创建Label,及动态label事件
参考文章:C#_动态生成控件以及添加事件处理 - 摩根船长 - 博客园 根据上文动态创建的label文章中做了2点的改动,也是为了方便测试. 第一点:switch中的生成我们的label事件.我把他封 ...
- 动态创建 Plist 文件
简介 Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist ,因此通常被称为 plist文件,文件是xml格式的. 写入plist文件 在 ...
- Drools 规则文件语法概述
概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规则语法.下面详细介绍一下Drools规则文件语法.具体参考官方文档: https:// ...
- Drools7 动态更新规则
动态更新规则 上一章节讲述了 Drools7 和 Springboot2 集成使用,集成工作相对简单.可以快速开发.但是缺点也很明显,规则和配置文件绑定在项目中(耦合度太高).如果你不需要修改规则文件 ...
最新文章
- 5万字的《Java面试手册》V1.0版本,高清PDF免费获取
- MySQL的timestamp类型自动更新问题
- 废弃P-value,还是学学如何评估统计检验结果?
- TCP/IP入门(1) --链路层
- 【英语学习】【WOTD】cubit 释义/词源/示例
- 在Github中创建项目并与本地关联
- JNI中,getBytes()最好指明UTF-8
- thinkphp多表查询之join方法
- 中国卫生健康统计年鉴(2006-2021年)
- 讲解MySQL8.0备份与还原工具(mysqlbackup)
- Python语音基础操作--4.3共振峰估计
- Bootloader(启动引导程序)--->u-boot
- adb简介及常用命令
- 关于NTLDR的一些注意事项
- IDL实现火灾监测与火点提取
- [学]PHP爬虫框架phpspider
- 一线大厂对于Java高级架构师有怎样的要求?成为一名年薪80万需要具备什么能力
- oracle采购会计分录,采购、接收、应付业务和会计分录
- 网络原理 | 传输层重点协议之TCP协议(TCP连接的三次握手与四次挥手、TCP的安全机制与效率机制)
- qtCreator 请不要使用高性能显卡设置