activities
latest
false
重要 :
请注意此内容已使用机器翻译进行了部分本地化。
UiPath logo, featuring letters U and I in white
工作流活动
Last updated 2024年11月18日

示例工作流

UiPath Studio 中的“ 代码片段 ”面板存储用户添加的 XAML 文件。 示例 XAML 文件存储在文件夹中。 用于存储长时间运行的工作流中使用的 XAML 文件的文件夹称为 Orchestration

示例 XAML 文件为只读文件。 您需要在 Studio 中创建一个单独的 流程 ,在其中复制代码片段中的活动和配置。

这些代码片段表示使用“留”活动包中的可用活动创建的示例工作流。

先决条件

  • 要基于“ 代码片段 ”面板中的工作流开发长时间运行的工作流,您需要安装 UiPath.Persistence.Activities 包。
  • 我们建议使用“ 业务流程流程 ”模板开始构建长时间运行的工作流。

添加队列项目并等待完成

此代码段创建一个 队列项目 并暂停工作流,直到完成该 队列项目 的处理。

  1. 将“ 添加队列项目并获取参考” 活动拖动到工作流中。

    此活动使用输入/输出参数将队列项目添加到 Orchestrator 中的队列容器中。 然后,它将有关新创建的队列项目对象的相应数据检索到 QueueItemData 类型变量中,以便暂停工作流,直到将队列项目添加到队列中为止。 有关该活动的更多信息,请参见 添加队列项目并获取参考页面
    将队列项目添加到 Orchestrator 队列后,所有 QueueItemData 类型变量都将使用从 Orchestrator 检索到的数据进行填充。
    1. 在“ 项目信息 ” 集合中,创建一个具有“ 输入/输出 方向” 的参数,并将值设置为要作为队列项目传递的变量。 在此示例中,传递一个名为 Test字符串 变量。
    2. 在“ 队列项目对象(输出) ” 属性字段中,按键盘上的 CTRL + k 并创建一个 QueueItemData 类型变量,以存储在 Orchestrator 中创建队列项目后有关队列项目的数据。 在此示例中,创建一个名为 QueueItemObjectQueueItemData 变量。


  2. 拖动要在暂停工作流之前运行的任何活动,以检索有关队列项目的数据。 在此代码段中,“ 暂停工作流之前要执行的所有步骤” 部分已注释掉,充当容器,您可以在其中放置不会在运行时执行的活动。
  3. 将“ 等待队列项目并继续” 活动拖动到工作流中。

    此活动等待在 Orchestrator 中添加和处理队列项目,以便在 QueueItemData 类型变量中检索有关它的数据并将其映射回工作流中。 有关该活动的更多信息,请参见 等待队列项目然后继续 页面。
    1. 在“ 队列项目对象(输入) ”属性字段中,传递 QueueItemObject 变量,以引用要添加到 Orchestrator 的确切队列项目。
    2. 在“ 队列项目对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 QueueItemData 类型变量,以存储队列项目在处理和检索后的相关数据。
  4. 在工作流中添加“ 写入行 ”活动,以打印出您在 Orchestrator 中添加的队列项目。 在此示例中,在“ 文本 ”属性字段中,传递 Test 变量。

创建外部任务并挂起直到完成

此代码段创建一个 外部操作 并暂停工作流,直到用户完成操作。

  1. 将“ 创建外部任务” 活动拖动到您的工作流中。

    此活动将在 Actions Center 中创建一个具有给定 任务标题任务优先级任务目录 (现称为 Actions 目录)和 任务数据的外部Actions 。 有关该活动的更多信息,请参见 “ 创建外部任务 ”页面。

  2. 使用传递信息的参数填充“ 任务数据集合” 属性窗口 InOutIn/Out。 在此示例中,创建三个参数,每个参数都具有不同的 方向InOutIn/Out。 将“ 类型 ”设置为 String。 对于“ ” 字段,按键盘上的 CTRL + K 并创建三个变量,用于提供信息(对于 In 类型参数)或提取信息(对于 Out 类型参数)。

    在此示例中,创建三个 字符串 类型变量:

    • InVariable - In类型参数的
    • 输出变量 ” - Out类型参数的
    • InOutVariable - In/Out类型参数的


      在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 ExternalTaskData 类型变量。 在此示例中,将变量命名为 TaskPersistData。 此 ExternalTaskData 对象用于从 Orchestrator 传递数据,以便让机器人知道,在完成特定的操作任务之前,工作流将暂停。
  3. 添加要在暂停工作流之前运行的任何活动,以检索有关 ExternalTaskData 对象的数据。
    1. 在本示例中,将“ 序列 ”活动拖放到工作流中,并使用三个“ 写入行 ”活动进行填充。 每个“ 写入行 ”活动都用于输出在“外部任务”中传递的三个变量的数据。 在“ 文本 ”属性字段中传递以下值: InVariableOutVariableInOutVariable
  4. 将“ 等待外部任务并继续” 活动拖动到工作流中。

    此活动会暂停工作流,直到 外部任务 完成,然后再将其映射回工作流中的 ExternalTaskData 类型变量中。 请参阅 等待外部任务然后继续 页面,了解有关此活动的更多信息。
    1. 在“ 任务对象(输入) ”属性字段中,传递 ExternalTaskData 变量,以引用您创建的确切外部任务。 在此示例中,传递 TaskPersistData 变量。
    2. 在“ 任务操作” 属性字段中,按键盘上的 CTRL + k ,创建一个 字符串 类型变量,并将其命名为 TaskAction。 这将存储用户为完成任务而采取的操作。
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,创建一个“外部 任务数据”类型变量,并将其命名为 TaskData。 此变量存储在完成外部操作后从 Orchestrator 检索到的更新的任务对象。
  5. 添加要在工作流恢复后运行的任何活动。 在此示例中,使用四个“ 写入行 ”活动,在“输出”面板中打印完成“外部操作”后检索到的所有值。 在 文本 字段中传递以下变量: TaskActionInVariableOutVariableInOutVariable


创建表单任务并暂停直到完成

此代码片段创建一个表单 Actions 并暂停工作流,直到用户完成 Actions为止。

  1. 将“ 创建表单任务” 活动拖动到工作流中。

    此活动将在Actions Center 中创建一个 表单 Actions ,其中包含给定的 任务标题任务优先级任务目录 (现称为 Actions 目录)和 任务数据。 有关该活动的更多信息,请参见 “ 创建表单任务 ”页面。

  2. 使用传递信息的参数填充“ 任务数据集合 ”属性窗口“ 输入”、 “输出”或 “输入/输出”。 在此示例中,创建三个参数,每个参数都具有不同的 方向InOutIn/Out。 将“ 类型 ”设置为 String。 对于“ ” 字段,按键盘上的 CTRL + K ,然后创建三个变量,以提供信息(对于 In 类型参数)或提取信息(对于 Out 类型参数)。

    在此示例中,创建三个 字符串 类型变量:

    • InVariable - In类型参数的
    • 输出变量 ” - Out类型参数的
    • InOutVariable - In/Out类型参数的


      在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 类型变量。 在此示例中,将变量命名为 TaskPersistData。 此 FormTaskData 对象用于从 Orchestrator 传递数据,以便让机器人知道,在完成特定的操作任务之前,工作流将暂停。
  3. 添加要在暂停工作流之前运行的任何活动,以检索有关 FormTaskData 对象的数据。 在此示例中,将“ 序列 ”活动拖放到工作流中,并使用三个“ 写入行 ”活动填充工作流。 每个“ 写入行 ”活动都用于输出在“外部操作”中传递的三个变量的数据。 在“ 文本 ”属性字段中传递以下值: InVariableOutVariableInOutVariable
  4. 将“ 等待外部任务并继续” 活动拖动到工作流中。

    此活动将暂停工作流,直到完成 表单操作 ,然后将其映射回工作流中的 FormTaskData 类型变量。
    1. 在“ 任务对象(输入) ”属性字段中,传递 FormTaskData 变量,以引用您在 Action Center 中创建的确切表单任务。 在此示例中,传递 TaskPersistData 变量。
    2. 在“ 任务操作” 属性字段中,按键盘上的 CTRL + k ,创建一个 字符串 类型变量,并将其命名为 TaskAction。 这将存储用户为完成任务而采取的操作。
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,创建一个 “表单任务数据” 类型变量,并将其命名为 TaskData。 此变量存储任务完成后从 Orchestrator 检索到的更新后的任务对象。
  5. 拖动工作流恢复后要运行的任何活动。 在此示例中,使用四个“ 写入行 ”活动将完成“外部操作”后检索到的所有值传递到“输出”面板中。 在 文本 字段中传递以下变量: TaskActionInVariableOutVariableInOutVariable

创建任务并分配给用户

此代码段创建两个 外部操作,将其分配给用户,并显示失败的操作分配列表。

  1. 将两个“ 创建外部任务” 活动拖到您的工作流中。

    1. 对于第一个活动,为操作指定标题并设置其优先级。 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 ExternalTaskData 类型变量。 在本示例中,将其命名为 Task1PersistData
    2. 对于第二个活动,为操作指定标题并设置其优先级。 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 ExternalTaskData 类型变量。 在本示例中,将其命名为 Task2PersistData


  2. 将两个 “添加到集合” 活动拖到您的工作流中。

    备注:

    添加到集合 ”活动是传统活动。

    要使“ 添加到集合 ”活动在您的项目中可用,请执行以下操作:

    • 已安装 System.Activities22.4.1 或更低版本。
    • 转到“ 活动 ”面板。
    • 单击“ 查看选项” docs image 图标。
    • 单击 “显示经典”

    该活动位于“ 默认活动” >“编程” >“集合”下。

    1. 在“ 集合 ”属性字段中,按键盘上的 CTRL + k ,创建一个 List<TaskUserAssignment> 类型变量,并将其命名为 TaskAssignementsInput。 转到“ 变量 ” 面板,并将“ 默认” 字段中的变量初始化为 new List(Of TaskUserAssignment
    2. 在“ 项目 ” 属性字段中,创建 TaskUserAssignment的实例,该实例具有以下参数:“ 外部 任务数据” 变量和要向其分配任务的用户的电子邮件地址。

      在此示例中,输入以下内容:

      • 第一个“ 添加到集合” 活动的new TaskUserAssignment(Task1PersistData.Id, "emailaddress") 表达式
      • 第二个“ 添加到集合” 活动的 new TaskUserAssignment(Task2PersistData.Id, "emailaddress") 表达式。


    3. 将“ 类型参数” 属性设置为 System.Collections.Generic.List<UiPath.Persistence.Activities.Tasks.TaskUserAssignment>
  3. 将“ 分配任务 ”活动拖动到您的工作流中。

    1. 在“ 任务用户分配(输入) ”属性字段中,传递 List<TaskUserAssignment> 变量。 在此示例中,传递 TaskAssignmentsInput 变量。
    2. 在“ 任务分配类型 ” 属性字段中,键入要执行的确切分配操作:“ 分配 ”或“ 重新分配”。 在本例中,输入 Assign
    3. 在“失败的 任务分配(输出) ”属性字段中,按键盘上的 CTRL + k ,创建一个 List<TaskAssignmentResponse> 类型变量,并将其命名为 FailedTaskAssignmentsOutput


  4. 拖动“ 写入行 ”活动,以输出失败的任务分配数。 在“ 文本 ”属性字段中,传递 List<TaskAssignmentResponse> 类型变量,然后使用 .Count.ToString 属性。 在此示例中,传递以下表达式: FailedTaskAssignemntsOutput.Count.ToString

启动作业并在完成后继续

启动无人值守流程并暂停工作流,直到完成特定作业。

  1. 将“ 开始作业并获取参考” 活动拖动到工作流中。

    此活动根据输入的参数在 Orchestrator 中启动作业,然后检索相应的作业对象。 有关该活动的更多信息,请参见 “ 启动作业并获取参考 ”页面。

    1. 在“ 流程 名称” 属性字段中,传递要用于作业的流程的 显示 名称。 在此示例中,将名称存储在变量中。 按键盘上的 CTRL +k ,创建一个 String 类型变量并将其命名为 ProcessName。 在“ ” 字段中,传递流程的 显示 名称,例如 TestProcess_test
      注意: 显示 名称需要采用以下格式写入: packageName _environment


    2. 在“ 作业参数(集合) ”属性中,创建在 Orchestrator 中调用作业时要使用的参数。 此属性根据从 Orchestrator 中的作业接收到的输入修改 OutIn/Out 类型的参数,然后将它们映射回工作流。 在此示例中,创建 方向 In/OutString 类型参数,命名为 Test。 在“ ” 字段中,按键盘上的 CTRL + k ,然后创建 String 类型变量。 将变量命名为 Test


    3. 在“ 作业对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 JobData 类型变量,并将其命名为 JobPersistenceData。 此变量存储调用 Orchestrator 中的作业时创建的作业数据对象,以便将其用于“ 等待作业并继续” 活动。
  2. 添加要在暂停工作流之前运行的任何活动,以检索有关 JobData 对象的数据。
  3. 将“ 等待作业并继续” 活动拖动到您的工作流中。

    此活动将暂停工作流,直到 Orchestrator 中的特定作业完成。 作业完成后,工作流将恢复。

    1. 在“ 作业对象(输入) ”属性字段中,传递为“ 启动作业并获取引用” 活动创建的 JobData 类型变量。 在此示例中,传递 JobPersistenceData 变量。 这会将机器人指向需要完成的确切作业,直到工作流恢复。
    2. 在“ 作业对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 JobData 类型变量。 在本示例中,将其命名为 JobDataObject
  4. 拖动“ 写入行 ”活动,以便打印出已映射回工作流的参数。 在“ 文本 ”属性字段中,传递用作“ 作业参数(集合)”中创建的参数的值的变量。 在此示例中,传递 Test 变量。

暂停并在 1 小时后恢复

此代码段会暂停给定的工作流,并在一小时后恢复。

  1. 添加要在暂停工作流之前运行的任何活动。
  2. 将“ 延迟后恢复 ”活动拖动到工作流中。 此活动会暂停给定的工作流,并在指定的日期和时间继续进行。

    请参阅 “ 延迟后继续 ”页面,了解有关此活动的更多信息。

    1. 2.1. 在“ 变量 ”面板中,创建 System.TimeSpan 类型变量。 在本示例中,将变量命名为 OneHour。 将 TimeSpan 变量的 默认 值设置为 New TimeSpan(1,0,0)
    2. 2.2. 在活动的“ 恢复时间” 属性字段中,传递 DateTime.Now 表达式和 TimeSpan 变量。 在此示例中,传递以下表达式: DateTime.Now + OneHour


  3. 添加要在工作流恢复后运行的任何活动。

暂停,5 分钟后继续

此代码段会暂停给定的工作流,并在五分钟后恢复。

  1. 拖动要在暂停工作流之前运行的任何活动。
  2. 将“ 延迟后恢复 ”活动拖动到工作流中。 此活动会暂停给定的工作流,并在指定的日期和时间继续进行。

    1. 在“ 变量 ”面板中,创建 System.TimeSpan 类型变量。 在本示例中,将变量命名为 FiveMinute。 将 TimeSpan 变量的 默认 值设置为 New TimeSpan(0,5,0)
    2. 在活动的“ 恢复时间” 属性字段中,传递 DateTime.Now 表达式和 TimeSpan 变量。 在此示例中,传递以下表达式: DateTime.Now + FiveMinute


  3. 拖动要在工作流恢复后运行的任何活动。

挂起并在 90 秒后恢复

此代码段会暂停给定的工作流,并在 90 秒后恢复。

  1. 添加要在暂停工作流之前运行的任何活动。
  2. 将“ 延迟后恢复 ”活动拖动到工作流中。 此活动会暂停给定的工作流,并在指定的日期和时间继续进行。

    1. 在“ 变量 ”面板中,创建 System.TimeSpan 类型变量。 在本示例中,将变量命名为 NinetySeconds。 将 TimeSpan 变量的 默认 值设置为 New TimeSpan(0,0,90)
    2. 在活动的“ 恢复时间” 属性字段中,传递 DateTime.Now 表达式和 TimeSpan 变量。 在此示例中,传递以下表达式: DateTime.Now + NinetySeconds


  3. 拖动要在工作流恢复后运行的任何活动。

等待所有表单任务完成

此代码段根据数据表中的发票数量在循环中创建多个 表单操作 ,并暂停工作流,直到完成所有操作。

  1. 将“ 构建数据表” 活动拖动到工作流中。

    1. 在“ 输出 ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 DataTable 类型变量,以存储您正在构建的数据表。 在此示例中,将 DataTable 变量命名为 HighValueInvoices
    2. 单击 . “ 构建数据表 ” 窗口将打开。

    3. Column1 重命名为 InvoiceNumber ,将 Column2 重命名为 InvoiceAmount
    4. 在表格的行中添加数据,然后按“确定”。



  2. 将“ 分配 ”活动拖动到工作流中。 此活动为存储在 String 变量中的数据表分配名称。
    1. 在“ 目标” 属性字段中,传递 DataTable 变量。 在此示例中,传递 HighValueInvoices 变量。
    2. 在“ ” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 类型变量。 在本示例中,将其命名为 DataTableName。 将 DataTableName 变量的 默认 值设置为“invoices”。
  3. “遍历循环” 活动拖动到工作流中。 在“ 项目列表” 属性字段中,传递具有以下格式的表达式: DataTableVariable.Rows。 在此示例中,传递 HighValueInvoices.Rows。 这将遍历数据表中的每一行。
  4. 在“遍历循环”活动的 主体拖动 “创建表单任务”活动。

    1. 在“ 任务标题” 属性字段中,输入“ 遍历 循环”活动检索的“发票编号”值,并将其转换为“字符串”。 在此示例中,输入以下表达式: item("InvoiceNumber").ToString,其中 InvoiceNumber 是包含每张发票相应编号的列的名称。
    2. 在“ 表单数据 (集合)” 中,创建一个参数,用于在表单操作中传递每个发票金额。 创建 String 类型 参数,并将 方向 设置为 In。 在“ ” 字段中,输入每个发票金额并将其转换为字符串。 在本示例中,输入以下表达式: item("InvoiceAmount").ToString,其中 InvoiceAmount 是包含每张发票相应金额的列的名称。
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 类型变量。 在本示例中,将变量命名为 TaskPersistData


  5. 将“ 添加到集合 ”活动拖动到“ 遍历 循环”活动的正文中。

    1. 在“ 集合 ”属性字段中,按键盘上的 CTRL + k ,创建一个 List<FormTaskData> 变量并将其命名为 TaskList。 转到“ 变量 ” 面板,并将“ 默认” 字段中的变量初始化为 New List(Of UiPath.Persistence.Activities.FormTask.FormTaskData
    2. 在“ 项目 ” 属性字段中,传递 FormTaskData 变量,该变量是为了存储所创建的表单操作上的数据而创建的。 在此示例中,传递 TaskPersistData 变量。
    3. 对于“ 类型参数” 属性,选择 UiPath.Persistence.Activities.FormTask.FormTaskData
  6. Parallel For Each 活动拖动到您的工作流中。

    1. 对于“ 类型参数” 属性,选择 UiPath.Persistence.Activities.FormTask.FormTaskData
    2. 在“ ” 属性字段中,传递 List<FormTaskData> 变量。 在此示例中,传递 TaskList 变量。
  7. 将“ 等待表单任务并继续 ”活动拖动到“ 并行 循环”活动的主体中。

    1. 在“ TaskObject(Input) ” 属性字段中,输入“ Parallel For Each ”活动中引用的 item 对象。 在本例中, item 对象表示存储在 TaskList 变量中的表单操作。
    2. 在“ 任务操作” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 在本示例中,将其命名为 TaskAction
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在本示例中,将其命名为 TaskData


  8. 将“ 写入行 ”活动拖动到工作流中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction 变量。

等待任何表单任务完成

此代码片段按顺序创建多个表单 Actions ,并暂停工作流,直到完成任何表单 Actions 为止。

  1. 将“ 创建表单任务” 活动拖动到序列工作流中。

    1. 在“ 任务标题” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 TaskTitle1。 在“ 变量 ”面板中,将“ 默认” 值设置为 "Task - " + "Approver 1"
    2. 在“ 表单数据(集合) ”属性中,创建 类型String方向In的参数。 将参数命名为 Approver ,并将 设置为 "Approver1"
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在此示例中,将变量命名为 TaskPersistData1
  2. 将第二个 “创建表单任务” 活动拖到您的工作流中。

    1. 在“ 任务标题” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 TaskTitle2。 在“ 变量 ”面板中,将“ 默认” 值设置为 "Task - " + "Approver 2"
    2. 在“ 表单数据(集合) ”属性中,创建 类型String方向In的参数。 将参数命名为 Approver ,并将 设置为 "Approver2"
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在此示例中,将变量命名为 TaskPersistData2
  3. 将第三个 “创建表单任务” 活动拖到您的工作流中。

    1. 在“ 任务标题” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 TaskTitle3。 在“ 变量 ”面板中,将“ 默认” 值设置为 "Task - " + "Approver 3"
    2. 在“ 表单数据(集合) ”属性中,创建 类型String方向In的参数。 将参数命名为 Approver ,并将 设置为 "Approver3"
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在此示例中,将变量命名为 TaskPersistData3
  4. 将“ 选取 ”活动拖动到您的工作流中。
  5. 将“选取分支”活动拖动到“ 选取 分支”活动的主体中。 将活动重命名为 Pick Branch (Task1)
  6. 将“ 等待表单任务并继续” 活动拖动到 Pick Branch (Task1) 活动的“ 触发器 ”正文中。
    1. 在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的 FormTaskData 变量。 在此示例中,传递 TaskPersistData1 变量。
    2. 在“ 任务操作” 属性字段中,按 CTRL + k 并创建一个 String 变量。 将其命名为 TaskAction1
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k ,然后创建一个 FormTaskData 变量。 将其命名为 TaskData1
  7. 将“ 写入行 ”活动拖动到 Pick Branch (Task1) 活动的 “操作” 正文中。 此活动旨在在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction1 变量。


  8. 将“选取分支”活动拖动到“ 选取 分支”活动的主体中。 将活动重命名为 Pick Branch (Task2)
  9. 将“ 等待表单任务并继续” 活动拖动到 Pick Branch (Task2) 活动的“ 触发器 ”正文中。
    1. 在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的 FormTaskData 变量。 在此示例中,传递 TaskPersistData2 变量。
    2. 在“ 任务操作” 属性字段中,按 CTRL + k 并创建一个 String 变量。 将其命名为 TaskAction2
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k ,然后创建一个 FormTaskData 变量。 将其命名为 TaskData2
  10. 将“ 写入行 ”活动拖动到 Pick Branch (Task2) 活动的 “操作” 正文中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction2 变量。
  11. 将“选取分支”活动拖动到“ 选取 分支”活动的主体中。 将活动重命名为 Pick Branch (Task3)
  12. 将“ 等待表单任务并继续” 活动拖动到 Pick Branch (Task3) 活动的“ 触发器 ”正文中。
    1. 在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的 FormTaskData 变量。 在此示例中,传递 TaskPersistData3 变量。
    2. 在“ 任务操作” 属性字段中,按 CTRL + k 并创建一个 String 变量。 将其命名为 TaskAction3
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k ,然后创建一个 FormTaskData 变量。 将其命名为 TaskData3
  13. 将“ 写入行 ”活动拖动到 Pick Branch (Task3) 活动的 “操作” 正文中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction3 变量。

在循环中等待某些表单任务完成

此代码片段根据数据表中的输入创建多个表单 Actions,并暂停工作流,直到完成一组特定的表单 Actions 。

  1. 将“ 构建数据表” 活动拖动到工作流中。

    1. 在“ 数据表 ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 System.DataTable 变量。 在本示例中,将其命名为 CodeReviews
    2. 单击 . “ 构建数据表 ” 窗口将打开。

    3. Column1 重命名为 ReviewerName ,将 Column2 重命名为 ReviewerType。 将 ReviewerType 列的“ 类型 ” 设置为 String
    4. 在表格的行内添加数据。 对于 ReviewerType 列,此示例使用两种类型的审核人: 代码所有者审核人。


  2. 将“ 分配 ”活动拖动到工作流中。 这将为您创建的数据表分配一个名称。 在“目标 属性字段中,传递 System.DataTable 变量并向其添加 .TableName 属性。 在“ ” 字段中,按键盘上的 CTRL + k 并创建 String 变量。 在本例中,将其命名为 DataTableName
  3. Parallel For Each 活动拖动到您的工作流中。 在本示例中,将其命名为 Create Tasks for PR Review
    1. 在“ ” 属性字段中,传递 System.DataTable 变量并添加属性 .AsEnumerable。 在此示例中,传递以下表达式: CodeReviews.AsEnumerable
  4. Parallel For Each 活动的主体中拖动一个“分配”活动。

    1. 在“ 目标” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量,该变量用于保存从 CodeReviews 数据表的 ReviewerType 列检索到的数据。 在此示例中,将变量命名为 ReviewerType
    2. 在“ ” 属性字段中,传递一个表达式,该表达式从 ReviewerType 列中检索每个行项目,并将其存储在“目标 字段中创建的变量中。 在此示例中,传递以下表达式: ìtem("ReviewerType").toString


  5. 将“ 创建表单任务 ”活动拖动到“ 并行遍历 循环”活动的主体中。

    1. 在“ 任务标题” 属性字段中,传递以下表达式: "Code Review - " + InPullRequestNameInPullRequestNameString 变量,具有 默认"#1"
    2. 在“ 表单数据(集合) ”属性中,创建四个 类型String的参数:
    3. “PR 编号” - 方向In 设置为 InPullRequestName
    4. Reviewer Name - 方向In 设置为 item("ReviewerName").toString
    5. Reviewer Type - 方向In/Out,值设置为 ReviewerType 变量。
    6. Reviewer Comment - 方向Out。 在“ ” 字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 ReviewerComments。 此参数会将“操作”中的任何注释映射到工作流中。
      5.3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 将其命名为 TaskPersistData


  6. 将“ 添加到集合 ”活动拖动到“ 并行遍历循环” 活动的正文中。 此活动将创建的所有表单操作存储到列表中。

    1. 在“ 集合 ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 List<FormTaskData> 变量。 将其命名为 TaskDataList。 转到“ 变量 ” 面板,并将变量的 默认 值设置为 New List(of UiPath.Persistence.Activities.FormTask.FormTaskData)
    2. 在“ 项目 ”属性字段中,传递 FormTaskData 变量。 在此示例中,传递 TaskPersistData 变量。
    3. 对于“ 类型参数” 属性,选择 UiPath.Persistence.Activities.FormTask.FormTaskData
  7. 在“ 变量 ” 面板中,创建两个 Int32 类型的变量,并将其 默认 值设置为 0OwnersApprovalsReviewersApprovals
  8. 拖动另一个 “遍历循环” 活动。 在本示例中,将其命名为 Wait for Conditional Task(s) Completion
    1. 在“ 条件” 属性字段中,传递以下表达式: OwnersApprovals>=2 Or (OwnersApprovals = 1 And ReviewersApprovals>=2)。 这会将工作流设置为仅在满足条件时恢复。
    2. 对于“ 类型参数” 属性,选择 UiPath.Persistence.Activities.FormTask.FormTaskData
    3. 在“ ” 属性字段中,传递存储表单操作的列表。 在此示例中,传递 TaskDataList 变量。


  9. 将“ 序列 ”活动拖动到“ 等待条件任务完成 ”活动的主体中。 将其重命名为 Wait for Task and Resume
  10. 将“ 等待表单任务并继续” 活动拖动到“ 等待任务并继续 ”序列活动中。

    1. 在“ TaskObject(Input) ”属性字段中,传递 item 变量。
    2. 在“ 任务操作” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 在本示例中,将其命名为 TaskAction
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在本示例中,将其命名为 TaskData
  11. 将“ If 条件”活动拖动到“ 等待任务并继续 ”序列活动中。 此活动旨在计算代码所有者已批准的表单操作的数量。

    1. 在“ 条件” 属性字段中,传递以下表达式: TaskAction="approve" And ReviewerType="code owner"
    2. 将“ 分配 ”活动拖放到“ Then ” 块中。 在“ 目标” 属性字段中,传递 OwnersApprovals 变量。 在“ ”属性字段中,传递 OwnersApprovals + 1 表达式。


  12. 将另一个“ If 条件”活动拖动到“ 等待任务并继续 ”序列活动中。 此活动旨在计算审核人已批准的表单操作的数量。

    1. 在“ 条件” 属性字段中,传递以下表达式: TaskAction="approve" And ReviewerType="reviewer"
    2. 在“ Then ” 块中拖动“分配”活动。 在“ 目标” 属性字段中,传递 ReviewersApprovals 变量。 在“ ”属性字段中,传递 ReviewersApprovals + 1 表达式。


  13. 将三个“ 写入行 ”活动拖动到“ 等待任务并继续 ”序列活动中。 此活动在“ 输出 ”面板中显示给定值。

    1. 在第一个活动中,传递 ReviewComments 变量。
    2. 在第二个活动中,传递 OwnersApprovals 变量并添加 .toString 属性。
    3. 在第三个活动中,传递 ReviewersApprovals 变量并添加 .toString 属性。

等待某些表单任务完成

此代码段创建三个表单操作并暂停工作流,直到完成两个操作。

  1. 将“ 创建表单任务” 活动拖动到序列工作流中。

    1. 在“ 任务标题” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 TaskTitle1。 在“ 变量 ”面板中,将“ 默认” 值设置为 "Task - " + "Approver 1"
    2. 在“ 表单数据(集合) ”属性中,创建 类型String方向In的参数。 将参数命名为 Approver ,并将 设置为 "Approver1"
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在此示例中,将变量命名为 TaskPersistData1
  2. 将“ 创建表单”活动 拖动到序列工作流中。

    1. 在“ 任务标题” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 TaskTitle2。 在“ 变量 ”面板中,将“ 默认” 值设置为 "Task - " + "Approver 2"
    2. 在“ 表单数据(集合) ”属性中,创建 类型String方向In的参数。 将参数命名为 Approver ,并将 设置为 "Approver2"
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在此示例中,将变量命名为 TaskPersistData2
  3. 将“ 创建表单”活动 拖动到序列工作流中。

    1. 在“ 任务标题” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 String 变量。 将其命名为 TaskTitle3。 在“ 变量 ”面板中,将“ 默认” 值设置为 "Task - " + "Approver 3"
    2. 在“ 表单数据(集合) ”属性中,创建 类型String方向In的参数。 将参数命名为 Approver ,并将 设置为 "Approver3"
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL + k ,然后创建一个 FormTaskData 变量。 在此示例中,将变量命名为 TaskPersistData3
  4. 将“ 并行 ”活动拖动到您的工作流中。

    1. 在“ 条件” 属性字段中,按键盘上的 CTRL + k ,然后创建一个 Int32 变量。 在本例中,将变量命名为 CompleteTasksCount ,并将 默认 值设置为 0
    2. 在“ 条件” 属性的“表达式编辑器”中,将条件设置为 CompleteTasksCount=2。 这使并行活动在三个操作中有两个完成时完成。


  5. 将“ 序列 ”活动拖动到“ 并行 ”活动的主体中。 将活动重命名为 Sequence Task1
  6. 在“ Sequence Task1 ”活动中,拖动“ 等待表单任务并继续” 活动。 将其重命名为 Wait for Form Task and Resume(Task1)
    1. 在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的 FormTaskData 变量。 在此示例中,传递 TaskPersistData1 变量。
    2. 在“ 任务操作” 属性字段中,按 CTRL + k 并创建一个 String 变量。 将其命名为 TaskAction1
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k ,然后创建一个 FormTaskData 变量。 将其命名为 TaskData1


  7. 将“ 写入行 ”活动拖动到 Sequence Task1 活动的 “操作” 正文中。 此活动旨在在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction1 变量。
  8. Wait for Form Task and Resume(Task1) 活动中拖动“ 分配 ”活动。 在“ 目标” 字段中传递 CompleteTaskCount ,在“ ” 字段中传递 CompleteTaskCount + 1 表达式。 如果操作已完成并恢复工作流,则会向 CompleteTaskCount 变量添加新的迭代。


  9. 将“ 序列 ”活动拖动到“ 并行 ”活动的主体中。 将活动重命名为 Sequence Task2
  10. 在“ Sequence Task2 ”活动中,拖放“ 等待表单任务并继续” 活动。 将其重命名为 Wait for Form Task and Resume(Task2)
    1. 在“任务对象(输入)” 属性字段中,传递为存储有关表单操作的数据而创建的“表单任务数据” 变量。 在此示例中,传递 TaskPersistData2变量。
    2. 在“ 任务操作” 属性字段中,按 CTRL + k并创建一个字符串变量。 将其命名为 TaskAction2
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k 并创建 FormTaskData 变量。 将其命名为 TaskData2
  11. 将“ 写入行 ”活动拖动到 Sequence Task2 活动的主体中。 此活动在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction2 变量。
  12. Wait for Form Task and Resume(Task2)活动中拖动“ 分配 ”活动。 在“ 目标” 字段中传递 CompleteTaskCount,在“ ”字段中传递 CompleteTaskCount + 1表达式。 如果操作已完成并恢复工作流,则会向CompleteTaskCount 变量添加新的迭代。
  13. 将“ 序列 ”活动拖动到“ 并行 ”活动的主体中。 将活动重命名为 Sequence Task3
  14. 在“ Sequence Task3 ”活动中,拖放“ 等待表单任务并继续” 活动。 将其重命名为 Wait for Form Task and Resume(Task3)
    1. 在“ 任务对象(输入) ”属性字段中,传递为存储有关表单操作的数据而创建的 FormTaskData 变量。 在此示例中,传递 TaskPersistData3 变量。
    2. 在“ 任务操作” 属性字段中,按 CTRL + k 并创建一个 String 变量。 将其命名为 TaskAction3
    3. 在“ 任务对象(输出) ”属性字段中,按键盘上的 CTRL+ k ,然后创建一个 FormTaskData 变量。 将其命名为 TaskData3
  15. 将“ 写入行 ”活动拖动到 Sequence Task3 活动的 “操作” 正文中。 此活动旨在在“ 输出 ”面板中显示用户为完成表单操作而采取的操作。 在“ 文本 ”值中,输入 TaskAction3 变量。
  16. Wait for Form Task and Resume(Task3)活动中拖动“ 分配 ”活动。 在“目标”字段中传递 CompleteTaskCount,在“值 字段中传递 CompleteTaskCount + 1表达式。 如果操作已完成并恢复工作流,则会将新的迭代添加到CompleteTaskCount 变量中。

此页面有帮助吗?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath Logo White
信任与安全
© 2005-2024 UiPath。保留所有权利。