我以前的
文章主要是为项目经理和RPA经理撰写的。 首先,我想向程序员和那些不得不与机器人技术面对面的人发表这篇文章。
新创建的RPA程序员必须创建的前几个过程通常会花费一组标准的“块”,这些块位于平台的包装盒中。 但是,如果他们失踪了怎么办? 几乎任何现代RPA平台都可以以一种或另一种方式扩展,无论是在AA中调用DLL方法,在WF中调用Groovy代码还是在BP中调用代码阶段。
但是,本文是针对我熟悉的平台(UiPath)编写的,因此对于那些喜欢其他口味和颜色的机器人的人,请不要被冒犯。

尽管文章中的某些内容很平庸,您可以通过学习适当的课程,阅读文档或研究论坛来学习,但是在我看来,很多人觉得将它们放在一个地方是很有用的,就像俄语的一篇文章一样。 如果您有任何补充或评论,我将尝试最后定稿,以使其尽可能有用和相关。
扩展本文功能的方法从最简单的(下载现成的)到最困难的(编写您自己的)。
应用商店

自2018年底以来,UiPath开设了类似名为
Go的“应用商店”。 来自世界各地的开发人员(包括公司员工本身)共享有用的(或不是这样)用户操作,代码段,应用程序模板以及其他可大大简化生活的有用开发。
那里有很多东西,例如,到Salesforce
的出色连接器 ,它承担了大部分工作,或者由Abbyy编写给Abby Flexicapture的
连接器 。
现在,这是扩展制造商本身推荐的功能的方法,此外,已经开始在官方NuGet存储库(Gallery)中使用的扩展的迁移。
您看过PackageManager了吗?

使用软件包管理器功能可以使硬盘更硬一些,但对于普通用户而言仍然相当容易使用。
它是通过
NuGet实现的,这意味着除了使用“公共”存储库之外,没有人会打扰我们提高自己的资源并在公司内部使用它来分发我们自己设计的动作和库。
我们在程序包管理器中
搜索UiPath关键字,并获得大量不同的操作,这些操作大大提高了我们的能力,而无需我们付出任何努力。
因此,现在已经分发了相当正式的平台组件,包括Web活动包(用于
SOAP
和
REST
API),Word(基于
Xceed DocX
)或Zip(猜测您正在使用什么)。
主要“好东西”所在的存储库:
通过调用代码
如果没有足够的现成“块”,而您找不到它们,则是向过程添加功能的最简单,最快的方法。
您可以在
VB.Net
上编写一小段代码,然后将其粘贴到
InvokeCode
操作中。 因此,例如,当标准
UiPath.Web.Activities.HttpClient
不够用或使用外部库(例如
Xceed DocX
或
PdfSharp
时,您可以在Rest上使用棘手的API调用。
如果您在InvokeCode
10行以上的代码,请InvokeCode
于此和其他类似方法。 尽管那里有Intellisense和验证工作,但您的同事不会感谢您支持此类“程序”。 将它们带到用户操作或外部程序中,因为有足够的方法可以执行此操作。
类似地,仍然存在
Invoke Method
,从原理
Invoke Method
,它允许您调用通过依赖项添加到项目中的任何类的方法。
例如
,此处用于解压缩存档

通过调用<其他>
除了“本机”之外,
VB.NET
UiPath还允许您使用许多其他编程方法,正如他们所说的“满足所有口味,满足所有需求”。
动力壳

如果
VB.NET
不够用,则可以使用其他编程语言。 例如,对于办公应用程序,经验丰富的管理员可以方便地分别使用
Powershell
和使用
Invoke Power Shell
操作。
例如,在同一Outlook中,您可以无休止地按下按钮来执行PS中的几个命令。
例如,这样的脚本将返回任意文件夹中的最后一个字母 Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null $olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] $outlook = new-object -comobject outlook.application $namespace = $outlook.GetNameSpace("MAPI") $inbox = $namespace.getDefaultFolder($olFolders::olFolderInbox) $folder = $inbox.Folders.Item(“ ”) ($folder.Items.Restrict('[UnRead] = True') | Select-Object -Last 1)
COM对象
在现代系统中,对此的需求当然不是很大,但是在
Invoke COM Method
的帮助下
Invoke COM Method
您可以使用埋在某些DLL中的功能。
Vba
如果使用Excel,则可以通过运行Invoke VBA在其上“设置” VBA脚本。 该脚本应放在单独的文件中(考虑到现在对带有宏的Office文件不是很欣赏,这很方便)。 对于那些擅长在VBA中编程并且不想放弃已建立的库的人来说,这将很方便。
巨蟒
在流程中嵌入python脚本的能力,对使用ML和各种计算有很大帮助。 要开始与他们合作,您需要另外做几个手势。 首先,现在在GitHub上以凉爽的,但没有官方支持的一组
社区活动行动来安排这些行动。 其次,您需要安装Python,当然还要安装3.6版,并且始终安装在驱动器C的根目录下。
顺便说一下,在相同的社区活动中,有加密,FTP和其他一些潜在有用的功能。
文档和(过时的)示例代码可以在
此处下载 。 如果有人需要UiPath和Python集成的帮助-请编写,我将尝试详细介绍。
爪哇
关于同一件事-包装是独立于社区活动组装的。 使用JDK 1.5和更高版本编译的受支持的.jar文件。 Java的路径必须在
PATH
阐明。
UiPath网站上有
使用文档和
使用Java的示例过程 。
通过用户动作
不幸的是,并不是每个人都可以使用应用程序商店或其他人的软件包。 例如,通常经常不允许安全服务使用不是由卖方或公司内部编写的机器人。 然后,您必须卷起袖子。
UiPath平台是使用
Microsoft Workflow Foundation构建的。 对于我们来说,这意味着您始终可以编写自己的操作(Activity)并将其添加到流程中。 如果期望业务用户积极使用,则可以使用表单设计器将操作转换为漂亮的自定义UI,如果需要更快的操作,则可以通过“属性”配置一个简单的矩形。
幸运的是,虽然没有非常详细地介绍了创建操作的过程,但是您可以通过以下方式随时使用大规模的[MS文档](https://docs.microsoft.com/zh-cn/dotnet/framework/windows-workflow-foundation/)在互联网上撰写有关它们的动作和文章。
C#中最简单的操作的示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Activities; using System.ComponentModel; namespace ClassMathCustomActivity { public class SimpleFormula : CodeActivity { [Category("Input")] [RequiredArgument] public InArgument<double> FirstNumber { get; set; } [Category("Input")] public InArgument<double> SecondNumber { get; set; } [Category("Output")] public OutArgument<double> ResultNumber { get; set; } protected override void Execute(CodeActivityContext context) { var firstNumber = FirstNumber.Get(context); var secondNumber = SecondNumber.Get(context); var result = System.Math.Pow(firstNumber + secondNumber, 2); ResultNumber.Set(context, result); } } }
必须使用
NuGet Package Explorer将创建的动作打包为
.nupkg
,然后将创建的包添加到Studio。
最好不要从头开始采取第一个行动,而要利用前面提到的
社区活动 ,那里有许多复杂程度各异的现成行动。
总结
如您所见,从最简单的InvokeCode到编写您自己的操作,还有更多的扩展功能的选项。 这意味着无论您面临什么任务,总有机会快速解决此问题,甚至根本不需要发明自行车:)
我希望本文在创建出色的机器人流程时对您有所帮助。 如果您告诉我们这些信息与您有多少关系,以及您想知道什么,我将非常高兴。