- Release Notes
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- The Diagnostic Tool
- Workflow Analyzer
- About Workflow Analyzer
- ST-NMG-001 - Variables Naming Convention
- ST-NMG-002 - Arguments Naming Convention
- ST-NMG-004 - Display Name Duplication
- ST-NMG-005 - Variable Overrides Variable
- ST-NMG-006 - Variable Overrides Argument
- ST-NMG-008 - Variable Length Exceeded
- ST-NMG-009 - Prefix Datatable Variables
- ST-NMG-011 - Prefix Datatable Arguments
- ST-NMG-012 - Argument Default Values
- ST-NMG-016 - Argument Length Exceeded
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- ST-DBP-026 - Delay Activity Usage
- ST-DBP-027 - Persistence Best Practice
- ST-DBP-028 - Arguments Serialization Prerequisite
- Variables
- Arguments
- Imported Namespaces
- Recording
- UI Elements
- Control Flow
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Automating Citrix Technologies
- RDP Automation
- SAP Automation
- VMware Horizon Automation
- Logging
- The ScaleCoordinates Migration Tool
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- StudioPro
- Extensions
- Troubleshooting
Studio User Guide
Loading Web Services in Libraries
Studio can generate activities directly from SOAP or REST web services, or Postman collections through the Service Editor window.
The window enables you to automatically load all the methods or endpoints in a given web service, be it REST or SOAP, as long as the provided link includes the services' definition - Swagger or WSDL.
Once loaded you select from which endpoints or methods to automatically create activities. All selected items are displayed in the Activities panel, under the Namespace you provided in the Service Editor window.
.nupkg
file and publish it to Orchestrator or to a custom location. As a result, you can easily share your newly-defined activity
with other developers that you work with.
Follow the steps below to generate activities from web services:
To edit a service simply right-click the service in the Project panel, under Services and select Edit Service.
project.json
file enables the Edit Services option for .xaml
files with loaded SOAP or REST web services.
project.json
file containing the definition of the library, and in the service document. A webServices
node is added in the project.json
file, and each service is identified by the following elements:
Parameter |
Description |
---|---|
|
The name of the service provided in the Service Editor window. |
|
The path to the
.json file containing metadata for the SOAP or Swagger service. The file is used when the service is repaired, and should be versioned
as part of the project.
|
|
The file path or link to the Swagger or SOAP resource (provided when the service is created in the Service Editor window). |
|
A reference needed for versioning the service. |
Repairing Services
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
file right-click on the service node in the Project panel and select Repair Service from the context menu.
.json
file for each service loaded in Studio. If a loaded service is missing its associated .json
file, the Repair Services context menu option for the Services node enables you to generate the missing .json
files using the link to the web document descriptor that was provided when that service was created. As a consequence, filters
that might have been applied when the service was first generated are not applied anymore and all the resources provided by
the aforementioned path or link are imported.
UiPath.Studio.CommandLine.exe
command-line user interface detailed in the Mass Update Command Line Parameters page does not take web services into consideration.
To call activities generated from web services multiple times inside a loop, create a separate workflow from the main library file, and invoke the service method there. In the main workflow, use the Invoke Workflow File activity inside a For Each activity, and invoke the previously created workflow.
For more details about generated activities from web services, check out this page.
.json
files from Swagger services has changed, thus generating backward compatibility issues if and only if an existing service
is edited from the Edit Service window.
In the following example, we've illustrated the change using the Petstore demo web service.
Prior to Studio v2020.4, after adding the service to a library project, and using “Browse for Types…” context menu, the following namespaces are found under SwaggerPetstore assembly name:
UiPath.WebClient._ClientNamespace
the following types can be found:
xaml
file from a Studio library, it would have been part of the UiPath.WebClient._ClientNamespace
. The _ClientAddPetRequest
type was used for generating a request, like in the excerpt below:
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>
Using Studio v2020.4, the following namespace can be found when importing the same web service:
UiPath.WebClient.PetClientNamespace
:
xaml
file from a Studio library created with v2020.4, it is part of the UiPath.WebClient.PetClientNamespace
, and the PetClientAddPetRequest
type is used for generating a request. These are different namespaces and types as for libraries created with versions prior
to v2020.4.
Below is an excerpt of such a library created with 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>
The Postman application can be used for creating and grouping API definitions into collections, thus organizing and chaining your requests together. Postman supports scripts for passing data between API requests. Check out the Postman online documentation to learn about creating a collection.
If you already have a Postman collection, you can load its requests in Studio, and generate an activity. Maintenance of the collection is done in Postman, and any changes are exerted in your workflow as well.
Studio receives access to a Postman collection through an API key, which must be added to the Service Editor window, in the File or Link field. The API key is an account-wide key generated from the Postman profile settings > API keys page and not an API key generated by sharing a collection. Therefore, modifications to requests are done only in Postman and not in Studio as well.
Studio loads all requests defined in the collection, and requests cannot be executed individually. Editing and repairing a collection in Studio is done in the same way as for SOAP or REST web services.
- Nodejs and NodeJS CLI, version 6
- Newman version 4.5.5
It is recommended to restart your machine after installing Newman.
get
the value of a certain currency and displays it in Studio's Output panel.
In this example, we wrote a test scrip to iterate through the received data. We declared a global variable directly in the script, but this can also be done with the Set a global variable snippet in Postman, read more about this here.
EUR
value to an Out argument, visible in the library, in the Properties panel > Input > Collection. The Out argument is visible in the same panel, in the Output section.
Out arguments from the activities are mapped to a variable and its value is written to the Output panel.
You can use an If activity to validate the variable's returned value. In this example, we validated that the value is returned, and then wrote it to the Output panel.