Class Cron

  • All Implemented Interfaces:
    AdditionalInformationHandler, CleanUpHandler, Destroyable, GlobalInfoSupporter, LoggingLevelHandler, LoggingSupporter, OptionHandler, QuickInfoSupporter, ShallowCopySupporter<Actor>, SizeOfHandler, Stoppable, StoppableWithFeedback, VariablesInspectionHandler, VariableChangeListener, Actor, ActorHandler, DaemonEvent, ErrorHandler, Event, Flushable, MutableActorHandler, Serializable, Comparable

    public class Cron
    extends AbstractStandalone
    implements MutableActorHandler, DaemonEvent
    Executes an actor according to a pre-defined schedule.
    Note: since the actor merely starts the cron scheduler in the background, the actor finishes the execution pretty much immediately. Therefore, the flow needs to be kept alive in order to let the background jobs getting executed. This can be done with a simple WhileLoop actor using the 'adams.flow.condition.bool.True' condition and a nested Start/Sleep actor. You can use the adams.flow.template.EndlessLooptemplate to generate this loop automatically.

    NB: Any newly scheduled jobs get dropped if the previous execution is still running.

    For more information on the scheduler format see:
    http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html

    Valid options are:

    -D <int> (property: debugLevel)
        The greater the number the more additional info the scheme may output to 
        the console (0 = off).
        default: 0
        minimum: 0
     
    -name <java.lang.String> (property: name)
        The name of the actor.
        default: Cron
     
    -annotation <adams.core.base.BaseText> (property: annotations)
        The annotations to attach to this actor.
        default: 
     
    -skip (property: skip)
        If set to true, transformation is skipped and the input token is just forwarded 
        as it is.
     
    -stop-flow-on-error (property: stopFlowOnError)
        If set to true, the flow gets stopped in case this actor encounters an error;
         useful for critical actors.
     
    -cron-actor <adams.flow.core.Actor> [-cron-actor ...] (property: cronActors)
        The actor to execute according to the cron schedule.
        default: 
     
    -schedule <adams.core.base.CronSchedule> (property: schedule)
        The schedule for execution the cron actor; format 'SECOND MINUTE HOUR DAYOFMONTH 
        MONTH WEEKDAY [YEAR]'.
        default: 0 0 1 * * ?
     
    For more information on the schedule format, see CronTrigger Tutorial.
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Detail

      • m_CronActors

        protected Sequence m_CronActors
        for actors that get executed.
      • m_Schedule

        protected CronSchedule m_Schedule
        the cron schedule.
      • m_Scheduler

        protected org.quartz.Scheduler m_Scheduler
        the scheduler.
      • m_ExecutingCronActors

        protected boolean m_ExecutingCronActors
        whether the cron-actors are currently being executed.
    • Constructor Detail

      • Cron

        public Cron()
    • Method Detail

      • checkCronActors

        protected String checkCronActors​(Actor[] actors)
        Checks the cron actors before they are set via the setCronActors method. Returns an error message if the actors are not acceptable, null otherwise.

        Default implementation always returns null.
        Parameters:
        actors - the actors to check
        Returns:
        null if accepted, otherwise error message
      • updateParent

        protected void updateParent()
        Updates the parent of all actors in this group.
      • setCronActors

        public void setCronActors​(Actor[] value)
        Sets the actors to execute on schedule.
        Parameters:
        value - the actors
      • getCronActors

        public Actor[] getCronActors()
        Returns the actors to execute on schedule.
        Returns:
        the actors
      • cronActorsTipText

        public String cronActorsTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setSchedule

        public void setSchedule​(CronSchedule value)
        Sets the execution schedule.
        Parameters:
        value - the schedule
      • getSchedule

        public CronSchedule getSchedule()
        Returns the execution schedule.
        Returns:
        the schedule
      • scheduleTipText

        public String scheduleTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • executeCronActors

        protected String executeCronActors()
        Executes the cron actors.
        Returns:
        null if execution successful, otherwise error message
      • size

        public int size()
        Returns the size of the group.
        Specified by:
        size in interface ActorHandler
        Returns:
        the number of actors
      • get

        public Actor get​(int index)
        Returns the actor at the given position.
        Specified by:
        get in interface ActorHandler
        Parameters:
        index - the position
        Returns:
        the actor
      • set

        public String set​(int index,
                          Actor actor)
        Sets the actor at the given position.
        Specified by:
        set in interface ActorHandler
        Parameters:
        index - the position
        actor - the actor to set at this position
        Returns:
        null if everything is fine, otherwise the error
      • indexOf

        public int indexOf​(String actor)
        Returns the index of the actor.
        Specified by:
        indexOf in interface ActorHandler
        Parameters:
        actor - the name of the actor to look for
        Returns:
        the index of -1 if not found
      • add

        public String add​(Actor actor)
        Inserts the actor at the end.
        Specified by:
        add in interface MutableActorHandler
        Parameters:
        actor - the actor to insert
        Returns:
        null if everything is fine, otherwise the error
      • add

        public String add​(int index,
                          Actor actor)
        Inserts the actor at the given position.
        Specified by:
        add in interface MutableActorHandler
        Parameters:
        index - the position
        actor - the actor to insert
        Returns:
        null if everything is fine, otherwise the error
      • remove

        public Actor remove​(int index)
        Removes the actor at the given position and returns the removed object.
        Specified by:
        remove in interface MutableActorHandler
        Parameters:
        index - the position
        Returns:
        the removed actor
      • getActorHandlerInfo

        public ActorHandlerInfo getActorHandlerInfo()
        Returns some information about the actor handler, e.g., whether it can contain standalones and the actor execution.
        Specified by:
        getActorHandlerInfo in interface ActorHandler
        Returns:
        the info
      • active

        public int active()
        Returns the number of non-skipped actors.
        Returns:
        the 'active' actors
      • firstActive

        public Actor firstActive()
        Returns the first non-skipped actor.
        Specified by:
        firstActive in interface ActorHandler
        Returns:
        the first 'active' actor, null if none available
      • lastActive

        public Actor lastActive()
        Returns the last non-skipped actor.
        Specified by:
        lastActive in interface ActorHandler
        Returns:
        the last 'active' actor, null if none available
      • check

        public String check()
        Performs checks on the "sub-actors".
        Specified by:
        check in interface ActorHandler
        Returns:
        null if everything OK, otherwise error message
      • forceVariables

        protected void forceVariables​(Variables value)
        Updates the Variables instance in use.

        Use with caution!
        Overrides:
        forceVariables in class AbstractActor
        Parameters:
        value - the instance to use
      • doExecute

        protected String doExecute()
        Executes the flow item.
        Specified by:
        doExecute in class AbstractActor
        Returns:
        null if everything is fine, otherwise error message
      • stopScheduler

        protected void stopScheduler()
        Stops the internal cron scheduler, if possible.
      • wrapUp

        public void wrapUp()
        Cleans up after the execution has finished. Graphical output is left untouched.
        Specified by:
        wrapUp in interface Actor
        Overrides:
        wrapUp in class AbstractActor