[TOC]
这篇文章主要说明如何脱离官方给出的开发手册并且不使用Orchestrator来如何完成UiPath学院高级认证中的第二大题"计算客户加密哈希值"(Calculate Client Security Hash)。
一、题目解析
该题目主要是从ACME网站中,获取类型为WI5的数据的详细信息,然后拼接字符串从指定的哈希网站获取字符串哈希值,之后在详情页面中点击update work item,在弹出的窗口中更新哈希值及状态值即可。
在这个题目中,官方给出了两个文档:
- Calculate Client Security Hash_PDD _v1.3.pdf
这个文档PDD即流程设计说明书(Process Design Document),其中描述了这个流程将要做的业务概要、业务流转的流程图、业务中的关键步骤序列、规定流程范围、异常处理方式以及
在开发机器人之前的条件和要求。本设计文件作为基础
为开发人员收集机器人自动化所需的详细信息的文档
业务流程。
- Calculate Client Security Hash_Walkthrough_Short_v1.0.pdf
这个文档可以理解为开发手册,详细给出了在开发过程中所需要做的工作内容,其中包括所用到的配置文件、配置文件参数说明、流程开发中的Activities等内容。
二、流程说明
业务流程图如下:
流程步骤简述:
- 打开浏览器,并进入https://acme-test.uipath.com/account/login网站
- 使用用户名密码登录网站
- 在主页点击Work Items按钮,进入到Work Items列表。
- 选择类型为WI5的数据,并点击Action中的放大镜进入到详情页面。
- 复制详情页面中的信息
- 进入到http://www.sha1-online.com/网站,将上一步复制的信息按照"[ClientID]-
[ClientName]-[ClientCountry]"格式进行字符串拼接(中间为 "-" ),并填入到网页中。 - 点击Hash按钮获取加密之后的哈希数值。
- 返回值WorkItem的详情页面并点击Update Work Item。
- 将获取到的哈希值填入到Comment文本框,并将New Status修改为Completed。
- 循环4-9步骤,将所有Work Item处理完毕。
三、开发手册问题
在官方给出的开发手册中,将一些变量或参数都存储在了Orchestrator中的Assert中,但是很多朋友并不是很理解Orchestrator及其功能,新手如果按照官方的开发手册来开发流程的话,开发难度比较大,也比较难理解。
所以通过这篇文章主要说明如何脱离官方给出的开发手册并且不使用Orchestrator来如何完成这道题目。
四、开发
1. 主模块划分
如下图为主流程部分,其中只包括了是三个Sequence,分别用于读取用户配置、处理主业务逻辑、流程结束清理。
- 1.Read Config: 在流程用到了用户名密码这样敏感的数据,应该将这些数据单独放置在服务器端或者加密之后的配置文件中。这里我们可以将它放置在加密之后的Excel文件中,通过读取excel来获取用户名密码,也符合题目要求的安全性。
- 2.Main-Process: 主要用于主业务逻辑的使用,通过调用其他的XAML脚本文件,达到方便开发、调试的目的。
- 3.End Process: 主要完成一些在主业务流程结束之后的收尾工作,如退出系统、关闭浏览器等动作。
2. 业务模块划分
业务主模块流程如下,其中主要包括系统登录、表格数据获取并输出、更新WorkItem。
- LoginSys :使用此模块实现系统登录的自动化。
- GetProcessData :获取表格中的所有数据并输出到文件中
为什么要输出到Excel文件中?
解:方便后续流程的调试和模块解耦。将数据持久化到某个文件中,可以方便后续流程直接使用数据,而不需要到网页中再抓取数据,浪费时间。
- UpdateWI5 workflow:从上一个模块中产生的数据文件中获取WorkItem,并更新数据。
3. 获取数据
获取数据部分,主要考察Data Scraping的使用。
如下,在点击Work Item 之后,便可通过Data Scraping来获取表中所有数据,并输出DataTable变量,并将数据写入到Excel文件中,方便后续流程的调试及使用。
注意:在使用Data Scraping获取数据之后,需要在Extract Structured Data的Activiti中设置最大获取行数。如果不设置,可能获取不到所有的表格数据。
4. 更新数据
更新数据部分,主要需要考虑的是多个浏览器之间的切换。
为了准确切换至相应的浏览器窗口,需要将Hash网站和Acme网站浏览器对象输出为变量,用户之后Attach Browser的使用。
同时,按照说明书中的要求,在更新work item过程中若出现错误,不应该影响之后的操作,所以建议使用try catch 的Activiti来捕捉错误。或者可以使用retry scope的Activiti来重试更新。
流程设计如下:
五、总结及代码获取
这篇文章说明如何脱离官方给出的开发手册并且不使用Orchestrator来解决开发中的问题,并给出流程开发及模块划分相关的思路,方便用户理解和自己动手开发流程。
代码获取
代码已打包上传至RPA小星球,点击下面链接获取。(已经加入的可以直接获取,未加入的可以扫描下面优惠券二维码加入)
https://t.zsxq.com/FIMB2rV
附 关于RPA知识星球
之前有很多文章和心得发布在"小专栏"中,但是最近由于各种原因,后续不准备再发一些文章上去,全部迁移至知识星球。知识星球中内容全部由我运营,会定期输出与RPA相关内容,包括但不限于:
- RPA实施方法论
- RPA实施技术架构
- RPA应用场景分析理解
- RPA实施中填坑之路......
为什么要收费:
- 建立门槛,过滤掉观光客;
- 逼自己尽可能多地思考和输出内容;
- 通过输出内容,和一帮志趣相投的朋友们一起,激发出更多好玩的机会;
- 利用知识星球连接铁杆粉丝,做出高品质社群