- 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-021 - Hardcoded Timeout
- 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
- ST-USG-005 - Hardcoded Activity Arguments
- ST-USG-009 - Unused Variables
- ST-USG-010 - Unused Dependencies
- ST-USG-014 - Package Restrictions
- ST-USG-020 - Minimum Log Messages
- ST-USG-024 - Unused Saved for Later
- ST-USG-025 - Saved Value Misuse
- ST-USG-026 - Activity Restrictions
- ST-USG-027 - Required Packages
- ST-USG-028 - Restrict Invoke File Templates
- ST-USG-032 - Required Tags
- ST-USG-034 - Automation Hub URL
- Variables
- Arguments
- Imported Namespaces
- Coded automations
- Introduction
- Registering custom services
- Before and After contexts
- Invoking Code Source File
- Using Coded automation in Low-Code workflow
- Integrating Low-Code workflow in Coded automation
- Invoking Coded automation in another Coded automation
- Integrating OpenAI with Coded Workflows
- Apply for a loan with UiBank
- Queue generation with coded workflows and Orchestrator APIs
- Using imported library projects in coded automations
- Trigger-based Attended Automation
- Control Flow
- Object Repository
- Logging
- The ScreenScrapeJavaSupport Tool
- Studio testing
- Extensions
- About extensions
- SetupExtensions tool
- UiPathRemoteRuntime.exe is not running in the remote session
- UiPath Remote Runtime blocks Citrix session from being closed
- UiPath Remote Runtime causes memory leak
- UiPath.UIAutomation.Activities package and UiPath Remote Runtime versions mismatch
- The required UiPath extension is not installed on the remote machine
- Screen resolution settings
- Group Policies
- Cannot communicate with the browser
- Chrome extension is removed automatically
- The extension may have been corrupted
- Check if the extension for Chrome is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and Incognito mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Chrome
- Chrome Extension on Mac
- Group Policies
- Cannot communicate with the browser
- Edge extension is removed automatically
- The extension may have been corrupted
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Edge
- Extension for VMware Horizon
- SAP Solution Manager plugin
- Excel Add-in
- Troubleshooting

Studio user guide
Integrating Low-Code workflow in Coded automation
In this tutorial, you can learn how to incorporate a low-code workflow inside a coded automation. This example is similar to the Using Coded automation in Low-Code workflow tutorial, but the other way around. The tutorial shows how to invoke the ResetAssetValue.xaml low-code workflow into the CodedAutomationUsingWorkflow.cs coded automation.
The ResetAssetValue.xaml workflow performs the following steps:
-
Retrieves the current value of a specific asset from Orchestrator.
-
Compares the retrieved asset value with the input value provided as an argument.
-
If the previous asset value does not match the input value, it updates the asset value in Orchestrator.
-
Logs messages that indicate the status of the asset value, whether it was updated or remained unchanged.
-
Create a low-code workflow. For this example, name it
ResetAssetValue.Note:Leave the value of all variables and arguments you create empty. These variables and arguments will be populated with data when you invoke the low-code workflow within a coded automation. You will pass the required values for these arguments when you invoke the workflow.
-
Add a Get Asset activity, and save the name of the asset in a variable named
assetName. -
Create arguments for the following values:
assetValue- the In/Out argument that you use to retrieve and update the value of the asset.assetName- the In argument that you use to input the name of the asset.assetValueWasChanged- the Out argument that you use to print in the console if the asset value remained the same or was changed.
-
Create a variable to pass the previous value of the asset:
previousAssetValue. -
Add an If activity to check if the previous asset value has changed. Set the Condition as
previousAssetValue.Equals(assetValue). -
In the Else body, add a Set Asset activity, to update the asset in Orchestrator with the
assetValuethat is different from thepreviousAssetValue. -
Add an Assign activity and update the previous asset value with the new one.
-
assetValue = previousAssetValue
7. Add another Assign activity to set the variable that lets you know if the asset value has changed to True.
assetValueWasChanged = True
2. Create a new coded workflow. For this example, name it CodedAutomationUsingWorkflow.
- Use the
RunWorkflowmethod to invoke theResetAssetValue.xamlworkflow. - Provide the necessary arguments as a
Dictionary<string, object>to specify theassetNameandassetValue.
For this example, we set MyAsset as the assetName and "hello world" as the assetValue.
3. Store the result of the RunWorkflow method in a variable named result.
```
var result = RunWorkflow("BusinessProcess\\ResetAssetValue.xaml", new Dictionary<string, object>()
{
{"assetName", "MyAsset"},
{"assetValue", "hello world"}
});
```
```
var result = RunWorkflow("BusinessProcess\\ResetAssetValue.xaml", new Dictionary<string, object>()
{
{"assetName", "MyAsset"},
{"assetValue", "hello world"}
});
```
4. Check if the assetValueWasChanged property in the dictionary is true or false.
1. If it's true, log a message that indicates the asset `MyAsset` was reset and include the previous value it had.
2. If it is false, log a message specifying that no reset was required on the asset `MyAsset` because it had the expected value.
```
if ((bool)result["assetValueWasChanged"])
{
Log("Reset asset MyAsset, but it had a different value, previous value was " + result["assetValue"]);
}
else
{
Log("No reset was required on asset MyAsset, which had the expected value.");
}
```
1. If it's true, log a message that indicates the asset `MyAsset` was reset and include the previous value it had.
2. If it is false, log a message specifying that no reset was required on the asset `MyAsset` because it had the expected value.
```
if ((bool)result["assetValueWasChanged"])
{
Log("Reset asset MyAsset, but it had a different value, previous value was " + result["assetValue"]);
}
else
{
Log("No reset was required on asset MyAsset, which had the expected value.");
}
```