如何构建更具弹性和稳定性的RPA机器人

最近经常被问到,如何构建更加具有弹性Resilience和稳定性Robust的RPA代码?由于RPA机器人大多是依据过程化的脚本来执行的,任何流程的流程变动,规则变动,界面变动都有可能会影响到原来机器人的代码,这就是为什么开发者如此关心此类问题的原因。

首先解释一下什么是“弹性Resilience”和“稳定性Robust”。

- 应用程序或软件系统的弹性Resilience是指不通过修改程序代码或者非常少量的修改代码就能适应不同业务场景以及业务需求变化。

- 应用程序或软件系统的稳定性Robust,也被称为鲁棒性,也是健壮和强壮的意思。是指在出现环境异常和危险的情况下,RPA代码仍旧可以运行,不会出现崩溃和退出的现象,并且下次调用该机器人仍旧可以执行。

在RPA项目中,通常有两个维度来解决弹性和稳定性的问题。一是RPA产品的能力,二是自动化流程的设计,三是自动化流程的变更维护。

RPA产品的能力

在AAE 11.3.x中提供了Error Handling这个Command,用于处理各种异常情况,相当于编程中的try catch。用Begin和End的方式,捕获中间代码可能产生的异常。

使用Error Handling的方法

基于这个异常,可以实现各种相应的处理手段,例如是继续还是停止这个任务,是否截取错误发生时的界面,可以运行另一个任务来做补救处理,也可以记录日志,保存这条错误信息,可以发送邮件通知相关人员,或者记录到某个变量里,作为后续的一个标志位或者数值进行传递,也可以设置这个任务执行的状态。

Error Handling的配置

在A2019中的Error Handling命令,直接采用了Try Catch的方法。可以捕捉Try中执行步骤的异常,捕捉异常以后执行Catch中的内容,例如记录日志,抓取屏幕等任何动作,在执行完Try Catch后,最终执行Finally中的步骤,例如关闭窗口,清除进程之类的工作。

A2019中的Try Catch

自动化流程的设计

为了保持代码的弹性和稳定性,在设计层面也考虑很多内容。

1. 通过配置文件读取动态的配置信息。为了保障机器人在不同环境和不同条件下的使用,用户可通过配置文件来初始化很多环境变量,例如目录结构、环境信息、状态值等。在机器人运行的开始,先读取这个配置文件后,再进行后续的业务处理。例如将变量存在xml文件中,然后Bot主任务调用的第一个子任务就是读取环境变量。

机器人执行的主任务,调用了Config的子任务
读取Config.xml配置文件的子任务

2. 通过Bot调用结构的设计实现Bot的共享和复用。一个Bot的设计行数通常不能超过150行,否则难以修改和维护。为了能够避免机器人代码的重复开发,需要将相同的处理结构封装成子任务流程,供其他流程来调用。这样,一旦修改了该子任务,就相当于调整了所有调用该子任务的主流程。

主任务调用了不同的子任务来处理

3. 通过专门的检查机器人完成对流程输入文件的检查,避免在执行过程中发现异常。一是检查输入文件是否存在,二是检查输入文件的格式是否满足要求,三是检查输入文件的数据是否具有逻辑上的一致性,如开始日期必须小于终止日期等这样的规则判断。由于只是检查输入文件,并不会影响到真正的业务处理环节,就可以避免在业务处理各种异常情况。

专门检查文件是否存在的子任务

4. 执行初始或清理任务,保证机器人环境的稳定性。在任务执行的开始时,例如需要清理剪贴板,清理之前循环中的变量值,关闭已经打开的浏览器等等。在任务执行完成以后,需要关闭已经打开的程序,关闭浏览器,杀死进程等。

专门用于清空网页的任务
专门用于杀死各种进程的任务

5. 通过机器人设计框架规范Bot的开发。机器人设计框架既包含变量的命名规范,记录日志,代码注释等常规的机器人编码要求,也包括规范机器人的整个处理过程,例如1.读取配置文件;2.检查输入文件;3.清理机器人执行环境;4.正常的业务流程处理;5.异常情况处理;6.清理程序和环境。

6. 利用高可用的部署方式解决机器人自身可能出现的问题。例如RPA平台中的某个机器人自身发生了运行错误,中断自动化处理流程。那么RPA平台可以采用负载均衡和机器人动态控制机制,将自动化任务分配给其他没有问题的机器人来处理。即便是整个RPA平台出现了问题,也可以通过高可用(High Availability,HA)和灾备机制(Disaster Recovery,DR)来解决这类异常问题。

如何保证机器人在某次异常中断后,下次启动时仍可以正常的继续执行?

如果是要完整的回答这个问题,还是较为复杂的,因为其中涉及到的业务场景非常多,但主要还是从机器人的设计角度着眼考虑。

    1)如果中断的那个步骤,是可以重复执行的,就无关紧要了。例如由于网页没打开,导致的机器人执行异常。下次机器人执行时,继续完成打开动作就好了。

    2)如果机器人处理的是多行数据,在执行到某行出错时,就需要保证下次启动时必须从出错的这行重新启动,而不能从第一行再开始执行。这就要求利用Error Handling捕捉到这个处理异常,通过设置标志位或记录日志的方式记录下这个出错的位置。而下次机器人启动时,应首先读取到这个标志位再来运行。

    3)如果机器人处理后一个子任务出错,而需要回滚前一个任务时,就需要利用Error Handling捕捉到这个处理异常后,调用一个补偿任务,反向处理前一个任务。

也许还有更多的可能处理方式,但这都需要结合业务场景和业务逻辑。很多业务流程本身是无法反复处理的,就像人犯了错误以后,有些过失是可以弥补的,有些却不能,其实机器人模拟人的操作过程,原理也是一样的。

不管是产品功能也好,还是设计方法也好,可以被避免的永远是已知的异常情况,对于未知的异常情况,机器人是无能为力的。同时需要机器人的管理人员做好心态上的调整。业务用户也需要有一定的同理心去理解这种现象,就像一个新员工刚刚入职接受一份新的工作时,总会有些磕磕绊绊,手忙脚乱的现象也是正常的。但是经过一段时间的学习之后(对于问题的修复),新员工就会随着经验的积累(自动化程序的健壮性)逐步减少工作中的错误。机器人也是同样的道理。

对于这些未知的需求变化或未知的异常情况,只能通过后续的机器人运维工作来不断弥补。

自动化流程的变更维护

除去机器人自身代码的bug以外,机器人的变更维护主要分为三种情况,一种是遇到了从未考虑到的异常情况。二是业务规则和处理流程发生了变更。三是所操作的载体发生了变化,比如需要自动化处理的用户界面。

第一种情况,需要通过采集运行日志和截屏获取异常发生的原因,通过修复代码,增加分支判断条件,新的异常处理能力的方式来解决这类问题。

第二种情况,最好在设计之初,就考虑那些可能变化的业务规则,将其设计成参数或变量,通过配置文件来保存,直接让业务用户修改配置文件即可。对于那些没有放入配置文件的变量,可以将其单独定义一个独立的机器人,并教会业务人员自己去维护。这样的代码维护方式既保证了整体机器人程序的稳定性,又保证业务上的灵活性。

第三种情况,当页面变化时,首先需要找到操作该页面的所有机器人流程,再分析其对该页面做出了何种自动化操作,以判断页面修改是否会影响原流程的处理。当了解到影响步骤时,就需要重新抓取界面对象,在对该流程完成回归性测试。

综上所述,构建更具弹性和稳定性的RPA机器人,需要从产品、设计和维护等方面多管齐下,在实施和运行过程中充分吸取经验教训,参考行业内的最佳实践,才能打造出一支强有力的机器人队伍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342