Studio
2023.4
False
横幅背景图像
Studio 用户指南
上次更新日期 2024年4月3日

在库中加载网页服务

Studio 可以通过“服务编辑器”窗口直接从 SOAP 或 REST 网页服务或 Postman 集合生成活动。

SOAP 和 REST 网页服务

该窗口可用于自动加载给定网页服务(REST 或 SOAP)中的所有方法或端点,只要所提供的链接包含服务定义(Swagger 或 WSDL)即可。

加载后,您可以选择通过哪些端点或方法自动创建活动。所有选定的项目随即会在“活动”面板中显示,位于您在“服务编辑器”窗口提供的“命名空间”下。

之后便可将这些库打包为 .nupkg 文件,并将其发布到 Orchestrator 或自定义位置。如此一来,您便可与其他合作开发者轻松共享新定义的活动。
注意:Windows 项目和跨平台项目不支持 SOAP Web 服务。只能在“Windows - 旧版”项目中使用此集成。

添加服务

按照下方的步骤,从网页服务生成活动:

  1. 按照“关于库”页面中的说明,在 Studio 中创建一个库。
  2. 在“设计”选项卡中,单击“新建服务”或右键单击“项目”面板中的“服务”,然后单击“新建服务”。系统将显示“服务编辑器”窗口。


  3. 向 Swagger 或 WSDL 资源添加文件路径或链接,然后单击“加载”。网页服务中定义的所有端点现已加载到“服务编辑器”窗口中。


  4. 在“搜索操作”搜索框中键入您需要的方法或操作,再查看下方的结果。对于 Swagger,各个端点中的方法将使用不同的颜色来标记。使用“取消全选”复选框来取消选择所有端点,然后选择您要加载的端点。命名空间会自动生成,键入新名称即可更改。
  5. 单击“保存”。该服务现已集成到项目树中。


  6. 若要在“设计器”面板中使用生成的活动,请前往“活动”面板,在“可用”活动部分中根据服务命名空间搜索,然后将各个活动拖入面板中。
    备注:
    对于 SOAP 服务,建议仅加载 SOAP 客户端,而不是 HttpGetHttpPost 客户端。

    对于 Swagger 服务,当服务无法反序列化服务器的响应时,建议检查 Swagger 方案并在模型定义中搜索所需的属性。

若要编辑服务,只需在“项目”面板的“服务”下右击所需的服务,再选择“编辑服务”

请注意,如果您的项目受到来源控件的管理,则只需签出库的 project.json 文件即可为已加载 SOAP 或 REST 网页服务的 .xaml 文件启用“编辑服务”选项。
添加和编辑服务后,含有库定义的 project.json 文件以及服务文档中也会有相应体现。project.json 文件中会添加 webServices 节点,各项服务通过以下元素来标识:


参数

描述

namespace

服务编辑器”窗口中提供的服务名称。

serviceDocument

含有 SOAP 或 Swagger 服务元数据的 .json 文件的路径。该文件在修复服务时使用,并且应作为项目的一部分进行版本控制。

webDocumentUri

Swagger 或 SOAP 资源的文件路径或链接(在“服务编辑器”窗口中创建服务时提供)。

uniqueReference

服务版本控制需要的参考。

修复服务

dll files generated from SOAP or REST web services are not pushed to source control repositories. Therefore, when checking out libraries that contain services, the projects have unresolved activities in the Designer panel.
若要修复这些活动并重新生成服务 .dll 文件,可在“项目”面板中右击相应服务节点,再从上下文菜单中选择“修复服务”。


SOAP 或 REST 服务元数据及其他信息存储在 Studio 中加载的各项服务的 .json 文件中。如果加载的服务缺少相关的 .json 文件,您可以通过“服务”节点的“修复服务”上下文菜单选项,利用创建服务时提供的网页文档描述符的链接生成所缺失的 .json 文件。因此,不再应用服务最初生成时可能应用的筛选器,并且导入通过前述路径或链接提供的所有资源。
使用 UiPath.Studio.CommandLine.exe 命令行用户界面(见“批量更新命令行参数”页面中的详细说明)发布库时不将网页服务纳入考虑范围。
注意:从“SOAP”或“REST”服务生成的活动无法在 Studio 中本地化。

要在一个循环中多次调用从网页服务生成的活动,请从主库文件创建单独的工作流,然后在其中调用服务方法。在主工作流中,使用“For Each”活动中的“调用工作流文件”活动,并调用先前创建的工作流。

有关从网页服务生成的活动的更多详细信息,请参阅从网页服务生成的活动

导入命名空间

由于使用导入式 Swagger 服务,Studio v2020.4 在库方面发生了显著变化。在 Swagger 服务中,Studio 解读.json 文件的方式已经改变。因此,当且仅当从“编辑服务”窗口编辑现有服务时,才会产生向后兼容性问题。

在下方例子中,我们将使用 Petstore 演示示例网页服务说明相关变化。

在 Studio v2020.4 之前的版本中将服务添加到库项目中后,可以使用“浏览类型…”上下文菜单在 SwaggerPetstore 程序集名称下可以找到下列命名空间:



进一步探索 UiPath.WebClient._ClientNamespace,您将可以找到以下类型:


因此,如果在 Studio 库的 xaml 文件中使用了 AddPet 活动,则该活动将成为 UiPath.WebClient._ClientNamespace 的一部分。_ClientAddPetRequest 类型用于生成请求,如以下摘录所示:
xmlns:uw_="clr-namespace:UiPath.WebClient.<em>ClientNamespace;assembly=SwaggerPetstore" 
...
<uw</em>:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <uw_:AddPetActivity.Request>
        <uw_:<em>ClientAddPetRequest Body="{x:Null}" />
      </uw</em>:AddPetActivity.Request>
    </uw_:AddPetActivity>
  </Sequence>
</Activity>xmlns:uw_="clr-namespace:UiPath.WebClient.<em>ClientNamespace;assembly=SwaggerPetstore" 
...
<uw</em>:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <uw_:AddPetActivity.Request>
        <uw_:<em>ClientAddPetRequest Body="{x:Null}" />
      </uw</em>:AddPetActivity.Request>
    </uw_:AddPetActivity>
  </Sequence>
</Activity>

使用 Studio v2020.4 导入相同的网页服务时,可以找到以下命名空间:



展开 UiPath.WebClient.PetClientNamespace 时会发现以下类型:


因此,如果在用 v2020.4 创建的 Studio 库的 xaml 文件中使用了 AddPet 活动则该活动属于 UiPath.WebClient.PetClientNamespace 的一部分,并且 PetClientAddPetRequest 类型用于生成请求。如果使用 v2020.4 之前的版本创建库,这些命名空间和类型将会有所不同。

以下是使用 v2020.4 创建此类库时的摘录:

xmlns:uwp="clr-namespace:UiPath.WebClient.PetClientNamespace;assembly=SwaggerPetstore"
...
<uwp:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <a href="uwp:AddPetActivity.Request">uwp:AddPetActivity.Request</a>
        <uwp:PetClientAddPetRequest Body="{x:Null}" />
      </uwp:AddPetActivity.Request>
    </uwp:AddPetActivity>
  </Sequence>
</Activity>xmlns:uwp="clr-namespace:UiPath.WebClient.PetClientNamespace;assembly=SwaggerPetstore"
...
<uwp:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <a href="uwp:AddPetActivity.Request">uwp:AddPetActivity.Request</a>
        <uwp:PetClientAddPetRequest Body="{x:Null}" />
      </uwp:AddPetActivity.Request>
    </uwp:AddPetActivity>
  </Sequence>
</Activity>

Postman 集合

Postman 应用程序可用于创建 API 定义并将其按组分配至集合中,从而将您的请求整理并和联系在一起。Postman 支持在 API 请求之间传递数据的脚本。查看 Postman 在线文档,了解有关创建集合的信息。

如果您已有 Postman 集合,则可以将其请求加载到 Studio 中并生成活动。集合的维护是在 Postman 中完成,所有更改也会在您的工作流中进行。

Studio 通过 API 密钥接收对 Postman 集合的访问权限,该 API 密钥必须添加到“服务编辑器”窗口的“文件”或“链接”字段中。API 密钥是从“Postman 配置文件设置”>“API 密钥”页面生成的帐户范围内的密钥,而不是通过共享集合生成的 API 密钥。因此,对请求的修改只能在 Postman 中完成,而不能在 Studio 中完成。

Studio 会加载集合中定义的所有请求,并且无法单独执行请求。在 Studio 中编辑和修复集合的方式与 SOAP 或 REST 网页服务相同。

Postman 集合先决条件

建议在安装 Newman 后重新启动计算机。

Postman 集合示例

以下示例使用 Postman 集合来get特定货币的值,并将其显示在 Studio 的“输出”面板中。

在此示例中,我们编写了一份测试脚本来迭代接收到的数据。我们直接在脚本中公开了全局变量,但我们也可以通过 Postman 中的“设置全局变量”代码片段来显示该变量,详情请阅读此处提供的信息。



In 参数将货币 EUR 值传递给了 Out 参数,其中 In 参数在库中的“属性”面板 >“输入”>“集合”中可见。在同一面板的“输出”部分中,则可以看到 Out 参数。


活动中的输出参数映射到变量后,其值将写入“输出”面板。

可以使用“IF 条件”活动来验证变量的返回值。在此示例中,我们确认变量返回了值,然后将值写入到“输出”面板。

  • SOAP 和 REST 网页服务
  • 添加服务
  • 导入命名空间
  • Postman 集合
  • Postman 集合先决条件
  • Postman 集合示例

此页面是否有帮助?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath 白色徽标
信任与安全
© 2005-2024 UiPath. All rights reserved.