qlexpress规则引擎初探

qlexpress是一款阿里内部开源的Java规则引擎,支持通过自然语言定义并动态调整业务规则,简化了规则变更流程。其核心包括规则定义、解析及执行等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

qlexpress是啥?

这个是阿里内部的一个开源的java规则引擎。开源的链接地址如下:http://code.taobao.org/p/QLExpress/wiki/index/

 

主要的原理是啥?

按照之前阅读的文档以及代码,主要是定义规则、解析规则、执行规则几个步骤,编译的过程类似java class文件的编译过程,首先进行词法分解、词法分析、语法分析、规则执行等步骤。

 

能有啥用?

如果有些业务场景,可能领域比较专一,业务人员希望能够动态的调整规则,这个时候,一个基于自然语言的规则引擎就能起到很好的作用。例如之前用户展示图片的挑战是这个用户必须是“三星级的卖家”,这个时候业务想改成“四星级卖家”,如果有规则引擎,仅仅需要在console上面维护一下即可不用修改代码,搞那一套复杂的发布流程。

简单的例子?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package  rule;
 
import  com.ql.util.express.ExpressRunner;
 
public  class  Test {
     public  static  void  main(String[] args)  throws  Exception{
 
         String express =  "10 * 10 + 1 + 2 * 3 + 5 * 2" ;
         ExpressRunner runner =  new  ExpressRunner( false , true );
         Object r = runner.execute(express, null null true , true );
         System.out.println( "表达式计算:"  + express +  " = "  + r);
 
     }
 
}

 

主要的核心操作?

大体画了一个组件图

Rule:代表自然语言的定义,可能是一段文本

Parse:解析器,把自然语言转换为可以执行的命令,中间涉及到编译的步骤,词法、语法的分析,以及解析之后的缓存操作;

Node:代表节点,例如“如果”这个文字,需要定义“if”这样的指令,代表规则中的节点;

Operator:具体的操作,例如“用户是三星级卖家”这个Node,有对应的类和方法执行数据,给出结果,这个就是一个操作;

ObjectConext:数据的上下文,规则以及规则的解析都是无状态的,需要外部传入数据才能得到结果;

RuleExecute:规则执行的入口,组装“自然语言的规则”以及“上下文数据”,获得执行之后的结果;

 

主要的类图介绍?

 

我的代码如下:

https://github.com/iamzhongyong/qlexpress

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值