UiPath Documentation
studio
2021.10
false
  • Release Notes
    • 2021.10.3
    • 2021.10.4
    • 2021.10.5
    • 2021.10.6
    • 2021.10.7
    • 2021.10.8
    • 2021.10.9
    • 2021.10.10
  • Getting Started
    • Introduction
    • About Backward and Forward Compatibility
    • The User Interface
    • Keyboard Shortcuts
    • Signing in to Your Account
    • Configuring Studio Settings
    • Project Templates
      • Orchestration Process
      • Background Process
      • Robotic Enterprise Framework
      • Transactional Process
      • Trigger Based Attended Automation
    • Creating a Basic Process
    • Creating a Basic Library
    • Tutorials
  • Setup and Configuration
    • Hardware and Software Requirements
    • Install Studio
      • Deployment guidelines
      • Services Studio Connects To
      • Common Installation Errors
      • Modify or Uninstall Studio
    • Activate Studio
      • About Licensing
    • Update Studio
    • Command Line Parameters
    • Supported Applications and Technologies
    • Enabling Gmail for Email Activities
    • Opting Out of Telemetry
  • Automation Projects
    • About Automation Projects
    • About Publishing Automation Projects
    • About Libraries
      • Loading Web Services in Libraries
      • Activities Generated from Web Services
    • Managing activity packages
    • Configuring Activity Project Settings
    • Signing Packages
    • Governance
    • Importing Entities
    • Modern Design Experience
    • Linking a Project to an Idea in Automation Hub
  • Dependencies
    • About Dependencies
    • Managing Dependencies
    • Project Dependencies Mass Update
      • Mass Update Command Line Parameters
    • Missing or Invalid Activities
  • Types of Workflows
    • Sequences
    • Flowcharts
    • State Machines
    • Global Exception Handler
  • File Comparison
    • About File Comparison
    • Comparing Files
  • Automation Best Practices
    • Workflow Design
    • UI Automation
    • Project Organization
    • Automation Lifecycle
  • Source Control Integration
    • About Version Control
    • Managing Projects With GIT
    • Managing Projects With TFS
    • Managing Projects With SVN
    • Workflow Diff
  • Debugging
    • About Debugging
      • Test Activities
      • Debugging Actions
      • The Locals Panel
      • The Call Stack Panel
      • The Breakpoints Panel
      • The Watch Panel
      • The Immediate Panel
      • Remote Debugging
  • The Diagnostic Tool
    • About The Diagnostic Tool
  • Workflow Analyzer
    • About Workflow Analyzer
    • Naming Rules
      • 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
    • Design Best Practices
      • 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
    • Project Anatomy Rules
      • ST-ANA-003 - Project Workflow Count
      • ST-ANA-005 - Check Project.json Exists
      • ST-ANA-006 - Main Workflow Exists
      • ST-ANA-009 - File Activities Stats
    • Maintainability and Readability Rules
      • ST-MRD-002 - Activity Name Defaults
      • ST-MRD-004 - Unreachable Activities
      • ST-MRD-005 - Redundant Sequences
      • ST-MRD-007 - Nested If Clauses
      • ST-MRD-008 - Empty Sequence
      • ST-MRD-009 - Deeply Nested Activities
      • ST-MRD-011 - Write Line Usage
      • ST-MRD-017 - Incomplete If
    • Usage Rules
      • 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
    • Performance and Reusability Rules
      • ST-PRR-004 - Hardcoded Delay Activity
    • Reliability Rules
      • ST-REL-006 - Infinite Loop
    • Security Rules
      • ST-SEC-007 - SecureString Argument Usage
      • ST-SEC-008 - SecureString Variable Usage
      • ST-SEC-009 - SecureString Misusage
  • Variables
    • Managing Variables
    • The Variables Panel
    • Types of Variables
      • Text Variables
        • Example of Using a Text Variable
      • True or False Variables
        • Example of Using a True or False Variable
      • Number Variables
        • Example of Using a Number Variable
      • Array Variables
        • Example of Using an Array Variable
      • Date and Time Variables
        • Example of Using a Date and Time Variable
      • Data Table Variables
        • Example of Using DataTable Variables
    • UiPath Proprietary Variables
  • Arguments
    • Managing Arguments
    • The Arguments Panel
    • Using Arguments
  • Imported Namespaces
    • About Imported Namespaces
    • Managing Namespaces
  • Control Flow
    • About Control Flow
    • Control Flow Activities
      • The Assign Activity
      • The Delay Activity
        • Example of Using the Delay Activity
      • The Do While Activity
        • Example of Using a Do While Activity
      • The If Activity
        • Example of Using an If Activity
      • The Switch Activity
        • Example of Using a Switch Activity
      • The While Activity
        • Example of Using a While Activity
      • The For Each Activity
        • Example of Using a For Each Activity
      • The Break Activity
        • Example of Using a Break Activity
  • Object Repository
    • About Object Repository
    • Creating an Object Repository
    • Reusing Objects and UI Libraries
  • Logging
    • Studio Logs
    • Setup Logs
    • OCR Diagnostic Logs
    • Logging Levels
    • Types of Logs
    • Protecting Sensitive Information
  • The ScreenScrapeJavaSupport Tool
    • About the ScreenScrapeJavaSupport Tool
    • Argument Descriptions for the ScreenScrapeJavaSupport Tool
  • Studio testing
    • Introduction
    • Application Testing
      • Execution Templates
    • Testing project templates
      • SAP Testing Project
    • Test Cases
    • Data-Driven Testing
    • RPA Testing
    • Test Case Templates
    • Test Explorer
      • Test Results
      • Activity Coverage
    • Mock Testing
    • API Test Automation
  • Extensions
    • About extensions
    • SetupExtensions Tool
    • UiPath Remote Runtime
    • Extension for Chrome
      • Group Policies
      • Troubleshooting
    • Extension for Edge
      • Group Policies
      • Troubleshooting
    • Extension for Firefox
      • Troubleshooting
    • Extension for Java
      • Troubleshooting
    • Extension for Silverlight
    • Extension for Citrix
      • Troubleshooting
    • Extension for Microsoft Remote Desktop and Apps
      • Troubleshooting
    • Extension for VMware Horizon
    • SAP Solution Manager Plugin
    • Excel Add-in
  • Troubleshooting
    • About Troubleshooting
    • Microsoft App-V Support and Limitations
    • Internet Explorer X64 Troubleshooting
    • Microsoft Office Issues
    • Identifying UI Elements in PDF With Accessibility Options
    • Identifying UI Elements After Windows Updates
      • Solutions
    • JxBrowser Applications Troubleshooting
    • User Events Monitoring
    • Citrix Troubleshooting
UiPath logo, featuring letters U and I in white
OUT OF SUPPORT

Studio User Guide

Last updated Oct 23, 2025

Workflow Design

Layout Diagrams

UiPath offers four diagrams for integrating activities into a working structure when developing a workflow file:

  • Flowchart
  • Sequence
  • State Machine
  • Global Exception Handler

Sequence

Sequences have a simple linear representation that flows from top to bottom and are best suited for simple scenarios when activities follow each other. For example, they are useful in UI automation, when navigation and typing happens one click/keystroke at a time. Because sequences are easy to assemble and understand they are the preferred layout for most workflows.

Flowchart

Flowcharts offer more flexibility for connecting activities and tend to lay out a workflow in a plain two-dimensional manner. Because of its free form and visual appeal, flowcharts are best suited for showcasing decision points within a process. Arrows that can point anywhere closely resemble the unstructured GoTo programming statement and therefore make large workflows prone to chaotic interweaving of activities.

State Machine

State Machine is a rather complex structure that can be seen as a flowchart with conditional arrows, called transitions. It enables a more compact representation of logic and we found it suitable for a standard high-level process diagram of transactional business process templates.

Global Exception Handler

The Exception Handler is designed to be used in both small and large automation projects, for identifying execution errors and most importantly, determining the workflow behavior when such an error occurs. If an execution error is encountered during debugging, the Global Exception Handler may be set to step in and allow you to check the workflow's behavior in accordance to the options previously set in the Exception Handler.

Choices

Decisions need to be implemented in a workflow to enable the Robot to react differently in various conditions in data processing and application interaction. Picking the most appropriate representation of a condition and its subsequent branches has a big impact on the visual structure and readability of a workflow.

If Activity

The If activity splits a sequence vertically and is perfect for short balanced linear branches. Challenges come when more conditions need to be chained in an If… Else If manner, especially when branches exceed available screen size in either width or height. As a general guideline, nested If statements are to be avoided to keep the workflow simple/linear.



Flow Decision

Flowchart layouts are good for showcasing important business logic and related conditions like nested If statements or If… Else If constructs. There are situations where a Flowchart may look good even inside a Sequence.



If Operator

The VB If operator is very useful for minor local conditions or data computing, and it can sometimes reduce a whole block to a single activity.



Switch Activity

The Switch activity may be sometimes used in convergence with the If operator to streamline and compact an If… Else If cascade with distinct conditions and activities per branch.



Flow Switch

The Flow Switch activity selects the next node depending on the value of an expression; Flow Switch can be seen as the equivalent of the procedural Switch activity in flowcharts. It can match more than 12 cases by starting more connections from the same switch node.



Data

Data comes in two flavors when it comes to visibility and life cycle: arguments and variables. While the purpose of arguments is to pass data from one workflow to another, variables are bound to a container inside a single workflow file and can only be used locally.

Variable Scope

Unlike arguments, which are available everywhere in a workflow file, variables are only visible inside the container where they are defined, called scope.

Variables should be kept in the innermost scope to reduce the clutter in the Variables panel and to show only, in autocomplete, what is relevant at a particular point in the workflow.

Note: If two variables with the same name exist, although we highly recommend against it, the one defined in the most inner scope has priority.

Arguments

Keep in mind that when invoking workflows with the Isolated option (which starts running the workflow in a separate system process, only serializable types can be used as arguments to pass data from a process to another. For example, SecureString, Browser and Terminal Connection objects cannot safely cross the inter-process border.

Default Values

Variables and input arguments have the option to be initialized with some default static values. This comes in very handy when testing workflows individually, without requiring real input data from calling workflows or other external sources.



Naming Conventions

Meaningful names should be assigned to workflow files, activities, arguments, and variables in order to accurately describe their usage throughout the project.

Projects should have meaningful descriptions, as they are also displayed in the Orchestrator user interface and might help in multi-user environments.

To improve readability, variable and argument names should also align to a naming convention:

  • Snake case: First1_Name2, first_name2,
  • Upper or lower Camel case: FirstName, lastName,
  • Pascal case: First1Name2, First1Name,
  • Kebab case: First-Name, First-Name1.
Argument names should have a prefix stating the argument type, such as in_DefaultTimeout, in_FileName, out_TextResult, io_RetryNumber.

Activity names should concisely reflect the action taken, such as Click the Save Button. Keep the part of the title that describes the action (Click, Type Into, Element Exists, etc.).

Except for Main, all workflow names should contain the verb describing what the workflow does, such as GetTransactionData, ProcessTransaction, TakeScreenshot.

Comments and Annotation

The Comment activity and Annotations should be used to describe in more detail a technique or the particularities of a certain interaction or application behavior. Keep in mind that other people may, at some point, come across a robotic project and you can try to ease their understanding of the process.



Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated