轻量级规则引擎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

相关文章

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2