Studio
2023.10
false
Studio 用户指南
Last updated 2024年7月15日

在库中加载网页服务

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

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

修复服务

从 SOAP 或 REST 网页服务生成的 dll 文件不会推送到来源控件存储库。因此,在签出含有服务的库时,其项目会在“设计器”面板中包含未解决的活动。
若要修复这些活动并重新生成服务 .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 网页服务相同。
Note: Access to the collection is only supported through the API key. Loading a JSON schema file may cause unexpected errors.

Postman 集合先决条件

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

Postman 集合示例

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

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



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


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

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

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

此页面有帮助吗?

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