Studio
2024.10
False
Studio 用户指南
Last updated 2024年6月28日

简介

编码自动化允许您使用代码而不是拖放活动来创建自动化,从而允许协作处理复杂的项目。在编码工作流和测试用例中,您可以使用 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

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


CodedWorkflowBase

CodedWorkflowBase 类包含编码自动化继承的内置功能。此类包含用于管理工作流实例、运行时访问、处理服务容器以及配置环境上下文的方法和特定属性。CodedWorkflowBase 类还提供了另一种单独的日志记录方法,您可以自定义该方法。
注意:在“代码编辑器设置”中,选择“启用源代码反编译” 以查看 CodedWorkflowBase 类。
请查看下表中的 CodedWorkflowBase 方法:
方法描述
ICodedWorkflowServices services
Note: We recommend you to use the the Log, BuildClient, and RunWorkflow methods through the services class and their corresponding services, instead of using them as standalone, readily available methods.
Provides access to the available services for coded workflows, such as:
  • OutputLoggerService: Allows you to output logs, using the Log method.
  • OrchestratorClientService (the BuildClient method): Allows you to enable the interaction with Orchestrator, through the BuildClient method.
  • WorkflowInvocationService: Allows you to invoke other workflows, using the RunWorkflow method.
  • Container: The container where all the services are stored. Allows you to manage resources for coded workflows, handling automatic import of namespaces and types, using the AutoImportedNamespaces and AutoImportedTypes methods. Additionally, it provides an instance of a specific service, using the Resolve method.
serviceContainer(ICodedWorkflowServiceContainer)
Note: This has been replaced by ICodedWorkflowServices services . If you continue to use this syntax, you get a warning pointing you to use the new services.Container syntax.
提供对特定于当前编码工作流的依赖项注入容器的访问权限。此容器称为服务容器,可用于检索已在其中注册的服务实例。
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 白色徽标
信任与安全
© 2005-2024 UiPath. All rights reserved.