在开发过程中遇到一个需求,对于我这样的小白感觉太难了:就是在判断一条数据时:会对一条数据的每个字段设置成一个条件,有时候一个字段会有很多个条件,在开发过程中为了实现可配置的,将不同数量的条件作为一个验证规则存储在了数据库中,在使用时直接根据规则编码调用即可,但是尴尬的是在后期进行使用时,我能够读取规则并解析,但是就是有些写不来,针对多个条件是用if还是有什么算法的,请大神指点一下迷津,谢谢。
是否可以用规则引擎?比如 Drools 。或者可以考虑行为树,看下行为树能否满足需求,行为树多用于游戏AI,但本质上也是各个条件的判断。
######回复 @别忘了带红领巾 : 抱歉!python不熟悉。######谢谢,请问python方面有什么好办法吗?######你会拼接字符串吧,通过读取condition生成下面的SQL即可
select *, (age > 21 and mony >280.05 and accessTime > '2015-05-31') as cond from 资产表
######针对你这种情况,需要先写个模板,然后再跟规则配合,比如说有一个字段,首先这个字段的数据类型有N种,你就得先根据数据类型设定N中模板,然后每个数据类型有M种校验方法,你就得再针对每个模板设定好M种方法的执行流程,你这样设定好了之后,每次就很容易调用了;
eg:有个数字类型的字段 需要校验该字段的值是否大于某个值
那么你的调用顺序就是: 获取数字类型校验模板,选择校验值大于某个值的方法
######谢谢,但是我的是要多个条件,多个逻辑符。目前我想到的是两两判断,但是语句我有些写不出来。######条件和结果是动态配置的,数量也不一定。想通过java来实现,还有更好的思路吗?谢谢
######先 找到 判断的 优先级 哪个要先判断 哪个 最后判断 要明确。 一个判断条件大于3中情况 或者 以后还会添加 就建议所用switch
######谢谢,但是多个条件之间会存再逻辑运算符呀。######是做参数校验还是啥?,看条件最终产生结果,以此类型结果为优先解?
######下面有样例,麻烦帮忙看看,谢谢!######你需要举个(比较完整的)例子,不知道你具体在说啥
######样例在下面,谢谢######现在有个数据表
年龄(age : int) | 资产 (money : number) | 入网日期 (accessTime : date) |
---|---|---|
20 | 100.00 | 2017-03-24 |
20 | 150.00 | 2016-05-07 |
21 | 300.00 | 2015-04-03 |
21 | 240.00 | 2015-07-15 |
22 | 300.00 | 2014-12-21 |
21 | 300.00 | 2014-12-21 |
另外,有一张条件表,condition:
字段名(fieldName : varchar) | 运算符(oper : varchar) | 阈值 (threshold : varchar ) |
---|---|---|
age | = | 21 |
money | > | 280.05 |
accessTime | > | 2015-05-31 |
条件表condition用来配置过滤用户person的条件,表示要筛选出符合条件
年龄等于21岁
资产大于280.05
入网日期在 2015-06-01之后
的所有用户。符合条件的我有固定输出结果,不符合的也是有错误输出结果。谢谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。