Create custom variables using Package SDK
- Updated: 2022/05/19
Create custom variables using Package SDK
When using Automation 360, you can create custom variables using the SDK package.
Using custom variables
Use Automation 360 to create a custom variable. This is a system variable and is used as other bot variables, except it is read-only and the value is calculated instead of being assigned.
Required annotations
For creating a variable, the following annotations are required:
Annotation | Usage |
---|---|
BotCommand
|
Use the BotCommand annotation with the
variable as commandType . This ensures
that the plain old Java object (POJO) is suitable for creating an Automation 360 variable. |
CommandPkg
|
These values are used when creating a package. Provide a name, label, and description to the annotation. |
Idx
|
Annotate all the parameters and member variables that are required and help
with the validation check. Alternatively they might be displayed in the
interface for the input. Provide the index (Idx ) and the type. |
Pkg
|
Annotate all the parameters and member variables that will be shown in the
interface. This annotation will be ignored if it is not accompanied by the
Idx . |
VariableExecute
|
The method that has to be called for returning the variable value. This
method does not accept any input parameters. Sessions and
GlobalSessionContext are available though setter
injection. |
Use case example
The following use case shows how to return the current time for the system default zone.
- Create the POJO class with the business
logic:
public class Now { public DateTimeValue now() { Instant instant = Instant.now(); ZonedDateTime now = instant.atZone(ZoneId.systemDefault()); return new DateTimeValue(now); } }
- Annotate the POJO class to enable it for the Automation 360
variable and to create the
package:
@BotCommand(commandType = BotCommand.CommandType.Variable) @CommandPkg(description = "The current datetime at system default zone.", name = "Now", label = "", variable_return_type = DataType.DATETIME) public class Now { public DateTimeValue now() { Instant instant = Instant.now(); ZonedDateTime now = instant.atZone(ZoneId.systemDefault()); return new DateTimeValue(now); } }
- Annotate the
now
method to denote it to be the execute method.@VariableExecute public DateTimeValue now() { Instant instant = Instant.now(); ZonedDateTime now = instant.atZone(ZoneId.systemDefault()); return new DateTimeValue(now); }
Every variable must have one test
VariableExecute
method.