Class ScheduleSpec
- Namespace
- Temporalio.Api.Schedule.V1
- Assembly
- Temporalio.dll
ScheduleSpec is a complete description of a set of absolute timestamps (possibly infinite) that an action should occur at. The meaning of a ScheduleSpec depends only on its contents and never changes, except that the definition of a time zone can change over time (most commonly, when daylight saving time policy changes for an area). To create a totally self-contained ScheduleSpec, use UTC or include timezone_data.
For input, you can provide zero or more of: structured_calendar, calendar, cron_string, interval, and exclude_structured_calendar, and all of them will be used (the schedule will take action at the union of all of their times, minus the ones that match exclude_structured_calendar).
On input, calendar and cron_string fields will be compiled into structured_calendar (and maybe interval and timezone_name), so if you Describe a schedule, you'll see only structured_calendar, interval, etc.
If a spec has no matching times after the current time, then the schedule will be subject to automatic deletion (after several days).
public sealed class ScheduleSpec : IMessage<ScheduleSpec>, IEquatable<ScheduleSpec>, IDeepCloneable<ScheduleSpec>, IBufferMessage, IMessage
- Inheritance
-
ScheduleSpec
- Implements
-
IMessage<ScheduleSpec>IDeepCloneable<ScheduleSpec>IBufferMessageIMessage
- Inherited Members
Constructors
ScheduleSpec()
public ScheduleSpec()
ScheduleSpec(ScheduleSpec)
public ScheduleSpec(ScheduleSpec other)
Parameters
other
ScheduleSpec
Fields
CalendarFieldNumber
Field number for the "calendar" field.
public const int CalendarFieldNumber = 1
Field Value
CronStringFieldNumber
Field number for the "cron_string" field.
public const int CronStringFieldNumber = 8
Field Value
EndTimeFieldNumber
Field number for the "end_time" field.
public const int EndTimeFieldNumber = 5
Field Value
ExcludeCalendarFieldNumber
Field number for the "exclude_calendar" field.
public const int ExcludeCalendarFieldNumber = 3
Field Value
ExcludeStructuredCalendarFieldNumber
Field number for the "exclude_structured_calendar" field.
public const int ExcludeStructuredCalendarFieldNumber = 9
Field Value
IntervalFieldNumber
Field number for the "interval" field.
public const int IntervalFieldNumber = 2
Field Value
JitterFieldNumber
Field number for the "jitter" field.
public const int JitterFieldNumber = 6
Field Value
StartTimeFieldNumber
Field number for the "start_time" field.
public const int StartTimeFieldNumber = 4
Field Value
StructuredCalendarFieldNumber
Field number for the "structured_calendar" field.
public const int StructuredCalendarFieldNumber = 7
Field Value
TimezoneDataFieldNumber
Field number for the "timezone_data" field.
public const int TimezoneDataFieldNumber = 11
Field Value
TimezoneNameFieldNumber
Field number for the "timezone_name" field.
public const int TimezoneNameFieldNumber = 10
Field Value
Properties
Calendar
Calendar-based specifications of times.
public RepeatedField<CalendarSpec> Calendar { get; }
Property Value
- RepeatedField<CalendarSpec>
CronString
cron_string holds a traditional cron specification as a string. It accepts 5, 6, or 7 fields, separated by spaces, and interprets them the same way as CalendarSpec. 5 fields: minute, hour, day_of_month, month, day_of_week 6 fields: minute, hour, day_of_month, month, day_of_week, year 7 fields: second, minute, hour, day_of_month, month, day_of_week, year If year is not given, it defaults to *. If second is not given, it defaults to 0. Shorthands @yearly, @monthly, @weekly, @daily, and @hourly are also accepted instead of the 5-7 time fields. Optionally, the string can be preceded by CRON_TZ=<timezone name> or TZ=<timezone name>, which will get copied to timezone_name. (There must not also be a timezone_name present.) Optionally "#" followed by a comment can appear at the end of the string. Note that the special case that some cron implementations have for treating day_of_month and day_of_week as "or" instead of "and" when both are set is not implemented. @every <interval>[/<phase>] is accepted and gets compiled into an IntervalSpec instead. <interval> and <phase> should be a decimal integer with a unit suffix s, m, h, or d.
public RepeatedField<string> CronString { get; }
Property Value
- RepeatedField<string>
Descriptor
public static MessageDescriptor Descriptor { get; }
Property Value
- MessageDescriptor
EndTime
If end_time is set, any timestamps after end_time will be skipped.
public Timestamp EndTime { get; set; }
Property Value
- Timestamp
ExcludeCalendar
Any timestamps matching any of exclude_* will be skipped.
[Obsolete]
public RepeatedField<CalendarSpec> ExcludeCalendar { get; }
Property Value
- RepeatedField<CalendarSpec>
ExcludeStructuredCalendar
public RepeatedField<StructuredCalendarSpec> ExcludeStructuredCalendar { get; }
Property Value
- RepeatedField<StructuredCalendarSpec>
Interval
Interval-based specifications of times.
public RepeatedField<IntervalSpec> Interval { get; }
Property Value
- RepeatedField<IntervalSpec>
Jitter
All timestamps will be incremented by a random value from 0 to this amount of jitter. Default: 0
public Duration Jitter { get; set; }
Property Value
- Duration
Parser
public static MessageParser<ScheduleSpec> Parser { get; }
Property Value
- MessageParser<ScheduleSpec>
StartTime
If start_time is set, any timestamps before start_time will be skipped. (Together, start_time and end_time make an inclusive interval.)
public Timestamp StartTime { get; set; }
Property Value
- Timestamp
StructuredCalendar
Calendar-based specifications of times.
public RepeatedField<StructuredCalendarSpec> StructuredCalendar { get; }
Property Value
- RepeatedField<StructuredCalendarSpec>
TimezoneData
public ByteString TimezoneData { get; set; }
Property Value
- ByteString
TimezoneName
Time zone to interpret all calendar-based specs in.
If unset, defaults to UTC. We recommend using UTC for your application if at all possible, to avoid various surprising properties of time zones.
Time zones may be provided by name, corresponding to names in the IANA time zone database (see https://www.iana.org/time-zones). The definition will be loaded by the Temporal server from the environment it runs in.
If your application requires more control over the time zone definition used, it may pass in a complete definition in the form of a TZif file from the time zone database. If present, this will be used instead of loading anything from the environment. You are then responsible for updating timezone_data when the definition changes.
Calendar spec matching is based on literal matching of the clock time with no special handling of DST: if you write a calendar spec that fires at 2:30am and specify a time zone that follows DST, that action will not be triggered on the day that has no 2:30am. Similarly, an action that fires at 1:30am will be triggered twice on the day that has two 1:30s.
Also note that no actions are taken on leap-seconds (e.g. 23:59:60 UTC).
public string TimezoneName { get; set; }
Property Value
Methods
CalculateSize()
Calculates the size of this message in Protocol Buffer wire format, in bytes.
public int CalculateSize()
Returns
- int
The number of bytes required to write this message to a coded output stream.
Clone()
Creates a deep clone of this object.
public ScheduleSpec Clone()
Returns
- ScheduleSpec
A deep clone of this object.
Equals(object)
Determines whether the specified object is equal to the current object.
public override bool Equals(object other)
Parameters
other
object
Returns
Equals(ScheduleSpec)
Indicates whether the current object is equal to another object of the same type.
public bool Equals(ScheduleSpec other)
Parameters
other
ScheduleSpecAn object to compare with this object.
Returns
GetHashCode()
Serves as the default hash function.
public override int GetHashCode()
Returns
- int
A hash code for the current object.
MergeFrom(CodedInputStream)
Merges the data from the specified coded input stream with the current message.
public void MergeFrom(CodedInputStream input)
Parameters
input
CodedInputStream
Remarks
See the user guide for precise merge semantics.
MergeFrom(ScheduleSpec)
Merges the given message into this one.
public void MergeFrom(ScheduleSpec other)
Parameters
other
ScheduleSpec
Remarks
See the user guide for precise merge semantics.
ToString()
Returns a string that represents the current object.
public override string ToString()
Returns
- string
A string that represents the current object.
WriteTo(CodedOutputStream)
Writes the data to the given coded output stream.
public void WriteTo(CodedOutputStream output)
Parameters
output
CodedOutputStreamCoded output stream to write the data to. Must not be null.