| @@ -51,19 +51,16 @@ | |||||
| <WarningLevel>4</WarningLevel> | <WarningLevel>4</WarningLevel> | ||||
| </PropertyGroup> | </PropertyGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <Reference Include="C5"> | |||||
| <HintPath>..\packages\Quartz.2.0.1\lib\net40\C5.dll</HintPath> | |||||
| </Reference> | |||||
| <Reference Include="Common.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL"> | |||||
| <Reference Include="Common.Logging, Version=2.1.2.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL"> | |||||
| <SpecificVersion>False</SpecificVersion> | <SpecificVersion>False</SpecificVersion> | ||||
| <HintPath>..\packages\Common.Logging.2.0.0\lib\2.0\Common.Logging.dll</HintPath> | |||||
| <HintPath>..\packages\Common.Logging.2.1.2\lib\net40\Common.Logging.dll</HintPath> | |||||
| </Reference> | </Reference> | ||||
| <Reference Include="log4net"> | <Reference Include="log4net"> | ||||
| <HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath> | <HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath> | ||||
| </Reference> | </Reference> | ||||
| <Reference Include="Quartz, Version=2.0.1.100, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL"> | |||||
| <Reference Include="Quartz, Version=2.2.400.0, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL"> | |||||
| <SpecificVersion>False</SpecificVersion> | <SpecificVersion>False</SpecificVersion> | ||||
| <HintPath>..\packages\Quartz.2.0.1\lib\net40\Quartz.dll</HintPath> | |||||
| <HintPath>..\packages\Quartz.2.2\lib\net40\Quartz.dll</HintPath> | |||||
| </Reference> | </Reference> | ||||
| <Reference Include="System" /> | <Reference Include="System" /> | ||||
| <Reference Include="System.configuration" /> | <Reference Include="System.configuration" /> | ||||
| @@ -169,6 +166,9 @@ | |||||
| <DesignTime>True</DesignTime> | <DesignTime>True</DesignTime> | ||||
| </Compile> | </Compile> | ||||
| <None Include="app.config" /> | <None Include="app.config" /> | ||||
| <None Include="job_scheduling_data_2_0.xsd"> | |||||
| <SubType>Designer</SubType> | |||||
| </None> | |||||
| <None Include="packages.config" /> | <None Include="packages.config" /> | ||||
| <None Include="Properties\Settings.settings"> | <None Include="Properties\Settings.settings"> | ||||
| <Generator>SettingsSingleFileGenerator</Generator> | <Generator>SettingsSingleFileGenerator</Generator> | ||||
| @@ -0,0 +1,361 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||||
| xmlns="http://quartznet.sourceforge.net/JobSchedulingData" | |||||
| targetNamespace="http://quartznet.sourceforge.net/JobSchedulingData" | |||||
| elementFormDefault="qualified" | |||||
| version="2.0"> | |||||
| <xs:element name="job-scheduling-data"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Root level node</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexType> | |||||
| <xs:sequence maxOccurs="unbounded"> | |||||
| <xs:element name="pre-processing-commands" type="pre-processing-commandsType" minOccurs="0" maxOccurs="1"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Commands to be executed before scheduling the jobs and triggers in this file.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="processing-directives" type="processing-directivesType" minOccurs="0" maxOccurs="1"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Directives to be followed while scheduling the jobs and triggers in this file.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="schedule" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:complexType> | |||||
| <xs:sequence maxOccurs="unbounded"> | |||||
| <xs:element name="job" type="job-detailType" minOccurs="0" maxOccurs="unbounded" /> | |||||
| <xs:element name="trigger" type="triggerType" minOccurs="0" maxOccurs="unbounded" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| </xs:sequence> | |||||
| <xs:attribute name="version" type="xs:string"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Version of the XML Schema instance</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:attribute> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| <xs:complexType name="pre-processing-commandsType"> | |||||
| <xs:sequence maxOccurs="unbounded"> | |||||
| <xs:element name="delete-jobs-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete all jobs, if any, in the identified group. "*" can be used to identify all groups. Will also result in deleting all triggers related to the jobs.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="delete-triggers-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete all triggers, if any, in the identified group. "*" can be used to identify all groups. Will also result in deletion of related jobs that are non-durable.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="delete-job" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete the identified job if it exists (will also result in deleting all triggers related to it).</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexType> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| <xs:element name="delete-trigger" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete the identified trigger if it exists (will also result in deletion of related jobs that are non-durable).</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexType> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="processing-directivesType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="overwrite-existing-data" type="xs:boolean" minOccurs="0" default="true"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Whether the existing scheduling data (with same identifiers) will be overwritten. If false, and ignore-duplicates is not false, and jobs or triggers with the same names already exist as those in the file, an error will occur.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="ignore-duplicates" type="xs:boolean" minOccurs="0" default="false"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>If true (and overwrite-existing-data is false) then any job/triggers encountered in this file that have names that already exist in the scheduler will be ignored, and no error will be produced.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="schedule-trigger-relative-to-replaced-trigger" type="xs:boolean" minOccurs="0" default="false"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>If true trigger's start time is calculated based on earlier run time instead of fixed value. Trigger's start time must be undefined for this to work.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="job-detailType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a JobDetail</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="job-type" type="xs:string" /> | |||||
| <xs:sequence minOccurs="0"> | |||||
| <xs:element name="durable" type="xs:boolean" /> | |||||
| <xs:element name="recover" type="xs:boolean" /> | |||||
| </xs:sequence> | |||||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="job-data-mapType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a JobDataMap</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:element name="entry" type="entryType" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="entryType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a JobDataMap entry</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence> | |||||
| <xs:element name="key" type="xs:string" /> | |||||
| <xs:element name="value" type="xs:string" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="triggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a Trigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:choice> | |||||
| <xs:element name="simple" type="simpleTriggerType" /> | |||||
| <xs:element name="cron" type="cronTriggerType" /> | |||||
| <xs:element name="calendar-interval" type="calendarIntervalTriggerType" /> | |||||
| </xs:choice> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="abstractTriggerType" abstract="true"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Common Trigger definitions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="job-name" type="xs:string" /> | |||||
| <xs:element name="job-group" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="priority" type="xs:nonNegativeInteger" minOccurs="0" /> | |||||
| <xs:element name="calendar-name" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||||
| <xs:sequence minOccurs="0"> | |||||
| <xs:choice> | |||||
| <xs:element name="start-time" type="xs:dateTime" /> | |||||
| <xs:element name="start-time-seconds-in-future" type="xs:nonNegativeInteger" /> | |||||
| </xs:choice> | |||||
| <xs:element name="end-time" type="xs:dateTime" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="simpleTriggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a SimpleTrigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexContent> | |||||
| <xs:extension base="abstractTriggerType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="misfire-instruction" type="simple-trigger-misfire-instructionType" minOccurs="0" /> | |||||
| <xs:sequence minOccurs="0"> | |||||
| <xs:element name="repeat-count" type="repeat-countType" /> | |||||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||||
| </xs:sequence> | |||||
| </xs:sequence> | |||||
| </xs:extension> | |||||
| </xs:complexContent> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="cronTriggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a CronTrigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexContent> | |||||
| <xs:extension base="abstractTriggerType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="misfire-instruction" type="cron-trigger-misfire-instructionType" minOccurs="0" /> | |||||
| <xs:element name="cron-expression" type="cron-expressionType" /> | |||||
| <xs:element name="time-zone" type="xs:string" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:extension> | |||||
| </xs:complexContent> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="calendarIntervalTriggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a DateIntervalTrigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexContent> | |||||
| <xs:extension base="abstractTriggerType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="misfire-instruction" type="date-interval-trigger-misfire-instructionType" minOccurs="0" /> | |||||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||||
| <xs:element name="repeat-interval-unit" type="interval-unitType" /> | |||||
| </xs:sequence> | |||||
| </xs:extension> | |||||
| </xs:complexContent> | |||||
| </xs:complexType> | |||||
| <xs:simpleType name="cron-expressionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation> | |||||
| Cron expression (see JavaDoc for examples) | |||||
| Special thanks to Chris Thatcher (thatcher@butterfly.net) for the regular expression! | |||||
| Regular expressions are not my strong point but I believe this is complete, | |||||
| with the caveat that order for expressions like 3-0 is not legal but will pass, | |||||
| and month and day names must be capitalized. | |||||
| If you want to examine the correctness look for the [\s] to denote the | |||||
| seperation of individual regular expressions. This is how I break them up visually | |||||
| to examine them: | |||||
| SECONDS: | |||||
| ( | |||||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) [\s] | |||||
| MINUTES: | |||||
| ( | |||||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) [\s] | |||||
| HOURS: | |||||
| ( | |||||
| ((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?) | |||||
| | (([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3])) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) [\s] | |||||
| DAY OF MONTH: | |||||
| ( | |||||
| ((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?) | |||||
| | (([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?) | |||||
| | (L(-[0-9])?) | |||||
| | (L(-[1-2][0-9])?) | |||||
| | (L(-[3][0-1])?) | |||||
| | (LW) | |||||
| | ([1-9]W) | |||||
| | ([1-3][0-9]W) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| )[\s] | |||||
| MONTH: | |||||
| ( | |||||
| ((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?) | |||||
| | (([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2])) | |||||
| | (((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?) | |||||
| | ((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| )[\s] | |||||
| DAY OF WEEK: | |||||
| ( | |||||
| (([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?) | |||||
| | ([1-7]/([1-7])) | |||||
| | (((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?) | |||||
| | ((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?) | |||||
| | (([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))(L|LW)?) | |||||
| | (([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) | |||||
| YEAR (OPTIONAL): | |||||
| ( | |||||
| [\s]? | |||||
| ([\*])? | |||||
| | ((19[7-9][0-9])|(20[0-9][0-9]))? | |||||
| | (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))? | |||||
| | ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)? | |||||
| ) | |||||
| </xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern | |||||
| value="(((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?)|(([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3]))|([\?])|([\*]))[\s](((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?)|(([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?)|(L(-[0-9])?)|(L(-[1-2][0-9])?)|(L(-[3][0-1])?)|(LW)|([1-9]W)|([1-3][0-9]W)|([\?])|([\*]))[\s](((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?)|(([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2]))|(((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))|([\?])|([\*]))[\s]((([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?)|([1-7]/([1-7]))|(((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?)|((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?)|(([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))?(L|LW)?)|(([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?)|([\?])|([\*]))([\s]?(([\*])?|(19[7-9][0-9])|(20[0-9][0-9]))?| (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))?| ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)?)" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="repeat-countType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Number of times to repeat the Trigger (-1 for indefinite)</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:integer"> | |||||
| <xs:minInclusive value="-1" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="simple-trigger-misfire-instructionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Simple Trigger Misfire Instructions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="SmartPolicy" /> | |||||
| <xs:pattern value="RescheduleNextWithExistingCount" /> | |||||
| <xs:pattern value="RescheduleNextWithRemainingCount" /> | |||||
| <xs:pattern value="RescheduleNowWithExistingRepeatCount" /> | |||||
| <xs:pattern value="RescheduleNowWithRemainingRepeatCount" /> | |||||
| <xs:pattern value="FireNow" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="cron-trigger-misfire-instructionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Cron Trigger Misfire Instructions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="SmartPolicy" /> | |||||
| <xs:pattern value="DoNothing" /> | |||||
| <xs:pattern value="FireOnceNow" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="date-interval-trigger-misfire-instructionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Date Interval Trigger Misfire Instructions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="SmartPolicy" /> | |||||
| <xs:pattern value="DoNothing" /> | |||||
| <xs:pattern value="FireOnceNow" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="interval-unitType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Interval Units</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="Day" /> | |||||
| <xs:pattern value="Hour" /> | |||||
| <xs:pattern value="Minute" /> | |||||
| <xs:pattern value="Month" /> | |||||
| <xs:pattern value="Second" /> | |||||
| <xs:pattern value="Week" /> | |||||
| <xs:pattern value="Year" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| </xs:schema> | |||||
| @@ -1,6 +1,6 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <packages> | <packages> | ||||
| <package id="Common.Logging" version="2.0.0" /> | |||||
| <package id="Common.Logging" version="2.1.2" targetFramework="net40" /> | |||||
| <package id="log4net" version="1.2.10" /> | <package id="log4net" version="1.2.10" /> | ||||
| <package id="Quartz" version="2.0.1" /> | |||||
| <package id="Quartz" version="2.2" targetFramework="net40" /> | |||||
| </packages> | </packages> | ||||
| @@ -0,0 +1,13 @@ | |||||
| <?xml version="1.0"?> | |||||
| <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | |||||
| <metadata> | |||||
| <id>Common.Logging</id> | |||||
| <version>2.1.2</version> | |||||
| <authors>Aleksandar Seovic, Mark Pollack, Erich Eichinger, Stephen Bohlen</authors> | |||||
| <owners>Aleksandar Seovic, Mark Pollack, Erich Eichinger, Stephen Bohlen</owners> | |||||
| <projectUrl>http://netcommon.sourceforge.net/</projectUrl> | |||||
| <requireLicenseAcceptance>false</requireLicenseAcceptance> | |||||
| <description>Common.Logging library introduces a simple abstraction to allow you to select a specific logging implementation at runtime.</description> | |||||
| <language>en-US</language> | |||||
| </metadata> | |||||
| </package> | |||||
| @@ -0,0 +1,58 @@ | |||||
| <?xml version="1.0"?> | |||||
| <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> | |||||
| <metadata> | |||||
| <id>Quartz</id> | |||||
| <version>2.2</version> | |||||
| <title>Quartz.NET</title> | |||||
| <authors>Marko Lahma</authors> | |||||
| <owners>Marko Lahma</owners> | |||||
| <projectUrl>http://www.quartz-scheduler.net/</projectUrl> | |||||
| <requireLicenseAcceptance>false</requireLicenseAcceptance> | |||||
| <description>Quartz.NET Scheduling Framework for .NET Platform</description> | |||||
| <releaseNotes>This release contains important bug fixes, new functionality and minor breaking changes. | |||||
| UPGRADING | |||||
| Database schema upgrade is needed from 2.x series to 2.2: | |||||
| * SQL Server: alter table QRTZ_FIRED_TRIGGERS add SCHED_TIME [BIGINT] NOT NULL; | |||||
| * MySQL: alter table QRTZ_FIRED_TRIGGERS add SCHED_TIME BIGINT(19) NOT NULL | |||||
| * Oracle: alter table QRTZ_FIRED_TRIGGERS add SCHED_TIME NUMBER(19) NOT NULL | |||||
| * this adds a new column SCHED_TIME to table QRTZ_FIRED_TRIGGERS | |||||
| BREAKING CHANGES | |||||
| * database schema needs upgrade | |||||
| * add SchedulerStarting() method to ISchedulerListener interface | |||||
| * make the scheduler's TypeLoadHelper available to plugins when they are initialized | |||||
| * dbFailureRetryInterval parameter was removed from DirectSchedulerFactory APIs | |||||
| NEW FEATURES | |||||
| * ability to override worker thread names (when using SimpleThreadPool) | |||||
| * add new IScheduler method: ScheduleJob(IJobDetail job, ISet trigger) to schedule multiple triggers for a job all at once | |||||
| * allow 'triggerless' initial storing of non-durable jobs. | |||||
| * improvements for job recovery information | |||||
| * package job_scheduling_data_2_0.xsd to nuget package's content folder | |||||
| * allow scheduler exported with remoting to be used from local machine only | |||||
| * support for Oracle managed ODP driver | |||||
| FIXES | |||||
| * job ending with exception and trigger not going to fire again, trigger is incorrectly not removed from job store | |||||
| * XML schema supports multiple schedule elements but processor does not | |||||
| * DailyTimeIntervalTriggerPersistenceDelegate does not handle empty time interval properly | |||||
| * DailyTimeIntervalScheduleBuilder.EndingDailyAfterCount(...) doesn't pass validation | |||||
| * trace throwing exception | |||||
| * bug in QuartzSchedulerThread.GetRandomizedIdleWaitTime() | |||||
| * can't delete or replace job without the referenced class | |||||
| MISC | |||||
| * Performance improvements, including improvements to some select statements in AdoJobStore</releaseNotes> | |||||
| <language>en-US</language> | |||||
| <dependencies> | |||||
| <dependency id="Common.Logging" version="2.1.2" /> | |||||
| </dependencies> | |||||
| </metadata> | |||||
| </package> | |||||
| @@ -0,0 +1,361 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||||
| xmlns="http://quartznet.sourceforge.net/JobSchedulingData" | |||||
| targetNamespace="http://quartznet.sourceforge.net/JobSchedulingData" | |||||
| elementFormDefault="qualified" | |||||
| version="2.0"> | |||||
| <xs:element name="job-scheduling-data"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Root level node</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexType> | |||||
| <xs:sequence maxOccurs="unbounded"> | |||||
| <xs:element name="pre-processing-commands" type="pre-processing-commandsType" minOccurs="0" maxOccurs="1"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Commands to be executed before scheduling the jobs and triggers in this file.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="processing-directives" type="processing-directivesType" minOccurs="0" maxOccurs="1"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Directives to be followed while scheduling the jobs and triggers in this file.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="schedule" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:complexType> | |||||
| <xs:sequence maxOccurs="unbounded"> | |||||
| <xs:element name="job" type="job-detailType" minOccurs="0" maxOccurs="unbounded" /> | |||||
| <xs:element name="trigger" type="triggerType" minOccurs="0" maxOccurs="unbounded" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| </xs:sequence> | |||||
| <xs:attribute name="version" type="xs:string"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Version of the XML Schema instance</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:attribute> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| <xs:complexType name="pre-processing-commandsType"> | |||||
| <xs:sequence maxOccurs="unbounded"> | |||||
| <xs:element name="delete-jobs-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete all jobs, if any, in the identified group. "*" can be used to identify all groups. Will also result in deleting all triggers related to the jobs.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="delete-triggers-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete all triggers, if any, in the identified group. "*" can be used to identify all groups. Will also result in deletion of related jobs that are non-durable.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="delete-job" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete the identified job if it exists (will also result in deleting all triggers related to it).</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexType> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| <xs:element name="delete-trigger" minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Delete the identified trigger if it exists (will also result in deletion of related jobs that are non-durable).</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexType> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| </xs:element> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="processing-directivesType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="overwrite-existing-data" type="xs:boolean" minOccurs="0" default="true"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Whether the existing scheduling data (with same identifiers) will be overwritten. If false, and ignore-duplicates is not false, and jobs or triggers with the same names already exist as those in the file, an error will occur.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="ignore-duplicates" type="xs:boolean" minOccurs="0" default="false"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>If true (and overwrite-existing-data is false) then any job/triggers encountered in this file that have names that already exist in the scheduler will be ignored, and no error will be produced.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| <xs:element name="schedule-trigger-relative-to-replaced-trigger" type="xs:boolean" minOccurs="0" default="false"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>If true trigger's start time is calculated based on earlier run time instead of fixed value. Trigger's start time must be undefined for this to work.</xs:documentation> | |||||
| </xs:annotation> | |||||
| </xs:element> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="job-detailType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a JobDetail</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="job-type" type="xs:string" /> | |||||
| <xs:sequence minOccurs="0"> | |||||
| <xs:element name="durable" type="xs:boolean" /> | |||||
| <xs:element name="recover" type="xs:boolean" /> | |||||
| </xs:sequence> | |||||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="job-data-mapType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a JobDataMap</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence minOccurs="0" maxOccurs="unbounded"> | |||||
| <xs:element name="entry" type="entryType" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="entryType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a JobDataMap entry</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence> | |||||
| <xs:element name="key" type="xs:string" /> | |||||
| <xs:element name="value" type="xs:string" /> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="triggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a Trigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:choice> | |||||
| <xs:element name="simple" type="simpleTriggerType" /> | |||||
| <xs:element name="cron" type="cronTriggerType" /> | |||||
| <xs:element name="calendar-interval" type="calendarIntervalTriggerType" /> | |||||
| </xs:choice> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="abstractTriggerType" abstract="true"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Common Trigger definitions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:sequence> | |||||
| <xs:element name="name" type="xs:string" /> | |||||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="job-name" type="xs:string" /> | |||||
| <xs:element name="job-group" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="priority" type="xs:nonNegativeInteger" minOccurs="0" /> | |||||
| <xs:element name="calendar-name" type="xs:string" minOccurs="0" /> | |||||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||||
| <xs:sequence minOccurs="0"> | |||||
| <xs:choice> | |||||
| <xs:element name="start-time" type="xs:dateTime" /> | |||||
| <xs:element name="start-time-seconds-in-future" type="xs:nonNegativeInteger" /> | |||||
| </xs:choice> | |||||
| <xs:element name="end-time" type="xs:dateTime" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:sequence> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="simpleTriggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a SimpleTrigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexContent> | |||||
| <xs:extension base="abstractTriggerType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="misfire-instruction" type="simple-trigger-misfire-instructionType" minOccurs="0" /> | |||||
| <xs:sequence minOccurs="0"> | |||||
| <xs:element name="repeat-count" type="repeat-countType" /> | |||||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||||
| </xs:sequence> | |||||
| </xs:sequence> | |||||
| </xs:extension> | |||||
| </xs:complexContent> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="cronTriggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a CronTrigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexContent> | |||||
| <xs:extension base="abstractTriggerType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="misfire-instruction" type="cron-trigger-misfire-instructionType" minOccurs="0" /> | |||||
| <xs:element name="cron-expression" type="cron-expressionType" /> | |||||
| <xs:element name="time-zone" type="xs:string" minOccurs="0" /> | |||||
| </xs:sequence> | |||||
| </xs:extension> | |||||
| </xs:complexContent> | |||||
| </xs:complexType> | |||||
| <xs:complexType name="calendarIntervalTriggerType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Define a DateIntervalTrigger</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:complexContent> | |||||
| <xs:extension base="abstractTriggerType"> | |||||
| <xs:sequence> | |||||
| <xs:element name="misfire-instruction" type="date-interval-trigger-misfire-instructionType" minOccurs="0" /> | |||||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||||
| <xs:element name="repeat-interval-unit" type="interval-unitType" /> | |||||
| </xs:sequence> | |||||
| </xs:extension> | |||||
| </xs:complexContent> | |||||
| </xs:complexType> | |||||
| <xs:simpleType name="cron-expressionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation> | |||||
| Cron expression (see JavaDoc for examples) | |||||
| Special thanks to Chris Thatcher (thatcher@butterfly.net) for the regular expression! | |||||
| Regular expressions are not my strong point but I believe this is complete, | |||||
| with the caveat that order for expressions like 3-0 is not legal but will pass, | |||||
| and month and day names must be capitalized. | |||||
| If you want to examine the correctness look for the [\s] to denote the | |||||
| seperation of individual regular expressions. This is how I break them up visually | |||||
| to examine them: | |||||
| SECONDS: | |||||
| ( | |||||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) [\s] | |||||
| MINUTES: | |||||
| ( | |||||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) [\s] | |||||
| HOURS: | |||||
| ( | |||||
| ((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?) | |||||
| | (([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3])) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) [\s] | |||||
| DAY OF MONTH: | |||||
| ( | |||||
| ((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?) | |||||
| | (([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?) | |||||
| | (L(-[0-9])?) | |||||
| | (L(-[1-2][0-9])?) | |||||
| | (L(-[3][0-1])?) | |||||
| | (LW) | |||||
| | ([1-9]W) | |||||
| | ([1-3][0-9]W) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| )[\s] | |||||
| MONTH: | |||||
| ( | |||||
| ((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?) | |||||
| | (([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2])) | |||||
| | (((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?) | |||||
| | ((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| )[\s] | |||||
| DAY OF WEEK: | |||||
| ( | |||||
| (([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?) | |||||
| | ([1-7]/([1-7])) | |||||
| | (((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?) | |||||
| | ((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?) | |||||
| | (([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))(L|LW)?) | |||||
| | (([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?) | |||||
| | ([\?]) | |||||
| | ([\*]) | |||||
| ) | |||||
| YEAR (OPTIONAL): | |||||
| ( | |||||
| [\s]? | |||||
| ([\*])? | |||||
| | ((19[7-9][0-9])|(20[0-9][0-9]))? | |||||
| | (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))? | |||||
| | ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)? | |||||
| ) | |||||
| </xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern | |||||
| value="(((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?)|(([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3]))|([\?])|([\*]))[\s](((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?)|(([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?)|(L(-[0-9])?)|(L(-[1-2][0-9])?)|(L(-[3][0-1])?)|(LW)|([1-9]W)|([1-3][0-9]W)|([\?])|([\*]))[\s](((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?)|(([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2]))|(((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))|([\?])|([\*]))[\s]((([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?)|([1-7]/([1-7]))|(((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?)|((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?)|(([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))?(L|LW)?)|(([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?)|([\?])|([\*]))([\s]?(([\*])?|(19[7-9][0-9])|(20[0-9][0-9]))?| (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))?| ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)?)" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="repeat-countType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Number of times to repeat the Trigger (-1 for indefinite)</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:integer"> | |||||
| <xs:minInclusive value="-1" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="simple-trigger-misfire-instructionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Simple Trigger Misfire Instructions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="SmartPolicy" /> | |||||
| <xs:pattern value="RescheduleNextWithExistingCount" /> | |||||
| <xs:pattern value="RescheduleNextWithRemainingCount" /> | |||||
| <xs:pattern value="RescheduleNowWithExistingRepeatCount" /> | |||||
| <xs:pattern value="RescheduleNowWithRemainingRepeatCount" /> | |||||
| <xs:pattern value="FireNow" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="cron-trigger-misfire-instructionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Cron Trigger Misfire Instructions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="SmartPolicy" /> | |||||
| <xs:pattern value="DoNothing" /> | |||||
| <xs:pattern value="FireOnceNow" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="date-interval-trigger-misfire-instructionType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Date Interval Trigger Misfire Instructions</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="SmartPolicy" /> | |||||
| <xs:pattern value="DoNothing" /> | |||||
| <xs:pattern value="FireOnceNow" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| <xs:simpleType name="interval-unitType"> | |||||
| <xs:annotation> | |||||
| <xs:documentation>Interval Units</xs:documentation> | |||||
| </xs:annotation> | |||||
| <xs:restriction base="xs:string"> | |||||
| <xs:pattern value="Day" /> | |||||
| <xs:pattern value="Hour" /> | |||||
| <xs:pattern value="Minute" /> | |||||
| <xs:pattern value="Month" /> | |||||
| <xs:pattern value="Second" /> | |||||
| <xs:pattern value="Week" /> | |||||
| <xs:pattern value="Year" /> | |||||
| </xs:restriction> | |||||
| </xs:simpleType> | |||||
| </xs:schema> | |||||