先说下一些条件的情况
总的来说就是需要实现类似 sql 的效果。但是用 java 实现。 条件里的字段是可以控制住的。
举例: 创建了一个抽奖活动,这个抽奖的参与条件如下:
如上几个条件都是通过创建活动时管理员的配置来规定的,他也可以设置会员和普通用户都交钱参加,或者直接免费参与。或者普通用户直接不能参与...
而我要做的工作就是用户带着他的身份和其他必要信息参与抽奖时,去判断他是否有资格。这个判断条件这里该怎么存储和实现比较好呢?
求解。
ps:最好还能考虑到布尔值的短路情况和前端展示
pps:如果方案真的不错,有偿
1
smartbot 2022-01-21 11:52:26 +08:00 4
关键词: 规则引擎
|
2
wwwz 2022-01-21 11:59:32 +08:00
储存 OGNL 表达式,前端展示和 OGNL 互转
|
3
ic2y 2022-01-21 12:01:12 +08:00
aviator
|
4
storyxc 2022-01-21 12:17:27 +08:00
一楼+1 ,一般这种复杂场景+经常变更的规则用规则引擎比较好
|
5
Tsingchengliu 2022-01-21 13:58:45 +08:00
aviator 或者 groovy ,套个管理端就可以做简单的规则引擎
|
6
monetto 2022-01-21 14:02:58 +08:00
1. 规则引擎
2. 责任链模式 进行 链式判断 |
7
312ybj 2022-01-21 14:07:58 +08:00
规则引擎 drools
|
8
isJoey 2022-01-21 14:25:23 +08:00
国产开源 iteflow 应该能满足
|
9
CoooooolFrog 2022-01-21 16:08:57 +08:00
推荐 aviator ,非常好用( aviator 的作者就坐在我背后 )
|
10
cheng6563 2022-01-21 16:14:13 +08:00
直接配置 SQL WHERE 完事,更进一步就是直接写 Js 或者 Groovy 脚本。
用规则引擎也行。 别想着搞个什么责任链或者流程引擎什么的然后全部图形化配置。 |
11
andy2415 2022-01-21 16:32:05 +08:00
简单的规则用 Predicate 就够用了吧
|
12
themostlazyman 2022-01-21 16:38:42 +08:00 1
JDK8 list.stream().filter
|
13
lele140 2022-01-21 16:45:03 +08:00
aviator +1
|
14
beitayongguo 2022-01-21 16:45:10 +08:00
都在说规则引擎~ 其实表达式引擎也可以的吧
|
15
wolfie 2022-01-21 16:50:10 +08:00
spring 的 spel 也可以。
cn.hutool.extra.expression.ExpressionEngine 看实现类。 |
16
zxjunz 2022-01-21 17:18:46 +08:00
@CoooooolFrog #9 牛逼
|
17
fanshaohua 2022-01-21 23:28:38 +08:00
|
18
RuLaiFo 2022-01-22 09:52:05 +08:00 via Android
是单表还是多表查询。
|
19
cryboy007 2022-01-22 11:17:05 +08:00
涨知识了,我们项目都是自己写用 if else 拼接.真的是又臭又长
|
20
slomo OP @CoooooolFrog 厉害了大佬,能不能请问下表达式跟对象转换有什么好的方法嘛🥺,单独表达式前端不好展示
|