Argument Sources
Arguments to JS7 - JavaScript 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.
Accessing Arguments
Reading specific Arguments
Example for implementation of js7Job with JavaScript
class JS7Job extends js7.Job { processOrder(js7Step) { js7Step.getLogger().info( js7Step.getAllArgumentsAsNameValueMap['js7Workflow.path'] ); } }
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 write output to the job's log. - The
getAllArgumentsAsNameValueMap()
method provides a map of all arguments. The map allows to read a single argument from the argument name.
- The method is parameterized by the
Reading the list of Arguments
Example for implementation of js7Job with JavaScript
class JS7Job extends js7.Job { processOrder(js7Step) { var allArgs = js7Step.getAllArguments(); for (var arg in allArgs) { js7Step.getLogger().info('argument: ' + arg + '=' + allArgs[arg]); } } }
Accessing Declared Arguments
Reading specific Declared Arguments
Example for implementation of js7JobArgument with JavaScript
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.
Reading the list of Declared Arguments
Example for implementation of js7JobArgument with JavaScript
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('declared argument: ' + arg + '=' + allArgs[arg]); } } }
Explanation:
- 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.
Further Resources
Overview
Content Tools