自定义规则

本文详细介绍了规则引擎的基本概念及其在复杂规则组合场景下的应用。通过自定义类、方法及表达式的设计,实现灵活的规则配置。同时,探讨了规则引擎在规则频繁变更情况下的优势,并提供了关键操作符的使用示例。

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

实现自定义规则
a) 简单规则设计
1. 规则解析对象类[自定义类]
"expressExp"  new ExpressExp()
2. 规则解析对象类的方法[自定义类方法]
"hasCoder"  "expressExp.hasCoder(String s)"
3. 静态规则表达式
"expressExp.hasCoder(1)"
4. 动态规则表达式
expressExp.hasTag($key1,$key2)"
5. 通过反映调用自定义类[expressExp]的自定义类方法[hasCoder],并指定参数[1]/[ $key1,$key2].
b) 规则引擎目的
1. 如果此规则作为定义任务的规则
例子:
任务1:
当数据A符合规则1
当数据A符合规则2
当数据A符合规则3
得到结果
任务2:
当数据A符合规则1
当数据A符合规则2
得到结果
…..
当任务有很多规则,其组合方式很复杂时,就需要使用规则引擎,如果使用程序的调用,那么
任务1 if(任务1){ 规则1(A),规则2(A),规则3(A)}
任务2 if(任务2){ 规则1(A),规则2(A)}
任务N.
如何规则2种,那么会有2^2次,4种组合方式,那么如果规则有5种,其组合方式为2^5,32种组合方式,其if/else已经能够让你吐血.
2. 如果此规则定义经常变更
例子:
任务1:
当天气睛,使用A套装方案,散太阳.
当天气雨, 使用B套装方案,淋雨
当天气阴, 使用C套装方案,家里蹲

If(睛) 散太阳
If(雨) …

如果你是作业务的,你应该就清楚了,业务天天变,如果硬编码,以后够你受的,如果你能够预测到这块业务可能会变更,那么使用规则。

比如if(睛) 散太阳,打不球.
如果使用规则的话,只需要添加规则定义就够了。
c) 规则引擎基本操作符
“&&” 与
“||” 或

简单规则例子:
”expressExp.hasTag($key1,$key2)&& expressExp.hasTag($key1,$key2)”
首先按照基本操作符进行拆分
”expressExp.hasTag($key1,$key2)” R1
“expressExp.hasTag($key1,$key2)” R2
分别计算不同表达式的结果,最后再对他进行组合R1&&R2.

欢迎拍砖
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值