Oddjob is a flexible scheduler and manager for jobs/tasks across a
distributed server network. Any machine can put off jobs to other servers,
may set dependencies or trigger alerts. It's suitable to automate batch
or shell scripts, trigger email processing, SQL queries, or file processing
1.6.027 Sep 2017 03:15
Move Tests to Junit 4.
Add Security to the WebApp (with a Read Only role).
Deferred to A Later Version.
Add Parent Started State to User Guide. Document thread, and services.
Find cut and paste where the old version of a job with an id is left
in the ComponentPool.
PropertiesJob after deserialisation is wrong. The properties recovered
from the stream are override properties and aren't removed on reset. Also
describeable doesn't work.
RepeatJob needs more tests and examples. Especially around soft resets.
Move Timer and State Jobs out of namespaces because things like
timer and if are really core. Create dummy super classes from depricated namespace jobs.
Introduce a witheach job that behaves like foreach except that values
are 'pushed' into it.
Document synthetic annotations in the Developer Guide.
Document conversions. Possibly include conversions in the Reference.
Add the ability to change the log level from the UI. Add LogLevel TRACE and
NONE to match Log4j.
Add serialisation of services.
Use a server side file system for choosing files on server component
Allow pasting and dragging Oddjobs onto the startup panel of Oddjob
Introduce the idea of Read only configuration that can't be modified if
it's been loaded from a non modifiable resource, i.e. from the class path.
Check a configuration hasn't been modified by someone else before a
modification is saved back from designer.
Add Undo functionality to Oddjob configuration.
Improve the job. Follow Ant's lead of changing to a job and
copy some of it's feature including; overwrite, force, failonerror, verbose,
preservelastmodified. Add the ability to back up the moved files like Linux does.
Introduce a FilterType that can filter files by modified date, created date,
or match against a regular expression.
1.5.015 Apr 2015 06:25
Created Reset Actions including an AUTO reset action that will look
at the state before issuing either a hard or soft reset. Changed Reset Job
to use the new actions.
Added an optional Reset Action to Run Job.
Added an ParameterisedExecutable concept to allow jobs to be run with
Timer STARTED state is not complete so a Cascade will wait for timers
Fixed bug where lastStateEvent was not reflected in a JMX client.
1.4.005 Nov 2014 21:05
Timers can now be forced to complete.
Added a classPath property to AntJob.
Added the ability to set System properties via the system flag on the
StructuralJob's default state operator has been changed back to WORST from
ACTIVE. It is felt this is more intuitive in most cases.
Support recursive directory wild card matching in Files Type with **.
Added flag to delete job to stop accidently deleting root and added extra
A Map Type has been added. The keys must be strings but the values can
be any type.
Structural jobs no longer attempt to Stop their children when destroyed.
This allows child jobs to distinguish between being stopped and destroyed.
Timers now use a separate TimerState not a ParentState. This allows them
to be STARTABLE like services.
Service states have been renamed from READY to STARTABLE and COMPLETE to
STOPPED. These states have different icons which makes it easier to see
the overview of a job sequence from Oddjob Explorer.
If job will now supports an asynchronous child job.
Added a new Service Finder to the Arooa Tools so that components can find
Structural jobs (sequential/parallel) will not time out when stopping. The
stop flag will remain true so that the job will eventually stop.
The List type will now accept elements being added on the fly via a new
Repeat Job will now work with any Iterable set of values, i.e. A List.
There is a new Sequence Type that creates integer sequences as an
This can be used with Repeat Job and For Each job for instance.
Tee type can now be used with an input stream to create a wire tap of
what is read from the stream.
The Log Panel in Explorer will now show TRACE messages.
The ScriptJob class loader can now be set.
URLClassLoader type now just creates one class loader when it's
not a new one each time it was resolved.
AppendType is now configured with a file attribute like FileType and
it also shares the same designer.