- 发行说明
- 入门指南
- 设置和配置
- 自动化项目
- 依赖项
- 工作流类型
- 文件比较
- 自动化最佳实践
- 源代码控件集成
- 调试
- 诊断工具
- 工作流分析器
- 变量
- 参数
- 导入的命名空间
- 控制流程
- 对象存储库
- 日志记录
- ScreenScrapeJavaSupport 工具
- Studio 测试
- 扩展程序
- 故障排除
泛型值变量
通用值变量是一种变量,可以存储任何类型的数据,包括文本、数字、日期和数组,并且是 Studio 特有的。
泛型值变量自动转换为其他类型,以便执行某些操作。但是,请务必谨慎地使用这些类型的变量,因为变量转换并非总是适合您的项目。
UiPath Studio 具有泛型值变量的自动转换机制,您可以通过仔细定义它们的表达式来引导它们达到预期结果。考虑到表达式中的第一个元素用作 Studio 执行操作时的准则。例如,当您尝试添加两个泛型值变量时,如果表达式中的第一个变量定义为字符串,则结果是这两个变量的拼接。如果第一个变量定义为整数,则结果是这些整数的和。
支持的 .NET 方法
| 名称/语法 | 描述 |
|---|---|
|
比较对象
|
[单击此处以了解详细信息。][1] [1]:https://msdn.microsoft.com/en-us/library/system.string.compareto(v=vs.110).aspx |
|
包含
|
[单击此处以了解详细信息。][2] [2]: https://msdn.microsoft.com/en-us/library/dy85x1sa(v=vs.110).aspx 用于检查字符串变量是否包含某个子字符串。例如,如果您想检查一个句子是否包含一个特定的单词,表达式应该是 |
|
等于
|
[单击此处以了解详细信息。][3] [3]:https://msdn.microsoft.com/en-us/library/system.string.equals(v=vs.110).aspx |
|
获取散列代码
|
[单击此处以了解详细信息。][5] [5]:https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx |
|
获取类型
|
[单击此处以了解详细信息。][6] [6]:https://msdn.microsoft.com/en-us/library/system.object.gettype(v=vs.110).aspx |
|
获取类型代码
|
[单击此处以了解详细信息。][7] [7]:https://msdn.microsoft.com/en-us/library/system.string.gettypecode(v=vs.110).aspx |
|
索引对象
|
[单击此处以了解详细信息。][8] [8]:https://msdn.microsoft.com/en-us/library/system.string.indexof(v=vs.110).aspx 用于返回字符串变量中包含的子字符串的索引。例如,如果您想找到“Find 'locate' in this sentence”句子中“locate”一词的索引,表达式应该为 |
|
长度
|
[单击此处以了解详细信息。][9] [9]: https://msdn.microsoft.com/en-us/library/system.string.length(v=vs.110).aspx 用于返回字符串变量中的字符数。例如,如果您想知道一个单词有多少字母,那么表达式应该是 |
|
替换
|
[单击此处以了解详细信息。][10] [10]:https://msdn.microsoft.com/en-us/library/system.string.replace(v=vs.110).aspx 用于替换字符串变量中包含的数据。例如,如果您要将本地文件路径 |
|
拆分
|
[单击此处以了解详细信息。][11] [11]:https://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx 用于返回字符串变量中的各个组成部分。例如,如果您想从 MM.DD.YYYY 日期格式中提取年份,表达式应该是 |
|
子字符串
|
[单击此处以了解详细信息。][12] [12]: https://msdn.microsoft.com/en-us/library/system.string.substring(v=vs.110).aspx 用于返回字符串变量中包含的子字符串。例如,如果您想从“There are 100 machines available”句子中提取一个单词,表达式应该为 |
|
换为布尔值
|
[单击此处以了解详细信息。][13] [13]: https://msdn.microsoft.com/en-us/library/bb346937(v=vs.110).aspx |
|
换为字节
|
[单击此处以了解详细信息。][14] [14]: https://msdn.microsoft.com/en-us/library/bb355898(v=vs.110).aspx |
|
换为字符
|
[单击此处以了解详细信息。][15] [15]: https://msdn.microsoft.com/en-us/library/bb335877(v=vs.110).aspx |
|
换为小数
|
[单击此处以了解详细信息。][17] [17]: https://msdn.microsoft.com/en-us/library/bb359959(v=vs.110).aspx |
|
换为倍数
|
[单击此处以了解详细信息。][18] [18]: https://msdn.microsoft.com/en-us/library/bb154906(v=vs.110).aspx |
|
换为整数
|
用于将指定值转换为可空整数。 |
|
换为 16 位整数
|
[单击此处以了解详细信息。][20] [20]: https://msdn.microsoft.com/en-us/library/bb293091(v=vs.110).aspx |
|
换为 32 位整数
|
[单击此处以了解详细信息。][21] [21]: https://msdn.microsoft.com/en-us/library/bb300452(v=vs.110).aspx |
|
换为 64 位整数
|
[单击此处以了解详细信息。][22] [22]: https://msdn.microsoft.com/en-us/library/bb359566(v=vs.110).aspx |
|
换为小写
|
[单击此处以了解详细信息。][23] [23]:https://msdn.microsoft.com/en-us/library/system.string.tolower(v=vs.110).aspx |
|
换为小写不变量
|
[单击此处以了解详细信息。][24] [24]:https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant(v=vs.110).aspx |
|
换为带符号字节
|
[单击此处以了解详细信息。][25] [25]: https://msdn.microsoft.com/en-us/library/bb342232(v=vs.110).aspx |
|
换为单值
|
[单击此处以了解详细信息。][26] [26]: https://msdn.microsoft.com/en-us/library/bb360375(v=vs.110).aspx |
|
到字符串
|
[单击此处以了解详细信息。][27] [27]:https://msdn.microsoft.com/en-us/library/system.string.tostring(v=vs.110).aspx |
|
换为类型
|
[单击此处以了解详细信息。][29] [29]: https://msdn.microsoft.com/en-us/library/bb358540(v=vs.110).aspx |
|
换为无符号 16 位整数
|
[单击此处以了解详细信息。][30] [30]: https://msdn.microsoft.com/en-us/library/bb337265(v=vs.110).aspx |
|
换为无符号 32 位整数
|
[单击此处以了解详细信息。][31] [31]: https://msdn.microsoft.com/en-us/library/bb357762(v=vs.110).aspx |
|
换为无符号 64 位整数
|
[单击此处以了解详细信息。][32] [32]: https://msdn.microsoft.com/en-us/library/bb155099(v=vs.110).aspx |
|
换为大写
|
[单击此处以了解详细信息。][33] [33]: https://msdn.microsoft.com/en-us/library/system.string.toupper(v=vs.110).aspx |
|
换为大写不变量
|
[单击此处以了解详细信息。][34] [34]:https://msdn.microsoft.com/en-us/library/system.string.toupperinvariant(v=vs.110).aspx |
|
剪裁
|
[单击此处以了解详细信息。][35] [35]:https://msdn.microsoft.com/en-us/library/system.string.trim(v=vs.110).aspx |
|
剪裁结束
|
[单击此处以了解详细信息。][36] [36]:https://msdn.microsoft.com/en-us/library/system.string.trimend(v=vs.110).aspx |
|
剪裁开始
|
[单击此处以了解详细信息。][37] [37]:https://msdn.microsoft.com/en-us/library/system.string.trimstart(v=vs.110).aspx |
直接在“格式值”活动正文中使用 Ctrl + K、Ctrl + M 或 Ctrl + Shift + M 时,创建的变量或参数的类型为“通用值”。对于其他活动,创建的类型与活动的必需类型相同。
使用泛型值变量的示例
为了演示泛型值变量的工作方式,我们来创建一个执行不同操作的自动化,这些操作的结果取决于我们定义表达式的方式。我们创建两个不同数据类型的泛型值变量,并在“输出”面板中显示结果。
-
创建一个新的空白项目。
-
创建三个泛型值变量:
Int、Str和Result。 -
在
Int变量的“默认值”列中,键入 12,对于Str变量,请键入“34”。第一个变量解释为整数,而第二个变量解释为字符串。 -
将“分配活动”添加到“设计器”面板,并将其连接到“开始”节点。
-
在“属性”面板的“至”字段中,输入
Result变量。 -
在“值”字段中,键入
Int+Str。 -
添加“写入行”活动,并将其连接到“分配”活动。
-
在“属性”面板的“至”字段中,输入
Result变量。项目的呈现应如以下屏幕截图所示。
-
按 F5 可执行自动化。注意,在“输出”面板中,将显示这两个数字的和。
-
返回到之前添加的“分配”活动,并将“值”字段更改为
Str+Int,以反转变量的顺序。 项目应如下面的屏幕截图所示。 -
按 F5 可执行自动化。注意,在“输出”面板中,将显示这两个数字的拼接。
这意味着 UiPath Studio 将表达式中定义的第一个元素作为要执行的操作的准则。如果表达式中的第一个元素是整数或作为整数填充的通用值变量,则 UiPath Studio 将执行元素的汇总。
如果表达式中的第一个元素是字符串或作为字符串填充的通用值变量,则 UiPath Studio 将执行元素的拼接。
队列项目变量
我们建议您阅读“关于队列和事务”页面,以了解队列和事务的概述,然后再继续处理 QueueItem 变量。
在深入了解此主题的详细信息前,请确保您已清楚队列项目(存储在 Orchestrator 中队列里的项目)和队列项目变量(Studio 中用于处理队列项目的变量)之间的区别。我们确切地称之为:“队列项目变量”和“队列项目”。
大体而言,正如其名称所示,队列项目变量用于存储从项目的容器(即队列)中提取的项目。这种提取的目的通常是为了在各种各样的场景中进一步使用队列项目。假设您是一家银行机构的代表,手中有一份 50 位客户的存款报告。您想要借助第三方金融应用程序,处理之前存入金额小于 $5000 的银行内求偿支票的每位客户的数据。就这一点而言,您可以创建一个工作流,通过队列项目变量逐一存储各位客户的信息。队列项目变量读取的每一条目存储在队列项目中,并添加至 Orchestrator 中的指定队列。整个流程的结果是生成一个含有客户信息(各自存储在对应的队列项目中)的队列。
为进一步处理符合条件的数据,您必须再创建一个工作流,从之前创建的队列提取对应银行内求偿支票值小于 $5000 的项目。此主题的末尾提供了有关如何创建此类项目的分步骤规程。
支持的 .NET 方法
| 名称/语法 | 描述 |
|---|---|
|
等于
| |
|
获取散列代码
| |
|
获取类型
| |
|
到字符串
|
支持的属性
| 名称/语法 | 描述 |
|---|---|
|
赋值给
| |
|
截止日期
|
应处理该项目的最晚日期和时间。若为空,则可在任何给定的时间处理该项目。 |
|
推迟日期
|
可以处理该项目的最早日期和时间。若为空,则可以尽快处理该项目。 |
|
ID
| |
|
项目键值
|
该项目的唯一标识符。例如, |
|
优先级
|
该队列项目的优先级,如 Studio 的属性面板上优先级字段中所定义。 |
|
处理异常
|
失败项目的异常处理。 |
|
进度
|
有关状态为“正在进行”的队列项目的自定义进度信息。 |
|
队列定义 ID
|
在其下创建了队列项目/事务的队列的唯一标识符。 |
|
队列名称
|
包含所处理项目的队列的名称。 |
|
参考
|
为方便识别队列项目而提供的用户指定值。 |
|
重试次数
|
项目被重试的次数。 |
|
审核状态
|
从 Orchestrator 检索到的队列项目修订状态。 |
|
行版本
|
用于版本标记的内部字段。此字段会在每次当前事务的属性更改时更新。 |
|
具体内容
|
含有与当前事务相关的自定义数据的一系列键值对,如“添加队列项目”活动中所配置。 |
|
开始事务时间
|
开始事务处理的时间和日期。 |
|
状态
|
从 Orchestrator 检索到的队列项目状态。 |
使用队列项目变量的示例
由于本例的性质关系,我们将此部分一分为二,各自代表处理队列和队列项目时要使用的两个主要工作流之一:
上传项目到队列
为演示如何添加项目到队列中,我们创建一个自动化工作流来处理 .xlsx 文件中包含的条目。假设您是一家银行机构的代表,手中有一份 50 位客户的存款报告。您想要借助第三方金融应用程序,处理之前存入金额小于 $5000 的银行内求偿支票的每位客户的数据。报告中含有客户姓名、银行内求偿支票值,以及另外两个值,假设是“兑现”和“非银行内求偿支票”。我们将创建一个工作流,通过队列项目变量逐一存储各位客户的信息。队列项目变量读取的每一条目而后存储在队列项目中,并添加至 Orchestrator 中的指定队列。整个流程的结果是生成一个含有各位客户的具体信息的队列。在转至实际的工作流前,您可能要先查看一下此处的客户报告。我们将处理“七月报告”工作表。
言归正传:
-
创建一个新序列。
-
Add an Excel Application Scope activity inside the sequence, and define the location of the workbook in the Properties pane of the activity.
-
Inside the Do section, add a Read Range activity to read the desired range of values from the report and store them in a DataTable variable. In our case, type
"A1-D51"or simply leave the default value, “”, which means the entire spreadsheet is read. -
在“工作表名称”字段中,键入工作表的名称,即“
“July Report””。 -
在“数据表”字段中,按 Ctrl + K 来新建一个数据表变量,以存储之前读取的数据范围。将它命名为
DataTable1或类似的名称。“变量”窗格中应该也会显示新创建的变量,如下方所示: -
Next, add a For Each Row activity to the Designer panel and fill in the blank fields with “row” and the name of the DataTable variable,
DataTable1, respectively. This activity performs the action defined in the Body section for each row in the data table. The Do section should look similar to the following screenshot so far: -
在“对于每一个行”活动的“正文”部分中,添加一个“添加队列项目”活动。这会针对电子表格中的每一行,添加一个项目到队列中(如下方步骤 8 和 12 中所定义)。
-
在“属性”窗格的“队列名称”字段中,键入要用于存储项目的队列的名称,假设为
ReportQueue。 -
在“输入”部分中,单击与“项目信息”字段对应的按钮,以打开“项目信息”窗口。创建 4 个参数,各自代表报告中的一个列。按照下方所示定义这些参数:
Name,“方向”和“类型”保留默认值,“值”则设为row(0).ToString。这将从计数器为 0 的列中检索工作簿中每一行的值,本例中为客户的姓名。CashIn,“方向”和“类型”保留默认值,“值”则设为row(1).ToString。这将从计数器为 1 的列中检索工作簿中每一行的值,本例中为“兑现”值。OnUsCheck,“方向”和“类型”保留默认值,“值”则设为row(2).ToString。这将从计数器为 2 的列中检索工作簿中每一行的值,本例中为“银行内求偿支票”值。NotOnUsCheck,“方向”和“类型”保留默认值,“值”则设为row(3).ToString。这将从计数器为 3 的列中检索工作簿中每一行的值,本例中为“非银行内求偿支票”值。
-
“项目信息”窗口应如以下屏幕截图所示:
-
将 Studio 的机器人连接到 Orchestrator。 有关如何执行此操作的详细信息,请单击此处。
-
Navigate to https://platform.uipath.com, log in using your credentials, and then create a queue, ReportQueue, to store the items. Make sure that, whatever name you used above (step 8), you use the same here.
-
返回到 Studio。此刻,您的工作流应当毫无错误且正常运作,因此下一步是要将它提供给 Orchestrator。对此,请单击“设计”>“发布”。
-
若要运行该流程,请单击“设计”>“运行”。
备注:请注意,队列项目在处理之后将变成事务,并且会据此进行进一步处理。
-
Navigate to https://platform.uipath.com again and display the transactions.
处理队列中的事务
为演示如何进一步处理队列中的事务,我们将创建第二个工作流,它会从相应队列中检索银行内求偿支票值小于 $5000 的事务。对于每一个符合条件的事务,收集这些事务的值并将它们引入到第三方虚拟应用程序中。其他的值则标记为业务异常。
-
转到“设计”>“新建”>“流程图”,以在上方启动的项目中创建一个新文件。
-
Add an Open Application activity to open the third-party dummy application. Connect it to the Start node.
-
在“属性”面板上填入必要的详细信息(“显示名称”、“文件名”和“选取器”),再将活动配置为使用对应的凭据进行登录。将
admin用于“用户名”字段,并将password用于“密码”字段。 -
在“文件名”字段中,填入应用程序的路径。
-
在“选取器”字段中,使用选取器编辑器定义适用于 UIDemo 的选取器。
-
将“应停止”活动添加到“设计器”面板,并将其连接到“打开应用程序”活动。
-
将“流决策”活动添加到“设计器”面板,并将其连接到“应停止”活动。 最后两个活动将检查您是否在作业仍在运行时停止了作业。这样,您就可以进一步配置工作流,以便在触发停止后执行各种安全例程。 请参阅下面的此类例程示例:
-
将“获取事务项目”活动添加到之前添加的流决策的“错误”分支(步骤 7)。 此活动从队列中检索事务项目,并根据循环的每次迭代依次将其存储在 QueueItem 变量中。
-
在“属性”窗格的“队列名称”字段中,键入用于存储项目的队列的名称。在本例中,根据“上传项目到队列”部分中的定义,其名称为“ReportQueue”。
-
在“事务项目”字段中,按 Ctrl+K 创建用于存储各个事务项目的队列项目变量。将它命名为“TransItem”或类似名称。
-
向“设计器”面板中添加一个“流程决策”活动,并将其连接到“获取事务项目”活动。
-
在“属性”窗格的“条件”字段中,键入
TransItem isNot Nothing。此活动用于检查各项目的值,以确定是否已达到队列末尾。 -
将流程决策的“False”分支连接到第 7 步创建的“日志消息”活动。这样可确保在达到队列末尾时停止作业。
-
向“设计器”面板中添加另一个“流程决策”活动,并将其连接到第 11 步创建的流程决策的“True”分支。
-
在“属性”窗格的“条件”字段中,键入
cint(TransItem.SpecificContent("OnUSCheck").ToString) < 5000,其中:-
cint将字符串型变量转换为整型变量。 -
TransItem是用于存储项目的队列项目变量(第 18 步)。 -
SpecificContent("OnUSCheck")检索各个项目中银行内求偿支票参数的内容。 -
.ToString将队列项目变量的内容转换为字符串型变量。 -
< 5000是要对照其检查的条件。上述表达式会将各个队列项目变量中的银行内求偿支票值转换为字符串变量,然后进一步转换为整数。因此,获取的值将被检查是否与条件相符。
-
-
在“属性”窗格中,确保“状态”字段设为“失败”,且“错误类型”设为“业务”。这样,当银行内求偿支票的值大于等于 5000 时,事务将被标记为失败且抛出业务异常。
-
在“事务项目”字段中,添加
TransItem变量。 -
在“原因”字段中,键入“银行内求偿支票金额大于 5000”或类似的内容,以用于显示失败事务的原因。
-
将“设置事务状态”活动连接到“应停止”活动(第 6 步),以创建一个循环并处理队列中的下一事务。
-
将“序列”活动添加到“设计器”面板,并将其连接到上一个流决策的 True 分支(步骤 13)。在序列中,添加“尝试捕获”活动并对其进行配置,以便在处理项目时将任何潜在错误正确标记为应用程序错误。
-
打开 UIDemo 应用程序,并使用用户名
admin和密码password登录。 -
针对 UIDemo 应用程序各个“兑现”、“银行内求偿支票”和“非银行内求偿支票”字段执行以下序列活动:
- Into the previous Try Catch activity, add a Type Into activity.
- 单击“在屏幕上指示”,再从 UIDemo 界面中选择与“兑现”对应的空字段。
- 在“属性”窗格的“文本”字段中,键入
transItem.SpecificContent("CashIn").ToString。表达式中的各个术语已在上文作出说明(第 15 步)。此表达式将各个队列项目变量的值转换为字符串变量。 - Make sure that the Simulate Type option is selected.
-
在“设计”选项卡的“向导”部分中,单击“屏幕抓取”,再指向 UIDemo 应用程序中的事务编号。
-
从“屏幕抓取器向导”中,选择抓取方法并单击“完成”。这会在您的工作流中插入一个“屏幕抓取”活动。确保将它放置在之前的“键入信息”活动后面,然后将“文本”字段设为新的变量,例如
TransactionValue。这会检索符合初始条件的各个队列项目的事务编号。 -
在“屏幕抓取”活动后面添加“设置事务状态”活动。
-
在“属性”窗格中,确保“状态”字段设为“成功”,且“错误类型”设为“应用程序”。这样,当值的集合成功引入到应用程序中时,事务的状态将设为“成功”,否则标记为应用程序异常。
-
在“输出”窗口中定义一个新参数,并将之前创建的变量
TransactionValue(第 25 步)添加为值。 -
在“事务项目”字段中,添加
TransItem变量。 -
在“序列”活动中添加一个“单击”活动,放在“键入信息”活动的后面。
-
单击“在屏幕上指示”,再从 UIDemo 界面中选择“接受”按钮。确保选中了“模拟键入”选项。
-
“Try Catch 异常处理”活动应如以下屏幕截图所示:
-
返回到流程图,再将之前的“序列”活动(第 21 步)连接到“应停止”活动(第 6 步),以创建一个循环并处理队列中的下一事务。
-
流程图应如以下屏幕截图所示:
-
若要运行该流程,请单击“设计”>“运行”。
-
After the execution has ended, you may navigate to https://platform.uipath.com and display the processed transactions with the corresponding processing details:
-
成功的事务
-
失败的事务