RPA之PAD(Power Automate Desktop)组件开发

这篇具有很好参考价值的文章主要介绍了RPA之PAD(Power Automate Desktop)组件开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Power Automate Desktop 组件开发

其实,PAD,现在官方文档还没有对外组件式或者插件式开发接口。
但是,有一些志同道合的朋友,比如(潘淳),潘总大佬,在RPA领域,还是很牛逼的。

只要有一扇门,就会有一个世界,现在已经有了一扇门(毕竟是.Net Framework,那么,研究借鉴就容易多了)。

组件开发环境

默认组件的位置是在当前应用下的这个目录

C:\Program Files (x86)\Power Automate Desktop\custom-modules

应用地址,按照你自己的来。

另外,插件的DLL,是需要DLL 代码签名了。
默认采用个人签名,放到系统 受信任的根证书颁发机构 即可。
如果有钱,可以买个代码签名。
目前,我这边还没别的好的方式,其中,签名大致分为两种,一种是域名证书SSL,和 代码签名,它们之间是不一样的,不能混用。

大致目录如下:
RPA之PAD(Power Automate Desktop)组件开发

最简单的Demo

准备直接按照开发流程走一遍,最后,在总结。

新建空白解决方案

默认新增一个解决方案(空的解决方案)
RPA之PAD(Power Automate Desktop)组件开发

新增组件库

组件DLL名要满足以下 规则

"?*.Modules.?*.dll",
"Modules.?*.dll"

而,官方的组件包是这样子的

Microsoft.Flow.RPA.Desktop.Modules.System.Actions.dll

所以,我这边也按照官方的标准走。

就叫 YZG.Modules.HelloWorld.Actions
注:需要注意的是,像 demo,test等名字,可能会导致识别不出来的问题,所以,建议起一些特殊的名字。
RPA之PAD(Power Automate Desktop)组件开发

打招呼组件项目

默认方案从打招呼开始

引用开发DLL包

然后,引用安装目录
C:\Program Files (x86)\Power Automate Desktop
下的这几个DLL包

 Microsoft.Flow.RPA.Desktop.Modules.SDK.dll
 Microsoft.Flow.RPA.Desktop.Modules.SDK.Extended.dll

当然,如果你用的过程中,提示,需要哪个包,你也可以引入进来。
引入完,效果如下:
RPA之PAD(Power Automate Desktop)组件开发

增加打招呼逻辑

以下就是全部逻辑代码

    [Action(Id = "SayHello")]
    [Icon(Code = "EFF7")]
    [Throws("MyError")]
    public class SayHello : ActionBase
    {
        [InputArgument]
        public string UserName { get; set; }    

        [OutputArgument]
        public string Result { get; set; }
        public override void Execute(ActionContext context)
        {
            try
            {
                this.Result = $"{UserName} 你好,中国欢迎你! -{DateTime.Now}";
            }
            catch (ActionException ex)
            {
                throw new ActionException("MyError", ex.Message, ex.InnerException);
            }
        }
    }

增加国际化支持

也不用增加外语,直接增加中文支持就可以了
首先,我们增加一个中文的资源文件
(另外可以参考官网路径下的语言包来看内部结构分析)
RPA之PAD(Power Automate Desktop)组件开发

组件显示大致规则

组件的名字从哪里来
RPA之PAD(Power Automate Desktop)组件开发
是从程序集信息里的AssemblyTitle来的,这个名字默认是英文,但是,也可以汉化的。
另外这个名字最好和组件Action的名字不一致。这样,显示会方便点

组件内容的显示大致规则

通过对 组件名 或者 类型 以及 类属性 分割。
增加

  1. _FriendlyName‎
  2. _Description
  3. _Summary

其中 FriendlyName 就是各种组件的主名称,Description就是提示语相当于,Summary就是关键信息,作用还是很明显的,内部使用了模板引擎变量 <属性名大写>来动态显示一些信息。

大体示例如下:

Close_Connection_Description‎ = "新 SQL 连接的句柄"
Close_Connection_FriendlyName‎ = "SQL 连接"
Close_Description‎ = "关闭与数据库的开放连接"
Close_FriendlyName‎ = "关闭 SQL 连接"
Close_Summary‎ = "关闭 SQL 连接 <CONNECTION>"
ConnectAndExecute_Description‎ = "连接到数据库并执行 SQL 语句"
ConnectAndExecute_Summary‎ = "<if(RESULT)>\r\n执行 SQL 语句 <STATEMENT> 并将查询结果存储到 <RESULT> 中<else>\r\n执行 SQL 语句 <STATEMENT><endif>"
Connect_ConnectionString_Description‎ = "用于连接到数据库的连接字符串"
Connect_ConnectionString_FriendlyName‎ = "连接字符串"
Connect_Connection_Description‎ = "新 SQL 连接的句柄"
Connect_Connection_FriendlyName‎ = "SQL 连接"
Connect_Description‎ = "打开与数据库的新连接"
Connect_FriendlyName‎ = "打开 SQL 连接"
Connect_Summary‎ = "<if(CONNECTION)>\r\n打开 SQL 连接 <CONNECTIONSTRING> 并将其存储到 <CONNECTION> 中<else>\r\n打开 SQL 连接 <CONNECTIONSTRING><endif>"
Database_Description‎ = "连接到数据库并执行 SQL 语句"
Database_FriendlyName‎ = "数据库"
ErrorMessage_CannotConnect‎ = "无法连接到数据源"
ErrorMessage_CannotConnectError‎ = "无法连接到数据源 {0}"
ErrorMessage_InvalidConnectionString‎ = "连接字符串无效"
ErrorMessage_StatementError‎ = "SQL 语句中的错误 {0}"
ErrorMessage_UniniatializedConnection‎ = "SQL 连接未初始化。请仔细检查是否已指定正确的 SQL 连接,且该连接在“打开 SQL 连接”之后(而不是在已关闭该连接之后)使用"
Error_ConnectToDataSourceError_Description‎ = "指示连接到数据源时出现问题"
Error_ConnectToDataSourceError_FriendlyName‎ = "无法连接到数据源"
Error_InvalidConnectionStringError_Description‎ = "指示指定的连接字符串无效"
Error_InvalidConnectionStringError_FriendlyName‎ = "连接字符串无效"
Error_SqlStatementError_Description‎ = "指示给定的 SQL 语句中存在错误"
Error_SqlStatementError_FriendlyName‎ = "SQL 语句中的错误"
ExecuteSqlStatement_ConnectionString_Description‎ = "用于连接到数据库的连接字符串"
ExecuteSqlStatement_ConnectionString_FriendlyName‎ = "连接字符串"
ExecuteSqlStatement_Connection_Description‎ = "新 SQL 连接的句柄"
ExecuteSqlStatement_Connection_FriendlyName‎ = "SQL 连接"
ExecuteSqlStatement_Description‎ = "连接到数据库并执行 SQL 语句"
ExecuteSqlStatement_FriendlyName‎ = "执行 SQL 语句"
ExecuteSqlStatement_GetConnection_Description‎ = "指定是从给定连接字符串创建新连接,还是选择已打开的连接"
ExecuteSqlStatement_GetConnection_FriendlyName‎ = "获取连接的方式"
ExecuteSqlStatement_Result_Description‎ = "来自数据库的结果,采用数据表的形式,包含行和列"
ExecuteSqlStatement_Result_FriendlyName‎ = "查询结果"
ExecuteSqlStatement_Statement_Description‎ = "要对数据库执行的 SQL 语句"
ExecuteSqlStatement_Statement_FriendlyName‎ = "SQL 语句"
ExecuteSqlStatement_Timeout_Description‎ = "等待来自数据库的结果的最长时间"
ExecuteSqlStatement_Timeout_FriendlyName‎ = "超时"
Execute_Description‎ = "连接到数据库并执行 SQL 语句"
Execute_Summary‎ = "<if(RESULT)>\r\n对 <CONNECTION> 执行 SQL 语句 <STATEMENT> 并将查询结果存储到 <RESULT> 中<else>\r\n对 <CONNECTION> 执行 SQL 语句 <STATEMENT><endif>"
GetSQLConnectionBy_ConnectionString_FriendlyName‎ = "连接字符串"
GetSQLConnectionBy_SQLConnectionVariable_FriendlyName‎ = "SQL 连接变量"
Message_SqlConnection‎ = "SQL 连接"
SqlConnectionHandle_FriendlyName‎ = "SQL 连接"
SqlConnectionHandle_FriendlyNamePlural‎ = "SQL 连接"

参考如上信息,接下来,我们对打招呼程序进行中文内容填充。

实际中文内容

我这边增加了这些内容
RPA之PAD(Power Automate Desktop)组件开发

增加组件项目签名

有钱的自己搞代码签名证书,没钱的,按照我这个临时自发证书先来。

创建临时证书

RPA之PAD(Power Automate Desktop)组件开发
来创建一个新的签名(记得VS要管理员模式,就是以管理员方式启动)

RPA之PAD(Power Automate Desktop)组件开发
然后,就创建了一个签名pfx文件
RPA之PAD(Power Automate Desktop)组件开发

给组件DLL签名

这个时候,我们要用这个工具(signtool.exe)进行签名,只要安装了vs就会自带。
当然,我也会提供出来。
一个签名的bat脚本(默认签名密码为 123456)
RPA之PAD(Power Automate Desktop)组件开发
RPA之PAD(Power Automate Desktop)组件开发
基本只需要这两个程序集进行签名,其他的,引用的nuget库是不需要的。
主要是YZG.Modules.HelloWorld.Actions.dll和zh-Hans\YZG.Modules.HelloWorld.Actions.resources.dll
放到签名的地方
RPA之PAD(Power Automate Desktop)组件开发RPA之PAD(Power Automate Desktop)组件开发
双击bat进行签名
RPA之PAD(Power Automate Desktop)组件开发
这样就签名成功了。另外在DLL上右键,是能看到签名信息的。

RPA之PAD(Power Automate Desktop)组件开发

目标机器上安装证书

如果你的证书是掏钱买的,自然就不用安装了。直接被认可的。否则,还是要安装证书的。
安装证书,非常的简单,直接双击,输入密码,然后,选择指定的位置即可。
RPA之PAD(Power Automate Desktop)组件开发
直接下一步
RPA之PAD(Power Automate Desktop)组件开发
下一步
RPA之PAD(Power Automate Desktop)组件开发
选择受信任的根证书颁发机构
RPA之PAD(Power Automate Desktop)组件开发RPA之PAD(Power Automate Desktop)组件开发
然后,完成,是否导入,是,确定,即可。
输入CMD命令( certmgr.msc ) 就可以看到指定分组下就有你的证书了。
至此,证书安装完毕。

组件部署

前提,应用服务要退出,
RPA之PAD(Power Automate Desktop)组件开发
要不然,DLL会被占用。
然后,把签名后的项目放入到安装目录下的指定插件目录里大致如下所示。
另外,我这个是C盘,还有一个权限的问题。需要注意,能安装到其他盘最好
RPA之PAD(Power Automate Desktop)组件开发
然后,运行 PAD应用,新建一个任务流,或者编辑任意一个任务流。
如果出现以下问题,那就是证书没有安装到目标机器,安装一下就好。
RPA之PAD(Power Automate Desktop)组件开发
然后,正常情况下,打开PAD的设计视图,会如下所示:
RPA之PAD(Power Automate Desktop)组件开发

已经新增了一个功能 测试案例 -> 打招呼 并新增了一个功能。
我们试一下
RPA之PAD(Power Automate Desktop)组件开发
保存后如下所示
RPA之PAD(Power Automate Desktop)组件开发
最后,可以看下实际的动作,效果很不错的说。
RPA之PAD(Power Automate Desktop)组件开发

问题处理

第一,中文不显示的问题,建议增加中文语言包,里面的名字要跟代码相匹配,具体可以参考示例。
第二,加载不出来,提示错误,可以根据错误提示修改,或者添加缺失的引用包。
第三,更多细节,只能多挖掘和尝试了

扩展组件的参数信息

我这边根据网友(潘淳)的总结以及自己的总结,也输出一个这样的文档出来。
ActionBase 需要的相关参数
RPA之PAD(Power Automate Desktop)组件开发
RPA之PAD(Power Automate Desktop)组件开发
以及内置的相关类型
RPA之PAD(Power Automate Desktop)组件开发
这里也感谢潘淳大佬的总结

完结

完结撒花,写这个还真不容易,特别是PAD,识别你的组件的时候,会有各种各样的问题。
这个时候就要重试好多遍,好多遍。
不过还好,我已经基于这个能扩展的组件,写了一个Sqlite的组件。也会发到示例了。供大佬们参考。

引用

https://github.com/kesshei/PADDemo文章来源地址https://www.toymoban.com/news/detail-442809.html

到了这里,关于RPA之PAD(Power Automate Desktop)组件开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用Power Automate,轻松下载Power BI报告中的数据

        Power Automate是微软的流程自动化(RPA)工具,可以友好、无代码的实现各种低效工作流程的自动化处理。它也已经集成到了Power BI中,在 Power BI 报表中创建 Power Automate 视觉对象后,终端用户只需单击报表中的按钮即可运行自动化流。 通过二者的协同,可以提供更强大、更灵

    2024年02月04日
    浏览(41)
  • Power Platform 零基础 Power Apps canvas+Power Automate 画布应用基础搭建应用流程

    1、Power Apps 介绍 Power Apps 是一套应用程序、服务、连接器和数据平台,可让您有机会构建自定义应用程序以满足您的业务需求。通过使用 Power Apps,您可以快速构建自定义业务应用程序,以连接到存储在基础数据平台 (Microsoft Dataverse) 或各种在线和本地数据源(SharePoint、Exce

    2024年02月05日
    浏览(42)
  • 搭载下一代人工智能技术,微软推出Power Automate流程挖掘产品

    在近日的Microsoft Inspire大会中,微软揭晓了他们即将推出的Power Automate流程挖掘产品,并计划在8月1日正式对外开放。 试用地址:https://powerautomate.microsoft.com/zh-cn/#home-signup 这款产品搭载了下一代人工智能技术,有助于组织轻松洞察业务运行的全景,最大程度地理解流程,利用

    2024年02月17日
    浏览(72)
  • Android 打包AAB+PAD(Unity篇),Android开发基础面试题

    这些部分适用于**「fast-follow」 和 「on-demand」**资产包。 检查状态 每个资产包都存储在应用程序内部存储的单独文件夹中。使用该 「isDownloaded()」 方法确定是否已下载资产包。 监控下载 查询PlayAssetBundleRequest 监控请求状态的 对象: // Download progress of request, between 0.0f 

    2024年04月14日
    浏览(46)
  • 【前沿技术RPA】 RPA开发人员的日常

    🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:UiPath 🦀专栏简介: UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现

    2024年01月19日
    浏览(44)
  • UiPath RPA开发

      一:Rpa的概念 1.1机器人流程自动化 (Robotic Process Automation,RPA)就是利用机器人技术来实现流程的自动化处理。 2017年,IEEE(电气电子工程师学会)给出的RPA定义是,通过软件技术来预定业务规则以及活动编排过程,利用一个或多个相互互不关联的软件系统,协作完成一组

    2024年02月02日
    浏览(55)
  • RPA设计实施、开发和单元测试

    RPA的设计、开发和单元测试是RPA项目实施的核心阶段。这个实施过程并非是遵循传统的瀑布式软件开发方法,而是遵循敏捷方法论,采用冲刺Sprint和迭代增量Scrum相结合的方法。Sprint指的是一次冲刺迭代,通常是以最快的速度完成一次开发任务的时间周期。Scrum包括一系列最佳

    2023年04月08日
    浏览(73)
  • 【RPA开发】Selenium 实现网页自动化

    开发时有时会遇到网页爬取限制的情况,那么此时可以通过 Selenium 来解决这个问题,因为 Selenium 是模拟浏览器执行网页爬取,相比 Request/API 操作更安全,服务器会完全认为是用户在用浏览器进行操作,如此可以实现网页自动化操作,由于 Selenium 是完全模拟浏览器操作,因此

    2023年04月25日
    浏览(105)
  • 使用Pega进行一个简单的RPA程序开发

    Pega 和 RPA 可能都是大多数程序员没有了解过的东西,本人在一家外企做 BPM 和 RPA 项目的部门工作,进入公司的时候就遇到了稀缺技术的学习资源少的问题,因此在此将我学习和工作积累下来的一些知识记录下来。 放个 Pega BPM 的笔记连接 CSDN Github仓库 Pega总的来说可以做两件

    2024年02月09日
    浏览(58)
  • 无代码开发smardaten与Power Platform详细对比

    前两周,我一个本科毕业就回家乡(洛阳)开办公司的同学向我咨询,像他这样100多号员工的软件开发公司,在当下互联网人力成本与日俱增的大环境下,如何提升人效来保证企业生存,又该如何转型,从而更有机会做大做强? 针对他的这个问题,结合过往多年来的工作和项

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包