1. 网站地图
  2. 设为首页
  3. 关于我们


面向电力营销的RPA 系统平台的研究与实现

发布时间:2022-11-22 11:04
目录
致谢 I
摘要 III
Abstract V
目录 VII
图目录 XI
表目录 XV
1 绪论 1
1.1研究背景与意义 1
1.2国内外研究概况 2
1.3论文的主要工作 4
1.4论文组织结构 5
2相关技术介绍 9
2.1RPA 机器人流程自动化技术 9
2.1.1抓屏技术 9
2.1.2鼠标和键盘模拟技术 10
2.1.3其他自动化处理技术 11
2.2WWF 工作流技术 12
2.2.1工作流技术 12
222 WWF开发架构 12
2.3其他相关编程技术 13
2.3.1VBA 语言 13
2.3.2C# 语言 14
2.4本章小结 14
3系统需求分析与系统总体设计 15
3.1 系统需求分析 15
3.1.1功能需求分析 15
3.1.2非功能需求分析 18
3.2 系统总体设计 20
3.2.1系统设计原则 20
3.2.2系统架构设计 20
3.3 本章小结 22
4系统详细设计与实现 23
4.1 流程设计模块 23
4.1.1 元素拾取 23
4.1.2 流程搭建 29
4.1.3 流程调试 31
4.2 流程解析模块 33
4.2.1 流程拆解 33
4.2.2流程逻辑解析 34
4.3 流程执行模块 36
4.3.1 鼠标键盘操作模拟 36
4.3.2 元素操作 38
4.3.3 网页操作 41
4.3.4Office 操作 42
4.3.5 数据处理 45
4.3.6 网络连接 48
4.3.7 文件操作 50
4.4本章小结 54
5 系统测试 55
5.1测试概要 55
5.2功能测试 56
5.2.1 流程画布界面及功能测试 56
5.2.2 流程执行功能测试 58
5.3性能测试 72
5.3.1 流程操作响应性能测试 72
5.3.2 流程操作准确性测试 74
VIII
5.4本章小结 75
6 系统实施与应用效益分析 77
6.1 供用电合同自动生成 77
6.1.1 场景概述 77
6.1.2 流程搭建 78
6.2 企业有序用电自动化预警 81
6.2.1 场景概述 81
6.2.2 流程搭建 82
6.3 企业负荷管理自动化提醒 85
6.3.1 场景概述 85
6.3.2 流程搭建 87
6.4 疫情防控违规用电管理 90
6.4.1 场景概述 90
6.4.2 流程搭建 91
6.5 应用效益分析 94
6.6 本章小结 96
7 总结与展望 99
7.1 总结 99
7.2 展望 100
参考文献 101
图目录
图 3.1 RPA 系统平台用户用例图 15
图 3.2 系统总体架构图 21
图 4.1 元素拾取用例流程图 23
图 4.2 网页元素拾取方法用例流程图 25
图 4.3 元素对象 ER 图 26
图 4.4 目标元素的途径节点属性详细信息 28
图 4.5 目标元素节点路径图 29
图 4.6 流程搭建用例流程图 29
图 4.7 流程画布主画布 30
图 4.8 流程执行子画布 30
图 4.9 WWF 工作流服务调用架构图 31
图 4.10 流程调试断点设置功能 33
图 5.1 流程画布主画布流程框架搭建 56
图 5.2 流程画布子画布流程详细设计 57
图 5.3 鼠标模拟操作的设置界面 59
图 5.4 键盘模拟操作的设置界面 60
图 5.5 元素属性获取设置界面 61
图 5.6 元素属性设置界面 61
图 5.7 网页打开操作设置界面 63
图 5.8 网页关闭操作设置界面 63
图 5.9 Excel 文件创建/打开操作设置界面 64
图 5.10 Excel 文件保存操作设置界面 64
图 5.11 Excel 文件读取操作设置界面 65
图 5.12 Excel 文件写入操作设置界面 65
图 5.13 字符串提取操作设置界面 66
图 5.14 文本包含判断操作设置界面 67
图 5.15 文本替换操作设置界面 67
图 5.16 Http 请求发起操作设置界面 68
图 5.17 文件下载操作设置界面 69
图 5.18 文件读取操作设置界面 70
图 5.19 文件写入操作设置界面 70
图 5.20 文件复制操作设置界面 71
图 5.21 文件删除操作设置界面 71
图 6.1 供用电合同自动生成业务流程示意图 77
图 6.2 供用电合同自动生成 RPA 流程设计图 78
图 6.3 营销数智稽查云平台-高压合同续签待生成户号筛取 78
图 6.4 供用电合同待生成流程清单 79
图 6.5 营销业务系统合同内容抓取界面 79
图 6.6 供用电合同填写所需用户信息 80
图 6.7 供用电合同生成结果 81
图 6.8 企业有序用电自动化预警业务流程示意图 82
图 6.9 企业有序用电自动化预警 RPA 流程设计图 83
图 6.10 电力需求侧实时管理系统登录界面 83
图 6.11 电力需求侧实时管理系统主界面 84
图 6.12 电力需求侧实时管理系统负荷检测界面 84
图 6.13 电力需求侧实时管理系统用户符合详情 84
图 6.14 超限用户短信提醒 85
图 6.15 2021 年 11 月 1-9 日重点管控企业电量检测情况 86
图 6.16 各镇(街道、区)11 月 1 日至 11 月 26 日工业专变电量监测情况 86
图 6.17 企业负荷管理自动化提醒业务流程示意图 87
图 6.18 企业负荷管理自动化提醒 RPA 流程设计图 87
图 6.19 营销业务应用系统登录界面 88
图 6.20 电力用户用电信息采集系统用户信息查询界面 88
图 6.21 电力用户当月用电量详情 89
图 6.22 企业用户电量信息与负荷信息详细数据 89
图 6.23 重点管控企业电量情况监测表 90
XII
图 6.24 疫情防控违规用电管理业务流程示意图 91
图 6.25 疫情防控违规用电管理 RPA 流程设计图 91
图 6.26 营销业务应用系统登录界面 92
图 6.27 电力用户用电信息采集系统统计查询界面 92
图 6.28 电力用户用电信息采集系统疫情管控低压用户查询界面 93
图 6.29 电力用户用电信息采集系统统计查询子界面 93
图 6.30 电力用户用电信息采集系统疫情管控专变用户查询界面 94
图 6.31 参与访谈客户经理年龄分布 95
表目录
表 3.1 流程设计模块需求描述表 16
表 3.2 流程解析模块功能需求描述表 17
表 3.3 流程执行模块功能需求描述表 18
表 4.1 WWF 应用服务功能表 32
表 4.2 不同格式文件功能作用描述表 34
表 4.3 元素标志符对应表 39
表 4.4 元素属性值设置标志符对应表 40
表 5.1 测试硬件环境 55
表 5.2 测试软件环境 55
表 5.3 系统测试内容 56
表 5.4 流程主画布测试用例 57
表 5.5 流程子画布测试用例 58
表 5.6 鼠标模拟操作测试用例 59
表 5.7 键盘模拟操作测试用例 60
表 5.8 元素操作测试用例 62
表 5.9 网页操作测试用例 63
表 5.10 Office 操作测试用例 66
表 5.11 数据处理操作测试用例 68
表 5.12 网络操作测试用例 69
表 5.13 文件操作测试用例 72
表 5.14 系统操作响应性能测试结果 73
表 5.15 系统操作准确性测试结果 74
表 6.1 系统使用感受、年龄、编程经历情况 96
1 绪论
1.1研究背景与意义
过去20 年,随着计算机硬件成本的逐步降低,个人办公电脑和软件的迅速发展和 普及,以微软Windows为代表的个人办公电脑(PC)系统的应用普及,以及近年来以 Linux为内核的企业服务器系统的发展,大量的日常办公事务摆脱了原有的依赖纸质文 档撰写和传递的方式,改为在各种办公电脑上完成操作,并通过互联网进行传递,全球 发达经济体 95% 以上的机构和企业的日常办公已经完成了数字化改造[1][2] 。
在实际生产过程中,公司雇员经常需要依托企业数字系统、Office软件等信息化办 公工具开展日常工作,存在着大量的规则明确、枯燥单一、基于流程的重复性工作。其 中部分工作还会涉及多套系统平台与办公软件,相关的业务数据来自于不同系统、不同 层级、不同部门,数据的流动与使用往往需要依赖人工通过手工查询、提取粘贴的方式 进行,存在明确的数据壁垒,衔接流通性较差[3]。
以电网公司为例,电网公司“互联网+电力营销”的发展建设带来了营销服务的大 范围转型升级,为工作开展、业务办理带来了极大的便利,一定程度上提升了员工的工 作效率与用户的办电满意度与获得感[4],但当前仍存在一些突出问题或可进一步提升的 空间。电网公司日常业务涉及电费、业扩、客户服务、计量等专业,业务的开展依赖于 营销业务系统、用电采集系统、稽查系统、供电服务调度平台等系统平台[5][6],存在大 量逻辑简单、机械重复、附加值低、跨系统操作的业务工作,效率问题突出,为公司各 部门员工带来了新的工作痛点与诉求:
(1) 存在大量需要高频率重复操作的业务处理场景,机械重复工作的办公质量极大 地依赖员工的注意力集中程度,例如按照明确规则要求的批量录入、批量工单审核或者 重复信息、重复工单的发送等;
(2) 存在大量需要跨业务系统的操作的场景,平台系统间底层未实现集成,跨系统 业务虽然有固定的规则户逻辑,但是操作普遍复杂,极大地影响了员工的工作效率与准 确率,例如从供电服务指挥系统、 95598系统、电力营销系统等多个系统中提取相应指 标生成运行报告;
(3)存在大量个性化的数据汇总统计场景,涉及大量的数据查询、计算、比对工作 人工作业效率不高,产生人为差错的可能性高,主要包括各基层供电局单位根据自己的 考核或管理要求,需要长期或阶段生成的日报、周报、月报或其他部门及政府需要的临 时数据统计表;
(4)存在大量监控预警类的场景,需要人员长时间、不间断的查询监控的各类考核 或业务运行指标,长期从事此类工作,容易导致员工创新思维弱化,将大量的精力花费 在了低附加值的工作,极大影响公司整体的创造力与生命力。
传统解决上述问题往往通过开展系统改造的方式,在平台底层实现数据打通或功能 开发,然而部分系统使用年限较长对其再次开发维护存在困难,不同系统平台间数据接 口不统一等问题极大地阻碍了通过系统集成开发的方式完成业务功能的优化。
RPA(RoboticProcess Automation,机器流程自动化)技术是指通过元素的抓取、工作 流、操作函数定义等方式,实现鼠标键盘操作的模拟,按流程定义自动执行任务,代替 辅助人工完成操作I7】。RPA技术于现有系统集成开发模式不同,不需要从底层打通数据 接口,从系统集成的方式实现多个系统间的协同办公,而是通过系统元素抓取与预先编 制好的操作流程实现原有业务工作的自动化[8]。RPA可以将原本依赖人工的工作变为机 器自动执行,并且是7*24小时不间断执行,在保持企业信息系统安全性的基础上,将有 助于公司提高效率, 降低生产成本, 实现数字劳动力取代人工,实现企业对既有的商业模 式、经营手段、公司价值观等进行革新和再造[1][9][10]。
1.2国内外研究概况
随着20世纪90年代硅谷半导体产业的繁荣发展,以及硬件生产成本的下降,带动 了电子办公设备的广泛应用,而 20 世纪 90 年代软件产业的标志性事件, 就是微软公司 的DOS与Windows操作系统先后出现。DOS和Windows操作系统支持以命令行的方 式逐条执行任务,因为部分流程包括若干个相互嵌套依存的任务,为方便流程的执行 批处理脚本(Batch Script)技术应运而生[11]。代码编写生成的.bat等批处理脚本,通常 用于执行定时开关系统、自动化运维、日志处理、文档的定时复制、文件的移动或删除 等固定动作。一般采用手动或按计划任务启动的机制,可提供按日期、日历、周期等多 种方式触发规则。这些程序严格来看并不属于典型的RPA程序,只是自动化处理的雏
2
形。批处理脚本的缺陷是构造简单,缺乏处理复杂任务的能力,例如,很难对文档的内 容进行理解和分析。另外,难以应对流程处理中的异常情况,不够灵活,针对性不强 纯编码的开发方式门槛高,多由IT人员进行,又因为IT团队对业务场景的理解较弱, 所以批处理流程大部分都应用于偏计算机底层的自动化运维(SysOps)类流程,很少会 触及业务经营流程[12]。
VBA(Visual Basic for Applications)是经典的宏语言应用。宏(英文为Macro)将 若干的小指令结合在一块,由解释器或编译器加以解读,将小指令或过程转换成执行命 令卿网。VBA 一般用来拓展Windows应用程序能力,尤其针对微软Office应用,可以 非常简单的把重复性的操作自动化。和批处理脚本比较,VBA的主要优势在于使用的可 视化图形程序设计界面和面向对象的开发理念, 开发效率相比于批处理脚本得到了大幅 度提升,其所开发的流程也比传统的批处理要复杂得多。
Office2000 之后的版本在宏编程方面提供了一个非常好的创新功能,即“宏录制” 功能,该功能的宗旨是降低宏脚本的编写门槛。之前,VBA脚本的编写需要很专业的 计算机编程能力,很多功能(如报表文档修改、誊写的场景)如果直接使用VBA编写 程序则会非常复杂,开发门槛比较高。“宏录制”功能将手工操作的过程逐一记录下来 变成一条条可执行的脚本,然后自动重复运行。现代RPA因为受该功能的启发也集成 了录制功能。
这个阶段,另一项重要的里程碑事件是业务流程管理(Business Process Management, BPM)的提出。著名的管理学专家Michael Hammer与James Champy在20世纪90年间 的成名之作《公司再造》(Reengineeringthe Corporation)中首先提出了 BPM的概念[15], 并在欧美商界出现了一种重新设计公司流程处理过程的新潮流——利用分析、建模以及 不断优化公司流程的实践方法来处理业务难题,以协助公司达成财务目标。BPM以”事 务+分析”的视角,来连接公司内部的人员、流程、信息资源、业务等,对公司内部原来的 运营管控方法和流转过程加以重构与优化,并利用BPM流程图进行透视管控,将BPM 与公司内部的办公自动化管理系统(0A)、企业管理资讯系统(MIS)、公司资源规划系统 (ERP)都有密切协同。不难看出,BPM还只是对公司的流程进行梳理和优化,与智能化、 机器人等并不相干,但是BPM对RPA的后续运用起到了铺垫作用,尤其是RPA实施 环节的咨询和流程梳理,都是在BPM所铺下的基石上落地的凹“]。
近5年RPA自动化技术与自动化服务行业发展势头迅猛,由英国的跨国软件企业
Blue Prism 开创和生产的企业过程管理自动应用软件, 将取代传统低收益、高风险、手 动数据录入与处理的传统人工工作方式, 为企业提供管理业务流程的全数字化劳动力 服务, 可以和现有应用相似的方法和企业信息系统实现人机交互, 用户界面将更加友好 化[17][18];美国加利福尼亚的 RPA 软件开发商 Automation Anywhere 发布了 RPA 产品 Automation Anywhere Enterprise 把原有的 RPA 技术与自然语言信息处理和读取非结构 化数据等因素结合,使得自动化软件能够端对端实现业务流程[⑺问;UiPath还研发了智 能自动化 (RPA) 平台, 将 RPA 作为数字员工进行运营——根据用户界面, 使软件机器人 执行传统人工工作[19][20][2];中国公司艺赛旗于2011年研发并提供机器人流程自动化产 品及服务,向用户提供了公司的企业信息跨平台操作集成、云安全控制、企业大数据分 析、客户行为采集数据分析、业务行为录屏审计、服务行为科学计算可视化质检、企业 柜面交易监测系统和数据分析等服务[1]。
虽然 RPA 技术在世界范围内已有了一些工程应用,但目前在国内 RPA 技术的相关 研究与应用仍然较少,本文将通过自行构建RPA系统平台,探索RPA技术在电力行业 的自动化应用。
1.3论文的主要工作
通过整理上述RPA机器人流程自动化技术发展历史与研究现状以及对电网公司开 展业务调研后发现,一方面,电网公司日常业务开展依托于营销业务系统、用电采集系 统、稽查系统、供电服务调度平台等系统平台,信息化程度很高,而由于业务系统众多 部分系统使用年限较长,针对新出现的业务需求往往无法及时做出更新响应,在软件系 统层面电网公司具备完备的RPA流程自动化改造基础与需求。另一方面,电网公司职 员通过业务信息系统开展日常工作,其中存在大量逻辑简单、机械重复、附加值低、跨 系统操作的业务工作,效率问题突出,在业务层面电网公司具备明确的RPA流程自动 化改造需求。根据RPA机器人流程自动化技术的技术特征与浙江省国网公司的业务特 点,本文设计了一款面向电力营销业务的RPA系统平台,在搭建RPA机器人流程自动 化系统平台的基础上,完成了供用电合同自动生成、企业有序用电自动化预警、企业负 荷管理自动化提醒、疫情防控违规用电管理等业务场景的实施,提升了自动化作业水平 与部分业务开展的工作效率。本文的主要工作如下:
4
(1)研究并分析了 RPA 机器人流程自动化的背景与现实意义,分析了电网公司开展 RPA 机器人流程自动化改造的需求与潜力,认为开发并实施面向电力营销业务的 RPA 系统平台,可以帮助电网公司提高效率,降低生产成本, 实现以数字劳动力代替机器人, 对企业已有的模式、经营手段、公司价值观等进行革新和再造。
(2)开展了面向电力营销业务的 RPA 系统平台的系统需求分析与系统总体设计,从 用户使用、程序运行、系统运维等维度出发,明确了系统的功能性需求与非功能性需求 根据系统需求分析结果研究系统架构,对系统开展了总体设计,明确了系统设计开发的 框架与流程,确保系统架构清晰合理,有效支撑系统开发与实现。
(3)开展了面向电力营销业务的 RPA 系统平台的系统研发,系统使用分层架构,基 于 WPF、WWF 等通用开发框架,详细规划并进行了系统研发,实现了流程设计模块 流程解析模块与流程执行模块三大模块,并通过 MySQL、Redis 进行数据存储,达到了 系统整体规划的研发要求,系统各模块责任划分明确,有效支撑系统功能要求。
(4)开展了面向电力营销业务的 RPA 系统平台的系统测试,包括功能测试与性能 测试。功能测试主要包括包括流程画布界面及功能测试与流程执行功能测试,性能测试 包括流程操作响应性能测试与流程操作准确性测试,验证了本文设计系统平台的实用性 与可用性。
(5)根据浙江国网公司业务痛点与实施需求,开展了面向电力营销业务的 RPA 系 统平台的应用实施工作。针对供用电合同自动生成、企业有序用电自动化预警、企业负 荷管理自动化提醒、疫情防控违规用电管理四个业务场景,梳理业务流程,搭建 RPA 自 动化作业流程,在生产环境中完成部署实施,投入日常使用,在实际生产中验证系统的 功能与性能。
(6)根据面向电力营销业务的 RPA 系统平台的实施应用情况,开展了系统效益分 析,对在需求分析、系统设计、开发、实施中的工作进行了进行了总结,并对 RPA 技术 的应用、发展与研究提出了建议与改进方向。
1.4论文组织结构
本文内容安排如下:
第一章内容为绪论。首先总结现阶段企业数字化建设完善信息化覆盖率高,但存在
大量由于数字化建设产生的逻辑简单、机械重复、附加值低、跨系统操作的业务工作 具有巨大的机器人流程自动化改造前景。其次列举了 RPA技术的发展历史与国内外研 究成果,分析了现有研究、产业化工作存在的不足与电力行业开展机器人流程自动化改 造的需求,在此基础上提出了本论文的研究方向:面向电力营销业务的RPA系统平台 的研究与实现。最后介绍了本文的主要工作内容和本文的组织结构安排。
第二章内容为相关技术介绍。重点对本文系统开发中所涉及的RPA技术与其在系 统研发及实现过程中的其他关键技术加以介绍,依次介绍了 RPA机器人流程自动化技 术、WWF工作流技术以及其他相关编程技术。RPA机器人流程自动化技术方面,主要 介绍了抓屏技术、鼠标键盘模拟技术和其他自动化处理技术。在WWF工作流技术方面, 阐述了工作流技术在RPA系统平台上的运用情况和WWF技术架构。其他相关编程技 术方面,主要介绍了 VBA语言技术和C#语言技术。
第三章内容为系统需求分析与系统总体设计。功能性需求从流程设计、流程解析与 流程执行三方面进行说明。非功能性需求基于易用性、稳定性、安全性、兼容性、可维 护性与拓展性六方面。系统总体设计基于分层与模块化架构开展,对系统开发开展了总 体设计。
第四章内容为系统详细设计与实现。详细设计了流程设计模块、流程解析模块与流 程执行模块三大模块,流程设计模块实现了元素拾取、流程搭建、流程调试三个具体功 能,流程解析模块实现了流程拆解、流程逻辑解析编译两个具体功能,流程执行模块实 现了鼠标键盘操作模拟、元素操作、 Office 操作等七大具体功能。
第五章内容为系统测试。针对本文研发的系统平台进行了系统测试,从功能与性能 两个角度进行了详细的阐述。功能测试主要包括包括流程画布界面及功能测试与流程执 行功能测试,性能测试包括流程操作响应性能测试与流程操作准确性测试。
第六章内容为系统实施与应用效益分析。针对电网公司供用电合同自动生成、企业 有序用电自动化预警、企业负荷管理自动化提醒、疫情防控违规用电管理四个应用场景 开展了系统应用实施,从业务背景痛点与流程搭建两个方面对实施过程展开了详细的阐 述,并开展了效益分析。
第七章内容为总结与展望。介绍了本文设计的RPA系统平台在电网公司四个典型 场景实施试点之后的应用成效,包含了本文所述系统对电网公司带来的效益,展现了本
6
文工作具有的应用前景,对全文的具体工作进行了总结,并在最后对RPA技术的应用、 发展与研究提出了建议与改进方向。
2相关技术介绍
2.1RPA 机器人流程自动化技术
RPA 最基础的技术就是抓屏、模拟鼠标和键盘。工作流技术起到了 RPA 自动化处 理流程的串接和管理的作用。另外,还有很多辅助的自动化技术一起帮助 RPA 来实现 流程的自动化处理。
2.1.1抓屏技术
为了模拟人工在应用程序上的操作,RPA就必须要与屏幕上各种窗口、按钮、下拉 列表等不同要素进行交互,抓屏技术即通过终端或显示器来直接抓取界面中的数据,而 无须访问底层数据库或者接口,这种技术适用于不能开放或访问的遗留系统[21]。
根据信息抓取的技术实现方式划分,抓屏技术叉可以分为:依据对象句柄元素抓取 依据网页标签抓取、依据图像抓取、利用 OCR 识别、依据坐标位置抓取以及其他特别 类型的抓取方式[2][3][12]。
(1)依据对象句柄元素实现抓取。句柄是指在操作系统存储器里指向特定结构体的 指针,句柄标志着应用中各种形式的对象实例, 如视窗、按键、图标、滑动条、输入输出 装置、控件和文字等。同时, Windows 也提供了相关的 API 来获取这些窗口句柄,如 FindWindow (获取窗口句柄)、EnumWindows 和 EnumChildWindows (获取所有顶层窗 口以及它们的子窗口)等函数[22] 。
(2)依据网页标签实现抓取。大多数Web网页源代码都是通过HTML语言编写的, 页面中的数据通过各种HTML标签所标识,抓取Web网页中的数据,最重要的就是在 页面中准确地定位该数据的位置。通常采用的方式是通过关键值或特征值来查询Web 页面中的某个元素,如 ID、 Name、 Tag、 Link、 DOM、 XPath、 CssSelector 等。这些特 征值必须唯一,并保持不变。XPath是一种元素定位语言,能够把网页上元素的位置转 化为XPath的表示方式;;CSS(Cascading Style Sheets)是一种用来描述HTML和XML 文档表现的专用语言。CssSelector可以为网页中的元素绑定属性,这些值通常是稳定且 唯一的[23]。
(3)利用图像对比技术实现抓取。利用图像抓取技术的主要原理就是预先保存好需 要查询的某对象的图像,当机器人在桌面窗口在询这个对象时,根据预存的该对象的图 像对整个窗口的图像做查询和比对。如果匹配成功,机器人就可以获取该图像的坐标位 置,进行下一步操作。通常,为了提高图像查询的稳定性,RPA软件中可预先设置对象 图像的比对范围、对比模式、重试次数、精度要求等参数。图像抓取方式的缺点是:查 询速度比较慢,远低于直接按照属性查询对象的方式的速度;如果页面中出现两个图像 一致的控件对象,或者想获取的对象被隐藏或没有显示在图像中,那么就无法做出准确 的抓取了。
(4)借助光学字符识别技术实现抓取。光学字符识别(Optical Character Recognition, OCR)技术是扫描识别整个屏幕图像,获取所有的文字信息[24],然后在其中查询关键 字,确定坐标位置后再做其他处理动作。OCR还可以用来识别某个页面对象中的文字 信息,如利用标准的抓取方式获得了某个对象,却无法获得对象中所显示的文字内容 OCR便可以通过该对象所对应的图像信息来识别其中的文字。OCR识别方式的缺点是: 只能对图像已经展示出来的文字进行识别,而对表格中未显示完整的信息就无法识别 另外,受制于界面展示语言的问题,会出现OCR识别率偏低,而无法进行后续处理的 情况[12]。
(5)依据界面坐标位置实现抓取。RPA软件通常也会提供依据界面坐标位置来获取 界面要素的功能,但由于每次应用界面开启位置的不确定性和界面的低分辨率等向题 目前RPA技术实现中已经很少采用这种方式。但如果出现了前面所谈到的各种技术都 无法实现,且客户端程序的界面位置不能随意调整,大小也不能缩放的情况,也可以采 用这种方式。在使用坐标位置定位某个对象时,可以通过以下两种技巧提高识别的稳定 性。一种是采用相对坐标的计算方法,先通过其他技术找到另一个对象的绝对位置,然 后计算这个对象与目标对象之间的偏移量,最终计算出目标对象的绝对坐标位置。另一 种是通过预先调整程序窗口位置的方式,窗口的位置固定后对象位置也就固定了 [1]。
2.1.2 鼠标和键盘模拟技术
RPA 一项重要的技术就是模拟人工对鼠标和键盘的一些操作,比如单击、双击、右 击、拖拽等鼠标操作,或者键盘输入、组合键等键盘操作。
从原理上讲,当用户按下某一个键盘的按键时,键盘中的芯片就会检查到这个动作
10
并将扫描码返回到原电脑。最后,由键盘驱动将扫描码转换成虚拟码。同一个按键扫描 码会有不同,但虚拟码均一致,操作系统可以先将按键数据设置在队列消息中, 再传递 到当前的活动窗口。RPA有三种模拟技术[均如旳。
第一种是应用级模式,可以模拟键盘消息发给目标应用程序,例如利用Windows中 提供的 API 函数,如 SendMessage 和 PostMessage。
第二种是系统级模拟,可以模拟全局键盘消息发送给所有程序的窗口,如利用 API 函数 keybd event 或者全局钩子函数 HOOK 来模拟键盘消息。
第三种是驱动级模拟,能够直接读取键盘硬件接口,绕过了应用层和操作系统层 直接与物理硬件进行对话。鼠标操作的基本方法是使用全局函数,必须给定横纵坐标 才能确定鼠标的所有动作,如MOUSEEVENTF_MOVE (移动鼠标)、MOUSEEVENTF LEFTDOWN (按下鼠标左键)和MOUSEEVENTF LEFTUP (放开鼠标左键)等。
2.1.3 其他自动化处理技术
( 1) Office 自动化
Excel、Word、Outlook等常用的Office软件都会对外提供可用的API函数,用于访 向API功能。RPA可以通过这些API实现Office系列软件一些操作的自动化处理,如 Excel 表中的过滤、排序、透视图制作等。另外一种方式是在 Office 软件的可扩展加载 项中增加专门的自动化插件,解决Office嵌人式的自动化处理。
( 2)对 Windows 原生应用的自动化
RPA可以通过Windows的API实现对文件夹和文件的自动化处理,如新建文件夹、 修改文件名称、复制新文件等;也可以实现对Windows窗口操作的自动化,如最小化、 最大化等;还可以实现活动目录(Active Directory )的自动化处理,如创建组、修改用户 等[22]。
( 3 )电子邮件自动化
RPA还可以使用对电子邮件的API,如SMTP、POP3、IMAP来进行对邮件的自动 收发管理,如接收电子邮件、删除电子邮件等,此外还可以通过对Outlook邮件的API 或者在邮件客户端中,通过标准抓取方法来接收电子邮件。
2.2WWF 工作流技术
2.2.1工作流技术
工作流控制(WorkFlow)技术是基于流程控制(Business Process Management, BPM) 理论和实践产生的技术解决方案,包含工作流设计、工作流运行和工作流监控三个部 分[27]°RPA需要操作一个或多个界面,在每个界面又须处理一些数据项,被视为一种微 观层面的工作流处理。所以RPA须具有工作流技术的相关特征,如流程触发、流程嵌 套、分支(IFELSE),循环、暂停、取消、延时和错误处理等,同时在流程中须支持常 量、变量的定义。RPA通常提供专门的工作流设计工具来帮助用户以图形化方式定义工 作流,支持以掩拽控件的方式快速组装业务流程,以录制的方式自动生成初始的流程记 录,并提供历史版本比对的功能。RPA内置调试器和模拟器,用于流程的测试,并通过 日志记录流程的运行过程[28]。
顺序工作流是许多有组织的流程步骤集合。通常情况下,步骤是逐步进行的。可能 有的步骤必须等到一些事件发生后才可以进行。另一类工作流形式是状态机工作流,状 态机工作流建立了一系列状态。工作流程从初始工作状态出发, 直到最终阶段为止。一 般情形下, 状态机工作流对事件进行反应, 并根据情况发生变化。
工作流控制的另一主要部分是流程控制。流程监控是指能够图形化的对业务流程 进行配置,并且对业务流程状态加以监控。配置功能包括流程何时启动、何时触发事件 哪些设备可以执行、流程之间的关联关系等。监控信息包含流程运行情况、各个环节的 时间开销、运行的业务量、执行成功或失败的情况等。实时监控的难度相对较大,但员 工可以通过跟踪流程判断实际发生的情况。
2.2.2 WWF 开发架构
微软工作流开发架构( Windows Workflow Foundation, WWF )是一个广泛且通用的工 作流架构,发布于微软的.net框架,用于在微软相关的平台上进行工作流的开发[绚凹㈤]。 WWF不仅为各项工作流程问题解决提供策略的同时,还提供了各种API和开发工具, 可以研发并实施工作流应用,也为.NET开发者打造一套全新的工作流规范程序设计套 件,开发者可不再考虑工作流程底层逻辑,直接建立工作流方案[31]。
12
2.3其他相关编程技术
2.3.1VBA 语言
VB应用程序编程语言(Visual Basic for Applications, VBA)是微软集团推出的基于 微软程序设计语言(Visual Basic for Windows, VB)全新标准宏编程语言,是VB语言的 子集,它引入了面向对象的设计理念与方法,具备高级语言的设计特征。VBA是一个 非常全面的编程语言,进行函数或方法的封装,可以通过将宏记录器记录用户的操作并 转化为程序代码,便于用户将程序操作转化为程序代码,实现工作自动化[13] 。
VBA源于VB,拥有相似的语法结构和相同的使用环境。但VB语言是独立的开发 语言,拥有自己的运行、编辑、链接环境和机制,不依赖于其他的任何程序。VBA的使 用需要依赖于其他的软件,并不具备独立运行的能力,基于VBA语言编写的程序仅支 持通过Word、Excel等称Office主应用程序调用运行。VBA还能够使用编写模块实现 对源程序的特定需求,并在各Office应用程序中共享使用,如Word、Excel、Access等。 VBA可以与主程序共享内存空间,使之与主程序间的通信非常的简单高效,因此基于 VBA的应用程序比基于C语言的程序执行速度要快很多[32]。
基于Excel、Word等Offic主程序VBA语言可以帮助用户完成基于.NET框架程序 功能的自定义拓展,实现日常工作的自动化。例如,对Excel表格进行查询、计算、复 制等操作均可通过VBA语言实现自动化。同时,VBA语言也能够在Office的所有应用 中实现资源共享,例如,Ecxel2007的VBA程序可以再不同版本的Office其他程序中进 行迁移使用。VBA语言可以让基于Office的跟多复杂重复工作简单化、流程化,减少 人力支出,提升办公效率[]。
在开发效率方面,VBA语言除了采取面向对象的程序开发思路提升程序设计可用 性以外,VBA代码具备录制功能,通过对人工操作的录制直接生成VBA程序代码,大 幅降低了语言使用门槛并提升了语言编写效率。
在本文设计的 RPA 流程作业自动化系统平台中,涉及到了 Word、 Excel 等 Office 应 用程序的自动化操作,VBA是基于程序底层实现的Offce软件自动化,具有较快的处理 速度与较强的稳定性,是完成Office应用程序自动化的关键工具。
2.3.2C# 语言
C# 是由 C 程序设计语句和 C++ 程序设计语句派生而成,是由微软研究院 Anders Hejlsberg 所设计的一种全新面向对象的编程语句,它承袭了 C++、VB、Java 等现代程 式编写语句的强大特性,并具有 C 语句的结构特点,同时具有了面向对象的程序特点 是微软.NETWindows网络架构的基础主角,通过C#可以完成基于MICROSOFT .NET 平台应用程序的编写,它除了具备与单一继承、界面、Java相似语法结构等特点外,它 支持COM (组件对象模型)直接集成的[33]。
C#具有强大的面向对象程序设计能力,通过C#可以完成大型商业程序、系统级应 用程序等软件系统的服务组件构建,由C#搭建的XML网络服务支持各种语言在所有 操作系统上通过INTERNET进行调用。C#语言使用.NET框架的类库将对象模型通过 Internet进行了重新设定,并且由于C#不能使用指针任意地访问,内存空间将会更加的 健壮。C#摒弃了 C、C++等现代编程语言的某些复杂特征,也没有宏和模块结构,不支 持多重继承,同样减少了在类层次结构中因多继承而产生的结构风险。
C#语言融合了 C++高效运行与VB语言的可视化操作编辑,并自带了数据操作、 文件操作、数据库操作等大量类库,RPA流程作业自动化系统平台中的文件操作、字符 串操作、系统时间操作等大量功能均是通过C#语言实现,是本文系统开发所用的重要 语言工具。
2.4本章小结
本章介绍了论文涉及的相关技术。第一节主要介绍了 RPA机器人流程自动化技术, 从抓屏技术、鼠标和键盘模拟技术和其他自动化处理技术三个方面阐述了 RPA机器人 流程自动化技术,其中,抓屏技术用于识别、抓取屏幕中的可操作元素,鼠标和键盘模 拟技术用于模拟人工对鼠标与键盘进行操作,其他自动化技术主要涉及Office自动化、 Windows原生软件自动化以及电子邮件自动化。第二节介绍了 RPA机器人流程自动化 平台所用到的WWF工作流技术。第三节介绍了 RPA机器人流程自动化系统开发过程 中涉及的重要编程语言。 14
3系统需求分析与系统总体设计
3.1系统需求分析
3.1.1 功能需求分析
用户在使用该系统平台实现业务流程自动化过程中,借助流程设计模块搭建业务流 程、编辑业务操作、调试运行流程,当自动化工作流程构建完成后,通过运行流程文件 实现业务工作的自动化[3]。该系统平台主要分为流程设计模块、流程解析模块、流程执 行模块三大部分,流程设计模块主要承担流程的搭建与调试,是与用户直接进行交互的 部分,流程解析模块用于流程文件的拆解、流程逻辑的解析,是系统平台的分析引擎 流程执行模块是流程操作的具体执行者,负责直接与操作系统进行交互,模拟人工进行 业务操作[34]。具体地,本文设计的 RPA 系统平台用户用例,由图 3.1所示。
 
图 3.1 RPA 系统平台用户用例图
 
如图 3.1所示,用户根据具体业务收集与分析业务需求与业务痛点,规划设计出合 适的业务流程,借助流程设计模块创建流程文件,通过拖拽流程块、编写流程操作的方 式,搭建业务流程框架与详细定义流程操作;流程解析模块将流程文件拆解为子流程 块,并对各子流程块进行逻辑语法与执行语句的解析,解析为具体的流程执行逻辑与操 作指令;流程执行模块将流程解析模块所得的执行逻辑与操作指令转化为对操作系统的 具体操作,从而实现业务流程的自动化。
(1)流程设计模块功能需求
流程设计模块主要包含三个具体功能:元素拾取、流程搭建、流程调试。每部分的
功能需求具体描述如下:(1)元素拾取:用于获取屏幕上各种窗口、按钮、下拉列表等不 同对象的元素信息,在流程执行中可直接对拾取后的元素进行操作;(2)流程搭建:支 持基于拖拉拽的可视化流程框架搭建,提供元素获取、键鼠操作、元素操作、Office操 作、网页操作等流程执行器操作方法的调用接口,是进行流程设计的主要单元;(3)流 程调试:对搭建流程提供分步调试功能,便于用户进行错误排查与流程优化。流程设计 器具体功能需求如表 3.1所示。
表3.1 流程设计模块需求描述表
功能名称 子功能名称 功能点描述
获取鼠标位置 读取鼠标光标所在绝对位置。
元素拾取 获取窗口句柄 获取鼠标所在位置标识对象或者项目
的标识符。
构建元素 Selector 构建目标对象的元素信息Selector,后 续通过 Selector 实现元素对象操作。
流程画布 提供流程框架搭建画布,利用流程块 通过拖拉拽的方式进行流程搭建。
流程搭建 对子流程块进行流程操作编辑,包括
流程操作编辑 键鼠操作、元素操作、网页操作、文
件操作等操作流程的编辑搭建。
流程运行 执行当前RPA流程,并返回运行结果
与运行日志。
流程调试 流程调试 逐步调试当前RPA流程,并返回当前 步骤运行结果与运行日志。
调试终止 手动终止正在运行中的 RPA 流程。
 
(2)流程解析模块功能需求
流程解析模块的核心是将人工搭建的业务流程解析为工作流,解析过程中涉及的功 能需求如下:(1)流程拆解:解析流程设计模块生成的 RPA 流程文件,逐步拆解流程文 件得到可执行操作流。(2)流程逻辑解析:对各操作语句间存在的条件判断逻辑、循环
16
逻辑进行解析,提升流程运行的连贯性。流程解析模块具体功能需求如表 3.2所示。
表3.2 流程解析模块功能需求描述表
功能名称 功能点描述
将 RPA 文件流程文件拆解为具有整
流程拆解
体逻辑功能的可执行子流程块。
对子流程块语句间存在的逻辑进行解 流程逻辑解析 析,包括顺序逻辑、判断逻辑、循环 逻辑。
对流程文件定义的流程操作进行解
操作语句解析
析,对系统执行的原子操作。
(3)流程执行模块功能需求
流程执行模块对电脑系统进行操控是 RPA 系统像人一样自动执行业务流程的关键 流程执行模块执行流程解析模块所得可执行操作流,直接对操作系统进行人工操作模 拟。流程执行模块的核心技术包括对鼠标键盘操作模拟、元素操作以及网页、Office等 各种自动化处理技术,通过上述技术可以是先人机交互操作的模拟,例如鼠标点击、敲 击键盘或者对文本进行操作,以实现业务流程的自动化。流程执行模块具体功能需求 如表 3.3所示。
表3.3 流程执行模块功能需求描述表
功能名称 功能点描述
鼠标键盘操作模拟 调用系统 API 实现鼠标键盘操作模拟,包括单双机、悬停、 发送快捷键等鼠标键盘操作。
元素操作 对界面元素提供完整体系操作指令,包括网页对象选择、
标元素选择、元素读取、循环相似元素等界面元素操作。
网页操作 为界面元素操作创建相应的网页环境,包括启动浏览器、 开标签页、网页跳转等功能。
Office 操作 对办公软件提供自动化操作。
数据处理 对原始数据进行加工处理。
网络操作 提供基础网络操作命令,模拟常见网络功能。
文件操作 提供基础文件操作指令
 
3.1.2 非功能需求分析
非功能性需求指在系统软件开发流程中,除了软件系统具体功能需求之外,关于软 件易用性、安全性、可维护性等方面提出的需求,以及在软件系统研发过程中需要遵守 的一些限制条件。非功能性需求是在软件符合实用性条件的情况下,对软件系统提出的 更高的要求,是为用户提供更优质使用体验的保证,也体现了软件系统研发设计人员的 技术水平。在面向电力营销业务的 RPA 系统平台中,非功能性需求主要包含以下几点
(1)易用性
该系统平台的使用者包含企业中不具备较强软件开发基础的普通员工,他们较为熟 悉自己专业领域知识,但程序编写能力弱。即使对该群体进行一定的程序开发培训,他 们仍不能使用生涩、复杂的系统平台进行熟练的开发。该系统平台应大幅降低流程编辑 开发流程,满足使用者可直接根据业务需求不基于任何变成语言框架进行 RPA 业务流 程设计开发。
(2)稳定性
该系统平台的稳定性与后续电网公司电力营销相关业务能否正常运行直接相关,因 此该系统平台的可靠性有着非常重大的意义。该系统平台应有强大的异常问题处理机制
18 
与容错能力,保证移植到该平台上的电力营销业务稳定运行,保证供电所工作的正常开 展。在正常业务压力下,该系统平台与平台设计的业务流程应能够持续稳定运行 24小 时及以上,同时对服务器、计算机等计算资源的稳定使用,处理器与内存的占用无无故 上升情况,该系统平台的处理能力无下降趋势。
(3)安全性
该系统平台不仅通过 RPA 机器人流程自动化技术自动执行规则明确、重复性高的 工作,还要保证自动化作业流程运行过程中的系统安全与数据安全,因此系统平台的安 全性是 RPA 系统平台的重要非功能性需求。该系统平台采用以下四方面来保障自动化 作业流程运行过程中的安全性:第一,为防止业务数据的对外泄露,对自动化作业流程 涉及的业务数据进行加密,并对运维人员设置为数据信息不可见。第二,通过加密技术 将所涉及第三方平台的账号、密码进行加密并存储,业务人员通过云变量的方式调用第 三方平台的账号密码信息。第三,自动化作业流程运行涉及到的敏感业务数据仅用于流 程运行,使用完毕后即刻销毁。第四,为避免敏感信息泄露,RPA设计器与RPA流程 控制中心通过网络安全传输协议进行通信。
(4)兼容性
电网公司系统内部所用的软件平台系统大多都不是基于同一种语言或同一种架构 开发的,所用不同的软件平台系统间所用的语言及架构存在巨大差异。该系统平台通过 模拟人在使用电脑时的鼠标和键盘操作来完成对现有软件平台系统操控,因此该系统平 台需实现面向不同操作系统与软件平台的流程自动化。该系统平台从软件架构和人工 智能技术组件两方面来完成跨平台跨系统的业务流程自动化,实现该系统平台的高兼容 性。
(5)可维护性
电网企业的业务拓展与进步,软件系统平台也会不同地更新换代。为保证该系统平 台的持续稳定运行,自动化作业流程需满足较高的可读性,便于后期运维人员理解初始 开发设计的流程程序,提高自动化作业流程的后期维护效率。该系统平台提供可视化流 程搭建与可视化流程调试的功能,极大地降低了后期维护与流程改造的门槛。
(6)拓展性
为确保该系统平台在今后的更新和迭代性,该系统平台必须具有较大的可扩展性 在现有系统功能的开发设计过程中应遵循高内聚低耦合的软件开发思想,保证系统平台 
各模块的高可重用性与移植性。
3.2系统总体设计
经过系统需求分析,明确了本文所设计开发的面向电力营销业务的 RPA 系统平台 的使用者大多业务经验丰富但变成基础相对薄弱,对系统使用的便捷性要求高。在进行 具体的开发工作之前,针对面向电力营销业务的 RPA 系统平台的体系框架做好整体规 划,并进行平台各项功能的具体研究和应用。
3.2.1 系统设计原则
在企业级系统开发过程中,软件系统平台的复杂度与鲁棒性是衡量企业级应用平台 的重要指标,大型的企业级系统平台复杂应用并不代表着系统各模块间的不正常耦合 在企业级系统平台开发中,开发前对系统平台应用的良好设计至关重要,系统平台的良 好设计基于对项目及业务应用的正确分解,在适当细粒度的基础上实现小而全的功能 模块,并通过调用的方式相互集成,形成一个整体完善的功能实现,并有效地规避系统 开发过于复杂与异常产生。本文所述系统平台设计遵循两个原则:系统层面进行分层设 计,层内功能设计进行模块化[35]。
分层设计是对系统平台功能纵向的层级划分,立足于系统平台整体,按照数据与调 用路径对系统平台进行整体规划,从而实现系统平台各调用间的层级稳定与快速拓展。
模块化对系统平台各层级功能的横向划分。模块是程序开发过程中数据定义、语句 等程序开发单元的集合,模块只提供单一简洁的功能,用于提升程序块的复用度,实现 尽可能少的代码量复用达到同等的开发效果。模组化是把尚未研发的软件分解成若干个 模块, 各个模块均可单独研发测试, 或在最后集中组装, 每个模块只完成独立功能, 各业 务模块之间保留一定独立性, 从而使程序的结构更加清晰, 易读、易掌握、易于检测和修 改[36][37]。
3.2.2 系统架构设计
本文所构建系统平台使用分层架构[38],分为设计层、解析层、执行层、中间件层 硬件及操作系统层 5 层,层间通过适配信息流进行通信,实现相互联系但又不过度耦
20
合。系统总体架构图如图 3.2所示。
 
 
数据处理 网络连接 文件操作
 
 
 
设计层为整个 RPA 系统平台的前端部分,解析层、执行层、中间件层、硬件及操作 系统层均为系统平台的后端部分,所有层均在个人终端办公电脑。
设计层为用户提供可视化操作界面,用于流程的编辑、调试与运行,包括元素拾取 流程画布及流程调试三大功能,元素拾取用于抓取定位界面操作元素,流程画布用于搭 建业务流程框架并针对抓取到的元素编辑具体操作,流程调试用于调试画布搭建的流程 框架及操作方法,将流程文件传入解析层进行下一步的流程拆解。
解析层用于解析用户通过 RPA 设计搭建的流程文件,将流程文件拆解为流程块,对 各操作语句间存在的条件及循环执行逻辑进行解析,并对流程逻辑中的操作语句进行解 析,得到可执行的原子操作,并将解析结果传入执行层进行对应具体操作。
执行层直接执行解析层所得的运行逻辑与操作,操作流行包括鼠标键盘操作模拟 元素操作、网页操作、Office操作、数据处理、网络连接及文件操作。
中间件层设计层、解析层、执行层的运行依赖于中间件层,中间层提供了系统平台 运行所需的功能套件包括MySQL、Redis、WWF及WPF。其中,MySQL用于存储流程 
文件地址、用户设置等结构化数据[39], Redis用于存储自动化流程执行过程中所涉及的 缓存数据[40], WWF用于实现流程自动化过程中所涉及的工作流操作[30], WPF用于实 现流程设计过程中所使用的流程画布等可视化设计界面的构建[41]。
硬件及操作系统层为该系统平台所涉及的操作系统、服务器主机等支撑套件,本系 统平台只支持 Windows 操作系统的流程自动化实现。
3.3 本章小结
本文阐述了系统需求分析与系统总体设计。第一节对 RPA 系统平台的功能需求进 行了详细梳理,功能性需求从流程设计、流程解析与流程执行三方面加以阐述,非功能 性需求从易用性、稳定性、安全性、兼容性、可维护性与拓展性六方面展开。第二节对 RPA 系统平台的系统架构设计进行了介绍。
22
4系统详细设计与实现
4.1流程设计模块
流程设计模块包含元素拾取、流程画布、流程调试三大功能,用于自动化工作流程 的可视化搭建、编辑与调试。
4.1.1元素拾取
(1)元素拾取流程 该系统平台对界面元素的拾取包括系统原生界面、第三方程序界面和浏览器界面 系统原生界面与第三方程序界面包括基于 Win32、C#、Java 的各类平台软件,如 Windows 系统文件、Office与WPS办公软件、数据库软件等。对系统原生界面元素的拾取通过 Windows API 等接口函数,对第三方程序界面元素的拾取通过判定 UI 框架而采取不同 的元素拾取方法。具体元素抓取用例图如图 4.1所示。
 
元素拾取首先通过 Windows 系统函数 WindowFromPoint() 获取鼠标位置。它能够通 过鼠标读取窗口句柄,句柄是在操作系统里指向特定结构体的指针,通过句柄识别出了 操作系统中各种形式的内容实例,包括视窗、按键、图标、滑动条、输入输出工具、控件 和文档等。同时,Windows也提供了相关的API来获取这些窗口句柄,如FindWindow (获取窗口句柄)、EnumWindows和EnumChildWindows (获取所有顶层窗口以及它们的 子窗口)等函数。
由于web元素与应用程序元素标志命名规则不同、所包含信息不同,需通过不同的 规则构建包含元素信息selctor,用于后续RPA操作的元素定位。具体根据获取句柄的对 象属性判断对象信息是否为web元素,将对象元素分网页元素与应用程序元素,通过不 同的方式确定元素selctor构建方式实现目标元素的定位与抓取。构建网页元素selctor
(2)拾取应用程序元素
构建可获取信息元素selctor,调用windows提供的系统函数选取UI元素,将图形 界面中的要素以及它的父元素转化成XML格式的具体路径进行存储。并抓取程序窗口 的所有属性,由于有的属性在我们下次打开该程序时是会改变的,如坐标、值( Value) 名称(Name)等,而不变的属性是对象类别(Type)和路径(Path),因此我们会选择 类名(ClassName)、角色名(Role)、描述(Description)程序名(ProcessName)等不 变的属性作为查询条件,得到该元素唯一的selctor定位器。
(3)拾取 Web 网页元素
本小节提出了一种基于DOM树的RPA系统网页元素定位技术,利用RPA系统获 取目标元素以及DOM结构树;从下往上依次遍历DOM结构树,利用自定义元素结构 存储当前元素的属性并加入节点列表中;采取广度优先搜索算法寻找当前元素是否存在 相同元素属性的兄弟元素,若存在则将该元素的"index”对象的"use”属性值设置为true; 最后将保存了目标元素在DOM结构树中的路径位置的节点列表返回给后台,根据该路 径位置即可实现目标元素的定位任务。
在RPA系统操作中,有很大一部分是网页界面操作。因此,如何对网页元素进行 精准定位是 RPA 的一项关键技术。 DOM 结构树是 W3C 组织推荐的处理可扩展置标 语言的标准编程接口 [创国],准确地说明了在HTML文件中标签之间的交互关系,利用 JavaScript编程语言即可实现对网页元素的各种操作,例如,获取目标元素的属性、获 取目标元素的父元素等。现有的网页元素定位方法主要采用网页解析器以及利用AI技
24
术进行目标元素检测识别,前者无法对一些特殊场景的网页元素进行精准定位,后者需 要依靠大量的人工标注数据训练模型,工作量大,且定位准确性严重依赖于模型及数据 集[44][45][46]。
O
传统 RPA 网页元素拾取通过绝对路径定位网页元素,但往往会因为网页的更新导 致元素定位准确性与稳定性下降。本章节提出了一种基于 DOM 树的相对路径 RPA 系 统网页元素定位方法,不依赖于网页元素的绝对路径,可大幅提高网页元素定位的准确 性与稳定性[47][48][49]。具体用例如图 4.2所示。
 
图4.2 网页元素拾取方法用例流程图
 
如上图所示,利用 RPA 系统获取网页界面目标元素以及 DOM 结构树。初始化时, 将目标元素作为当前元素,RPA系统可通过浏览器插件,如Chrome插件,获取网页界 面目标元素,并抓取 DOM 结构树文件给后台,用于后续定位任务。
判断当前元素是否为<body>或者<html>标签元素。若当前元素为<body>或者 <html>元素,倒序遍历节点列表,除第一个带有“id"对象的元素外,设置其余元素 的“id”对象的“use”属性为false,即,仅启用倒数第一个带有“id”对象的元素。否
则对当前元素采取基于DOM结构树自下而上进行遍历,不断循环获取当前元素的父元 素,直到父元素为<body>或者<html>标签元素。具体地,获取当前元素在DOM结构 树中的属性,并通过自定义元素结构存储,将其“tagName”对象的“use”属性设置为 true, “id”对象、"class”对象、‘'index”对象的"use”属性均设置为false,即仅启用 当前元素的"tagName”对象;将当前元素加入节点列表中;获取当前元素的对象及属 性后采用json格式的自定义元素结构保存。元素对象ER关系如图4.3所示。
 
 
每个自定义元素结构包含四种对象:"tagName”对象、"id”对象、"class”对象 和"index”对象;每一种对象均包含"value”属性、"use”属性和"matchMode”属 性。"value”属性用于标记该对象的值,称为属性值;"use”属性用于标记是否启用该对 象;"matchMode”属性用于标记"value”属性值匹配方法,包括字符串比较方法,记为 "equal”、正则表达匹配方法,记为"regexp”、以及通配符匹配方法,记为"wildcard”, 用例中默认为"equal”。
在所述的四种对象中,"tagName”对象用于存储元素的标签名称信息,"id”对象 用于存储元素的id属性信息,"class”对象用于存储元素的class属性信息,"index”对 象用于存储元素在兄弟元素间从左往右的序号信息,序号从0开始。判断当前元素是不 是具有相同元素特征的兄弟元素存在,如果存在,则将该元素的"index"对象的"use”
26
属性值设置为true,即启用当前元素的“index”对象。
这样做的优点在于即使存在相同元素属性的兄弟元素,也能够通过“index”对象精 准定位当前元素在同一层次元素中的位置,确保了目标元素在DOM结构树中路径位置 的唯一性。
根据DOM结构树,判断当前元素的父元素是否为空,若是,则将<body>标签元 素定义为当前元素的父元素,并通过三目运算符判断。提取当前存在的所有父元素的子 元素,并加入元素表中。依次对当前节点列表中的元素与元素列表的所有元素进行匹配 如果配对完成,则该节点列表中的所有元素将存入同层次的元素列表中,而当前节点列 表中的所有元素则将为节点列表中的下一元素,元素列表更新为同层次匹配元素列表的 每个元素的子元素。若匹配不成功,将元素列表更新为原元素列表中的每个元素的子元 素。
具体地,应用广度优先搜索算法, 对比二个因素的属性值,如“tagName”、“class” 等对象以及相应的“value”属性值是否相同,如果相同,即为配对完成,并把当前节点 列表中的每个元素存入相同层次匹配元素列表中,判断同层次匹配元素列表是否为空 本领域技术人员可以根据自定义的元素属性修改匹配规则。若同层次匹配元素列表为 空,则将元素列表更新为原元素列表中的每个元素的子元素,循环遍历更新后的元素列 表中的元素。若同层次匹配元素列表不为空,则将元素列表更新为同层次匹配元素列表 中的每个元素的子元素,继续匹配,直至完成节点列表中所有元素的匹配工作。
判断同层次匹配元素列表中元素的数量是否大于1,若是,则存在相同元素属性的 兄弟元素,将当前元素的“index”对象的“use”属性设置为true。将当前元素更新为 其父元素,并继续循环遍历,直至当前元素为<body>或者<html>元素,倒序遍历节点 列表,除第一个带有“id”对象的元素外,设置其余元素的“id”对象的“use”属性为 false,即,仅启用倒数第一个带有“id”对象的元素。
在具体用例中,由于“id”对象作为HTML语言中的元素标识,在同一个网页页面 中不存在相同的id属性信息,具有唯一性。因此,只需选择最后一个带“id”对象的元 素就能完成元素识别任务。
最后,返回节点列表,最终的节点列表中存储的是当前元素在DOM结构树中的 路径位置,根据该路径位置即可实现目标元素的定位任务,路径各节点属性详细信息 如图 4.4所示,目标元素节点路径图如图 4.5所示。
 
节点 属性
MtagNameM:{
”valuc”:"div”,
"use^rtrue},
wid":{
"value":" wrapper**,
"use"血 sc,
"matchMode',:Hequar}>
节点1 "class": {
"value":Mwrappef^new wrapper_r,
"use": false,
HmatchModeM:MequalM},
” index%
”valuc”:"4”,
"use": false,
"matchMode^-equaP}
”tagName”:{
-valuc-^div",
"use": true},
 
” valuc”:”hea护,
"use": false,
"matchMode',:wequar}>
节点2 -style": {
-value^/'background: linear-gradient(igb(l 11, 173, 254);”,
"use"血 sc,
HmatchModeM:Mequar},
"index*: {
” value”:©,
Nusew:fiilse,
”matchMode”:”equal”}
”tagName”:{
"valuc":wdiv\
HuscM:ttue},
 
"value": "head_ wrapper*',
"use": false,
"maichModeM:Meq ual**},
目标节点 -class": {
HvalueH:Ms-isindex-wrap head_wrapper s-titk-img**,
MuscM: false,
"matchMode',:Hequar}>
-index*: {
-value-:M5R,
"use": false,
"maichMode,,:MequalM}
 
图4.4 目标元素的途径节点属性详细信息
 
 
4.1.2 流程搭建
 
本文系统通过拖拉拽模块对象的方式进行可视化流程搭建[50][51][52]。首先通过拖拉 拽开始结束、判断、执行等标准化模块在流程画布主画布中搭建主流程框架。接着对各 执行模块进行执行方法设计,在执行模块中拖拽操作方法对象搭建执行流程框架,函数 方法对象包含鼠标键盘操作模拟、元素操作、网页操作、Office操作等。最后详细编辑 执行方法,针对元素拾取所得目标对象设定各执行动作的具体操作方法与设定方法参 数。循环上述步骤直至工作流程搭建完毕,流程搭建的流程图 4.6所示。
 
 
流程画布通过 WPF 开发框架下的 Syncfusion 库开发构建[50][51],用于流程框架的可 视化搭建。用户按业务流程逻辑,通过拖拉拽流程块组件搭建流程框架。流程画布所用
流程块组件参照标准流程图图形设计标准,提供了椭圆形、菱形、矩形三种图形模块分 别用于开始/结束流程设计、判断流程设计、执行流程设计,各流程块组件通过箭头连 接,按流程顺序逻辑执行,流程块间支持参数传递。主流程画布如图 4.7所示。
 
 
 
用户可通过流程执行组件下的子画布进行执行流程的详细设计,拖拉拽执行执行操 作组件搭建具体执行流程框架,执行操作组件包括鼠标键盘模拟操作、元素操作、网页 操作、Office操作、数据处理、网络连接与文件操作七大组件[呵辺]。在流程执行框架搭 建过程中,用户可设定函数方法执行中涉及的操作对象、操作类型、操作方式、辅助按 键等具体执行参数。根据生产环境下的真实流程操作,选择函数方法,设定操作参数 直至流程搭建完毕,流程执行子画布如图 4.8所示。
GooffrCmmf !*” jewr/kig^^wwr*<wv^ponM^|M.<a>flWta>>««*t»»r . hMM
hzms *we*tav
UiaSI ■maafuNxn « F •
eeits -«m;a«ue»eft«9B«<-
MM"T XMMWiunAtrw ttU« 0
» - p »or«MK ・H«XW. 1 rnttaU
10- A itSWWIF ttSMA MMkto ♦Un.* WW
11E3 •・・>, «' -inoitMou-
12目 ■•■入 en * m ・,、. xr«ai3tr
U 0 ・*•>!> ■* £l> ax ».» 9fL
M Cj f ai.H
B A CM
16 0 ” "
V R
it p nse* bzmk -tt«zir
» B 9WH.«)K« 9nHH MN* 3««it
图4.8 流程执行子画布
30
4.1.3流程调试
本文所设计平台的流程调试功能基于微软的工作流开发框架(Windows Workflow Foundation, WWF)开发实现。通过构建工作流运行对象(WorkflowRuntime)实现流程模 块的调试,工作流运行对象为流程模块创建独立的工作流任务,在执行过程中,工作流 运行对象会针对不同情况触发相应事件,并通过新增服务保持事件跟踪[53][54][55]。WWF 工作流服务调用架构如图 4.9所示。
 
图4.9 WWF 工作流服务调用架构图
 
WWF 应用程序与流程模块在同一程序域并行运行, WWF 应用程序用于完成工作 流任务,当流程模块执行时,WWF应用程序会生成工作流实例,调用工作流服务并通 过工作流运行对象执行,每一流程模块都有对应的工作流运行对象实例,实例即是正在 执行的工作流任务,能根据流程模块的运行自行执行对应活动。例如,当运行出现异常 时,工作流运行对象会收到"InvalidOperationException ”异常报错信息[30]。本系统所调 用的 WWF 应用服务如表 4.1所示:
表 4.1 WWF 应用服务功能表
服务类型 描述 调用服务
调 用 CreateWorkflow
线程服务 方法,为流程模块创建 DefaultWorkflowLoaderService
工作流实例
跟踪服务 监控跟踪工作流的执
行情况 SqlTrackingService
持久化服务 使工作流实例可持续
运行 SqlWorkflowPersistenceService
数据交换服务 为工作流实例提供数
据通信服务 ExternalDataExchangeService
批处理服务 提供连续处理工作流
实例的运行环境 DefaultWorkflowCommitWorkBatchService
调度服务 创建和调度即将执行
的工作流实例 DefaultWorkflowScheduleService
 
流程调试过程中的流程运行与运行信息监测主要通过调用 WWF 的工作流持久化 服务与工作流跟踪服务实现。
(1) 工作流持久化服务
工作流持久化服务继承于 SqlWorkflowPersistenceService, SqlWorkflowPersistence- Service 提供了工作流运行过程中运行与运行状态存储的内置服务,通过调用其服务可 以实现工作流持久化,实现流程模块调试过程的运行状态记录、存储与恢复。
(2) 工作流跟踪服务
工作流跟踪服务继承于 SqlTrackingService,与 ConsoleTrackingService、SimpleFile- TrackingService共同实现工作流的跟踪,并将跟踪信息写入文件、数据库与控制台。
在调试过程中,可为流程语句设置断点,此时工作流运行对象会为执行流程添加一 个跟踪服务(SqlTrackingService),会为流程文件创建一个新的TrackingProfile,断点和 位置会被写入profile对象作为跟踪事件的过滤器,在调试过程中工作流通过断点跟踪
32
流程事件,当跟踪事件触发后WWF会创建并管理触发记录,如图4.10所示。
l±J O iij ® @ ®
{制 啟据打取 运行 停匕
test process
1 況程应行X
@ 总签箕巫•寻f 1
• 2 @ 设古变垃b尊十2
3 险 点达式计界 估黃达式**b的緒卑嵐色* c
 
 
 
图4.10流程调试断点设置功能
4.2流程解析模块
流程解析模块用于拆解流程设计模块设计保存的rpa流程文件,完成流程控制,解 析流程块间逻辑运算与各流程块间的连接操作,包括单个流程任务中从一个流程步骤到 另一个流程步骤,直到流程块完整运行结束,包括条件逻辑与循环逻辑的解析,得到流 程执行模块可识别的运行指令流。
4.2.1流程拆解
流程设计模块搭建的自动化流程以文件形式在系统内进行存储,在流程执行前需要 对流程文件进行拆解。本文设计的系统平台按流程架构的不同层级将流程文件定义为 rpa、process、flow等文件格式。按细粒度划分,flow文件用于存储流程设计过程中涉及 的原子指令及元素拾取所得的元素信息, process 文件用于存储整个流程块的信息, rpa 文件用于存储整个留个流程,不同文件类型及功能作用描述具体如表 4.2所示。
表4.2不同格式文件功能作用描述表
文件格式 文件作用描述
用于存储流程设计过程中涉及的原子指
flow 令及元素拾取所得的元素信息。
用于存储流程块相关信息,由多个.flow
process
文件组成。
用于存储整个留个流程,由多个.process
rpa
文件组成。
与流程设计过程相对应rpa文件用于存储流程主画布下流程编辑的全部内容,process 文件存储主流程框架中的各流程块信息,flow文件用于存储流程子画布中涉及的各 执行操作的方法与元素拾取所得的各元素信息。
4.2.2 流程逻辑解析
在流程解析过程中,流程块与流程块之间、执行方法对象间存在条件判断与循环的 逻辑关系,针对流程设计过程出现的逻辑关系以下提供了方法设计与解释:
(1)条件判断逻辑解析
本文提出的系统平台可以解析条件判断逻辑,对流程条件表达式进行计算判断,根 据流程条件表达式的真值,跳转至相应流程块执行流程指令。本文提出的条件判断解析 方法,综合考虑了嵌套条件语句的情况,通过循环判断实现条件语句嵌套判定,具体实 现方法如算法 1所示。
Algorithm 1条件判断逻辑解析
Input:条件表达式or条件表达式列表
Output: 执行条件表达式对应流程块
1: Function ConditionAnalysis(条件表达式or条件表达式列表)
2: if 条件表达式 == true
3: 执行条件表达式为真时对应流程块
4: else
5: 表达式标志符= false
34
6: if 条件表达式列表!= null && 条件表达式列表数量> 0
7: forint i = 0; i <条件表达式列表数量&& !表达式标志符;i++ do
8: 第 i 个子条件表达式为真时执行的流程块
9: 执行条件表达式列表第i个表达式对应的流程块
10: 表达式标志符 =true
11: if ! 表达式标志符
12: 执行条件表达式为假时对应流程块
(2)循环逻辑解析
本文提出的系统平台可以解析循环逻辑,对流程文件中所涉及的循环逻辑进行解 析,并根据预设的循环条件进行流程循环,跳转至相应流程块执行流程指令。在循环指 令执行前后,系统会对流程指令执行的上下文进行动态切换以保证流程运行的上下文稳 定。具体实现方法如算法 2所示。
Algorithm 2循环逻辑解析
Input:初始条件,结束条件,步长
Output: 执行循环表达式对应流程块
1: Function CirculationAnalysis(初始条件,结束条件,步长)
2: for long i = 初始条件; i < 结束条件 ; i += 步长 do
3: scopeContext.AddOrUpdate(IndexName, i)
4: 切换程序运行上下文
5: try
6: bodyActivity.DoExecute(scopeContext)
7: 执行循环表达式对应流程
8: finally
9: scopeContext.Remove(IndexN ame)
10: 切换程序运行上下文,回到原有上下文环境
4.3流程执行模块
4.3.1 鼠标键盘操作模拟
本文设计的系统平台可以模拟人工对鼠标、键盘的操作,如左键单机、左键双击 右键单机、鼠标长按拖拽等鼠标操作,或是键盘输入、键盘组合按键等键盘操作,或者 是键盘辅助按键鼠标点击等键盘鼠标组合操作等。在鼠标键盘操作时,鼠标键盘装置上 的芯片会识别到其动作状态,并把相应按钮的唯一代码—扫描码传输到电脑,驱动程序 也将接收扫描代码,并转化为鼠标操作的虚拟代码。同一按键上扫描码会不同,但虚拟 码是一样的[22],本文提出的系统平台,通过模拟生成虚拟码从而实现鼠标键盘操作的模 拟。
该系统平台模拟鼠标基本操作的方法,根据流程设计界面传入的鼠标点击类型 clickType、鼠标按键类型mouseButton以及光标所在位置point等参数确定鼠标执行 的操作,鼠标点类型有单机、双击、长按、松开,鼠标按键类型有左键、右键、中间 光标所在位置为鼠标对应元素的绝对坐标。鼠标点击操作模拟具体实现方法如算法 3所 示。
Algorithm 3鼠标点击基本操作模拟实现
Input:鼠标点击方式,鼠标按键类型,光标所在位置
Output: 执行预设类型的鼠标操作
1: Function MouseAction(鼠标点击方式,鼠标按键类型,光标所在位置)
2: switch (鼠标点击类型)
3: case 鼠标单击
4: Mouse.Click(光标所在位置,鼠标按键类型)
5: case 鼠标双击
6: Mouse.DoubleClick(光标所在位置,鼠标按键类型)
7: case 鼠标按下(不抬起)
& Mouse.Down(光标所在位置,鼠标按键类型)
9: case 鼠标抬起
10: Mouse.Up(光标所在位置,鼠标按键类型)
11: default鼠标抬起
36
12: break
该系统平台模拟鼠标辅助按键点击操作的方法,根据流程设计界面传入的辅助按键 列表AuxiliaryKey、鼠标点击类型SystemOperaType、鼠标点击对象element等参数确定 鼠标辅助按键点击操作模拟,辅助按键列表为需要在键盘上辅助按键的按键集合,鼠标 点击类型类型有模拟点击与对象点击,其中模拟点击为不针对对象只在指定位置进行辅 助按键点击操作,对象点击为针对指定对象进行辅助按键点击操作,鼠标点击对象为鼠 标点击类型为对象点击时的点击目标对象,具体实现方法如如算法 4所示。
Algorithm 4鼠标辅助按键点击操作模拟实现
Input:辅助按键列表,鼠标点击类型,鼠标点击对象
Output: 执行预设类型的辅助按键鼠标点击操作
1: Function ElementAttrSet(元素对象,元素属性值设置标志符,属性名称,修改后属
性值)
2: if辅助按键列表!= null
3: foreach (keyin 辅助按键列表)
4: KeyboardHandler.KeyboardP ress(key)
5: 对按键执行按下操作
6: if 鼠标点击类型 == 模拟点击
7: SimulateClick()
8: 执行模拟点击
9: else
10: element.Click(element)
11: 执行对象点击
12: if辅助按键列表!= null
13: foreach (keyin 辅助按键列表)
14: KeyboardHandler.KeyboardRelease(key)
15: 对按键执行松开操作
该系统平台模拟键盘按键操作操作的方法,根据流程设计界面传入的键盘按键类型 VirtualKey 参数确定键盘按键操作操作模拟,键盘按键类型为所需进行键盘按键的虚拟 
值,该值为该按键在操作系统对应的唯一指定值,从同通过将该值传入相应函数实现键
盘按键操作模拟,键盘按键操作模拟具体实现方法如算法 5所示。
Algorithm 5键盘按键操作模拟具体实现
Input: 键盘按键类型
Output: 执行预设的键盘按键按下与松开操作
1: Function KeyboardClick(键盘按键类型)
2: Keyboard.Press(键盘按键类型)
3: 执行键盘按键按下操作
4: Keyboard.Release(键盘按键类型)
5: 执行键盘按键松开操作
4.3.2元素操作
本文设计的系统平台可以对指定元素进行操作,如读取元素对象、读取元素文本内 容、读取元素值、读取元素链接地址、读取元素属性、读取元素源代码、设置元素属性 等元素操作,从而使该系统平台围绕元素操作实现更加精准高效的人工操作模拟。
该系统平台元素属性获取的方法,根据流程设计界面传入的元素对象 element 及 元素标志符等参数确定获取元素的属性,元素标志符有 ELEMENT_SELECTOR、 ELE- MENT_INNERTEXT、 ELEMENT_VALUE、 ELEMENT_LINK、 ELEMENT_ATTR_ALL、 ELEMENT_ATTR 及 ELEMENT_OUTERHTML 等 7 种元素标志符,元素标志符具体对 应元素属性值如表 4.3所示。
38
表4.3 元素标志符对应表
元素标志符名称 含义
ELEMENT_SELECTOR 元素选择器
ELEMENT_INNERTEXT 元素文本内容
ELEMENT_VALUE 元素值
ELEMENT_LINK 元素链接
ELEMENT_ATTR_ALL 元素全部属性
ELEMENT_ATTR 元素属性
ELEMENT_OUTERHTML 元素源代码
元素属性获取具体实现方法如算法 6所示。
Algorithm 6元素属性获取实现
Input: 元素对象,元素属性值标志符
 
Output: 指定元素属性值
1: FunctionElementAttrGet(元素对象,元素属性值标志符)
2: if元素属性标志符==元素选择器
3: 当前属性列表=MakeSelector(元素对象,true)
4: 最终属性列表 = prevSelector.concat()
5: 最终属性列表.push.apply(最终属性列表,当前属性列表)
6: outResult.elementAttrList.push(最终属性列表)
7: 传入参数为元素选择器,对元素属性进行获取
8: elseif元素属性标志符==元素文本内容
9: outResult.elementAttrList.push(GetInnerTextFormElement (元素对象))
10: else if元素属性标志符==元素值
11: outResult.elementAttrList.push(元素对象.value?元素对象.value: “ ”)
12: else if元素属性标志符==元素链接
13: outResult.elementAttrList.push(GetLinkFormElement (元素对象))
14: else if元素属性标志符==元素全部属性
15: outResult.elementAttrList.push(GetElementAllAttribute(元素对象,false) 
16: else if 元素属性标志符 == 元素属性
17: outResult.elementAttrList.push(GetElementAttriV alue(元素对
象,AttrName)
18: else if元素属性标志符==元素属性元素源代码
19: outResult.elementAttrList.push (元素对象.outerHTML)
20: else
21: return sendResponse(retCode : N_F ALSE, message: “不支持的元素类型
获取”)
该系统平台元素属性设置的方法,根据流程设计界面传入的元素对象targetElement、 元素属性值设置标志符、属性值(新)attrValue等参数实现元素属性设置,元素标志符 有 url、cookie、innerhtml、outerhtml、outertext 及 attribute 等 6 种元素属性值设置标志 符,元素属性值设置标志符具体对应元素属性值如表 4.4所示。
表4.4 元素属性值设置标志符对应表
元素标志符名称 含义
url 元素链接
cookie 元素所在网页 cookie
innerhtml 开始和结束标签之间的 HTML 内容,不包括 HTML 标签
outerhtml 开始和结束标签之间的 HTML 内容,包括 HTML 标签
outertext 设置 (包括标签)或获取 (不包括标签)对象的文本
attribute 元素属性
 
根据元素对象targetElement、属性名称attrName、属性值(新)attrValue及元素属
性值设置标志符设置对应元素属性,具体实现方法如算法 7所示。
Algorithm 7元素属性设置实现
Input:元素对象,元素属性值设置标志符,属性名称,修改后属性值
Output: 设置元素对应属性
1: Function ElementAttrSet(元素对象,元素属性值设置标志符,属性名称,修改后属 性值)
40
2: if元素属性值设置标志符==url
3: 元素对象.ownerDocument.defaultView.location =修改后属性值
4: else if元素属性值设置标志符==cookie
5: 元素对象.ownerDocument.cookie =修改后属性值
6: else if元素属性值设置标志符==innerhtml
7: 元素对象.innerHTML =修改后属性值
8: else if元素属性值设置标志符==outerhtml
9: 元素对象.outerHTML =修改后属性值
10: else if元素属性值设置标志符==outertext
11: 元素对象.textContent =修改后属性值
12: else if元素属性值设置标志符==attribute
13: 元素对象.setAttribute (属性名称,修改后属性值)
4.3.3网页操作
本文设计的系统平台可以对模拟人工进行网页操作,如打开指定网页、关闭浏览器 的网页操作,从而使该系统平台模拟人工实现网页操作的自动化[23]。
该系统平台模拟打开指定网页地址的方法,根据流程设计界面传入的浏览器对象 webBrowser 及网页地址 url 实现打开指定网页地址操作模拟,打开指定网页地址方法具 体实现方法如算法 8所示。
Algorithm 8打开指定网页地址
Input:浏览器对象,网页地址
Output: 打开指定网页的浏览器对象
1: Function OpenlEBySHDocVw(网页地址,浏览器对象=null)
2: if 浏览器对象 == null
3: 浏览器对象 =newInternetExplorerClass()
4: else
5: ieWindowHandle = newIntPtr(浏览器对象.HWND)
6: objectobj 1 = string.IsNullOrEmpty(网页地址)? "about : blank” :网页地址
7: objectobj2 = BrowserNavConstants.navBrowserBar
8: objectobj3 = ”_self ”
9: objectobj4 = Type.Missing
10: objectobj5 = Type.Missing
11: 浏览器对象.Navigate2(ref obj 1, ref obj2, ref obj3, ref obj4, ref obj5)
12: catch (Exception ex)
13: Logger.Error(ex, ”程序方式打开IE获取句柄出错”)
该系统平台模拟关闭指定网页的浏览器对象的方法,根据流程设计界面传入的浏览 器对象 webBrowser 及关闭操作类型 closeBrowserType 实现关闭指定网页的浏览器对象 操作模拟,关闭指定网页的浏览器对象操作方法如算法 9所示。
Algorithm 9关闭指定网页的浏览器对象
Input:浏览器对象,关闭操作类型
Output: 关闭指定网页的浏览器对象
1: Function CloseBrowser(浏览器对象,关闭操作类型)
2: if关闭操作类型==关闭单一 Type页
3: 浏览器对象ExecWB ()
4: else
5: Process[ ] processes = Process.GetProcessesByName(”iexplore”)
6: foreach (process in processes)
7: process.CloseMainWindow()
4.3.4Office 操作
本文设计的系统平台可以对模拟人工对Word、Excel等Office办公软件进行操作, 如打开、保存/另存、读取、写入等操作,从而使该系统平台模拟人工实现Office办公软 件操作的自动化。
该系统平台模拟打开/创建Excel文件的方法,根据流程设计界面传入的文件地址、 创建标志符等文件参数打开/创建Excel文件,打开/创建Excel文件方法如算法10所示。 Algorithm 10打开/创建Excel文件
Input:文件地址,创建标志符,文件存在标志符
Output: 打开/创建 Excel 文件
42
 
1:
2:
3:
4:
5:
6:
7:
8:
9: Function GetOrCreateWorkbook(文件地址,创建标志符,文件存在标志符)
if 文件存在标志符 != null
构建虚拟字典
headers = newDictionary < string, List < string >> ()
if创建标志符==true
workbook = CreateNewWorkbook (文件地址)
新建的 Excel 表格=newFileWorkbook(workbook,文件地址,headers') return 新建的 Excel 表格
else if !File.Exists(文件地址)
10: throw newCommonException( ” 该文件不存在,文件路径:” + 文件地址)
11: using(fileStream =
FileStream(filePath, FileMode.Open, FileAccess.ReadWrite))
12: else if 文件地址.IndexOf .xlsx") > 0
13: 文件对应版本对07版Excel,在工作簿中读入数据信息
14: workbook = newXSSFWorkbook(fileStream)
15: else if 文件地址.IndexOf (” .xls” > 0
16: 文件对应版本对03版Excel,在工作簿中读入数据信息
17: workbook = newHSSFWorkbook(fileStream)
18: else
19: throw newCommonException(” 仅支持 xlsx 和 xls 文件格式的 Excel”)
20: if文件存在标志符!= null
21: for inti = 0; i < 工作簿 sheet 总数;i++ do
22: for intj = 0; j < 总行数;j++ do
23: header.Add(GetCellV alue(row.GetCell(j)).ToString())
24: headers.Add(sheet.SheetName, header)
25: return对应的Excel文件内容
该系统平台模拟保存Excel文件的方法,根据流程设计界面传入的文件对象、保存
地址、覆盖标志符等文件保存参数创建Excel文件,保存Excel文件方法如算法11所示。
 
Algorithm 11 保存 Excel 文件方法
Input: 执行的 Excel 对象,保存地址,覆盖标志符,保存标志符
Output: 保存 Excel 文件
1: Function SaveWorkBook(执行的Excel对象,保存地址,覆盖标志符,保存标志符)
2: string path = string.IsNullOrWhiteSpace(保存地址)? fileWorkbook.filePath : 保存地址
3: if File.Exists(path)
4: if !string.IsNullOrWhiteSpace()
5: if覆盖标志符==覆盖保存
6: File.Delete(path)
7: else if覆盖标志符==非覆盖存储
8: path = FileUtils.GetAutoIncrFilePath(path)
9: else
10: throw newCommonException( ” 该文件不存在,文件路径:” + 文件地
址)
11: file =
FileStream(path,FMode.Create, FAccess.Write, FShare.ReadWrite)
12: else
13: file = File.Create(path)
14: workbook.Write(file);
15: if保存标志符==true
16: workbook.Close()
17: if file! = null
18: file.Close()
该系统平台模拟读取Excel文件的方法,根据流程设计界面传入的文件对象、工作 表名、行号、起始结束列号等文件读取参数遍历Excel文件,读取Excel文件如算法12所 示。
Algorithm 12 读取 Excel 文件
Input: Excel对象,工作表名,行号,起始列号,结束列号
Output: 读取 Excel 文件
44
1: Function ReadRowFromSheet(Excel 对象,工作表名,行号,起始列号=MinValue, 结束列号 = MinValue)
2: 工作表=WorkbookFunction.GetSheetByName(执行的 Excel 对象,工作表名)
3: AssertUtils.IsTrue(工作表!= nu仏”未找到 sheet 页”)
4: 行=sheet.GetRow (行号)
5: 列表 = RPAActivityList.CreateList()
6: if 行 == null
7: return 列表
8: for int column =起始列号;column <=结束列号;column++ do
9: list.Value.Add(val)
10: return 列表
该系统平台模拟写入Excel文件的方法,根据流程设计界面传入的文件对象、工作 表名、行号、列号、数值等文件参数对Excel文件写入指定数值,对Excel文件指定单 元格写入数值如算法 13所示。
Algorithm 13对Excel文件指定单元格写入数值
Input: Excel对象,工作表名,行号,列号,值
Output: 写入数值
1: Function WriteCellToSheet(Excel 对象,工作表名,行号,列号,值)
2: var sheet = WorkbookFunction.GetSheetByName(执行的 Excel 对象,工作表 名)
3: IRow row = sheet.GetRow(行号)?? sheet.CreateRow(行号)
4: ICell cell = row.GetCell(列号)?? row.CreateCell(列号)
5: WriteCellValue(cell,行号列号,值)
4.3.5数据处理
本文设计的系统平台可以对模拟人工进行数据处理操作,如文本提取、包含判断 文本替换等,从而使该系统平台模拟人工实现数据处理操作的自动化。
该系统平台模拟文本提取的方法,传入流程设计界面的输入框对象,根据输入框所 包含的字符串及提取类型等参数进行字符串读取,文本提取方法如算法 14所示。
Algorithm 14文本提取方法
Input:输入框对象
Output: 文本提取
1: Function StringExtract(输入框对象)
2: IDictionary<string, object> param =输入框对象.getParamDic(
3: switch 字符串提取类型
4: case 数字类型:
5: result =
RPAStringHandleUtils.ExtraStringByPatternNumber(content, getFirstMatch,convertToNumber)
6: case 邮箱地址:
7: result = RPAStringHandleUtils.ExtraStringByPatternEmail(content,
getFirstMatch)
8: case 电话号码:
9: result = RPAStringHandleUtils.ExtraStringByPatternPhone(content,
getFirstMatch)
10: case ID 编号:
11: result =RPAStringHandleUtils.ExtraStringByPatternId(content,
getFirstMatch)
12: case 用户自定义类型:
13: string pattern = Pattern.GetAndCheckBlank(param)
14: result = RPAStringHandleUtils.ExtraStringByPattern(content,
pattern, options, getFirstMatch)
15: default:
16: throw newCommonException(“未实现的字符串提取类型”);
17: context.AddOrUpdate(Result, result)
18: catch (Exceptione)
19: throw CommonException.HandleThrowException(e, “提取字符串出现
未知异常” );
46
该系统平台模拟文本包含判断的方法,传入流程设计界面的输入框对象,根据输入
框所包含的文本进行包含判断,文本包含判断方法如算法 15所示。
Algorithm 15文本包含判断方法
Input:输入框对象
Output: 文本包含判断
1: Function StringContains(输入框对象)
2: IDictionary<string, object> param =输入框对象.getParamDic()
3: string content = Content.GetAndCheckBlank(param)
4: string containsText = ContainsText.GetAndCheckBlank(param)
5: switch选定字符串包含判断类型
6: case 中间包含:
7: result = 中间包含判定 (containsT ext)
8: case 前缀包含:
9: result = 前缀包含判定 (containsT ext)
10: case 后缀包含:
11: result =后缀包含判定 (containsT ext)
12: default:
13: throw newCommonException( “未实现的字符串包含判断类型”)
14: catch (Exception e)
15: throw CommonException.HandleT hrowException(e, “反转义字符串出
现未知异常”)
该系统平台模拟字符串替换的方法,传入流程设计界面的输入框对象,根据输入框 所包含的字符串进行替换,文本替换方法如算法 16所示。
Algorithm 16文本替换方法
Input:输入框对象
Output: 文本替换
1: Function StringContains(输入框对象)
2: IDictionary<string, object> param =输入框对象.getParamDic。
3: string 替换文本=Replacement.GetOrDefault(param, “ ” )
4: RegexOptions options = RegexOptions.None
5: options =ignoreCase ? options|RegexOptions.IgnoreCase : options
6: object result = “ ”
7: switch (字符串替换类型)
8: case 数字:
9: result = RPAStringHandleUtils.ReplaceAll(content, 数字格式, 替换文
本, options, getFirstMatch)
10: case 邮箱地址:
11: result = RPAStringHandleUtils.ReplaceAll(content,邮箱地址格式,替换
文本, options, getFirstMatch)
12: case 电话号码:
13: result = RPAStringHandleUtils.ReplaceAll(content,电话号码格式,替换
文本, options, getFirstMatch)
14: case ID 号码:
15: result = RPAStringHandleUtils.ReplaceAll(content, ID 号码格式,替换文
本, options, getFirstMatch)
16: case 自定义类型:
17: result = RPAStringHandleUtils.ReplaceAll(content, 自定义格式, 替换文
本, options, getFirstMatch)
18: default:
19: throw newCommonException(” 未实现的字符串提取类型”)
20: catch (Exceptione)
21: throw CommonException.HandleThrowException(e, “替换字符串出现未知
异常” );
4.3.6网络连接
本文设计的系统平台可以对模拟人工进行网页请求访问操作,如发起Http请求、下 载文件,从而使该系统平台模拟人工实现网页操作的自动化。
48
该系统平台模拟发起 Http 请求的方法,传入流程设计界面的输入框对象,根据输 入框所包含的Url网址、header设置等网页请求参数发起Http请求,发起Http请求方 法如算法 17 所示。
Algorithm 17发起Http请求方法
Input:输入框对象
Output: 发起 Http 请求
1: Function HttpRequest(输入框对象)
2: RestRequest 访问请求对象=new RestRequest()
3: IDictionary<string, object> param =输入框对象.getParamDic()
4: header 配置 = (DictionaryObj ect)Header.GetV alue(param)
5: url 链接 = Url.GetV alue (param)
6: url 请求 body 配置 = Body.GetV alue(param);
7: 请求配置 = (DictionaryObj ect)Params .GetV alue(param)
8: HttpResponseData response = HttpUtils.Execute(url 链接, url 请求 body 配置, 请 求配置, header 配置, 请求模式)
9: context.AddOrUpdate(ResponseName, response);
10: catch (Exception e)
11: throw CommonException.HandleThrowException(e, ” 执行 Http 请求时出 错”)
该系统平台模拟文件下载的方法,传入流程设计界面的输入框对象,根据输入框所 包含的Url网址、下载超时时限、保存地址、保存文件名、保存对象名等下载参数下载 文件,文件下载方法如算法 18所示。
Algorithm 18文件下载方法
Input:输入框对象
Output: 文件下载
1: Function Httpdownload(输入框对象)
2: RestRequest 访问请求对象=new RestRequest();
3: IDictionary<string, object> param =输入框对象.getParamDic();
4: 超时时限 = T imeout.GetV alue (param)??0)
5: url 链接 = DownLoadUrl.GetV alue(param)
6: 保存地址 = SavePath.GetValue(param)
7: 保存文件名= FileName.GetValue(param)
8: 文件类型=SaveObjectName.GetValue(param)
9: 最终地址 = HttpUtils.DownloadFile(url 链接,保存地址,保存文件名 )
10: catch (Exception e)
11: throw CommonException.HandleThrowException(e, “执行 Http 请求时 出错”)
4.3.7文件操作
本文设计的系统平台可以对模拟人工进行文件操作,如文件的读取、写入、复制 移动、删除等,从而使该系统平台模拟人工实现网页操作的自动化。该系统平台模拟文 件读取的方法,传入流程设计界面的输入框对象,根据输入框所包含的文件地址、文件 编码类型等参数进行文件读取,文件读取方法如算法 19所示。
Algorithm 19文件读取方法
Input:输入框对象
Output: 读取文件
1: Function FileRead(输入框对象)
2: IDictionary<string, object> param =输入框对象.getParamDic();
3: 文件地址 = FilePath.GetAndCheckBlank(param)
4: objectresult = “ ”
5: if File.Exists(文件地址)==true
6: switch (文件编码类型)
7: case 默认编码:
8: esult = FileUtils.ReadWithEncoding(文件地址,默认编码,转化文件内
容形式)
9: case UTF8 编码:
10: result = FileUtils.ReadWithEncoding(文件地址,UTF8 编码,转化文
件内容形式)
11: caseGBK 编码:
12: result = FileUtils.ReadWithEncoding(文件地址,GBK 编码,转化文件
50
内容形式)
13: else
14: throw newCommonException(” 文件不存在”)
15: catch (Exception e)
16: throw CommonException.HandleT hrowException(e, “读取文件出现未知异
常”)
该系统平台模拟文件写入的方法,传入流程设计界面的输入框对象,根据输入框 所包含的文件地址、文件编码类型、写入内容等参数进行文件写入,文件写入方法如算 法 20 所示。
Algorithm 20文件写入方法
Input:输入框对象
Output: 文件写入
1: Function FileWrite(输入框对象)
2: IDictionary<string, object> param =输入框对象.getParamDic();
3: 文件地址 = F ilePath.GetAndCheckBlank (param)
4: 要写入的数据= Data.GetAndCheckBlank(param)
5: if File.Exists(文件地址)==false
6: 文件夹地址 = Path.GetDirectoryName(filePath)
7: Directory.CreateDirectory (文件夹地址)
8: 文件地址=Path.Combine(文件夹地址,” rpafile”)
9: switch (编码类型)
10: case 默认编码:
11: FileUtils.WriteWithEncoding(文件地址,要写入的数据,默认编码,写入
方式)
12: case UTF8 编码:
13: FileUtils.WriteWithEncoding(文件地址,要写入的数据,UTF8编码,写
入方式)
14: case GBK 编码:
15: FileUtils.WriteWithEncoding(文件地址,要写入的数据,GBK编码,写入
方式)
16: catch (Exception e)
17: throw CommonException.HandleThrowException(e, “写入文件出现未知异
常”)
该系统平台模拟文件复制的方法,传入流程设计界面的输入框对象,根据输入框所 包含的文件地址、目标文件夹地址、文件复制类型等参数进行文件复制,文件复制方法 如算法 21 所示。
Algorithm 21文件复制方法
Input:输入框对象
Output: 文件复制
1: Function FileCopy(输入框对象)
2: IDictionary<string, object> param =输入框对象.getParamDic();
3: 源文件地址 = FilePath.GetAndCheckBlank(param)
4: 文件夹地址 = DirPath.GetAndCheckBlank(param)
5: if File.Exists(源源文件地址)==false
6: throw new CommonException( “文件不存在” )
7: if Directory.Exists(文件夹地址)==false
8: Directory.CreateDirectory (文件夹地址)
9: 目标地址 = “ ”
10: switch (文件复制类型)
11: case 覆盖:
12: 目标地址=Path.Combine(文件夹地址,Path.GetFileName(源文件地址))
13: if File.Exists(目标地址)==true
14: File.Delete(目标地址)
15: File.Copy(源文件地址,目标地址)
16: case 停止复制 :
17: 目标地址=Path.Combine(文件夹地址,Path.GetFileName(源文件地址))
18: if File.Exists(目标地址)==false
19: 目标地址=Path.Combine(文件夹地址,Path.GetFileName(源文件地
52
址))
20: else
21: throw new CommonException( “文件已存在” )
22: case 后缀增加:
23: 目标地址=Path.Combine(文件夹地址,Path.GetFileName(源文件地址))
24: while File.Exists(目标地址)==true
25: 目标地址=FileUtils.GetAutoIncrFilePath(目标地址))
26: File.Copy(源文件地址,目标地址)
27: catch (Exception e)
28: throw CommonException.HandleThrowException(e, “复制文件出现未知异 常” )
 
该系统平台模拟文件删除的方法,传入流程设计界面的输入框对象,根据输入框所
包含的文件地址进行文件删除,文件删除方法如算法 22所示。
Algorithm 22文件删除方法
Input: 输入框对象
Output: 文件删除
1: Function FileMove(输入框对象)
2: IDictionary<string, object> param =输入框对象.ge~tParamDic();
3: 文件地址 = FilePath.GetAndCheckBlank(param)
4: if File.Exists(目标地址)==true
5: File.Delete(目标地址)
6: else
7: throw new CommonException( “文件不存在” )
8: catch (Exception e)
9: throw CommonException.HandleThrowException(e, “删除文件出现未知异
常” )
4.4本章小结
本章是系统详细设计与实现。详细设计了流程设计模块、流程解析模块与流程执行 模块三大模块,流程设计模块实现了元素拾取、流程画布、流程文件管理三个具体功能 流程解析模块实现了条件语句解析编译、循环语句解析编译两个具体功能,流程执行模 块实现了鼠标键盘操作模拟、元素操作、Office操作等七大具体功能。
54
5系统测试
系统测试是系统设计研发中不可或缺的步骤,旨在通过系统测试保证系统平台功 能、性能指标与需求保持一致。为验证系统的有效性与可用性,在面向电力营销的 RPA 系统平台设计与实现后,本文定制了测试方案,在实习使用环境下对系统开展了功能测 试与性能测试。
5.1测试概要
本文将面向电力营销的 RPA 系统平台部署至电网公司日常办公的个人办公电脑终
端上,测试环境包括硬件环境与软件环境,如表 5.1与表 5.2所示。
表5.1 测试硬件环境
编号 硬件配置 规格或型号
1 CPU 型号 CPU:i5-7200 3.1GHz
2 内存 8G
3 硬盘容量 50G
 
 
表5.2 测试软件环境
编号 软件配置 软件版本
1 操作系统 Windows7 64 位
2 浏览器 Chrome 79.0
 
面向电力营销的 RPA 系统平台的测试工作具体内容如表 5.3所示。
测试类别 测试名称 具体测试内容
流程画布界面及功能测试 查看界面,通过界面搭建流程
功能测试 流程执行功能测试 进行功能设置并执行
流程调试功能测试 查看界面,进行流程调试
性能测试 流程操作响应性能测试 测试流程处理延时
流程操作准确性测试 测试使用场景下的执行准确率
 
5.2功能测试
功能测试是为了保证系统平台达到了需求设计所提出的功能研发目标,按照表 5.3
进行功能测试,包括流程画布界面及功能测试与流程执行功能测试。
5.2.1 流程画布界面及功能测试
在流程画布界面中,对流程主画布与流程子画布两个功能页面进行了功能性测试 结果如下。
(1)流程主画布界面
流程主画布界面实现效果,如图 5.1所示。
 
图5.1 流程画布主画布流程框架搭建
 
从图中可以看出,已可以通过流程主画布进行流程主框架的搭建,并且执行流程块
56
上有编辑、执行按键,并按照表 5.4中测试用例对该界面进行了功能测试。
表5.4 流程主画布测试用例
操作 预期结果 测试结果
拖拽开始结束模块 流程主画布上创建开始结束模块 通过
拖拽判断模块 流程主画布上创建判断模块 通过
设置判断逻辑 跳转至判断逻辑设置界面 通过
拖拽执行模块 流程主画布上创建执行模块 通过
设置执行流程 跳转至流程子画布界面 通过
拖拽流程线,设置流程执行顺序 各模块间正确相连 通过
 
2)流程子画布界面
流程子画布界面实现效果,如图 5.2所示。
 
 
 
4目nniHi hzmx •毗化■卓uwEms旳・
5@ 3SK« fiS21 KKCahiMun Wf •
e § ns)B8 bs«± -«»bt«eue»ei*ftJiB*w
7 = manti MnMWIunAfrtv tf-Afl Q
t Q naiai
9- 口 For^raif 律幵 O M 10 . 1 XI 引 4B7: mdn2
10- fCH貝帀 hWeft *nif ・用一• Pit
11@ ・•■入 na» ■•負中 *m ka nixMotNou-
12目 WftW入 &7i« Bfi = IMR *?. 'W&KKT
130 ■*<! ■卜 £« ■工 k.» t«
M Q
15<St M
160 ♦代 wn i v
17品g
is g nePHS es«± 'finzv
19 @ WKMfilOa WttPH hMM>
图5.2 流程画布子画布流程详细设计
从图中可以看出,已可以通过流程子画布进行执行流程详细设计,并且对各执行操
作组件可进行详细设置,并按照表 5.5中测试用例对该界面进行了功能测试。
操作 预期结果 测试结果
拖拽执行操作组件 流程主画布上创建对应执行操作组件 通过
鼠标键盘模拟操作设置 在设置界面上设置目标元素、鼠标键盘输入方式、
鼠标键盘输入类型、辅助按键等操作设置 通过
元素操作设置 在设置界面上设置元素对象、元素操作类型、元素
标志符等操作设置 通过
网页操作设置 在设置界面设置浏览器对象、链接地址、网页对象 等操作设置 通过
Office 操作设置 在设置界面设置启动方式、文件路径、保存路径等 操作设置 通过
数据处理设置 在设置界面设置操作类型、操作内容、提取方式等 操作设置 通过
网络连接设置 在设置界面设置请求方法、URL链接、结果保存
路径等操作设置 通过
文件操作设置 在设置界面设置文件对象、文件内容形式、文件编
码、文件保存路径等操作设置 通过
 
5.2.2 流程执行功能测试
在流程执行阶段,主要对鼠标键盘模拟操作、元素操作、网页操作、Office操作、数 据处理、网络连接、文件操作七大执行功能进行功能测试,结果如下。
(1)鼠标模拟操作功能测试 系统会依据鼠标模拟操作的设置进行鼠标模拟操作,鼠标模拟操作可实现对指定目 标的左键、右键、中间的单机、双击、长按、弹起等操作,并可设定 Alt、 Ctrl、 Win、 Shift 等所需的辅助按键,鼠标模拟操作的设置界面如图 5.3所示。
从图中可以看出,鼠标模拟操作的相关信息已经呈现,系统会根据操作设置进行鼠 标操作模拟,按照表 5.6中的测试用例对该界面进行了功能测试。
58
鼠标点击 X
當规高级(可选)错误处理
输入
 
辅助按復: Alt Ctrl Win Shift
 
确定
图5.3 鼠标模拟操作的设置界面
表5.6 鼠标模拟操作测试用例
操作 预期结果 测试结果
鼠标左键单机模拟 鼠标左键进行单击操作 通过
鼠标右键单机模拟 鼠标右键进行单击操作 通过
鼠标中键单机模拟 鼠标中键进行单击操作 通过
鼠标左键双击模拟 鼠标左键进行双击操作 通过
鼠标右键双机模拟 鼠标右键进行双击操作 通过
鼠标中键双机模拟 鼠标中键进行双击操作 通过
鼠标左键长按模拟 鼠标左键进行长按操作 通过
鼠标右键长按模拟 鼠标右键进行长按操作 通过
鼠标中键长按模拟 鼠标中键进行长按操作 通过
鼠标左键弹起模拟 鼠标左键进行弹起操作 通过
鼠标右键弹起模拟 鼠标右键进行弹起操作 通过
鼠标中键弹起模拟 鼠标中键进行弹起操作 通过
辅助按键模拟 进行预设的 Alt 键、 Ctrl 键、 Win 键、 Shift 键的辅助按键 通过
 
2)键盘模拟操作功能测试
系统会依据键盘模拟操作的设置进行键盘模拟操作,模拟操作可实现对指定目标的 文本写入,并根据实际情况设定输入后完成按键以及输入前进行点击,键盘模拟操作的 设置界面如图 5.4所示。
 
图5.4 键盘模拟操作的设置界面
 
从图中可以看出,键盘模拟操作的相关信息已经呈现,系统会根据操作设置进行键
盘操作模拟,按照表 5.7中的测试用例对该界面进行了功能测试。
表5.7 键盘模拟操作测试用例
操作 预期结果 测试结果
写入文本设定 根据设定的文本进行写入 通过
输入完成按键设定 输入完成后 按下预设的 TAB 键、 通过
ESC 键等按键,默认为无
输入前点击设定 键盘输入前对目标对象执行鼠标点 通过
击操作
 
(3)元素操作功能测试 系统会依据元素操作的设置进行元素操作,对指定元素目标进行元素属性获取与元 素属性设置,元素属性获取的设置界面如图5.5所示,元素属性设置的设置界面如图5.6所 示。
60
 
确定
图5.5 元素属性获取设置界面
设置元素属性(Web)
输入
网页对象;hWeb
目标元耒: 诗送择元夷辜
属性名称:
 
属性值:
确定
图5.6 元素属性设置界面
从图中可以看出,元素操作的相关信息已经呈现,系统会根据操作设置进行元素操
作模拟,按照表 5.8中的测试用例对该界面进行了功能测试。
浙江大学硕士专业学位论文 5 系统测试
表5.8 元素操作测试用例
操作 预期结果 测试结果
读取元素选择器 成功获取元素选择器包含内容 通过
读取元素文本内容 成功获取元素文本内容 通过
读取元素值 成功获取元素值 通过
读取元素链接 成功获取元素链接 通过
读取元素全部属性 成功获取元素全部属性 通过
读取元素属性 成功获取元素属性 通过
读取元素源代码 成功获取元素源代码 通过
设置元素链接 成功设置元素链接 通过
设置元素所在网页 成功设置元素所在网页 cookie 通过
cookie
设置元素 innerhtml 成功设置元素 innerhtml 通过
设置元素 outerhtml 成功设置元素 outerhtml 通过
设置元素 outertext 成功设置元素 outertext 通过
设置元素属性 成功设置元素属性 通过
 
(3)网页操作功能测试
系统会依据网页操作的设置进行网页操作,对指定浏览器进行网页链接打开与网页
关闭操作,网页打开操作的设置界面如图5.7所示,网页关闭操作的设置界面如图 5.8所
示。
62
 
确定
图5.7 网页打开操作设置界面
关闭网页 X
常规高级(可选)错误处理
输入
关囲择作:关囲Tab页面
网更对救:hWeb
确定
图5.8 网页关闭操作设置界面
从图中可以看出,网页操作的相关信息已经呈现,系统会根据操作设置进行网页操
作模拟,按照表表 5.9中的测试用例对该界面进行了功能测试。
表5.9 网页操作测试用例
操作 预期结果 测试结果
浏览器版本设置 根据 设置 打开 Internet Explorer、Goole 通过
Chrome、Firefox、Edge 及 360 浏览器
链接地址设置 打开指定 Url 链接 通过
关闭操作设定 根据设置关闭Tab页面或浏览器对象 通过
 
4)Office 操作功能测试
系统会依据 Offiice 操作的设置进行 Excel 文件操作,对指定 Excel 对象进行创建、
保存、读取、写入等操作,Excel对象打开操作的设置界面如图5.9所示,Excel对象保 存操作的设置界面如图5.10所示,Excel对象读取操作的设置界面如图5.11所示,Excel 对象写入操作的设置界面如图 5.12所示。
打开Excel X
常规错误私理
辎入
启动方式:®打开已有的Excels件 新建excel文件
文件路径;
驱动方式:宜动检测
是否可视化; < ©S
掃出
保存 Excel 至;excel
确定
图5.9 Excel 文件创建/打开操作设置界面
保存/另存Excel
常规镭褒处理
输入
Excel: excel
保存方式: 保存◎另存为
文件路径; r~i
处理方式:如果文件名在此络径下存在則頭盖
保存后关丙
确定
图5.10 Excel 文件保存操作设置界面
64
 
 
读取Excel
常规错误处理
辅入
Excel: excel
Sheet 贡名称;*Sheet1*
读取方式;行内容
行启:
取宇符串方式读取
输出
保存数据至:table Data
确定
图5.11 Excel 文件读取操作设置界面
 
从图中可以看出,Office操作的相关信息已经呈现,系统会根据操作设置进行Office 操作模拟,按照表5.10中的测试用例对该界面进行了功能测试。
表 5.10 Office 操作测试用例
操作 预期结果 测试结果
打开指定文件路径 Excel 文件 打开指定路径 Excel 文件,若 文件不存在则新建 通过
将 Excel 文件保存至指定文件路
将 Excel 文件保存至指定文件 路径,并根据设置进行覆盖保 存与非覆盖保存 通过
读取 Excel 文件 读取打开 Excel 文件指定 sheet 内容 通过
写入 Excel 文件 将指定内容根据覆盖、插入、追 加的方式写入 Excel 文件中指 定 sheet 页 通过
 
(5)数据处理功能测试 系统会依据数据处理的设置进行数据处理,对指定字符对象进行文本提取、包含判 断、文本替换等操作,文本提取操作的设置界面如图 5.13所示,文本包含判断操作的设 置界面如图 5.14所示,文本替换操作的设置界面如图 5.15所示。
 
图5.13 字符串提取操作设置界面
 
66
 
图5.14 文本包含判断操作设置界面
文本替换 X
常规構误处理
输入
内容费入:
瞽換方式:替换数字
获取第一个匹配项;@)是 否
忽晤大小写; 昱◎杳
替骐值:
蜡岀
结案保荐至:wtrReplace
确定
图5.15 文本替换操作设置界面
从图中可以看出,数据处理的相关信息已经呈现,系统会根据数据处理操作设置进
行数据处理,按照表 5.11中的测试用例对该界面进行了功能测试。
表5.11 数据处理操作测试用例
操作 预期结果 测试结果
提取文本对象指定字段 根据设置提取文本对象中的数 通过
字、电话、邮箱、身份证号、自
定义内容等字段
对文本对象与字段进行 根据设置对文本对象与字段进 通过
包含判断 行前缀、后缀、中间包含的包
含判断
对文本对象进行替换操 根据设置对文本对象进行数 通过
字、电话、邮箱、身份证号、自
定义内容等字段的定向替换
 
(6)网络连接功能测试
系统会依据网络连接的设置进行网络操作,对指定URL链接地址进行请求访问或 文件下载,Http请求操作的设置界面如图5.16所示,文件下载操作的设置界面如图5.17所 示。
HttpiS 求 X
常规高级(可选)错误处理
输入
谓求方法:© GEI POST PUT DELETE HEAD
URL
输岀
结果保存至:http Res
确定
图5.16 Http 请求发起操作设置界面
68
文件下载 X
常规高圾(可选)错误处理
输入
下载地址:I ~J
文件探存目录;
确定
图5.17文件下载操作设置界面
从图中可以看出,网络连接的相关信息已经呈现,系统会根据网络连接操作设置进
行网络操作,按照表5.12中的测试用例对该界面进行了功能测试。
表5.12 网络操作测试用例
操作 预期结果 测试结果
Http 请求 根据设置对指定 URL 链接,发起 GET、POST、 通过
PUT、DELETE、HEAD 等连接请求
文件下载 根据设置将指定下载地址文件对象保存至指 通过
定文件目录
 
(7)文件操作功能测试
系统会依据文件操作的设置进行文件操作,对指定文件进行读取、写入、复制、删除 等操作,文件读取操作的设置界面如图 5.18所示,文件写入操作的设置界面如图 5.19所 示,文件复制操作的设置界面如图 5.20所示,文件删除操作的设置界面如图 5.21所示。
 
 
图5.18文件读取操作设置界面
 
 
 
图5.19 文件写入操作设置界面
 
图5.20文件复制操作设置界面
 
 
 
 
 
从图中可以看出,文件操作的相关信息已经呈现,系统会根据文件操作设置进行相
关文件操作,按照表 5.13中的测试用例对该界面进行了功能测试。
表5.13 文件操作测试用例
操作 预期结果 测试结果
读取指定文件 对指定路径文件按UTF8、GBK、默
认编码等编码类型进行文件读取 通过
文件写入 对指定路径文件按UTF8、GBK、默
认编码等编码类型进行文件写入 通过
文件复制 将文件保存至指定路径,若存在同 名文件则根据设置进行覆盖、停止 复制、后缀增加等操作 通过
文件删除 删除指定路径下的指定文件 通过
 
5.3性能测试
本系统平台的性能测试包含以下两方面:首先是流程处理实时性测试,该系统为个 人办公电脑在个人终端电脑部署不涉及服务器接口请求与并发测试,流程操作响应性能 主要涉及单机环境下的系统处理与响应时长;其次是流程操作准确性测试,在实际生产 环境下,该系统执行准确率对日常业务产生直接影响,这要求系统具有极高的运行准确 率。
5.3.1 流程操作响应性能测试
系统响应速度是本系统的性能指标之一,系统流程执行时长由本系统处理响应时长 与执行系统响应时长两部分组成,执行系统响应时长与终端电脑响应速度、执行系统接 口响应速度、业务设定等因素有关,不同业务、不同终端、不同执行系统差异性较大 不在本次测试范围内。本文通过埋点计时,模拟实际应用场景使用情况,对不同的执行 操作进行 1000次实时性测试,获取平均响应时间,结果如表 5.14所示。
72
表5.14 系统操作响应性能测试结果
测试次数 测试功能 平均响应时间(ms)
鼠标点击操作 74
键盘输入操作 89
元素属性读取 75
元素属性设置 81
网页打开操作 875
网页关闭操作 76
Excel 文件打开 476
Excel 文件保存 97
Excel 文件读取 431
1000 Excel 文件写入 89
文本提取 47
文本包含判断 32
文本替换 35
Http 请求 756
文件下载发起 677
文件读取 76
文件写入 53
文件复制 435
文件删除 51
 
由测试结果可得,不涉及文件读写与接口访问的操作平局响应市场都在 100毫秒以 内,涉及接口访问的操作,由于受第三方系统响应时长限制,会有明显的响应时长增加 但也均在 1000毫秒以内,涉及文件读写的,受文件大小限制也有明显的响应时长增加 但也均在 500 毫秒以内。考虑到日常业务处理的实际情况,该响应速度已满足日常工作 要求,测试结果表明系统响应性能满足设计预期。
5.3.2 流程操作准确性测试
流程操作准确性是本系统的重要性能指标,在实际生产环境下,该系统执行准确率 对日常业务产生直接影响,对系统操作执行准确率提出了高要求。本文在生产环境个人 办公电脑终端上,进行了系统流程操作准确性测试。通过测试流程搭建,模拟实际应用 场景使用情况,对不同的执行操作进行 1000次准确性测试,获得流程操作执行准确率 结果如表 5.15所示。
表5.15 系统操作准确性测试结果
测试次数 测试功能 执行准确率 平均执行准确率
鼠标点击操作 100%
键盘输入操作 100%
元素属性读取 100%
元素属性设置 100%
网页打开操作 100%
网页关闭操作 100%
Excel 文件打开 100%
Excel 文件保存 100%
Excel 文件读取 100%
1000 Excel 文件写入 100% 100%
文本提取 100%
文本包含判断 100%
文本替换 100%
Http 请求 100%
文件下载发起 100%
文件读取 100%
文件写入 100%
文件复制 100%
文件删除 100%
 
74
由测试结果可得,系统在生产环境个人办公电脑终端上进行流程操作执行,未出现 执行错误,各功能执行准确率为100%,平均执行准确率为 100%,系统操作准确率满足 日常工作要求,测试结果表明系统流程操作准确性满足设计预期。
5.4本章小结
本章针对所涉及的面向电力营销的 RPA 系统平台进行了全面的测试,包括功能测 试与性能测试。功能测试主要包括包括流程画布界面及功能测试与流程执行功能测试 通过测试证明各项设计功能均已实现,本文设计系统达到设计预期。性能测试包括流程 操作响应性能测试与流程操作准确性测试,通过性能测试验证了不涉及文件读写与接口 访问的操作平局响应市场都在 100 毫秒以内,涉及接口访问的操作,均在 1000 毫秒以 内,涉及文件读写的,均在 500毫秒以内,功能执行准确率为100%。测试结果表明,本 文研发的面向电力营销的 RPA 系统平台符合预期需求。
6系统实施与应用效益分析
6.1供用电合同自动生成
6.1.1场景概述
电网公司每年在高压新装增容、临时用电、合同续签、减容过户等业扩流程方面编 制的合同数量约为 15 万份,以每份合同编制校核 30 分钟计算,耗费逾 7.5万小时,且存 在容易产生人为差错、业务规则不够统一、合同版本管理难等问题。针对上述问题,本 文进行了详细的业务调研。以合同续签流程为例,完成一份合同的起草,基层人员首先 需要登录营销稽查系统,选择供电单位与预警主题,导出合同超期预警清单,然后登录 营销业务应用系统,根据预警清单中的用户编号,通过客户信息统一视图模块查询合同 所涉及供电电源、计量计费等信息,并根据一定的业务规则进行计算汇总、判断加工完 成合同信息填写,最后完成产权分界点示意图、授权委托书等合同附件编辑维护工作 完成合同起草工作。整个环节涉及 2 套业务系统、27 个操作环节、66 项业务信息。供 用电合同自动生成业务流程示意图如图 6.1所示。
 
图6.1 供用电合同自动生成业务流程示意图
 
通过可视化界面搭建供用电合同自动生成流程框架,进入流程子画布设计具体业务
流程,配置鼠标点击供电单位、预警等级、导出菜单等操作指令。利用网页元素自动获
取功能,配置营销系统各级页面需获取的业务字段,自动得到合同需要的数据信息。最 后,通过运行编辑后的自动化业务流程完成数据处理和业务逻辑实现,存放在 JSON 文 件,将数据、文字、图片自动填入到预先配置好变量的合同模板,完成合同生成工作。
6.1.2流程搭建
根据供用电合同编写业务流程设计 RPA 流程自动化程序,通过本文设计的系统平 台,实现供用电合同自动生成,流程搭建情况如图 6.2所示。
 
图6.2供用电合同自动生成RPA流程设计图
 
供用电合同自动生成 RPA 程序执行流程如下:(1)自动登录营销数智稽查云平台, 在高压供用电合同超期预警界面,根据供电单位、预警等级查询并筛取预警等级为一级 及以上(即距合同超期 45 天以内)的用户列表。如图 6.3所示。
 
图 6.3 营销数智稽查云平台-高压合同续签待生成户号筛取
 
78
 
 
(2)自动登入营销业务系统,检索营销业务系统中处于竣工报验(或合同起草)环
节的流程,生成“待生成合同流程号”清单。如图 6.4所示。
 
 
 
图6.4 供用电合同待生成流程清单
(3)根据供用电合同待生成流程清单,在营销业务系统中通过户号查询用户统一视 图相关信息。如图 6.5所示。
 
(4)将营销业务系统中爬取的合同封面、用电地址、用电计量、电价电费、电费支 付及结算、用户联系方式、签署页信息、产权分界点示意图、授权委托书等用户相关信 息,按照指定结构存储至json数据文件。如图6.6所示。
'行业分类'高等教育',
'用电类别‘:'乡村居民生活用电
'负商性质•: ■二类',
'负商时间特性':•非连埃性负荷
'用户编号':6010863599,
'用户名称‘:
'受电点数1,
'核罡容■': (12900',
'受电设备K#': 16,
'受电变压器字典':[
{
'受电变压器规格*1250*, '受电变压器规格对应数ar: 4, '绸号‘:1>,
{
'受电变压器规格,800,,
'受电变压器规格对应数虽':8,
'编号':2 '受电变压器规格■: ,500,, '受电变压器规格对应数曼’:2, '编号‘:3
'受电变压器规格*: *250*, '受电变压器规格对应数塑':2, '编号':4
}
j源计廉点互感器联合列袞':[
'变电所信息';<<<<<<<<<•?
'址路';'学宿9685妊,.
'编号’:1,
'线路类型X '公用
'逬线方式'电塑管井
'电源性质X '主供1',
'供电电压X 1®,
JSON数据文件
图6.6 供用电合同填写所需用户信息
(5)将数据、文字、图片自动填入到我们预先配置好变量的合同模板,完成合同生 成工作。如图 6.7所示。
80
第一章供用电基本情况
1.用电地址
用电人用电地址位于:1:二工二,工二・二(「二;工;工
2.用电性质 _
2/1行业分类:[ 高等教育 1
2.2用电分类;乡村居民生活用电.
2.3负荷特性:
(1 )负荷性质:二类.
(2)负荷时间特性:非连续性负荷、
3.用电容虽
用电人共有匕个受电点,用电容S 12900千瓦(千伏安)。
3.1工•工1工工〕工〕工…受电点有受电变压器|l6〕台。其中, 1250 1-伏安变压器主台,800千伏安变压器8台,500千伏安变压器 Z台,250千伏安变压器2台.共计12900千伏安。
4.供电方式
4.1供电方式
供电人向用电人提供医电源、凰回路三相交流50蘇兹电源。
(1 )第一路电源
电源性质:主供1
供电人由交流220kV「工1变电站,以鱼千伏电压,经出口峑 宿9685践开关送出的电缆管井公用线路”向用电人:;
1___二_1二受电点供电,
供用电合同生成结果
图6.7 供用电合同生成结果
6.2企业有序用电自动化预警
6.2.1场景概述
电力营销传统用电预警主要通过短信发送的方式告知用户,存在客户互动低、友好 度不高、人工依赖度大等问题,同时对于部分联系人信息不准确的企业,会导致预警信 息无法准确有效传递。尽管业务部门也要求客户经理通过电话方式对用户进行通知提 醒,但仍难以避免出现通知不及时、通知遗漏、通知信息不准确等问题。从而本文设计
了一种有企业有序用电自动化预警方案,有效替代人工电话通知提醒方式,建立一套标 准化的用电预警作业模式,大幅减轻了客户经理的用电预警工作量,在确保用户在第一 时间获知用电预警信息并合理安排生产计划的同时,还可有效记录客户关于停电的诉 求、疑义等,继而通过短信、电话等方式通知对应客户经理进行人工跟进,切实提升用 户用电体验和优质服务水平。
针对有序用电用户(现用户 1200 户左右),企业有序用电自动化预警程序定时 从电力需求侧实时管理系统拉取超限用户清单,并对智能语音机器人拨打智能语音提 醒电话,提醒用户超限负荷数与负荷指标。企业有序用电自动化预警业务流程示意图 如图 6.8所示。
 
图6.8 企业有序用电自动化预警业务流程示意图
 
6.2.2流程搭建
根据企业有序用电预警业务流程设计 RPA 流程自动化程序,通过本文设计的系统 平台,实现供用电合同自动生成,流程搭建情况如图 6.9所示。
82
 
 
图6.9企业有序用电自动化预警RPA流程设计图
 
企业有序用电自动化预警 RPA 程序执行流程如下:(1)自动打开 chrome 浏览器 输入网址,打开电力需求侧实时管理系统,如图 6.10所示。
 
图 6.10 电力需求侧实时管理系统登录界面
 
(2)自动输入存储在 Excel 表格中的账号密码信息登录系统,登录系统后自动点击 负荷检测按钮,如图 6.11所示。
 
图6.11 电力需求侧实时管理系统主界面
 
3)点击有序用电负荷监视,并点击用户负荷监控,如图 6.12所示。
 
图6.12 电力需求侧实时管理系统负荷检测界面
 
(4)根据每个用户用电量是否超出用电指标,配置查询条件并进行查询,导出超限 用户名单及负荷量,如图 6.13所示。
 
图6.13 电力需求侧实时管理系统用户符合详情
 
84
(5)根据用户名单进行短信,提示用户超限多少负荷,请控制到多少负荷以下 如图 6.14所示。
中CD#动 4G
«■■■!【有序用
电】尊敬的客户(户号
方案,请您在2021年09 月28日前执行到位,并在 每天的早峰时段内实 际用电负荷保持在OkW以
下,晚峰时段17・23内实 际用电负荷保持在OkW以 下,感谢您的支持与配合。
 
图 6.14 超限用户短信提醒
6.3企业负荷管理自动化提醒
6.3.1场景概述
企业负荷管理自动化提醒,针对负荷管理名单用户,从电力用户用电信息采集系统 抽取用电信息,根据式 6-1计算当日实时电量。
当日实时电量=[即时正向有功(总)一零点时刻正向有功(总)]* PT * CT ] (6-1)
将用户当日实际用电量、日均基准用电量与用户当月累计用电量、当月用电指标对 比,将超出用电指标的进行标记,生成企业电量检测情况,根据用电情况向企业拨打语 音电话,提醒用户按照要求控制负荷生产,企业电量检测情况如图6.15所示。
 
图 6.15 2021 年 11 月 1-9 日重点管控企业电量检测情况
在用户负荷管控的基础上,企业负荷管理自动化提醒程序同时也对各乡镇街道的每 日工业电量进行统计及分析。针对这部分电量数据,RPA在用电信息采集系统上抽取全 市每日专变电量信息,根据地址信息的自动匹配筛选,计算各乡镇街道每日的工业专变 用电量,并进行统计排名,当某个乡镇街道月累计用电量超过当日指标时,将拨打语音 提醒电话,联系乡镇街道负责人用电指标已超,督促职能部门根据实际情况对当地用电 量较大企业实施管控,乡镇街道工业专变电量监测情况如图 6.16所示。
序号 镇(街道、区) 日均基准用电量 11. 26工业专变 电虽 超预巻基准率 (*) 11.1-11. 26 工业专变电星 累计 日均实际 工业专变电星 累计超预巻基准率 (%)
1 a 0. 70 0. 56 T9. 86 12. 54 0. 48 -31.11
2 11. 68 12. 03 2. 98 292.17 11.24 -3. 79
3 24. 52 29. 46 20・ 15 637. 99 24.54 0 07
4 ..街道 41. 45 47. 99 15. 78 1138. 33 43. 78 5 63
5 65. 00 74.32 14. 35 1812.18 69. 70 7 23
6 90. 39 97. 39 7. 75 2556. 02 98. 31 8 76
7 107. 92 124. 47 15. 33 3053. 85 117. 46 8 84
8 55. 54 66. 00 18. 84 1602. 55 61.64 10 98
9 ..镇 44. 60 53. 82 20. 67 1292.18 49.70 11 43
10 42・ 83 37. 20 -13.15 1242. 24 47. 78 11 55
11 —镇 52. 30 59. 39 13. 56 1530. 52 58. 87 12 55
12 衙道 41.10 49. 08 19. 41 1204. 69 46・ 33 12 74
13 •开发区 250. 00 270.90 & 36 7328.19 281. 85 12 74
14 ...€ 24. 48 25. 48 4. 09 720. 87 27.73 13 2&
15 17. 50 12. 85 -26. 58 516. 24 19. 86 13 46
16 工新区 140. 00 166. 75 19. 11 4145. 61 159. 45 13 89
乡锁合计 1010. 01 1127.69 11. 65 29086.16 70 10 76
 
图6.16 各镇(街道、区)11 月1 日至11 月26 日工业专变电量监测情况
企业负荷管理自动化提醒业务流程示意图如图 6.17所示。
86
 
 
6.3.2流程搭建
根据企业负荷管理提醒业务流程设计 RPA 流程自动化程序,通过本文设计的系统 平台,实现供用电合同自动生成,流程搭建情况如图 6.18所示。
 
图6.18企业负荷管理自动化提醒RPA流程设计图
 
企业负荷管理自动化提醒RPA程序执行流程如下:(1)自动打开chrome浏览器, 输入网址,打开营销业务应用系统,自动输入存储在Excel表格中的账号密码信息进行 登录,如图 6.19所示。
 
(2)登录系统后自动全景展示按钮,进入用户视图, 输入用户户号查询,并跳转进 入负荷数据界面,如图 6.20所示。
 
(3)设置用户用电数据查询条件查询用户当月用电量,选择一次侧数据,选择起始 时间为当月第一天,查询并将用户电量数据下载至项目文件夹下的“原始数据”文件夹 中,查询记过图 6.21所示。
88
 
图6.21 电力用户当月用电量详情
(4)设置根据电力用户用电信息采集系统下载得到用户用电数据计算得到当月用电
指标、日均基准用电量等企业用户电量信息与负荷信息详细数据如图 6.22所示。
曰开始 播入 砸布W 公式 故至 钿 視闵 开庄卫持色功誉
» H •£] © G *0▼ &)48138003(»JM5SSX.csv・ x +
 
 
图6.22 企业用户电量信息与负荷信息详细数据
(4)设置当月日均超预警基准、当月日均超预警基准率,生成重点管控企业电量情 况监测表,如图 6.23所示。
 
图6.23 重点管控企业电量情况监测表
6.4疫情防控违规用电管理
6.4.1场景概述
疫情防控违规用电管理,针对低压用户,使用本文设计的系统平台自动进入用电信 息采集系统的统计查询页面,通过数据分析模块下的电量分析-电量数据查询子模块,获 取疫情管控区域石柱供电营业所下的低压用户的当日用电数据,依据低压用户当日用电 量大于 10 度判定是否存在防疫期间违规用电现象,同时增加与昨日比较产生的增幅百 分比指标。最终将筛选出的结果保存为 excel 文件供防疫人员使用;针对高压用户,使 用本文设计的系统平台自动进入用电信息采集系统的统计查询页面,通过数据分析模块 下的负荷分析-负荷曲线分析子模块,获取疫情管控区域石柱供电营业所下的专变用户 的负荷曲线数据,依据专变用户从0点至8点其中一个时间点的负荷是否大于4kw判 定是否存在防疫期间违规用电现象,同时增加与昨日比较产生的增幅百分比指标。最终 将筛选出的结果保存为Excel文件供防疫人员使用。疫情防控违规用电管理业务流程示 意图如图 6.24所示。
90
 
6.4.2流程搭建
根据疫情防控违规用电管理业务流程设计 RPA 流程自动化程序,通过本文设计的 系统平台,实现供用电合同自动生成,流程搭建情况如图 6.25所示。
 
疫情防控违规用电管理RPA程序执行流程如下:(1)自动打开chrome浏览器,输 入网址,打开营销业务应用系统,自动输入存储在Excel表格中的账号密码信息进行登 录,如图 6.26所示。
 
图6.26 营销业务应用系统登录界面
 
(2)登录系统后进入电力用户用电信息采集系统,针对低压用户,点击数据分析按
钮,选中电量分析,呼出子菜单,选择电量数据查询,如图 6.27所示。
 
图6.27 电力用户用电信息采集系统统计查询界面
 
(3)选择疫情管控区域,选择低压用户,开始查询并下载保存电量数据查询结果表 格,如图 6.28所示。
92
 
图6.28 电力用户用电信息采集系统疫情管控低压用户查询界面
4)针对专变用户,点击数据分析按钮,选择负荷曲线分析,如图 6.29所示。
•- Windows Internet Explorer
 
图 6.29 电力用户用电信息采集系统统计查询子界面
(5)单击负荷曲线明细按钮,双击疫情管控区域使得填入查询节点,查询并下载负 荷曲线数据查询结果表格,如图 6.30所示。
 
6.5应用效益分析
目前,本文开发的面向电力营销业务的 RPA 系统平台在电网企业进行了自动化业 务流程的开发与部署,并选取了四个业务场景开展了 RPA 流程自动化的改造实施工作 并投入生产环境运行使用,其中,供用电合同自动生成已实现全省推广应用,企业有序 用电自动化预警、企业负荷管理自动化提醒与疫情防控违规用电管理仍在金华永康公司 开展试点应用。针对已完成实施的业务场景,电网公司员工可通过直接运行实现业务工 作的自动执行;针对尚未开展实施的场景,电网公司员工能够通过办公电脑自行开展日 常业务的实施 RPA 工作,根据业务实际情况编辑执行操作方法,流程设计完毕后通过 运行流程文件实现业务工作的自动化。本系统平台及应用部署实施后为电网企业带来了 实际的应用成效与价值。
在人力成本节约方面,(1)供用电合同自动生成场景,截至目前,在高压新装增容 合同续签、临时用电、减容等业扩流程方面编制的合同数量约15万份,每份合同人工编 制校核时间约为30分钟,RPA流程实施应用后实现了合同的全自动编制校核,人力成 本节约逾7.5万小时。(2)企业有序用电预警、负荷管理提醒、疫情防控违规用电管理场 景,人工完成一户用户数据采集与整合需要5分钟,RPA流程实施应用后实现了 100% 的业务工作自动化,金华地区涉及负荷数据管控户数 2340 户,按照工作日250 天计算 全年累计消耗时间 2925000 分钟,按照每天5 小时工作时间测算,全年可节省9750 人 天,相当于 39 名客户经理的全年工作量,人力成本节约效果显著。在企业运行效率提 升方面,。基于本文研发系统平台开发的自动化程序运行后,该程序可100%替代人工
94 
完成原有业务工作,并将相关基层业务人员从原有逻辑简单重复工作中解脱出来,投入 到附加值更高的工作中,大幅提升了电网企业的业务工作运行效率。
系统应用后,除了效益分析,还对 13 位高压客户经理进行了访谈,高压客户经理 的年龄分布如图 6.31所示。针对已完成实施的业务场景,15 位高压客户经理均对系统 的应用实施表示了认可,原先需要人工完成的供用电合同编制和企业有序用电、负荷管 理、疫情防控违规用电数据采集整合工作均可通过 RPA 自动化实现,合同编制与数据 采集整合的准确率表示了肯定,大幅减轻了员工的工作负担。
客户经理年龄分布
8
 
 
访谈中发现,针对通过系统自行开展自动化业务流程设计的分歧较大,6 位高压客 户经理表示可视化的流程编辑操作界面很方便的帮助他们对日常较为重复繁琐的工作 进行 RPA 实施改造,4 位高压客户经理表示通过系统自行开展业务流程的设计具有一定 的门槛,但可以通过学习自行开展自动化业务流程的设计,还有 3 位高压客户经理表示 开展自动化业务流程设计比较困难,不易自行完成,系统使用感受及年龄分布具体情况 如表 6.1所示。经分析得,由于年龄和编程经历等因素,通过本系统平台自行开展自动 化业务流程设计具有一定的门槛,具体地,对于年龄较轻且具有编程经历的用户更易接 受通过系统自行开展自动化业务流程设计。
表6.1 系统使用感受、年龄、编程经历情况
使用感受 年龄段 人数 编程经历
3人均有编程经历,1人
20-30 岁 4
没有编程经历
简易方便,流程设计功能容易上手 30-40 岁 2 2 人均有编程经历
40-50 岁 0 /
50-60 岁 0 /
20-30 岁 0 /
2 人有编程经历,1 人
中等,可通过学习完成流程自行设计 30-40 岁 3 接触过编程
40-50 岁 1 1 人有编程经历
50-60 岁 0 /
20-30 岁 0 /
30-40 岁 0 /
困难,不易自行开展流程自行设计
40-50 岁 1 1 人无编程经历
50-60 岁 2 2 人均无编程经历
 
综上,本系统平台的部署与业务场景的实施应用能够帮助电网公司实现人力成本的 节省,帮助企业实现部分业务的自动化,提升工作效率和工作质量,系统达到了设计的 预期。
6.6本章小结
本章是系统的实施与应用效益分析。根据浙江国网公司业务痛点与实施需求,开展 了面向电力营销业务的RPA系统平台的应用实施工作。针对供用电合同自动生成、企 业有序用电自动化预警、企业负荷管理自动化提醒、疫情防控违规用电管理四个业务场 景,梳理业务流程,搭建RPA自动化作业流程,对实施过程展开了详细的阐述,并进行
96
了效益分析。所述场景在生产环境中完成部署实施,投入日常使用,在实际生产中验证 系统的功能与性能。
7总结与展望
7.1 总结
本文围绕电网公司业务系统众多、部分系统使用年限较长,针对新出现的业务需求 往往无法及时做出更新响应,电网公司职员存在大量逻辑简单、机械重复、附加值低 跨系统操作的业务工作,效率问题突出等问题开展研究,基于 RPA 机器人流程自动化 技术,设计了一款面向电力营销业务的 RPA 系统平台。该平台能够帮助电网公司实现 人力成本的节省,帮助企业实现部分业务的自动化,提升工作效率和工作质量,具备工 程应用价值。
本文的主要工作以及创新点总结如下:
(1)分析了电网公司在数字化转型过程中遇到的业务系统增多、系统操作类工作增 多带来的问题,因此需要可视化搭建、操作便利、逻辑清晰的 RPA 机器人流程自动化 平台,基于此,整理并研究了面向电力营销业务的 RPA 系统平台的需求分析与设计。
(2)针对网页界面元素拾取,本文创新性地提出了一种基于 DOM 树的相对路径 RPA 系统网页元素定位方法,通过从下往上依次遍历 DOM 结构树以及广度优先搜索算 法实现目标元素的定位。与传统基于网页解析器以及目标元素检测识别方法相比,不依 赖于模型及数据集具有更强的准确性及稳定性。
(3)流程的可视化搭建的过程,使用流程画布进行可视化流程框架搭建,为了更好 适应实际业务场景,自定义了鼠标键盘操作模拟、元素操作、网页操作、Office操作等 七类操作方法对象,针对元素拾取所得目标对象设定各执行动作的具体操作方法与设定 方法参数,实现业务流程操作的详细设计。
(4) 针对流程的执行与调试过程,进行了工作流应用服务设计,工作流应用服务与 流程模块在同一程序域并行运行,工作流应用服务用于完成工作流任务,当流程执行时 工作流应用服务会生成工作流实例,调用工作流服务并通过工作流运行对象执行,每一 流程模块都有对应的工作流运行对象实例,实例即是正在执行的工作流任务,能根据流 程模块的运行自行执行对应活动。
(5) 针对供用电合同自动生成等四个电网公司常用业务场景开展了流程的设计与实
施,并在生产环境中实现应用。其中,供用电合同自动生成已实现全省推广应用,企业 有序用电自动化预警、企业负荷管理自动化提醒与疫情防控违规用电管理仍在金华永康 公司开展试点应用,帮助电网公司实现人力成本的节省,帮助企业实现部分业务的自动 化,提升工作效率和工作质量。
7.2展望
本文针对RPA流程自动化平台的开发与电力营销业务自动化展开了研究,并取得 了一定成果,但是任有许多不足之处需要改进,这里对未来工作提出一些展望:
1、 本文开发系统的流程设计模块,元素拾取功能是通过调用Windows系统系统函 数WindowFromPoint()根据鼠标位置获取窗口句柄实现的,但有些外部应用对界面进行 二次封装,无法通过系统Windows系统系统函数的方式获取元素信息。针对此种情况, 可通过OCR技术进行图像对比实现元素拾取,电网公司的内部系统未进行界面二次封 装,均可通过调用Windows系统函数实现元素拾取,本文未对基于OCR的元素拾取功 能进行开发。
2、 本文设计的RPA系统平台可通过业务流程搭建、编辑实现业务流程的自动化运 行,但未进行RPA数据中台的设计与开发,针对自动化流程运行情况的可视化监控与 运行成效统计展示方面存在欠缺。
3、 本文设计的RPA系统平台在流程设计搭建方面仍存在一定的使用门槛,年龄较 大且没有编程基础的用户使用较为困难,后续将对程序易用性方面进行进一步的优化提 升。
4、 本文设计的RPA系统平台为引入NLP、CV等人工智能前沿技术,针对仅涉及数 据采集与处理的业务场景有较好的自动化改造效果,但针对涉及语义理解、图像处理 决策分析的场景仅能实现部分业务流程的改造优化,后续将开展人工智能技术与 RPA 技术的融合研究。
100
参考文献
[1]AXMANN B, HARMOKO H. The Five Dimensions of Digital Technology Assessment with the Focus on Robotic Process Automation (RPA)[J]. Tehniki glasnik, 2021.
[2]TRIPATHI A M. Learning robotic process automation : create software robots and automate business processes with the leading RPA tool, UiPath[J]., 2018.
[3]DONG R, HUANG Z, LAM I I, et al. WebRobot: Web Robotic Process Automation using Interactive Programming-by-Demonstration[J]., 2022.
[4]牛利娟,张露丹.关于”互联网+电力营销”提升客户优质服务感知度的探讨J].科学与信息化, 2020.
[5]涂莹,朱炯,裘华东,等.面向”互联网+电力营销”的智能互动服务创新体系架构[J].中国电力, 2017, 50(9): 5.
[6]李达伟.基于电力营销大数据的数据融合共享平台研究与应用[J]., 2020.
[7]TAULLI T. The Robotic Process Automation Handbook: A Guide to Implementing RPA Systems[M]. [S.l.]: The Robotic Process Automation Handbook: A Guide to Implementing RPA Systems, 2020.
[8]LENO V, AUGUSTO A, DUMAS M, et al. Discovering executable routine specifications from user interaction logs[J]., 2021.
[9]WILLCOCKS L P, LACITY M, CRAIG A. The IT function and robotic process automation[J]. LSE Research Online Documents on Economics, 2015.
[10]AGOSTINELLI S, MARRELLA A, MECELLA M. Towards Intelligent Robotic Process Automation for BPMers[J]., 2020.
[11]WENTK R. Script Windows batch file[J]. APC (Bauer Media Group), 2008.
[12]HARMOKO H, AXMANN B. Robotic Process Automation: An Overview and Comparison to Other Technology in Industry 4.0[C]//2020 10th International Conference on Advanced Computer Infor- mationTechnologies(ACIT).[S.l.:s.n.],2020.
[13]PERRY G. SpPack: spatial point pattern analysis in Excel using VisualBasicforApplications(VBA)[J]. Environmental Modelling & Software, 2004, 19(6): 559-569.
[14]黄朝阳.Excel2013VBA编程与实践[M].[岀版地不详]:Excel2013VBA编程与实践,2015:5-17.
[15]HAMMER M, CHAMPY J. Reengineering the corporation: A manifesto for business revolution[J]., 1993, 36(5): 0-91.
[16]MADAKAMS,HOLMUKHERM,JAISWALDK.TheFutureDigitalWorkForce:RoboticProcess Automation (RPA)[J]. Journal of Information Systems and Technology Management, 2019, 16.
[17]KHAN S. COMPARATIVE ANALYSIS OF RPA TOOLS-UIPATH, AUTOMATION ANYWHERE AND BLUEPRISM[J]., 2020.
[18]BATHGATE A. Robotic Automation Specialist Blue Prism Partners with SSON for European Shared Services Meeting[J].,
[19]GAWADE S. Effectiveness of Robotic Process Automation for data mining using UiPath[C]//2021 International Conference on Artificial Intelligence and Smart Systems (ICAIS). [S.l. : s.n.], 2021.
[20]SUJATHA S, PRASANTH S H. Cloth Consultant Robot With Temperature & Weather Report Using Uipath - Rpa[C]//2021 Third International Conference on Intelligent Communication Technologies and Virtual Mobile Networks (ICICV). [S.l. : s.n.], 2021.
[21]LENOV, DEVIATYKH S, POLYVYANYY A, etal. Robidium: Automated Synthesis of Robotic Process Automation Scripts from UI Logs[C]//The Best Dissertation Award, Doctoral Consortium, and Demonstration & Resources Track at BPM 2020. [S.l. : s.n.], 2020.
[22]JeffreyRichter,里克特,Richter,等 Windows核心编程[M].[岀版地不详]:Windows核心编程, 2005:1-17,35-51.
[23]徐建波,周新莲.Web设计原理与编程技术[M].[岀版地不详]:Web设计原理与编程技术,2005: 112-127.
[24]MORI S, SUEN C Y, YAMAMOTO K. Historical review ofOCR research and development[J]. IEEE Computer Society Press, 1995.
[25]AGOSTINELLI S, MARRELLA A, MECELLA M. Towards Intelligent Robotic Process Automation for BPMers[J]. ArXiv, 2020, abs/2001.00804.
[26]AGUIRRE S, RODR^GUEZ A. Automation of a Business Process Using Robotic Process Automation (RPA): A Case Study[C]//WEA. [S.l. : s.n.], 2017.
[27]CHEN Y, HERSKOVITZ J, LASECKI W S, et al. Bashon: A Hybrid Crowd-Machine Workflow for Shell Command Synthesis[C]//2020 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). [S.l. :s.n.],2020.
[28]张瑾.WWF开发指南[M].[岀版地不详]:WWF开发指南,2008: 17-25, 53-61.
[29]苗林,金涛,王建民.XPDL模型到WWF模型转换技术的研究[C]//Ndbc中国数据库学术会议. [岀版地不详:岀版者不详],2009.
[30]ToddKitta. Windows Workflow Foundation 高级编程[M].[岀版地不详]:Windows Workflow Foundation 高级编程, 2008: 251-267.
[31]黄媛媛.基于WWF工作流的开发过程研究[J].湖南邮电职业技术学院学报,(4):28-34.
[32]杜菁.数据库技术与应用新概念教程[M].[岀版地不详]:数据库技术与应用新概念教程,2011: 81-93.
[33]罗宾逊等著,杨浩.C#高级编程[M].[岀版地不详]:C#高级编程,2002: 132-157.
[34]FISCHER M H, CAMPAGNA G, CHOI E, et al. DIY assistant: a multi-modal end-user programmable virtual assistant[C]//PLDI '21: 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation. [S.l. : s.n.], 2021.
[35]MARTIN R. Clean Architecture[J].,
[36]TAL, ZILBER G, BIRAN G. System architecture[Z]. 2003.
[37]FerdowsifardKasra, BarkeShraddha, PelegHila, et al. LooPy: interactive program synthesis with control structures[J]. Proceedings ofthe ACM on Programming Languages, 2021.
[38]RICHTER J.框架设计[M].[岀版地不详]:框架设计,2006: 33-57.
[39]WIDENIUS M, AXMARK D, DUBOIS P. Mysql Reference Manual[M]. [S.l.]: Mysql Reference Manual, 2002.
[40]曾超宇,李金香.Redis在高速缓存系统中的应用[J].微型机与应用,2013, 32(12):3.
[41]MACDONALD M. Pro WPF 4.5 in VB[M]. [S.l.]: Pro WPF 4.5 in VB, 2013.
[42]DENG X, SHIRALKAR P, LOCKARD C, et al. DOM-LM: Learning Generalizable Representations for HTML Documents[J]., 2022.
[43]SHAO F, XU R, HAQUE W, et al. WebEvo: taming web application evolution via detecting semantic structure changes[C]//ISSTA '21: 30th ACM SIGSOFT International Symposium on Software Testing and Analysis. [S.l. : s.n.], 2021.
[44]RAZA M, GULWANI S. Web Data Extraction using Hybrid Program Synthesis: A Combination of Top-down and Bottom-up Inference[C]//SIGMOD/PODS '20: International Conference on Management of Data. [S.l. : s.n.], 2020.
[45]NUSHI B, KAMAR E, HORVITZ E, et al. On HumanIntellect and Machine Failures: Troubleshooting Integrative Machine Learning Systems[J]., 2016.
[46]PAILOOR S, WANG Y, WANG X, et al. Synthesizing data structure refinements from integrity con- straints[C]//PLDI '21: 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation. [S.l. : s.n.], 2021.
[47]李朝,彭宏,叶苏南,等.基于DOM树的可适应性Web信息抽取[J].计算机科学,2009, 36(7): 3.
[48]王磊,蒋建中,郭军利.基于扩展DOM树的Web页面信息抽取[J].计算机应用与软件,2007, 24(6): 3.
[49]张瑞雪,宋明秋,公衍磊.逆序解析DOM树及网页正文信息提取[J].计算机科学,2011, 38(4): 4.
[50]MatthewMacDonald,麦克唐纳,王德才.WPF编程宝典[M].[岀版地不详]:WPF编程宝典,2011: 21-43.
[51]MATTHEWMACDONALD. WPF 编程宝典:C#2010 版[M].[岀版地不详]:WPF编程宝典:C#2010 版, 2011: 43-57.
[52]霍晓钢.数字媒体系统开发中基于WPF的行为的应用[J].计算机时代,2020(8): 4.
[53]吴朝晖,邓水光.工作流系统设计与关键实现[M].[岀版地不详]:工作流系统设计与关键实现, 2006.
102
[54]李智桦.Windows Work^ow Foundation新一代工作流开发实务[M].[岀版地不详]:Windows Workflow Foundation 新一代工作流开发实务, 2008: 1-157.
[55]田绍华.基于Workflow Foundation的工作流引擎开发[D].复旦大学:63-77.
【本文地址:https://www.xueshulunwenwang.com//shuoshilunwenzhuanti/dianlixitongjiqizidonghua/5297.html

上一篇:光伏并网发电系统的谐波检测与抑制硏究

下一篇:基于路面谱的电动助力转向系统 实验台加载系统的研究

相关标签: