QLExpress使用及源码分析

简介: 本示例演示QLExpress规则引擎的完整使用流程:从实体构建、接口定义到脚本编写,表达式内容由yaml文件(如user.yaml)维护。运行时通过QLExpressRunner解析语法树,支持上下文定制与二次扩展。自动扫描规则脚本,构建AST并执行,支持别名映射与汉化,实现灵活的规则计算与管理。(238字)

1.示例Demo
1.实体构建
2.接口定义
3.脚本编写
表达式内容维护在一个yaml里,默认扫描路径为:classpath:/rules/**/.yaml
这里为:user.yaml
2.运行环节
QLExpressRunner如下图所示,从语法树分析、上下文、执行过程三个方面提供二次定制的功能扩展。
1.获取原始脚本,参数
QLRule中的value可以使用缺省值,对应yaml的key则为缺省值对应的ruleCode
存在默认读取文件路径:com.c2f.boot.starter.rule.engine.QLExpressProperties
String rule为获取的原始脚本,后续基于此构建AST语法树
2.构建后续赋值上下文
没取别名,默认构建一组:形参:value
取别名,另构建一组:别名:value(后续yaml能汉化使用也是基于此)
所以默认构建的上下文数量 = 形参个数 1,有别名 = 形参个数 2
3.调用执行
延迟执行
默认第一次执行即缓存
构建AST语法树
基于:com.ql.util.express.parse.KeyWordDefine4Java 构建
选择匹配工厂
递归解析
分解为Word[]:"sum",”=“,”0“,”;“,"for","(","i",......
Word[]转化为List《ExpressNode》:每一个word变得有意义:常量、变量、符号、分割符号
解析第一行:请领状态 = 药品请领单.执行状态
解析第二行:执行计划状态 = 执行计划.当前执行状态,clearDataStack后续也会当做一个指令使用
解析第三行,不再是loadAttr而是LoadData
或需是引包则loadData,变量定义是LoadAttr,未研究
真正执行
基于不同指令进入不同的重写方法
清除栈内数据
执行完毕返回

目录
相关文章
|
10月前
|
人工智能 JSON Java
AI时代,我们为何重写规则引擎?—— QLExpress4 重构之路
AI时代下,规则引擎的需求反而更旺盛。QLExpress4 通过全面重构,在性能、可观测性和AI友好性上大幅提升。
2605 15
AI时代,我们为何重写规则引擎?—— QLExpress4 重构之路
|
机器学习/深度学习 人工智能 算法
Together可视化规则引擎
DMN标准定义了可视化规则引擎的技术规范,实现业务逻辑的图形化建模与高效执行。它打破技术壁垒,支持复杂算法与AI融合,提升企业敏捷性,降低运维成本,推动规则引擎向通用算法引擎演进。
|
9月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过注解与YAML配置实现业务逻辑解耦。基于AST语法树解析,提供上下文绑定、动态脚本执行与缓存机制,适用于复杂条件判断与计算场景,如BMI计算、用户规则校验等,具备高扩展性与易维护性。
|
人工智能 JavaScript Java
【SpringAIAlibaba新手村系列】(1)初识 Spring AI Alibaba 框架
本文介绍了SpringAIAlibaba框架的基本概念和使用方法。作为Spring官方AI框架的阿里云实现版本,它简化了Java开发者调用AI模型的过程。文章详细讲解了核心概念如ChatModel、ChatClient,以及阿里云百炼平台的功能。通过HelloWorld项目示例,展示了如何配置APIKey、编写控制层代码,实现普通调用和流式输出两种AI交互方式。重点阐述了SpringAI与SpringAIAlibaba的关系,以及自动配置机制的工作原理,帮助开发者快速上手这一框架。
9325 9
|
11月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
8737 131
|
9月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过YAML配置表达式规则。支持AST语法树解析、上下文构建与动态执行,提供脚本缓存、别名映射、指令重写等扩展能力,适用于灵活的业务逻辑解耦与动态化控制。
|
9月前
|
缓存
QLExpress使用及源码分析
基于QLExpress实现规则引擎,通过注解与YAML配置分离代码与逻辑。实体类用@QLAlias定义别名,接口方法标记@QLRule绑定规则脚本。YAML中编写可读性强的中文表达式,支持动态解析与缓存。运行时构建AST语法树,结合上下文执行,实现灵活、可扩展的规则计算与判断,适用于复杂业务场景的动态控制。

热门文章

最新文章