studio
2024.10
true
UiPath logo, featuring letters U and I in white
Studio 用户指南
Last updated 2024年11月4日

简介

编码自动化允许您使用代码而不是拖放活动来创建自动化,从而允许协作处理复杂的项目。在编码工作流和测试用例中,您可以使用 UiPath 服务(相当于活动包)、API(类似于活动)、外部 .NET NuGet 包和 UiPath Studio 中的自定义 C# 类。这样可以轻松与外部系统、数据库、API 和其他服务集成。

编码工作流的行为与标准工作流相同,这意味着也可以使用“调用工作流文件”活动从标准 UiPath 工作流调用编码工作流,反之亦然。

此外,代码中定义的类型(例如枚举)可以用作标准 UiPath 工作流中的输入。

编码自动化可以分为三种类型:

  • 编码工作流 – 用于以代码形式设计工作流。
  • 编码测试用例 – 用于设计测试用例。
  • 代码源文件 – 用于创建稍后可以在其他编码文件类型中调用的代码。


使用编码自动化

要在项目中创建编码自动化,您通常需要预安装UiPath.CodedWorkflows包。 该包附带CodedWorkflowBase基类和CodedWorkflow部分类。

在以下情况下预安装了该包:

  • 您可以使用版本至少为 23.10 的 System.ActivitiesTesting.ActivitiesUIAutomation.Activities 或任何其他具有编码工作流支持的活动包新建项目。
  • 您可以在项目中创建新的编码工作流编码测试用例代码源文件

如果您无法在上述场景中使用编码自动化,请从“管理包”菜单中下载包。

收益

以下是使用编码自动化的一些好处:

  1. 提高生产力 – 如果您熟悉编码或脚本编写,则可以利用您的技能来提高生产力。在熟悉的编码环境中工作可让您开发更高效的自动化。
  2. 复杂性管理 – 编码自动化为管理复杂的自动化场景提供了灵活的解决方案。通过使用代码,您可以实现自定义逻辑、管理异常并创建可重用的函数。
  3. 混合自动化 – 您可以将编码自动化与低代码自动化互换使用。这促进了两种方法之间的无缝集成,使您能够创建灵活的自动化解决方案。
  4. 提高性能 – 编码自动化使您能够优化自动化工作流以提高性能。通过使用代码,您可以实施特定算法,以更快地执行自动化。
  5. 可读性 – 编码自动化允许您创建结构化代码,从而提高代码可读性。如果您组织代码并记录,则可以轻松维护代码并与其他协作者共享。

结构

编码自动化采用结构化设计,其中包含命名空间、帮助程序类和入口点方法。编码自动化框架允许您使用 C# 编程语言编写自动化。

请遵循以下部分所述的编码自动化的详细结构。

命名空间

创建编码自动化时,系统会使用 Studio 项目的名称自动生成命名空间。例如,如果您的 Studio 项目名为“我的项目”,则所有编码自动化的命名空间均为“我的项目”。

此外,如果您在 Studio 项目的文件夹中创建编码自动化,则命名空间将是项目的名称和文件夹的名称。例如,如果您的 Studio 项目名为“我的项目”,而文件夹名为“位置”,则命名空间将为“我的项目.位置”。

基类

编码工作流编码测试用例自动化都使用 UiPath.CodedWorkflows 包中的 CodedWorkflow 部分类。根据项目中已安装的活动包,此类为自动化提供对服务(相当于活动包)必要接口的访问权限。
注意:导入支持编码自动化的活动包(例如 UiPath.System.Activities 23.10 或更高版本)时,会自动包含 UiPath.CodedWorkflows 包。

编码工作流

编码自动化继承 CodedWorkflow 部分类,创建类型为 CodedAutomationExample : CodedWorkflow 的关系。这意味着 CodedAutomationExample 类从 CodedWorkflow 类继承了属性、方法和功能。本质上,该类可以访问和利用 CodedWorkflow 类中定义的功能,从而为编码自动化奠定了基础,使构建和自定义自动化的行为变得更加容易。
CodedWorkflow 类被声明为部分类,从而允许您通过在代码源文件中定义相同的部分 CodedWorkflow 类来扩展其功能。通过这种方式,您可以添加新的字段和方法,以进一步自定义编码自动化的行为。您可以使用此方法实现专门用于编码测试用例的“”和“”接口。
此外,CodedWorkflow 分部类继承 CodedWorkflowBase 类。


编码工作流库

CodedWorkflowBase 类包含编码自动化继承的内置功能。此类包含用于管理工作流实例、运行时访问、处理服务容器以及配置环境上下文的方法和特定属性。CodedWorkflowBase 类还提供了另一种单独的日志记录方法,您可以自定义该方法。
注意:在“代码编辑器设置”中,选择“启用源代码反编译” 以查看 CodedWorkflowBase 类。
请查看下表中的 CodedWorkflowBase 方法:
方法描述
ICodedWorkflowServices services
注意:我们建议您通过 services 类及其相应服务使用 LogBuildClientRunWorkflow 方法,而不是将其用作独立的现成方法。
提供对编码工作流可用服务的访问权限,例如:
  • OutputLoggerService:允许您使用 Log 方法输出日志。
  • OrchestratorClientServiceBuildClient 方法):允许您通过 BuildClient 方法启用与 Orchestrator 的交互。
  • WorkflowInvocationService:允许您使用 RunWorkflow 方法调用其他工作流。
  • Container:存储所有服务的容器。可用于使用 AutoImportedNamespacesAutoImportedTypes 方法管理编码工作流的资源,处理命名空间和类型的自动导入。此外,它使用 Resolve 方法提供特定服务的实例。
serviceContainer(ICodedWorkflowServiceContainer)
注意:这已替换为 ICodedWorkflowServices services 。如果继续使用此语法,您将收到警告,警告会提示您使用新的 services.Container 语法。
提供对特定于当前编码工作流的依赖项注入容器的访问权限。此容器称为服务容器,可用于检索已在其中注册的服务实例。
GetRunningJobInformation()在编码工作流的上下文中检索当前正在运行的作业的相关信息。该方法访问 executorRuntime 对象的 RunningJobInformation 属性,该属性保存有关作业状态、进度、参数和时间戳的信息。
Log(string message, LogLevel level = LogLevel.Info, IDictionary<string, object>additionalLogFields = null)将其他日志字段添加到具有指定属性的日志消息。
RunWorkflow(string workflowFilePath,IDictionary<string, object> inputArguments = null,TimeSpan? timeout = null, bool isolated = false, InvokeTargetSession targetSession = InvokeTargetSession.Current)提供在给定工作流运行时的上下文中执行工作流的结构。它可以设置参数,处理潜在的隔离并启动工作流执行。返回的任务提供已执行工作流的结果,包括其输出和输入/输出参数。
RunWorkflowAsync(string workflowFilePath,IDictionary<string, object> inputArguments = null, TimeSpan?timeout = null, bool isolated = false, InvokeTargetSession targetSession = InvokeTargetSession.Current)提供在给定工作流运行时的上下文中异步执行工作流的结构。它可以设置参数,处理潜在的隔离并启动工作流执行。返回的任务提供已执行工作流的结果,包括其输出和输入/输出参数。
DelayAsync(TimeSpan time)DelayAsync(int delayMs)在指定的一段时间内异步暂停执行。
Delay(TimeSpan time)Delay(int delayMs)在指定的时间段内暂停执行。
HttpClient BuildClient(string scope = "Orchestrator", bool force = true)构建具有指定作用域和访问令牌的 HTTP 客户端。
RegisterServices(ICodedWorkflowsServiceLocator serviceLocator)将服务(活动包)注册到编码工作流的服务定位器。当您要将自定义服务注入依赖项注入容器时,可以覆盖它。在此处了解如何创建和使用自定义服务(编码活动包)。

入口点

编码工作流和编码测试用例的入口点方法名为 Execute(),并属性化为 WorkflowTestCase。您可以更改方法的名称,只要将其归为 WorkflowTestCase
您只能在文件中使用一种继承 Coded Workflow 类的 Execute()方法([TestCase][Workflow])。

在此方法中,您可以添加输入和/或输出参数,这些参数相当于低代码自动化中的 InOutIn/Out 参数。浏览“使用输入和输出参数”教程,了解如何在编码自动化中使用参数。

此入口点方法可用作运行自动化的起点。由于其 Execute() 方法,这使编码工作流和测试用例易于识别为入口点。


项目兼容性

您只能在 Windows跨平台项目中使用编码自动化。

服务

要设计编码自动化,您可以使用服务,这相当于活动包。例如,System.Activities 不仅是低代码自动化中的活动包,也是编码自动化中的服务。与活动包中的活动类似,服务也具有可用于创建编码自动化的 API。

可在编码自动化内部使用的服务如下:

服务版本
System.Activities23.10 及更高版本
UiAutomation.Activities23.10 及更高版本
Testing.Activities23.10 及更高版本
MobileAutomation.Activities23.12 预览版及更高版本
Mail.Activities1.22.1 及更高版本
Excel.Activities2.23.2 预览版及更高版本

要在编码自动化中使用活动包,请执行以下步骤:

  1. 下载活动包,相当于一项服务,类似于在低代码自动化中下载的活动。这为您提供了可在代码中使用的 API 集合。
  2. 使用以下格式调用服务中的 API:service.API。例如,如果要使用 GetAsset API,则可以将其调用为 system.GetAsset
  3. API 具有参数,而不是属性。调用 API 后,您可以通过在括号之间提供值来配置其参数。例如,如果您连接到的 Orchestrator 实例中有一个名为 Email Address 的资产,则可以将此资产的名称作为 String 传递给 API:system.GetAsset("Email Address")
提示:在编码自动化中,您还可以使用可从 nuget.org 订阅源下载的任何 .NET 类库。
  • 使用编码自动化
  • 收益
  • 结构
  • 命名空间
  • 基类
  • 入口点
  • 服务

此页面有帮助吗?

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