zoukankan      html  css  js  c++  java
  • [转]自定义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(" ")]
    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模块要稳定要快很多。

    最后,谢谢你能看完!有不完善的地方还希望与大家多交流。

  • 相关阅读:
    Django学习【第5篇】:Django之ORM数据库操作注意细节
    Django学习【第5篇】:Django之ORM数据库操作
    Django学习【第4篇】:Django之模板继承
    Django学习【第3篇】:Django之模板语法
    Django学习【第2篇】:Django之反向解析
    Django学习【第1篇】:Django之MTV模型
    cookie和session
    Django 之 auth 模块
    Django 之 form表单
    中间件的流程图
  • 原文地址:https://www.cnblogs.com/freeliver54/p/11616714.html
Copyright © 2011-2022 走看看