# Hzero迁移工具 **Repository Path**: stonejoy/hzero-migration-tool ## Basic Information - **Project Name**: Hzero迁移工具 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-10-12 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HZero Migration Tool HZero 数据迁移工具集,已升级为 **Spring Boot Web 应用**,提供可视化页面用于在源/目标 HZero 实例之间迁移消息、调度任务、值集、事件类型、导入模板及消息模板等数据。 ## 项目简介 本项目原为一组命令行工具类,现已重构为 Spring Boot 单体 Web 应用: - 通过页面配置源/目标环境(网关、服务上下文、租户、用户名/密码可选) - 6 个迁移工具改造为后端 Service,统一异步执行与日志查看 - 支持配置导入/导出为 JSON 备份 - 原 [src/main/java/org/hzero/tool](src/main/java/org/hzero/tool) 下的旧 main 类保留兼容直跑 ### 迁移工具一览 | 工具 | 来源类 | 说明 | | --- | --- | --- | | 消息维护迁移 | InitMessage | 同步 `mt-error-message` 列表 | | 调度任务迁移 | InitJob | 按 jobCode 复制调度任务定义 | | 独立值集迁移 | initLov | 按 lovCodes 同步独立值集 | | 事件类型迁移 | InitEventType | 上传 JSON 导入事件类型 | | 导入模板迁移 | InitImportTemplate | 同步导入模板 + sheet + 列定义 | | 消息模板迁移 | InitMessageTemplate | 同步消息模板 | ## 技术栈 - 后端:Spring Boot 2.7.18 / JDK 8 / fastjson / okhttp3 / Lombok - 前端:Vue 3 (CDN) + Element Plus + Axios(无构建工具,直接放在 `static/` 下) - 持久化:本地 JSON 文件 `./config/migration-config.json` - 异步:内置线程池(核心 2 / 最大 4 / 队列 50),任务日志环形缓冲 5000 条 ## 目录结构 ``` src/main/ ├── java/org/hzero/ │ ├── MigrationToolApplication.java 启动入口 │ ├── config/ 全局异常处理 │ ├── controller/ REST 接口(环境/迁移/任务/导入导出) │ ├── service/ │ │ ├── EnvConfigService.java 配置文件读写 │ │ ├── TaskManager.java 异步任务管理与日志缓冲 │ │ └── migration/ 6 个迁移 Service + 上下文/监听器 │ ├── model/ EnvConfig / AppConfig / TaskInfo / LogLine │ ├── tool/ 保留的旧 main 类(兼容直跑) │ └── utils/ HzeroTokenGet(去静态化) └── resources/ ├── application.yml ├── json/mt_event_type.json 示例事件类型数据 └── static/ 前端单页应用 ├── index.html ├── css/app.css └── js/{api.js, app.js, views/*.js} ``` ## 构建与运行 ### 前提条件 - JDK 1.8 或更高 - Maven 3.x ### 打包并启动 ```bash mvn clean package -DskipTests java -jar target/hzero-migration-tool-1.0-SNAPSHOT.jar ``` 启动后浏览器打开: ``` http://localhost:8080 ``` > 默认端口 `8080`,可通过 `--server.port=xxxx` 或修改 [application.yml](src/main/resources/application.yml) 调整。 ## 页面功能 页面包含 4 个 Tab: 1. **环境配置** —— 分别配置源/目标环境,支持「测试连接」按钮验证 token 获取。 2. **迁移操作** —— 6 张工具卡片,针对各工具填写必要参数后点击「执行」,返回 `taskId`。 3. **任务列表** —— 显示最近 100 条任务及实时进度,「查看日志」抽屉每 2 秒增量轮询日志。 4. **配置导入导出** —— 一键导出当前 `AppConfig` 为 JSON;上传 JSON 文件覆盖当前配置。 ## REST API 一览 环境配置: | 方法 | 路径 | 说明 | | --- | --- | --- | | GET | `/api/env` | 读取当前 AppConfig | | PUT | `/api/env` | 保存 AppConfig(body: AppConfig) | | POST | `/api/env/test` | 测试连接(body: EnvConfig) | 迁移触发(统一返回 `{taskId}`): | 方法 | 路径 | 说明 | | --- | --- | --- | | POST | `/api/migrate/message` | 消息维护迁移 | | POST | `/api/migrate/job` | body: `{jobCode, sourceTenantId, targetTenantId}` | | POST | `/api/migrate/lov` | body: `{lovCodes:[...]}` | | POST | `/api/migrate/event-type` | multipart: `file=*.json` + `targetTenantId` | | POST | `/api/migrate/import-template` | body: `{templateCodes:[...], prefixReplaceFrom, prefixReplaceTo}` | | POST | `/api/migrate/message-template` | 消息模板迁移 | 任务管理: | 方法 | 路径 | 说明 | | --- | --- | --- | | GET | `/api/tasks` | 最近 100 条任务 | | GET | `/api/tasks/{id}` | 任务状态与进度 | | GET | `/api/tasks/{id}/logs?afterSeq=N` | 增量拉日志 | | POST | `/api/tasks/{id}/cancel` | 取消任务(中断标记) | 配置导入导出: | 方法 | 路径 | 说明 | | --- | --- | --- | | GET | `/api/config/export` | 下载当前配置 JSON | | POST | `/api/config/import` | multipart: `file=*.json`,覆盖保存 | ## 配置说明 环境字段(`EnvConfig`): | 字段 | 说明 | 是否必填 | | --- | --- | --- | | `gatewayHost` | 网关地址,如 `http://172.19.x.x:8080` | 是 | | `serviceCtx` | 服务上下文,如 `/wdjs-tznc`,部分接口可空 | 否 | | `tenantId` | 租户 ID | 是 | | `username` | OAuth 用户名(默认 `admin`) | 否 | | `password` | OAuth 密码(默认 `Admin@123!`) | 否 | | `clientId` | OAuth clientId(默认 `localhost`) | 否 | | `clientSecret` | OAuth clientSecret(默认 `secret`) | 否 | 应用配置文件位于启动目录下: ``` ./config/migration-config.json ``` 首次启动时若不存在会自动以默认模板创建;通过页面「保存」按钮或导入 JSON 接口写入。 ## 兼容旧用法 如需直接运行旧版命令行工具,仍可执行: ```bash java -cp target/classes org.hzero.tool.InitMessage java -cp target/classes org.hzero.tool.InitJob # ... 其余工具同理 ``` ## 许可证 本项目仅供学习和内部使用。