- Global Exceptional Handler ~> The job of RPA Developers becomes easier by using this feature, since the handler only needs to be defined once per each automation project and, unlike the Try Catch blocks, does not need to be attached to each activity. It will execute every time an activity fails to execute.
- Repo Browser ~> It allows you to browse through, open, and save shared automation projects stored in TFS and SVN repositories.
- WebHook ~> Regardless of how complex the app network that was integrated with Orchestrator is, information can be sent to a variety of tools such as dynamic case management, business process management or even customer relationship management programs.
- Development Robot Decoupling feature ~> a “floating” robot can be used between multiple machines by the Administrators in a Development environment without having to associate it with a certain machine. In addition, Standard Attended robots can also be converted to “floating” robots. and only Administrators can access this robot
- VB - > Visual Basic
- To create a variable click on activity dialog box and then create
- Single activity can have multiple input boxes
- Message box is used to print some output to screen, generally used to print the variabes
- Open Browser-> To open a browser by program
- Get visible Text -> used to indicate which text to work on and in output section select the variable name to store the data
- Write Line-> used to write lines
- Open Application -> used to open an application
- Type Into -> used to write something inside the application
- To generate new random values we can use the function
new Random().Next(range)
- To close any application, we can use the
close application
activity. - To get the path of the
Desktop
, useEnvironment.GetFolderPath(Environment.SpecialFolder.Desktop)
- To Apply filter in
Get Outlook Mail Messages
activity, you can use something like@SQL=urn:schemas:httpmail:subject LIKE '%your-mail-subject%'
as string value which is known asDASL Query
- To Apply multiple filters, try
@SQL=(urn:schemas:httpmail:subject LIKE '%your-mail-subject%') AND (urn:schemas:httpmail:sendername = 'sender-email')
as string value - To filter mails based on Received Date
"@SQL=(urn:schemas:httpmail:datereceived< '19/07/2021 00:00AM') AND (urn:schemas:httpmail:datereceived > '12/07/2021 00:00AM')"
- For filter with Gmail Smtp we can apply something like
SUBJECT one-keyword-for-subject
- To Create a
delay
to be variable, you can useTimespan.FromMilliseconds(value in ms)
which will return500
as00:00:00.5000000
- To convert a Dates timezone from one country to another, you can use
TimeZoneInfo.ConvertTime(DateTime.Now,TimeZoneInfo.Local,TimeZoneInfo.FindSystemTimeZoneById("Middle East Standard Time"))
- To Install
Chrome Extension
during bot execution, useStart Process
activity withFileName
asC:\Program File (x86)\UiPath\Studio\UiPath\SetupExtensions.exe
andArguments
as/chrome
. - To delete any particular transition from Re-Framework re-target the transition to different state and then select delete.
- Excel saves dates in the form of integers like for example
13/02/2023
would be saved as44970
, now to convert the number44970
back to a date inUiPath
orc#
we can use the functionDateTime.FromOADate
which takes in argument asDecimal
. - Example
DateTime.FromOADate(44970)
will be given asDateTime
object and can be used in any format.
- Present on right hand side tab
- used to define what our activity will do
- Title -> defines a message as for what the input is made for
- Label -> used to define the question the user will be prompted with
- Result -> the variable to store the input to
- In
UIPATH
variables can store different types of data like- Numbers
- Text
- Images
- Files
- Colors
- Data Types for variables are:
- Integer
- String ( between " ")
- Boolean
- Generic ( All of the above)
- Array of ( A list of any type)
- Default column in
variable
is used to set some default value for any variable Scope
is the region or field inside which a variable will be visible and can be used
- There are 2 types of workflows in UIPATH:
- Sequence ~> If our process is
linear
and involves execution of several consecutive actions,its best - Flowchart ~> If our process involves
complex connections
between activities , thenflowcharts
are more convenient
- Sequence ~> If our process is
- It is used to
assign
some value to a variable - something like
x=7
with x as variable
- It is the process of defining the rules and the automatic decisions that will be taken during the execution of workflow,through the use of if/else decisions,loops,and so on.
%
is represent bymod
!=
is represent by<>
==
is represent by=
**
is represented by^
//
is represented by\
- Binaray left shift operator is represented as
<<
- Binaray right shift operator is represented as
>>
- To check some in condition inside a flow chart we use
Flow Decision
- It uses
If
activity for checking coditions - It consists of 3 columns
- Condition ~> check the
True
orFalse
condition - Then ~> it does the work if a specific condition is set True
- Else ~> this block is run when the condition is found
False
- Condition ~> check the
- Loops are structures most often used to automate repeatitive tasks
- easily implemented in Flowcharts
- Always make sure to provide an exit point in the flowchart
1. while Loop (pre - condition check)
2. Do While Loop (post - condition check)
3. For Each Loop ( it works on iteration over items of a list just like iteration in python list)
- it is an action that allows you to access all files inside the specifed folder
- To get files from a folder, in this
Misc
section ofSelect Folder
type into theValue
field - to get the list of files use the command
Directory.GetFiles(path-of-folder)
- Type of variable should be array of strings
System.String()
- Certain functions inbuild in UIPATH that are helpful in type conversion are :
- Split
- Replace
- Substring
- Length
- Contains
- Trim
- IndexOf
- ToUpper,ToLower
- ToInt
- ToString
- Scalar Variables ~> Holds a single value of a fixed type, for example Characters , Booleans , Numbers, Date Times
- Collections ~> Like Arrays, Lists and Queues or Strings, Dictionaries
- Tables ~> A Table is siilar to an array of dictionaries where values are accessible by row index and column names
- Generic Value ~> It can represent basic types of data, including text,number and date/times.
ctrl + k
create the variable with appropriatedata type
in properties of a particular activity- To Remove certain elements from an
Array
we can useArray_Var.Except(New String() {String1,String2,String3_to_remove}).ToArray()
- By default
UiPath
is not able to type in astring
into a password element - For that purpose, we use
Get Password
activity to create or convert astring
topassword
type varaible
qwerty12345 to ********
- After creating a password type variable simply use
Type Into
activity to perform the task - To convert
System.SecureString
toSystem.String
, we usenew System.Net.NetworkCredential(String.Empty,SecureString).Password
- To define an array type variable, with variable type
Array of T
orString[]
and default array can also be written - To define an list we set the variable data type as
List<String>
and with default value asnew List(of String) from ['v1','v2']
Invoke Method
is used to append new elements to theList
- Dictionary has the data type
Dictionary<String,String>
and values can be appended to it using simplyAssign
function and works like normaldictionary
does - Syntax for dictionary is
new Dictionary(Of String,Int32) From {{"key1",val1},{"key2",val2}}
- To Initialize dictionary in c# use
new Dictionary<string,string>();
- The string functions here works similarly as
python
- For example, to check if a
String
contains a particularword
just usevariable-name.Contains(word-to-find)
- In
Split(" "c)
function,we can usectrl + shift + space
to find all kinds of examples we can use withsplit
method c
inSplit
stands fortoCharArray
- In split function we can pass more then one delimeter to split string using an
array
asvariable.Split({"word1 "," word2"},StringSplitOptions.None)
- UiPath offers 2 different activities to apply regular expression on text:
- Matches -> provides a list of all matches from a string based on provided regular expression, output syntax is like
Output-variable(item-no).value
with data type asSystem.Text.RegularExpressions.Match
- IsMatch -> It checks for a single value, if it matches a particular value or not -> output as
True
orFalse
- Matches -> provides a list of all matches from a string based on provided regular expression, output syntax is like
- To replace multiple new lines, spaces, tabs, blank lines etc, we can use
String.Join(" ",Variable-Name.Split({Environment.NewLine,vbcrlf,vblf," ",vbtab,vbcr,vbNewLine},StringSplitOptions.RemoveEmptyEntries))
- To get the
ASCII Value
of any character, we can useConvert.ToByte(Convert.ToChar(variable))
and can later convert to int for manipulation
- To print date just use the functioon
Now.ToString
- To print only Month And Year use
Now.ToString('MMMM yyyy')
Datetime.ParseExact(“12/05/2019”,“dd/MM/yyyy”,System.Globalization.CultureInfo.InvariantCulture)
to convert a string toDateTime
data type- To Convert the Date Timezone, we can use
TimeZoneInfo.ConvertTime(DateVariable,TimeZoneInfo.Local,TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
.
- Read
csv
files by using activityRead CSV
- To create a
Table
from csv file use the functionoutput data table
- it is preferable used while web scrapping
- To access data from table just like
DBMS
use something likevariable-name.Select("condition")
Table-Name.Select("Age > 20 AND Age <50").CopyToDataTable
- To access a specific column of a specific row , use
sampleData.Rows(0)("Name").ToString
- We must use
[]
with theSelect
method when the column name contains spaces. - Accessing a specific value from a row,
row("First").ToString
- To color any cell, we can use
set color range
activity which takes anSystem.drawing.Color.red
variable to highlight any cell with particular color
- How can a string variable called myString be converted to an all-capitals representation for future use?
Ans.
By using an Assign activity with myString on the left side and myString.ToUpper on the right side.
- Which .Net method of the datatable object can be used to filter a table by a condition?
Ans.
Select
- Which activity can be used to loop through each row from a DataTable?
Ans.
For Each Row
- Which activity can be used to modify the value of an existing cell in a DataTable?
Ans.
Modify Cell Activity
- How can you identify a column in a data table?(Select all that apply.)
Ans.
Using column index and name
- Which of the following statements are true regarding the Output DataTable activity?
Ans.
Returns the data contained in a DataTable as a string in a csv format
- The String.Format(“Input = {0} and Output = {1}”, “1”,”2”) expression returns which of the following text:
Ans.
Input = 1 and Output = 2
- How can we test if a given address (a string variable called fullAddress) can be found on a particular street (a string variable called streetName)?
Ans.
fullAddress.Contains(streetName)
- How can the index integer variable be displayed inside a Message Box activity?
Ans.
“Current index is: “ + index.ToString
- Single time
ESC
pause the recording - Double Time
Esc
Stop the recording - To use some kind of
hot-keys
, do the following- Press
Esc
once ~> To pause the recording - In
Type
option use thesend Hotkey
option to use any shortcut
- Press
F2
pauses the recording for 3 secondsRight-click
exit the recording- In
web
recording , it will work similarly asselenium
waiting time - UiPath has 4 types of Recording:
- Basic
- Desktop
- Web
- Citrix
- Citrix is used for automating stuff with virtual machines
- The recorder is able to record:
- left clicks on buttons,checkboxes and other clickable items
- Typing into editable fields
- Some non-recordable things to remember are:
These are Manual Recording
- Keyboard Shortcuts
- Modifier Keys
- Right click
- Mouse hover
- etc
- Desktop recorder is different from basic just because it provides a container based workflow that is different actions in same application are separated by different containers
Indicate on Screen
is a good function that can be used to change the snapshot used for automationText
function in recorder hascopy
function, that can be used to copy some text and store in avariable
which is created itself
- generates a full selector for each activity and no container, the resulted automation is slower than one that uses containers and is suitable for single activities.
- Actions are self-contained
- Simpler Workflow
- Can cause interference
- suitable for all types of desktop apps and multiple actions; it is faster than the Basic recorder, and generates a container (with the selector of the top-level window) in which activities are enclosed, and partial selectors for each activity.
- Actions are contained inside an AttachWindow component
- No interference issues
- More Complex workflow
- designed for recording in web apps and browsers, generates containers and uses the Simulate Type/Click input method by default.
- used to record virtualized environments (VNC, virtual machines, Citrix, etc.) or SAP, permits only image, text and keyboard automation, and requires explicit positioning.
- The Citrix Recording toolbar enables you to:
- Click an image or text
- Simulate keystrokes or hotkeys
- Select and copy text from a window
- Scrape UI elements
- Look for elements or wait for them to vanish
- Find an image or wait for it to vanish
- Activate a window
- Various types of single actions that can not be automated by simple recording are done using manual recordings
- Various Types of Single Actions are:
Start and Stop an App or Browser
~>These single actions enable you to open an app or browser, as well as close them, by pointing and clicking them.Click
~> These types of actions enable you to record clicks on the desktop or a running application, select an option from a drop-down list or combo box, and select a check box or a radio buttonType
~> These single actions include those that require input from the keyboard, such as keyboard shortcuts and key presses. To achieve this, two pop-up windows are used to retrieve your keyboard input.Copy
~> These actions enable you to copy a selected text from an opened application or web browser, so that you can use it later in the project. Screen scraping is also available under the Copy menu, as it enables you to extract images and text from an app or browser.Mouse Element
~> These types of actions enable you to simulate mouse movements that cannot be recorded but give you access to more functionalities, such as right-clicking, hovering or double-clicking.Find Element
~> These types of single actions enable you to identify specific UI elements or pause the automation until a particular window closes or an UI element is no longer displayed. The find relative element action is useful with apps that do not allow direct interaction with UI elements, such as Citrix.Window Element
~> Window element actions enable you to close windows. Studio does this by hooking in the operating system to make sure the application is closed.Text
~> Text single actions enable you to select or hover over text to make tooltips visible for scraping, right-click to make the context menu visible, copy and paste text and many others.Image
~> Image single actions enable you to wait for a specified image to disappear, to find a specific image in an app or website, right-click or hover over an image and others. This type of manual recording can be useful with UI elements that are saved as graphics, as they cannot be highlighted as normal fields or text
- How can you delay the Automatic Recording?
Ans.
By hitting the F2 key
- Can you combine automatic recording with step-by-step recording in the same recording sequence?
Ans.
Yes
- Which recording wizard would you use to automate Virtual Machine actions?
Ans.
Citrix Recording
- When is it recommended to use Desktop recording?
Ans.
When you automate more steps in the same window
- Which container will Basic Recording generate?
Ans.
No container
- Data Scraping is a function which can be used to Record any kind of data which is available in
link
form - For any kind of link to be extracted as data, you need to specify atleast two links together
- Then click on
next
and provide thecolumn names
of each column or data type you wish to scrap data and want incsv
orexcel
file - To extract more data of different type , click on
Extract correlated data
and follow the above steps only - The maximum number of fields represent the number of entries you wish to scrap over the webpage
- After this, click on
finish
and click on thenext
button over thewebpage
from which you are scraping the data - The above task will make sure that the page will be click next as soon data from single page is extracted successfully
- Data Scrapper is also able to extract a
tabular data
as well very easily, as it extracts the table itself on just single click
- Default (Generally used,hotkeys can be used)
- Window Messages(Can work in background,hotkeys can be used)
- Simulate Type (Fastest,used or prefered with Virtual Machines,hotkeys can not be used)
- Full Text ~> High speed and accuracy, can work in background and able to extract the hidden text
- Native ~> Get text by position with high speed but unable to work in background
- OCR ~> uses google and microsoft OCR and works great with citrix automation
- There are multiple activities that can be used to automate apps or web-apps and you can find them in the Activities panel, under the UI Automation category.
- ContinueOnError – specifies if the automation should continue, even if the activity throws an error. This field only supports boolean values (True, False). The default value in this field is False.
- DelayAfter – adds a pause after the activity, in milliseconds.
- DelayBefore – adds a pause before the activity, in milliseconds.
- TimeoutMS – specifies the amount of time (in milliseconds) to wait for a specified element to be found before an error is thrown. The default value is 30000 milliseconds (30 seconds).
- WaitForReady - Before performing the actions, wait for the target to become ready. The following options are available:
- None - Does not wait for anything except the target UI element to exist before executing the action
- Interactive/Complete - Waits all of the UI elements in the target app to exist before actually executing the action.
- Which is the best option for scraping tables from a web page?
Ans. Data scraping wizard - What is the Data Scraping wizard for?(Select all that apply.)
Ans. [Extracting whole tables from the web or other applications,Extracting correlated data from the web or other applications] - By using the Full Text scraping method, the robot is able to:
Ans. [Get editable text.,Get hidden information.,Get the entire visible text.] - Which of the text extraction methods can return the hidden text from a UI element?
Ans. FullText - Which of the following text scraping methods preserve the text position?
Ans. [OCR,Native]
- Selectors are the way we identify User Interface elements on the screen. They are a xml string which contain some properties that uniquely define the specified element.
- These are of 2 types:
- Full Selectors ~> Used in general automation
- Partial Selectors ~> Comes in use when containerisation automation is done
- A selector has the following structure:
<node_1/><node_2/>...<node_N/>
- There are basically 2 types of wildcards in UiPath that are:
*
~> Replace any number of characters?
~> Replace exactly one character
- It is an activity that is used to simple
Highlight
an UI Element as the name suggestes
- It is Automation Tool which is used to easily manage or edit the Selectors
- To add some variable inside the selector the following way should be followed
<wind some-selectors-code "+ variable name +" further selector code>
- It is used to be able to automate and manage dynamic selectors faced during web automation
- This activity is used to find
elements
with unreliable selectors - It uses the position of elements on screen
Find Element
this column is used to indicate the reliable field in the element we wish to search for our automation such as the name of the fieldActivity Field
is used to declare the task to be done once the indicated element or field is finded byAnchor Base Activity
Anchor Position
~> it is the property of this activity which can be used to define the position where the required element to search for
- It works in background and relies on the internal structure of application
- Various properties of selectors are:
- Validate ~>The button shows the status of the selector by checking the validity of the selector definition and the visibility of the target element on the screen.
- Indicate Element ~>Indicate a new UI element to replace the previous one.
- Repair ~> Enables you to re-indicate the same target UI element and repair the selector. This operation does not completely replace the previous selector. The button is available only when the selector is invalid.
- Highlight ~> Brings the target element in the foreground. The highlight stays on until the option is disabled with a click. The button is enabled only if the selector is valid.
- Edit Attributes ~> Contains all the application components needed to identify the target application (a window, a button etc.). This section is editable.
- Edit Selector ~> Holds the actual selector. This section is editable.
- Open in UI Explorer ~> Launches the UI Explorer. The option is enabled only for valid selectors.
- Can variables be used to build dynamic selectors?
Ans.
Yes
- How can you see the full list of attributes of Ui elements?
Ans.
By using the UiExplorer tool.
- What is a Selector?
Ans.
The “path” to the UI element, starting from the root, all the way to target element.
- Which of the following is true regarding the Anchor Base activity?
Ans.
Use the screen position of the anchor and the target element.
- What are the supported wildcard characters for selectors in UiPath Studio?
Ans.
* and ?
- Using
click image
we can click on almost anything that is button,checkbox,textfield etc Click Text
uses oCR to scan the screen of Virtual Machine... where asclick image
faster and more reliable ut fails only if background color changes- This is done using
Image Recording
, it is preferred to be used when we are working on an image of a system that could be referred as theAWS instance
or aVirtual Box
- In this , the main function of recording is
click image
and the recording to be done manually only click image
-> this functin or activity is used as dragging and selecting an area with respect to which we can decide where to clickclick Text
it does the same way asclick image
but in a different manner, it takes an OCR of the image and tries to find the element with samename
as provided andclick
with respect to its position
- If sometimes, the
mouse actions
fails to find the element , we can use the keyboard actions and automate the workflow using thekeyboard shortcuts
such astab
,ctrl+v
etc.
- this activity is used to copy the
selectable
fields inside an virtual environment - it works similarly as , selecting the field we wish to copy
- This activity is used to copy data from
non-clickable
area which is done or preferred to be done usingGoogle OCR
and it can be set to find element with respect to somerelative position
- Creating automations in a Citrix environment is challenging because:
Ans.
You need to interact with the app using Image Recognition or OCR.
- Is Reset Clipping Region mandatory to be executed at the end of a scrape relative sequence?
Ans.
No, for the next actions we can use other Clipping Regions.
- What activities can be used to interact with applications in a Citrix environment?
Ans .
Type into, Click Image, Click Text
- How can you scrape a field on a Citrix Environment when the value in that field changes each transaction?
Ans.
Find a static element nearby and use Scrape Relative
- Click Image and Click OCR Text are not 100% reliable in Citrix environments. What method can be used instead (when applicable) to have safer actions?
Ans.
Setting focus on a reliable element and then navigating around the app using keyboard (up/down arrows, tab, etc) or using keyboard shortcuts.
(Failed in above attempt) - Having an app in a Citrix environment with multiple text-boxes that look the same (size/style), how can you identify one of them to type into?
Ans.
By clicking relative to an unique text/image next to the textbox., You can’t identify it if it doesn’t have something unique next to it (text/image).
- Is it possible to click a button with Click Image Activity if the target is not visible on the screen?
Ans.
No, you could click a button which is not visible only using selectors
- Consider having an application in Citrix Environment that has a button named ‘Accept’ and also a label that contains the Accept word. How can Click Text be customized in order to access the correct button?
Ans.
By using the Occurrence property.
- How can you improve accuracy when scraping with OCR a region that contains only digits?
Ans.
Use Google OCR with “Numbers Only”
(Passed in above attempt)
- This activity is used to
pause
the state of program until an certainElement
is not found or loaded completely - As output it gives the
element
which is defined to be found
- it is used to detect/show/highlight a certain element over screen
- Highlighting a certian element can be done using
- Clipping Region
- Selector
- Element
- Highlight Time ~> The timeout or the amount of time for which to
highlight
a certain element is calculated inmicroseconds
that is2000 == 2 sec
- In highlight the color can be defined as well for customized workflow
- A better practice to open a certain
app
orapplication
is to setshortcuts
and open the app usingsend hotkey
activity
- This activity is a container based activity which further accomodates
Pick branches
- This activity is used to set a certain activity to be completed in different possible conditions or scenarios
- Basically we provide a same action like
opening a folder
to be automate but in more then one possible condition ofscreen
orbackground
- What can be done when the Windows Remote Connection doesn’t allow sending hotkeys?
Ans.
It should work if the Windows Remote Connection is in ‘full-screen’ mode.
- How can the robot pass a variable argument when opening an application in Citrix (eg: a web address for a browser)?
Ans.
In the command prompt, type in the path to the application and the argument
- Which of the following activities can be used to select an item in drop down list, in Citrix?(Select all that apply.)
Ans.
Click Image , Click OCR Text
- What happens if Find Image doesn’t actually find the desired image?
Ans.
An exception is thrown..
- What is the EASIEST navigation method to be used in a form within Citrix?
Ans.
By sending keyboard commands/hotkeys
(Passed)
Excel application scope
~> it is a container based activity and is used to do all workflows regarding the Excel fileVisible
~> It is an inbuilt activity which if we checked tellsUiPath
to work on file usingMSOffice
and if not then all tasks are performed internally- While using Direct access only single process can work where as while using MSOffice multiple can be done at the same time
- A range can be specified by defining the cells separated by
:
.A1:C5
Build Data Table
~> this activity is used to create more data tables with very easy and simple GUIAdd Data Row
~> this activity is used to add another row(data) inside the build data table activity or table made from itAppend Range
~> It is used to append more data to same file- Data tables are
zero-indexed
same as alist in python
sort data table
~> This activity is used to sort some tabular data based on a certain columnSelect Range
~> This activity is used to select a range of cells over which further actions likecopy/delete/paste
can be performedJoin Data Table
~> This activity is used to perform theJOIN
operation- The
Join Operation
is of 4 types:- inner join
- left join
- full join
- The
- The table join
criteria
can be defined using eithercolumn data type
or simple bycolumn name
written insidedouble-quotes
- the conditions can be set as more then one or either on one using
AND
andOR
logical operators Output Data Table
~> This activity is used to convert adata table
type variable toString
Read Cell
~> used to read a specific cell from an excel fileWrite Cell
~> used to write in a specific cell from an excel file- All numeric data read by
Read Range
function from Excel is interpreted as anDouble
data type Get row item
~> this activity is used to fetch the values of a specific column from a certain rowAdd data row
~> this activity is used to add a new row in anExcel file
using anarray of data
which is defined usingcircular or curly
brackets as(var1,var2) or {var1,var2}
inputsTable.Rows.Count
~> it can be used to count the total number of rows- Use of
Workbooks
is prefferable overExcel files
as they do not require Excel to beinstalled
- To reverse a
DataTable
object, we can do so byDatatable-name.AsEnumerable.Reverse.CopyToDatatable
- Macros can only be used with
Excel Application Scope
- Macros are saved in file with
Macro Enabled Workbook extension
that is.xlsm
- Macros are written in
vba
and can be recorded in excel and edited for ease of use - The Macros activity has 2 inputs
- Path of file that contains our macro
- Object Array of parameters to be passed to the macro
- The Macro activity has 1 output that can be used when working with
Function
instead ofSub
- To Execute the Macro available in different file, we can give the macro name as
FileNameContainingMacro.xlsm!MacroName
- To Suppress any application alerts like
delete confirmation
, useApplication.DisplayAlerts=False
- To Create a Pie Chart, for any data use the following code sample
Sub PieChart()
'Code to create a Pie Chart
ActiveSheet.Shapes.AddChart2(251, xlPie).Select
' Set the range of the data to create chart from
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$5")
CoverRangeWithAChart
End Sub
- To Create a Bar Chart, for any data use the following code sample
Sub BarChart()
'Code to create a Bar Chart
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$5")
CoverRangeWithAChart
End Sub
- To move the position of any chart, with reference to cell range, use the code sample
' Code to change the position of a chart
Sub CoverRangeWithAChart()
Dim RngToCover As Range
Dim ChtOb As ChartObject
' Define the range where you wish to put your chart at
Set RngToCover = ActiveSheet.Range("L5:S19")
Set ChtOb = ActiveChart.Parent
ChtOb.Height = RngToCover.Height ' resize
ChtOb.Width = RngToCover.Width ' resize
ChtOb.Top = RngToCover.Top ' reposition
ChtOb.Left = RngToCover.Left ' reposition
End Sub
- To Merge multiple columns
' Code to merge multiple cells of an excel
Sub MergeCell()
Range("A1:F1").Select
Selection.Merge
End Sub
- Requires
Trust Access to the VBA
to be enabled inside the Excel - Invoke VBA activity enables developer to execute macros from outside the file without opening excel
- Basically
Invoke VBA
activity works insideExcel Application Scope
and is used to execute anyVBA
code present anywhere in the local system - The VBA code should be saved in a
.vb
extension file - This Activity requires
Three parameters
- File Input Path
- Name of the Procedure to call
Array<object>
for paramters to be passed
- A sample vba code can be:
'Save this in a .vb file
Sub Macro1(Word1 As String, Word2 As String)
Range("C2").Select
ActiveCell.FormulaR1C1 = Word1
Range("D2").Select
ActiveCell.FormulaR1C1 = Word2
Range("E2").Select
ActiveCell.FormulaR1C1 = Word1 + " " + Word2
Range("E3").Select
End Sub
- This activity would be useful in scenarios where macros are not to be saved inside the same input file and thus no need to open the macro file for automation
- What happens if the AddHeaders option is checked for Read Range Activity?
Ans.
The first row from the specified range is considered to be the column names
- In order to loop through all the rows of a data table, which activity should be used?
Ans.
For Each row
- What activity can you use to create a DataTable from an input string?
Ans.
Generate Data Table
- What happens if you try to use a Write Range activity to a .xlsx file that does not exist?
Ans.
It will create that file for you and write the data in it.
- Can Excel related activities be used without having the Excel Application installed?
Ans.
Yes, but only for xlsx files
(Passed)
Read PDF
~> This activity is used to read text from a PDFRead PDF with OCR
~> It goes by the name and is able to read theImage Text
present in the PDF- While using OCR to read PDF's , we have got 3 options
- Google OCR
- Microsoft OCR
- Abby's OCR ~> Maintains the structure of text present in PDF
- PDF activities are categorised into 2 parts:
- Processing large chunks of data
- Working on specific part of the file
- Anchor base method is more reliable then others since it can handle structural changes
- While trying to read text it is preferable to use
Read PDF
rather thenRead PDF with OCR
as OCR is more prone to errors - In properties of PDF, the range of PDF pages can be set in the following format
"1-4"
- Will the Read PDF with OCR activity open the PDF document on the screen in order to read it?Will the Read PDF with OCR activity open the PDF document on the screen in order to read it?
Ans.
No
- What is the easiest way to get the invoice number from a native PDF file?
Ans.
Open the PDF file with Adobe Acrobat Reader and scrape only the relevant information.
- Which of the following activities requires the PDF file to be opened with Acrobat Reader in order to read it?
Ans.
Get Text
- How can a robot read only the first page of a PDF file, using the PDF activities?
Ans.
Set the Range property to: “1”
- If the PDF contains both images and native text, what activity should you use to read all the text from it?
Ans.
Read PDF with OCR
- Various activities supported in
email automation
are:- SMTP ~> used to send mails
- POP3 ~> used to recieve mails supported by various domains
- IMAP ~> supports reading messages as well as marking them read or shifting to different folders
- Exchange ~> Microsoft supported activity for all kinds of email activities
- Outlook ~> automate the pre installed outlook software
- Four activities present to check mail are :
- POP3
- Outlook
- IMAP
- Exchange
- The data type of messages is
System.net.mail.message
Save Attachments
activity is used to save attachments from a mail, it requires two arguments amail type instance
and path to save foldermail.Headers('Date')
provides the Date Timestamp for any mail- to filter mails fetched by UiPath set a filter in the properties menu such as
"[RecievedTime] > '14/10/2019 09:41 AM'"
or"[RecievedTime] > Now.AddDays(-1).ToString('MM/dd/yyyy hh:mm tt')"
Take Screenshot
is the activity used to take a screen shot at run time which is to be saved in a certain location usingsave image
activity- The
attachment
section of theSend Mail
activity requires a file path to be sent - To make something like message Dynamic in
sending messages
we can use format type same aspython
just replace the content to be changed dynamically with{0}
and provide the argument inbody section
of send mail activity - To Access Different Folders from
Gmail
, use the following format forMailFolder
:- Inbox ->
INBOX
- All Mail ->
[Gmail]/All Mail
- Drafts ->
[Gmail]/Drafts
- Sent Mail ->
[Gmail]/Sent Mail
- Spam ->
[Gmail]/Spam
- Starred ->
[Gmail]/Starred
- Trash ->
[Gmail]/Trash
- Inbox ->
- What activity can you use to send an email without entering the username and password of the email account?
Ans.
Send Outlook Mail Message
- What activities can you use to send an email message?
Ans.
Send Outlook Mail Message. and Send SMTP Mail Message.
- What is the supported variable type in the Output property field of all Get Mail activities (POP3, IMAP, Outlook, Exchange)?
Ans.
List (MailMessage)
- If you are using the For Each activity to loop through a list of MailMessage variables, what should you set the TypeArgument property to?
Ans.
System.Net.Mail.MailMessage
- The Send Outlook Mail Message activity will work without having Microsoft Outlook installed:
Ans.
False
- Which of the following properties are found in the Get Outlook Mail Messages activity?
Ans.
MailFolder
- Which of the following activities will allow you to only retrieve only unread messages? (Select all that apply.)
Ans.
Get OUTLOOK Mail Message and Get IMAP Mail Message
- If you want to get only filtered MailMessage variables, what activity should you use?
Ans.
Get Outlook mail messages
- Which Visual Basic property within the MailMessage class will you use to get the Date of an email?
Ans.
Headers(“Date”)
(Passed)
- Slow Steps ~> This is the tool provided with
Debugging Toolkit
, it highlights each activity executing - In Options ~> Highligh Element activity ,
highlights
theUiElement
being interacted with aRed Color
- Breakpoint ~> It is set an activity where we feel some error migth occur and then we have 3 options to continue our program execution
- Continue
- Step Over
- Step Into
- In
Input Activities
we have an optionSimulate check
in their properties which tend to send the input usingBackground Processes
without using themouse or keyboard
Timeout
property makes theactivities
wait for an element to appear or the activity to execute before giving an errorElement Exists
~> This activity returns aboolean
value that isTrue
orFalse
for an Element to be present on sceen or notLog Message
~> this activity can be used to set or give some message in output tab given in right side Properties panel... that is seen while executionFind Element
~> Stops the workflow until an element is foundWait Element Vanish
~> Waits for an element to disappear before continuing
Try Catch
activity ~> it works same as in programming , if any activity fails inTry
block thencatch
block will run followed byfinally
blockSystem.Exception
~> It catches all types of errors- To select all activities, it is easy by just dragging the cursor on all
- Once the type of Exception is selected in
catch
block.. followed byenter
collapses thetry
block and we can start addig activities to work when error occurs rethrow
activity ~> is used incatch
block to show an error popupexception.message
this is aprimitive
variable which contains the error message that might have occured
-
There are 6 log levels in UiPath:
- Verbose
- Trace
- Information
- Warning
- Error
- Critical
-
Each log level has its own significance
-
Verbose < Trace < Information < Warning < Error < Critical
-
Creating user-defined log fields that have the same name as a default log field causes the logging process to become corrupted and may cause issues in the workflow you are running.
-
Various Default Log Fields are:
- Message - The log message.
- Level - Defines the log severity.
- Timestamp - The exact date and time the action was performed.
- FileName - The name of the .xaml file being executed.
- jobId - The key of the job running the process.
- processName - The name of the process that triggered the logging.
- processVersion - The version number of the process.
- windowsIdentity - The name of the user that performed the action that was logged.
- robotName - The name of the robot (as defined in Orchestrator).
-
for type conversion to integer we can use
CInt
asCInt(variable)
-
You can separate individual components of your automation into different workflow files and then call them using
Invoke Workflow.
- If you need to know if a UI Element is available on the screen or not, what activity should you use?
Ans.
Element Exists
- What does the Locals panel display when you are working in Debug mode?
Ans.
The current values of your variables.
- How many Catches can you have in a Try/Catch block?
Ans.
There is no limit on the number of catches.
- What activity can be used in a Citrix environment to check whether a UI element is displayed or not?
Ans.
Image Exists
- The Finally block of a Try/Catch activity is executed when:
Ans.
Every time, regardless if an exception occurred or not.
(Passed)
- Following the best practices makes our project:
- Reliable ~> Solid Robust workflows that can handle errors
- Efficient ~> Shorter development time and smooth execution in production environment
- Maintainable ~> Easy to update when changes are required
- Extensible ~> New Usecases can be added
- Pick an appropriate layout for each workflow
- main WF -> flowchart/ state machine
- bussiness logic -> flowchart
- Ui Interactions(woring in same order) -> Sequence
- Avoid nested If else and use flowchart instead
- Break the whole process into smaller workflows
- Develop and test pieces independently
- reuse workflows across projects
- collaborate working on separate files
- Use Exception Handling
- Put problematic workflows inside Try_Catch
- Put externally invoked Workflows
- Implement recover sequence
- Make your workflows readable
- Give descriptive names to activities
- leave explanatory notes and comments using
comment
activity - log real time execution process
- Keep it clean close applications,windows and web pages not being used
- UiPath offers an activity same as
import
in python that isInvoke Workflow
activity - In this activity , we can execute any workflow and even pass arguments and import arguments
- Arguments just work as values which are provided for variables and these arguments or values of variables, can be either given as input or can be extracted as an output for another activity
Direction
column in variables define the redirection of values which can beIn
orOut
or bothIn/Out
Deserialize JSON
activity ~> It is used to parse ajson
file and can be used to read or extract data from it- to convert a variable... we can do it like
convert.ToInt32(variable-name)
- What is the recommended layout for sequential activities?
Ans.
Sequence
- What type of arguments can you use in a workflow?
Ans.
In/Out Out In
- Is notifying the user via a Message Box activity a good way to keep track of a workflow’s execution progress ?
Ans.
No
- What is the recommended layout for a sequence of UI interactions?
Ans.
Sequence
- Which of the following is a good example of a workflow name?
Ans.
GetCustomerNumber.xaml
(Passed)
(Passed Successfully)
Link TO Version Details Of Different Orchestrators
UiPath Orchestrator
is a web based application- It Enables efficient resource management
- It allows Workload allocation, Scheduling and monitoring of robots
- Streamlines the teamwork
- This activity is used in workflow to stop a executing process from
Orchestrator
- It return a
Boolean Value
which can be used byDecision Flow
- In UiPath Studio we have an activity called
Get Asset
- It gets the
asset
value from the Orchestrator and this activity works only when theworkflow
is published to Orchestrator Asset
is basically just a variable which can be defined in the Orchestrator and used by the workflow- It can be specified for multiple robots or individual that is using same
asset variable
for multiple bots withdifferent values
- In properties panel, name of asset should be written as string that is if the name is
Name
then in properties write it as"Name"
- Assets are of 4 Data Types:
- Credentials
- Text
- Boolean
- Integer
- Credentials type requires 2 input values (Username and Password) in
Studio
as well as Orchestrator - Basically when
Credential Asset
is made with two values which areUsername
andPassword
- Then they are fetched and used at run time in Studio using
Get Credential
activity - To use the pass acquired from the
Get Credentials
we would need to useType Secure Text
activity - To use Windows Credentials use
UiPath.Credential.Activities
- This activity is used to decrypt the
.NET
secured string from encrypted password to normal decrypted text
- the transaction items in a queue are processed in chronological order
- The items inside Queues can be processed by multiple Robots.
- The priority order of a queue item is based on
Priority
andDeadline
- The Priority is given in order that is
High Priority and Low Deadline
if anydeadline
is specified and ifno deadline
is specified thenOnly Priority
is checked - A Queue Item with
Priority and Deadline defined
has more priority over a queue item withhigh priority and no deadline defined
- This activity is used to send values or add the items to Queue in Orchestrator
DeadLine
~> This property is used to set a sepecific time limit within which the queue item is supposed or required to be processed e.g.,datetime.Now.addHours(24)
PostPone
~> This property is used to postpone the activity upon reachingDeadline
by sometime
likedatetime.Now.addHours(2)
- Multiple robots can be assigned to process the same Queue
Reference
property can be set to an item to identify it uniquely in OrchestratorItemInformation
~> this property is used to define the values to be added in the Queue present in Orchestrator- To Add a queue item in Queue, there are possibly 4 ways:
- Add Queue Item activity
- Bulk Add Queue Item activity
- Clone any available queue item and update the values using json
- Upload the csv file containing the queue item information
- This activity is used to fetch values or items from the
Queue
made in Orchestrator - When this activity is set into loop it iterates over and fetch all the items in the Queue
transaction.SpecificContent("Column-name").toString
- It is used to set status of the processed item from the Queue
- If the Status is not set by the
Robot
then it is set toAbandon
automatically after 24 hour
- It is used to set some Value for the progress column in Orchestrator regarding the Processes in Queues
- Pressing Stop requires you to use the Should Stop activity in Studio while developing the process. The activity returns a boolean value. It informs whether the Stop button has been pressed in Orchestrator by the time the Control Flow reached the Should Stop activity. This is similar to a Save Game function in a computer game.
- Pressing Kill is the equivalent of stopping a process from the Studio. Orchestrator will connect to your Robot and send a stop command to the process.
- Trigger is like Scheduling a process that is having Orchestrator press Play for you at a time which you specify.
- Create your workflow that you wish to deploy over Orchestrator
- Open the Following url Cloud Uipath
- In
Service
section , select theStudentDefault
service (UiPath Orchestrator will be opened) - Create a machine
- Click on Machine in Left panel under
MANAGEMENT
section - Click on
+
icon followed byStandard Machine
- In Name write the Name of your Laptop(you can get that from next step) and Description as you like
- Click on Provision
- Click on Machine in Left panel under
- Open UiPath Robot on your local Machine
- Click on
Settings
icon - Select
Orchestrator Settings
option - Enter the Machine Key(you can get that by clicking on
edit
on Machine made in previous step) - In Orchestrator Url type the cloud-orchestrator-url
- Click on Connect(Local System gets connected to Orchestrator at cloud)
- Click on
- Now to Add your Robot
- In
UiPath Studio
, click onPublish
button given in Design Panel(just click ok) - Select
Machine Name
given in previous step - In Username, type the name configured with your
UiPath Studio
- Click create
- In
- Set Environment
- In Robots tab, Click on environments
- add a new environment
- Click on
manage
in properties of environment - Select your
robot
and click onUpdate
- Set The Process
- Go to
Process
Tab - Click on
+
icon - Select the
Package Name
andEnvironment
- Click on Create
- Go to
- Finally you are ready to run/execute your bot
- Go to
Jobs
- Click on Start Button
- Select The Process made in previous step
- Select your
Robot
- Click Start and all done
- Go to
- This Framework is a Template provided by UiPath for
transactional
activities or workflow - Transactional Activities~> Basically every project can be divided into 4 states
- Initial State ~> Start/Open all applications
- Get Transactional Information ~> Take Input or Fetch from Queue/Excel all the Data need to be processed or used for processing
- Process Transaction ~> Process all the information(calculation,Decision taking,Data Conversion etc)
- End Process ~> Close all the applications which are not required
- It can be accessed through
START
panel ofUiPath
Studio in theTemplate
Section - REFramework consists of few pre-build workflows which are used to simplify the Automation Task in a proper manner that are:
- InitAllSettings ~> Processes / Reads the config file containing essential details
- InitAllApplications ~> Start the Initial State and Open all neccessary applications
- GetAppCredential ~> In terms of Login , gain user credentials with proper security
- GetTransactionData ~> Get Transactional Information from User/Queues/Excel Files etc
- SetTransactionStatus ~> Set the status for information being used(Processed/retried/abandon/NeedToBeProccessed etc)
- KillAllProcess ~> To Stop the Process completely on recieving
STOP
signal - CloseAllApplications ~> Close the applications in Workflow as soon as their work is completed
- TakeScreenshot ~> During Exception Occurrence, Used to Take Screenshot and store in
Exceptions_Screenshots
folder,to help developer
- RefFramework is based on the principle that data is stored in the form of a
Queue
that isFIFO
- Building productive Robots require:
- Proper Exception Handling(try_Catch)
- Recovery Abilities(ReStart or Recover from Possible failures)
- Effective Logging(Secure the Status of Each part of workflow)
- Reporting Functionalities(logs and screenshots)
- High Maintainability
- Extensibility(Easy to modify)
- Reusability
- Ease of Development
- The Framework files can be downloaded from the following
Github
Repository link FrameWork Request Credential
~> This is an activity used to getcredentials
from user same asinput dialog
- This Framework mainly works on State machine activity which includes
- Main State Machine
- Exceptions Handling
- Recovery Methods
- States
- InitState(Config file,InitAllApplications) ~> Initialization(Open Application,login to website,startup required values etc)
- Get Transaction Data(TransactionItem,TransactionNumber)
- Process Transaction
- End State
- SetTransactionStatus
- GetAppCredentials
- The Flow of
State Machine
is like First theentry action
is complete, then thetriggers
for the state's transitions are scheduled. When a transition to another state is confirmed, the activities in theexit action
are executed, even if the state transitions back to the same state. After the exit action completes, the activities in thetransition's action execute
, and then the new state is transitioned to, and its entry actions are scheduled.
- In The Reframework, it is the Initial
xaml
file to be used - It contains a Config workbook with 3 sheets
- Settings ~> We can store any configuration related to the business process such as Urls,filepaths,credentials and any process specific piece of information
- Constants ~> It stores the technical settings that are useful for Developers, it contains information like number of delays , retries, timeouts,image accuracy settings, static log parts
- Assets
- In Settings Sheet , there are 3 columns
- Name ~> Always contains a string which is the key in the Dictionary
- Value ~> Holds the dictionary value
- Description ~> Holds the detailed account of each setting
- There are 2 kinds of Exception that are:
- Business Exception ~> In Case of issues in data , invalid data,missing information in data.
business rule exceptions are something you defined while building the process(exceptions which are expected and there is no chance of record getting success even if we retry)
Transaction status is
set as failed
and transaction isnot re-tried
- System/Application Exception ~> In case application not available(UI Element not available or unknown error)
Transaction is
re-tried
- Business Exception ~> In Case of issues in data , invalid data,missing information in data.
business rule exceptions are something you defined while building the process(exceptions which are expected and there is no chance of record getting success even if we retry)
Transaction status is
- We can generate exceptions using the
Throw
activity, like to generateBusiness Exception
usenew BusinessRuleException("Message to Pass with Exception")
Note:
- In case Exception occurs anywhere we set
SystemError
toexception
with data typeExeption
- At Every Phase of This Framework , logging is done for better development experience and Easy Debuggig
- We always initiate the workflow with
main.xml
file- It contains a Flowchart with following Transactions
- Init
- Get Transaction Data
- Process Transaction
- End Process
- It contains a Flowchart with following Transactions
- Starting With
Init
transaction, It contains a Try_Catch_Finally block of activity- Assign a
SystemError
variable to nothing which used for Exception Verification - For first Time,by default reads the config file present at
Folder/Data/config.xlsx
to acquire basic pre-set settings/values and kills all initally running processes as defined inKillAllProcesss.xaml
- Run
InitAllApplications.xaml
to open all required application upon which we have to work
- Assign a
- Upon Failure of above process we move to
EndProcess Transaction
else- Move to
Get Transaction Data
transaction - It checks for
StopSignal
that is recieved fromCloud Console
- Starts to access/fetch data from Queue in Orchestrator using
Get Transaction Item
which gives an Queue as output - If some Error occurs,logs are set and
TransactionItem
is set toNothing
- Move to
- If no data/TransactionItem is fetched from above Transaction, The workflow moves towards
End Process
transaction else- Move to
Process Transaction
- In this, we initiate the main
Processing
workflowxaml
file that uses the input and complete the task - If Some Error is Faced the workflow sets the
Bussiness Exception
andSystem Exception
to initiate the Recovery Process - Most of the time, Upon recieving Error, its best to stop the processing
- After Completion of the activities.. a
Finally
block is used to always set thetransaction status
of each Transaction Item
- Move to
- Upon Reaching the
End Process
transaction- It intially try to normally
Close
all applications and upon not being able to do so - It uses
KillAllProcess
to forcefully to its work
- It intially try to normally
-
A transaction represents the minimum amount of data and the necessary steps required to process the data, as to fulfill a section of a business process
-
Once processed, the data is no more required
-
A Business process can be divided into 3 categories:
- Linear ~> The steps of the process are performed only once and, if there is the need to process different data, the automation needs to be executed again.
INIT ~> GET DATA ~> PROCESS DATA ~> END
- Iterative ~> The steps of the process are performed multiple times, but each time different data items are used
INIT ~> GET DATA ~> | Process Data in Loop | ~> END
- Transactional ~> Similarly to iterative processes, the steps of transactional processes repeat multiple times over different data items. However, the automation is designed so that each repeatable part is processed independently
-
Dispatcher ~> The dispatcher is a process used to push transaction items to an Orchestrator queue. It extracts data from one or multiple sources and uses it to create Queue items to be processed by Performer robots.
-
Performer ~> The performer is a process used to pull transaction items from an orchestrator queue and process them as needed in the company. Queue items are processed one at a time.It uses error handling and retry mechanisms for each processed item.
-
Dispatcher and Performer models advantages:
- Better seperation of processes (between dispatcher & performer)
- Better separation & distinction between architecture and process layers
- Better error handling and retry mechanism
- Possibility to run processes across several machines (availability)
- Better re-usability within your project's created components
- Improved built-in configuration & Orchestrator integration
- Previous workflows created without REFramework can be easily adapted and deployed in order to use REFramework and the dispatcher / performer model
- In Config file, we have got 3 sheets
- Settings ~> Contain data we wish to access such as email,url,username or password
- Constant ~> Something like retry count
- Assets ~>
- A Config variable is of
Dictionary (String,Object)
- Reframework can be used for multiple input types (queues,datatable,array,list et)
- Presentation Layer(accessed via browser)
- Communication between clients (browser,robots) and Orchestrator is encrypted using the secure https channel
- user session is saved in a session cookie(with a configured expiration time)
- the password complexity is configurable
- account automatic locking after a configurable number of failed attempts
- Protection against CSRF token
- Service Layer(containing the business logic)
- Role-based access control(RBAC)
- no data sent outside customers network
- logging - default actions are logged for auditing, and so are the users actions
- the section containing the encryption key in the configuration files can be encrypted
- Persistence Layer ~> Build using SQL and elastic search
- encrypted communication with SQL server
- each password is encrypted with a different encryption key
- login attempts are logged - result ,IP Address, timestamp , browser info
- user roles can be defined for data stored in SQL server to prevent unauthorized access
- Robots having access to Credentials normally used by human workers
- Robots having access to privileged information such as personal data of commpany staff, financial data
- Unauthorized modifications of automation workflows in the development or testing phase
- Unauthorized modification of automation workflows or runtime parameters in the production environment
Features are the characteristics that are embedded in the product or solution and implemented in order to enhance the security and mitigate risks
Best Practices to be used while setting up RPA workflows
- It aims to ensure that the process that will run on the live data is safe and no security breaches are possible
- Checks whether the credentials are used only where needed and are not passed outside the trusted environment
- Prevent sending sensitive data outside the trusted scope
- We can keep track of RPA projects with multiple developers in working by keeping the source code files(XAML files) in
Source Code Control System
- To Store Credentials in UiPath we use:
- Orchestrator Credential Assets ~> encrypted using
AES 256
and stored on theSQL server base
but should be configured withvalue per robot
to prevent unauthorized access - Windows Credential Manager ~> works as a local machine storage and should be used only in case Orchestrator in not accessible
- Orchestrator Credential Assets ~> encrypted using
- Configuring a trusted Channel : VPN Connections,secure FTP sesions, HTTPS websites
- Data encryption, when using untrusted channels
- Usage of limited access environments, such as restricted shared folders or restricted Sharepoint domains
- During RPA Projects the
Developer Team
andProduction Team
should work in different environments - Development Environment
- The RPA Developers and their robots interact only with systems that have sandbox environments
- the robots should not be able to connect to the UAT and production orchestartor
- Production Environment
- The robots permanently monitored for malicious tempering of packages and the execution of correct version of the package
- access to the robots in the production should be restricted to the trusted individuals
- It is a feature of Orchestrator that allows complete seperation of Data among tenants, providing a dedicated share of the instance including its data,configuration, user and role management up unitl license management
- In simple terms, using Single Orchestrator Instance an organisation can have, multiple role based users each having having seperate:
- Robots
- processes
- Assets
- Queues
- Data
- Configuration
- Users
- Roles
- Transport Level Security 1.2 Protocol
- Advanced Encryption Standard on 256-bit cipher
- Secure Hash Algorithm 2
- What are the main differences between guidelines and security features?
Ans.
Guidelines are recommended general best practices, while security features are already implemented in the product
- User access to the Orchestrator web app is protected using the following features:
Ans.
a) communication between client and Orchestrator is encrypted with HTTPS; b) Password complexity is configurable; c) the account is locked after a configurable number of unsuccessful attempts
- Is Storing Credentials a feature or a guideline?
Ans.
Feature
- Authenticating the users on the Orchestrator platform can be done with:
Ans.
Google accounts with OpenAuthentication 2.0,Local username and password,Active Directory username,using Windows Authentication, Azure Active Directory authentication
- A valid SSL certificate is required to install Orchestrator.
Ans.
True
- Is Package Securing a feature or a guideline?
Ans.
Feature
- With the Account Lockout security feature you can prevent additional logins for a period of time after a number of failed attempts.
Ans.
True
- The Audit page on the Orchestrator platform allows you to filter by:
Ans.
Component and Action
- What is the common practice to keep the different versions of each XAML file in an RPA project?
Ans.
Source Code Control System
- Packages uploaded into Orchestrator (either manually or published from Studio) are automatically uploaded by Orchestrator to all robots that can execute these packages.
Ans.
False
- Orchestrator offers the functionality to create any number of custom roles.
Ans.
True
- In an organization with Development, Testing and Production environments, an RPA Developer should not have access to the Production Environment
Ans.
true
- CyberArk can be integrated with the Orchestarator in order to retrieve the robot credentials from CyberArk instead of SQL Server DB.
Ans.
True
- Is Isolating Environments a feature or a guideline?
Ans.
Guideline
- Security risks can appear in:
Ans.
Both development and production phases
- Named User ~> Single specific User, enables each user to access the software at any time ,on any machine
- Concurrent User ~> Useful in BPO scenarios,indicates how many users can access the software simultaneously
- Concurrent Runtime ~> Indicates the number of robots that can be simultaneously connected to Orchestrator , regardless of the user or machine
- Server License ~> is required to install orchestrator instace
- All the licenses for all the robots can be easily managed by Orchestrator
- Named and Concurrent User License can not coexist in single orchestrator instance
- All the platform license must have same anniversary date
- It provides full control of all the licenses belonging to an organization
- Allows centralised license management and distribution
- Used when Orchestrator is not used
- Named User License
- Node Locked License ~> completely similar to
Concurrent User license
- To Activate any license in machine follow the following steps:
- Open CMD as administrator
- CD to Uipath studio folder
- run command
regutil activate /email_address /license_code
- To check if license activated successfully run command
regutil.exe get-info
, it shows complete information about license - To export the information to a file, run command
regutil export-info /out_file=Path-to-store
- What Robot type is used to test an automation workflow?
Ans.
NonProduction
- A Node Locked License...
Ans.
Can be activated and used on a single machine,allows multiple users to work successively on a machine using the same software instance, is available for unattended robots
- A developement robot
Ans.
Activates studio,enables workflow execution on local machine,ensures the ability to connect the local studio instance to orchestrator
- A Concurrent User License is dedicated to a single specific user.
Ans.
False
- Which license types are available for Attended Robots and Studio?
Ans.
Named User and Concurrent User
- Which UiPath Platform licenses can be managed through Orchestrator?
Ans.
Concurrent User,Named User, Concurrent Runtime
- Concurrent User licenses are usually suitable in BPO scenarios, for companies whose employees work in shifts.
Ans.
True
- Named User and Concurrent User licenses can coexist within a single Orchestrator tenant.
Ans.
False
- All the platform licenses (managed through Orchestrator) must have the same anniversary date.
Ans.
True
- For Unattended Robots, the only available Standalone License option is
Ans.
Node Locked
- The number of Concurrent Runtime licenses indicates...
Ans.
The number of robots that can be simultaneously connected to Orchestrator , regardless of the user or machine
- What is the required license type in a scenario where employees must be able to execute processes whenever needed?
Ans.
Named User
- When automating SAP,start with recording the actions, most of the time it will work fine
- To Interact with unrecognised elements you can use ClickText & ClickImage and keyboard shortcuts to reach difficult buttons or menu items
- For
Elusive UI Elements
, simulate human activities that is what human will do activate it - For tabular data you have to use loops , although that is hardly SAP specific
- To Read an tabular data of unknown length, read each row in an infinite loop until an operation fails
- To work on checkboxes and special elements , use the
getAttributes
activity, it shows a bunch of hidden information that can prove to be very useful
- Can SAP client be automated if it is web hosted?
Ans.
It's a trap. SAP is not available on web
- In a situation where a data table cannot be scraped by using Data Scraping but each cell is accessible by selectors, how can the robot extract all the cells from a column with a large number of rows?
Ans.
By generating a selector for the first cell and configuringits TableRow property to iterate through all the rows
- If you want to record a Click activity on an ephemeral element that appears only after focusing on a text-box relative to it, can that be done?
Ans.
Yes, press F2 and in the 3 second pause put the focus on the text-box.
- In a SAP application, you would like the robot to click on a specific folder in a folder hierarchy. The panel containing the hierarchy doesn’t allow more granular selectors inside of it, thus no selector can be created for a specific folder. What can be used?
Ans.
A Click Image activity, A Click Text activity with Native as scraping method.
- Some UI Elements are not selectable in SAP client, but some of them are. Which might be the problem?
Ans.
The scripting is enabled only on the client side
- Which is the easiest method in order to extract a table from SAP that has the scripting enabled on both sides?
Ans.
Using the Data Scraping wizard
- How can the robot identify if a checkbox is checked or not?
Ans.
By using get Attribute activity
- Consider having to click a button which cannot be accessed by using a selector. What other options can be used?
Ans.
Click relative to an element that can be identified by a selector,Use a Click Image activity set to click the image of that button, See if clicking the button can be replaced with sending a combination of keys.
- A Regular Expression, regex or regexp is a sequence of characters that define a search pattern.
- In order to use it:
- You can specify the target search tag by using matching:<tag_name>=’regex’;
- You can specify the search pattern by using <tag_name>='<regex_command>'
e.g.,
aaname={{regex}} matching:aaname='regex'
whereregex is variable with required expression
- Fuzzy string matching is a technique to search strings which are not 100% match, and match a pattern approximately, rather than exactly.
- A selector’s fuzzy search capability enables you to locate strings based on a pattern, rather than on an exact match to your input.
- In order to use the fuzzy search capabilities, you need to include in the top-level tag of the target selector a matching option:
- You can specify the target search tag by using matching:<tag_name>=fuzzy;
- Determines the matching threshold by using fuzzyLevel:<tag_name>=<numerical_value>.
- The values supported are numerical from 0 to 1, a closer to 0 value returns results with lower similarity, and a value closer to 1 returns the results with higher similarity.
- If more elements are found, the target action is executed on the first one.
e.g.,
aaname={{regex}} matching:aaname='fuzzy' fuzzylevel:aaname='0.7'
- Non-Greedy search gives you the option to search the subsequent tags in all the windows that match the top-level tag.
- In order to use the Non-Greedy search capabilities, you need to include in the top-level tag of the target selector an Idx() attribute: You can search through all active window instances for the element matching the top-level tag by using <idx='*'>.
- Please note that the <idx='1'> option only searches through the window instances in focus.
- So if there are multiple tabs open and you want
Bot
to apply or find the given selectors to all tabs without bringing them to foreground then we use theseNon-Greedy Selector
- Non-Greedy Selectors are supported only for and .
Note:
- You should extend the selector definition to have a new namespace for search matching and for the fuzzy level where:
matching = regex, fuzzy, fuzzywords, fuzzyLevel = 0 .. 1
casesensitive
tag allows you to compare any selector attribute in non case sensitive approach- Example
aaname="Piyush " casesensitive:aaname='False'
- WebDriver is a remote control interface that enables introspection and manipulation of Document Object Model (DOM) elements in web browser.
- The Document Object Model (DOM) is a cross-platform and language-independent interface that treats an XML or HTML document as a tree structure wherein each node is an object representing a part of the document.
- Using this protocol, headless browser automation (simulate work) becomes possible automating web pages through the WebDriver API,without having to install extensions and even without using the GUIs
- Headless testing is when you run a UI-based browser test without showing the browser UI. It's running a test or running a script against a browser but without the browser, UI starting up.
- Types of supported drivers:
- Start by downloading the WebDriver executable corresponding to the browser you want to use;
- Install and download WebDriver in a location of your choice,such as
C:\webdriver\Chrome
- Select the Path variable either from User or System and Edit
- Click and set path as
C:\webdriver\Chrome
- Restart the Robot Service for the changes to take effect and you are good to go
- To enable the
WebDriver
capabilities in your browser activities select the browser you are using from theBrowserType
field , then the WebDriver option from theCommunications Method
- To perform activities without the
Headless Browser
leave theHidden
checkmarkunchecked
within theProperties panel
else vice-versa
- In New Orchestrator, we have 2 types of triggers:
- Time Triggers (ex Schedule) : plans a recurrent job
- Queue Trigger : Triggers job whenever new items are added to Queue
- A Queue can have only 1 trigger associated with it
- When we enable an SLA,the association between the process and the queue is automatically made
- A Credential Store is a named location within a secure store from which you can retrieve robot credentials and credential assets when needed.
- Mostly Used ones are:
- CyberArk integration
- Azure KeyVault integration
- Orchestrator database (default)
- To add 3rd party plugins, edit the
web.config
file found in theinstalled orchestrator
files by looking forplugins.SecureStores
and add file names simply by adding values using comma.
and restart orchestrator service
- The activities are built on top of the official APIs or SDKs provided by the technology vendors (e.g. Microsoft, Amazon, VMware, Citrix, and others)
- The activities run in the background, not via the UI
- The activities are developed and owned by UiPath
- They are published on the official feed and we offer long term support and official maintenance
- The activities are certified and scanned with
VERACODE
andFOSSA
- Easy to Use - Easily create, update, manage and run IT automation processes
- The list of supported technologies is continuously expanding - Automation for On-Premise and Cloud IT infrastructures & services, User Management systems, Virtualized Environments;
- Seamless integration - secure integration with your existing Systems & Applications.
- Examples: Deploy Server(Cloud/onprem), AD-Create User/Reset User Password, VMware export VM to OVF...and many more
- easy to use by drag and drop
- reduced setup time
- background running via APIs
- no additional costs with implementation
- blends with your existing partner ecosystem
- secure Veracode certified
- official long-term support by UiPath
- Self Service & Delegation, Triggers, Integrations
- schedule jobs from the Orchestrator web application - for example, the controlled maintenance power-off of a datacenter
- jobs automatically triggered by an event - for example, a password reset based on a ticket
- nightly trigger a servers power-off job to stop unused computers and save costs.
- Orchestrator mobile app
- start process jobs from your mobile devices
- access logs and reports on the go
- reply to Long Running Workflows approval requests
- react to critical IT requests in real time.
- Integrate the existing IT scripts in the UiPath automations
- increased security - for example, credentials can be safely stored in Orchestrator assets or secure vaults
- access control - delegate workflow executions to other colleagues
- mobility: run them on the go
- integrated with approval and persistence
- support for Audit / ISO certifications - logging layer and reporting.
- Microsoft Active Directory
- Active Directory (AD) is a directory service that Microsoft developed for the Windows domain networks. It is included in most Windows Server operating systems as a set of processes and services. Active Directory uses Lightweight Directory Access Protocol (LDAP) versions 2 and 3, Microsoft's version of Kerberos, and DNS.
- Fore more info
- Domain Controller
- A Server running in Active Directory Domain Service(AD DS) is called a domain controller.It authenticates and authorizes all users and computers in a Windows domain type network-assigning and enforcing security policies for all computers and installing or updating software
- sAMAccountName
- The sAMAccountName property is a login name used to support clients and servers from the previous versions of Windows, such as Windows NT 4.0,Windows 95,Windows 98, and LAN Manager.The login name must be less than 20 characters and be unique among all security principal objects within the domain
- Fore more info
- Microsoft Exchange Server
- Microsoft Exchange Server is a mail server and calendaring server developed by Microsoft. It runs exclusively on Windows Server operating systems
- Fore more info
- MailBox
- User mailboxes are Exchange mailboxes that are associated with people,typically one mailbox per person. Each user mailbox has an associated Active Directory account that gives the person access to the mailbox to send and receive email messages and create meetings and appointments
- Fore more info
- Exchange Management Shell
- The Exchange Management Shell is built on Windows PowerShell technology and provides a powerful command-line interface that enables the automation of Exchange administration tasks.
- It can be used to:
- Create email accounts
- Create Send connectors
- Receive connectors
- Configure mailbox database properties
- Manage distribution groups
- Bulk Operations
- In fact, when you do something in the Exchange admin center (EAC), the Exchange Control Panel (ECP), or the Exchange Management Console (EMC), it's the Exchange Management Shell that does the work behind the scenes.
- Fore more info
- Active Directory Server
- Username
- Password
-
It offers activities for Microsoft Active Directory Domain Services (AD DS)
-
It provides a hierarchical data storage for objects in a network.This set of activities enables IT professionals to easily automate important operations with Active Directory objects like users,groups,and computers
-
Possible operations that can be automated are:
- Creating and updating user groups
- Managing group membership
- AD object management
- Access control and
- rights management
- Install Exchange Management shell on the Exchange Server
- The machine where the workflow is running should be domain-joined with the Exchange Server, and access should be available - FQDN(Fully Qualified Domain Name ) of the Exchange Server should be known/resolved by the robot machine. e.g., Mail.devsl.local
- It offers administration activities for On-Prem Microsoft Exchange Server 2016 and 2019
- With these activities, you can delete and create Exchange mailboxes , as well as enable and disable archiving for existing mailboxes.
- Employees Onboarding
-
When a new employee is hired in a company, the HR department provides the input for a UiPath automation process which can be in any format, let's say Excel.
-
Our workflow will create a corresponding new user account in Active Directory, will generate a random password for it and will set it to expire after the first login, and lastly adds the user account to a list of specified groups.
- Employees Offboarding
- When an employee leaves the company, the associated Active Directory user account is removed from the groups it belongs to and the user account is disabled.
- Password Reset & User Account Unlock
-
These are the most common IT operations that are happening on a daily basis in any company. Automating them will make the life of IT admins easier.
-
For example, employees can make requests to an IT Help Desk Chatbot which automatically triggers a UiPath process to respond to their requests for password reset or user account unlock. This can happen almost instantly.
- Active Directory Objects Management
-
These are the most common IT operations that are happening on a daily basis in any company. Automating them will make the life of IT admins easier.
-
For example, employees can make requests to an IT Help Desk Chatbot which automatically triggers a UiPath process to respond to their requests for password reset or user account unlock. This can happen almost instantly.
- Access Control & Rights Delegation
- You can manage the access to miscellaneous resources via Active Directory group memberships.
- A Long running workflow is a workflow which needs to wait for an external service to complete a period of time to pass or a Human user to provide input before it can continue
- These go into a
suspended state
until the conditions are met for it to resume. This greatly reduces resource usage - While the long-running workflow is waiting, the workflow context (The state variables ad of the execution) remains persistent
- When executing a set steps
synchronously
,like in the case of aFor Each
activity, the system waits for each iteration of the loop to complete before executing to the next one. - When executing the steps
asynchronously
,like in the case of aParallel for Each
activity ,multiple transactions can be processed at the same time. The transactions are executed in differentthreads
. Threads are series of activities that can run concurrently.
-
When our process will run in an unattended environment and requires that we use a rules engine to stitch together robot tasks, human tasks and asynchronous processing.
-
When the execution of our process needs to wait for an event to complete and we don't want the robot to keep polling for resources
- The
Universal Blob Storage
allows you to publish a set of generic storage API methods. By using this approach, the application services become agnostic of the native storage provider - The UBS makes the process of switching between different flavours of storage solutions easy and transparent, facilitating cost optimization, performance scaling and data center improvements
- Storage ~> Abstract a key-value storage solution.The Storage Client API interface is compliant with the Object Storage cloud terminology.The API user should design the data with respect to a flat model(bucket like).
- Storage Provider ~> The underneath implementation of the persistence system, the storage wapped by the Storage Client API interface
- Storage Bucket ~> Bucket as it is described by the Object Storage concepts. By analogy with the traditional file systems, the bucket should be read as a disk volume
- Storage Content ~> The actual data being persisted into the wrapped storage solution
- Storage Content Prefix ~> The mechanism to logically group the saved content under a single bucket
- Storage Location ~> It fully describes the location of the content inside the storage, that's the tuple (key,prefix,bucket). The key must be unique across the enclosing bucket
- Storage Transaction ~> It's a best effort mechanism to address the all-or-nothing request for a set of storage commands
- To install, first we need to remove
UIAutomation
activities which comes pre-installed - Go to Manage Package and install
Computer Vision
activities package given officially byUiPath
- It Gives various activities and Computer Vision Recorder
- server path is
cv.uipath.com
ESC
~> Stop RecorderF2
~> DelayF5
~> Refresh CV scopeALT + left
~> to back to main page- All the activities are selected based on
Anchors
yellow color
~> Similar selections are present on screenred color
~> Selection is not unique or does not have proper unique anchorgreen color
~> selection and its anchor is unique and usableCV Highlight
~> This activity is used to highlight any particular element in our workflow during execution. It can useoutput object
of some activity as itsinput object
to detect and highlight an object/element- Article for more learning
Taxonomy Manager
~> Create and edit a set of document types that are sorted by Groups and Categories- The created taxonomy can be used by converting it into a .NET data type with the
Load Taxonomy
activity - The
Digitize Document
activity is used to turn the docs into digitalized docs generating classification algos used by theClassify Document Scope
activity - The
Classify Document Scope
activity allows for the usage of any classification algorithm to identify the type of a document classificationResults.Any
tells if classification is possible or data is possible to be extracted- The
Data Extraction Scope
activity enables us to retrieve information from documents based on the taxonomy and document type by calling the data extraction algorithms we configure - The object can be mapped to a DataSet using the
Export Extraction Results
activity, or used as-is for more complex queries - The
Train Classifiers and Extractors scope
activity allows for the completion of the feedback loop for any classifiers and data extraction algorithms capable of learning ( the Keyword Based Classifier for example) - Important Docs to be referred when using these activities Intelligent OCR activities
- These are similar to IQBot functioning
- Used to automate applications inside Remote Applications
- Needs to be installed in Remote Systems
- Can be obtained through Contacts form from UiPath website easily
- helps to use any NativeDesktop RDP and Citrix Automation
- The RPA Solution Architect will design the end-to-end architecture of the RPA solution,typically this is achieved through a diagram that represents the logical connections between the robots, the entities used, all the involved sub-processes, and the input and output data
- Involved in various stages such as development,testing and performance analytics
- Decide how many robots to be used,what their configurations are going to be and how they will be split between files and Orchestrator assets as well as what Queues, schedules and documents will be used
- Logging and Reporting
- Needs knowledge of Servers,storage,firewalls,load balancers, routers etc.
- Infrastructure Setup (Enable)
- Designing the server architecture
- Installing and configuring the architecture
- Setting up dev,test & production environments
- Project Governance (Preparation)
- Agreeing on the project development approach
- Reviewing the RPA best practices
- Workflow Design (Design)
- Filling the Process Design Document (PDD)
- Creating test cases and data
- Designing the solution
- Workflow Development (Build)
- Building the workflows
- Performing Unit and Functional testing
- Creating the Development Specification Document (DSD)
- Quality Assurance (Test)
- Executing the test cases
- Reporting the results
- Making the Go/NoGo descision
- Hypercare (Sustain)
- Performing workflow support
- Managing Changes and improvements
- The Python Activities can be used using the Package
UiPath.Python.Activities
- This Package Consists of following activities:
- Python Scope
- Load Python Script
- Invoke Python Method
- Get Python Object
- Run Python Script
- This Activity is used to set or connect UiPath robot with python environment installed on your system.
- This activity requires path to the folder containing the
python.exe
file - UiPath currently only supports python version < 7
- The Path to
python.exe
can be acquired from the Windows Environment Variables tab - Make sure
python 3.6 or less
version can be accessed by cmd usingpython
keyword.
- This activity enables two kind of inputs
- Code ~> You can just type the complete code as within "" ( Double Quotes)
- File ~> Best approach is to write your code in a python file and give path to the file in this input field
- This activity gives an python
instance
to be referred to in another activites
- This activity is used to execute specific functions from our python code that are present in
python instance
which is the output of theLoad Python Script
activity - This activity enables 3 kinds of parameters:
- Input Parameters ~> Any number of input you would like to provide to your function. This input should be in the format of
object
The object should be like{"some string","charcater like /"}
Assuming our python code is
from collections import Counter
def CalculateCharacterLength(string,char):
strDict = Counter(string)
return strDict[char]
- Instance ~> It takes
python instance
to work upon - Name ~> The input to this field is the exact function name to be called
- The output of this activity is a
python object
orpython instance
which again needs to be converted to.net object
to be used along with other activities
- This activity is used to Convert
Python object
to required data type to be used in other uipatha ativities
- This activity is used to execute any python code as similar to double-clicking an python
.py
file
- To Send Images in Email Body embeded inline, we can use following python code along with our bot
# Send an HTML email with an embedded image and a plain text message for
# email clients that don't want to display the HTML.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
def SendMail(From,To,Password,Message,Subject,ImgPath):
# Define these once; use them twice!
strFrom = From
strTo = To
# Create the root message and fill in the from, to, and subject headers
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = Subject
msgRoot['From'] = strFrom
msgRoot['To'] = strTo
msgRoot.preamble = 'This is a multi-part message in MIME format.'
# Encapsulate the plain and HTML versions of the message body in an
# 'alternative' part, so message agents can decide which they want to display.
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
#msgText = MIMEText('This is the alternative plain text message.')
#msgAlternative.attach(msgText)
# We reference the image in the IMG SRC attribute by the ID we give it below
# '<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1" width=20px height=30px><br>Nifty!'
msgText = MIMEText(Message, 'html')
msgAlternative.attach(msgText)
# This example assumes the image is in the current directory
fp = open(ImgPath, 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# Define the image's ID as referenced above
msgImage.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage)
# Send the email (this example assumes SMTP authentication is required)
smtp = smtplib.SMTP('smtp.gmail.com',587)
smtp.starttls()
smtp.login(strFrom,Password)
smtp.sendmail(strFrom,strTo,msgRoot.as_string())
smtp.quit()
return "Mail Sent"
-
Software Testing ~> Software testing is the process of verifying that a software meets certain requirements and behaves as expected
-
The requirements can be differentiated into 2 aspects:
- Functional ~> refers to an expected behaviour
- Non Functional ~> System Efficiency
-
Different levels of Testing:
- Unit or Component Testing ~> In this one we focus on testing individual 'code' units, down to the level of methods and functions (done by software developers)
- Integration Testing ~> In this we focus on the interactions between the components or systems
- System Testing ~> In this we focus on the behaviour of an entire software system or product. Also referred to as End-to-End testing
- Acceptance Testing ~> In this testing, we include end users and other key stakeholders, to check how the users behave with the software differently or as intended.
-
Different types of testing:
-
Black Box Testing ( Focus on Input & Output ) ~> Black box testing solely focuses on providing a certain input and verifying the output
-
White Box Testing ( Access to Implementation ) ~> White box testing provides a certain amount of access to the source code to the tester
-
Manual Testing (Run by a person) It is further divided into * Scripted (Requires Processing) ~> pre-defined steps of operations, followed by specific verification steps * Exploratory (Requires Thinking) ~> Manually performed, but it typically provides only a high-level charter,then it leaves the rest to the actual testing to explore in detail.
-
Automated Testing ( Run unattended by a Robot ) It is further divided into * UI Testing ~> Test the business layer * API Testing ~> Test the API layer. It includes several interfaces and protocols, such as Soap, Rest, Queues and many other
-
-
Activity Coverage Widget -> The Activity Coverage Widget calculates the total number of activities that were successfully run form the original workflow or flowchart.Once an activity has run successfully it will be become green.While the workflow runs the widget gets updated in real time.
-
The coverage of each individual workflow can be verified individually by highlighting them;
-
When creating new test cases in StudioPro by right-clicking an RPA Workflow and selecting
Create Test Cases
you will be presented with the standard Given, When, Then containers structure -
The RPA workflow which was right-clicked was automatically invoked in the When section
-
The Then section acts as the verification point. This is achieved by using a Verify Control Attribute activity that checks if the path for the output folder has been created.
-
Data-driven test cases
can be easily created by right-clicking simple test cases and selectingAdd test data
or by selecting theCreate Data-Driven Test Case
button from the ribbon section -
For any changes in the excel, the user needs to reload that test data into the bot
-
The Studio, itself builds
arguments
with same name ascolumn name
to use excel data -
Verify Control Attribute -> This activity checks if the output of any activity is equal to the given fixed input
-
The output of this activity is visible in the
Output Panel
- For more info on
Jenkins
integration withRPA
, Check Out
- This topic is divided into 7 sections:
- Introduction
- Taxonomy
- Digitize
- Classify
- Extract
- Validate
- PostPreprocessing
- Introduction
- Document Understanding is the ability to extract and interpret information and meaning from a wide range of document types, storage formats (e.g., images, PDFs, text), and objects (e.g., handwriting, stamps, logos).
- There are two types of data extraction methodologies:
- Rule-Based data extraction
- Model-Based data extraction
- Rules-Based data extraction ~> It relies on a set of rules to extract data from a document (like using regex)
- Model-Based data extraction ~> It is based on Machine Learning
- Semi-structured document ~> it extracts the same data from each document, and it requires a pre-trained ML model with further retraining
- Non-structured document ~> It needs to "read" the text to extract the meaning and identify the right data.Thus it also requires pre-trained models and retraining.
- OCR is a method that reads text from images,recognizing each character and its position.It comes handy in the Digitize step of the process when dealing with non-native documents, like scanned files
- Taxonomy ~> In this pre-processing step, you can add multiple document types and the fields you are interested in extracting.e.g., Total Amount,Patient Name , User/Product Id etc
- Digitization ~> As the documents are processed one by one, they go through the digitiation process.The outputs of this step are the
Document Object Model
and astring variable
containing all the document text and are passed down to the next steps - Classification ~> If you are working with multiple documents types in the same project, to extract data properly you need to know what
type of document
you're working with. The important thing is that you canuse multiple classifiers
in the same scope,you canconfigure the classifiers
and, later in the framework,train
them. The classification results help in applying the right strategy in extraction - Extraction ~> Extraction is getting just the data you are interested in. In this framework, you can use different extractors, for the different document structures, in the same scope application.The extraction results are passed further for validation.
- Validation ~> The extracted data can be validated by a human user through the Validation Station. Validation results can then be exported and used in further automation activities
- Export ~> Use the validated information or save it in datatable or anywhere else you want.
- Training Classifiers and Extractors ~> Classification and Extraction are as efficient as the classifiers and extractors used are.If a document wasn't classified properly, it means it was unknown to the active classifiers. The same way goes for the incorrect data extraction.
- Taxonomy Manager ~> With the Taxonomy Manager Wizard, you can create the Taxonomy for your document understanding project, meaning the information that you want to extract and the type of that information. e.g., Data Table,Text,Date etc
- Load Taxonomy ~> Loads the taxonomy created with the help of the Taxonomy Manager into a variable that can be further userd with other activities
- Digitize Document ~> For scanned documents or images, this activity will use OCR to extract the text and the
Document Object Model
, a JSON object containing information regarding the positions of the words on the document. (For digital documents, the text will be extracted without the use of the OCR engine) - Classify Document Scope ~> The scope allows multiple classifiers to be used in order to classify the documents. You can find classifiers in the intelligent OCR actvity package, as well as in other UiPath or third-party packages(e.g., Abbyy activities)
- Configure Classifiers Wizard ~> Use it to configure the Classify Document Activity. It allows multiple classifiers to be used in order to classify the documents. You can also establish a confidence threshold for each type of classifier
- Data Extraction Scope ~> The scope allows multiple extractors to be used in order to extract the data from the documents. e.g., UiPath.DocumentUnderstanding.ML.Activities or your own extractor
- Configure Extractors Wizard ~> With this Wizard, you can customize which extractors will be used for each individual field,of each document type.
- Present Validation Station ~> Opens the Validation Station, which enables you to review and correct document classification and automatic data extraction results.
- Integrated Validation Station ~> This activity pair allows for the creation of Validation Station human tasks in a web-based environment, through UiPath's Actions
- Validation Station ~> The extracted data can be corrected and confirmed by a human user through the Validation Station
- Export Extraction Results ~> Once you have extracted information, you can use it as it is, or save it in a DataTable format that can be converted very easily into an Excel file
- Train the Classifiers and Extractors used ~> Sometimes, the workflow may fail to recognize the document or extract the correct data. To improve the classifiers and extractor's performance, even if they recognized the correct data, they should be trained.
- It starts with categorizing the documents and defining the information you want to extract.
- Group the documents based on the department or purpose of the documentextract tables and names or even pick the language document is written in.
- There can be only
one taxinomy file
per project stored inDocument Processing
folder under the project folder - Once the taxonomy file is created then it can be used in the workflow using
Load Taxonomy
activity
- Defining the Document Type:
- Select or create the group and category that the document is a part of
- Add new document type and define its fields
- Note: A group can contain multiple categories and a category can contain multiple document types
- Defining Document Fields
- Editing the name of the document,its belongings, and define the fields that interest you in extracting
- Defining the fields in the document, selecting the area and pairing them with their respective variable
- New Field ~> Selecting New Field opens up the window on the right,where you can edit the field's information
- Editing the Documents Field
- Choose a name for the field,specify whether it is multi-value and choose its type Taxonomy Manager Doc To store taxonomy file at different location
- All the documents that are to be processed (native and scanned) must pass through this step in order for the robot to understand the kind of document it's working with and what data is relevant
- Turning the document into a
DOM
and extracting the text is done with theDigitize Document
activity - The
Degree of Parallelism
defines how many pages the workflow will analyze in parallel - Supported Entensions are: .png, .gif, .jpe, .jpg, .jpeg, .tiff, .tif, .bmp and .pdf More About Digitize Documentation
- This contains basic information regarding the processed document such as name,content type,text length, and information about each page
- Variable data type is
document
- It is used during validation For More...
- This step is used when dealing with multiple document types
- It is done using
Classify Document Scope
activity - The
Document Classification Scope Wizard
will open at selecting theConfigure Classifiers
option and it allows users to customize which classifier will be used for each individual type of document - For this, first we create a classify.json file
- We have 2 classifiers by default
- Intelligent Keyword CLassifier
- Keyword Based Classifier
- Keyword based requries various kinds of keywords that may came up in the document in different forms, such as for Invoices : statement,invoice,invoiec , in-voice, in voice etc
- Configure Classifier is used to select the document type for which the classifer is supposed to be used
- We can have multiple classifiers used at the same time
- In Many cases, document files comes as a
package
. within the same file, there are multiple document types that contain different sets of information and which need to be treated separately as far as data extraction and post-processing goes. - This activity is used to :
- manually
split
files into logical documents, by selecting a document type and a tange of pages applicable for it - Verify any automatic classification and splitting of a file into logical documents and perform correctios to the automatically proposed classification and separation
- manually
- Steps:
- After the
Classify Document Scope
, add thePresent Classification Station
activity - At run time, the classification station will open and show the automatic classification results
- If needed, one can adjust the Classification results.
- After clicking on the Save button, the workflow continues with the human validated classification information Classification Station Doc
- After the
- This is the step to extract the required data from the documents
- Based on the structure of the document, different extractors come to play
- The
Data Extraction Scope Wizard
will open at selecting theConfigure Extractors
option and it allows users to customize which extractors will be used for each individual field - It allows users to mix and match extractors as well as use extractors in parallel based on which extractor has the highest confidence level
- If
classification result
is provided thenDocument ID
is not required - Steps to work with
form extractor
:- We added the Form Extractor inside the Data Extraction scope and provided the API Key from the Cloud Platform account. Next, we started to Manage Templates
- Created a new template for the W-4 form, using a file from the project's folder, and the OmniPageOCR and we stared configuring it
- We matched the first page with representative keywords. To make the multiple selections, we pressed the CTRL key
- We started matching the fields with the values defined in the taxonomy. We did this either by choosing the selection mode or pressing the D+X keys.
- When we finished mapping all the values, we saved the template.
- For unstructured or semi-structured data, we can also
regex based extractor
- For semi-structured data, ML Extractors can also be used
- They can be installed using
UiPath.DocumentUnderstanding.ML.Activities
package - Things to remember:
- The endpoint for community work is
https://invoices.uipath.com
- API key can be found at
platform.uipath.com
- Set-up each field in correspondant to pre-configured field types/names
- Other Endpoints can be found at
- The endpoint for community work is
- For 100% accuracy of the results, human validation is always recommended. This step is triggered by the
Present Validation Station
activity
- This activity triggers the opening of the validation station.
- It's the tool that allows you to review and, if necessary correct the document classification and automatic data extraction results
- Use this activity inside a Try-Catch activity to check and workaround of business exceptions
- For More...
- After you validate the extracted data, you can export it to whatever environment you need in order to consume it. The extraction results can be exported as a DataSet variable which can be further processed.
- This activity export the data extracted to a DataSet.
- When used with the automatic extraction results and the
IncludeConfidence
flag is to True, it is the perfect way of accessing the extracted data,with the purpose of any RPA-based validation logic available - The DataSet variable output by the
Export Extraction Results
activity has a fixed structure as follows:
- Table named
Simple Fields
~> Contains columns with name equal to each field name in your document type, and the values ( on the subsequent lines ) pertaining to each field. More than one value in a column is possible if :- You define a field as
multi-value
in your taxonomy - for a field, with multiple
suggestions
- You define a field as
- Table named
Simple Fields - Formatted
~> it is same assimple fields
but it provides the output in proper formatted way like for dateYYYY-MM-DD
and for Address and Name fields, these values contain a JSON representation of the Address and Name parts respectively - A collection of tables ~> two for each table field in the document type
Note:It is strongly recommended, for easy identification and understanding of the output DataSet content, to exercise by looping through
the DataSet.Tables
in a For Each
activity, and writing each Table in a sheet of an Excel file using the Write Range activity.
- This activity has ability to train the classifiers using either the output of the Human Validated Classification Station or the output of the Validation Station - as both sets of information are human confirmed and can be ingested by the classifiers to self-learn
- It is used using
Train Classifier Scope
activity
- Used got extracting handwritten words/characters from documents
- Has few limitations for Community edition:
- The size of the documents is limited at 1 page.
- Community endpoints are rate-limited per IP address at 50 requests per hour.
- If the rate-limit is reached, an 429 - Too Many Requests error is displayed, and the IP address is blocked for 1 hour. To Learn More...
- Note: This process is not officially supported by UiPath
- To Schedule your bot, follow the given steps
- Publish your bot to packages that is create a
.nupkg
file - Create a
.bat
file with content as"Path-to-UiRobot.exe" -file "path-of-nupkg"
e.g.,"C:\Users\piyus\AppData\Local\UiPath\app-20.6.0-beta0093\UiRobot.exe" -file "C:\ProgramData\UiPath\Packages\JU.ParentPortal.1.0.1.nupkg"
- Open Windows Task Scheduler
- Click on Create Task
- Give some name to your Bot Schedule
- Set
Configure for
toWindows Vista , Windows Server 2008
- In
Triggers
tab create a new trigger, selectOn a Schedule
and set some time - In
Actions
tab, set things as- Action: Start a Program
- Program/Script: cmd
- Add a argument: /c "file-name-with-extension"
- Start in : path-to-the-directory-containing-file(without double quotes)
- In
Conditions
tab, uncheck the box withStart task only at AC Power
- Click ok and close the scheduler, bot is scheduled successfully
- Publish your bot to packages that is create a
- Process discovery is a set of tools and techniques that helps us understand how business processes are executed.
- For processes,a healthy transformation pipeline always starts by having a transparent view of how processes look like today. Using
Process Discovery
, we can get insights on our as-is processes and use these insights to define and implement the to-be. - Ways to do process discovery:
- Manual Process Discovery -> Human led activity in form of shadowing, interviews, and reviewing documentation
- Technology-led approach -> Uses data mining and artificial intelligence technologies to analyze process data
- Hybrid Model -> Integrating both 1 and 2
UiPath Process Discovery
provides 4 tools :- UiPath Process Mining: Leverages back-end data from busniess applications to discover and prioritize automation
- UiPath Task Mining: Records apps while people perform a task and uses AI to identify repetitive tasks
- UiPath Task Capture: Records the steps taken to perform a task and generates documentation
- UiPath Automation Hub: Crowdsources ideas from employees and manages the automation pipeline
- In this process, a key business analyst is request to analyze the process, documents and key details
- Humans perform
shadowing
andInterviewing
for theSubject Matter Experts
to define the end-2-end steps of performing the process Process Owners
are interviewed to understand theProcess Model
followed byStakeholder
to figure out thePain Points
- Challenges:
- Lack of Transparency
- Low accuracy
- Process Variations -> different ways to perform a single process
- High Cost
- Lack of Monitoring
- It ia collaborative tool for automation opportunity identification,pipeline management and process repository
- Automation Hub is used by :
- Employees with automation ideas ~> Business users need transparency on the automation program, on the one hand,and an easy way to contribute their ideas and expertise
- The C-suite ~> The C-suite needs a single source of truth on the performance of the automation program, as well as reliable and easy to read information for the decision making process
- Center of Excellence Leaders and their teams ~> Center of Excellence members need one place to store all the information, documentation and contribute to the automation ideas to turn them into reality.
UiPath Automation Hub
can be used by theAutomation COE
to assess, approve, prioritize and implement automaiton projects and track thebenefits
- UiPath Process Mining is a Process Mining Solution that transforms data from your IT systems into visual interactive dashboards,allowing you to see existing value decreases, bottlenecks and discrepancies, as well as understanding the root-causes and possible risks.
-
Process mining uses data in IT systems to generate process visualizations that help understand how that process is performing
-
Process Mining can connect to existing data in systems, then transform it, and use it to create process visualizations
-
Benefits of UiPath Process Mining:
- Connect to process data -> Connect to data in out IT systems to analyze the digital footprints left behind by systems and applications
- Visualize -> all bottlenecks, inefficiency, variations and exceptions
- Streamline -> Identify opportunities for streamlining our process
- Monitor -> Monitor the evaluation of the process after enhancement have been implemented
-
Challenges faced by process mining:
- Quality of data analyzed
-
Data gathered by the
Process Mining
can be used byProcess Analyst
for- Process Discovery
- Process Conformance
- Workforce Intelligence
- Process Standarization
- Process Optimization
- Automation Identification
- Process Monitoring
-
Admin Panel ~> A cloud hosted web application that allows the customer to configure the projects. The portal enables an admin to invite and manage users, configure project settings and visualize results from past projects
-
User Workstation (Recorder) ~> The Recorder runs on the users machine and collects data about the tasks they perform. To be more specific, the recorder collects data about the application that the user interacts with, captures keystrokes and clicks,and takes a screenshot for each action
-
Processing Queue ~> The Data Preprocessing component analyzes locally all the captured data and removes the non-essential or confidential information, based on the configurations that the admin set. It also encrypts and packages the data in order to prepare it for uplaod.
-
Internal Storage ~> The packaged data is stored on customer premises, in internal storage
-
Uploader Application ~> Using the uploader application, the data is uploaded to the UiPath cloud
-
Analyzer ~> Analyzer will decrypt the data and will apply AI to identify tasks. After the analysis is finished, data can be imported and visualized in the admin panel.
-
Dashboard Tab ~> The Dashboard tab is used to track the progress of the project and keep the stakeholders informed by using the graphical displays of the real-time data available.
-
Users tab ~> The admin can invite users to participate in a study and they can view and manage the users recording status and the user's activity
-
Settings Tab ~> Helps the admins configure the projects by setting up the data volume limits, configuring the folder path for the data to be stored, and managing the list of applications to be recorded
-
Processes Tab ~> The admin can view information about the completed processes and import new files provided by the UiPath Representative after the Analyzer stage has been completed
- Task Mining is used to record the applications being used in a particular task
- Uses a ML model to identify the variations in the process steps
- Process analysts can then analyze the data to:
- Discover tasks and process parts at the team or individual level.
- Create or Update Process documentation using the new insights on how the processes are being performed.
- Identify opportunities for the most repetitive tasks.
-
It is a process discover tool that helps you get detailed insights about automation candidates directly from your employees.
-
It is mainly used by employees with deep expertise on the process analyzed (or Subject Matter Experts, as they are called often) and by Business Analysts.
-
Task Capture is not licensed separately, but rather comes bundled with Automation Hub. For every Automation Hub license, you will get an unlimited amount of Task Capture activations.
-
Features
- New Process Definition Document (PDD) template
- Save the diagram as an image
- New localizations
- Offline activation
-
Records the Steps in details with
Screenshots
,Keystrokes
,Mouse Click
andMetadata
-
Post recording it documents everything into end to end task which is send to the
Automation COE
- To send any message using telegram bot API, we will require a bot agent to send messages as a user
- To create a Telegram Bot:
- Open Telegram and search for BotFather (telegram official user)
- Join the channel and send message
/newbot
- Give a name to your Bot and a unique Username
- Once done you will receive a message similar to
Use this token to access the HTTP API: 136XXXXXXX:AAHYYYYYYY Keep your token secure and store it safely, it can be used by anyone to control your bot.
- Save the
HTTP API
token which is yourBOTToken
very securely as it can be used to send messages using your created bot. - To use the created bot, we need to add it in some group and for that:
- Create a new group
- Add all the members you want to be in that group
- click on
Add Member
and search for@BotUsername
where BotUsername is the username provided by you while creating Telegram Bot
- Now the final thing required is our
chatid
for that:- Open Browser
- Navigate to
https://api.telegram.org/bot<YourBOTToken>/getUpdates
- You will see a message similar to
"message":{"message_id":2,"from":{"id":607760321,"is_bot":false,"first_name":"Piyush","last_name":"Agarwal","username":"Pykid","language_code":"en"},"chat":{"id":-1001266203044,"title":"Test","type":"supergroup"},"date":1598157993,"text":"Hello"}}]}
- Copy and save the chat id as found in this message
-1001266203044
and now we are ready to integrate it with our own Bots
- In Manage Packages, include
UiPath.Web.Activities
- Using
Http Request
activity set, the end point ashttps://api.telegram.org/bot<BOTToken>/sendMessage?chat_id=<ChatID>&text=<TextToSent>
- Request Method can be
POST
as well asGET
- Accept response as
JSON
- Authentication is not required so set it as
None
andClient Certificate fields
asEmpty
- You can test by clicking on
Preview
and if you receive the Response as
{
"ok": true,
"result": {
"message_id": XX,
"from": {
"id": XXXXXXXX,
"is_bot": true,
"first_name": "Testbot",
"username": "Testbottestingbot"
},
"chat": {
"id": XXYYYYYYY,
"title": "Test",
"type": "supergroup"
},
"date": 1598160256,
"text": "Hello World"
}
}
- And you Bot is ready.
- UiPath uses
UiPath.Database.Activities
package to inegrate with database
- Connect ~> To connect to the
MySql
database set the connection string as"Server=localhost;Database=db-name;Uid=user-name;Pwd=user-password;"
and create an output connectionconn
- Execute Query ~> To Perform
Select operation
on database, use it by giving existing connection asconn
- Execute Non Query ~> To Perform
Insert/Update/Delete
operations on the database - Insert ~> To perform insert operation for a set of rows, this activity is used to insert a complete tabular data in the datatable inside database
- Stored Procedures ~> It can be used by using
Execute Query
activity by changing thecommand type
tostored procedure
- It can be used to create a long string
- Its syntax is
new StringBuilder
with data typeSystem.text.StringBuilder
- A good use-case is to send DataTable as Mail Message to anyone
- Steps to Convert Excel DataTable into Html Table:
- Create a
StringBuilder
variable calledstrbuilder
- Use
Append
function ofStringBuilder
to append text forHTML
codebuilder.Append(" <html> <head> <style>th,tr,td{border: 1px solid black;}</style> <body> <table><tr>")
- For each column name to be inserted as header, use
For each
activity with value asDataTable.Columns
and data-type asSystem.Data.DataColumn
- Append the column headers as
builder.Append(" <th>"+item.ColumnName.ToString+"</th>" )
- Similarly Append cells values for each row and every column of individual row
- Create a
- UiPath Apps is the latest feature of UiPath 2020 that gives you freedom to develop & customize an App like interface and integrate with your Orchestrator & UiPath Bot
- For this Application,
npm
should be installed in system. - You can download it using Node JS
- Once the Process is ready -> Convert into package and publish it to Orchestrator
- Go to UiPath Sample Application
- Download the Zip file
- Open
Main.js
file and do the required minor changes- Change RUNTIME URL : This is the URL of your UiPath App, After publishing your app when you open it, the url of the browser is what we need
- Window Paramet : if you wish you can change the window size
- Open
package.json
, here you can change thedisplay name
which is the title of windows application icon.jpg
image is the Windows Application icon, that you can replace with any other image just with same name- Once done, open your
cmd
and move to respective directory with files - Run the command,
npm start
-> It will verify for requirements necessary for our application - Run the command,
npm run dist
to develop the final.exe
files which can be run on client machine - This application requires
Bot
to be connected toOrchestrator
so that app can properly trigger the bot
- We can create an app and allow any person to access it without installing UiPath in his system
- The User would need to just create an account on UiPath Cloud and the creator of app should add the user in his organization
- Role -> It can be understood as an position in the Tenant with specific powers/privileges to services
- Group -> It is a group of users you want to categorise with similar powers
- UiPath App Roles -> In UiPath app there are 2 roles which can be provided to a user (only one per user)
- User (can run) -> User with this role will only be able to run the app
- Co-Author (can edit and run) -> User will be able to edit the app and run as well
- Create a new
Group
(will be helpful with multiple users)- Login to your UiPath Cloud
- Go to
Admin
->Users and Groups
- Click on
Groups
->Add Group
- Give a name, say
UiPath Apps
- Create a new
Role
- Launch your
Orchestrator
- Go to
Tenant
->Roles
- Add a new
Role
, sayAppUser
- Add Tenant Permission : Webhook (View) and Folder Permission: Job (Create)
- Click Review and Submit
- Launch your
- Add the group created in step 1 to
Orchestrator
- In
My Folders
, selectDefault
-> the folder to which user would have access - Go to Settings (Top Right)
- Click on
Assign User or Group
- Enter
UiPath Apps
and click onAssign
- In
- Assign a role to this group
- Go to
Tenant
inOrchestrator
- Go to
Users
- You will see
uipath apps
listed, click onMore Actions
- Select
Edit
and chooseRole
asAppUser
andUpdate
- Go to
- To add any user to this group
- Go back to your UiPath Cloud
- Go to
Admin
->Users and Groups
- Click on
Users
- Click on
Invite Users
- Select Group membership as
UiPath Apps
- Enter the users email and click on
Invite
- Finally to give access to run your app,
- Go to your
UiPath App
- From the
More Options
of your createdApp
selectShare
- Click on Add User
- Enter the user name to whom you want to give access
- Assign a Role, say User (can run)
- Go to your
- With this when user accepts the invite and create his account he will have access to your Tenant and will be able to access apps
- User will not have any access to other services or Orchestrator and will only be able to see Webhook calls
- And next time to add a new user, you will just have to add him to
UiPath Apps
Group and give access to specificApp
you want.
- This activity is used to get data from HTML webpages
- It requires a
JS
to be embeded into the code that is
<!DOCTYPE html>
<html>
<!-- Simple HTML Code -->
<body>
<h2>Simple Form</h2>
<form action="/action_page.php">
First name:<br>
<input type="text" name="firstname" id="FirstName">
<br>
Last name:<br>
<input type="text" name="lastname" id="LastName">
<br>
Age:<br>
<input type="text" name="age" id="Age">
<br><br>
<input type="submit" value="Submit" id="SubmitButton">
</form>
<!-- Simple Html code ended -->
<!-- Important Script to get data -->
<script>
document.getElementById("SubmitButton").onclick = function() {
var FirstName = document.getElementById("FirstName").value;
var LastName = document.getElementById("LastName").value;
var Age = document.getElementById("Age").value;
var OutputString = "{\"First_Name\":\"" + FirstName + "\"," + "\"Last_Name\":\"" + LastName + "\"," + "\"Age\":\"" + Age + "\"}";
window.external.setResult(OutputString);
};
</script>
<!-- Important Script to get data ended -->
</body>
</html>
- For better use of the
Output Variable
, we can use thedeserialize JSON
activity from theUiPath.Web.Activities
to create anJSON
object that can be easily used.
- It provides a look of
BootStrap
- Dismissed Property -> Used to check if the form is filled or abruptly closed that is
True
if closed abruptly - To insert data inside forms from outside, we can use
FormFieldsCollection
whereName
refers toFieldKey
and Value we want to insert - To Convert a
datatable
into aJson Object
, we useNewtonsoft.Json.JsonConvert.SerializeObject(Table-Name)
- If above code doesn't work, then open
Imports
and addNewtonsoft
namespace in it - To insert a
DataTable
data inside a form, we just sameTextFields
to represent tabular data for single row withSame FieldKey Name
asColumn Name
placed inside theDataGrid
Component DataGrid
andEditGrid
both works the same way just different with looks- To Create drop-downs dynamically,probably like States and respective city names
// This code will make the do block of form execute without closing the form
const.updateOnChange = instance.updateOnChange;
instance.updateOnChange = function(flags,changed){
if (flags.modified){
instance.emit('dropdownChanged','drop');
}
return updateOnChange.call(instance,flag,changed);
}
- And if the body is executed then again the parameters/variables are reassigned into the form
- UiPath Action Center is the component of the UiPath RPA Platform meant to enable Humans to start processes, then step in, validate, and make decisions regarding the work of Robots in complex processes that require exceptions, escalations, and approvals. Thus, it provides the means for end to end process automation
- Whenever bots require human validation,make decisons or anything in which human input is required then, it can use
Actions Center
to create a form and wait for the input or pause the current task and move to another work - Regardless on how
Action Center
is accessed, be it from On-Premises or Cloud Services, the functionality of the platform will be the same - Users can have
different levels of permission
with the platform, being able toView
orManage
activities. - Users can
resolve tasks
as well asstart processes
from the Action Center platform - If you are looking for a specific task, you can either search for it directly if you remember the
task's name
, use theSort by Priority
orFilter by Priority
functions Activities outside Action Center
such as creating aJira ticket
oradding data to Salesforce
can alsotrigger task creation and completion
inside Action Center.
- Actions Panel -> This is where tasks are managed.Here you can view, select, search for specific tasks and filter through them
- Controls -> Different control options will be displayed depending on the type of interaction required by the assigned activity
- Tab Selection -> From here you can access the Home,Actions and Processes Tabs.
- Tasks -> Here one can view at task in detail.
- Unassigned Action Status -> Once an action is generated for a Human user, it will be displayed in the Actions page with the
Unassigned Status
.This means that no user has been allocated to it - Completed Actions Status -> Once an action is completed by our Human user, it will be displayed in the Actions page with the
Completed status
and this will allow the Robot toresume
the automated business process - Pending Action Status -> If an action is already assigned to a Human user it will be displayed in the
Action page
having thePending status
. Most likely a queue of such items will form and will be completely in order depending on their priority
- UiPath gives the feature to create your own chatbot by integrating the Orchestrator with the dialogflow and leveraging the power of google
dialogflow
engine andNLP power
- To create your own chatbot, visit
chatbot.uipath.com
- Steps:
- Click on
Create new (+)
- Give a name to the
Connection
and Save - Next go to
https://dialogflow.cloud.google.com/
- Create an
Agent
andchatbot
with features as you like and test in dialogflow - In Build Part, Connect your
Dialogflow agent
andOrchestrator Service
- In Map Part, Map the process with
single intent
that has all the required variables - You are all set
- Click on
- Open your
Dialogflow Console
- Click on
Settings Gear
icon - Copy the
Project-ID
and paste in connection details - Open
https://console.cloud.google.com/
- Select your Project,
Same as Project ID
- Go to
Navigation > IAM & Admin > Service Accounts
- Create a
new Service Account
- Give any name to account and role of
Dialogflow API Admin
and click on Done - Copy the Email to Chatbot Connection as
Service Account
- Generate a key from
Service Account
by clicking on the side 3 dots and copy thePrivate Key
toChatbot Console
- Click on connect and you are done
- Set Deployment type as
UiPath Cloud
- Open
https://cloud.uipath.com/
- Go to
Admin
- Open the
Drop-down
of yourTenant Name
- Click on
API Access
- Copy all the details to
Chatbot Console
- Click on Connect and you are Done
- Encryption of content can be done using
UiPath.Cryptography.Activities
- It consists of 4 features:
- Encrypt Text
- Decrypt Text
- Encrypt File
- Decrypt File
- The Algorithms that can be used are:
- AES
- DES
- RC2 (Non-FIPS)
- Rijndael (Non-FIPS)
- TripleDES
- The
Key
orPassword
for the files to be encrypted with areuser-defined
and thus you can basicallyPassword-Protect
your files using this package - Encoding field are the inputed with the methods of
System.Text.Encoding
- The activites are easy to use and can be utilized for maintaining data security over the cloud
- LINQ stands for Language Integrated Query
- Its general syntax is
for <range> in <iterable> where <condition> group <grouping> select <result>
- Few examples for using LINQ with UiPath are:
- To get all rows of datatable as enumerable
from row in DT1.AsEnumerable select row
- To get all distinct values present in a particular column
(from row in DT1.AsEnumerable group row by variable1=row.item(column-name/index) into grp=Group select variable1).toList
- To convert the data table of list elements like above,
(from row in DT1.AsEnumerable group row by variable1=row.item(column-name/index) into grp=Group select Convert.toString(variable1)).toList
- To list different columns from a table just like
SQL
usingaggregate functions
,(from row in DT1.AsEnumerable group row by var1=row.item(0) into grp=Group let col1_sum = grp.SUM(Function(x) CDbl(x.item(column-index))) let col2_sum = grp.SUM(Function(x) CDbl(x.item(column-index))) select {var1,col1_sum,col2_sum})
- To get all rows of datatable as enumerable
- LINQ queries are way faster then normal uipath activities probably
10 times
- To Remove empty rows of all columns
out_dt_LtMapping.Rows.Cast(Of DataRow)().Where(Function(row) Not row.ItemArray.All(Function(field) field Is DBNull.Value Or field.Equals(""))).CopyToDataTable()
- Obtain Data Source
- Define Filters
- Define Grouping Operations
- Define Result
- Its general syntax is
for <range-variable> in <iterable> where <condition> group <grouping-logic> select <result>
- To get a list of range of numbers using LINQ, you can use
(from num in list1 select num+1).toList
- To get the type of Linq Query result, you simply use
GetType
function
- Enumerable Data is a collection of data that can be iterated over, though AsEnumerable is not really required in latest uipath versions
Group
keyword refers to aGroup
type for a variable nameNew With
is something we use when we want to group our rows based on multiple columns and it is used together with another keyword calledKey
- To get the entires column values for a particular column,
from row in DT1.AsEnumerable select row.item(0)
- To get the desired data type for the values in our collection,
from row in DT1.AsEnumerable select Convert.toString(row.item(0))
- To get a list of distinct items in a column,
(from row in DT1.AsEnumerable select Convert.toString(row.item(0))).toList.Distinct.toList
or(from row in DT1.AsEnumerable group row by pn=row.item("column-name"/index) into grp=Group select pn).toList
- To get sum of a column for duplicate columns,
(from row in DT1.AsEnumerable group row by pn=row.item("column-name"/index) into grp=Group select grp.Sum(Function(x) x.item("column-name"/index))).ToList
- To get multiple columns altogether,
(from row in DT1.AsEnumerable group row by pn=row.item(0) into grp=Group let var1=grp.Sum(Function(x) x.item("column-name"/index)) select {pn,var1.ToString}).ToList
- To convert the list to a dictionary, we can use
ToList.ToDictionary(Function(x) x(0),Function(x) x(1))
- To use select function of Group method, syntax is like
grp.Select(Function(x) x.Field(OfString)("columnName"/index))
- To group rows based on multiple column conditions, use
(from row in DT.AsEnumerable group row by pn=New With {Key.A=row.item("column-name"/index),Key.B=row.item("column-name"/index)} into grp=Group select {pn.A,pn.B}).ToList
- To merge different row values for a particular column, use
(from row in DT.AsEnumerable group row by pn=New With{Key.A=row.item(0),Key.B=row.item(1)} into grp=Group select {pn.A,pn.B,String.Join("/",grp.select(Function(x) x.Field(of string)("Status")))}).ToList(0)
- To get a list of
DataRow
object which is grouped based on some specific columns, we can use(from row in DT.AsEnumerable group row by pn=New With{Key.A=row.item(0),Key.B=row.item(1)} into grp=Group select grp.First).ToList
-> In this rows will be grouped on the basis of first and second column and the first group item will be available - To get all records from a data table in which certain condition is matched, we can use
WHERE
keyword as(from row in DT1 Where Convert.ToInt32(row("ID")) = 2 Select Convert.toString(row("Position"))).ToList
- ML Skill -> activity used to check the input
- Upload File -> activity used to re-train the model
- In Enterprise Trial, we get only 2 Robots which is equivalent to using 4 ML Models and we would need to keep one license free for pipeline if we want our ML Model to train as well
- To retrain any model, go to Object Detection
- ML Skills are deployed on an
Tenant
and not onOrchestrator
such thatML Skill
created on Tenant1 won't be available on Tenant2
## OOTB Models * Also known as Out of the Box Packages * Can be found under ML Packages * It contains various machine learning models for different use-cases
- It has two packages:
Image Moderation
andObject Detection
- Image Moderation is used to check the moderation level of images
- It is non-trainable
- Identify objects from images
- Trained on COCO Dataset
- It is Retrainable
- Go to AI Fabric
- Create a Project
- Click ON ML Packages
- Select Object Detection from Open Source Packages
- Create a package using basic informations
- Go to ML Skills
- Package Major Version = 1, Minor Version = 0, create the package (takes 3~4 minutes)
- Status of package can be check in
ML SKills
Tab in the orchestrator - Requires the Package
UiPath.MLServices.Activities
in Studio - Create
Input
Output
folder in the home directory and store the test data in input folder - Use ML activity to upload the file and get an json output having
base64
string of identified objects and prediction data - To convert the
base64
string to image, we can leverage thehttps://marketplace.uipath.com/listings/encode-decode-activities
custom activity
- It is a retrainable model
- It is based on
RoBERTa
- Documentation
- Micah's Data Set for classification
- Restaurant Sentiment Analysis Kaggle Data
- Language Detection is supported by Facebook and can detect the language of the text
- A Good approach to re-train the model, would be to do it weekly
- Get the data to train the model
- Use Restaurant Data Kaggle Data
- The above data is classified into Positive and Negative
- The standard splitting of data should be
80-20
- Replace all
1
toYes
and0
toNo
- Create New Project
- Click on create
DataSets
- Create a folder for
Train Set
and upload theTrain.csv
data - Create a folder for
Test Set
and upload the data - Navigate to ML Packages and select the
English Text Classification
Model - Go to pipeline and create new
- Choose the
Train run
andTrain Data
folder - First Column name used be
input
and second astarget
, if you want different headers,create parameters - Save the pipeline
- Download the trained model from the pipeline which can be used later on in any projects
- Once the
Train
data isdeployed
, run the same onEvaluation
pipeline where data will beTest Data
- For ML skills , model versions are
minor & major as 1
- Create a new process with
ML Package
andWeb Activities
package - Rest procedure is same as earlier with
Object Detection
- We don't need any dataset as it is an
Pre-trained Model
and thus can not beRetrained
- Open sourced by facebook research, trained on Amazons product data review
- Possible predictions are
Very negative
,Negative
,Neutral
,Positive
,Very Positive
- Mostly used AI Fabric model
- Blog with Usecases
- Create your ML Package (V2)
- Create ML Skill
- Simply your skill is ready and thus it can be utilized in any studio workflow
- The ML skill would definitely give an error if no input is passed to it
- All the models are NLP based models
- Can give answer for any question by analyzing given paragraph
- We don't need any dataset as it is an
Pre-trained Model
and thus can not beRetrained
- Input is in the form of json string
- Example
"{\"paragraph\": any text,\question\: any question}"
- Newline characters are not supported inside paragraph
- Finds similarity between 2 sentences
- Score of 0 -> No Similarity
- Score of 5 -> High Semantic Similarity
- Works for about 300 characters only as of now
- Provides back an summary of paragraph provided to it as an input
- All the packages are
Non Re-Trainable
- There are few language translation models:
- English To French
- English To German
- English To Russian
- German To English
- Russian To English
- The models are open-sourced by Facebook AI Research
- Input and Output are simple strings
- To detect the language of any string, there are two ways:
- Language Detection model
- Google Vision Package -> Can detect language from image
- Deploying these models are also very simple and easy to use, same as other
- It is an
Trainable
model - After
Successful
training, it provides us withTrained ML Model
that ismodel.sav
- Need to Train the Model :
- By Train Pipeline
- By Evaluation Pipeline
- The Ratio should be of 80:20 Percentage
- The TPOT Model takes input in an
json format
as
{"column-name1":[value-column1],"column-name2":[value-column2],"column-name3":[value-column3]...}
- Predicted values are not exact but close to the range of expected value
- Accuracy is directly proportional to the Training Data
- AI -> The theory and development of computer systems that are able to perform tasks that normally require human intelligence and decision making.
- Machine Learning -> A sub-field of AI that enables systems to learn from data. Systems learn from previous experiences and information to deduce and predict future information.To do this they use algorithms that learn to perform a specific task without being explicitly programmed.
- Deep Learning -> An area of ML concerned with artificial neural networks.These are a series of algorithms that aim to recognize relationships in a set of data through a process that mimics biological neural networks.
- Natural Language Processing (NLP) -> A branch of AI that deals with analyzing, understanding and generating human natural languages.For example, NLP enables computers to hear speach, read text, interpret the text/speech or measure the sentiment.
- Computer Vision -> A field of AI that enables computers to gain high-level understanding from digital images or videos.If AI is the brain, then Computer Vision is the eye that enables the computer to observe and understand. it works the same way as the human eye.
- The Invoke method activity helps us call a method that is outside the standard built-in activities
- The activity calls a public method of a specified type or object
- It acts either on
Target Type
orTarget Object
- When we have a class library/DLL in vb.net or c# and want to call the method
- When we want to use a method which does not generate an output, thus can not be used in an
Assign activity
- When we want to use a method which generates several pieces of output (example, TryParse which generates a Bool and Int32)
- Method Type define the way of configuring the
Invoke Method
activity - It is of 2 types:
- Static -> Target Type and MethodName are used (TargetObject not)
- Instance -> The object from which the method or members are derived needs to be defined (TargetObject is used)
- To figure out whether a method is a Static or an Instance method, you can check the Method signature in on the MSDN website. Below, you can find the signatures for a Static method, Round(Decimal), and an Instance method Sort(Comparison).
- A quick way to tell what kind of method you are dealing with is to check if the method signature contains the word "static. If it does, the method is static. If it doesn't, it's instance.
- There are various
GSuite
features that we can leverage usingUiPath
- Such as
- Sheets
- AppsScripts
- Calendar
- Docs
- Drive
- Gmail
- Everything works inside the
GSuite Application Scope
- There are 2 things required to use
GSuite Activities
- ClientID
- ClinetSecret
- Set the
OAuthClient
toCustom
- In
Configure scopes
, select theSuite Apps
you want to use - Now you can drag and use any activity from
GSuite
inside the Scope - To Access the applications on
Gsuite
, first time user will have to give access to the application onBrowser
opened byUiPath
andGoogle
might show theApplication
to beUntrusted
but nothing to worry andMove Advance
andGive the Required Permissions
Delete File
activity removes the file from theDrive
completely that is it can not be retrieved fromBin
Configure Scope
is an activity that is used to provide access to the Application to specific resources,needs to be done only once
- Goto
https://console.cloud.google.com/
- Create a
New Project
- Goto
APIs & Services
in theLeft Navigation Bar
- Open
Library
- Select
Google Drive API
andGoogle Sheets API
- Repeat
Step 3
and Go toOAuth Consent Screen
- Create an
new app
, give anyname
you prefer - Repeat
Step 3
and Go toCredentials
- Create a credential, and save the
ClientID
andSecretKey
- Remember not to share these with anyone
- In
GSuite
, we do not access files based onnames
rather usingobjectId
- To get the
ObjectId
, we have got 2 ways:- Through URL as in
https://docs.google.com/spreadsheets/d/1Bmi3TMxLE2OMGk2Wz1mFm3O3HJyDdyAwrvZcXxEz2Fw/edit#gid=0
the object id is1Bmi3TMxLE2OMFk2Wz1mFm3O3HJyDdyAwrvZcXxEz2Fw
that is betwwen/d/
and/edit
- Through Drive activity
Find Files and Folders
, we specify theSearchExpression
as"name = 'nameoffile-withoutExtension'"
- Through URL as in
- To access all the files from a folder, we need the
object id
of the respective folder - To get the
Object Id
of folder, we can use theFind files and Folders
activity with input as"name='Folder-Name'"
and save theId
in a variable sayFolderId
- To get a list of
Google.Apis.Drive.v3.Data.File
which is basically afile
present inGoogle Drive
again useFind files and Folders
activity with input as"'"+FolderId+"' in parents and name contains '*'"
which will give a list of files available in the mentioned folder
- FileExtension property does not return any string
- FullFileExtension property does not return any string
- Download File activity will download the files with just path being given but will download "Excel" as "PDF" only
- QR Codes can automated using
UiPath.QRCodeLib.Activities
- It provides us with activities to read
QR Code
from images directly or by providing an path to the image - It also gives us activities to generate
QR Code
either directly saving image to path or creating an image variable to be used
- Install all latest Windows Updates.
- Uninstall Studio from Apps & Features menu
- Navigate to these folders and make sure to delete any leftover files
rmdir /s /q "C:\Program Files (x86)\UiPath" rmdir /s /q "C:\Program Files (x86)\UiPath Platform" rmdir /s /q "C:\Program Files\UiPath" rmdi r /s /q "C:\Program Files\UiPath Platform" rmdir /s /q C:\ProgramData\UiPath rmdir /s /q %APPDATA%\UiPath rmdir /s /q %APPDATA%\NuGet rmdir /s /q %LOCALAPPDATA%\Temp\nuget rmdir /s /q %LOCALAPPDATA%\Temp\NuGetScratch rmdir /s /q %LOCALAPPDATA%\NuGet rmdir /s /q %LOCALAPPDATA%\UiPath rmdir /s /q %APPDATA%\Roaming\UiPath rmdir /s /q %USERPROFILE%\.nuget
- Get your latest Stable Studio Community Edition .exe installer from our Automation Cloud resources:
- After installation, you get a few choices to license your Studio. The most foolproof method is to connect your Robot to Orchestrator
- To send an message to any channel, we can use
Incoming Webhook
connector - To configure this connector in any channel:
- In the left panel, click on
...
icon - Search for
Incoming Webhook
inFind an app
- Click on
Add to a team
- Select the channel name
- Click on
setup a connector
- Give any name to webhook
- Upload an image for it (optional)
- click on create and copy the end-point
- In the left panel, click on
- Use
HTTP Request
fromUiPath.Web.Activities
to send an message in backend to teams as- Request Type: Post
- BodyFormat: application/json
- Body: "{'Text':'Any message you want to send'}
- To call any API certain parameters are fixed which can be created as variables like
- Tenant Name
- Account Logical Name
- Folder Id
- Orchestrator Url
- To call API 2 headers are always required
{ "Authorization": "Bearer <access_token>", "X-UIPATH-TenantName": "<tenant Name>" }
- For this, use
Postman
- Get the following information from uipath cloud
- User Key
- Account Logical Name
- Tenant Name
- Client Id
- Create a
POST
request on urlhttps://account.uipath.com/oauth/token
- Headers as
{ "Content-Type": "application/json", "X-UIPATH-TenantName": "<Your Tenant Name from above>" }
- Body as
{ "grant_type": "refresh_token", "client_id": "<your client id>", "refresh_token": "<your user key>" }
- Click on Send
- Copy the
access_token
received inResponse
- Remember this access token will be valid for the next
24 hours
to use any other API
- To Get folder id
- Open your orchestrator
- Select the particular folder
- from url fetch the id
fid=xxxxx
- Use a
GET
request using{{url}}/odata/Environments?$expand=Robots
- Set Headers as
X-UIPATH-TenantName: tenantName, X-UIPATH-OrganizationUnitId: <copy folder if from url>
- Set Authorization as
Bearer Token: <access_token>
- This will result in an
Response
in anJSON
format containing the required information - Similarly we can get multiple details from
Orchestrator
likeProcesses
,Jobs
,Queues
,Assets
etc
- The idea behind calling any API is same as above
- For this the Request URL will be
{{url}}/odata/Assets?$filter=Name eq 'Test'
- for the
?$filter=Name eq 'Test'
part, inPostman
go toParams
and set value as$filter: Name eq 'assetName'
-
The main components of a process are :
- Inputs - which are events that trigger the process
- Process Flows - these are sequences of subprocesses or activities undertaken in the process
- Source Applications - representing the applications or systems used to perform the subprocesses or activities of the process
- Outputs - which represent the result generated by the process
-
A Procedure is a functional document that describes the way a process is carried out.
-
Workflows and procedures are created only after the business has decided (based on the input provided by the BA) on what process needs to be automated
-
A Procedure mainly explains:
- When each part of the process needs to occur
- The way a process is carried out
- Who is responsible for each part of the process
- How to handle exceptions
- A Business Analyst is a bridge between the stakeholders requesting a solution and the ones delivering the solution
- Understands the business requirements a& problems
- Transalates the business problem into technology problem and provides a high-level solution
- Assists in solution design and confirms the solution
- Validates that the solution does what was intended to do
- Curiosity
- Communication Skills
- Patience
- Business & Industry Knowledge
- Analytical Skills
- Vision
- This is a platform developed to ease the integration of UiPath with 3rd Party Applications.
- Any Application comprising an API of its service can be integrated with UiPath but this platform makes it far more easier with the selected 3rd party applications. example: Google, One Drive, Service Now, Bamboo etc
- Integration Services comprises of 3 components:
- Connectors -> The first part of service that lets you connect your Orchestrator/Cloud Tenant with the 3rd Party applications. The only thing in general this is required is to login to your account and give permission over the requested access.
- Connections -> The Existing connections are listed in this component. From here you can manage your added connections.
- Triggers -> This helps you create a trigger to execute a certain process for any 3rd party application added connector. The Triggers comprises of 3 possibilities
- Create Record
- Delete Record
- Update Record
- Whenever a Trigger executes it sends 4 values to UiPath Orchestrator while calling the configured process
- UiPathEventConnector -> The Specific connector name that has been triggered by some event
- UiPathEvent -> The kind of event has took place be it Create/Delete/Update
- UiPathEventObjectType -> The type of the object
- UiPathEventObjectId -> The unique id of that particular object which lets you perform specific actions from your RPA Bots.
- The Triggers checks for the state of 3rd party application in every 5 minute.
- we can set few properties from google preferences to disable the
restore pages
settings. - The pop-up is shown as kill process close the browser abruptly.
- Follow the below steps:
- Go to C:\Users<>\AppData\Local\Google\Chrome\User Data\Default
- Now right click on preferences file
- Open with notepad.
- Search for “exit_type” and “exited_cleanly”
- Change the values to “exit_type” : “none”, and “exited_cleanly”: true,
- Save the file and close it.
- Change the properties of the file to “Read-Only”
- This serves the purpose.
- This is an advanced topic which is suggested for developers who have some prior experience working with Uipath or .Net languages.
- There are 2 tools required to create custom activities:
- The coding part is done in C# (preferably) and in the
Microsoft Visual Studio
where as the Compilation ofDLL
into a package that we generally see inManage Package
tab is done usingNuget Package Installer
- Open the application
- Right click on screen, and select the
Add Lib Folder
option. - Under this folder, we will be adding our dll files which are to be converted in nuget packages.
- Right Click on
Lib
, select theAdd Existing File
option and choose yourdll
that was build usingMicrosoft Visual Studio
. - To perform any changes/add data about your developed package for end-users, click on
Edit Metadata
icon present at the top in the left panel or use Short-cut key (Ctrl + K). - This information includes details like:
- Version of the package
- Title of your package name (It is to be used by end-users to search for your package in UiPath)
- Author/Owners name -> basically your name
- Description -> What is the purpose of this package
- Any other important information you wish to pass-on to its users (Dependency,Requirement,Licensing etc).
- To start creating your
DLL
files for your nuget package, you would need to installMicrosoft Visual Studio
. - Create a new project of
Class Library(.NET Standard)
- Lanaguage: C#
- Platform: Windows
- Project Type: Library
- It gives you a certain code already pre-written
- You need to add 2
References
in your code as mandatory for creating the packages which are:- System.Activities
- System.ComponentModel.Composition
- To Add new References:
- Click on right-hand panel
(Search Solution Explorer Ctrl + ;)
- Right click on
References
and click onAdd Reference...
- Select the required references and click on
OK
.
- Click on right-hand panel
- Your Class-Name will be your Activity Name
- All Classes are supposed to inherit the
CodeActivity
class - The function
protected override void Execute(CodeActivityContext context)
is used to write the functionality of your activity. - Few things to understand about
Properties of an Activity
:- The tabs in this panel with name such as Common,Input,Misc,Options etc are referenced in the code as
[Category("Name of the tab")]
like[Category("Input")]
or[Category("Options")]
* To Mark certain field as mandatory you need to use ```[RequiredArgument]``` * To set label for input field use ```[Description("Some label text")]``` * To Initialize an argument its syntax is like ```public InArgument Argument-Name { get; set;}``` * In the above line, the ```get``` keyword is used to fetch value provided to it by user and the ```set``` value is used to return some value to the argument thus would be used when direction would be ```InOut``` or ```Out```
- The tabs in this panel with name such as Common,Input,Misc,Options etc are referenced in the code as
- SayHello -> Takes name from user and gives an output as
Hello <name>
- PdfPageCount -> Takes file path from user and gives an output as integer value with no of pages in PDF
- Create NewWorkBook -> Takes path of file to create a new workbook.
- Read Range -> A copy of Read Range (Workbook) activity provided by UiPath.
- Write Cell -> A copy of Write Range activity provided by UiPath.
- GET API Request -> Call a Http GET Request
using System;
using System.Activities;
using System.ComponentModel;
using System.IO;
using System.Text.RegularExpressions;
using Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Runtime.InteropServices;
namespace CustomActivities.Starter
{
public class SayHello:CodeActivity{}
public class PDFTotalCount: CodeActivity{}
public class CreateWorkbook : CodeActivity{}
// The mentioned functions are defined below.
}
public class SayHello:CodeActivity
{
[Category("Input")]
[RequiredArgument]
[Description("Enter your First Name")]
public InArgument<string> FirstName { get; set; }
[Category("Input")]
[RequiredArgument]
[Description("Enter your Last Name")]
public InArgument<string> LastName { get; set; }
[Category("Output")]
[Description("String Variable for output")]
public OutArgument<string> Result { get; set; }
protected override void Execute(CodeActivityContext context)
{
string name = FirstName.Get(context)+" "+LastName.Get(context);
string result = "Hello " + name;
Result.Set(context, result);
}
}
public class PDFTotalCount: CodeActivity
{
[Category("Input")]
[RequiredArgument]
[Description("Enter PDF Path")]
public InArgument<string> PdfFile { get; set; }
[Category("Output")]
[RequiredArgument]
[Description("Total Count of Pages")]
public OutArgument<int> PageCount { get; set; }
protected override void Execute(CodeActivityContext context)
{
string FilePath = PdfFile.Get(context);
StreamReader reader = new StreamReader(FilePath);
Regex reg = new Regex(@"/Type\s*/Page[^s]");
MatchCollection matches = reg.Matches(reader.ReadToEnd());
int Count = matches.Count;
PageCount.Set(context, Count);
}
}
public class CreateWorkbook: CodeActivity
{
[Category("Input")]
[RequiredArgument]
[Description("Please enter the path of new workbook")]
public InArgument<string> WorkbookPath { get; set; }
[Category("Output")]
[Description("Workbook type variable")]
public OutArgument<Workbook> ExcelWorkbook { get; set; }
protected override void Execute(CodeActivityContext context)
{
string FilePath = WorkbookPath.Get(context);
Application xlApp = new Application();
Workbook xlWorkBook = xlApp.Workbooks.Add(Missing.Value);
xlWorkBook.SaveAs(FilePath);
// Missing.Value is used when you do not wish to pass any value to an required argument.
xlWorkBook.Close(true, Missing.Value, Missing.Value);
xlApp.Quit();
ExcelWorkbook.Set(context, xlWorkBook);
Marshal.ReleaseComObject(xlApp);
Marshal.ReleaseComObject(xlWorkBook);
}
}
- For this we would need
Microsoft.ACE.OLEDB.12.0
driver that is if not present, can be installed from Microsoft Access Database Engine 2010.
public class ReadRange : CodeActivity
{
[Category("Input")]
[RequiredArgument]
[DisplayName("FilePath")]
[Description("Please enter full path of workbook")]
public InArgument<string> In_FilePath { get; set; }
[Category("Input")]
[RequiredArgument]
[Description("Please enter sheet name")]
[DisplayName("Sheet")]
public InArgument<string> In_SheetName { get; set; } = "Sheet1";
[Category("Input")]
[Description("Please enter range")]
[RequiredArgument]
[DisplayName("Range")]
public InArgument<string> In_Range { get; set; } = "";
[Category("Output")]
[RequiredArgument]
[Description("Please use a Data Table variable")]
[DisplayName("DT")]
public OutArgument<System.Data.DataTable> Out_DT { get; set; }
protected override void Execute(CodeActivityContext context)
{
try
{
string filePath = In_FilePath.Get(context);
string sheetName = In_SheetName.Get(context);
string sheetRange = In_Range.Get(context);
// Insert Data in DataTable
System.Data.OleDb.OleDbConnection MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filePath + "';Extended Properties=Excel 8.0;");
System.Data.OleDb.OleDbDataAdapter MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + sheetName + "$" + sheetRange + "]", MyConnection);
MyCommand.TableMappings.Add("Table", "TestTable");
System.Data.DataSet DTSet = new System.Data.DataSet();
MyCommand.Fill(DTSet);
System.Data.DataTable DT1 = DTSet.Tables[0];
MyConnection.Close();
// Assigning Output Varaible
Out_DT.Set(context, DT1);
}
catch(System.Exception e)
{
System.Console.WriteLine("Exception: " + e.Message+Environment.NewLine+In_Range.Get(context)+Environment.NewLine+In_SheetName.Get(context) + Environment.NewLine+In_FilePath.Get(context));
}
}
}
namespace CustomActivities.ExcelFormatting
{
public class WriteCellAsText: CodeActivity
{
[Category("Input")]
[RequiredArgument]
[Description("Enter full file path")]
[DisplayName("FilePath")]
public InArgument<string> FilePath { get; set; }
[Category("Input")]
[RequiredArgument]
[DisplayName("SheetName")]
[Description("Value")]
public InArgument<string> SheetName { get; set; }
[Category("Input")]
[RequiredArgument]
[DisplayName("Cell")]
[Description("Enter the cell address")]
public InArgument<string> Cell { get; set; }
[Category("Input")]
[RequiredArgument]
[DisplayName("CellValue")]
[Description("Value")]
public InArgument<string> Value { get; set; }
protected override void Execute(CodeActivityContext context)
{
string ExcelRange = Cell.Get(context);
string ExcelPath = FilePath.Get(context);
string ExcelValue = Value.Get(context);
string ExcelSheet = SheetName.Get(context);
Application xlApp = new Application();
Workbook xlWorkbook = xlApp.Workbooks.Open(ExcelPath);
Worksheet xlWorksheet = xlWorkbook.Worksheets.get_Item(ExcelSheet);
try
{
// To get range with some data in it
//Range rng = xlWorksheet.UsedRange;
Range rng = xlWorksheet.get_Range(ExcelRange);
// To change the format of cell to Text
rng.NumberFormat = "@";
// Get ASCII Value
char c = char.Parse(ExcelRange.Substring(0, 1));
// Get Cell row and column value
int colIndex = (int)c-64;
int rowIndex = int.Parse(ExcelRange.Substring(1));
xlWorksheet.Cells[rowIndex,colIndex] = ExcelValue;
// Close Excel Objects
xlWorkbook.Save();
xlWorkbook.Close();
xlApp.Quit();
}
catch (Exception e)
{
Console.WriteLine(e.Message+Environment.NewLine+e.Source);
}
// Release all objects calling to Com Objects
finally
{
Marshal.ReleaseComObject(xlWorksheet);
Marshal.ReleaseComObject(xlWorkbook);
Marshal.ReleaseComObject(xlApp);
}
}
}
}
using System;
using System.Activities;
using System.ComponentModel;
using System.Net;
using System.IO;
namespace UiPathAPI_Custom_Activity
{
public class APICallActivity:CodeActivity
{
[RequiredArgument]
[Category("Input")]
[Description("Enter User Id")]
public InArgument<string> UserId { get; set; }
[RequiredArgument]
[Category("Output")]
[Description("String variable to store the API Response")]
public OutArgument<string> APIResponse { get; set; }
protected override void Execute(CodeActivityContext context)
{
string UserNo = UserId.Get(context);
string url = "https://reqres.in/api/users/"+UserNo;
WebRequest requestObject = WebRequest.Create(url);
requestObject.Method = "GET";
HttpWebResponse responseObject = null;
responseObject = (HttpWebResponse)requestObject.GetResponse();
string Result = null;
using (Stream stream = responseObject.GetResponseStream())
{
StreamReader sr = new StreamReader(stream);
Result = sr.ReadToEnd();
sr.Close();
}
APIResponse.Set(context, Result);
}
}
}
public class PostAPICall:CodeActivity
{
[RequiredArgument]
[Category("Input")]
[DisplayName("Email")]
[Description("Enter Username")]
public InArgument<string> Username { get; set; }
[RequiredArgument]
[Category("Input")]
[DisplayName("Password")]
[Description("Enter Password")]
public InArgument<string> Password { get; set; }
// public InArgument<System.Security.SecureString> Password { get; set; };
[RequiredArgument]
[Category("Output")]
[DisplayName("API Response")]
[Description("String variable to store the API Response")]
public OutArgument<string> APIResponse { get; set; }
protected override void Execute(CodeActivityContext context)
{
string Email = Username.Get(context);
string password = Password.Get(context);
// API
string Result = null;
string stringURL = "https://reqres.in/api/register";
string PostData = "{" + String.Format("\"email\":\"{0}\", \"password\":\"{1}\"",Email,password) +"}";
WebRequest requestObject = WebRequest.Create(stringURL);
requestObject.Method = "POST";
requestObject.ContentType = "application/json";
using (var streamWriter = new StreamWriter(requestObject.GetRequestStream()))
{
streamWriter.Write(PostData);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = requestObject.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
Result = streamReader.ReadToEnd();
}
}
APIResponse.Set(context, Result);
}
}
- XML stands for Extensible Markup Language
- It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.
- Each XML Document contains an
declaration
, which is the first line of the xml document e.g.,
<?xml version="1.0" encoding="UTF-8" ?>
- The element present after the declaration is known as
Root Element
- First way is to use
Deserialize XML
activity available inUiPath.Web.Activities
it gives you anXDocument
type of variable that isSystem.XML.Linq.XDocument
- Second way is to create a XDocument variable and use its
Load
method asXDcoument.Load("Path-of-xml-file")
- To Read the declaration of xml file, use
XDocument.Declaration
method - There are other inbuilt methods in
Declaration
which helps you to read the version of xamlDeclaration.Version
or the encoding style usingDeclaration.Encoding
- To Read the
Root Element
useXmlDocument.Root
- Sample data for better understanding
<catalog>
<book>
<author age="23">Piyush Agarwal</author>
<author age="25">Ravi Agarwal</author>
<platform>YouTube</platform>
<platform>LinkedIn</platform>
<book> Om Namah Shivay!!! </book>
<action>Like, Share and Subscribe</action>
</book>
<platform>Facebook</platform>
</catalog>
- To fetch a particular element from an XML file, one can use
XmlDocument.Descendants("element-tag-name")
which will give an array of parent elements matching the providedelement-tag-name
- To Check if a particular
XMLElement
has further child nodes with it, we can usehasElements
functions which would provide aTrue/False
value in return - To update a specific attribute value in
XML
, we can use something likeXmlDocument.Descendants("author")(0).Attribute("age").value
and provide the new value in R-Side of assign activity. - To point to a specific element one can also use the traditional approach of pointing from parent element to child element like
XmlDocument.Elements("catalog").Elements("book").Elements("platform")
- To Update a specific value of XmlElement, use
XmlDocument.Descendants("author")(0).value
and provide the new value in R-Side of assign activity.
- When working with API's, we get Base64 String as response for any attachment that is to be downloaded.
- To Convert this Base64 string into a html file
- Convert the string into Byte Array as
Convert.FromBase64String("YourResponseString")
- Use Invoke Method as
TargetType: System.IO.File ; TargetObject: Blank ; MethodName: WriteAllBytes
and Parameters asFilePath <String> ; ByteArrayFromPoint1 <Byte[]>
- Convert the string into Byte Array as
- This file download the file at the FilePath position.
- UiPath Communications Mining also formerly known as
Reinfer
turnsunstructured electronic data
such asemails, tickets,surveys, etc
into structured data to drive action and insights in your organization.
- No Code
- Fully Customisable
- Accurate
- Fast to train
- Hyper-Scalable
- Real-time monitoring & alerts
- Secure
- Easy to integrate
- Understand your customers better than ever
- Enjoy more interesting work
- Focus on the work that matters
- Grow the ROI of digital transformation
-
Train -> The Train page provides a fully guided label training experience to users. It always recommends the next best actions to take, and breaks up the model training into easy to complete batches.
-
Discover -> The Discover page has two key functions:
- It helps you to discover interesting clusters of verbatims. Clusters are themes of verbatims, which the platform has identified as sharing similar intents or concepts.
- It allows users to label verbatims in bulk, as well as individually, using either the 'Cluster' function, or the 'Search' function. As the verbatims in each cluster should contain similar intents and concepts, the bulk label functionality is a helpful tool to quickly train the model.
-
Explore -> The Explore page allows you to filter, search and explore individual verbatims.It also houses a number of training modes for both labels and entities, and is where users can complete the majority of their model training unless they are using the guided Train tab.
-
Validation -> In the 'Labels' tab users can see their overall label Model Rating, including a detailed breakdown of the factors that make up their rating, other metrics on their dataset and the performance of individual labels.
Note: The platform helps users train models by calculating a holistic Model Rating, which assesses the overall health and performance of their model by considering a number of key contributing factors: Label performance, Coverage, and Balance.
- Reports -> Users can create fully customizable dynamic dashboards populated with charts from the other pages in Reports
- Requires multiple ML models to be able to bring out solutions to a particular problem.
- Access to API for AI Center is being enabled
- Register Application -> Authenticate -> Make API Calls
- Using Integration Service, we would be able to use AI Models build outside the platform.
Manager Emails: shivaraman.shankar@uipath.com
naren.venkateswaran@uipath.com
Manager: Monica Luca
- Extraction Automation Builder : create a studio web workflow starting from a document
- Studio web templates are in-build e.g., Invoices.
- Upload sample document
- Choose document type & Create workflow
-
Using Integration Services will be enhancing the validation experience using Business Rules and Data Look ups.
-
Pre-trained Document Splitter Model - ML Splitter Activity available (Need to ask lahiru)
-
Business Rules can be defined for specific fields
-
Mathematical Expression -> Amazing feature that enables you to validate your extracted fields with any math formula check and increase data validation experience.
- RESTAPI option is gonna get many other APIs to work with DU.
Manager: Tushar Pander
- Externalize Forms during Task Creation -> Multiple forms can be displayed based on business rule.
- We can inbuild Action Center in Apps
- The external forms can be made using Forms designer itself.
- This year we would be able to give download our packages along with queue and assets.
- We will be able to run automations based on C# and Python code and these files would be a part of Studio
- Features are available on UiPath Insider
- Access to Office 365 activities using Integration Service - Connectors will be coming in soon.
-
Suhail Siddiqi - Apps Engineer
-
Consumption based pricing
-
Manage access would be available next week
-
Post 23.10, unique and common unit will be introduced
-
next rows
-
Vb Expressions brings the availability of all vb expressions. Instead of using variables, directly using hierarchy fetch value format e.g.,
PageName.FieldName.Value
-
Ravindra Adireddy
-
Centralised runtime roles and permission management
-
Permissions required for publishing app: Tenant ROle - App Versions View - View published versions Edit
-
Two permissions will be coming - Tenant level - to publish app and upgrade/downgrade version
-
Permission at Folder Level - for running
- Ramakrishna Anish Damerla
- Samrat Dutta - samrat.dutta@uipath.com