Quartz.Net – The IJobDetail Interface
This is another of the documentation series posts. This post will be documenting the IJobDetail interface. Here it is:
namespace Quartz
{
/// <summary>
/// Conveys the detail properties of a given job instance.
/// JobDetails are to be created/defined with <see cref="JobBuilder" />.
/// </summary>
/// <remarks>
/// Quartz does not store an actual instance of a <see cref="IJob" /> type, but
/// instead allows you to define an instance of one, through the use of a <see cref="IJobDetail" />.
/// <para>
/// <see cref="IJob" />s have a name and group associated with them, which
/// should uniquely identify them within a single <see cref="IScheduler" />.
/// </para>
/// <para>
/// <see cref="ITrigger" /> s are the 'mechanism' by which <see cref="IJob" /> s
/// are scheduled. Many <see cref="ITrigger" /> s can point to the same <see cref="IJob" />,
/// but a single <see cref="ITrigger" /> can only point to one <see cref="IJob" />.
/// </para>
/// </remarks>
/// <seealso cref="IJob" />
/// <seealso cref="DisallowConcurrentExecutionAttribute"/>
/// <seealso cref="PersistJobDataAfterExecutionAttribute"/>
/// <seealso cref="Quartz.JobDataMap"/>
/// <seealso cref="ITrigger"/>
/// <author>James House</author>
/// <author>Marko Lahma (.NET)</author>
public interface IJobDetail : ICloneable
{
/// <summary>
/// The key that identifies this jobs uniquely.
/// </summary>
JobKey Key { get; }
/// <summary>
/// Get or set the description given to the <see cref="IJob" /> instance by its
/// creator (if any).
/// </summary>
string Description { get; }
/// <summary>
/// Get or sets the instance of <see cref="IJob" /> that will be executed.
/// </summary>
Type JobType { get; }
/// <summary>
/// Get or set the <see cref="JobDataMap" /> that is associated with the <see cref="IJob" />.
/// </summary>
JobDataMap JobDataMap { get; }
/// <summary>
/// Whether or not the <see cref="IJob" /> should remain stored after it is
/// orphaned (no <see cref="ITrigger" />s point to it).
/// </summary>
/// <remarks>
/// If not explicitly set, the default value is <see langword="false" />.
/// </remarks>
/// <returns>
/// <see langword="true" /> if the Job should remain persisted after being orphaned.
/// </returns>
bool Durable { get; }
/// <summary>
/// Whether the associated Job class carries the <see cref="PersistJobDataAfterExecutionAttribute" />.
/// </summary>
/// <seealso cref="PersistJobDataAfterExecutionAttribute" />
bool PersistJobDataAfterExecution { get; }
/// <summary>
/// Whether the associated Job class carries the <see cref="DisallowConcurrentExecutionAttribute" />.
/// </summary>
/// <seealso cref="DisallowConcurrentExecutionAttribute"/>
bool ConcurrentExecutionDisallowed { get; }
/// <summary>
/// Set whether or not the the <see cref="IScheduler" /> should re-Execute
/// the <see cref="IJob" /> if a 'recovery' or 'fail-over' situation is
/// encountered.
/// </summary>
/// <remarks>
/// If not explicitly set, the default value is <see langword="false" />.
/// </remarks>
/// <seealso cref="IJobExecutionContext.Recovering" />
bool RequestsRecovery { get; }
/// <summary>
/// Get a <see cref="JobBuilder" /> that is configured to produce a
/// <see cref="IJobDetail" /> identical to this one.
/// </summary>
JobBuilder GetJobBuilder();
}
}
This post appeared first at jayvilalta.com