branch, loading News Magazine, clicking to get to the login page, entering username and password,
clicking to login, saving the session for future executions of the robot, clicking again to get to the data we
want to extract, and finally extracting the specific text. We have now simulated the first run of the robot.
Going back to the first step in the robot, let’s simulate the second run. In all executions following the first,
the session should restore successfully, so following the topmost alternative the session is restored, the
robot clicks to open the page that we want to extract data from, and finally the data is extracted – simple.
We now want to replicate what happens if the robot is to execute after the login session has expired. To do
this, open Logout.robot from the examples folder. The logout robot restores the saved session and clicks
logout on the News Magazine page. In this way we are emulating expiration of the login session, rather
than actually waiting the 10 minutes it takes for the session to timeout and expire on this specific page.
Click the end step in the logout robot to execute all steps.
Going back to the login robot click the step named “Click site data” to make it the active step and click
refresh in the toolbar to re-execute all steps up until the active step. After all the steps have executed again,
notice that the page shown in the browser view looks as though we are still logged into News Magazine.
This is because the saved session also contains the entire robot state, including the html of the page we
were on when the session was saved. Restoring the session therefore does not properly refresh the page
to show us its current state. Clicking on the extract step to execute the click step will however refresh the
browser to show us that we are no longer logged in. The extract step therefore fails to extract the data
we want, causes an error and tries the next alternative from the try step, which logs in and saves a new
session for future use.
Thus the login robot handles all three cases and thereby ensures that the robot always logs in before
extracting the data which is otherwise not available.
To summarize on what we have looked at in this video, from a try step spring multiple alternative routes for
the robot to take. An alternative succeeds unless it has a step that causes an error and specifies to "Try Next
Alternative" in the Error Handling Tab. Only the first alternative that succeeds is executed, the others are
completely ignored. If an alternative does not succeed, the robot goes back and tries the next alternative.
Here are a couple of tips when using try steps:
As we saw in the first example, any condition steps, meaning steps with "Test" in their names, work well
together with the try step.
If no alternatives of a try step succeed then the try step itself generates an error. Specify what action to
take in the error handling tab of the try step itself.
You can give a try step a name by double clicking below it in the robot view.
When specifying to "try next alternative" under error handling for any step, you can also choose which try
step to go back to based on their names. This means you can have nested try steps allowing for complex
That concludes this video on the topic of try steps.
For more information on this topic, do a search on help.kapowsoftware.com
The Spreadsheet View
This is a video explaining the features of the Spreadsheet view. Below is a transcript of the video.
Videos are not included in the PDF. Please visit open this url http://player.vimeo.com/video/61006912 in
a browser to see the video.
As of Kapow Katalyst 9.2, robots have a whole new way of handling Excel documents. Instead of being
converted into html-pages, Excel is now shown as a spreadsheet directly in the Page View in Design
Studio. In this video I will give an overview of the features of the Spreadsheet View and take you through
the process of building a robot which extracts from an Excel document. Feel free to follow along on your
An example of a robot which loads an Excel document can be found in the examples folder of the default
project, and has the name excel.robot.
Go ahead and open the robot. Excel documents can be loaded in the same way as regular pages are loaded,
either from a URL or from a file on your machine or server. In this particular robot it is loaded by clicking
a link, which is performed by the step named Click PersonData.xlsx.
Click the Loop Rows step to view the document. The spreadsheet now appears in the page view, with rows
and columns named and arranged like you are used to it from Excel. This particular document contains
tables with person data.
There are two different sheets with 100 entries in each. It is possible to switch between the two sheets in
the lower left corner of the Page View. It is also possible to see the document information by clicking the
leftmost tab. In this video however, I will focus on Sheet1.
From the dropdown menu in the lower right corner of the page view it is possible to look at the unformatted
values of the document or the raw formulas. Changing this view will also affect the extracted values when
inserting a new step, so I am going to change it back to showing formatted values.
A cell is selected by clicking on it and it is even possible to select a range of cells by clicking and dragging,
or clicking on a row or column name to select the entire row or column. The upper left corner selects the
I will now delete the loop step and all the extract steps from the robot and demonstrate how easy it is to
extract from an Excel document. I drag to select the steps, then hit the delete button on my keyboard.
To the new Spreadsheet View belongs a whole family of new step actions, which enable you to loop,
extract, and test cells. Just like in the browser view these functions are available from the right click menu
as I will show you in a moment.
First we want to insert a loop step which loops through all the rows of the table. First I click the upper left
corner of the Spreadsheet View to select the entire spreadsheet. Then I right click inside the selected area
– meaning anywhere inside the Spreadsheet View– and select Loop>>Loop Table Row>>Exclude First
Row. I am excluding the first row since we are not interested in the header values.
The Loop in Excel step now sets the first row to loop over as the Named Range. Clicking the arrows on the
loop step will show how the other rows are selected. It is now possible to extract from the Named Range
and, because of the loop, corresponding values will then be extracted from all the other rows.
To extract first the ID, I right click the ID value and select Extract>>Extract Number>>ID. I click OK in
the wizard that appears, which is already properly configured.
Likewise I can now extract the first name as a text into the name variable, the age as a number into the
age variable and the gender as a Boolean into the isMale variable. The gender value is either true for male
or false for female.
To show that the entire table can now be extracted, I switch to debug mode by clicking the icon in the
upper left corner and clicking run in the toolbar. All 100 values from the Excel document now appear in
the list of results.
What follows is a video describing how to perform data conversion in robots.
Videos are not included in the PDF. Please visit open this url http://player.vimeo.com/video/31897133 in
a browser to see the video.
Sometimes when designing a robot we need to convert some text or numbers using simple or complex
conversion rules. The question is: how do we do this easily in Design Studio?
In this video we will be talking about this field.
It may not look like much but it is actually a very powerful tool when building robots and it pops up
everywhere in the Design Studio interface.
The field is called a Data Converter List, and for now let's regard it as a black box. It may take an input in the
form of a value from, for example, a variable or extracted text; but input is not a strict necessity. The input,
if present, is given by the placement of the Data Converter List and is always stated somewhere above it.
The Data Converter List has exactly one output, which is either stored in a variable or handled otherwise
In short, a Data Converter List is used to manipulate text and numbers within robots, but although it is
possible to perform both text and number manipulation with the Data Converter List, input and output is
strictly speaking always interpreted as text.
Some use examples include extracting the name from an email address,..
..multiplying a number by two,..
or adding three days and two hours to a given date.
Let's take a look at the interior.
As the name Data Converter List implies, the field contains a list which you can add a variety of different
converters to by clicking the plus icon. These converters all manipulate the input in some way.
Here is an example where we have the Kapow Software website URL as the input. We start with no
converters in the converter list so the output is the same as the input. By adding the Extract converter we
can extract the middle part of the URL. Don't worry about how the converters work for now. We will
get back to that.
Then we can add a converter which converts the text to upper case.
The two converters are then chained together in series so the output of the first flows into the input of
The order in which the converters are listed represents the order in which they are performed. The order
can be changed by clicking the arrows. In this case it makes no difference to the end result.
Converters can be deleted by clicking the minus.
Clicking the pen and paper icon opens a window used to configure the converter. This window also opens
when the converter is first added to the list.
The Converter configuration window always contains the two important fields Test Input and Test Output
which, as the names imply, demonstrate the input and output from the given converter.
Learn how to use the different converters by clicking the question mark in the configuration window.
Clicking it opens the documentation. Here you can also read about Expressions and Patterns. Knowing
how to use these is an invaluable skill when working with data converters.
For example if you need to use mathematical operations to manipulate a number, expressions are needed.
I can multiply the input by two by using the converter called evaluate expression. Let's take a closer look
at the expression used to perform this operation. It converts the input to a number and then multiplies it
by two. Remember that all input and output from converters is text so we need to convert the input to a
number before applying any mathematical operations to it.
Here are some examples of the use of data converter lists in Design Studio.
The data converter list you will find the most useful is probably the one located in the Extract step action.
It allows you to convert any extracted text before storing it in a variable.
Let me show you an example of how to use this.
I'm in the process of creating a robot which extracts job offerings from LinkedIn. For now it simply loads
the page and loops through the tags which contain job descriptions. I would like to extract the location of
each job but it's stated in the same tag as two other pieces of information, namely company name and date.
The three pieces of information are only separated by hyphens.
I start by extracting the entire text into a variable called location. I then select the Extraction step in the robot
view and add an extract converter to the data converter list of the extraction step. The extract converter
uses a pattern to decide which part of the input should be extracted and used as output. In this case we
want to extract everything within the first and the second hyphen.
After finishing the pattern we can see that the Test Output field reflects the text we wanted to extract.
Selecting the end step and iterating through the loop we can see that the location has successfully been
extracted from each of the job descriptions.
As you can see, converters are quickly implemented and extremely effective.
Lastly I'll give you a couple of tips on the use of data converters.
Tip 1: Many fields in Design Studio can be changed to data converter lists. This may be done by choosing
Converters from the Value Selector located at the right side of the field.
Tip 2: One of the most useful converters is the Replace Pattern converter. It combines expressions and
patterns to provide powerful text manipulation.
Tip 3: In addition to the restricted one input of data converter lists, additional variables can be fetched by
using expressions. This allows us to combine data from several variables.
Thank you for watching this short introduction to data converters.
For more information on the available converters, consult the documentation at help.kapowsoftware.com
under References >> Design Studio>>Data Converters.
What follows is a video describing how to use snippets to share steps among robots.
PDF Image Viewer| What is PDF
with advanced capabilities, such as text extraction, hyperlinks, bookmarks and NET Imaging SDK, you may add it on you to quickly convert your PDF images into add hyperlink to pdf online; add links to pdf in acrobat
.NET PDF SDK | Read & Processing PDF files
by this .NET Imaging PDF Reader Add-on. Include extraction of text, hyperlinks, bookmarks and metadata; Annotate and redact in PDF documents; Fully support all add hyperlink pdf file; add hyperlink to pdf acrobat
Videos are not included in the PDF. Please visit open this url http://player.vimeo.com/video/32911272 in
a browser to see the video.
Creating complex robots can quickly become a messy affair which hogs precious screen real-estate. Putting
steps into groups is an easy way to clean up such a robot and simplify the steps it takes to reach the end
To group steps you simply select the steps you want to group then press the group button in the tool bar
above the robot editor.
Furthermore you can give each group a name when you create it. This makes it easier to keep track of
the specific function of the group.
Collecting independent parts of a complex robot into simple groups makes the robot much easier to
understand for yourself and others.
Naming groups to remember their insides is essential. We could for example have a group that logs into a
site, performs a complex conversion, stores values in a database, or looks something up online.
Thinking about it, I actually have a login group in one of my robots which I would also like to use in some
of my other robots. Now I could of course start copying and pasting this group into some of my other
robots. That would solve the problem for now but if I needed to change the login procedure in the future
then I would have to copy the modified group step into all my robots again.
Let me introduce the snippet concept. A snippet is created and edited as a group step but is stored in a
separate file and can be used as a custom step in as many robots as you want.
Having the step information stored in a separate file from the robots, means that changing the snippet in
one robot will change it in all of the other robots as well. This can save a lot of time and greatly simplify
…In addition to containing steps, snippets can also include a list of variables used by the snippet.
It could for example be a login variable containing username and password. This variable is then
automatically available in every robot using this snippet.
CREATING A SNIPPET
Let me show you how this all works in Design Studio.
Here is a robot which logs into Zoho CRM, looks up some contact information, extracts it and returns it.
The login procedure of this robot has been grouped and would be perfect to have handy for other robots
which are also to perform tasks on Zoho.
Creating a snippet from the steps that perform the login sequence couldn't be easier. I simply select the
group I already made. Then I select Convert Group to Snippet from the tool bar above the robot editor.
Design Studio now prompts for a name and I choose the name LoginZoho which was already the name
of the group.
The snippet is then created which is visualized by the small snippet icon in the lower left corner of the box.
Furthermore the newly created snippet file has been selected in the projects view and the snippet has also
been opened in the snippet editor in a new tab. The snippet editor will open every time we modify our
snippet in a robot.
I switch to the LoginZoho snippet editor. The snippet editor looks very much like the robot editor. It has
a snippet view showing the steps of the snippet, a step view showing the action performed by the active
step in the snippet view and a variables view as we know it from the robot editor. Instead of the browser
view, the snippet editor has a configuration view where we can write a description of the snippet.
Note that in the snippet editor we can only make modifications to the configuration view and the variables
view. If we want to make modifications to the steps in the snippet we will need to do that in the context
of a robot editor.
As you may have noticed when looking at the snippet view, the two steps which use the Login variable
have been marked with error indicators, pointing out that the variable is not yet present in the snippet.
Accordingly, the last thing we have to do to complete our snippet is to add the Login variable to the snippet.
This will ensure that the login credentials will be available to any robot which uses this snippet.
I add it by simply right clicking the variables view and choosing the appropriate type, exactly as I would
have done in a robot. In the variable configuration window that now appears I have to ensure that I
configure the variable to match the one in the robot precisely. The variable name is correct so I just need
to check Use as Input and add default values to the attributes… then I click OK.
Now we have a fully functional LoginZoho snippet.
USING THE SNIPPET
Let me show you how to add the snippet to another robot. Here's a new robot which I also want to perform
some task on Zoho. A snippet step is inserted by choosing Insert Snippet Step Before from the tool bar.
An undefined snippet step now appears in the robot. I then choose the LoginZoho snippet from the
dropdown in the step view of the snippet step.
The snippet has now been inserted into the robot and can be executed by clicking the end step…
As seen in the variables view, the login variable from the snippet is now available for the robot to use.
The small snippet icon to the left of the variable indicates that this variable belongs to the snippet. That
means that we cannot edit the variable directly in the robot, but only in the snippet editor. It also means
that removing the Login snippet from the robot will remove the variable as well.
If we want the variable to be in the robot permanently then we have to add it manually to the robot, giving
it the same name, type and configuration as the login variable from the snippet. This new variable will
then take the place of the snippet variable.
Now, if I make a change to the snippet in any of its instances, all the other instances will also be changed.
If I for example switch the places of the Enter Username and Enter Password steps and then go back to
the first robot, we see that the order of the two steps has been changed here as well.
To round off this video let me give you some tips when working with snippets.
Often you can end up with robots having huge variables containing everything needed for that robot. When
creating snippets you should ultimately split these variables such that only the attributes needed in the
snippet will be included in the snippet variable.
In general you should try to create your types based on function rather than making them robot specific.
To make the snippet as independent from the rest of the robot as possible, make sure to put any non-default
robot configuration directly into the steps in the snippet where necessary.
In other words if you have clicked here, then here and made any changes that are important to the steps
in the snippet, then make sure to click here in step view for the steps of the snippet and make the same
Always document the context of the snippet by writing a description in the snippet configuration view.
That is all for this video. If you want to learn even more about snippets you can consult the documentation
Date Extraction - Simple Case
What follows is a video showing how to modify the News Magazine robot to extract article dates, along
with a transcript of the video.
Videos are not included in the PDF. Please visit open this url http://player.vimeo.com/video/40930103 in
a browser to see the video.
Thank you for using Kapow Katalyst.
This tutorial will show you how to easily extract dates from any website using the Date Extraction step
in your robot. The tutorial consists of two parts. This first part is a follow-along tutorial with a simple
example, the second part is a real case scenario showing a trickier example.
Please feel free to follow along on your computer for this first part.
If you have completed the beginner tutorials you might remember the News Magazine robot. It extracts
the most recent stories from News Magazine which is a site made for tutorial purposes. We want to modify
the robot to also extract the date and time from the most recent articles.
Start Design Studio and open the Type called post from the Beginner Tutorials folder in the default project.
Add a new attribute called date and give it the type Date. Now save the Type, close the Type Editor and
open the NewsMagazine robot from the same folder.
Click the Return Value step in the robot view. The robot will now execute to this step. I am going to close
the projects view and the source view to get some more space to work with.
Scroll down in the browser view and locate the date and time given above each picture. We are going to
add a step which extracts the date and time from each of the three articles.
To do this we right click the tag containing time and date and select Extract >> Extract Date >> then
choose the variable post.date.
A new window opens which will help us extract the date into the standard date format which is the only
format accepted by the simple type Date and thus by our post.date variable.
Let's look at the important parts of Extract Date Configuration window. The field Test Input shows the
raw text as extracted. In the field called Pattern we will write the pattern of the date exactly as it is stated
in the extracted text. Right now the pattern is "dd MM yyyy" which means that the date consists of date,
month and year, separated by spaces.
We see that this corresponds to the format of the date in the extracted text. Design Studio has deduced the
pattern for us so if we just want to extract the date we don't have to modify anything. The field Test Output
shows us the date in the standard date format as extracted from the Test Input.
Let's say that we also want to extract the exact time that each article was published. This means that we
have to expand our pattern to also capture this information. Keeping an eye on the Test Input, add " *
hh:mm" to the Pattern. Notice that the Test Output changes to incorporate the time of day.
Let me explain the pattern we added. Spaces and the colon correspond to their respective characters in
the Test Input. Asterisk corresponds to "at" in the Test Input but can in general be used to represent any
number of non-whitespace characters. "hh" means hours and "mm" means minutes. To get a full list of
things to put in the Pattern field you can click the question mark at the top right of the window.
Click OK. We have now successfully extracted the time and date from each article. Test the robot in Debug
Mode to confirm this.
Date Extraction - Tricky Case
What follows is a video demo showing how to extract dates when date information is spread into multiple
places, along with a transcript of the video.
Videos are not included in the PDF. Please visit open this url http://player.vimeo.com/video/27240628 in
a browser to see the video.
This video will show you how to extract the date and time on a site that has date information spread into
multiple places. It is recommended to complete the tutorial on Simple Date Extraction before watching
I have made this robot to extract my Skype call history. It logs into Skype and loops through a table which
contains my history. The only problem is that the year is not stated directly in the date and time column
but only in the blue bar above. Somehow I have to combine the two pieces of information. Luckily this
is easily done using converters.
Before entering the loop I add a step which extracts the text in the top bar into the variable called Year.
Inside the loop I insert a new step which I choose to have the Extract action. Then I select the date tag
from the first row of the table and use the yellow square button to the right of the Address Bar to use it
in the Extract step.
Now, to combine this extraction with the Year variable, I add a converter under the Action tab of the
extract step. I choose the converter called Evaluate Expression which allows me to append the value from
the variable Year to the extracted date.
An Evaluate Expression Configuration window opens. The Test Input field shows the date as extracted. In
the Expression field I simply write "INPUT" with capital letters, which is the extracted date. I follow this
by a plus and a space in quotation marks, this adds a space after the date. Then I add another plus followed
by "Year", representing the variable containing the year which we extracted earlier.
Looking at the Test Output I verify that the two extractions have been combined into one text. To learn
more about expressions I can click the question mark next to the Expression field. Click OK.
I now add another converter, the same as used in the Simple Date Extraction Tutorial, called Extract Date.
The Output of the previous converter is used as input for this converter.
The configuration window opens for the Extract Date converter and I insert a new Format pattern and
delete the default one given by Design Studio. Now, just as in the Simple Date Extraction Tutorial, I add
the pattern to extract the date from the test input and let the converter convert the date to the standard date
format. "MM dd hh:mm MM yyyy". The month is given two times but that is not a problem. The first
occurrence will simply be ignored.
I click OK, choose to extract into the Date variable and check that the date and time has been extracted
That concludes this tutorial and demo on extraction of dates.
Kapow Compute Units (KCUs)
9.1 introduces a major change in the licensing for Kapow Katalyst, with the move away from CPU core
based pricing to a capacity based pricing based on Kapow Compute Units (KCUs), completely independent
of the chosen hardware configuration.
What are KCUs?
A KCU is a Kapow Compute Unit and is defined as a unit of measure for how many operations (or steps)
a Kapow Katalyst RoboServer can perform in one second (and is unrelated to underlying server capacity).
A step is the smallest unit of action which can be performed within a RoboServer. Examples of steps are,
loading a web page, writing a data record to a database, or performing a transformation on a data element.
One KCU represents a total of 5000 KCU points per second. The number of Kapow steps that make up
one (1) KCU depends on the type of Kapow steps involved, as each step type consumes a different amount
of the KCU. The steps are divided into groups the most important groups are listed here:
E.g.: 2 page loads per second with 4 KCUs
E.g.: 20 Call REST Web Service Steps per second with 4 KCUs
3. Extraction and transformation steps 1 KCU point
E.g. 40,000 extract or assign steps per second with 4 KCUs
(The complete list is available in Design Studio by clicking the Help->KCU Information menu item)
The above is provided that you have enough CPU power and sufficiently low response time from the
source server. (Note: We have empirically measured the average page load time on a powerful CPU over
the 23000 most visited web sites to 6.7 seconds).
The total number of KCUs a robot uses can be seen in the Design Studio Debugger Summary information
after running the robot.
Deploying and Assigning KCUs
With KCUs we can deliver the needed computing capacity independent of the target hardware environment
and physical CPUs. This allows the flexibility of choosing, cloud-based or on-premise, virtualized or
physical CPU environments without the need to control the number of allocated CPUs.
The available KCUs are assigned to the RoboServer Clusters in the Management Console and
automatically distributed between the RoboServers available within the Cluster.
Documents you may be interested
Documents you may be interested