Managing Recurrences
When you submit a process with a repetition, be it by specifying a recurrence or submit frame, a recurrence is created. Recurrences have a subset of process properties that can be set and that define the properties of all processes in the recurrence that have not yet started running.
The following properties are copied from the first process that defines the recurrence:
- BaseSubmitTime - by default, the time the first process was submitted
- HoldOnSubmit
- Parameters
- Priority
- Queue
- Submit Frame
- Time Window
- Time Zone
The BaseSubmitTime is the original scheduled time of the first process. Note that by default this is the time at which the submit wizard was opened, the actual Scheduled Start time of the process may differ, depending on when you actually submitted the process and the time you specified in the wizard.
When you edit a single process of a recurrence, it exits the recurrence. This allows you to delay or edit one process in the recurrence without affecting other processes, this is useful when you have an unexpected down-time issue of a process server, for example.
When you edit a process that is member of a recurrence, a pop-up window will ask you if you want to delay the process, edit it or edit the corresponding recurrence.
When you restart a recurrence, the restarted processes will keep the base time of the processes that originally defined the recurrence.
note
Note that processes with a restart count do not wait for each other, Redwood Server simply makes sure that <n>
processes in a non-final state are in the recurrence.
note
When you pre-submit more than 100 processes, you will get a warning. The maximum number of processes you ca pre-submit is set to 5000
.
note
You cannot pre-submit more than 5000 processes, as this can have serious consequences in terms of performance.
JobGroups and JobStatusForGroup
Processes that have been submitted as part of a Recurrence ({JobGroup}), using a submit frame or a repetition as defined in the submit wizard for example, have an additional status, the Process Status For Recurrence ( JobStatusForJobGroup
) status. It is used to indicate if the process is part of the recurrence (status Default ) or has left the recurrence ( Delayed, Edited, or Restarted ).
The following process status for recurrences are used:
- Default (
D
) - the process is part of the recurrence - Delayed (
L
) - the process has been delayed independently of other processes in the recurrence - Edited (
E
) - the process has been edited independently of other processes in the recurrence - EditedPersist (
P
) - the process has been edited and this has not yet been processed completely. The process will have the status for recurrence of Edited in short moment - Restarted (
R
) - the process is the consequence of a restart of a process that is part of the recurrence
Recurrence Status
Each and every recurrence has a status; the recurrence status is used to indicate if a recurrence is still active, processes in it are rescheduled, and the reason why it ended, if it has ended.
The following recurrence statuses are available:
- FinishedJobCount (
C
) - The recurrence reached the maximum number of processes. - FinishedEndDate (
D
) - The recurrence reached the end date. - FinishedManually (
M
) - The recurrence is finished on a user request. - FinishedSubmitFrame (
S
) - The recurrence reached the end of the submit frame. - Finished (
F
) - The recurrence and all its processes are finished.
Troubleshooting JobGroups
You can use the below SQL statement to list all the latest processes of active or held JobGroups that are not active processes.
For reference, the SQL statement excludes the following statuses:
4
( OnChange )6
( PreRunning )8
( PostRunnning )a
( Assigned )H
( Held )N
( Never )q
( Dispatched )Q
( Queued )R
( Running )S
( Scheduled )V
( EventWait )W
( Waiting )
select Job.* from Job where UniqueId in (select jg.LatestJob from JobGroup jg where jg.Status in ('H','A')) and Job.Status not in ( '4', '6', '8', 'a', 'H', 'N', 'q', 'Q', 'R', 'S', 'V', 'W') and Job.JobGroup is not null;