studio
2024.10
false
- Release Notes
- 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
- Object Repository
- The ScreenScrapeJavaSupport Tool
- 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
- About troubleshooting
- Assembly compilation errors
- Microsoft App-V support and limitations
- Internet Explorer X64 troubleshooting
- Microsoft Office issues
- Identifying UI elements in PDF with Accessibility options
- Repairing Active Accessibility support
- Validation of large Windows-legacy projects takes longer than expected

Studio User Guide
Last updated Oct 23, 2025
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 theRandomworkflow, invokes theIncrementXAML workflow on this value (using theworkflowsobject), 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 twointtype input parameters namedminandmax, 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
Randomclass, using thenewkeyword andRandom()constructor.- Use the
Next()method from theRandomclass instance to generate a random number within the range betweenminandmax. - Assign this generated random number to a new variable, named
randomValue.
- Use the
- Return the
randomValuevariable. Returning this variable back to theExecutemethod allows you to access therandomValuevariable in any coded workflow inside your project that runs using theExecutemethod.
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;
}
}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, namedresultandinput.. Set the direction of theresultargument as Out, and the direction of theinputargument as In. - Add an Assign activity.
- In the Save to field, input the
resultvariable. - In the Value to save field, add the following expression, that
increments the
inputvalue:input + 1.
- In the Save to field, input the
- From the File group, create a new coded workflow.
- Change the
Executeclass to take therandomvariable created at the Create theRandomcoded workflow step in this tutorial, and change the class to return anintargument. - Invoke the
Incrementlow-code workflow using theworkflowsobject, pass therandomInt32 variable to it, and store the output to a variable namedout_arg. - Log the
out_argvariable in the output panel. - Return the
out_argvariable back to theExecutemethod.
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;
}
}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;
}
}