[轉]自定義UiPath Activity實踐

本文轉自:http://www.javashuo.com/article/p-urzprzuw-kk.htmlhtml

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

1. 開發環境準備:

2. Activity概述

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

咱們這裏是實現CodeActivity,NativeActivity請看開源代碼的實現。
功能是把特定分隔符鏈接的字符串分割開,而後隨機返回其中的某一個。應用在給選擇框一個隨機的值。由於主要是學習的目的,因此實際上並無跟選擇框有太大的關聯,只是對字符作了處理而已。github

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

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

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

  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 這兩個基礎組件了。

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

  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模塊要穩定要快不少。ui

最後,謝謝你能看完!有不完善的地方還但願與你們多交流。spa

相關文章
相關標籤/搜索