【最强规则引擎】-- ICE
ICE Official Website: http://124.221.148.247/zh/.
ICE Github: https://github.com/zjn-zjn/ice.
Drools Official Website: https://github.com/zjn-zjn/ice.
1. 背景介绍
1.1 规则引擎
- 业务中是否写了大量的 if-else?是否受够了这些 if-else 还要经常变动?
规则引擎就是为了解决业务代码和业务规则分离的引擎
1.2 Big Data – Postgres
- 一个简单需求,十一活动,充值有奖励
- 简单实现
workflow实现
drools树式实现
- 加上时间线
workflow实现
drools树式实现
- 如果后续又改改改
(ice实现)
1.比如充值门槛变低,变成70
2.比如充值100又有返还,又有积分
- 同理,后端改完了,前端UI界面也要调整,进行测试
可以共用一个节点
2. Ice
2.1 节点关系
- 节点关系
2.2 叶子节点
- 叶子节点
2.3 特性
使用树形结构解耦,流程图式和执行树式实现在改动逻辑的时候,不免需要瞻前顾后,但是 ice 不需要,ice 的业务逻辑都在本节点上,每一个节点都可以代表单一逻辑。
3. UI
1.1 Big Data – Postgres
4. Code
4.1 Dependency
Spring Project
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-client-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.2.1</version>
</dependency>
ice: #ice client配置
app: 1 #与后台配置app对应
# server: zookeeper:localhost:2181,localhost:2182,localhost:2183 #server高可用配置
server: 127.0.0.1:18121 #server 地址(serverHost:serverPort)
scan: com.ice.test #用于扫描叶子节点,多个包用','分隔(默认扫描全部,扫描全部会拖慢应用启动速度)
pool: #线程池配置(用于并发关系节点)
parallelism: -1 #默认-1,≤0表示采用默认配置
No Spring Project
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-core</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.2.1</version>
</dependency>
IceNioClient iceNioClient = new IceNioClient(1, "127.0.0.1:18121", "com.ice.test"); //传入app、server地址和叶子节点扫描路径
iceNioClient.start(); //连接远程server,初始化ice配置
iceNioClient.destroy(); //应用关停后最好清理一下~
4.2 Dependency
4.3 Dependency
5. Awakening
在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。