348 lines
6.6 KiB
Markdown
348 lines
6.6 KiB
Markdown
# Deploy Ease Platform V2 设计文档
|
||
|
||
## 一、系统概述
|
||
|
||
### 1.1 系统目标
|
||
- 构建一个高度可扩展的自动化部署平台
|
||
- 支持灵活的工作流配置和审批流程
|
||
- 实现多环境、多租户的部署管理
|
||
- 提供完整的日志追踪和监控能力
|
||
|
||
### 1.2 核心功能
|
||
1. 项目管理
|
||
- 项目集管理
|
||
- 项目配置
|
||
- Git仓库集成
|
||
- Jenkins集成
|
||
|
||
2. 环境管理
|
||
- 环境配置
|
||
- 环境克隆
|
||
- 环境变量管理
|
||
- 权限控制
|
||
|
||
3. 工作流引擎
|
||
- 流程设计
|
||
- 节点执行
|
||
- 状态管理
|
||
- 日志追踪
|
||
|
||
4. 审批系统
|
||
- 审批流程定义
|
||
- 审批规则配置
|
||
- 审批节点管理
|
||
- 审批记录追踪
|
||
|
||
5. 配置中心
|
||
- Nacos配置管理
|
||
- 配置同步
|
||
- 版本控制
|
||
- 变更追踪
|
||
|
||
## 二、技术架构
|
||
|
||
### 2.1 技术选型
|
||
- 后端框架:Spring Boot 3.2.0
|
||
- Java版本:JDK 21
|
||
- ORM框架:JPA + QueryDSL
|
||
- 安全框架:Spring Security + JWT
|
||
- 数据库:MySQL 8.0
|
||
- 缓存:Redis
|
||
- 消息队列:RabbitMQ
|
||
- 服务注册:Nacos
|
||
|
||
### 2.2 系统架构
|
||
1. 微服务架构
|
||
- 网关服务
|
||
- 认证服务
|
||
- 工作流引擎
|
||
- 审批服务
|
||
- 配置中心
|
||
|
||
2. 分层架构
|
||
- 接口层(Controller)
|
||
- 业务层(Service)
|
||
- 数据访问层(Repository)
|
||
- 领域模型层(Domain)
|
||
|
||
3. 插件化架构
|
||
- 节点插件
|
||
- 审批插件
|
||
- 通知插件
|
||
|
||
## 三、数据库设计
|
||
|
||
### 3.1 核心表设计
|
||
{{ ... }}
|
||
|
||
### 3.2 工作流相关表
|
||
{{ ... }}
|
||
|
||
### 3.3 审批系统表
|
||
1. 审批定义表(sys_approval_definition)
|
||
- 基础字段(id, tenant_id等)
|
||
- 流程编码(code)
|
||
- 流程名称(name)
|
||
- 流程描述(description)
|
||
- 业务类型(business_type)
|
||
- 节点配置(node_config)
|
||
- 表单配置(form_config)
|
||
|
||
2. 审批流程表(sys_approval_flow)
|
||
- 基础字段
|
||
- 业务类型(business_type)
|
||
- 业务键(business_key)
|
||
- 模板编码(template_code)
|
||
- 当前节点(current_node)
|
||
- 流程状态(status)
|
||
- 流程变量(variables)
|
||
|
||
3. 审批节点表(sys_approval_node)
|
||
- 基础字段
|
||
- 流程ID(flow_id)
|
||
- 节点编码(node_code)
|
||
- 节点名称(node_name)
|
||
- 节点类型(node_type)
|
||
- 审批人类型(approver_type)
|
||
- 审批人列表(approver_ids)
|
||
- 节点状态(status)
|
||
- 执行时间(start_time, end_time)
|
||
|
||
4. 审批意见表(sys_approval_comment)
|
||
- 基础字段
|
||
- 流程ID(flow_id)
|
||
- 节点ID(node_id)
|
||
- 审批人(user_id)
|
||
- 审批动作(action)
|
||
- 审批意见(comment)
|
||
- 附件信息(attachments)
|
||
|
||
## 四、审批系统设计
|
||
|
||
### 4.1 审批系统架构
|
||
1. 核心组件
|
||
- 审批引擎(ApprovalEngine)
|
||
- 审批规则解析器(RuleParser)
|
||
- 审批节点执行器(NodeExecutor)
|
||
- 审批事件总线(EventBus)
|
||
|
||
2. 扩展点
|
||
- 审批规则插件
|
||
- 审批节点类型
|
||
- 审批表单定义
|
||
- 审批通知方式
|
||
|
||
### 4.2 审批流程设计
|
||
1. 流程定义
|
||
```json
|
||
{
|
||
"nodes": [
|
||
{
|
||
"id": "start",
|
||
"type": "start",
|
||
"next": "approve1"
|
||
},
|
||
{
|
||
"id": "approve1",
|
||
"type": "approve",
|
||
"config": {
|
||
"approverType": "ROLE",
|
||
"approverIds": ["ROLE_LEADER"],
|
||
"counterSign": false
|
||
},
|
||
"next": "approve2"
|
||
},
|
||
{
|
||
"id": "approve2",
|
||
"type": "approve",
|
||
"config": {
|
||
"approverType": "USER",
|
||
"approverIds": ["user1", "user2"],
|
||
"counterSign": true
|
||
},
|
||
"next": "end"
|
||
},
|
||
{
|
||
"id": "end",
|
||
"type": "end"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
2. 审批规则
|
||
```json
|
||
{
|
||
"rules": [
|
||
{
|
||
"condition": {
|
||
"field": "environment",
|
||
"operator": "equals",
|
||
"value": "PROD"
|
||
},
|
||
"template": "PROD_DEPLOY_APPROVAL"
|
||
},
|
||
{
|
||
"condition": {
|
||
"field": "changeType",
|
||
"operator": "in",
|
||
"value": ["CONFIG", "DATABASE"]
|
||
},
|
||
"template": "CHANGE_APPROVAL"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 4.3 审批流程实现
|
||
1. 流程启动
|
||
- 规则匹配
|
||
- 创建流程实例
|
||
- 初始化节点
|
||
- 发送通知
|
||
|
||
2. 节点执行
|
||
- 权限校验
|
||
- 节点执行
|
||
- 状态更新
|
||
- 下一节点
|
||
|
||
3. 流程结束
|
||
- 结果处理
|
||
- 状态更新
|
||
- 通知相关人
|
||
|
||
### 4.4 与工作流集成
|
||
1. 工作流定义扩展
|
||
```json
|
||
{
|
||
"nodes": [
|
||
{
|
||
"id": "deploy",
|
||
"type": "deploy",
|
||
"config": {
|
||
"approval": {
|
||
"enabled": true,
|
||
"template": "DEPLOY_APPROVAL"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
2. 节点执行器实现
|
||
```java
|
||
public class DeployNodeExecutor implements NodeExecutor {
|
||
@Override
|
||
public void execute(NodeInstance node) {
|
||
// 1. 检查是否需要审批
|
||
if (needApproval(node)) {
|
||
// 2. 创建审批流程
|
||
createApprovalFlow(node);
|
||
// 3. 暂停节点执行
|
||
node.suspend();
|
||
return;
|
||
}
|
||
// 4. 执行部署
|
||
executeDeploy(node);
|
||
}
|
||
}
|
||
```
|
||
|
||
## 五、系统特性
|
||
|
||
### 5.1 多租户支持
|
||
1. 数据隔离
|
||
- 租户ID字段
|
||
- 查询过滤
|
||
- 权限控制
|
||
|
||
2. 资源隔离
|
||
- 独立配置
|
||
- 独立存储
|
||
- 独立缓存
|
||
|
||
### 5.2 插件化设计
|
||
1. 节点插件
|
||
- Git操作
|
||
- Jenkins构建
|
||
- 配置同步
|
||
- 数据库变更
|
||
|
||
2. 审批插件
|
||
- 角色审批
|
||
- 用户审批
|
||
- 条件审批
|
||
- 自动审批
|
||
|
||
### 5.3 安全特性
|
||
1. 认证授权
|
||
- JWT认证
|
||
- RBAC权限
|
||
- 租户隔离
|
||
|
||
2. 数据安全
|
||
- 敏感信息加密
|
||
- 操作审计
|
||
- 数据备份
|
||
|
||
### 5.4 可观测性
|
||
1. 日志管理
|
||
- 操作日志
|
||
- 审计日志
|
||
- 性能日志
|
||
|
||
2. 监控告警
|
||
- 系统监控
|
||
- 业务监控
|
||
- 异常告警
|
||
|
||
## 六、部署架构
|
||
|
||
### 6.1 系统部署
|
||
1. 容器化部署
|
||
- Docker镜像
|
||
- K8s编排
|
||
- 服务网格
|
||
|
||
2. 高可用设计
|
||
- 多副本
|
||
- 负载均衡
|
||
- 故障转移
|
||
|
||
### 6.2 数据存储
|
||
1. 数据库
|
||
- 主从复制
|
||
- 数据备份
|
||
- 分库分表
|
||
|
||
2. 文件存储
|
||
- 分布式存储
|
||
- 文件备份
|
||
- 访问控制
|
||
|
||
## 七、后续规划
|
||
|
||
### 7.1 功能增强
|
||
1. 审批功能
|
||
- 移动端审批
|
||
- 审批委托
|
||
- 审批催办
|
||
|
||
2. 部署功能
|
||
- 灰度发布
|
||
- 回滚机制
|
||
- 批量部署
|
||
|
||
### 7.2 性能优化
|
||
1. 系统性能
|
||
- 缓存优化
|
||
- SQL优化
|
||
- 并发处理
|
||
|
||
2. 用户体验
|
||
- 响应速度
|
||
- 操作便捷
|
||
- 界面优化
|