MCPcopy Index your code
hub / github.com/ZhongFuCheng3y/hades

github.com/ZhongFuCheng3y/hades @v1.0.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.4 ↗ · + Follow
128 symbols 313 edges 47 files 64 documented · 50%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

一、hades 介绍

项目背景:业务开发逻辑变更频繁,一点小的修改都要发布系统,灵活度不够。对于一些非核心流程又频繁改动的部分是否可以用动态脚本替代?

核心功能:Java应用无须发布上下线,动态变更业务逻辑,对象实例均交由Spring管理

二、hades 使用手册

2.1 引入maven依赖



<dependency>
    <groupId>io.github.ZhongFuCheng3y</groupId>
    <artifactId>hades-apollo-starter</artifactId>
    <version>1.0.4</version>
</dependency>


<dependency>
    <groupId>io.github.ZhongFuCheng3y</groupId>
    <artifactId>hades-nacos-starter</artifactId>
    <version>1.0.4</version>
</dependency>

2.2 配置信息

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

nacos分布式配置中心示例:

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分布式配置中心示例:


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

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

2.3 部署后端和前端(可选)

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

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

后端的模块是在hades-web,对应的配置文件在application.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代码,注意不要用lomboklambda,groovy是不认的。

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

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

2.4 不部署后端和前端

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

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

{
    "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即可)

2.5使用客户端

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

@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);
}

Extension points exported contracts — how you extend this code

HadesBaseConfig (Interface)
@author 3y 配置服务 [6 implementers]
hades-core/src/main/java/com/java3y/hades/core/service/bootstrap/HadesBaseConfig.java
HadesConfigService (Interface)
@author 3y 配置服务 [5 implementers]
hades-web/src/main/java/com/java3y/hades/service/HadesConfigService.java
SendSmsService (Interface)
调用短信接口服务 @author 3y
hades-example/hades-nacos-example/src/main/java/com/java3y/hades/example/nacos/demo/SendSmsService.java
SendSmsService (Interface)
调用短信接口服务 @author 3y
hades-example/hades-apollo-example/src/main/java/com/java3y/hades/example/apollo/demo/SendSmsService.java
ExecuteCondition (Interface)
@author 3y 条件接口(给到hades-web实现,RuleType == 20 才需要用上) [1 implementers]
hades-core/src/main/java/com/java3y/hades/core/service/ExecuteCondition.java
ParseConfig (Interface)
解析条件配置 @author 3y [4 implementers]
hades-web/src/main/java/com/java3y/hades/parse/ParseConfig.java
PowerfulEnum (Interface)
@author kyw7 枚举接口 [1 implementers]
hades-web/src/main/java/com/java3y/hades/enums/base/PowerfulEnum.java

Core symbols most depended-on inside this repo

getConfigValueByName
called by 9
hades-core/src/main/java/com/java3y/hades/core/service/bootstrap/HadesBaseConfig.java
bootstrap
called by 5
hades-core/src/main/java/com/java3y/hades/core/service/bootstrap/BaseHadesBaseConfig.java
addOrUpdateProperty
called by 5
hades-core/src/main/java/com/java3y/hades/core/service/bootstrap/HadesBaseConfig.java
getCode
called by 4
hades-web/src/main/java/com/java3y/hades/enums/base/PowerfulEnum.java
success
called by 3
hades-web/src/main/java/com/java3y/hades/vo/basic/BasicResultVO.java
getDescription
called by 3
hades-web/src/main/java/com/java3y/hades/enums/base/PowerfulEnum.java
getGroovyObjectByName
called by 3
hades-core/src/main/java/com/java3y/hades/core/HadesClient.java
addListener
called by 3
hades-core/src/main/java/com/java3y/hades/core/service/bootstrap/HadesBaseConfig.java

Shape

Method 85
Class 34
Interface 7
Enum 2

Languages

Java100%

Modules by API surface

hades-web/src/main/java/com/java3y/hades/service/base/HadesNacosBaseConfigServiceImpl.java7 symbols
hades-starter/hades-nacos-starter/src/main/java/com/java3y/hades/starter/config/NacosStarter.java7 symbols
hades-example/hades-nacos-example/src/main/java/com/java3y/hades/example/nacos/service/NacosExample.java7 symbols
hades-starter/hades-apollo-starter/src/main/java/com/java3y/hades/starter/config/ApolloStarter.java6 symbols
hades-example/hades-apollo-example/src/main/java/com/java3y/hades/example/apollo/service/ApolloExample.java6 symbols
hades-web/src/main/java/com/java3y/hades/enums/base/EnumUtil.java5 symbols
hades-core/src/main/java/com/java3y/hades/core/service/bootstrap/HadesBaseConfig.java5 symbols
hades-web/src/main/java/com/java3y/hades/vo/basic/BasicResultVO.java4 symbols
hades-web/src/main/java/com/java3y/hades/service/impl/HadesConfigServiceImpl.java4 symbols
hades-web/src/main/java/com/java3y/hades/service/base/HadesApolloConfigServiceImpl.java4 symbols
hades-web/src/main/java/com/java3y/hades/service/HadesConfigService.java4 symbols
hades-web/src/main/java/com/java3y/hades/parse/impl/ParseSqlConfig.java4 symbols

For agents

$ claude mcp add hades \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page