# Cc_ETL
**Repository Path**: xzjsccz/Cc_ETL
## Basic Information
- **Project Name**: Cc_ETL
- **Description**: 基于xxl-job改造的可视化定时任务调度工具,支持任务失败重试,任务暂停和预测任务到达时间,设定超时时间等。支持单任务多任务串并联运行,可视化观察每一个任务运行的状况
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: release
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 54
- **Forks**: 27
- **Created**: 2024-11-02
- **Last Updated**: 2025-12-14
## Categories & Tags
**Categories**: task-schedule
**Tags**: xxl-job, SpringBoot, Java
## README
# 🚦 Cc-ETL
基于 XXL-Job 深度改造的可视化任务调度平台
支持拖拽式任务编排、DataX 数据同步、多端管理界面
---
## 📋 目录
- 📖 [项目简介](#-项目简介)
- 🔗 [项目地址](#-项目地址)
- ✨ [核心特性](#-核心特性)
- 📋 [使用场景](#-使用场景)
- 🖼️ [项目展示](#-项目展示)
- 💻 [PC端功能](#pc端功能介绍)
- 🚀 [快速开始](#-快速开始)
- 🧩 [模块说明](#-模块说明)
- 🛠️ [技术栈](#-技术栈)
- 📚 [项目文档](#-项目文档)
- ❓ [常见问题](#-常见问题)
- 🤝 [贡献指南](#-贡献指南)
- 📞 [技术支持](#-技术支持)
- 🙏 [致谢](#-致谢)
- 📄 [许可证](#-license)
---
## 📖 项目简介
Cc-ETL 是一款基于 XXL-Job 深度改造的可视化定时任务调度平台,专为数据集成和任务编排而设计。平台通过可视化拖拽界面实现复杂任务流程的编排,支持多种任务类型,并深度集成 DataX 实现高效的数据同步能力。
**目前项目还在测试阶段,还有很多功能未开发,还存在很多优化修复的地方,想学习可以下载看看**
### 🎯 项目定位
- **数据集成平台**:专业的数据管道工具,支持多数据源间的全量/增量同步
- **任务调度中心**:提供企业级的任务编排与调度能力,支持复杂的工作流
- **可视化运维工具**:双端(Web + PC)界面设计,提供直观的操作体验
- **企业级解决方案**:支持高可用集群部署,满足生产环境严苛要求
### ⭐ 项目优势
1. **🚀 零中间件依赖**:仅需 MySQL 数据库即可完整部署,极大降低运维复杂度
2. **🎨 可视化编排**:拖拽式流程设计,无需编程基础即可构建复杂任务链
3. **💻 多端协同**:Web 端轻量管理 + PC 端深度运维,满足不同使用场景
4. **🔧 功能完备**:支持 Bean、API、SQL、Shell、DataX 等多种任务类型
5. **⚡ 高性能设计**:基于 XXL-Job 内核,支持海量任务并发处理
6. **🔒 高可用保障**:支持集群部署、故障转移、负载均衡
### 🏆 项目亮点
- ✅ **开源项目**:基于 MIT 协议,完全开源免费
- ✅ **简历加分**:已获国企offer和多个中小公司offer
- ✅ **社区活跃**:持续更新迭代,积极响应用户反馈
---
### 核心组件
#### 🎯 Admin 管理端 (cc-job-admin)
- **任务注册中心**:负责任务和执行器的注册管理
- **调度中心**:处理任务调度逻辑和触发规则
- **监控中心**:提供任务执行状态监控和统计
- **Web 管理界面**:可视化任务配置和管理界面
#### ⚙️ Executor任务编排执行器 (cc-job-executor-compose)
- **任务执行引擎**:任务编排执行器
- **任务调度算法**:使用拓扑排序和图算法解决任务依赖
#### ⚙️ Executor 执行器 (cc-job-executor)
- **任务执行引擎**:实际执行各类任务的核心组件
- **多任务支持**:Bean 方法、HTTP API、SQL 脚本、Shell 命令、DataX 同步
- **状态管理**:任务执行状态跟踪和结果回调
- **日志收集**:执行过程日志收集和存储
#### 🌐 前端界面
- **Web 端**:基于 Vue 3 + Element Plus 的现代化 Web 界面
- **PC 端**:基于 JavaFX 的桌面应用程序,提供离线使用能力
### 数据流向
1. **任务配置** → Web/PC 端配置任务 → 存储到 MySQL 数据库
2. **任务调度** → Admin 根据 cron 表达式触发任务 → 分发到 Executor
3. **任务执行** → Executor 执行具体任务逻辑 → 返回执行结果
4. **状态监控** → 执行状态实时反馈 → Web/PC 端展示执行进度
---
## 📋 使用场景
### 🏢 企业应用场景
#### 1. **数据仓库 ETL 流程**
```
数据源同步 → 数据清洗 → 数据转换 → 加载到数据仓库
```
- 支持 MySQL、Oracle、PostgreSQL 等主流数据库
- 可视化配置复杂的 ETL 流程
- 支持全量和增量同步模式
#### 2. **业务数据处理**
```
用户行为收集 → 数据分析 → 报表生成 → 邮件推送
```
- 定时执行数据统计任务
- 生成各类业务报表
- 通过邮件或 webhook 推送结果
#### 3. **系统运维自动化**
```
日志清理 → 备份检查 → 健康监控 → 告警通知
```
- 自动化执行系统维护任务
- 监控系统运行状态
- 异常情况及时告警
#### 4. **API 数据集成**
```
第三方 API 调用 → 数据解析 → 本地存储 → 数据同步
```
- 定时拉取第三方系统数据
- API 数据集成和同步
- 支持 RESTful 和 SOAP 接口
### 🎓 学习与开发场景
#### 1. **任务调度学习**
- 学习分布式任务调度原理
- 掌握 cron 表达式使用
- 理解任务编排和依赖管理
#### 2. **数据集成实践**
- 学习 DataX 数据同步工具
- 掌握多数据源集成技术
- 实践 ETL 流程设计
#### 3. **全栈开发体验**
- 前后端分离开发模式
- 桌面应用开发经验
- 企业级应用架构设计
---
## 🔗 项目地址
- **GitHub**:https://github.com/xiaozhaoCcz/CC_ETL
- **Gitee**:https://gitee.com/xzjsccz/Cc_ETL
---
## ✨ 核心特性
### 🎨 可视化任务编排
- **拖拽式设计**:直观的流程图设计界面,支持节点拖拽和连接
- **复杂工作流**:支持串行、并行、条件分支等多种执行模式
- **依赖管理**:智能的任务依赖分析和拓扑排序
- **实时预览**:任务执行流程实时可视化展示
### 🔄 任务调度引擎
- **兼容 XXL-Job**:完全兼容 XXL-Job 所有原生功能
- **Cron 表达式**:支持标准的 Cron 定时任务配置
- **高级调度**:支持固定速率、固定延迟等多种调度策略
- **动态任务**:支持动态添加、修改、删除任务
### 🔗 数据集成能力
- **DataX 集成**:深度集成阿里巴巴 DataX 数据同步工具
- **多数据源支持**:
- 🗄️ **MySQL**:全量/增量同步,表结构映射
- 🏢 **Oracle**:企业级数据库同步支持
- 🐘 **PostgreSQL**:开源数据库集成
- 更多数据源持续扩展中...
- **同步模式**:全量同步、增量同步、条件同步
- **性能优化**:多线程并行处理,断点续传
### 🛠️ 多种任务类型
- **🅱️ Bean 任务**:执行 Spring 容器中的 Bean 方法
- **🌐 API 任务**:HTTP/HTTPS 接口调用,支持 RESTful
- **🗃️ SQL 任务**:执行 SQL 脚本和存储过程
- **🐚 Shell 任务**:执行系统命令和脚本
- **🔄 DataX 任务**:专业数据同步任务
### 📊 监控与运维
- **实时监控**:任务执行状态实时跟踪
- **执行日志**:详细的执行过程日志记录
- **性能统计**:任务执行时间、成功率等指标统计
- **告警通知**:支持邮件、webhook 等告警方式
### 🖥️ 多端管理界面
- **Web 端**:现代化 Web 界面,基于 Vue 3 + Element Plus
- **PC 端**:桌面应用程序,基于 JavaFX,支持离线使用
- **响应式设计**:适配不同屏幕尺寸和设备
### 🏢 企业级特性
- **高可用部署**:支持集群模式,自动故障转移
- **权限管理**:任务和用户的权限控制体系
- **审计日志**:完整的操作审计和日志记录
- **扩展性**:插件化架构,支持自定义扩展
---
## 🚀 发展规划
### ✅ 已完成功能
#### 核心功能
- ✅ **任务编排引擎重构**:提升性能和可维护性
- ✅ **可视化任务编排**:拖拽式界面设计
- ✅ **多任务类型支持**:Bean、API、SQL、Shell、DataX
- ✅ **DataX 数据同步**:集成专业数据同步工具
- ✅ **双端界面支持**:Web 端 + PC 端
#### 技术优化
- ✅ **Spring Boot 3.0**:升级到最新稳定版本
- ✅ **前端技术栈升级**:Vue 3 + TypeScript
- ✅ **数据库设计优化**:高效的数据存储结构
### 🔄 正在进行
#### 界面优化
- 🔄 **调度中心页面迁移**:功能逐步迁移到 PC 端(重点)
- 🔄 **用户体验提升**:界面交互和视觉设计优化
#### 功能增强
- 🔄 **权限管理系统**:用户和任务权限控制
- 🔄 **条件节点功能**:支持任务流程条件判断(重点)
### 📋 未来规划
#### 数据源扩展
- 📋 **更多数据源支持**:Redis、MongoDB、ES 等
- 📋 **云数据库集成**:阿里云、腾讯云、AWS 等
- 📋 **大数据平台**:Hadoop、Spark 生态集成
#### 高级特性
- 📋 **工作流引擎升级**:支持更复杂的流程控制
- 📋 **监控告警增强**:多渠道告警和智能监控
- 📋 **性能优化**:高并发场景优化和缓存机制
#### 生态建设
- 📋 **插件市场**:支持第三方插件扩展
- 📋 **API 生态**:完善 REST API 和 SDK
- 📋 **多语言支持**:国际化支持
#### 文档与社区
- 📋 **完善 API 文档**:详细的接口文档和示例
- 📋 **最佳实践指南**:使用案例和解决方案
- 📋 **视频教程**:操作指南和教学视频
- 📋 **开发者文档**:架构设计和开发指南
---
## 🖼️ 项目展示
### 🎯 界面预览
#### Web 端管理界面
#### PC 端桌面应用
### ⚙️ 核心功能展示
#### 1. 执行器与数据源配置
#### 2. 可视化任务编排
### 📋 使用流程
1. **🏗️ 环境搭建**
- 配置数据库和后端服务
- 启动 Admin 管理端和 Executor 执行器
2. **⚙️ 系统配置**
- 在 Web 端配置执行器连接信息
- 设置数据源和连接参数
3. **🎨 任务设计**
- 创建任务分区和任务组
- 使用拖拽界面设计任务流程
- 配置任务参数和依赖关系
4. **▶️ 执行监控**
- 手动或定时触发任务执行
- 实时查看执行日志和状态
- 监控任务执行进度和结果
### 🎬 演示视频
> 📹 **项目演示视频**:详细的操作演示和功能介绍
>
> [在线观看](https://www.bilibili.com/video/BV1TBCkBzEex/?spm_id_from=333.1387.upload.video_card.click)
---
## PC端功能文档介绍
- [本地文档](/doc/cc-job)
- [pc端](doc/cc-job/pc端功能介绍.md)
此文档是旧的pc端文档,新版本使用JavaFX写的,文档是适用的,新文档编写中.....
## 🚀 快速开始
### 📋 环境要求
在开始之前,请确保您的环境满足以下要求:
| 环境 | 版本要求 | 说明 |
|------|---------|------|
| **JDK** | 17+ | 推荐使用 JDK 17 或更高版本 |
| **Maven** | 3.6+ | 用于构建 Java 项目 |
| **MySQL** | 5.7+ | 推荐使用 MySQL 8.0+ |
| **Node.js** | 18+ | Web 前端需要(注意:20.6.0 版本不可用) |
| **pnpm** | 最新版 | 前端包管理工具 |
| **Python** | 3.6+ | DataX 需要(如果使用 DataX 功能) |
### 1️⃣ 数据库初始化
#### 1.1 创建数据库
```sql
CREATE DATABASE `cc_job_admin` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
#### 1.2 执行初始化脚本
执行项目根目录下的数据库脚本:
```bash
# 方式一:使用 MySQL 命令行
mysql -u root -p cc_job_admin < doc/cc_etl.sql
# 方式二:直接在 MySQL 客户端中执行
# 打开 doc/cc_etl.sql 文件,复制内容到 MySQL 客户端执行
```
### 2️⃣ 后端配置与启动
#### 2.1 编译项目
```bash
# 进入项目根目录
cd cc-job
# 编译项目
mvn clean package -DskipTests
```
#### 2.2 配置说明
#### 🛠️ 管理端配置(Admin)
编辑 `cc-job/cc-job-admin/src/main/resources/application.yml`:
```yaml
server:
port: 8989
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/cc_job_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: your_username # 修改为您的数据库用户名
password: your_password # 修改为您的数据库密码
xxl:
job:
i18n: zh_CN
accessToken: default_token
triggerpool:
fast:
max: 200
slow:
max: 200
logretentiondays: 30
logpath: /path/to/logs # 日志文件路径,必须配置,建议与 executor 保持一致
```
#### ⚙️ 执行器配置
编辑 `cc-job/cc-job-executor-samples/cc-job-executor-sample-springboot/src/main/resources/application.yml`:
```yaml
server:
port: 8400
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/cc_job_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
xxl:
job:
admin:
addresses: http://127.0.0.1:8989/xxl-job-admin
accessToken: default_token
executor:
appname: xxl-job-executor-sample
address:
ip:
port: 10000 # 执行器端口,不能为 9999
logpath: /path/to/logs # 日志路径,必须配置
logretentiondays: 30
```
#### 2.3 启动后端服务
**启动 Admin 服务**:
```bash
# 方式一:使用 IDE 运行
# 运行 cc-job-admin 模块的启动类
# 方式二:使用命令行
cd cc-job/cc-job-admin
mvn spring-boot:run
```
**启动 Executor 服务**:
```bash
# 方式一:使用 IDE 运行
# 运行 cc-job-executor-sample-springboot 模块的启动类
# 方式二:使用命令行
cd cc-job/cc-job-executor-samples/cc-job-executor-sample-springboot
mvn spring-boot:run
```
**验证启动**:
- Admin 服务:访问 `http://localhost:8989/xxl-job-admin`
- Executor 会自动注册到 Admin,可在 Web 端查看
### 3️⃣ 前端配置与启动
#### 3.1 Web 端配置
```bash
# 进入 Web 前端目录
cd cc-job-web
# 安装 pnpm(如果未安装)
npm install pnpm -g
# 设置镜像源(可选,加速下载)
pnpm config set registry https://registry.npmmirror.com
# 安装依赖
pnpm install
```
#### 3.2 配置后端 API 地址
编辑 `cc-job-web/.env.development`:
```bash
# 后端 API 地址
VITE_APP_API_URL=http://localhost:8989
```
#### 3.3 启动 Web 端
```bash
# 开发环境运行
pnpm run dev
# 访问地址:http://localhost:5173
```
#### 3.4 生产环境构建
```bash
# 构建生产版本
pnpm run build
# 构建产物在 dist 目录
```
### 4️⃣ PC 端启动(可选)
PC 端为 JavaFX 应用,直接运行主类即可:
```bash
cd cc-job/cc-job-gui
mvn clean package
java -jar target/cc-job-gui.jar
```
### 5️⃣ DataX 配置(可选,如使用数据同步功能)
#### 5.1 下载 DataX
```bash
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz
tar -zxvf datax.tar.gz
```
#### 5.2 测试 DataX
```bash
cd datax
python ./bin/datax.py ./job/job.json
```
#### 5.3 配置 Executor 中的 DataX 路径
在 Executor 配置文件中添加:
```yaml
cc-job:
executor:
jsonpath: /path/to/datax/json # DataX JSON 文件临时存放路径
pypath: /path/to/datax/bin/datax.py # DataX Python 脚本路径
```
---
## 🧩 模块说明
| 🧩 模块 | 📋 说明 |
|------|------|
| 💻 **cc_job_pc** | 桌面端管理界面,便于本地运维和管理 |
| 🔄 **cc-job/cc-async-tool** | 异步任务调度工具,支持任务重复调用与超时处理(已经移除,会出现线程爆炸增长的情况,已经对编排工具进行重写并集成到cc-job-admin模块中) |
| 🗂️ **cc-job/cc-job-admin** | 任务注册中心,负责任务与任务组的注册管理 |
| 🧠 **cc-job/cc-job-core** | 任务执行核心模块,负责调度和执行任务 |
| 🏃 **cc-job/cc-job-executor** | 任务执行器,支持多种任务类型(DataX、API、JDBC等) |
| 🧪 **cc-job/cc-job-executor-samples** | 执行器示例工程,便于开发和测试 |
| 🗄️ **cc-job/cc-job-xo** | 数据存储与实体映射模块 |
| 🌐 **cc-job-web** | Web 端管理界面,提供可视化任务管理与监控 |
---
## 📚 项目文档
### 在线文档
- [在线文档](http://175.178.249.190/blog/post/298)
### 本地文档
> 📝 **提示**:此项目文档比较旧,但是够用,新文档编写中.....
- [本地文档](/doc/cc-job)
- [01 项目介绍](doc/cc-job/01项目介绍.md)

- [02 快速开始](doc/cc-job/02快速开始.md)

- [03 功能介绍](doc/cc-job/03功能介绍.md)

- [PC端功能介绍](doc/cc-job/pc端功能介绍.md)
## 🛠️ 技术栈
### ⚙️ 后端技术栈
| 技术组件 | 版本 | 用途说明 |
|---------|------|---------|
| **Java** | 17+ | 运行环境,采用最新的 LTS 版本,提供优秀的性能和安全性 |
| **Spring Boot** | 3.0.7+ | 企业级应用框架,提供快速开发和自动配置能力 |
| **Spring MVC** | - | Web 框架,处理 HTTP 请求和响应 |
| **MyBatis Plus** | 3.5.3+ | 持久层框架,简化数据库操作,支持代码生成 |
| **XXL-Job** | 2.x | 分布式任务调度平台,提供核心调度能力 |
| **DataX** | 最新版 | 异构数据源离线同步工具,支持多种数据源 |
| **Druid** | 1.2.x | 数据库连接池,提供连接管理和监控 |
| **MySQL** | 5.7+ | 主数据库,存储任务配置和执行记录 |
| **Redis** | 可选 | 缓存层,提升系统性能和并发能力 |
### 🌐 前端技术栈(Web 端)
| 技术组件 | 版本 | 用途说明 |
|---------|------|---------|
| **Vue.js** | 3.x | 渐进式前端框架,提供响应式数据绑定 |
| **TypeScript** | 5.x | 类型安全的 JavaScript 超集,提升代码质量 |
| **Element Plus** | 2.x | Vue 3 企业级组件库,提供丰富的 UI 组件 |
| **Vue Flow** | 1.x | 流程图可视化组件,支持拖拽式任务编排 |
| **Vite** | 4.x | 新一代前端构建工具,提供快速的开发体验 |
| **Vue Router** | 4.x | 单页面应用路由管理 |
| **Pinia** | - | Vue 3 状态管理库,替代 Vuex |
| **Axios** | 1.x | HTTP 客户端,用于 API 调用 |
### 💻 前端技术栈(PC 端)
| 技术组件 | 版本 | 用途说明 |
|---------|------|---------|
| **JavaFX** | 17+ | Java 桌面应用框架,提供现代化 GUI |
| **Java** | 17+ | 运行环境,与后端保持一致的技术栈 |
| **Maven** | 3.6+ | 项目构建和依赖管理工具 |
| **Scene Builder** | 可选 | JavaFX UI 设计工具,可视化界面设计 |
### 🔧 开发工具链
| 工具类型 | 工具名称 | 用途说明 |
|---------|---------|---------|
| **构建工具** | Maven 3.6+ | 项目构建、依赖管理和打包 |
| **前端包管理** | pnpm | 高效的包管理工具,磁盘空间节省 |
| **版本控制** | Git | 代码版本控制和团队协作 |
| **IDE** | IntelliJ IDEA | Java 开发集成环境 |
| **代码检查** | Checkstyle | 代码规范检查工具 |
### 📊 系统要求
| 环境类型 | 最低配置 | 推荐配置 |
|---------|---------|---------|
| **操作系统** | Windows 10+ / macOS 10.15+ / Linux | Windows 11 / macOS 12+ / Ubuntu 20.04+ |
| **内存** | 4GB | 8GB+ |
| **磁盘空间** | 5GB | 20GB+ |
| **网络** | 100Mbps | 1Gbps |
---
## ❓ 常见问题
### 部署相关问题
#### Q1: Admin 启动失败,提示数据库连接错误?
**A**: 检查以下几点:
1. 数据库是否已启动
2. 数据库连接信息是否正确(用户名、密码、地址、端口)
3. 数据库用户是否有足够权限
4. 数据库是否已初始化(执行了初始化脚本)
5. 时区设置是否正确(建议使用 `Asia/Shanghai`)
#### Q2: Executor 无法注册到 Admin?
**A**: 检查以下几点:
1. Admin 服务是否已启动
2. Admin 地址配置是否正确(`admin.addresses`)
3. 网络是否连通(可以 ping 或 telnet 测试)
4. AccessToken 是否一致(admin 和 executor 必须相同)
5. Executor 端口是否被占用
6. 防火墙是否阻止连接
#### Q3: DataX 任务执行失败?
**A**: 检查以下几点:
1. DataX 是否已正确安装
2. `pypath` 配置是否正确(指向 DataX 的 Python 脚本路径)
3. `jsonpath` 目录是否存在且有写权限
4. 数据源连接信息是否正确
5. Reader 和 Writer 的表结构是否匹配
6. 检查执行器日志中的详细错误信息
7. Python 环境是否正确(需要 Python 3.6+)
#### Q4: Web 端无法访问?
**A**: 检查以下几点:
1. Web 前端是否已启动(`pnpm run dev`)
2. 前端端口是否被占用(默认 5173)
3. 后端 API 地址配置是否正确(`.env.development` 中的 `VITE_APP_API_URL`)
4. 浏览器控制台是否有错误信息
5. 检查跨域配置是否正确
6. 后端服务是否正常运行
#### Q5: 任务组执行失败,提示拓扑排序错误?
**A**: 检查以下几点:
1. 任务组中是否存在循环依赖
2. 任务节点是否都已正确关联任务
3. 任务依赖关系是否正确配置
4. 检查任务组 JSON 配置是否完整
5. 任务组是否选择了正确的执行器(必须选择"任务集执行器")
### 配置相关问题
#### Q6: 如何配置多个执行器?
**A**:
1. 复制 Executor 模块配置
2. 修改每个 Executor 的 `appname` 和 `port`(确保端口不冲突)
3. 确保所有 Executor 的 `admin.addresses` 指向同一个 Admin
4. 确保所有 Executor 的 `accessToken` 与 Admin 一致
5. 启动多个 Executor 实例
#### Q7: 如何配置集群部署?
**A**:
1. Admin 可以部署多个实例,共享同一个数据库
2. Executor 可以部署多个实例,实现负载均衡
3. 使用 Nginx 做负载均衡(可选)
4. 确保所有实例的配置一致(特别是 `accessToken`)
5. 确保日志路径可访问(如果使用共享存储)
### 功能使用问题
#### Q8: 如何实现任务失败后发送告警?
**A**:
1. 在任务配置中启用"失败告警"
2. 配置告警通知方式(邮件/短信/Webhook)
3. 设置告警规则和接收人
4. 任务失败时会自动触发告警
#### Q9: 如何导出/导入任务组配置?
**A**:
1. **导出**:在任务组管理页面点击"导出",生成 JSON 文件
2. **导入**:在任务组管理页面点击"导入",选择 JSON 文件
3. 导入后检查任务依赖关系是否正确
4. 确保导入的任务组中的任务都已存在
### 开发相关问题
#### Q10: 如何添加新的任务类型?
**A**:
1. 在 `cc-job-executor` 模块中实现任务处理器
2. 继承 `AbstractJobHandler` 类
3. 在 Spring 容器中注册处理器
4. 在前端界面中添加对应的配置选项
#### Q11: 如何自定义告警通知?
**A**:
1. 实现 `IAlarmService` 接口
2. 配置告警渠道(邮件、短信、Webhook 等)
3. 在任务配置中选择告警方式
4. 测试告警功能是否正常工作
#### Q12: 项目如何进行性能调优?
**A**:
1. **数据库优化**:添加合适的索引,避免慢查询
2. **连接池配置**:调整 Druid 连接池参数
3. **JVM 调优**:配置合适的堆内存和 GC 参数
4. **缓存策略**:使用 Redis 缓存热点数据
5. **异步处理**:对耗时操作使用异步处理
### 升级与维护
#### Q13: 如何从旧版本升级?
**A**:
1. 备份数据库和配置文件
2. 下载新版本代码
3. 更新数据库结构(检查升级脚本)
4. 更新配置文件
5. 逐步重启服务,验证功能正常
#### Q14: 如何监控系统运行状态?
**A**:
1. 使用内置的监控页面查看任务执行统计
2. 配置日志收集和分析
3. 设置关键指标监控(CPU、内存、磁盘等)
4. 配置告警规则,及时发现问题
### 故障排除
#### Q15: 任务执行卡住怎么办?
**A**:
1. 检查执行器是否正常运行
2. 查看任务执行日志,定位问题
3. 检查网络连接是否正常
4. 重启执行器服务
5. 如果问题持续,联系技术支持
#### Q16: 数据同步速度慢怎么优化?
**A**:
1. 调整 DataX 并发度参数
2. 优化数据源查询条件
3. 检查网络带宽是否充足
4. 考虑分批处理大表数据
5. 使用增量同步替代全量同步
---
## 🤝 贡献指南
我们非常欢迎社区贡献者参与项目开发!无论您是修复 bug、添加功能、改进文档,还是提供建议,都能帮助项目变得更好。
### 📋 贡献类型
- 🐛 **Bug 修复**:修复已知的问题和缺陷
- ✨ **新功能**:添加新的功能和特性
- 📚 **文档改进**:完善文档、添加示例和教程
- 🎨 **界面优化**:改进用户界面和用户体验
- 🧪 **测试完善**:添加或改进测试用例
- 🔧 **工具改进**:优化构建脚本、开发工具等
### 🚀 开发流程
#### 1. 环境准备
在开始贡献之前,请确保您的开发环境满足以下要求:
```bash
# 克隆项目
git clone https://github.com/xiaozhaoCcz/CC_ETL.git
cd CC_ETL
# 后端环境要求
- JDK 17+
- Maven 3.6+
- MySQL 5.7+
# 前端环境要求
- Node.js 18+
- pnpm 最新版
```
#### 2. 开发规范
##### 分支管理
```bash
# 创建特性分支
git checkout -b feature/your-feature-name
# 或修复分支
git checkout -b fix/issue-number-description
# 或文档分支
git checkout -b docs/update-documentation
```
##### 提交规范
```bash
# 提交格式
git commit -m "type(scope): description"
# 类型说明
feat: 新功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 代码重构
test: 测试相关
chore: 构建过程或工具配置更新
```
#### 3. 代码规范
##### Java 后端规范
- 遵循阿里巴巴 Java 开发规范
- 使用 Lombok 简化代码
- 包名统一使用小写,类名使用 Pascal 命名
- 方法注释使用 JavaDoc 格式
##### 前端规范
- 使用 TypeScript 进行类型检查
- 组件命名使用 Pascal 命名
- 文件命名使用 kebab-case
- 提交前运行 ESLint 检查
##### 数据库规范
- 表名使用下划线分隔的小写
- 字段名使用下划线分隔的小写
- 必须添加字段注释
- 索引命名规范:idx_表名_字段名
### 🧪 测试要求
- 新功能必须包含单元测试
- 修改现有功能需要更新相关测试
- 提交前确保所有测试通过
```bash
# 运行后端测试
cd cc-job
mvn test
# 运行前端测试
cd cc-job-web
pnpm test
```
### 📝 提交 Pull Request
1. **Fork 项目** 到您的 GitHub 账户
2. **创建分支** 并进行开发
3. **提交更改** 并推送至您的仓库
4. **创建 PR**:
- 标题清晰描述变更内容
- 详细描述变更原因和影响
- 关联相关 Issue(如有)
- 请求 Review
### 🐛 报告问题
提交 Issue 时请提供以下信息:
#### Bug 报告
- **标题**:清晰描述问题
- **环境信息**:
- 操作系统版本
- Java 版本:`java -version`
- 项目版本或 commit hash
- **复现步骤**:
- 详细的操作步骤
- 预期行为 vs 实际行为
- **错误日志**:完整的错误堆栈信息
- **截图**:界面问题请提供截图
#### 功能请求
- **标题**:描述所需功能
- **背景**:为什么需要这个功能
- **实现建议**:可选的实现方案
- **影响范围**:影响哪些用户或场景
### 🎯 行为准则
- 尊重所有贡献者,保持友好的沟通环境
- 代码审查注重建设性反馈
- 优先考虑项目的整体利益
- 及时响应 Issue 和 PR
### 📞 联系我们
- **项目维护者**:Cc-ETL Team
- **讨论群**:暂无
- **邮箱**:项目邮箱(待添加)
感谢您的贡献!🎉
---
## 📞 技术支持
### 获取帮助
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
1. **查看文档**:首先查阅本文档的"常见问题"部分
2. **GitHub Issues**:在项目仓库提交 Issue,描述问题详情
3. **在线文档**:查看[在线文档](http://175.178.249.190/blog/post/298)
### 反馈建议
如果您有任何建议或想法,欢迎:
- 提交 Issue 讨论
- 提交 Pull Request
- 分享使用经验
---
## 🙏 致谢
感谢以下优秀的开源项目:
- **XXL-Job**:感谢 XXL-Job 提供的优秀任务调度框架
- **DataX**:感谢阿里巴巴 DataX 项目提供的数据同步工具
- **Vue 3**:感谢 Vue.js 团队提供的优秀前端框架
- **Element Plus**:感谢 Element Plus 提供的组件库
- **JavaFX**:感谢 JavaFX 提供的桌面应用框架
---
## 📄 License
本项目遵循 [MIT License](./LICENSE)。
---
### 💝 赞助支持
如果您觉得这个项目对您有价值,欢迎通过以下方式支持项目发展:
- ⭐ **GitHub Star**:给项目点个星,增加项目曝光度
- 🍴 **Fork & Contribute**:参与项目贡献,共同改进
- 📢 **分享传播**:将项目分享给更多需要的开发者
- 💬 **反馈建议**:提出宝贵意见,帮助项目改进
### 📞 联系我们
- **项目主页**:[GitHub](https://github.com/xiaozhaoCcz/CC_ETL) | [Gitee](https://gitee.com/xzjsccz/Cc_ETL)
- **在线文档**:[http://175.178.249.190/blog/post/298](http://175.178.249.190/blog/post/298)
- **Issue 反馈**:在 GitHub/Gitee 上提交 Issue
- **讨论交流**:暂无官方讨论群,欢迎在 Issue 中交流
---
## 📈 项目统计
[](https://github.com/xiaozhaoCcz/CC_ETL)
[](https://github.com/xiaozhaoCcz/CC_ETL)
[](https://github.com/xiaozhaoCcz/CC_ETL/issues)
[](https://github.com/xiaozhaoCcz/CC_ETL/blob/master/LICENSE)
---
**最后更新**:2025-01-07
**维护者**:Cc-ETL Team
**版本**:v2.0.0
---
Made with ❤️ by the Cc-ETL Team
如需更多帮助或有任何建议,欢迎提交 Issue 或 PR!🚀