255 lines
6.9 KiB
Markdown
255 lines
6.9 KiB
Markdown
|
# 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"
|
|||
|
}
|
|||
|
```
|