RPA 是「机器人流程自动化」的缩写,听起来比实情气派得多。一个程序替人点按钮、填字段。Selenium 是在浏览器里做这件事最知名的工具。
它之所以重要,是因为每家中小企业迟早都会撞上的一个问题:存着你数据的那个系统,没有正经的办法和别的软件对话。老旧的会计软件、供应商门户、政府网站,还有那个自 2014 年就没人更新过的行业工具。没有 API,导出也没什么用,供应商更不会为你专门做一个。
RPA 就是入口。只要人在屏幕上能做的,它通常也能做 —— 早上 6 点,天天如此,做到第四十条记录也不会烦。它同时也是本页最脆弱的一项;谁要是跟你说不是,那他没维护过。
每天早上,有人登录三个供应商门户,各下载一份库存文件,打开它们,把要紧的列复制到一张主表里,再修好格式。四十分钟,而且是他工作里最没意思的一段。
早上 6 点,机器人已经把三个都做完了,在报表系统会去取的位置留下一份干净文件。你的同事打开的是一张成品表。哪天某个门户改了版,他收到的是一封邮件,而不是一个意外。
这东西为什么存在
RPA 的位置很微妙。它既是我们所做的最不优雅的东西,有时又是唯一行得通的办法,这层张力值得理解。
软件本该通过 API 与另一个软件对话 —— 一条正经的、有文档的、专为此设计的连接。有 API 时,我们每次都用它。它更快,别人改版页面时它不会坏,出问题时它会明确告诉你。
问题在于,马来西亚中小企业依赖的软件里,有很大一部分根本没有 API。2000 年代的会计套件。为人使用而建的供应商门户。政府申报网站。那个十年没更新过的行业专用工具。供应商不会为你做一个 API,而更换系统的代价又高过问题本身。
于是剩下的选项就是操作界面:一个程序打开浏览器、登录、点击、输入、读取,和人做的一模一样。它不优雅,而它往往就是「每天四十分钟的复制粘贴」和「零」之间的差别。
怎样建一个不会三天两头坏的
RPA 脆弱的名声,在粗糙实现的情况下当之无愧;而在认真实现的情况下,大体可以避免。
脆弱的做法是录下某人的点击,然后按屏幕坐标回放。这在版式移动几个像素之前都好用 —— 一个更长的产品名、一条新横幅、一个不同的屏幕尺寸 —— 之后它就会悄悄点错东西。录制宏,正是人们认为 RPA 不管用的原因。
耐用的做法是锚定有含义的东西而非位置:标着「Username」的字段、文字为「Export」的按钮、表头为「Quantity」那一列的单元格。这些在改版中存活得好得多,因为页面上的文字远比它的版式更少变动。
然后它需要检查自己的成果。页面真的加载了吗?下载的文件大小合理吗?总额和昨天大致对得上吗?一个会停下来给你发邮件的机器人只是小麻烦。一个悄悄失败、连喂你两周空数据的,才是真问题 —— 而两者的差别,完全在于它建得有多用心。
这件事会在哪里出岔子
有些网站在条款中禁止自动访问,银行门户尤其当真。我们会在开工前核对,如果有什么看起来越了界,我们会告诉你,而不是闷头做掉。
如果存在有文档的连接,改去操作界面只会更慢、更脆弱,而且毫无好处。在断定没有之前,值得再问供应商一次。
这是本站唯一一项确实需要持续照看的东西。请预期每个门户每年有一两次小的维护,并对任何承诺相反的人保持怀疑。
我们实际怎么做
-
01
我们看着人做一遍
每一次点击、每一个字段,包括那些他们想都不想就做了的动作。
-
02
我们照着这个写脚本
锚定在页面上稳定的元素而不是像素位置,这样小幅改版不会把它弄坏。
-
03
我们加上校验
页面加载了吗?数字看着合理吗?保存真的保存上了吗?一个会大声报错的机器人,远好过一个悄悄失败的。
-
04
我们排期并监控它
它自己运行;网站在它底下变了,它会给你发邮件。
- 系统没有 API,供应商也不打算做
- 每天都有人登录门户网站,把同样的数字拷出来
- 供应商或银行网站需要定时查看
- 已经有现成的 API —— 那就用它,更快也稳得多
- 界面经常改版;页面一变,机器人就失效
- 它需要一个你无权自动登录的账号。先看条款
- 一个允许自动化使用的登录账号
- 确认自动化不违反该网站的条款
- 源系统变更时可以找的人
每个门户 1–2 周。请为维护预留一点持续时间 —— 这一项确实需要。
关于这项,大家都问什么
这样做合规吗?
通常是的,只要是你自己的账号和自己的数据 —— 但第三方网站的条款要先看。如果有什么像是越了界,我们会提出来,而不是闷头做掉。
网站改版了会怎样?
它会失效,并且会告诉你。这正是我们做校验的原因。每个门户每年预计需要一两次小的维护。