studio
2024.10
true
- 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
- 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
- Test Suite - Studio
- 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
Using low-code workflow in coded automation
Studio User Guide
Last updated Dec 19, 2024
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.
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
, 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.
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;
}
}