本文是2020年第14篇原创文章,也是汪子熙公众号总共第197篇原创文章。
今天这篇文章的主题是机器人(Robot).
Jerry看过的第一部机器人主题的电影,就是大神詹姆斯-卡梅隆的神作《终结者II》,里面的T1000一度成为我的童年阴影。
几个月前我才欣赏完最新上映的终结者:黑暗命运(Dark Fate),又一部收割终结者粉丝情怀的续作。
当看到白发苍苍的琳达·汉密尔顿饰演的莎拉·康纳穿越了28年漫长的岁月,以终结者迷最熟悉的风格重新出现在荧屏上时,我竟有些情不能自已。
下图是Linda Hamilton在1991年《终结者II》里的剧照:
下面是她2019年最新的《终结者:黑暗命运》里的造型,虽然已经年过花甲,依然霸气十足。
当我看见屏幕上州长扮演的T800在这一部里说出了“I won't be back”的时候,我才真正意识到,州长老了,这应该是他饰演终结者的最后一部作品。国内绝大多数八零后,应该都是从《终结者II》开始接触这个系列的。八零后们观看着阿诺德·施瓦辛格出演的一部又一部终结者,也从懵懵懂懂的小学生,到一晃就步入到今天的四十不惑。
伴随着I won't be back这句话,不会再回来的,除了州长以外,还有八零后的青春。
曾经和一位同样是科幻迷的好友吹牛,他问我,假设世界末日不可避免地来临,你有三个选择,去往异形,生化危机和天网终结者的末世,你选择哪一个?
Jerry不加思索地回答:当然是最后一个。身为一个程序员,被人工智能程序杀死,也算死得其所。
终结者系列构造的世界观里,人类和以天网为核心的人工智能程序无法共存,双方不是你死就是我活。而在现实世界里,基于人工智能的机器人流程自动化则是智慧企业的好助手。
所谓智慧企业,一个特征就是具备将复杂但低附加值的重复流程通过自动化的方式完成的能力。通过自动化,从而将宝贵的人力资源投入到更高附加值的工作中去,比如提供产品和服务的品质,提升用户体验。
对于ABAP老司机们来说,SAP脚本录屏和SAP eCATT(extended Computer Aided Test Tool) 都是进行功能自动化测试的利器,可惜其只能工作在SAP GUI环境下面。
随着全球企业数字化转型的趋势继续加深,涌现了一大批智慧机器人流程自动化(Intelligent Robotic Process Automation,简称为iRPA)解决方案的供应商,比如这个领域的领头羊UIpath,Blueprism,AutomotionAnywhere,以及国内的供应商艺赛旗、UiBot、弘玑Cyclone 、云扩科技等。
就在去年,SAP也发布了自己的iRPA解决方案:
该解决方案基于SAP云平台CloudFoundry环境,支持云端部署,通过编写,调度,管理和监控机器人工作流,来完成原本需要通过人工进行的重复性操作。SAP iRPA的智能化,体现在其与SAP Leonardo Conversation AI服务的无缝集成。除了iRPA解决方案本身之外,SAP也发布了预定义好的基于SAP多款产品,比如S/4HANA的智能机器人流程脚本,帮助客户加速实现企业流程自动化。
与很多RPA解决方案采用基于录屏的实现原理不同,SAP iRPA基于API和元数据实现机器人自动操作,从根源上避免了产品界面更改之后造成原有流程脚本不工作的可能性。
下面就跟着Jerry一起,从一个Hello World项目开始了解SAP iRPA.
我这个例子的场景很简单,用SAP iRPA驱动本地电脑里的计算器应用,自动点击4 + 2 = 这几个按钮。至于SAP iRPA如何驱动S/4HANA跑一些自动化流程,留待将来研究。
先看这个例子的demo,该视频演示了如何单步调试用SAP iRPA开发出的机器人自动化脚本。
到SAP官网下载这个场景需要的两个工具:
SAP Intelligent Robotic Process Automation Desktop Studio和SAP Intelligent Robotic Process Automation Desktop Agent.
https://launchpad.support.sap.com/#/softwarecenter/search/Intelligent%20Robotic%20Process%20Automation
顾名思义,Studio就是机器人开发工具,而Agent就是机器人程序的运行环境。
首先打开Studio,新建一个应用。这个应用就是我期望被SAP iRPA驱动的计算器应用,我称之为宿主应用。
点击Add Application后,从下拉列表里选择UIAutomation,这个列表代表SAP iRPA通过何种底层技术,去识别,连接并驱动宿主应用。
本地打开Windows自带的计算器应用calc.exe, 在SAP iRPA里刷新,就能看到这个应用对应的进程了。
在进程列表里选中Calculator,右边的预览窗口立即能看到其界面。点击Save and Capture Page,这样SAP iPRA就同计算器应用建立起连接了。
始终记住我们的目标是用SAP iRPA实现计算器应用上的按钮点击,所以首先得定位到计算器上的4, + , 2和=这几个按钮。
到目前为止,SAP iRPA里的计算器是一个空的页面,点击Capture a New Page:
按住Ctrl键不放,把鼠标放到计算器应用上,SAP iRPA会智能的识别出这个计算器应用窗口的句柄:pWindowCalculator, 此时点击Scan And Capture:
注意看,此时左边的Calculator节点下面,出现了刚刚捕捉的窗口句柄pWindowCalculator, 且屏幕中间区域出现了计算器应用的界面。
我们双击4这个按钮:
现在4这个按钮也出现在屏幕左边的树状结构里了,这代表4这个按钮也被我们标注为需要被SAP iRPA操作的UI元素了。
对剩下的+,2,=这几个按钮重复上述的操作,完成之后界面如下。
下面我们需要基于这几个捕捉好的按钮动手编写一些逻辑了。
切换到工作流视图,创建一个新的工作流Workflow:
工作流创建好之后,只有一个默认的开始节点:
在工作流编辑页面的右边,有一个Activities面板,我们之前捕捉好的整个计算器应用就维护在内。把这个计算器应用的UI拖拽到工作流编辑页面里:
此时双击这个计算器应用的UI,就可以对其内UI元素进行编辑了。
在Activities面板里,找到Click这个动作,将其依次拖拽到屏幕正中的4,+,2和=这几个按钮上。
拖拽结束后,这几个按钮上显示了对应被点击的序号和Click事件的名称。
至此,我们完成了机器人的建模工作。从过程可以看出,即使建模人员不具备编程功底,也能顺利完成这个任务。
我们还需要点击Build按钮,生成运行时代码。
Build按钮点击后,出现一个node.exe的运行界面,暗示我们SAP iRPA底层运行基于nodejs.
Build完成后,我们能看到自动生成的机器人脚本代码。正如侯捷老师所言,“源码面前,了无秘密”,通过阅读自动生成的JavaScript源代码,我们可以把SAP iRPA的工作原理同另一个流行的浏览器自动化测试框架Selenium做一个类比:二者都是定位到应用界面的某一元素后,调用元素对应的方法,而差异在于,Selenium通过web应用页面标签的ID来定位元素,而本例中的SAP iRPA通过UIAutomation来定位计算器应用的按钮。
从上图看出,SAP iRPA自动生成的JavaScript脚本可以单步调试。点击Debug按钮,弹出了SAP iRPA调试器。
如果之前设置了断点,现在就可以像调试一般JavaScript代码一样,进行单步调试了:
当然,SAP iRPA能做的事情远远不止这个Hello World这么简单,其最有价值之处,还是在于基于SAP Cloud Platform的云端部署,以及与SAP标准产品的无缝集成。Jerry后续有机会,会继续介绍。
谨以《终结者II》结尾的最后一段台词结束这篇文章:
"The unknown future rolls toward us. I face it, for the first time, with a sense of hope. Because if a machine, a terminator, can learn the value of human life, maybe we can too" - Sarah Connor
不可知的未来在我们面前展开,我头一次充满希望地面对它。因为如果一台机器,一个终结者都能够学到人类生命的价值,也许我们也能办得到 - 莎拉·康纳
要获取更多Jerry的原创文章,请关注公众号"汪子熙":