Oracle Integration Cloud Integration provides, out of the box, a UIPath adapter for integrating with UIPath Orchestrator via UIPath Queues. Through a recent POC for a customer, we realized that existing documentation was lacking some detailed information on how to achieve data passing between OIC and UIPath using queues. This post aims to fill this gap by showing details on how to send data from OIC to, and receive response from, UIPath Orchestrator using a hello-world type of use case.
Before we start the UiPath implementation, we need to have a UIPath Robot created, configured, and ready to be invoked.
We will start by signing on to UIPath Orchestrator web site , creating a queue and then creating an Orchestrator Sequence in UiPath Studio. In the following steps, we will implement the sequence to receive input and send a response.
In UiPath Studio, only a variable of type QueueItem can be used to receive data from a queue, as shown in the image below.
As shown in the image
In the properties window on the right, select the queue we created at the start. The output property must be set to the queueItem variable (of type QueueItem).
There are a few different types of activities that allow you to read data from a queue. We find only the Get Transaction Item activity can be used in order to send a response back to the message sender later in the sequence. This is probably because this activity creates a transaction ID when receiving the data from queue. This transaction ID is tied to the message ID of the data just read from the queue. When sending a response back to the sender, we must use the same QueueItem variable in receiving so that UIPath can associate the response message back to the original input message ID via the transaction ID. With that, the sender is able to receive the response based on the same message ID.
Following the Get Transaction Item activity, we add an Assign activity to construct our response message. The image shows how we can retrieve the message content from the queueItem variable.
Notice the specificContent is a property of the QueueItem object. Later, we will see the Specific Content is referenced in the UIPath Adapter in OIC. The Specific Content is a map object that can contain any number of name-value pairs. The "zipCode" is such a name-value pair inside the SpecificContent and it is created in the UIPath Adapter in OIC.
Add a Set Transaction Status activity
Now that we have constructed our response message, we are ready to send it back. To do that, we use a Set Transaction Status activity.
In the properties window on the right, set the status to "Successful". We must set the TransactionItem property to the QueueItem variable we used in receiving.
Now, click the button next to the "output". This is where we will enter any number of name-value pairs as a response message going back to the sender. In our case, the name is "returnValue" and its value is set to the content of the tempValue variable.
This concludes our UIPath Orchestrator Sequence implementation.
First, we create a REST trigger that takes a "zipcode" input query parameter and responds with a JSON message as shown below.
Create a UIPath RPA Invoke
Create a UIPath RPA Invoke instance, set it up and test it as shown in the images below.
Next we will create an integration, add the trigger and the UIPath invoke we created in previous steps to the integration. This will brings us to the UIPath invoke configuration dialog windows.
Configure the UIPath Invoke instance as shown in the image.
If the configuration for the UIPath Adapter is correct, we should be able to see "Process" and "Robots" properties populated with values we created in UIPath.
Make sure "Wait for response" is checked. The name "Specific Content" and "Output" should look familiar now as they are discussed in the steps above. We need to make sure the names specified here must match exactly those used in UIPath Orchestrator. The "Specific Content" and the "Output" objects contain name-value pairs. In this demo, there is only one pair specified in each of these objects. But we can enter more pairs if it is necessary.
As shown in the images below.
Our completed OIC integration should look similar to this:
Once we have our integration deployed, we can test it with a browser like the following: