New Adventures in RPA
For the uninitiated RPA stands for Robotic Process Automation, or a way of making technology work in smarter ways. To paraphrase the tag line from UiPath “Make robots so people don’t have to be robots”.
“Robotic Process Automation is the technology that allows anyone today to configure computer software, or a “robot” to emulate and integrate the actions of a human interacting within digital systems to execute a business process. RPA robots utilize the user interface to capture data and manipulate applications just like humans do. They interpret, trigger responses and communicate with other systems in order to perform on a vast variety of repetitive tasks. Only substantially better: an RPA software robot never sleeps and makes zero mistakes.”
A couple of books caught my eye that I’ll probably look to pick up to enhance my learning
Broadly speaking business processes can be completed in a few ways. For example a customer might request a new account on the enterprise website, that request sends a message to a service/message bus which then takes the information and triggers a set of defined actions, as determined by the business logic of the enterprise. The end result being the customer gets an account created.
The same customer request could also be handled manually by an employee logging into frontend portals and services to create the required account credentials. Following the defined business logic steps at each stage. The end result is the same, but does this make the best use of an employees skills or does it ask the employee to act in a robotic manner?
Through technologies such as UiPath the incoming customer request could be handled by a robot to interact with the frontend portals and services to create the required account credentials. From a range of automated triggers such as an inbound email request, a date/time, website forms or initiated by the employee.
In the example of an account being created, the customer may have phoned through to request account creation. The employee can gather the required information for account creation and pass this to the robotic assistant to complete the creation steps. Creating time to have a wider conversation with the customer with the satisfaction and opportunity benefits that brings.
Robots and IT
I first developed robots before I even knew that I was developing robots. In a previous life the company I worked for was purchased and I was a member of the team given the task of migrating our colleagues to new IT systems. This involved migration of information from Novell NDS to Microsoft AD and Groupwise to Exchange which whilst complicated was actually manageable through various enterprise migration solutions. I thought the bigger challenge was with the reconfiguration of some 3500 desktop computers and laptops across 34 sites in the UK, so naturally I volunteered.
The solution myself and a colleague, Chris Moore, devised involved developing a mobile implementation of the corporate patch management Altiris solution and to discover devices and the current state. Then use this central management console to coordinate the activities of the Altiris agents depending on the current state, using scripts developed with AutoIT. This was in 2007. As a side note, our work on that project was awarded a Jacobs Master Builder Regional Award.
Fast forward to today and UiPath have unified this architecture, brought it up to date and made it accessible to business citizen developers and developers alike. With fully integrated product suite for the lifecycle of RPA.
Discussing the roles of each of these products is something I might post about later. However, in the interim check out the UiPath Academy resources.
Why am I looking at RPA today
In IT we’ve been automating tasks for years, we can automate via APIs, scripts, event brokers, service bus’ etc. etc.
In my experience we tend to automate the creation of the assets that then require configuration to add value. Through automation that server request now completes in minutes rather than hours or days, but on it’s own it delivers no value to the organisation. If it did we would not be having conversations about containerisation, serverless and stateless architectural patterns. We’re discussing them because they offer a faster path to realising value.
With RPA and closer integrations to the existing IT automation methods, can this gap be bridged to start bringing immediate value at the time of completion?
I suspect UiPath has considered this as we find they have developed and released to their community (remember that’s business citizen developers and developers alike) activities and frameworks to interact with;
As you can see from the above there is a pretty extensive and growing list of methods that can be used to interact with the various environments. The documentation that accompanies the VMware modules is pretty basic and could do with some examples. However, given these modules were only released at the back of 2019 that is understandable.
The StudioX tooling aimed at business citizen developers is powerful, but I found I chafed against it’s limitations pretty quickly. The Studio Pro tooling does make the assumption that you are well versed in VB.net. Even if you don’t the interface is simple enough to work your way around and all provided error messages are pretty concise.
Above you can see how things are logically built.
- The sequence first gets the credentials for the VMware environment, as a secure string from the UiPath Orchestrator.
- In the example above it prompts for the Data Center name to be selected from a list. However, this could just as easily be a variable, or pulled from a CSV, or Data Table.
- This information is passed to the ‘VMware scope’, along with the Virtual Center FQDN.
- The imaginatively named ‘Get Host List’ gets a list of the hosts and stores this in a variable type of ‘UiPath.VMware.Contracts.Host’
- ‘UiPath.VMware.Contracts.Host’ is an array of objects storing each host alongside values for ‘Id, InMaintenanceMode, Name and PowerState’
- With that array we can construct a ‘for each’ statement, we want to run ‘for each host in the list of hosts’
- Provide the ‘Hosts’ variable populated via ‘Get Host List’ and a variable to use inside the for each loop, in the example above ‘Host’.
- Important: You have to provide the for each statement with an ‘TypeArgument’!
- For the example above this is ‘UiPath.VMware.Contracts.Host’ <<<-not and array of objects but the object itself->>>
- So in full the ‘for each’ argument would read something like ‘ForEach UiPath.Vmware.Contract.Host in UiPath.VMware.Contract.Host‘.
- The final action in the example above pops up a message with the hostname of each host in the loop.
This example isn’t particularly useful but it does provide an overview of some of the VMware actions, in a context of a growing suite of VMware actions.
The Robots are here!
With UiPath the actions exist to install, configure and customise virtual machines from templates or OVAs, configure the OS, install and manage VMtools and other agents, integrate with SCCM, configure the robot, define and integrate to existing business processes and schedule robots work.
I keep reading about how the robots are coming, the reality is they are already here and ready for work.