介绍

这将是使用前几天发布的 UiPathActivityCreator 创建自定义活动的实用版本。
《什么是UiPathActivityCreator》和《如何安装》请参考上一篇文章。

这一次,实际上是使用 UiPathActivityCreator 和
我们将继续在 UiPath Studio 中使用它。

这次要创建的自定义活动

这次作为示例,我想创建一个连接到 PostgreSQL、执行 SELECT 语句并获取结果的活动。
图像看起来像这样。
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
* Npgsql 用作连接到 PostgreSQL 的一种方式。

环境和版本信息

  • Visual Studio 2022
  • UiPath Studio 2022.4.4 社区许可证
  • Npgsql v6.0.6

自定义活动实施

1. 使用 UiPathActivityCreator 创建一个项目。
制作方法详见上篇文章。

这一次,我创建了一个如下格式的项目。

  • 项目名称:PostgreSQLConnection
    UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

2. 安装 Npgsql 以连接到 PostgreSQL。
右键单击 PostgreSQLConnection.Activities 并按管理 NuGet 包
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
在 Browse 选项卡中,输入 'npgsql' 进行搜索,单击 Npgsql,然后按 Install
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
可能会出现更改的预览,因此请按 OK。
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
显示如下时安装完成
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

3. 进行活动定义。
上一篇文章中也有详细介绍。
这次我是这样弄的。
活动定义
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
属性定义
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
这样,源代码就自动生成了。
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

SELECT.cs(摘录)
#region Protected Methods

        protected override void CacheMetadata(CodeActivityMetadata metadata)
        {
            if (Server == null) metadata.AddValidationError(string.Format(Resources.ValidationValue_Error, nameof(Server)));
            if (Port == null) metadata.AddValidationError(string.Format(Resources.ValidationValue_Error, nameof(Port)));
            if (UserId == null) metadata.AddValidationError(string.Format(Resources.ValidationValue_Error, nameof(UserId)));
            if (DbName == null) metadata.AddValidationError(string.Format(Resources.ValidationValue_Error, nameof(DbName)));
            if (Password == null) metadata.AddValidationError(string.Format(Resources.ValidationValue_Error, nameof(Password)));
            if (Enlist == null) metadata.AddValidationError(string.Format(Resources.ValidationValue_Error, nameof(Enlist)));

            base.CacheMetadata(metadata);
        }

        protected override async Task<Action<AsyncCodeActivityContext>> ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            // Inputs
            var server = Server.Get(context);
            var port = Port.Get(context);
            var userid = UserId.Get(context);
            var dbname = DbName.Get(context);
            var password = Password.Get(context);
            var enlist = Enlist.Get(context);
    
            ///////////////////////////
            // Add execution logic HERE
            ///////////////////////////

            // Outputs
            return (ctx) => {
                Result.Set(ctx, null);
            };
        }

#endregion

4 .实现'Add execution logic HERE'的流程。
我将只挑选并描述已更改的部分。

  • 直接在代码中实现的查询语句。
    本来最好把它作为INPUT参数传递,这样就可以动态改变了。
    这次的目的是实现和使用一个自定义的activity,所以我省略了。
  • 数据库连接应该有一个事务,但是这次被省略了。
    如果您实际上将其用于商业等,请进行交易。
SELECT.cs(参考部分)
using System;
using System.Activities;
using System.Threading;
using System.Threading.Tasks;
using System.Data;
using PostgreSQLConnection.Activities.Properties;
using UiPath.Shared.Activities;
using UiPath.Shared.Activities.Localization;
+ using Npgsql;
SELECT.cs(实际处理部分)
protected override async Task<Action<AsyncCodeActivityContext>> ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            // Inputs
            var server = Server.Get(context);
            var port = Port.Get(context);
            var userid = UserId.Get(context);
            var dbname = DbName.Get(context);
            var password = Password.Get(context);
            var enlist = Enlist.Get(context);

            // 接続文字列の生成
+           string connectStr = $"Server={server};Port={port};User ID={userid};Database={dbname};Password={password};Enlist={enlist}";
+
+           // 返却用変数
+           DataTable table = new DataTable();
+
+            // DB接続
+            using (NpgsqlConnection connection = new NpgsqlConnection(connectStr)) { 
+               
+               // DB接続開始
+               connection.Open();
+
+                // 実行クエリ
+               string queryStr = "SELECT * FROM test";
+
+                // 実行準備
+               NpgsqlCommand command = new NpgsqlCommand(queryStr, connection);
+               NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(command);
+
+                
+               // 実行
+               adapter.Fill(table);
+
+               // DB接続クローズ
+               connection.Close();
+           }

            // Outputs
            return (ctx) => {
+               Result.Set(ctx, table);
-               Result.Set(ctx, null);
            };
        }

5. 将创建的活动打包,以便使用。
右键单击 PostgreSQLConnection.Activities 并按发布
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
这次,要发布到本地文件夹,请选择一个文件夹并按下一步。
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
进入创建包的文件夹,点击完成
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
准备出版。显示,所以按发布
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
如果构建成功完成,您将看到一条成功消息
如果您已经走到了这一步,那么您已经完成了 VisualStudio
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

6.导入使用 UiPath Studio 创建的包。
在“设置”>“管理包源”>“用户定义的包源”中指定先前输出包的文件夹
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

被添加到用户定义的包源中
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

机器人创作

1. 用实际创建的包创建一个进程。
进程创建方法与普通机器人相同。

2. 将包添加到创建的进程中。
新闻资料包管理
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

选择本地包(前面用户定义中定义的名称),
选择创建的包,按安装,最后按保存
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

安装将运行,现在将出现在活动列表中
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

2. 使用您实际创建的活动。
像正常活动一样在 Input 和 Output 中输入变量或固定值
* Input 和 Output 将是使用 UiPathActivityCreator 创建活动时设置的那些
这次,Input 设置为预先准备好的本地 DB 连接信息(固定值),Output 设置为名为 ret 的变量。
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

操作检查

设置断点并在调试中运行。
我能够确认输出变量 ret 包含 SELECT 的执行结果
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

顺便说一下,test DB的内容是这样的。
UiPathActivityCreatorを利用してカスタムアクティビティを作ってみた(実践編)「UiPath, PostgreSQL接続」

概括

这一次,作为一个实用版,我实际使用了 UiPathActivityCreator 来创建和使用自定义活动。
我认为可以通过更改 C# 中的实现内容来使用各种其他东西。
但是,我担心以下几点。

  • 如果要更改中间的Input和Output定义,找不到修改窗口之类的东西
    (我注意到途中缺少变量定义,但我不知道该怎么做......)
  • 无法对活动定义、输入和输出定义窗口中的行进行排序
    (我觉得如果有就好了)

但是,由于现在可以比以前更多地创建自定义活动,
我认为它作为扩展非常有用。

看来以后还会继续更新支持.Net6,个人很期待!

参考资料

  • 从 C# 连接到 PostgreSQL(.NET 系列)(TransactionScope 和分布式事务)
  • 我尝试使用 UiPathActivityCreator 创建自定义活动(如何制作)

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308623464.html

相关文章: