# hades **Repository Path**: sdwl_git/hades ## Basic Information - **Project Name**: hades - **Description**: 🔥轻量级Java规则引擎 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 59 - **Created**: 2024-01-02 - **Last Updated**: 2024-01-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](doc/images/1.jpg)

作者 Gitee Starts Gitee Starts issue-open issue-close issue-close issue-close issue-close jdk版本 maven版本 ORM框架 ORM框架 ORM框架

:fire:**hades文档不单独提供,跟austin消息推送平台捆绑**,详情可戳:[股东服务](https://www.yuque.com/u1047901/eg5qvy/hh0gk5p4uwie8bva) ## hades 介绍 项目背景:业务开发逻辑变更频繁,一点小的修改都要发布系统,灵活度不够。对于一些**非核心流程又频繁改动**的部分是否可以用**动态脚本**替代? 核心功能:**Java应用无须发布上下线,动态变更业务逻辑,对象实例均交由Spring管理** 不适用场景:脚本依赖**运行环境**不存在的SDK和对象 ## hades 使用手册 ### 引入maven依赖 ```xml io.github.ZhongFuCheng3y hades-apollo-starter 1.0.4 io.github.ZhongFuCheng3y hades-nacos-starter 1.0.4 ``` ### 配置信息 在接入`hades`的项目配置文件中(如:`application.properties`)填写`hades`相关的配置信息 `nacos`分布式配置中心示例: ```properties 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`分布式配置中心示例: ```properties 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仓库](https://gitee.com/zhongfucheng/hades-admin)进行部署。 后端的模块是在`hades-web`,对应的配置文件在`application.properties`,按自身情况自行修改: ```properties # 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代码,注意不要用**lombok**和**lambda**,groovy是不认的。 ![](doc/images/2.png) 2、如果是轻量级的逻辑,也可以直接在界面上配置逻辑,比如对字符串和数值的判断。当提交了之后,会根据条件自动生成对应`Java`代码,注册到`iOC`容器中 ![](doc/images/3.png) 3、添加规则完后,能在规则列表中看到对应内容,并将其**脚本注册**到`Spring iOC`容器中,供客户端使用 ![](doc/images/4.png) ### 不部署后端和前端 完全可以只通过分布式配置中心的后台,**手动去创建配置**,来实现效果。步骤如下: 1、在对应的分布式配置中心创建`hades`主配置(配置名是`hades.config-name`的值),配置内容如下: ```json { "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%相同**(不写`lambda`和`lambda`即可) ![](doc/images/5.png) ### 使用客户端 客户端使用`HadesClient`获取对象或执行方法 ```java @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); } ``` ### 开源项目austin 想学Java项目的,我强烈推荐我的开源项目[消息推送平台Austin(9K stars)](https://gitee.com/zhongfucheng/austin),可以用作**毕业设计**/**校招**,可以看看**线上生产环境**是怎么推送消息的。已经有不少同学**通过这个项目拿到字节/菜鸟/vivo等大厂**的offer了! :fire:项目仓库地址:[https://gitee.com/zhongfucheng/austin](https://gitee.com/zhongfucheng/austin) :fire:项目在线演示地址:[http://139.9.66.219:3000/](http://139.9.66.219:3000/) :fire:**11W+字,共107个文档,带你玩转austin**,详情可戳:[消息推送平台文档](https://www.yuque.com/u1047901/eg5qvy/hh0gk5p4uwie8bva) ![](doc/images/9.png)