studio
latest
false
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- Control Flow
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- Logging
- 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-NMG-017 - Class name matches default namespace
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DPB-010 - Multiple instances of [Workflow] or [Test Case]
- 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-017 - Invalid parameter modifier
- 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
- Generating code
- Generating coded test case from manual test cases
- Trigger-based Attended Automation
- Recording
- UI Elements
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Citrix Technologies Automation
- RDP Automation
- VMware Horizon Automation
- Salesforce Automation
- SAP Automation
- macOS UI Automation
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- 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 Safari
- Extension for VMware Horizon
- Extension for Amazon WorkSpaces
- SAP Solution Manager plugin
- Excel Add-in
- Studio testing
- Troubleshooting
Using low-code workflow in coded automation

Studio User Guide
Last updated Mar 24, 2025
Using low-code workflow in coded automation
This part of the tutorial shows you how to invoke a low-code workflow inside a coded automation.
The scenario involves:
- Creating a coded workflow (CS file), named
Random
, that generates a random value within a specific range determined by minimum and maximum integer values you provide. - Creating a low-code XAML workflow, named
Increment
, that adds one to any given result, thus incrementing the received value. - Creating another coded workflow (a CS file), named
IncrementProxy
, that takes the randomly generated value from theRandom
workflow, invokes theIncrement
XAML workflow on this value (using theworkflows
object), and then returns the incremented result to the calling environment.
- From the File group, create a new coded workflow.
- Change the
Execute()
public class to accept twoint
type input parameters namedmin
andmax
, and return anint
. The input parameters represent the boundaries within which a random value is generated, while the return parameter symbolizes the generated random value itself.For example, changepublic void Execute()
topublic int Execute(int min, int max)
. - Create a new object of the
Random
class, using thenew
keyword andRandom()
constructor.- Use the
Next()
method from theRandom
class instance to generate a random number within the range betweenmin
andmax
. - Assign this generated random number to a new variable, named
randomValue
.
- Use the
- Return the
randomValue
variable. Returning this variable back to theExecute
method allows you to access therandomValue
variable in any coded workflow inside your project that runs using theExecute
method.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
public class Random : CodedWorkflow
{
[Workflow]
public int Execute(int min, int max)
{
// Get a random value between min and max
var randomValue = new Random().Next(min, max);
// Return it to the caller
return randomValue;
}
}
- From the File group, create a new Workflow.
- Create two arguments of type
Int32
, namedresult
andinput.
. Set the direction of theresult
argument as Out, and the direction of theinput
argument as In. - Add an Assign activity.
- In the Save to field, input the
result
variable. - In the Value to save field, add the following expression, that
increments the
input
value:input + 1
.
- In the Save to field, input the
- From the File group, create a new coded workflow.
- Change the
Execute
class to take therandom
variable created at the Create theRandom
coded workflow step in this tutorial, and change the class to return anint
argument. - Invoke the
Increment
low-code workflow using theworkflows
object, pass therandom
Int32 variable to it, and store the output to a variable namedout_arg
. - Log the
out_arg
variable in the output panel. - Return the
out_arg
variable back to theExecute
method.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
public class Workflow : CodedWorkflow
{
[Workflow]
public int Execute(int random)
{
// Receive random from the XAML and increment it
var out_arg = workflows.Increment(random);
// Log the result and return it to the caller
Log(out_arg.ToString());
// Return the result to the caller
return out_arg;
}
}