Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >提效神器!hades规则引擎

提效神器!hades规则引擎

作者头像
Java3y
发布于 2023-08-25 01:21:16
发布于 2023-08-25 01:21:16
76700
代码可运行
举报
文章被收录于专栏:Java3yJava3y
运行总次数:0
代码可运行

没更新文章的这些天一直在写hades项目(Java轻量级规则引擎),这两天发布了个新的版本v1.0.4

可能有新的同学就会想问了:什么是规则引擎呀?

项目背景:业务开发逻辑变更频繁,一点小的修改都要发布系统,灵活度不够。对于一些非核心流程又频繁改动的部分是否可以用动态脚本替代? 核心功能:Java应用无须发布上下线,动态变更业务逻辑,对象实例均交由Spring管理 不适用场景:脚本依赖运行环境不存在的SDK和对象

  • Gitee仓库:https://github.com/ZhongFuCheng3y/hades
  • GitHub仓库:https://github.com/ZhongFuCheng3y/hades

v1.0.3版本,我已经实现了核心的逻辑。可以通过分布式配置中心自带的后台,去手动增加/修改/删除配置进而实现脚本逻辑动态编译,最后注册到Spring iOC容器中。

而在v1.0.4版本,我写了个后台hades-web去对接分布式配置中心(目前仅支持nacos,因为apollo没有提供现成修改配置的接口,有点麻烦)。有了界面了以后,我又加上了条件逻辑(规则可视化):在页面上配置参数的信息,根据配置生成Java代码。

hades 使用手册

引入maven依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

<!--如果你用apollo,则引入该dependency,建议用最新的版本-->
<dependency>
    <groupId>io.github.ZhongFuCheng3y</groupId>
    <artifactId>hades-apollo-starter</artifactId>
    <version>1.0.4</version>
</dependency>

<!--如果你用nacos,则引入该dependency,建议用最新的版本-->
<dependency>
    <groupId>io.github.ZhongFuCheng3y</groupId>
    <artifactId>hades-nacos-starter</artifactId>
    <version>1.0.4</version>
</dependency>

配置信息

在接入hades的项目配置文件中(如:application.properties)填写hades相关的配置信息

nacos分布式配置中心示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nacos.config.server-addr=austin-nacos:8848
nacos.config.username=nacos
nacos.config.password=nacos
nacos.config.namespace=hades
nacos.config.enabled=true

# hades param you should write
hades.enabled=true
hades.config-name=hades

apollo分布式配置中心示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

app.id=hades
apollo.bootstrap.enabled=true
apollo.meta=austin-apollo

# hades param you should write
hades.enabled=true
hades.config-name=hades

规则可视化(可选)

目前后端部署仅支持使用nacos的小伙伴,hades有对应配置页面,将hades的前端和后端部署起来会方便使用些。

后端是SpringBoot应用,入口:com.java3y.hades.HadesApplication,前端是amis低代码平台,点击前端Git仓库进行部署。

后端的模块是在hades-web,对应的配置文件在application.properties,按自身情况自行修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# hades param you should write
hades.enabled=true
hades.config-name=hades

# nacos
nacos.config.enabled=true
nacos.config.server-addr=austin-nacos:8848
nacos.config.username=nacos
nacos.config.password=nacos
nacos.config.namespace=hades

1、可选择直接添加Java代码,注意不要用lomboklambda,groovy是不认的。

2、如果是轻量级的逻辑,也可以直接在界面上配置逻辑,比如对字符串和数值的判断。当提交了之后,会根据条件自动生成对应Java代码,注册到iOC容器中

3、添加规则完后,能在规则列表中看到对应内容,并将其脚本注册Spring iOC容器中,供客户端使用

只依赖配置中心

完全可以只通过分布式配置中心的后台,手动去创建配置,来实现效果。步骤如下:

1、在对应的分布式配置中心创建hades主配置(配置名是hades.config-name的值),配置内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "instanceNames": [
        "com.java3y.hades.domain.HadesParam"
    ],
    "updateTime": "2023年3月20日10:26:0131"
}

注:hades所有的配置内容在分布式配置中心默认均为txt格式。hades会监听以上配置的变更,当新增或修改了Groovy脚本时,需要手动更新该配置。

2、新建Groovy脚本,apollo需要跟主配置在同appId下,nacos在同namespace下。Groovy脚本跟Java代码99%相同(不写lambdalambda即可)

使用客户端

客户端使用HadesClient获取对象或执行方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RequestMapping("/test")
private void test() {
    // 获取脚本对象,用接口接收
    SendSmsService sendSmsService = hadesClient.getInterfaceByName("com.java3y.hades.example.apollo.demo.TencentSmsService");
    sendSmsService.send();

    // 获取GroovyObject对象
    GroovyObject groovyObject = hadesClient.getGroovyObjectByName("com.java3y.hades.example.apollo.demo.TencentSmsService");
    groovyObject.invokeMethod("send", null);
    log.info("groovy object:{}", groovyObject);

    // 直接执行脚本对应的方法,得到返回值
    Object execute = hadesClient.execute("com.java3y.hades.example.apollo.demo.TencentSmsService", "send", null);
    System.out.println("result" + execute);
}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java3y 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布式配置中心选型,为什么选择Apollo?
关于配置的常规方案是将配置信息抽离写入 xml、properties文件中,然后随着应用一块打包发布。如果有开发、测试、预发、生产等多套环境,则通过配置各自独立的文件以区分不同的环境。具备一定的扩展性,但每次配置参数变更都要重新发布应用,灵活性较差。
微观技术
2021/04/30
1.4K1
分布式配置中心选型,为什么选择Apollo?
springboot使用nacos做配置中心
分布式配置中心有多个,包括Apollo、Disconf等等,已经有大神做了各种对比,技术没有好坏,选择适合自己的最好,我们选择nacos是结合了它的服务发现和服务管理,这一块后面再说,今天我们先来看看如何使用它的配置管理。
小尘哥
2021/03/03
6340
springboot使用nacos做配置中心
SpringBoot项目使用配置中心Nacos
从实体类可以知道表格很简单就只有id、username、password三个字段。
BUG弄潮儿
2020/07/10
3.5K0
SpringBoot项目使用配置中心Nacos
Java规则引擎 Easy Rules
出处:https://www.cnblogs.com/cjsblog/p/13088017.html
JAVA葵花宝典
2020/06/17
4.3K0
Java规则引擎 Easy Rules
几行代码就可以使用分布式配置中心,Spring Cloud Alibaba真香
当我们在业务服务中需要动态更新配置信息时,就需要引入分布式配置中心,那么市面上开源的分布式配置中心有很多,那么我们该选择哪些呢?比如Nacos、Apollo以及Disconf等等。
35岁程序员那些事
2022/09/23
2030
几行代码就可以使用分布式配置中心,Spring Cloud Alibaba真香
重学SpringCloud系列一之微服务入门
小夫妻俩刚结婚,手里资金有限,就想着开一个路边烧烤摊。丈夫负责烤串做菜、妻子负责服务收银及上菜。这是一个典型的路边烧烤摊的经营模式。大家仔细看这种经营模式的好处在于:
大忽悠爱学习
2022/05/07
4000
重学SpringCloud系列一之微服务入门
spring的整合分布式配置中心(ACM diamond nacos Apollo)-nacos
继上文:spring的整合分布式配置中心(ACM diamond nacos Apollo)
逍遥壮士
2020/12/08
1.3K0
【零开始搭建SpringCloud Alibaba】搭建nacos应用端
前面介绍了搭建Nacos应用端(服务发现),这里是使用到Nacos作为分布式配置中心的功能所需要的nacos应用端。
RRT冻羊
2022/11/03
3660
【零开始搭建SpringCloud Alibaba】搭建nacos应用端
Nacos入门指南04 - 分布式配置实践
(3)SpringBoot 服务整合 Nacos,改为使用 Nacos 中的配置。
dys
2020/11/01
7990
Nacos入门指南04 - 分布式配置实践
SpringBoot使用Nacos配置中心
Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计。它可以帮助您轻松构建云本机应用程序和微服务平台。
lyb-geek
2019/03/07
3.9K0
SpringBoot使用Nacos配置中心
Nacos Config--服务配置
Apollo是由携程开源的分布式配置中心。特点有很多,比如:配置更新之后可以实时生效,支持灰度发 布功能,并且能对所有的配置进行版本管理、操作审计等功能,提供开放平台API。并且资料也写的很 详细。
IT小马哥
2021/09/03
5260
Nacos Config--服务配置
sentinel的实际应用
上一章中我们通过Dashboard来为Sentinel客户端设置各种各样的规则,但是这些规则默认是存放在内存中,极不稳定,无法用于生成环境,所以需要将其持久化。
Java旅途
2020/10/22
1.3K0
【Nacos系列教程】Nacos第二篇:配置中心演示一
在上一篇,我们讲解了,怎么在Windows系统中启动一个nacos。我们就使用这个nacos来作为配置中心
凯哥Java
2022/12/16
7540
【Nacos系列教程】Nacos第二篇:配置中心演示一
Nacos配置中心落地与实践
目前,我们公司各团队配置中心使用各异,电商使用的是 Spring Cloud Config,支付使用的是 Apollo,APP 团队使用的是 Apollo+Nacos。为了更好地应对公司业务的发展,统一基础设施技术栈必不可少。
杨同学technotes
2022/12/01
9500
重学SpringCloud系列四之分布式配置中心---上
为了避免参数变化引起的频繁的程序改动,通常我们在应用程序中将常用的一些系统参数、启动参数、数据库参数等等写到配置文件或其他的存储介质里面。
大忽悠爱学习
2022/05/09
8870
重学SpringCloud系列四之分布式配置中心---上
【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用
互联网时代,面对复杂业务,讲究 分而治之。将一个大的单体系统拆分为若干个微服务,保证每个系统的职责单一,可以垂直深度扩展。
微观技术
2022/02/10
6650
【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用
我们放弃了Nacos作为配置中心,转而选择了这款神器~
目前,我们所有微服务的配置中心都没有采用Nacos,而是选择了另一款携程开源的分布式配置中心Apollo,今天就跟大家详细介绍一下这款神级配置中心
用户1220090
2025/04/29
3580
我们放弃了Nacos作为配置中心,转而选择了这款神器~
Java学习笔记-微服务(2)-原生服务注册Consul
Consul 是一个开源的分布式服务发现和配置管理系统,使用 Go 语言进行开发,它提供了微服务中的服务治理、配置中心、控制总线等功能,这些功能可以单独使用,也可以共同使用以构建全方位的服务网络。
咸鱼程序员
2025/03/03
1640
Java学习笔记-微服务(2)-原生服务注册Consul
快速学习-sentinel动态规则扩展
Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则:
cwl_java
2020/08/02
1.4K0
基于Nacos的服务治理、配置中心
参看《基于Docker搭建Nacos集群》:https://lupf.cn/articles/2020/05/21/1590058654840.html ;亦或者通过官方提供的其他方式安装,详情参考:https://nacos.io/zh-cn/docs/quick-start.html
一行Java
2022/04/06
8490
基于Nacos的服务治理、配置中心
推荐阅读
相关推荐
分布式配置中心选型,为什么选择Apollo?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验