Job Info

To plan a job one should create an information which includes at least handler type and its call time. The IJobInfo interface has next properties.

Job Info Properties

Id:Unique job identifier. Required attribute. Formed automatically and represents joint properties for Group and Name, divided by . symbol. Used to form an unique identifier of job instance during the call of handler.
Group:Job group name. Required attribute. Used to form an unique job Id and may logically group jobs. If a group is not defined then Default is used.
Name:Job name. Required attribute. Used to form an unique job Id, must be unique in Group. No default value.
State:Job execution state. Required attribute. By default the job is always planned to be executed - Planned however one can define job in paused state - Paused to further resume it by a trigger or request.
MisfirePolicy:Misfire job policy. Required attribute. By default all misfired jobs are ignored - DoNothing however scheduler can execute all jobs right away and can further proceed in accordance with schedule - FireAndProceed.
HandlerType:Job handler type. Required attribute. Job handler full name including a namespace and assembly name in which handler is declared. Used to invoke the handler.
Description:Job description. Optional attribute. For example, detailed job logic description. Anything that can be needed for understanding of proceedings.
StartTimeUtc:Start time job planning (UTC). Optional attribute. Planned immediately to be executed as put in the scheduler otherwise from the defined time. Start time should not exceed end time EndTimeUtc.
EndTimeUtc:End time job planning (UTC). Optional attribute. Planned immediately until the end of app execution otherwise till the defined time. End time should be less than its start time StartTimeUtc.
CronExpression:Job handler schedule in CRON style. Optional attribute. Defines schedule in calendar style. If it is not defined a first fire time coincides with start time StartTimeUtc.
Data:Job data. Optional attribute. Value of this attribute is available in job data context. Value of this attribute must be serializable.

Note

Job scheduler considers values of all attributes merging all conditions by logical conjunction.

Creating Job Info

To create information about job the following factory is used IJobInfoFactory, offering a few overloads of method CreateJobInfo(). Method signature CreateJobInfo() uses DSL (Domain Specific Language) which is represented as fluent interface.

 IJobInfoFactory factory;

 ...

 // Job "MyJob" will be executed daily
 // at 10:35 by job handler MyJobHandler
 factory.CreateJobInfo<MyJobHandler>("MyJob",
     b => b.CronExpression(e => e.AtHourAndMinuteDaily(10, 35)))