什么是 RPA?
最近参观了某集团的财务共享中心,人气最旺的是 RPA(Robotic Process Automation)机房。一台台无人值守的机器人被安全的锁在玻璃柜子里,日夜不停的处理着一个个流程请求。
为了搞明白什么是 RPA,本文根据收集到的一些资料,梳理 RPA 的概念,工作原理和发展趋势。
首先,我们要弄明白,什么是 RPA。
范·德·阿斯特(van der Aalst)等人 (Van der Aalst, Bichler, and Heinzl 2018) 定义 RPA 是一组能够通过用户图形界面操作电脑系统内其他应用软件的工具。奥维尔(Allweyer) (Allwyer 2016) 认为 RPA 是一种软件程序能够支持人们处理某些任务,甚至完全取代人工操作。
RPA 的全称是 Robotic Process Automation。Robotic 跟 Robot(机器人)有一些些区别。Robotic 是 Robot 的形容词形式,意思是像机器人,类似机器人,呆板机械的。Process 指的是做事情的步骤和流程。Automation 则是自动化之意。所以,RPA 不是机器人。它是类似机器人那样机械呆板工作的软件工具。这个软件和其他软件系统通信,提取数据,处理数据,然后把数据传给其他应用软件。它可以部分或完全实现自动化的业务流程处理。
因为 RPA 是一个软件,所以一般称之为 bot,而不是 robot。
那么从类别来分,RPA 又分为两种:
- Desktop RPA,桌面RPA,又叫 RDA(Robotic Desktop Automation)
- RPA 平台
桌面 RPA 其实就是完全“录制”业务操作人员的鼠标、键盘操作过程,自动重复的执行这些操作。
而第二种 RPA 平台,则是运行在后端服务器上,直接访问各个信息系统的数据接口,自动运行设定的任务。也就是说,它不通过用户界面去和其他应用程序交互,而是直接通过数据通信或者数据库访问其他应用程序的数据,处理完成后,又直接访问另外程序的接口或数据库,写入结果。
为了阐述两种 RPA 的区别,我们以成本分析汇总为例,描述他们不同的工作模式。
桌面 RPA 的工作过程是打开 ERP,模拟鼠标点击,找到相关的表单,提取表单数据,导出到 Excel,再通过 Excel 公式,汇总数据,再导出另一份 Excel,导入到报表系统中。
而 RPA 平台,则是根据写好的脚本在后台执行任务。脚本指令可以是 ReadCosts,Calculate,WriteSummary 等。
显然, RPA 平台执行效率更高、更稳定、不易出错。而且,还可能更省电。因为桌面 RPA 需要配置多台 PC,可能还要点亮多个显示器。而 RPA 平台在后台服务器执行,根本不需要显示器显示界面。
对于一个设计良好的 RPA 系统,应该具备以下基本能力:
- 模块化。模块化指的是它的功能是分成一个个互相相对独立的组件,通过组件的组合,设计更大的功能。就好像乐高玩具,散开来是一个个不同形状的积木块,组合起来就可以搭出千奇百怪的形象。模块化的好处是每个模块可以相对独立的设计、开发、测试、验证。从而确保整体的质量。
- 字符串处理功能。所有 RPA 都会设计字符串处理。必须有字符的搜索、过滤、拼接、识别等功能。
- 变量处理功能。RPA 会计算一些临时数据,临时存储,在后续步骤中使用。有时候,这些数据还要进行加密保存。所以也会需要加密解谜算法库。
- 条件分支判断。根据应用程序中抓取的数据,进行逻辑分支判断执行。有时候还需要进行循环连续处理。
- 错误异常处理。在流程处理过程中,总是会遇到异常情况,RPA 要能及时发现异常,发出报警,要求工作人员进行干预。
- 开发测试配套。RPA 的开发过程中,需要工程师不断调整优化执行策略,一个完善易用的开发测试配套工具是必须的。
我记得几年前,在某集团研究院工作的时候,帮助下属子公司做过一些类似 RPA 平台的工作。当时他们的财务人员每个月月底都很忙,要计算生产成本,但是计算过程中,有些车间的物料、废品率等信息又没及时提交。导致计算出来的成本不精确。然后,财务人员又要一个一个去联系车间,填报数据,再重复出报表。本身出报表的过程就很繁琐,这样一来二去,财务人员就经常需要月底加班。
那么,我做的事情是什么呢?我帮他们实现了一个自动生产报表的Web服务。只要提供数据格式和计算规则,Web服务就直接能够计算出报表。还能根据规则,指出哪些数据是有问题的,需要复核。这样,就把财务数据处理的手工工作从5 个小时,缩减到5分钟。如果和 ERP 数据对接更好的话,还能进一步提升效率。
其实,我这个实现的Web服务,就是一个简陋版的 RPA 平台么。除了实现这个系统,我还简化程序编写逻辑,指导财务人员写代码,这样,他们可以根据自己的需要,直接开发各种财务处理 APP。这可能就是低代码系统的初级版本了。
至于 RPA 的未来发展趋势。我觉得桌面 RPA 是一个过度态。当上下游应用之间的数据接口足够标准开放的时候,就不需要桌面 RPA 这种初级的 bot 了。通过 RPA 平台就能快速、准确、高效的完成流程处理、数据对接。
但是,企业应用环境存在异构性,总是会有那么一些软件,互相之间无法配合。桌面 RPA 依然会有一定的市场空间。
所以,在未来企业流程信息化中,主要还是会应用 RPA 平台,在后端服务器自动处理流程。再加上低代码开发,业务人员可以快速开发一个新 bot,加载到平台中运行。在辅助上 NLP 自然语言理解,ML 机器学习,OCR 光学字符识别,让 RPA 平台自动去发掘潜在的自动处理过程。这样,应该算是 RPA 的最终形态了吧。
参考文献