核心功能
- 任务管理 :通过配置文件定义任务组和任务参数,支持多任务并行执行
- 任务调度 :智能调度任务执行,监控任务状态,处理超时任务
- 自动化UI操作 :通过图像识别技术实现Windows应用程序的自动化操作
- 进程管理 :自动启动和终止应用程序进程
- 配置管理 :通过JSON配置文件管理任务参数和系统设置
整体架构
配置层
- 负责加载和管理配置文件
- 提供配置验证和访问接口
- 支持打包和未打包状态的配置文件加载
任务管理层
- 任务初始化和管理
- 任务调度和监控
- 异常任务修复
控制层
- 控制任务执行流程
- 协调各页面操作
- 处理异常情况
页面操作层
- 封装各页面的 UI 操作
- 提供页面元素定位和操作方法
- 通过图的数据结构及最短路径算法,实现页面间的导航
工具层 :
- 系统操作工具
- 文件操作工具
- Windows 操作工具
- 公共方法
## 核心模块
### 任务管理模块
- TaskManager :任务管理器,负责初始化任务处理器、添加任务、等待任务完成等。
- TaskPool :任务池,采用观察者模式,管理任务的添加、获取和通知。
- TaskHandler :任务处理器,作为观察者,负责执行具体的任务。
- TaskExec :任务执行抽象接口,定义了任务执行的基本方法。
- TaskExecutor :任务执行器,实现了具体的任务执行逻辑。
### 页面操作模块(PO设计模式)
- BasePage :页面基类,定义了页面的基本属性和方法。
- **Page :封装了各页的各种操作。
### 工具模块
- WinAction :窗口操作工具,提供了元素查找、鼠标点击等功能。
- PubMethod :公共方法,提供了页面加载检查等功能。
- SysUtil :系统工具,提供了进程管理等功能。
## 核心流程
### 项目启动流程
- 从 main.py 开始,初始化日志配置。
- 调用 PubMethod.init_direct_graph() 初始化有向图。
- 创建 TaskManager 实例并调用 task_exec() 方法。
### 任务管理流程
- TaskManager.task_exec() 方法首先杀掉旧进程。
- 初始化任务处理器,根据配置创建指定数量的 TaskHandler 实例。
- 添加任务到任务池。
- 等待所有任务执行完成。
### 任务执行流程
- TaskPool.add_task() 方法将任务添加到任务池并通知所有观察者。
- TaskHandler.update() 方法接收到任务后,启动线程执行任务。
- TaskHandler._execute_task() 方法根据配置的执行时间循环执行任务。
- TaskExecutor.exec_control() 方法执行具体的任务逻辑,包括启动程序、执行操作、关闭程序等。
### 页面操作流程
- TaskExecutor.start_program() 方法启动程序并执行一系列页面操作。
- 通过页面类的方法操作页面元素。
- 使用 WinAction 工具类查找元素并执行鼠标点击等操作。
- 使用 PubMethod 工具类检查页面加载是否成功。
## 设计模式
项目中使用了多种设计模式,包括:
- 观察者模式
- 单例模式
- 抽象工厂模式
# 数据结构算法
-‘图’数据结构来表达页面之间的关系
- 图的最短路径算法实现页面跳转
项目地址:https://gitee.com/robotzheng/w-tools-standard.git