RPA开发最佳实践
一个设计良好的机器人能稳定运行数年;一个设计糟糕的机器人,维护成本比人工还高。
机器人设计原则
优秀的RPA机器人应遵循以下核心设计原则:
| 原则 | 说明 | 反例 |
|---|---|---|
| 单一职责 | 每个机器人只做一件事 | 一个机器人负责发票+报销+通知三件事 |
| 可配置化 | 路径、账号、规则用配置文件存储 | 把文件路径硬编码在脚本里 |
| 幂等性 | 重复执行结果相同,不产生副作用 | 每次运行都会重复创建记录 |
| 防御性编程 | 预设所有可能的失败场景 | 假设每一步都会成功 |
| 可观测性 | 每一步都有日志记录 | 出错后无法定位是哪一步失败的 |
| 最小权限 | 机器人账号只有必要的权限 | 使用管理员账号运行机器人 |
异常处理框架
graph TD
START[开始执行] --> TRY[尝试执行步骤]
TRY --> SUCCESS{成功?}
SUCCESS -->|是| NEXT[下一步骤]
SUCCESS -->|否| CATCH[捕获异常]
CATCH --> CLASSIFY{异常类型}
CLASSIFY -->|可重试| RETRY[等待后重试]
RETRY --> COUNT{重试次数}
COUNT -->|<3次| TRY
COUNT -->|≥3次| ESCALATE[升级处理]
CLASSIFY -->|业务异常| BIZHANDLE[业务逻辑处理]
CLASSIFY -->|系统异常| ESCALATE
ESCALATE --> NOTIFY[发送告警通知]
NOTIFY --> LOG[记录详细日志]
LOG --> STOP[停止当前任务]
NEXT --> END{全部完成?}
END -->|是| REPORT[生成执行报告]
END -->|否| TRY
style CATCH fill:#ffccbc,stroke:#bf360c,stroke-width:2px
style ESCALATE fill:#f8bbd0,stroke:#880e4f,stroke-width:2px
style REPORT fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
版本管理规范
RPA机器人代码必须纳入版本控制,建议使用Git + 以下分支策略:
| 分支 | 用途 | 规则 |
|---|---|---|
main | 生产环境版本 | 只接受来自release的合并,需审批 |
develop | 开发集成分支 | 日常开发合并到此分支 |
feature/xxx | 新功能开发 | 完成后合并到develop |
hotfix/xxx | 紧急生产修复 | 直接从main分支出,修复后合并回main和develop |
release/x.x | 发布准备分支 | UAT测试在此分支进行 |
版本号规则:主版本.次版本.补丁 — 例如 2.1.3
- 主版本:流程逻辑重大变更
- 次版本:新增功能或优化
- 补丁:Bug修复
测试策略
在机器人上线前,应完成三层测试:
graph LR
subgraph 测试金字塔
UNIT[单元测试\n每个模块单独测试\n占70%]
INTEGRATION[集成测试\n模块间交互测试\n占20%]
E2E[端到端测试\n完整流程测试\n占10%]
end
UNIT --> INTEGRATION --> E2E
测试用例设计要点:
| 测试类型 | 必测场景 |
|---|---|
| 正常路径 | 标准数据,预期全部成功 |
| 边界值 | 空数据、最大数据量、特殊字符 |
| 异常恢复 | 中途断网、目标系统超时、文件被锁 |
| 并发执行 | 多个机器人同时运行是否互相干扰 |
| 数据回滚 | 失败时数据是否回到初始状态 |
开发环境规范
项目目录结构示例:
invoice-bot/
├── config/
│ ├── dev.json # 开发环境配置
│ ├── uat.json # 测试环境配置
│ └── prod.json # 生产环境配置(不入库,从保险库获取)
├── src/
│ ├── main.xaml # 主流程
│ ├── modules/ # 子流程模块
│ └── helpers/ # 通用工具函数
├── tests/
│ ├── unit/ # 单元测试
│ └── e2e/ # 端到端测试用例
├── logs/ # 本地日志(不入库)
├── CHANGELOG.md # 版本变更记录
└── README.md # 部署和使用说明
实践检查清单
- [ ] 机器人账号已创建专用服务账号,权限最小化
- [ ] 所有路径、URL、凭证均通过配置文件或密钥管理工具读取,未硬编码
- [ ] 已实现完整的异常捕获逻辑,覆盖可重试/业务异常/系统异常三类
- [ ] 代码已提交Git仓库,分支策略已明确
- [ ] 已编写单元测试和端到端测试用例,覆盖正常路径和异常路径
- [ ] 已在测试环境通过完整UAT测试
- [ ] 已撰写README文档,包含部署步骤和常见问题排查
下一节:03-RPA运维与扩展 — 机器人上线后如何监控、调度,并从单个机器人扩展到RPA中心。