Package org.oddjob.scheduling
Class Trigger
java.lang.Object
org.oddjob.framework.extend.BaseComponent
org.oddjob.framework.extend.BasePrimary
org.oddjob.scheduling.ScheduleBase
org.oddjob.scheduling.Trigger
- All Implemented Interfaces:
Serializable,Runnable,ArooaContextAware,ArooaSessionAware,Forceable,PropertyChangeNotifier,Iconic,LogEnabled,Resettable,Stateful,Stoppable,Structural
- Author:
- Rob Gordon.
- See Also:
- The scheduling example (
examples/scheduling/dailyftp.xml) uses a trigger to send an email if one of the FTP transfers fails.
Description
A trigger runs its job when the job being triggered on enters the state specified.Once the trigger's job runs, the trigger will reflect the state of the job. The trigger will continue to reflect its job's state until it is reset.
Subsequent state changes in the triggering job are ignored until the trigger is reset and re-run.
If the triggering job is destroyed, because it is deleted or on a remote server the trigger will enter an exception state.
Example
A simple trigger.
<oddjob id="this">
<job>
<sequential name="Trigger Example">
<jobs>
<scheduling:trigger name="Alert Trigger" on="${important}" xmlns:scheduling="http://rgordon.co.uk/oddjob/scheduling">
<job>
<echo name="Alert">Important job has completed!</echo>
</job>
</scheduling:trigger>
<folder name="A Folder of Jobs">
<jobs>
<echo id="important" name="Run Me">I'm important</echo>
</jobs>
</folder>
</jobs>
</sequential>
</job>
</oddjob>
A trigger that runs once two other jobs have completed.
<oddjob xmlns:scheduling="http://rgordon.co.uk/oddjob/scheduling" xmlns:state="http://rgordon.co.uk/oddjob/state">
<job>
<sequential name="Trigger on Two Things">
<jobs>
<scheduling:trigger id="trigger" on="${watch-both}">
<job>
<echo id="notify" name="Triggered Job">You ran two things!</echo>
</job>
</scheduling:trigger>
<state:and id="watch-both" name="Watch Two Jobs">
<jobs>
<state:mirror job="${thing1}" name="Mirror Job 1"/>
<state:mirror job="${thing2}" name="Mirror Job 2"/>
</jobs>
</state:and>
<folder name="A Folder of Jobs">
<jobs>
<echo id="thing1" name="Run me!">Thank you</echo>
<echo id="thing2" name="Run me!">Thank you</echo>
</jobs>
</folder>
</jobs>
</sequential>
</job>
</oddjob>
Cancelling a trigger.
<oddjob id="this" xmlns:scheduling="http://rgordon.co.uk/oddjob/scheduling">
<job>
<sequential name="Trigger Example">
<jobs>
<scheduling:trigger id="trigger" name="Alert Trigger" on="${our-job}" state="FAILURE" cancelWhen="FINISHED">
<job>
<echo name="Alert" id="triggered-job">That job shouldn't fail!</echo>
</job>
</scheduling:trigger>
<folder name="A Folder of Jobs">
<jobs>
<echo id="our-job" name="Run Me">I won't fail</echo>
</jobs>
</folder>
</jobs>
</sequential>
</job>
</oddjob>
Examples Elsewhere.
-
Field Summary
Fields inherited from class org.oddjob.scheduling.ScheduleBase
begun, childHelper, childStateReflector, stateHandler, stop -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbegin()Sub classes must override this to submit the first execution.getOn()getState()protected StateOperatorSub classes provide the state operator that is used to calculate the subclasses completion state.booleanprotected voidonStop()Subclasses can override to perform stopping operations.protected voidpostStop()Subclasses can override to perform actions once children have stopped.voidsetCancelWhen(StateCondition cancelWhen) voidsetExecutorService(ExecutorService executor) voidvoidsetNewOnly(boolean newEventOnly) voidvoidsetState(StateCondition state) Methods inherited from class org.oddjob.scheduling.ScheduleBase
addStructuralListener, fireDestroyedState, force, getStateChanger, hardReset, iconHelper, onDestroy, onReset, removeStructuralListener, run, softReset, stateHandler, stopMethods inherited from class org.oddjob.framework.extend.BasePrimary
configure, getName, logger, logger, loggerName, save, setName, toStringMethods inherited from class org.oddjob.framework.extend.BaseComponent
addIconListener, addPropertyChangeListener, addStateListener, configure, destroy, firePropertyChange, getArooaSession, iconForId, initialise, lastStateEvent, onConfigured, onInitialised, removeIconListener, removePropertyChangeListener, removeStateListener, save, setArooaContext, setArooaSessionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.oddjob.Stateful
addStateListener, lastStateEvent, removeStateListener
-
Constructor Details
-
Trigger
public Trigger()
-
-
Method Details
-
setExecutorService
-
getStateOp
Description copied from class:ScheduleBaseSub classes provide the state operator that is used to calculate the subclasses completion state.- Specified by:
getStateOpin classScheduleBase- Returns:
- The operator. Must not be null.
-
begin
protected void begin()Description copied from class:ScheduleBaseSub classes must override this to submit the first execution.- Specified by:
beginin classScheduleBase
-
onStop
protected void onStop()Description copied from class:ScheduleBaseSubclasses can override to perform stopping operations.- Overrides:
onStopin classScheduleBase
-
postStop
protected void postStop()Description copied from class:ScheduleBaseSubclasses can override to perform actions once children have stopped.- Overrides:
postStopin classScheduleBase
-
setJob
- Reference Property:
- job
- Required:
- Yes.
Description
The job to run when the trigger fires. -
getState
-
setState
-
getCancelWhen
-
setCancelWhen
-
isNewOnly
public boolean isNewOnly() -
setNewOnly
public void setNewOnly(boolean newEventOnly) -
getOn
-
setOn
-