From 03100cab0864ef3d4d5af1ff29774260aec9c331 Mon Sep 17 00:00:00 2001 From: fatsand Date: Thu, 19 Dec 2024 10:54:37 +0800 Subject: [PATCH] second commit --- JIAP_Sturct.md | 254 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 JIAP_Sturct.md diff --git a/JIAP_Sturct.md b/JIAP_Sturct.md new file mode 100644 index 0000000..f065c19 --- /dev/null +++ b/JIAP_Sturct.md @@ -0,0 +1,254 @@ +# 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" +} +```