JIAP/JIAP_Sturct.md

255 lines
6.9 KiB
Markdown
Raw Permalink Normal View History

2024-12-19 02:54:37 +00:00
# JIAP实现方案
## **1. JIAP技术栈**
### **1.1 后端技术**
1. **编程语言**C#
- **理由**C# 是 Microsoft .NET 平台的核心语言,提供了丰富的库和工具集,支持高效开发和强大的 Windows 系统集成能力。
2. **框架**
- **ASP.NET Core**
- 用于开发 RESTful API 和 WebSocket 服务。
- 支持跨平台部署,同时在 Windows 系统上优化性能。
- **Entity Framework Core**
- 数据访问层,简化对数据库的操作。
3. **数据库**
- **Microsoft SQL Server**:高效的关系型数据库,兼容 Windows 系统,易于集成。
- **LiteDB**:轻量级嵌入式数据库(适合本地化任务运行场景)。
4. **消息队列**
- **RabbitMQ**:提供任务调度和异步处理能力。
5. **日志系统**
- **NLog**:高性能日志记录框架,支持文件输出、数据库输出等多种日志形式。
---
### **1.2 前端技术**
1. **前端框架**React.js 或 Blazor
- **Blazor** 是 Microsoft 官方推出的前端框架,基于 .NET支持与 C# 代码直接集成。
- **React.js** 提供灵活的 UI 构建能力,更适合复杂的前端交互。
2. **UI 组件库**Material Design 或 DevExpress
- 支持现代化 UI 的快速构建。
---
### **1.3 系统通信**
1. **API 通信**
- **RESTful API**:同步任务请求和资源查询。
- **WebSocket**:实时任务状态推送。
2. **消息队列**RabbitMQ 或 Azure Service Bus。
---
### **1.4 自动化框架**
1. **Windows 环境支持**
- 使用 **PowerShell****Windows Scripting Host** 实现系统级自动化任务(如文件操作、注册表操作)。
2. **UI 自动化**
- **UIAutomation**.NET Framework 提供):
- 适合自动化桌面应用程序。
- **Selenium WebDriver**
- 用于 Web 浏览器的自动化操作。
3. **OCR 处理**
- **Tesseract OCR + Emgu.CV**(适配 C# 的 OCR 和计算机视觉库)。
---
## **2. 系统架构**
### **2.1 调整后的分层架构**
```mermaid
graph TD
A[客户端层]
B[控制器层]
C[机器人代理层]
D[操作模块层]
A --> B
B --> C
C --> D
```
1. **客户端层**
- 提供任务管理的用户界面,支持任务提交和状态监控。
- 使用 Blazor 或 React.js 实现。
2. **控制器层**
- 核心调度组件,负责接收任务请求,分配任务给机器人。
- 基于 ASP.NET Core 开发。
3. **机器人代理层**
- 每个机器人独立运行,负责调用操作模块执行任务。
- 使用 Windows Service 或 .NET Worker 实现后台运行。
4. **操作模块层**
- 包含具体的功能实现模块如文件操作、OCR、Excel 操作)。
- 使用独立的 DLL 模块进行封装,支持动态加载。
---
### **2.2 数据流设计**
#### 数据流动示意图
```mermaid
graph TD
A[客户端] -->|发送任务请求| B[RPA 控制器]
B -->|分配任务| C[RPA 机器人]
C -->|调用功能模块| D[操作模块]
D -->|返回结果| C
C -->|汇总结果| B
B -->|响应结果| A
```
---
## **3. 实现步骤**
### **3.1 系统规划与设计**
1. **定义系统功能模块**
- 确定需要实现的核心功能模块,例如:
- 文件操作模块(复制、移动、删除文件)。
- Excel 操作模块(读取和写入单元格)。
- 网络模块(发送 HTTP 请求,下载文件)。
- OCR 模块(图像文字提取)。
2. **技术选型**
- 确定使用 C# 和 ASP.NET Core 作为主要技术栈。
- 引入 RabbitMQ 和 SQL Server 支持任务调度和数据存储。
3. **设计 API 接口**
- 定义统一的接口格式,采用 RESTful API 和 WebSocket。
- 定义模块的标准方法格式(如 `Module.Operation`)。
---
### **3.2 控制器开发C# + ASP.NET Core**
1. **项目结构**
- **Controllers**
- 实现 API 路由。
- **Services**
- 任务调度、资源管理和状态监控。
- **Models**
- 定义请求和返回的标准数据格式。
- **Modules**
- 调用具体的操作模块。
2. **任务调度逻辑**
- 使用 RabbitMQ 分发任务:
- 将客户端任务请求封装为消息,放入任务队列。
- 消费队列中的任务,并分配给可用的机器人。
3. **日志管理**
- 使用 NLog 记录任务执行日志和错误信息。
---
### **3.3 机器人代理开发C# + Windows Service**
1. **Windows Service 实现**
- 机器人作为后台服务运行,监听任务队列。
- 基于 .NET Worker 构建服务逻辑。
2. **任务执行逻辑**
- 接收到任务后解析请求参数。
- 动态加载操作模块 DLL。
- 执行任务后,将结果返回至控制器。
---
### **3.4 操作模块开发C# 独立 DLL**
#### 文件操作模块示例
```csharp
public class FileOperations
{
public static bool CopyFile(string sourcePath, string destinationPath, bool overwrite)
{
try
{
File.Copy(sourcePath, destinationPath, overwrite);
return true;
}
catch (Exception ex)
{
Console.WriteLine($"Error copying file: {ex.Message}");
return false;
}
}
}
```
#### Excel 操作模块示例
```csharp
using OfficeOpenXml;
public class ExcelOperations
{
public static string ReadCell(string filePath, string sheetName, string cellAddress)
{
using var package = new ExcelPackage(new FileInfo(filePath));
var worksheet = package.Workbook.Worksheets[sheetName];
return worksheet.Cells[cellAddress].Text;
}
}
```
---
### **3.5 前端开发Blazor 或 React.js**
1. **任务管理界面**
- 提供表单供用户提交任务(如文件复制任务)。
- 实时显示任务状态(通过 WebSocket 连接控制器)。
2. **API 集成**
- 使用 HttpClient 调用控制器 API。
- 使用 SignalR 实现 WebSocket 通信。
---
### **3.6 系统部署**
1. **容器化部署**
- 使用 Docker 构建 ASP.NET Core 控制器容器。
- 将机器人代理和控制器分别部署为独立的服务。
2. **Windows 系统优化**
- 将机器人代理注册为 Windows Service确保开机自动运行。
3. **安全配置**
- 使用 HTTPS 和 JWT 保护 API 接口。
- 对文件路径和模块调用进行权限验证。
---
## **4. 示例任务**
### 文件复制任务请求示例
#### 请求
```json
{
"method": "File.Copy",
"params": {
"source_path": "C:\\source\\file.txt",
"destination_path": "C:\\destination\\file.txt",
"overwrite": true
}
}
```
#### 响应
```json
{
"status": "success",
"message": "文件复制成功",
"data": {
"source_path": "C:\\source\\file.txt",
"destination_path": "C:\\destination\\file.txt",
"overwrite": true
},
"timestamp": "2024-04-28T12:00:00Z"
}
```