[例学 UiPath] 创建自定义 Code Activity

| 自定义 Activity

活动 (Activity) 是流程自动化的基石。 UiPath Studio 自带了大量内置的 Core Activities(核心活动)。

你还可以根据你的需要,通过Package Manager 安装一些专用的活动(如处理 PDF,Mail,Excel 等)。

更重要的是,你还可以根据你的需求来创建自定义活动实现自动化流程。

有时候系统自带的 Activities 或者 Package Manager 上面的 Activities 都无法满足需求。UiPath 自定义 Activities 的特性为我们带来了扩展 UiPath 的无限可能。

这一节我将会给大家描述创建一个自定义Activitiy 的细节。文中的案例来自 UiPath 官方英文文档,笔者将其翻译成中文,并且添加了在操作过程中可能遇到的问题以及要点。

| 准备

创建自定义活动需要两个主要步骤:

编写自定义活动的代码

在UiPath内添加外部程序集(.dll)

特别地,请注意,创建自定义活动需要以下组件:

Microsoft Visual Studio 以及安装了.NET 桌面开发组件

NuGet Package Explorer.

下载地址:  https://github.com/NuGetPackageExplorer/NuGetPackageExplorer/releases

如果要一步步跟着操作,你需要事先安装好 Microsoft Visual Studio 和 NuGet Package Explorer。


| 关于 CodeActivity 和 NativeActivity

你可以编写继承自 CodeActivity 或者 NativeActivity 的自定义活动。这两类活动看起来很相似,但是它们是不一样的。

我们这一节要实现的是CodeActivity ,你可以从社区中查看一个详细的 NativeActivity 例子,文档的链接是:

http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,c3394709-1aaf-486a-8d1f-51050ce94ecc.aspx

下面是 CodeActivity 和 NativeActivity 的区别对比:

CodeActivity 

提供了一个 Execute方法,该方法可以被重写来作为你的实现。它还提供了对跟踪、变量和参数的访问。您可以将 CodeActivity 用于以下方面:

简单的自定义活动

同步的活动

单脉冲执行

调度其他活动

使用高级WF运行时功能

NativeActivity 

提供了CodeActivity 的所有功能,而且允许你终止活动的执行,取消子活动的执行,调度多个活动,使用书签,以及活动动作和函数。您可以将 NativeActivity 用于以下方面:

复杂的自定义活动

运行长的自定义活动

多脉冲执行

调度其他活动

使用高级 WF 运行时功能

注意:只有使用 CodeActivity 来创建活动时不要求 WF Runtime 的兼容性。


| 编写自定义活动的代码

为了让你更好地理解怎么编写自定义活动的代码,我们将会创建一个活动,向用户请求两个数字,然后输出其平方的总和。

注意:为了编写自定义活动,你需要安装 Microsoft Visual Studio 以及 .NET 桌面开发组件。


1. 新建项目

2. 启动 Microsoft Visual Studio

3. 点击 File > New >Project……(快捷方式:Ctrl + Shift+ N),将会显示 New Project 窗口

4. 点击 Visual C#.将会显示使用 c# 的所有项目模板的列表


5.(可选)为你的自定义活动填写合适的名称到 Name 字段。在这个例子中,我们使用 "MathSquareOfSumCodeActivity" 这个名字


6. 选择 Class Library (.NET Framework) 并点击 OK。这有助于我们将自定义活动导出为 .dll 文件。

7. 点击 Project > Add Reference….

8. 寻找 System.Activities 和 System.ComponentModel.Composition 并勾选它们。


9.点击 OK 按钮。这使得使用来自System.Activities 和System.ComponentModel.Composition 的类成为可能。

现在你可以决定使用 CodeActivity 还是 NativeActivity。在这个例子中,我们使用 CodeActivity,因此在 Using 指令中,添加下面的代码

using  System.Activities; using  System.ComponentModel;

10. 编写自定义活动的代码。在我们的例子中,它需要看起来像这样:


注意: 我们使用 protected override void Execute(CodeactivityContext) 代码来覆盖 Execute 方法。

11. 点击 Build > Build MathSquareOfSum。将会显示 Output 面板,通知您文件已经生成,并显示它的路径。在本例中,创建了 MathSquareOfSum.dll 文件。


你可以在项目子目录中的 bin > Debug 文件夹下找到这个 .dll 文件:



| 在 NuGet Package Explorer 中创建 Nuget 包

在 Uipath 中添加外部程序集之前,首先需要 创建 Nuget 包。

1. 启动 NuGet Package Explorer。


2. 点击 Create a new package (Ctrl + N) 。将显示一个拆分窗口,它显示 Package metadata 和 Package contents。我们需要在后面添加所有依赖项。

3. 右击 Package contents 部分,将会显示一个上下文菜单

4. 点击 Add lib folder。注意到,将在 Packagecontents 创建一个 lib 项

5. 右击 lib 并选中 Add Existing File ……

6.加载上面创建的外部程序集(.dll)。在这个例子中,应该为 MathSquareOfSumCodeActivity.dll.

Debug 目录下有两个文件,千万要看清楚,你要选择的是 .dll

7. 点击 Edit > Edit Metadata。将会显示 Packagemetadata部分。

8. 填写您认为合适的字段,以便更好地描述您的自定义活动。

9. 填写 id 字段。在这个例子中,可以是 ActivitiesCustomMathFunction

10. 填写完成之后,点击坐上角的绿色勾勾保存描述信息。

非常重要!

NuGet 包的 id 字段必须包含关键词 Activities 才能显示在 UiPath Studio 的 Manage Packages 窗口中

11. 点击左上角的 File > Save As... 生成 Nupkg 文件

12. 复制上述打包后的文件到 Uipath Studio 安装位置的 Packages 文件夹中。包含你自定义 Activity 的 Nuget 包现在已经准备好,可以在 UiPath 中加载了。

注意:必须为你的活动创建一个直观的文件夹结构。在 Orchestrator 中,自定义活动中所有的空文件夹都会被移除。


| 在 UiPath Studio中加载 NuGet 包(自定义Activity)

活动一旦被创建并打包成 .nupkg 文件之后,在Studio中安装它与其他活动类似。请参考官方文档 Adding your own Packages 获取更多信息。

 在 UiPath 4.0 中,可以在 Manage Packages > Settings 中找到 安装位置的 Packages 文件夹。如下图所示,Local (本地) 对应的文件路径就是安装位置的 Packages 文件夹。

将刚才生成的 .nupkg 文件复制到该文件夹下,即可在 Manage Packages 的 Local 目录下看到我们刚刚创建的自定义 Activity,点击 Save 按钮即可添加到UiPath 项目中。

新版本的 UiPath Studio 还允许我们创建自定义的 Packages 目录。这样可以更加方便地区分自定义 Activities 和官方提供的 Activities。

建议你将所有自定义 Activities 存放到一个固定的地方,然后在  Manage Packages 中创建一个目录,并把目录的路径指向该文件夹。这样可以更加方便地区分自定义 Activities 和官方提供的 Activities。

添加的方法其实也很简单,在 Manage Packages > Settings 中填写目录名称和路径即可。

点击 Save 之后会在 Manage Packages 左侧增加一个目录,在右侧显示目录下可用的 Nupkg 包。


| 在 UiPath 项目中使用自定义Activity

自定义 Activity 和普通的 Activity 并没有什么区别,在项目中安装之后就可以使用了。上述的 Activity 安装之后,会在 Manage Package 中显示:

也会在 Activity 面板中显示:

拖拽到项目中,能得到预期的输出。以下例子中输入了 6 和 9 两个数字,返回的结果是它们的平方和 225。



注:本文改编自 UiPath 文档,笔者在原文档的基础上添加了更加详细的说明和注意要点。

如果需要本教程中涉及的 C# 源代码工程以及 UiPath 工程,可以在公众号对话联系作者。



<本节教程完>

更多 UiPath 相关的资讯,请关注公众号:UiPath教程

权所有,如需转载,请先联系。

转发不属于转载行为,欢迎你转发到朋友圈、微信群,分享给微信朋友。

由于简书禁止直接在文章中插入公众号二维码,请点击 这里 了解关注该公众号的细节。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容