[轉]自定義UiPath Activity實踐


本文轉自:https://segmentfault.com/a/1190000017440647

為了對UiPath Activity的實現方式一探究竟,自己嘗試實踐編寫了一個簡單的Activity,取名叫SelectRandomItem。

1. 開發環境准備:

2. Activity概述

自定義Activity分兩種,CodeActivity和NativeActivity。簡單的區分就是CodeActivity只是執行一段代碼,NativeActivity的效果就像內置Activities一樣,它們實際上就是不同Activity的父類,實現的時候選擇繼承哪個類,你的Activity就是屬於哪個分類。

我們這里是實現CodeActivity,NativeActivity請看開源代碼的實現。
功能是把特定分隔符連接的字符串分割開,然后隨機返回其中的某一個。應用在給選擇框一個隨機的值。因為主要是學習的目的,所以實際上並沒有跟選擇框有太大的關聯,只是對字符做了處理而已。

自定義Activity分兩步,首先通過C#語言來編寫你的Activity邏輯,編譯生成.dll文件,然后通過NuGet Package Explorer打包。

3.創建C#項目,編寫實現代碼

下面跟着提示一步一步創建C#項目:

  1. Launch Microsoft Visual Studio.
  2. Click 文件 > 創建 > 項目 (shortcut: Ctrl + Shift + N). The New Project window is displayed.
  3. Click Visual C#. The list of all dependencies using C# is displayed.
  4. 給你的Activity取個名字, 這里是 “SelectRandomItem”。
  5. 選擇類庫(.NET Framework) and click OK. 這樣才能把項目導出為 .dll文件。
  6. Click 項目 > 添加引用….
  7. 分別搜索 System.ActivitiesSystem.ComponentModel.Composition 引用,並勾選。
  8. Click the OK button.這樣就可以在代碼中使用 System.ActivitiesSystem.ComponentModel.Composition 這兩個基礎組件了。

下面是已添加注釋的實現代碼:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Text.RegularExpressions;
  7.  
  8. using System.Activities;
  9. using System.ComponentModel;
  10.  
  11. namespace SelectRandomItem
  12. {
  13. public class SelectRandomItem : CodeActivity
  14. {
  15. //參數類型,輸入或者輸出,或者兩者都是
  16. [ Category("Input")]
  17. //必須參數
  18. [ RequiredArgument]
  19. public InArgument<String> FullText { get; set; }
  20.  
  21. [ Category("Input")]
  22. //參數默認值
  23. [ DefaultValue("\r\n")]
  24. public InArgument<String> Separator { get; set; }
  25.  
  26. [ Category("Output")]
  27. public OutArgument<String> ChoiceResult { get; set; }
  28.  
  29. /**
  30. * Execute是CodeActivity必須重載的方法
  31. * 處理邏輯根據Separator指定的分割符分割FullText
  32. * 然后隨機返回其中一個
  33. *
  34. **/
  35. protected override void Execute(CodeActivityContext context)
  36. {
  37. //所有的參數取值、賦值都是通過context
  38. var fullText = FullText.Get(context);
  39. var separator = Separator.Get(context);
  40. string[] items = Regex.Split(fullText, separator, RegexOptions.IgnoreCase);
  41. Random ran = new Random();
  42. var result = items[ran.Next(items.Length)];
  43. ChoiceResult.Set(context, result);
  44. }
  45. }
  46.  
  47. }

然后點擊 生成 > 生成 SelectRandomItem。在輸出欄找到SelectRandomItem.dll文件所在位置,准備下一步打包使用。

4. 使用NuGet Package Explorer打包

  1. 打開NuGet Package Explorer。點擊Create a new package (Ctrl + N),你會看到左右分割的兩欄Package metadata和Package contents。
  2. 在右邊Package contents欄的右鍵菜單單擊 Add lib folder。
  3. 在lib文件夾上右鍵,點擊 Add Existing File… 添加 SelectRandomItem.dll 文件。
  4. 點擊頂部菜單欄 Edit > Edit Metadata,填寫你的包信息。需要注意的是Id字段必須包含 “Activities”,不然UiPath會無法識別。
    打包信息
  5. 點擊 File > Save ,保存你的包,文件名應該是類似這樣:ActivitiesSelectRandomItem.1.0.0.nupkg

至此你的Activity就創建完成了。

添加到UiPath和你的項目當中實際使用

  1. 首先確定你的UiPath本地包的目錄,打開Manage Packages,點擊左上方的Settings,在Default packages sources欄中查看Local標簽對應的路徑。把你創建的包放到這個文件夾內。
  2. 在Manage Packages左側點擊All Packages > Local ,你或者應該可以直接看到你的包了或者通過搜索來找到你的包。
  3. 點擊你的包,在右側信息欄點擊install,然后Save,至此你的包已經安裝到你的UiPath Studio的Activities面板中了。

    安裝自定義包

  4. 拖到你項目中體驗一下吧:)
    實際使用圖示

5. 代碼文件下載

該Activity的源文件都發布在個人github倉庫,有需要請點擊這里查看和下載。
同時該Activity在記事本自動錄入項目中使用到兩次,分別是隨機選擇字體和隨機字體大小。對比我通過Python模塊實現同樣的功能來看,自定義Activity的執行速度比調用Python模塊要穩定要快很多。

最后,謝謝你能看完!有不完善的地方還希望與大家多交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM