UiPath Activities Guide

About The Java Activities Pack

The Java Activities Pack contains several new activities that help you harness the power of Java code. With the Java Scope activity you can initialize a Java library, thus providing a scope for all subsequent activities. All activities in this pack must be run inside the aforementioned scope.

You can then load .jar files inside the Scope by using the Load Jar activity.

We have created the JavaObject variable, which is a custom data type used to process results from Java routines in UiPath by either converting them into standard C# datatypes or passing them as arguments to other Java methods. Also, you can retrieve fields from methods stored in this custom data type and store them in JavaObject variables, by using the Get Field activity.

This variable can be created from a method by using the Invoke Java Method activity or from a class, by using the Create Java Object activity.

If you find it easier to work in .NET, you can convert any JavaObject variable to an Object variable by using the Convert Java Object activity.

Example of Using The Java Activities Pack

To exemplify how to use this activity pack, we have built an automation process which showcases its capabilities of running both static and object methods, split into two parts:

  • For the first part, a Java library is initialized by using the Java Scope activity, then a .jar file containing the Java code is loaded by using Load Jar. A Static getArrayInt Method is run by using the Invoke Java Method activity, returning an array of integers and storing it in a JavaObject custom data type. Then, by using the Convert Java Object activity, the JavaObject is converted to a .NET array of integers - an Int32[] variable. Each value it contains is then written in the Output panel via a For Each activity. This shows how easy it is to switch between specific Java and .NET data types and then manipulate their values any way you want.

  • In the second part, inside the same Java Scope mentioned above, a Create Java Object activity is used to create another JavaObject containing a Coordinate class. By using another Invoke Java Method activity, the getCoordinateSum method is run. Object methods can be called similarly to static methods but, instead of using the TargetType, this time the TargetObject property is used, as we are now utilizing a JavaObject variable instead of an array of integers. The method returns its values in a third JavaObject and is converted back to a .NET Double variable by using another Convert Java Object activity. The final step is to display a Message Box which contains the value in the Double variable.

This is how the demo can be built:

The Static Method

  1. Open Studio and start a new Process.
  2. Drag a Java Scope activity to the Workflow Designer. Because no path is specified in the Java Library Path property, the Scope defaults to using the PATH environmental variable to initialize the Java Library.
  3. Drag a Load Jar activity to the Designer panel.
  4. Assign the path to the Objects.jar file in the JarPath property field.
  5. Drag an Invoke Java Method activity below the LoadJar.
  6. Input the method name in the MethodName property and then fill in the TargetType field with the Java package name and the class you want to use.

Note:

The TargetType property must be specified in the form package.name.ClassName. For example, if we have a package called com.package.example which contains the class User.Profile and we want to use it, then the TargetType property should look like com.package.example.User.Profile.

  1. Create a JavaObject variable, called JavaObjectResultStaticMethod, to store the values returned by the Invoke Java Method activity and place it into the Result property field.
  2. Add a Convert Java Object variable to the workflow and place the JavaObjectResultStaticMethod variable into the JavaObject property field.
  3. In the TypeArgument property field, select the System.Int32[] variable type.
  4. Create a new Int32[] variable, called ResultStaticMethod, and add it in the Result property field.
  5. Next, drag a For Each activity to the Designer panel.
  6. Set the TypeArgument property to Int32, and assign the ResultStaticMethod variable to the Values property field. This enables you to go through each integer of your array.
  7. Drag a Write Line activity into the Body of the For Each activity and assign value.ToString into its Text property. This helps you write all the values in the ResultStaticMethod variable in the Output panel, at runtime.

Your workflow should look like this:

The Object Method

  1. Add a Create Java Object activity to the workflow, under the Java Scope activity used in the previous example.
  2. Use the name of the Java package and the Coordinate class to fill in the TargetType property - uipath.java.test.Coordinate.
  3. Create a variable in the Result property field by using the Ctrl+K hotkey and name it JavaObject.
  4. Drag an Invoke Java Method activity to the Designer panel.
  5. To get the sum of the data returned by the Coordinate class, write the getCoordinateSum method into the MethodName property.
  6. Create a variable in the Result property field by using the Ctrl+K hotkey and name it JavaObjectResultObjectMethod.
  7. Add the JavaObject variable in the TargetObject field.
  8. Add a Convert Java Object activity to the workflow.
  9. Add the JavaObjectResultObjectMethod variable in the JavaObject field.
  10. In the TypeArgument property drop-down, select the System.Double datatype.
  11. Create a new Double variable, called ObjectMethodResultValue, and add it to the Result property field.
  12. Drag a Message Box to the Designer panel.
  13. Assign ObjectMethodResultValue.ToString to the Text property to display the values inside the Double variable. At runtime, the JavaObject is created, containing the Coordinate class, then the getCoordinateSum method is run and its results are returned in another JavaObject. The results are then converted to a .NET Double variable which is then displayed in a MessageBox.

The final workflow should look like this: