- Overview
- Callout
- Complex Scenarios
- Credentials
- Data Service
- Form
- Release notes
- Project compatibility
- Real Time Forms
- Updating form data
- Running forms using JavaScript
- Customizing Forms Using CSS
- Conditional components
- Adding multiple components on the same row in Columns
- Using the Data Table component
- Get File/Folder path
- Reading cell values from a Data Grid component
- Displaying PDF files
- Displaying images in forms
- Scrolling through Data Grids
- Using Dev Tools with forms
- Calculate form component values
- Managing dates in forms
- Opening hyperlinks inside forms
- Displaying a default tab in forms
- Displaying the full label of a component
- Searching long strings in drop-down lists
- About the pre 23.4 Form experience
- Project Compatibility
- Real Time Forms
- Dynamic Checkboxes
- Conditional Dropdowns
- Displaying a Default Tab
- Displaying Images
- Displaying PDF Files
- Displaying the Full Label
- Dynamic HTML Elements
- Managing Dates
- Searching Long Strings in Drop-downs
- Customizing Forms Using Local CSS Files
- Executing Do Block On Checkbox Change
- Customizing Columns Width
- Updating Form Data
- Resetting Collection Data
- Advanced Logic
- Executing Do Block on Dropdown Option Change
- Reading Cell Values From a Data Grid Component
- Conditional Components
- Scrolling Through Data Grid Components
- Using the Grid Component
- Dev Tools
- Calculated Value
- Dynamic Dropdowns
- Switching Tabs With Button Click
- Opening Hyperlinks Inside Form
- FTP
- IPC
- Persistence
- Release notes
- Project compatibility
- About the Persistence activity package
- Bulk Form Designer
- Start Job And Get Reference
- Wait For Job And Resume
- Add Queue Item And Get Reference
- Wait For Queue Item And Resume
- Wait For Form Task And Resume
- Resume After Delay
- Assign Tasks
- Create External Task
- Wait For External Task And Resume
- Complete Task
- Forward Task
- Get Form Tasks
- Get Task Data
- Get App Tasks
- Add Task Comment
- Update Task Labels
- Create App Task
- Wait For App Task And Resume
- Configure task timer
- Working with App tasks
- Building Your First Form Action
- Advanced Controls for Drop-downs
- Embedding Objects in Form Actions
- Allowing Users to Upload Files to the Storage Bucket
- Adding Advanced Logic Using Java Script
- Setting a Default Tab
- Removing the Delete button from Edit Grid using custom CSS
- Customizing Edit Grid templates
- Using buttons to trigger custom logic
- Using an External Form Layout
- Dynamically expanding form components at runtime
- Aligning the content of a form component from left to right using JSON attributes
- Sample Workflows
- Automation Ops Pipelines
- System
- Release notes
- About the System activity package
- Project compatibility
- Supported character encoding
- RegEx Builder Wizard
- Add Data Column
- Add Data Row
- Add Log Fields
- Add or Subtract from Date
- Add Transaction Item
- Add Queue Item
- Append Item to Collection
- Append Item to List
- Append Line
- Beep
- Break / Exit Loop
- Browse for File
- Browse for Folder
- Build Collection
- Build Data Table
- Bulk Add Queue Items
- Change Case for Text
- Change Type
- Check False
- Check True
- Clear Data Table
- Collection to Data Table
- Comment
- Compress/Zip Files
- Copy File
- Copy Folder
- Combine text
- Comment Out / Disabled Activities
- Continue / Skip Current
- Create File
- Create Folder
- Create List
- Custom Input
- Delete
- Delete File
- Delete Folder
- Delete Storage File
- Delete Queue Items
- Disable Local Trigger
- Do While
- Download file from URL
- Download Storage File
- Enable Local Trigger
- Evaluate Business Rule
- Exists in Collection
- Extract/Unzip Files
- Extract Date and Time from Text
- Extract Text
- File Change Trigger
- File Exists
- Filter Collection
- Filter Data Table
- Folder Exists
- For Each
- For Each File in Folder
- File Change Trigger V3
- Find and Replace
- Find Matching Patterns
- For Each Folder in Folder
- For Each Row in Data Table
- Format Date as Text
- Format Value
- Generate Data Table From Text
- Get Asset
- Get Credential / Get Orchestrator Credential
- Get Current Job Info
- Get Environment Folder
- Get Environment Variable
- Get File Info
- Get Folder Info
- Get Jobs
- Get Processes
- Get Row Item
- Get Transaction Item
- Get Username/Password
- Get Queue Items
- Global Variable Changed Trigger
- Input Dialog
- Invoke Code
- Invoke Com Method
- Invoke Power Shell
- Invoke Process
- Invoke VBScript
- Invoke Workflow File
- Is Text Matching
- Join Data Tables
- Kill Process
- Launch Workflow Interactive
- List Storage Files
- Log Message
- Lookup Data Table
- Manual Trigger
- Merge Collections
- Merge Data Table
- Message Box
- Modify Date
- Modify Text
- Move File
- Move Folder
- Multiple Assign
- New Item Added to Queue
- Notify Global Variable Changed
- Orchestrator HTTP Request
- Output Data Table
- Path Exists
- Postpone Transaction Item
- Process End Trigger
- Process Start Trigger
- Raise Alert
- Read List Item
- Read Text File
- Read Storage Text
- Remove Data Column
- Remove Data Row
- Remove Duplicate Rows
- Remove From Collection
- Remove Log Fields
- Replace Matching Patterns
- Repeat Number of Times
- Repeat Trigger
- Rename File
- Rename Folder
- Report Status
- Reset Timer
- Resume Timer
- Retry Scope
- Return
- Run Parallel Process
- Set Asset
- Set Credential
- Set Environment Variable
- Set Transaction Progress
- Set Transaction Status
- Should Stop
- Split Text
- Sort Data Table
- Run Local Triggers
- Start Timer
- Start Job
- Stop Job
- Stop Local Triggers
- Stop Timer
- Text to Left/Right
- Text to Upper/Lowercase
- Time Trigger
- Trigger Scope
- Timeout Scope
- Update Row Item
- Update List Item
- Upload Storage File
- Wait for Download
- Wait Queue Item
- While
- Workflow Placeholder
- Write Storage Text
- Write Text File
- AddDataRow
- AddQueueItem
- AddTransactionItem
- AppendLine
- BulkAddQueueItems
- ClearDataTable
- CompressZipFiles
- CopyFile
- CreateFile
- CreateFolder
- DeleteFileOrFolder
- DeleteQueueItems
- DeleteStorageFile
- DownloadStorageFile
- ExtractUnzipFiles
- FilterDataTable
- GetAsset
- GetCredential
- GetJobs
- GetQueueItem
- GetQueueItems
- GetResourceForLocalPath
- GetRowItem
- GetTransactionItem
- InvokeProcess
- JoinDataTables
- ListStorageFiles
- LookUpDataTable
- MergeDataTable
- MoveFile
- OrchestratorHTTPRequest
- OutputDataTable
- PathExists
- PostponeTransactionItem
- ReadStorageText
- ReadTextFile
- RemoveDataColumn
- RemoveDuplicateRows
- Replace
- SetAsset
- SetCredential
- SetTransactionProgress
- SetTransactionStatus
- SortDataTable
- StartJob
- StopJob
- UpdateRowItem
- UploadStorageFile
- WaitQueueItem
- WriteStorageText
- WriteTextFile
- Testing
- Release notes
- About the Testing activity package
- Project compatibility
- Project Settings
- Add Test Data Queue Item
- Address
- Attach Document
- Bulk Add Test Data Queue Items
- Create Comparison Rule
- Delete Test Data Queue Items
- Get Test Data Queue Item
- Get Test Data Queue Items
- Given Name
- Last Name
- Random Date
- Random Number
- Random String
- Random Value
- Verify Control Attribute
- Verify Documents Equivalence
- Verify Expression
- Verify Expression With Operator
- Verify Range
- Verify Text Equivalence
- Address
- AddTestDataQueueItem
- AttachDocument
- BulkAddTestDataQueueItems
- DeleteTestDataQueueItems
- GetTestDataQueueItem
- GetTestDataQueueItems
- GivenName
- LastName
- RandomDate
- RandomNumber
- RandomString
- RandomValue
- VerifyAreEqual
- VerifyAreNotEqual
- VerifyContains
- VerifyExpression
- VerifyExpressionWithOperator
- VerifyIsGreater
- VerifyIsGreaterOrEqual
- VerifyIsLess
- VerifyIsLessOrEqual
- VerifyIsRegexMatch
- VerifyRange
- Workflow Events
- Release Notes
- About the Workflow Events activity package
- Project compatibility
- Tracking Progress in Apps in Real Time Using Interim Process Result
- Building a real-time calculator
- Workflow Foundation
Tracking Progress in Apps in Real Time Using Interim Process Result
To better understand how interim process results work, you can build the example described on this page.
By following this procedure, you will build a process in Studio that involves sending intermediate data to UiPath Apps using the Send Interim Result activity. You will build an app that will display a progress bar (using Slider control) in real-time as the tables are populated with data.
For this example we will build the following:
- An automation process
- An app using UiPath Apps
Building the process
The process from this tutorial is used to demonstrate the capabilities of the Interim Process Result activity. The process takes two inputs:
- The number of items to process.
- The number of steps in each item.
The process runs with these inputs and sends the following interim results to the app:
- The current item being executed by the process.
- The current step in the item.
- The progress percentage for the specific item.
- A table populating each step, including a timestamp.
- Open Studio and create a new Process.
- Create the following arguments:
Argument name Direction Argument type Default value in_number_of_steps
In Int32 3 in_number_of_items
In Int32 2 out_progress_percentage
Out Int32 - out_progress_datatable
Out DataTable - out_current_step
Out Int32 - out_current_item
Out Int32 - - Drag a Sequence to the Workflow
Designer.
- Create the following variables:
Variable name Variable type Default value var_item
Int32 1 var_step
Int32 1 var_percentage
Int32 0
- Create the following variables:
- Add a Build Data Table activity inside the
Sequence container.
- Add the
out_progress_datatable
argument in the DataTable field. - Add four columns to the
table:
- Item
Number as
Int32
. - Step
Number as
Int32
. - Time as
DateTime
. - Progress %
as
Int32
.
- Item
Number as
- Add a While activity below the Build Data Table activity and configure it as below:
- Add the
- Add
var_item<=in_number_of_items
in the Condition field.
- Add a While activity in the
Body.
- Add
var_step<=in_number_of_steps
in the Condition field. - Add an Add Data
Row activity in the Body.
- Add
{var_item,var_step,now(),(var_step/in_number_of_steps) * 100}
in the ArrayRow field. - Add
out_progress_datatable
in the DataTable field.
- Add
- Add a Delay
activity below Add Data Row. Add
00:00:02
in the Duration field (2 second). - Add a Send Interim
Result activity below Delay.
- Add
out_progress_datatable
in the Argument name field andout_progress_datatable
in the Argument value field.
- Add
- Add a Multiple
Assign activity below Send Interim Result.
- Add
var_percentage
in the To field andConvert.ToInt32((var_step/in_number_of_steps) * 100)
in the Value field.
- Add
- Add a Send Interim
Result activity below Multiple Assign.
- Add
out_progress_percentage
in the Argument name field andvar_percentage
in the Argument value field.
- Add
- Add a second Send
Interim Result activity before the previous one.
- Add
out_current_step
in the Argument name field andvar_step
in the Argument value field.
- Add
- Add a third Send
Interim Result activity.
- Add
out_current_item
in the Argument name field andvar_item
in the Argument value field.
- Add
- Add a Multiple
Assign activity below the last Send Interim Result
activity.
- Add
var_step
in the To field andvar_step+1
in the Value field.
- Add
- Add a Multiple Assign activity below the last While.
- Add
var_step
in the To field and1
in the Value field. - Add
var_item
in the To field andvar_item+1
in the Value field. - Add
var_percentage
in the To field and1
in the Value field.
- Add
Result
In the end, your workflow should look similar to the one below.
Building the app
The app from this tutorial receives information from the process built before. The app displays the following interim results received from the process:
- The current item being executed by the process.
- The current step in the item.
- The progress percentage for the specific item.
- A table populating each step, including a timestamp.
Before you start building your app, make sure that the automation process from the Building the process section is created and published in your Orchestrator.
- Open your already existing application or start a new one.
- Reference the process from the Prerequisites section.
- Add a container to the page.
- Add a Header control in the container. Add App - Interim Process Results in the Text property. This will be the app title.
- Add a second Header control below the
previous one. Add Input in the Text property. Make sure that the
font size is a bit smaller (for example,
20 px
).- Add a Textbox control inside the container. Add the
in_number_of_items
argument from the previously referenced process in the Value binding property. Add2
in the Default text property andNumber of items (iterations)
in the Label property. - Add a Divider to the right of the Textbox control.
- Add a Textbox control to the right of the Divider. Add the
in_number_of_steps
argument from the previously referenced process in the Value binding property. Add3
in the Default text property andNumber of steps in item
in the Label property. - Add a Button control to the right of the Textbox. Add
Start Process
in the Text property. Configure a Start process rule for the Clicked on event. Configure the rule to start the process referenced at the beginning and mark it as Attended.
- Add a Textbox control inside the container. Add the
- Add a Divider below the container.
- Add a Header below the divider. Add
Interim Process Result in the Text property.
- Add a Container below the header.
- Add two more Container control one inside
each other.
- Add a Label inside the last container. Add
Current item being processed:
in the Text property. - Add a second Label next to the previous one. Add
out_current_item
argument from the referenced process in the Text property.
- Add a Label inside the last container. Add
- Add a Container below the last one.
- Add a Label inside the last container. Add
Current step:
in the Text property. - Add a second Label next to the previous one. Add
out_current_step
argument from the referenced process in the Text property.
- Add a Label inside the last container. Add
- Add a Divider to the right of the last two containers.
- Add a Container to the right of the
Divider and another Container inside the first one.
- Add a Label control and add
Step completion % :
in the Text property. - Add two more Container controls, one inside each other, and a
Label control and a Slider control in the last one.
Add the
out_progress_percentage
argument of the process in the Text property of the Label. Configure the Slider properties: Slide increment to0
and Default value to0
.
- Add a Label control and add
- Add a Divider below.
- Add a Table control below the divider.
- Add the
out_progress_datatable
argument of the process in the Data Source field. - Add an Item Number column and provide
Item Number
from the datatable process as Source. - Add an Step Number column and provide
Step Number
from the datatable process as Source. - Add a Time column and provide
Time
from the datatable process as Source. - Add a Progress % column and provide
Progress %
from the datatable process as Source.
- Add the
Result
In the end, your app should look similar to the one below:
Result
When previewing the app, you can press the Start Process button.
The app will provide the following interim information for the process:
- Current item being processed
- Current step
- Step completion (percentage)
- Table with information regarding the item, step
number, timestamp, and progress.
You can also change the number of items or the steps in an item using the textfields.
To check the complete workflow and app or to have a future reference, download the files from here.