Wednesday, March 10, 2021

Think RPA - Think Workflows

Very long time back (may be 12 years back), I was given some series of projects for around two years which were supposed to be developed by using a tool called "MyWorkflow" (Don't try to search in google, you will not find it) That tool was customer's proprietary tool which they developed to create workflows for their internal operations.

I was really reluctant to work on that initially given that expertise on that tool not going to give any weightage to my resume nor that experience not going to add any value to my core .net experience.
Still I did not have a choice except to accept the work and went ahead.

I was given some kind of training on the tool and then I started working on the project (I was the only developer in that project). Though the tool was not that difficult to learn, area I felt challenging was, converting requirements into workflows. Just like regular projects, customer used to give their requirements in descriptive manner and I had to translate them into workflow (I think, I don't have to tell you like, workflow looks like a  flow chart where you define and link series of activities in a sequence to complete a particular task which usually involves review and approvals by different individuals).

In one sentence, it was all about flowcharts, sequences and activities. In MyWorkflow tool, we could attach forms/UI to an activity where user can enter/modify data and we control what fields to show and what fields to hide based on the login user role. After doing one/two projects on the tool, I used to it and started liking it.

Why I'm giving all this rather irrelevant information is here is, when I opened UIPath studio and started creating a new project, I quickly realized it's a kind of workflow tool. When I saw flowchart, sequence and activity words in the studio, I felt like seeing ex-college time crush after ten years. Though there is no link between MyWorkflow tool and UIPath, if at all my comfort levels were really high when started learning RPA/UIPath then that credit must be given to MyWorkflow tool.

Now it goes without saying, RPA is all about creating workflows. Everything in RPA world is a workflow. But mind you, don't think/imagine like normal workflow applications where usually it involves some kind of review/approval mechanism. NO, just assume you are creating a flowchart rather than a workflow if you have any confusion.

Just for analogy, if you compare regular .net programming project with UIPath project, it goes like this.

1. .Net Solution - UIPath Project
2. .Net Project -  UIPath Workflow
3. .Net Class - UIPath Flowchart/Sequence
4. .Net Class Methods - UIPath Activities

My request is, do not try to remember the above stupid mapping. Just for your understanding and just to give you some picture about RPA projects, I've given this way. It is as good as comparing wife and girl friend. If you think both are same then remember it otherwise leave it.

RPA - My first take

I do not exactly remember when I first encountered this word RPA. But when I heard like RPA means Robotic Process Automation, I thought it is something related to physical robots (like those we see in the manufacturing industries) and this technology is targeted to make them work in more smarter way somehow. But when I started reading about it, it does not take much time to understand that it is nothing to do with physical robots nor robotics.

Also, initially I thought like RPA could be a product name which we can buy and use for some kind of automation. This thought also vanished quickly and understand that RPA is a concept but it is not a tool/product.

If you are really new to RPA and came to this blog accidentally then tell me, what is coming to your imagination when you are thinking about RPA at this point of time!? It is not about physical robots/robotics, it is not a product or it is not a programming language. Then what ?

I was having same question during my initial learning hours. When I typed "what is RPA" in google, first definition I got something which is somehow irritating. Then I felt, instead of trying to understand the theory, let us do "Hello World" program in RPA straight away (That time I was not aware "Hello World" doesn't make any sense in RPA).

Then I started searching. Started thinking like, to write some program in RPA, what programming language I need to learn or what software I need to have. During that journey, I came to hear few names related to RPA like BluePrism, Automation Anywhere, UIPath etc...I thought of downloading one of the tool to start writing "Hello World".  

I did not find trial versions of BluePrism and/or Automation Anywhere but luckily UIPath tool was available for free (They call it community edition which is having all features of a fully licensed version). There are some licensing rules to use it in an enterprise organization but as an individual, you can download it and use it forever.

I downloaded and installed.

They call this download as "UIPath studio" like our Visual studio which is used to write RPA programs (Later I came to know that in RPA world, program is called as "Bot"). When I went through UIPath official website, I came across few other software components like UIPath Robot and UIPath Orchestrator in addition to UIPath studio which I downloaded. I was wondering what is the role of these components and why we need to buy/install so many.

I will explain you about these components in detail later posts but to give you an idea, UIPath studio is used to develop your RPA programs/bots. Once you develop your program and deliver to customer, what is needed on their machines to executed the program you delivered ? For this purpose they require a software component called "UIPath Robot".

Then what is Orchestrator ? 

In simple terms, it is web application used to manage your bots. Suppose you developed 50 bots for your customer. Practically it is tedious to deploy/manage/execute these many bots which might be running on different machines and during different times (If the bot is a scheduled one). Also, whenever code of a bot gets changed, it need to be redeployed replacing the current bot. Without a central configuration mechanism it is really hard in huge enterprises/organizes where 100's of bots might be running. Orchestrator is used for this purpose. Through this application, you can quickly monitor all you bots, easily deploy them, schedule bots for running and stop them from running. It is having few other features which we can discuss later.

Ok, let's get back to our task. Creating a "Hello World" program using UIPath. I opened UIPath studio. Like visual studio, it asked me to select a project type but only project type which was obvious to me was "Blank". Rather than worrying about other unknown project types, I clicked on Blank.



Then it asked me my project name. So far it is predictable. I given my project name and clicked on Ok. It showed me below window. After watching this window for 5-10 minutes, I simply closed it and started reading documentation and watching videos in the official UIPath studio. Everything in the below window looked greek and latin to me. I felt there is no point in going for an example without understanding something which looks completely new territory.




That's all I have for now.

What is my conclusion in this "First Take" ?

In fact I'm not very sure what exactly I intended to convey when I said "First Take". I will try to give some logical justification to that heading by saying something about output of any given RPA program with the help of a practical example.

Assume you are an accountant in a pharmaceutical company. Suddenly one morning when you came to the office, you heard that your management purchased a RPA program from an IT company to use in accounts section. Some IT person came and installed the software on a machine and since it is related to accounts section, you have been called for a demo and the program has been launched.

As an accountant, what you expect to see generally when a new program/software installed ?

Some new desktop user interface or some new glassy web screen right ? After that you generally expect that IT guy to tell you how to use the tool and what data to enter in the new application.

But to your surprise, you are not seeing anything new on the system. Whatever existing applications you are using daily to perform your work like EXCEL and SAP are getting opened themselves and data from EXCEL is going into the SAP magically as if some invisible man sitting and inputting data for you. That's it.

Though above example is bit over simplification, it is actually what you can expect from a RPA bot/program.

Unlike other software projects/programs, when you deliver a new RPA work, your users will not see any new application or new interface which solves end users new problems/requirements which were unaddressed by existing applications. RPA programs will just "use" applications which are already running on end user system. RPA programs are never intended to give new features, new functionalities to end user. They just work on other existing applications of your system "just like you work on them". More than that they won't offer anything ! dot !!