For a script, the source must be a javax.script.Invocable
object.
For a java method, the source specifies the object on which to invoke the method. If the source is a class then the static method of the class is invoked.
| function | The function/method to call. |
| parameters | The values to use as arguments. |
| source | The java object or script Invocable on which to invoke the method/function. |
| static | Indicates that the source contains a a java class and a static method on the class is to be invoked. |
| Example 1 | Invoke a method on a bean. |
| Example 2 | Invoke a static method of a class. |
| Example 3 | Invoking a function of a script. |
| Configured By | ATTRIBUTE |
| Access | READ_WRITE |
| Required | Yes. |
The function/method to call.
| Configured By | ELEMENT |
| Access | READ_WRITE |
| Required | Must match the expected arguments.. |
The values to use as arguments.
| Configured By | ELEMENT |
| Access | READ_WRITE |
| Required | Yes. |
The java object or script Invocable on which to invoke the method/function.
| Configured By | ATTRIBUTE |
| Access | READ_WRITE |
| Required | No. |
Indicates that the source contains a a java class and a static method on the class is to be invoked.
Invoke a method on a bean. The method takes a single date parameter which is uses to generate a time of day dependent greeting.
<oddjob>
<job>
<sequential>
<jobs>
<variables id="vars">
<message>
<invoke function="greeting">
<source>
<bean class="org.oddjob.script.GreetingService"/>
</source>
<parameters>
<schedule>
<date>
<value value="${date}"/>
</date>
<schedule>
<schedules:now xmlns:schedules="http://rgordon.co.uk/oddjob/schedules"/>
</schedule>
</schedule>
</parameters>
</invoke>
</message>
</variables>
<echo id="echo-greeting">${vars.message}</echo>
</jobs>
</sequential>
</job>
</oddjob>
The ${date} reference is there so that it can be injected
during a test, to get a guaranteed result. When this is example
is run as is, this is null so the system clock to be used
there by giving a real time based greeting.
One subtle point to note about Oddjob configuration that this example highlights is to do with when types are resolved. The invoke type will be resolved when the echo job is run. The schedule type will be resolved when the variables job is run. If the echo job were scheduled to run several hours after the variables job had run it would not give the correct greeting!
Invoke a static method of a class.
<oddjob>
<job>
<sequential>
<jobs>
<variables id="vars">
<message>
<invoke function="greetPerson" static="true">
<source>
<class name="org.oddjob.script.GreetingService"/>
</source>
<parameters>
<value value="John"/>
</parameters>
</invoke>
</message>
</variables>
<echo id="echo-greeting">${vars.message}</echo>
</jobs>
</sequential>
</job>
</oddjob>
Invoking a function of a script. See the script examples.