这篇评论文章介绍了如何将RPA用于业务流程,其中包括普通人无法执行,不想执行的任务,或者需要花费大量时间并且需要特殊知识(例如使用FTP,数据库)的业务流程或API。
在此过程中包含此类操作,使其创建更接近于传统编程和“脚本”,并且具有该方法的优点和缺点。
即使在传统的机器人技术任务中使用API,也可以显着提高执行速度,可靠性和稳定性,但与此同时,它使我们无法实现业务用户自己创建和维护流程的梦想,绝对可以将开发和支持交还给他们开发团队。
在可能的情况下,以及有必要在过程中将操作添加到较低级别时,我将尝试在本文中讲述。 第一部分是介绍性内容,第二部分是具体示例。 给出了一个我很熟悉的平台(UiPath)的示例,因此对于那些喜欢其他口味和颜色的机器人的人,请不要被冒犯。

赞成和反对机器人学低
为什么这样的机器人有用?
- 大大加快了工作。 通常,这是我们考虑与外部系统进行低级交互的主要原因。 如果我们可以使过程加快10倍,则可以节省使用其他机器人及其虚拟机和许可证的费用。
- 可靠性得到提高,您不再需要在UI中使用动态选择器,无需考虑如何绕过验证码,争取在Citrix中识别无法放置插件的图片的准确性,或消除新闻页面上的无休止滚动。
- 使用没有完整UI或不允许您通过UI获取所有必要信息的系统。 例如,在我的实践中,有一种情况是我们从Shopify获取有关API的数据,然后将其传输到ShipHero并将其发送到内部会计系统。 仅最后一步使用了用户界面。
为什么这样的机器人有害?
- 业务用户不再了解我们的机器人流程可以做什么,也无法自己更改和维护。 对于无人值守的机器人而言并非如此,但对于有人值守(数字助理)来说,这是一个很大的缺点,因为我们希望用户自己成为其过程的作者。
- 安全服务过程的可见性和可理解性丢失了。 如果使用普通的机器人我们可以清楚地表明他正在执行与“有机”用户相同的操作,甚至可以将工作描述用作文档,那么使用低级集成,我们不得不同意必须经过我们的流程与“大型”自动化系统相同的冗长验证和控制程序。
- Dito,关于集成团队。 一旦开始使用API,我们就属于他们的财产,必须遵守他们的规则。
- “真实”编程的成本和风险要大于机器人技术。 如果有人可以按下按钮,则机器人也可以按下它。 但是,古老的未公开文档系统的API可以为我们提供必要的数据吗? 是否可以将信息直接写入数据库,还是会破坏其完整性? 经验丰富的专家是完成此任务所必需的,还是对新手来说足够? 为什么PowerPoint.Interop中的Slides.Duplicate返回数组? 可以获得所有这些有趣的问题的答案,但这需要时间。
何时需要以及何时不应该在机器人中使用编程
上面可以总结如下:
编程值得使用
- 您的过程效率低下
- UI系统不便于自动化,但是有一个便捷的API
如果不使用编程
- 流程将由业务用户开发或支持。
- 使用API会使机器人很难完成协商过程。

通过代码进行什么工作以及如何有意义?
然后,我尝试给出一些使用代码的示例,在创建机器人时,我必须真正使用一种或另一种方法,这意味着它们是在生活中发生的。 当然,该列表并不详尽,但我希望它是说明性的。
在撰写本文时,所有示例均已在最新版本的操作上进行了测试。
微软Office
奇怪的是,最先使用该API的候选人之一就是Microsoft Office。 是的,UiPath具有出色的内置功能,可用于处理Excel(甚至两种类型,一种直接存储文件,第二种通过应用程序)。 也有使用Word的机会(通过程序包管理器
UiPath.Word.Activities
了
UiPath.Word.Activities
程序包)。 但是,例如,没有使用PowerPoint的标准操作,还有Outlook甚至带有Project的Visio,它们在大型公司中仍很活跃。 使用Office,您可以非常容易地通过用户界面与机器人结交朋友,但是在某些情况下,这样做不是很方便,因为并非所有UI元素都可以直接访问,并且您必须在键盘上弹奏音阶。 例如,带有文本
k [tab] k [f10] JCDD (用于Office的英文版)的
Type Into
操作将打开PowerPoint幻灯片中的图形数据,以便在Excel中进行编辑。 这样的组合效果很好,但是看起来比IDDKQD更神奇。
ProTip:可以使用Microsoft UI Automation (UIA)
而不是默认选择的Microsoft Active Accessibility (MSAA)
框架来扩展可用选择器的列表。 使用UI资源管理器中的F4按钮切换到它,看看是否有区别
要使用Office文件,可以使用第三方库,例如
Xceed DocX或Spire库,例如
Spire.Presentation 。 使用第三方库时,请注意许可证,它可能并不总是适合您的公司(例如,iTextSharp for PDF通过
AGPL免费分发,而PDFSharp-通过
MIT免费分发)。 此方法非常方便,因为即使计算机上未安装Microsoft Office也可以使用,这意味着它非常适合在虚拟机上运行的无人值守机器人。
对于使用Office程序的复杂工作,
Microsoft.Office.Interop
可以解决。 它使我们能够在应用程序内执行操作,操纵数据等。 您可以撰写不止一篇文章来介绍使用Office.Interop的功能,这是一件古老而脆弱的事情,但是它很适合我们的目的。 为了使Interop能够正常工作,您需要向Imports中添加适当的程序集。
以下是一些可以使用Office Interop进行处理的示例:
展望
Outlook的功能远不只是处理邮件,它是个人信息管理器,通常有日历,笔记本和通讯簿,是一整套。 如果通常通过直接访问服务器可以解决所有带有电子邮件的问题,如果它代表IMAP / POP3接口,则从Outlook本身获取其余信息要容易得多。 为此,Interop非常适合。
获取日历事件列表 Dim oApp As New Microsoft.Office.Interop.Outlook.Application Dim mapiNamespace As Microsoft.Office.Interop.Outlook.NameSpace Dim calendarFolder As Microsoft.Office.Interop.Outlook.MAPIFolder Dim calendarItems As Microsoft.Office.Interop.Outlook.Items mapiNamespace = oApp.GetNamespace("MAPI") calendarFolder = mapiNamespace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar) calendarItems = calendarFolder.Items calendarItems.IncludeRecurrences = True
简报
使用PowerPoint,您不仅可以创建精美的演示文稿,还可以将其用于文书工作,例如商业报价或常规项目报告。 为此,您需要在PowerPoint中显示来自其他来源的数据,当然,机器人在此方面做得很好。 创建PowerPoint幻灯片时,大多数时候都需要对它们进行精美的设计,因此您可以提前进行操作,并通过复制模板幻灯片并用它们替换文本来替换实际数据。
可以在nuget.org存储库中找到Microsoft.Office.Interop.Powerpoint
和所有其他Interop程序集。
幻灯片重复由于Presentation在System.Activities中,而Application在其他Interop中,因此您必须完全编写类名。 fileName和slideToCopy-分别是参数,字符串和数字。
Dim app As New Microsoft.Office.Interop.PowerPoint.Application Dim pres As Microsoft.Office.Interop.PowerPoint.Presentation Dim newSlide As Microsoft.Office.Interop.PowerPoint.Slide pres = app.Presentations.Open(fileName) newSlide = pres.Slides(slideToCopy).Duplicate()(1)
通过包含幻灯片的所有元素的Shapes集合,您可以在新页面上快速更新必要的信息。
用Word工作
尽管
Word Activities Pack中的
活动提供了基本的Word功能,但它们并未涵盖构建它们的Xceed DocX库的全部功能。 最常见的情况是使用表,但还有许多其他情况。
在项目存储库中有足够多的不同
示例来了解该库或类似库在哪里有用。
Web API(REST,SOAP)
REST / JSON现在可能是关键链接,以便与代表API的系统进行集成。
通过
Web Activities Pack提供了对REST,SOAP和JSON的支持。
使用REST,一切都非常简单,因为它应该是这样:
HTTP Request
Request- >
Deserialize JSON
,现在我们已经有了一个
JObject ,我们可以用它做任何想要的事情。 为了将数据传输到Web服务,有一个方便的参数编辑器。
但是遗憾的是,对于SOAP,内置功能受到限制,并非支持所有类型的Web服务,也不是所有请求都得到了正确处理。 如果该服务不适合您,则必须使用HttpClient的许多包装之一,例如
SimpleSOAPClient或编写自己的包装(一种
使用C#处理SOAP的
变体 )。
UPDATE 04/03/19:在版本2019.4中,该版本的beta已可供下载,该组件已更新,改进和重做。 因此,您可以很快看到普通的SOAP支持。使用FTP
在UiPath中,一切都很简单,
社区活动中包含一套针对FTP的现成操作,不过应注意的是,从FTP活动包的版本18.2开始,
已弃用 。 但是所有功能都存在,甚至支持SFTP(该设置基于
SSH.NET ),尽管不幸的是,使用客户端密钥的工作尚未完成。

。
资料库
UiPath通过.NET数据提供程序处理数据库。 对于MS SQL和MS Access,一切都很简单,其余的则需要配置ODBC,如果不存在,则安装驱动程序。 请记住,由于当前平台是32位的,因此我们需要下载适当的驱动程序,并且ODBC数据源必须相同。
以下是使用MySQL的示例。
配置MySQL连接测试远程MySQL数据库的设置(
来自此处的驱动程序):

并从动作连接到它

与SQL兼容的数据库的进一步工作是相当标准的-我们进行查询,获得一个DataTable。
通过BAPI的SAP
如果您的SAP提供了这个机会,您可以尝试通过UI而不是通过UI来通过BAPI自动与SAP集成。 和往常一样,在UiPath中已经为此做好了准备
一组操作 ,包括用于配置与SAP的连接的向导。 这里几乎没有编程,但这是一个事实的例子,即标准集成路径并非唯一可行的方法。
总结
我希望我能在本文的帮助下讨论在
学院或
论坛上不容易学习的使用机器人的那些方面。 如果有人对机器人开发感兴趣或帮助回答与机器人开发有关的问题,我将感到非常高兴。