Introduction
JS7 offers an API for jobs are executed in the Agent's Java Virtual Machine:
- Java Jobs
- Such jobs run in the Java Virtual Machine used with the related JS7 Agent.
- JavaScript Jobs
- Such jobs require use of the GraalVM Java Virtual Machine with the related JS7 Agent.
JS7 offers an API to such jobs that serves the purpose of
- accessing arguments available to the job from various sources such as JS7 - Order Variables, job and node arguments, JS7 - Job Resources,
- allowing to specify the outcome of a job including return values that are passed to subsequent jobs from order variables.
Support for Java Jobs and JavaScript Jobs is available starting from the following releases:
FEATURE AVAILABILITY STARTING FROM RELEASE 2.5.4
FEATURE AVAILABILITY STARTING FROM RELEASE 2.6.1
Argument Sources
Arguments to jobs originate from a number of sources:
- Workflow Variables
- They are declared with the workflow and can hold default values. If no default value is specified then an order has to carry the variable and to assign a value. Otherwise an order optionally can assign a value to the variable.
- Declared Variables include all variables declared with the workflow.
- Order Variables include the variables specified with the order.
- Job Arguments
- The arguments are specified as key/value pairs with the given job. In case of multiple occurrence of the same job in a workflow the same arguments are used.
- Node Arguments
- The arguments are specified as key/value pairs with the job's node that is specific for the occurrence of a job in a workflow. Node Arguments allow to specify different argument sets if the same job is used a number of times in the workflow.
- Job Resource Variables
- The variables are specified as key/value pairs from JS7 - Job Resources.
- Job Resources can be assigned individually per job or to all jobs in a workflow.
Classes
Class js7.Job
The js7.Job
class is an abstract class that is implemented by a JS7Job
class in the job:
Methods
Method | Argument | Return Value |
---|---|---|
processOrder() | [object] js7Step | n/a |
Objects
Object | Purpose | |
---|---|---|
js7Step | The build-in object js7Step provides a number of methods | |
Method | Argument | Return Value |
getLogger() | [string] message | n/a |
getDeclaredArgument() | [string] argumentName | [object] argumentObject |
getDeclaredArgumentValue() | [string] argumentName |
|
getAllDeclaredArguments() | n/a | [object[]] argumentList |
Example
class JS7Job extends js7.Job { processOrder(js7Step) { js7Step.getLogger().info("Hello World"); } }
Explanations:
- The implementation class with the name
JS7Job
is required. - The
processOrder()
method is required to be implemented by the job.- The method is parameterized by the
js7Step
object. - The
js7Step
object is used with itsgetLogger()
method to create some output to the job's log.
- The method is parameterized by the
Class js7.JobArgument
The js7.JobArgument
class can optionally be used to access declared variables.
- Users implement a class for arguments with an arbitrary name that creates objects for declared arguments
- Users instantiate the class for arguments in their
JS7Job
class implementation.
Constructor
Constructor | Argument | Explanation |
---|---|---|
js7.JobArgument() |
| Specifies the name of the argument from a string. Argument names are case-sensitive |
[bool] isRequired | Optionally specifies if the argument is required. If required and the argument is not declared with the workflow and no default value is provided then an error will be raised. | |
[string|int|bool] defaultValue | Optionally specifies a default value using one of the indicated data types. | |
[enum] displayMode | Optionally specifies the js7.DisplayMode.MASKED enumeration value that prevents argument values from being logged. |
Example: Access Declared Arguments
class JobArguments { workflowPath = new js7.JobArgument('js7Workflow.path', true); } class JS7Job extends js7.Job { declaredArguments = new JobArguments(); processOrder(js7Step) { // option 1: access declared argument // option 1.a: access declared argument by name js7Step.getLogger().info('[GetDeclaredArgument] by name:'); var declaredArg1a = js7Step.getDeclaredArgument('js7Workflow.path'); js7Step.getLogger().info('declaredArgument: ' + declaredArg1a.getName() + '=' + declaredArg1a.getValue()); // option 1.b: access declared argument by object name js7Step.getLogger().info('[GetDeclaredArgument] by object name:'); var declaredArg1b = js7Step.getDeclaredArgument(this.declaredArguments.workflowPath.name); js7Step.getLogger().info('declaredArgument: ' + declaredArg1b.getName() + '=' + declaredArg1b.getValue()); // option 2: access declared argument value // option 2.a: access declared argument value by name js7Step.getLogger().info('[GetDeclaredArgumentValue] by name:'); js7Step.getLogger().info(js7Step.getDeclaredArgumentValue('js7Workflow.path')); // option 2.b: access declared argument value by object name js7Step.getLogger().info('[GetDeclaredArgumentValue] by object name:'); js7Step.getLogger().info(js7Step.getDeclaredArgumentValue(this.declaredArguments.workflowPath.name)); } }
Explanations:
- The example suggests two ways how to access declared arguments:
- Accessing the argument object: offers to use the
getName()
andgetValue()
methods of the argument object. - Accessing the argument value: directly returns the argument value.
- Accessing the argument object: offers to use the
- Argument names can be specified by strings or by using the
declaredArguments
instance of theJobArgument
class and the argument objects included.
Example: List Declared Arguments
class JobArguments { // arguments with string data type colorBlue = new js7.JobArgument('color_blue', true, 'blue'); colorRed = new js7.JobArgument('color_red', true, 'red'); colorOrange = new js7.JobArgument('color_orange', true, 'orange'); // arguments with numeric data type numOfDays = new js7.JobArgument('num_of_days', true, 5); // arguments with Boolean data type isEndOfMonth = new js7.JobArgument('is_end_of_month', true, true); // arguments with masked output that prevents value from being logged password = new js7.JobArgument('password', true, 'secret', js7.DisplayMode.MASKED); } class JS7Job extends js7.Job { declaredArguments = new JobArguments(); processOrder(js7Step) { // get list of all declared arguments var allArgs = js7Step.getAllDeclaredArguments(); js7Step.getLogger().info('[getAllDeclaredArguments]:'); js7Step.getLogger().info('all declared arguments: ' + allArgs); for (var arg in allArgs) { js7Step.getLogger().info(' ' + arg + '=' + allArgs[arg]); } } }
Explanations:
- The example declares a number of arguments with default values in different data types.
- The
getAllDeclaredArguments()
method returns the list of arguments that can be iterated.