Hello, I am running Temporal locally (via CLI 1.1.2) and trying to get my schedule to exclude holidays like Christmas and New Years. I can’t figure out why holidays I add to .Skip seem to be ignored. The UI shows ExclusionCalendar as blank. I tried setting DayOfMonth + Year, as well as all of the properties (hour, min, second). What am I doing wrong?
Here is my code I run to create the schedule using the latest .NET SDK:
async Task ScheduleStartAsync2()
{
Console.WriteLine("Scheduling workflow in PST that runs Wed between 3pm except Christmas|NewYears");
ScheduleRange[] first = [new ScheduleRange(1)];
ScheduleRange[] twentyFifth = [new ScheduleRange(25)];
ScheduleRange[] y2024 = [new ScheduleRange(2024)];
ScheduleRange[] y2025 = [new ScheduleRange(2025)];
ScheduleRange[] allHours = [new ScheduleRange(0, 23)];
ScheduleRange[] allMinOrSec = [new ScheduleRange(0, 59)];
var action = ScheduleActionStartWorkflow.Create<CalendarWorkflow>(
wf => wf.RunAsync(),
new()
{
Id = "schedule-workflow-id",
TaskQueue = "CALENDAR_TASK_QUEUE",
});
var spec = new ScheduleSpec
{
Calendars = new List<ScheduleCalendarSpec>
{
new ScheduleCalendarSpec {
DayOfWeek = new List<ScheduleRange>{ new ScheduleRange(2) },
Hour = new List<ScheduleRange>{ new ScheduleRange(15)} }
},
TimeZoneName = "America/Los_Angeles",
Skip = new List<ScheduleCalendarSpec>
{
new ScheduleCalendarSpec { DayOfMonth = twentyFifth, Year = y2024, Hour = allHours, Minute = allMinOrSec, Second = allMinOrSec },
new ScheduleCalendarSpec { DayOfMonth = first, Year = y2025 },
new ScheduleCalendarSpec { DayOfMonth = twentyFifth, Year = y2025 },
}
};
var schedule = new Schedule(action, spec)
{
Policy = new()
{
CatchupWindow = TimeSpan.FromDays(1),
Overlap = ScheduleOverlapPolicy.AllowAll,
},
};
var scheduleHandle = await client.CreateScheduleAsync("sample-schedule-exclude-hol", schedule);
Console.WriteLine(@$"Started schedule {scheduleHandle.Id}");
}