- 概述
- 标注
- 复杂场景
- 凭据
- Data Service
- 关于“Data Service”活动包
- 项目兼容性
- Create Entity Record (New)
- Update Entity Record (New)
- Delete Entity Record (New)
- Get Entity Record by Id (New)
- Query Entity Records (New)
- Upload File to Record Field (New)
- Download File from Record Field (New)
- Delete File from Record Field (New)
- Create Multiple Entity Records (New)
- Update Multiple Entity Records (New)
- Delete Multiple Entity Records (New)
- 表单
- FTP
- IPC
- 暂留
- Automation Ops 管道
- 系统
- 发行说明
- 关于“系统”活动包
- 项目兼容性
- 受支持的字符编码
- “正则表达式构建器”向导
- 添加数据列
- 添加数据行
- 添加日志字段
- 加减日期
- 添加事务项目
- 添加队列项目
- 将项目附加至集合
- 将项目附加至列表
- 附加行
- 提示音
- 中断/退出循环
- 浏览文件
- 浏览文件夹
- 构建集合
- 构建数据表
- 批量添加队列项目
- 更改文本大小写
- 更改类型
- 检查 False
- 检查 True
- 清除数据表
- 从集合到数据表
- 注释
- 压缩文件/Zip 文件
- 复制文件
- 复制文件夹
- 合并文本
- 注释掉/禁用的活动
- 继续/跳过当前
- 创建文件
- 创建文件夹
- 创建列表
- 自定义输入
- 删除
- 删除文件
- 删除文件夹
- 删除存储文件
- 删除队列项目
- 禁用本地触发器
- Do While 循环
- 从 URL 下载文件
- 下载存储文件
- 启用本地触发器
- 评估业务规则
- 存在于集合中
- 提取/解压缩文件
- 从文本中提取日期和时间
- 提取文本
- 文件更改触发器
- 文件已存在
- 筛选集合
- 筛选数据表
- 文件夹存在
- 遍历循环
- 适用于文件夹中的每个文件
- 文件更改触发器 v3
- 查找和替换
- 查找匹配模式
- 对于文件夹中的每个文件夹
- 对于数据表中的每一行
- 将日期格式设置为文本
- 为值添加格式
- 从文本中生成数据表
- 获取资产
- 获取凭据/获取 Orchestrator 凭据
- 获取当前作业信息
- 获取环境文件夹
- 获取环境变量
- 获取文件信息
- 获取文件夹信息
- 获取作业
- 获取进程
- 获取行项目
- 获取事务项目
- 获取用户名/密码
- 获取队列项目
- 全局变量更改触发器
- 输入对话框
- 调用代码
- 调用 COM 方法
- 调用 PowerShell
- 调用流程
- 调用 VBScript
- 调用工作流文件
- 是否为文本匹配
- 联接数据表
- 终止进程
- 启动工作流交互
- 列出存储文件
- 日志消息
- 查找数据表
- 手动触发器
- 合并集合
- 合并数据表
- 消息框
- 修改日期
- 修改文本
- 移动文件
- 移动文件夹
- 多重分配
- 向队列新增项目
- 通知全局变量已更改
- Orchestrator HTTP 请求
- 输出数据表
- 存在路径
- 推迟事务项目
- 流程终止触发器
- 流程启动触发器
- 发出警示
- 读取列表项目
- 读取文本文件
- 读取存储文本
- 删除数据列
- 删除数据行
- 删除重复行
- 从集合中删除
- 删除日志字段
- 替换匹配模式
- 重复次数
- 重复触发器
- 重命名文件
- 重命名文件夹
- 报告状态
- 重置计时器
- 恢复计时器
- 重试作用域
- 返回
- 运行本地触发器
- 运行并行流程
- 设置资产
- 设置凭据
- 设置环境变量
- 设置事务进度
- 设置事务状态
- 应停止
- 拆分文本
- 数据表排序
- 启动计时器
- 开始作业
- 停止作业
- 停止本地触发器
- 停止计时器
- 左侧/右侧的文本
- 要大写/小写的文本
- 时间触发器
- 触发器作用域
- 超时作用域
- 更新行项目
- 更新列表项目
- 上传存储文件
- 等待下载
- 等待队列项目
- 先条件循环
- 工作流占位符
- 写入存储文本
- 写入文本文件
- 添加数据行
- AddQueueItem
- 添加事务项目
- 附加行
- BulkAddQueueItems
- 清除数据表
- 压缩 Zip 文件
- 复制文件
- 创建文件
- 创建文件夹
- 删除文件或文件夹
- 删除队列项目
- 删除存储文件
- 下载存储文件
- 提取解压缩文件
- 筛选数据表
- 获取资产
- 获取凭据
- GetJobs
- 获取队列项目
- GetQueueItems
- 获取本地路径的资源
- 获取行项目
- 获取事务项目
- 调用流程
- 联接数据表
- 列出存储文件
- 查找数据表
- 合并数据表
- 移动文件
- Orchestrator HTTP 请求
- OutputDataTable
- 存在路径
- 推迟事务项目
- 读取存储文本
- 读取文本文件
- 删除数据列
- 删除重复行
- 替换
- 设置资产
- 设置凭据
- SetTransactionProgress
- 设置事务状态
- 数据表排序
- 开始作业
- 停止作业
- 更新行项目
- 上传存储文件
- 等待队列项目
- 写入存储文本
- 写入文本文件
- 测试
- 发行说明
- 关于“测试”活动包
- 项目兼容性
- 项目设置
- Address
- AddTestDataQueueItem
- AttachDocument
- BulkAddTestDataQueueItems
- DeleteTestDataQueueItems
- GetTestDataQueueItem
- GetTestDataQueueItems
- GivenName
- LastName
- RandomDate
- RandomNumber
- RandomString
- RandomValue
- VerifyAreEqual
- VerifyAreNotEqual
- VerifyContains
- VerifyExpression
- VerifyExpressionWithOperator
- VerifyIsGreater
- VerifyIsGreaterOrEqual
- VerifyIsLess
- VerifyIsLessOrEqual
- VerifyIsRegexMatch
- VerifyRange
- 工作流事件
- Workflow Foundation
工作流活动
示例工作流
UiPath Studio 中的“ 代码片段 ”面板存储用户添加的 XAML 文件。 示例 XAML 文件存储在文件夹中。 用于存储长时间运行的工作流中使用的 XAML 文件的文件夹称为 Orchestration。
示例 XAML 文件为只读文件。 您需要在 Studio 中创建一个单独的 流程 ,在其中复制代码片段中的活动和配置。
这些代码片段表示使用“暂留”活动包中的可用活动创建的示例工作流。
先决条件
- 要基于“ 代码片段 ”面板中的工作流开发长时间运行的工作流,您需要安装 UiPath.Persistence.Activities 包。
- 我们建议使用“ 业务流程流程 ”模板开始构建长时间运行的工作流。
此代码段创建一个 队列项目 并暂停工作流,直到完成该 队列项目 的处理。
-
将“ 添加队列项目并获取参考” 活动拖动到工作流中。
此活动使用输入/输出参数将队列项目添加到 Orchestrator 中的队列容器中。 然后,它将有关新创建的队列项目对象的相应数据检索到QueueItemData
类型变量中,以便暂停工作流,直到将队列项目添加到队列中为止。 有关该活动的更多信息,请参见 添加队列项目并获取参考页面 。将队列项目添加到 Orchestrator 队列后,所有QueueItemData
类型变量都将使用从 Orchestrator 检索到的数据进行填充。-
在“ 项目信息 ” 集合中,创建一个具有“ 输入/输出 方向” 的参数,并将值设置为要作为队列项目传递的变量。 在此示例中,传递一个名为
Test
的 字符串 变量。 - 在“ 队列项目对象(输出) ” 属性字段中,按键盘上的
CTRL + k
并创建一个QueueItemData
类型变量,以存储在 Orchestrator 中创建队列项目后有关队列项目的数据。 在此示例中,创建一个名为QueueItemObject
的QueueItemData
变量。
-
- 拖动要在暂停工作流之前运行的任何活动,以检索有关队列项目的数据。 在此代码段中,“ 暂停工作流之前要执行的所有步骤” 部分已注释掉,充当容器,您可以在其中放置不会在运行时执行的活动。
-
将“ 等待队列项目并继续” 活动拖动到工作流中。
此活动等待在 Orchestrator 中添加和处理队列项目,以便在QueueItemData
类型变量中检索有关它的数据并将其映射回工作流中。 有关该活动的更多信息,请参见 等待队列项目然后继续 页面。-
在“ 队列项目对象(输入) ”属性字段中,传递
QueueItemObject
变量,以引用要添加到 Orchestrator 的确切队列项目。 -
在“ 队列项目对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个QueueItemData
类型变量,以存储队列项目在处理和检索后的相关数据。
-
- 在工作流中添加“ 写入行 ”活动,以打印出您在 Orchestrator 中添加的队列项目。 在此示例中,在“ 文本 ”属性字段中,传递
Test
变量。
此代码段创建一个 外部操作 并暂停工作流,直到用户完成操作。
-
将“ 创建外部任务” 活动拖动到您的工作流中。
此活动将在 Actions Center 中创建一个具有给定 任务标题、 任务优先级、 任务目录 (现称为 Actions 目录)和 任务数据的外部Actions 。 有关该活动的更多信息,请参见 “ 创建外部任务 ”页面。
-
使用传递信息的参数填充“ 任务数据集合” 属性窗口 In、 Out或 In/Out。 在此示例中,创建三个参数,每个参数都具有不同的 方向:
In
、Out
和In/Out
。 将“ 类型 ”设置为String
。 对于“ 值 ” 字段,按键盘上的CTRL + K
并创建三个变量,用于提供信息(对于In
类型参数)或提取信息(对于Out
类型参数)。在此示例中,创建三个 字符串 类型变量:
- InVariable -
In
类型参数的 值 。 - “输出变量 ” -
Out
类型参数的 值 。 -
InOutVariable -
In/Out
类型参数的 值 。
CTRL + k
,然后创建一个ExternalTaskData
类型变量。 在此示例中,将变量命名为TaskPersistData
。 此ExternalTaskData
对象用于从 Orchestrator 传递数据,以便让机器人知道,在完成特定的操作任务之前,工作流将暂停。
- InVariable -
- 添加要在暂停工作流之前运行的任何活动,以检索有关
ExternalTaskData
对象的数据。- 在本示例中,将“ 序列 ”活动拖放到工作流中,并使用三个“ 写入行 ”活动进行填充。 每个“ 写入行 ”活动都用于输出在“外部任务”中传递的三个变量的数据。 在“ 文本 ”属性字段中传递以下值:
InVariable
、OutVariable
、InOutVariable
。
- 在本示例中,将“ 序列 ”活动拖放到工作流中,并使用三个“ 写入行 ”活动进行填充。 每个“ 写入行 ”活动都用于输出在“外部任务”中传递的三个变量的数据。 在“ 文本 ”属性字段中传递以下值:
-
将“ 等待外部任务并继续” 活动拖动到工作流中。
此活动会暂停工作流,直到 外部任务 完成,然后再将其映射回工作流中的ExternalTaskData
类型变量中。 请参阅 等待外部任务然后继续 页面,了解有关此活动的更多信息。-
在“ 任务对象(输入) ”属性字段中,传递
ExternalTaskData
变量,以引用您创建的确切外部任务。 在此示例中,传递TaskPersistData
变量。 -
在“ 任务操作” 属性字段中,按键盘上的
CTRL + k
,创建一个 字符串 类型变量,并将其命名为TaskAction
。 这将存储用户为完成任务而采取的操作。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,创建一个“外部 任务数据”类型变量,并将其命名为TaskData
。 此变量存储在完成外部操作后从 Orchestrator 检索到的更新的任务对象。
-
-
添加要在工作流恢复后运行的任何活动。 在此示例中,使用四个“ 写入行 ”活动,在“输出”面板中打印完成“外部操作”后检索到的所有值。 在 文本 字段中传递以下变量:
TaskAction
、InVariable
、OutVariable
、InOutVariable
。
此代码片段创建一个表单 Actions 并暂停工作流,直到用户完成 Actions为止。
-
将“ 创建表单任务” 活动拖动到工作流中。
此活动将在Actions Center 中创建一个 表单 Actions ,其中包含给定的 任务标题、 任务优先级、 任务目录 (现称为 Actions 目录)和 任务数据。 有关该活动的更多信息,请参见 “ 创建表单任务 ”页面。
-
使用传递信息的参数填充“ 任务数据集合 ”属性窗口“ 输入”、 “输出”或 “输入/输出”。 在此示例中,创建三个参数,每个参数都具有不同的 方向:
In
、Out
和In/Out
。 将“ 类型 ”设置为String
。 对于“ 值 ” 字段,按键盘上的CTRL + K
,然后创建三个变量,以提供信息(对于In
类型参数)或提取信息(对于Out
类型参数)。在此示例中,创建三个 字符串 类型变量:
- InVariable -
In
类型参数的 值 。 - “输出变量 ” -
Out
类型参数的 值 。 -
InOutVariable -
In/Out
类型参数的 值 。
在“ 任务对象(输出) ”属性字段中,按键盘上的CTRL + k
,然后创建一个FormTaskData
类型变量。 在此示例中,将变量命名为TaskPersistData
。 此FormTaskData
对象用于从 Orchestrator 传递数据,以便让机器人知道,在完成特定的操作任务之前,工作流将暂停。
- InVariable -
- 添加要在暂停工作流之前运行的任何活动,以检索有关
FormTaskData
对象的数据。 在此示例中,将“ 序列 ”活动拖放到工作流中,并使用三个“ 写入行 ”活动填充工作流。 每个“ 写入行 ”活动都用于输出在“外部操作”中传递的三个变量的数据。 在“ 文本 ”属性字段中传递以下值:InVariable
、OutVariable
、InOutVariable
。 -
将“ 等待外部任务并继续” 活动拖动到工作流中。
此活动将暂停工作流,直到完成 表单操作 ,然后将其映射回工作流中的FormTaskData
类型变量。-
在“ 任务对象(输入) ”属性字段中,传递
FormTaskData
变量,以引用您在 Action Center 中创建的确切表单任务。 在此示例中,传递TaskPersistData
变量。 -
在“ 任务操作” 属性字段中,按键盘上的
CTRL + k
,创建一个 字符串 类型变量,并将其命名为TaskAction
。 这将存储用户为完成任务而采取的操作。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,创建一个 “表单任务数据” 类型变量,并将其命名为TaskData
。 此变量存储任务完成后从 Orchestrator 检索到的更新后的任务对象。
-
- 拖动工作流恢复后要运行的任何活动。 在此示例中,使用四个“ 写入行 ”活动将完成“外部操作”后检索到的所有值传递到“输出”面板中。 在 文本 字段中传递以下变量:
TaskAction
、InVariable
、OutVariable
、InOutVariable
。
此代码段创建两个 外部操作,将其分配给用户,并显示失败的操作分配列表。
-
将两个“ 创建外部任务” 活动拖到您的工作流中。
-
对于第一个活动,为操作指定标题并设置其优先级。 在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个ExternalTaskData
类型变量。 在本示例中,将其命名为Task1PersistData
。 -
对于第二个活动,为操作指定标题并设置其优先级。 在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个ExternalTaskData
类型变量。 在本示例中,将其命名为Task2PersistData
。
-
-
将两个 “添加到集合” 活动拖到您的工作流中。
备注:“ 添加到集合 ”活动是传统活动。
要使“ 添加到集合 ”活动在您的项目中可用,请执行以下操作:
- 已安装 System.Activities 包 22.4.1 或更低版本。
- 转到“ 活动 ”面板。
- 单击“ 查看选项” 图标。
- 单击 “显示经典”。
该活动位于“ 默认活动” >“编程” >“集合”下。
- 在“ 集合 ”属性字段中,按键盘上的
CTRL + k
,创建一个List<TaskUserAssignment>
类型变量,并将其命名为TaskAssignementsInput
。 转到“ 变量 ” 面板,并将“ 默认” 字段中的变量初始化为new List(Of TaskUserAssignment
。 - 在“ 项目 ” 属性字段中,创建
TaskUserAssignment
的实例,该实例具有以下参数:“ 外部 任务数据” 变量和要向其分配任务的用户的电子邮件地址。在此示例中,输入以下内容:
- 第一个“ 添加到集合” 活动的
new TaskUserAssignment(Task1PersistData.Id, "emailaddress")
表达式 -
第二个“ 添加到集合” 活动的
new TaskUserAssignment(Task2PersistData.Id, "emailaddress")
表达式。
- 第一个“ 添加到集合” 活动的
-
将“ 类型参数” 属性设置为
System.Collections.Generic.List<UiPath.Persistence.Activities.Tasks.TaskUserAssignment>
。
-
将“ 分配任务 ”活动拖动到您的工作流中。
-
在“ 任务用户分配(输入) ”属性字段中,传递
List<TaskUserAssignment>
变量。 在此示例中,传递TaskAssignmentsInput
变量。 -
在“ 任务分配类型 ” 属性字段中,键入要执行的确切分配操作:“ 分配 ”或“ 重新分配”。 在本例中,输入
Assign
。 -
在“失败的 任务分配(输出) ”属性字段中,按键盘上的
CTRL + k
,创建一个List<TaskAssignmentResponse>
类型变量,并将其命名为FailedTaskAssignmentsOutput
。
-
- 拖动“ 写入行 ”活动,以输出失败的任务分配数。 在“ 文本 ”属性字段中,传递
List<TaskAssignmentResponse>
类型变量,然后使用.Count
和.ToString
属性。 在此示例中,传递以下表达式:FailedTaskAssignemntsOutput.Count.ToString
。
启动无人值守流程并暂停工作流,直到完成特定作业。
-
将“ 开始作业并获取参考” 活动拖动到工作流中。
此活动根据输入的参数在 Orchestrator 中启动作业,然后检索相应的作业对象。 有关该活动的更多信息,请参见 “ 启动作业并获取参考 ”页面。
- 在“ 流程 名称” 属性字段中,传递要用于作业的流程的 显示 名称。 在此示例中,将名称存储在变量中。 按键盘上的
CTRL +k
,创建一个String
类型变量并将其命名为ProcessName
。 在“ 值 ” 字段中,传递流程的 显示 名称,例如TestProcess_test
。注意: 显示 名称需要采用以下格式写入:packageName _environment
。
- 在“ 作业参数(集合) ”属性中,创建在 Orchestrator 中调用作业时要使用的参数。 此属性根据从 Orchestrator 中的作业接收到的输入修改
Out
和In/Out
类型的参数,然后将它们映射回工作流。 在此示例中,创建 方向In/Out
的String
类型参数,命名为Test
。 在“ 值 ” 字段中,按键盘上的CTRL + k
,然后创建String
类型变量。 将变量命名为Test
。
- 在“ 作业对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个JobData
类型变量,并将其命名为JobPersistenceData
。 此变量存储调用 Orchestrator 中的作业时创建的作业数据对象,以便将其用于“ 等待作业并继续” 活动。
- 在“ 流程 名称” 属性字段中,传递要用于作业的流程的 显示 名称。 在此示例中,将名称存储在变量中。 按键盘上的
- 添加要在暂停工作流之前运行的任何活动,以检索有关
JobData
对象的数据。 -
将“ 等待作业并继续” 活动拖动到您的工作流中。
此活动将暂停工作流,直到 Orchestrator 中的特定作业完成。 作业完成后,工作流将恢复。
-
在“ 作业对象(输入) ”属性字段中,传递为“ 启动作业并获取引用” 活动创建的
JobData
类型变量。 在此示例中,传递JobPersistenceData
变量。 这会将机器人指向需要完成的确切作业,直到工作流恢复。 -
在“ 作业对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个JobData
类型变量。 在本示例中,将其命名为JobDataObject
。
-
- 拖动“ 写入行 ”活动,以便打印出已映射回工作流的参数。 在“ 文本 ”属性字段中,传递用作“ 作业参数(集合)”中创建的参数的值的变量。 在此示例中,传递
Test
变量。
此代码段会暂停给定的工作流,并在一小时后恢复。
- 添加要在暂停工作流之前运行的任何活动。
-
将“ 延迟后恢复 ”活动拖动到工作流中。 此活动会暂停给定的工作流,并在指定的日期和时间继续进行。
请参阅 “ 延迟后继续 ”页面,了解有关此活动的更多信息。
-
2.1. 在“ 变量 ”面板中,创建
System.TimeSpan
类型变量。 在本示例中,将变量命名为OneHour
。 将TimeSpan
变量的 默认 值设置为New TimeSpan(1,0,0)
。 -
2.2. 在活动的“ 恢复时间” 属性字段中,传递
DateTime.Now
表达式和TimeSpan
变量。 在此示例中,传递以下表达式:DateTime.Now + OneHour
。
-
- 添加要在工作流恢复后运行的任何活动。
此代码段会暂停给定的工作流,并在五分钟后恢复。
- 拖动要在暂停工作流之前运行的任何活动。
-
将“ 延迟后恢复 ”活动拖动到工作流中。 此活动会暂停给定的工作流,并在指定的日期和时间继续进行。
-
在“ 变量 ”面板中,创建
System.TimeSpan
类型变量。 在本示例中,将变量命名为FiveMinute
。 将TimeSpan
变量的 默认 值设置为New TimeSpan(0,5,0)
。 -
在活动的“ 恢复时间” 属性字段中,传递
DateTime.Now
表达式和TimeSpan
变量。 在此示例中,传递以下表达式:DateTime.Now + FiveMinute
。
-
- 拖动要在工作流恢复后运行的任何活动。
此代码段会暂停给定的工作流,并在 90 秒后恢复。
- 添加要在暂停工作流之前运行的任何活动。
-
将“ 延迟后恢复 ”活动拖动到工作流中。 此活动会暂停给定的工作流,并在指定的日期和时间继续进行。
-
在“ 变量 ”面板中,创建
System.TimeSpan
类型变量。 在本示例中,将变量命名为NinetySeconds
。 将TimeSpan
变量的 默认 值设置为New TimeSpan(0,0,90)
。 -
在活动的“ 恢复时间” 属性字段中,传递
DateTime.Now
表达式和TimeSpan
变量。 在此示例中,传递以下表达式:DateTime.Now + NinetySeconds
。
-
- 拖动要在工作流恢复后运行的任何活动。
此代码段根据数据表中的发票数量在循环中创建多个 表单操作 ,并暂停工作流,直到完成所有操作。
-
将“ 构建数据表” 活动拖动到工作流中。
-
在“ 输出 ”属性字段中,按键盘上的
CTRL + k
,然后创建一个DataTable
类型变量,以存储您正在构建的数据表。 在此示例中,将DataTable
变量命名为HighValueInvoices
。 -
单击 . “ 构建数据表 ” 窗口将打开。
-
将
Column1
重命名为InvoiceNumber
,将Column2
重命名为InvoiceAmount
。 -
在表格的行中添加数据,然后按“确定”。
-
-
将“ 分配 ”活动拖动到工作流中。 此活动为存储在
String
变量中的数据表分配名称。-
在“ 目标” 属性字段中,传递
DataTable
变量。 在此示例中,传递HighValueInvoices
变量。 -
在“ 值 ” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
类型变量。 在本示例中,将其命名为DataTableName
。 将DataTableName
变量的 默认 值设置为“invoices”。
-
- 将 “遍历循环” 活动拖动到工作流中。 在“ 项目列表” 属性字段中,传递具有以下格式的表达式:
DataTableVariable.Rows
。 在此示例中,传递HighValueInvoices.Rows
。 这将遍历数据表中的每一行。 -
在“遍历循环”活动的 主体 内 拖动 “创建表单任务”活动。
-
在“ 任务标题” 属性字段中,输入“ 遍历 循环”活动检索的“发票编号”值,并将其转换为“字符串”。 在此示例中,输入以下表达式:
item("InvoiceNumber").ToString
,其中InvoiceNumber
是包含每张发票相应编号的列的名称。 -
在“ 表单数据 (集合)” 中,创建一个参数,用于在表单操作中传递每个发票金额。 创建
String
类型 参数,并将 方向 设置为In
。 在“ 值 ” 字段中,输入每个发票金额并将其转换为字符串。 在本示例中,输入以下表达式:item("InvoiceAmount").ToString
,其中InvoiceAmount
是包含每张发票相应金额的列的名称。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
类型变量。 在本示例中,将变量命名为TaskPersistData
。
-
-
将“ 添加到集合 ”活动拖动到“ 遍历 循环”活动的正文中。
-
在“ 集合 ”属性字段中,按键盘上的
CTRL + k
,创建一个List<FormTaskData>
变量并将其命名为TaskList
。 转到“ 变量 ” 面板,并将“ 默认” 字段中的变量初始化为New List(Of UiPath.Persistence.Activities.FormTask.FormTaskData
。 -
在“ 项目 ” 属性字段中,传递
FormTaskData
变量,该变量是为了存储所创建的表单操作上的数据而创建的。 在此示例中,传递TaskPersistData
变量。 -
对于“ 类型参数” 属性,选择
UiPath.Persistence.Activities.FormTask.FormTaskData
。
-
-
将 Parallel For Each 活动拖动到您的工作流中。
-
对于“ 类型参数” 属性,选择
UiPath.Persistence.Activities.FormTask.FormTaskData
。 -
在“ 值 ” 属性字段中,传递
List<FormTaskData>
变量。 在此示例中,传递TaskList
变量。
-
-
将“ 等待表单任务并继续 ”活动拖动到“ 并行 循环”活动的主体中。
-
在“ TaskObject(Input) ” 属性字段中,输入“ Parallel For Each ”活动中引用的
item
对象。 在本例中,item
对象表示存储在TaskList
变量中的表单操作。 -
在“ 任务操作” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 在本示例中,将其命名为TaskAction
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在本示例中,将其命名为TaskData
。
-
- 将“ 写入行 ”活动拖动到工作流中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入
TaskAction
变量。
此代码片段按顺序创建多个表单 Actions ,并暂停工作流,直到完成任何表单 Actions 为止。
-
将“ 创建表单任务” 活动拖动到序列工作流中。
-
在“ 任务标题” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 将其命名为TaskTitle1
。 在“ 变量 ”面板中,将“ 默认” 值设置为"Task - " + "Approver 1"
。 -
在“ 表单数据(集合) ”属性中,创建 类型 为
String
和 方向 为In
的参数。 将参数命名为Approver
,并将 值 设置为"Approver1"
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在此示例中,将变量命名为TaskPersistData1
。
-
-
将第二个 “创建表单任务” 活动拖到您的工作流中。
-
在“ 任务标题” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 将其命名为TaskTitle2
。 在“ 变量 ”面板中,将“ 默认” 值设置为"Task - " + "Approver 2"
。 -
在“ 表单数据(集合) ”属性中,创建 类型 为
String
和 方向 为In
的参数。 将参数命名为Approver
,并将 值 设置为"Approver2"
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在此示例中,将变量命名为TaskPersistData2
。
-
-
将第三个 “创建表单任务” 活动拖到您的工作流中。
-
在“ 任务标题” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 将其命名为TaskTitle3
。 在“ 变量 ”面板中,将“ 默认” 值设置为"Task - " + "Approver 3"
。 -
在“ 表单数据(集合) ”属性中,创建 类型 为
String
和 方向 为In
的参数。 将参数命名为Approver
,并将 值 设置为"Approver3"
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在此示例中,将变量命名为TaskPersistData3
。
-
- 将“ 选取 ”活动拖动到您的工作流中。
- 将“选取分支”活动拖动到“ 选取 分支”活动的主体中。 将活动重命名为
Pick Branch (Task1)
。 -
将“ 等待表单任务并继续” 活动拖动到
Pick Branch (Task1)
活动的“ 触发器 ”正文中。-
在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的
FormTaskData
变量。 在此示例中,传递TaskPersistData1
变量。 -
在“ 任务操作” 属性字段中,按
CTRL + k
并创建一个String
变量。 将其命名为TaskAction1
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL+ k
,然后创建一个FormTaskData
变量。 将其命名为TaskData1
。
-
-
将“ 写入行 ”活动拖动到
Pick Branch (Task1)
活动的 “操作” 正文中。 此活动旨在在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入TaskAction1
变量。 - 将“选取分支”活动拖动到“ 选取 分支”活动的主体中。 将活动重命名为
Pick Branch (Task2)
。 -
将“ 等待表单任务并继续” 活动拖动到
Pick Branch (Task2)
活动的“ 触发器 ”正文中。-
在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的
FormTaskData
变量。 在此示例中,传递TaskPersistData2
变量。 -
在“ 任务操作” 属性字段中,按
CTRL + k
并创建一个String
变量。 将其命名为TaskAction2
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL+ k
,然后创建一个FormTaskData
变量。 将其命名为TaskData2
。
-
- 将“ 写入行 ”活动拖动到
Pick Branch (Task2)
活动的 “操作” 正文中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入TaskAction2
变量。 - 将“选取分支”活动拖动到“ 选取 分支”活动的主体中。 将活动重命名为
Pick Branch (Task3)
。 -
将“ 等待表单任务并继续” 活动拖动到
Pick Branch (Task3)
活动的“ 触发器 ”正文中。-
在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的
FormTaskData
变量。 在此示例中,传递TaskPersistData3
变量。 -
在“ 任务操作” 属性字段中,按
CTRL + k
并创建一个String
变量。 将其命名为TaskAction3
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL+ k
,然后创建一个FormTaskData
变量。 将其命名为TaskData3
。
-
- 将“ 写入行 ”活动拖动到
Pick Branch (Task3)
活动的 “操作” 正文中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入TaskAction3
变量。
此代码片段根据数据表中的输入创建多个表单 Actions,并暂停工作流,直到完成一组特定的表单 Actions 。
-
将“ 构建数据表” 活动拖动到工作流中。
-
在“ 数据表 ”属性字段中,按键盘上的
CTRL + k
,然后创建一个System.DataTable
变量。 在本示例中,将其命名为CodeReviews
。 -
单击 . “ 构建数据表 ” 窗口将打开。
-
将
Column1
重命名为ReviewerName
,将Column2
重命名为ReviewerType
。 将ReviewerType
列的“ 类型 ” 设置为String
。 -
在表格的行内添加数据。 对于
ReviewerType
列,此示例使用两种类型的审核人: 代码所有者 和 审核人。
-
- 将“ 分配 ”活动拖动到工作流中。 这将为您创建的数据表分配一个名称。 在“目标 ” 属性字段中,传递
System.DataTable
变量并向其添加.TableName
属性。 在“ 值 ” 字段中,按键盘上的CTRL + k
并创建String
变量。 在本例中,将其命名为DataTableName
。 -
将 Parallel For Each 活动拖动到您的工作流中。 在本示例中,将其命名为
Create Tasks for PR Review
。-
在“ 值 ” 属性字段中,传递
System.DataTable
变量并添加属性.AsEnumerable
。 在此示例中,传递以下表达式:CodeReviews.AsEnumerable
。
-
-
在 Parallel For Each 活动的主体中拖动一个“分配”活动。
-
在“ 目标” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量,该变量用于保存从CodeReviews
数据表的ReviewerType
列检索到的数据。 在此示例中,将变量命名为ReviewerType
。 -
在“ 值 ” 属性字段中,传递一个表达式,该表达式从
ReviewerType
列中检索每个行项目,并将其存储在“目标 ” 字段中创建的变量中。 在此示例中,传递以下表达式:ìtem("ReviewerType").toString
。
-
-
将“ 创建表单任务 ”活动拖动到“ 并行遍历 循环”活动的主体中。
-
在“ 任务标题” 属性字段中,传递以下表达式:
"Code Review - " + InPullRequestName
。InPullRequestName
是String
变量,具有 默认 值"#1"
。 -
在“ 表单数据(集合) ”属性中,创建四个 类型 为
String
的参数: - “PR 编号” - 方向 为
In
, 值 设置为InPullRequestName
。 Reviewer Name
- 方向 为In
, 值 设置为item("ReviewerName").toString
。Reviewer Type
- 方向 为In/Out
,值设置为ReviewerType
变量。-
Reviewer Comment
- 方向 为Out
。 在“ 值 ” 字段中,按键盘上的CTRL + k
,然后创建一个String
变量。 将其命名为ReviewerComments
。 此参数会将“操作”中的任何注释映射到工作流中。5.3. 在“ 任务对象(输出) ”属性字段中,按键盘上的CTRL + k
,然后创建一个FormTaskData
变量。 将其命名为TaskPersistData
。
-
-
将“ 添加到集合 ”活动拖动到“ 并行遍历循环” 活动的正文中。 此活动将创建的所有表单操作存储到列表中。
-
在“ 集合 ”属性字段中,按键盘上的
CTRL + k
,然后创建一个List<FormTaskData>
变量。 将其命名为TaskDataList
。 转到“ 变量 ” 面板,并将变量的 默认 值设置为New List(of UiPath.Persistence.Activities.FormTask.FormTaskData)
。 -
在“ 项目 ”属性字段中,传递
FormTaskData
变量。 在此示例中,传递TaskPersistData
变量。 -
对于“ 类型参数” 属性,选择
UiPath.Persistence.Activities.FormTask.FormTaskData
。
-
- 在“ 变量 ” 面板中,创建两个
Int32
类型的变量,并将其 默认 值设置为0
:OwnersApprovals
和ReviewersApprovals
。 -
拖动另一个 “遍历循环” 活动。 在本示例中,将其命名为
Wait for Conditional Task(s) Completion
。-
在“ 条件” 属性字段中,传递以下表达式:
OwnersApprovals>=2 Or (OwnersApprovals = 1 And ReviewersApprovals>=2)
。 这会将工作流设置为仅在满足条件时恢复。 -
对于“ 类型参数” 属性,选择
UiPath.Persistence.Activities.FormTask.FormTaskData
。 -
在“ 值 ” 属性字段中,传递存储表单操作的列表。 在此示例中,传递
TaskDataList
变量。
-
- 将“ 序列 ”活动拖动到“ 等待条件任务完成 ”活动的主体中。 将其重命名为
Wait for Task and Resume
。 -
将“ 等待表单任务并继续” 活动拖动到“ 等待任务并继续 ”序列活动中。
-
在“ TaskObject(Input) ”属性字段中,传递
item
变量。 -
在“ 任务操作” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 在本示例中,将其命名为TaskAction
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在本示例中,将其命名为TaskData
。
-
-
将“ If 条件”活动拖动到“ 等待任务并继续 ”序列活动中。 此活动旨在计算代码所有者已批准的表单操作的数量。
-
在“ 条件” 属性字段中,传递以下表达式:
TaskAction="approve" And ReviewerType="code owner"
。 -
将“ 分配 ”活动拖放到“ Then ” 块中。 在“ 目标” 属性字段中,传递
OwnersApprovals
变量。 在“ 值 ”属性字段中,传递OwnersApprovals + 1
表达式。
-
-
将另一个“ If 条件”活动拖动到“ 等待任务并继续 ”序列活动中。 此活动旨在计算审核人已批准的表单操作的数量。
-
在“ 条件” 属性字段中,传递以下表达式:
TaskAction="approve" And ReviewerType="reviewer"
。 -
在“ Then ” 块中拖动“分配”活动。 在“ 目标” 属性字段中,传递
ReviewersApprovals
变量。 在“ 值 ”属性字段中,传递ReviewersApprovals + 1
表达式。
-
-
将三个“ 写入行 ”活动拖动到“ 等待任务并继续 ”序列活动中。 此活动在“ 输出 ”面板中显示给定值。
-
在第一个活动中,传递
ReviewComments
变量。 -
在第二个活动中,传递
OwnersApprovals
变量并添加.toString
属性。 -
在第三个活动中,传递
ReviewersApprovals
变量并添加.toString
属性。
-
此代码段创建三个表单操作并暂停工作流,直到完成两个操作。
-
将“ 创建表单任务” 活动拖动到序列工作流中。
-
在“ 任务标题” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 将其命名为TaskTitle1
。 在“ 变量 ”面板中,将“ 默认” 值设置为"Task - " + "Approver 1"
。 -
在“ 表单数据(集合) ”属性中,创建 类型 为
String
和 方向 为In
的参数。 将参数命名为Approver
,并将 值 设置为"Approver1"
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在此示例中,将变量命名为TaskPersistData1
。
-
-
将“ 创建表单”活动 拖动到序列工作流中。
-
在“ 任务标题” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 将其命名为TaskTitle2
。 在“ 变量 ”面板中,将“ 默认” 值设置为"Task - " + "Approver 2"
。 -
在“ 表单数据(集合) ”属性中,创建 类型 为
String
和 方向 为In
的参数。 将参数命名为Approver
,并将 值 设置为"Approver2"
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在此示例中,将变量命名为TaskPersistData2
。
-
-
将“ 创建表单”活动 拖动到序列工作流中。
-
在“ 任务标题” 属性字段中,按键盘上的
CTRL + k
,然后创建一个String
变量。 将其命名为TaskTitle3
。 在“ 变量 ”面板中,将“ 默认” 值设置为"Task - " + "Approver 3"
。 -
在“ 表单数据(集合) ”属性中,创建 类型 为
String
和 方向 为In
的参数。 将参数命名为Approver
,并将 值 设置为"Approver3"
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL + k
,然后创建一个FormTaskData
变量。 在此示例中,将变量命名为TaskPersistData3
。
-
-
将“ 并行 ”活动拖动到您的工作流中。
-
在“ 条件” 属性字段中,按键盘上的
CTRL + k
,然后创建一个Int32
变量。 在本例中,将变量命名为CompleteTasksCount
,并将 默认 值设置为0
。 -
在“ 条件” 属性的“表达式编辑器”中,将条件设置为
CompleteTasksCount=2
。 这使并行活动在三个操作中有两个完成时完成。
-
- 将“ 序列 ”活动拖动到“ 并行 ”活动的主体中。 将活动重命名为
Sequence Task1
。 -
在“
Sequence Task1
”活动中,拖动“ 等待表单任务并继续” 活动。 将其重命名为Wait for Form Task and Resume(Task1)
。-
在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的
FormTaskData
变量。 在此示例中,传递TaskPersistData1
变量。 -
在“ 任务操作” 属性字段中,按
CTRL + k
并创建一个String
变量。 将其命名为TaskAction1
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL+ k
,然后创建一个FormTaskData
变量。 将其命名为TaskData1
。
-
- 将“ 写入行 ”活动拖动到
Sequence Task1
活动的 “操作” 正文中。 此活动旨在在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入TaskAction1
变量。 -
在
Wait for Form Task and Resume(Task1)
活动中拖动“ 分配 ”活动。 在“ 目标” 字段中传递CompleteTaskCount
,在“ 值 ” 字段中传递CompleteTaskCount
+ 1 表达式。 如果操作已完成并恢复工作流,则会向CompleteTaskCount
变量添加新的迭代。 - 将“ 序列 ”活动拖动到“ 并行 ”活动的主体中。 将活动重命名为
Sequence Task2
。 - 在“
Sequence Task2
”活动中,拖放“ 等待表单任务并继续” 活动。 将其重命名为Wait for Form Task and Resume(Task2)
- 在“任务对象(输入)” 属性字段中,传递为存储有关表单操作的数据而创建的“表单任务数据” 变量。 在此示例中,传递
TaskPersistData2
变量。 - 在“ 任务操作” 属性字段中,按
CTRL + k
并创建一个字符串变量。 将其命名为 TaskAction2 - 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k 并创建
FormTaskData
变量。 将其命名为TaskData2
。
- 在“任务对象(输入)” 属性字段中,传递为存储有关表单操作的数据而创建的“表单任务数据” 变量。 在此示例中,传递
- 将“ 写入行 ”活动拖动到
Sequence Task2
活动的主体中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入TaskAction2
变量。 - 在
Wait for Form Task and Resume(Task2)
活动中拖动“ 分配 ”活动。 在“ 目标” 字段中传递CompleteTaskCount
,在“ 值 ”字段中传递CompleteTaskCount + 1
表达式。 如果操作已完成并恢复工作流,则会向CompleteTaskCount
变量添加新的迭代。 - 将“ 序列 ”活动拖动到“ 并行 ”活动的主体中。 将活动重命名为
Sequence Task3
。 -
在“
Sequence Task3
”活动中,拖放“ 等待表单任务并继续” 活动。 将其重命名为Wait for Form Task and Resume(Task3)
。-
在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的
FormTaskData
变量。 在此示例中,传递TaskPersistData3
变量。 -
在“ 任务操作” 属性字段中,按
CTRL + k
并创建一个String
变量。 将其命名为TaskAction3
。 -
在“ 任务对象(输出) ”属性字段中,按键盘上的
CTRL+ k
,然后创建一个FormTaskData
变量。 将其命名为TaskData3
。
-
- 将“ 写入行 ”活动拖动到
Sequence Task3
活动的 “操作” 正文中。 此活动旨在在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入TaskAction3
变量。 - 在
Wait for Form Task and Resume(Task3)
活动中拖动“ 分配 ”活动。 在“目标”字段中传递CompleteTaskCount
,在“值 ” 字段中传递CompleteTaskCount + 1
表达式。 如果操作已完成并恢复工作流,则会将新的迭代添加到CompleteTaskCount
变量中。