轻量级规则引擎QLExpress

2023-12-30 13:08

本文主要是介绍轻量级规则引擎QLExpress,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QLExpress

1 规则语言解析 自然语言===>>>>程序语言====>>>>可执行语言
2 规则动态配置
3 上线和下线管理

停车收费系统 规则引擎
如果(停车时间<3){停车费=0}
如果(停车时间>=3 并且 停车时间< 4){停车费=5}
如果(停车时间>=4 并且 停车时间<24 ){
停车费= (停车时间-4)*2+5
如果(停车费>30){停车费=30}
}
如果(停车时间>=24){停车费=(停车时间/24)*30}

费用科目(物流订单.仓储TP,"仓储费")= 物流订单.重量 * 0.5 ;if(物流订单.重量  > 5) then{ 费用科目(物流订单.物流TP,"运输费")= 3.0 + (物流订单.重量 - 5 ) * 1.5 ; 
} else { 费用科目(物流订单.物流TP,"运输费")= 3.0; 
};
费用科目(物流订单.包装TP,"包装费")= 物流订单.重量 * 2.5 ; 
public class RatingTest {@SuppressWarnings({ "rawtypes", "unchecked" })@Testpublic void testRating( ) throws Exception {Map logisticsOrder = new HashMap();Map tcOrder = new HashMap();Map goodsOrder = new HashMap();Map subjectValue = new HashMap();//设置物流订单信息logisticsOrder.put("重量",4);logisticsOrder.put("仓储TP","玄难");logisticsOrder.put("物流TP","云殊");logisticsOrder.put("包装TP","千绝");//建立计算器ExpressRunner runner = new ExpressRunner(true,true);//增加自定义函数runner.addFunction("费用科目",new SujectOperator("费用科目"));//装载分成规则rating.ql文件runner.loadExpress("rating");//设置上下文DefaultContext<String, Object> context = new DefaultContext<String, Object>();context.put("物流订单", logisticsOrder);context.put("交易订单", tcOrder);context.put("仓储订单", goodsOrder);context.put("费用科目", subjectValue);//执行指令runner.executeByExpressName("rating",context, null, false,false,null);
//		  runner.executeByExpressName("rating",context, null, false,false,null);
//		while(true){
//		  runner.executeByExpressName("rating",context, null, false,false,null);
//		}//输出分成结果System.out.println("----------分成结果----------------");for(Object item : subjectValue.values()){System.out.println(item);}		}
}

这篇关于轻量级规则引擎QLExpress的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/552929

相关文章

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=