Scripting Jobs
Obsidian provides support for execution of scripted jobs in various languages. None of these require any Java code to be written. The script to execute is set via a script job parameter. Jobs are executed under the context of the process user running Obsidian.
The following job classes can be configured with executable scripts in their target languages:
- com.carfey.ops.job.script.JavaScriptJob running Rhino
- com.carfey.ops.job.script.PythonJob running Jython
- com.carfey.ops.job.script.GroovyJob Groovy
- com.carfey.ops.job.script.BeanShellJob executing a BeanShell script.
- com.carfey.ops.job.script.RubyJob JRuby. As of Obsidian 3.6.0. Requires at minimum, Java (JRE) 7.
- com.carfey.ops.job.script.ReflectiveJob is a convenience GroovyJob that does not require a script, using defined parameters to construct an object and invoke method(s), both supporting argument(s)
com.carfey.ops.job.script.SpringBeanJobis a convenience GroovyJob that does not require a script, using defined parameters to obtain the bean and invoke the method(s). Deprecated as of Obsidian 2.2.0. Use Dependency Injection instead.
Parameters
Any parameters configured for the job will be set as global variables within the script. If a single value is configured for a parameter, it will be set as its direct type. If multiple values are set for a parameter, it will be passed into the script as a list of values.
Loading Scripts from the File System
As of Obsidian 2.4, all script file jobs can now use a script file path instead of configuring the script directly in Obsidian. When the job runs, Obsidian will load the contents of the file and execute the script in the same way that jobs configured using the script parameter are run.
To use this feature, when configuring the job, omit the script parameter and instead supply a file path under Script File Path. It is recommended that an absolute path is used, and the Obsidian process will need read access to the file for it to run successfully.
Job Context
The job context variable is accessed through the global variable named "jobContext". This can be used to save output parameters, etc. See Job Results and Parameterization.
Sample Jobs
Groovy:
Python:
Javascript:
Ruby:
SpringBeanJob
Deprecated as of Obsidian 2.2.0. Use Dependency Injection instead. A SpringBeanJob is simply a convenience GroovyJob with a predefined script that uses some specified parameters to find a Spring Bean and invoke specified method(s). Specify any optional class imports (class names only), the single line of code to retrieve the Spring Bean reference and the method name(s) to invoke.



