Создание бизнес-календаря

Вы можете создавать бизнес-календари как во время выполнения с помощью специального визуального редактора, так и во время разработки с использованием аннотированных Java-интерфейсов.

Создание бизнес-календаря во время выполнения

После установки дополнения используйте главное меню, чтобы открыть экран списка Business calendars.

business calendar list

Нажмите Create, чтобы открыть редактор Business calendar.

business calendar editor

Укажите следующие параметры:

  • Name – понятное пользователю описание данного календаря.

  • Code – уникальный идентификатор данного календаря.

Используйте вкладки редактора для настройки рабочих дней и часов, исключая нерабочее время, такое как праздники, отпуска и другое время вне работы.

Каждая запись календаря может включать метку (Mark) — значение, которое может использоваться для категоризации или указания причины, по которой день или время имеют нестандартные рабочие часы. Значение mark возвращается методами getDayInfo().

Выходные

На вкладке Holidays нажмите Create, чтобы добавить праздники и выходные дни.

Выберите подходящий тип выходного:

  • Day of week – отмечает выбранные дни недели как выходные. Например, субботу и воскресенье можно установить как выходные.

  • Specific date holiday – отмечает конкретную дату как праздничный день.

  • Annual holiday – отмечает праздник, который повторяется ежегодно в одну и ту же дату, например Новый год.

  • Cron-based holiday – определяет праздники с использованием формата Quartz CRON. Это полезно для более сложных правил, таких как третья пятница каждого месяца или первый понедельник июля.

Рабочее расписание

На вкладке Working schedule вы можете указать рабочие часы для каждого дня недели. В день может быть несколько рабочих периодов, но они не должны пересекаться.

Дополнительные рабочие дни

На вкладке Additional business days вы можете задать дни, которые всегда считаются рабочими. Если такая дата совпадает с праздником, она все равно будет считаться рабочим днем. Для неё можно задать другие рабочие часы.

Создание бизнес-календаря во время разработки

Используйте аннотированный Java-интерфейс для создания бизнес-календаря во время разработки. Например:

@BusinessCalendar(name = "Sample Business Calendar",
        code = "sample-business-calendar" ) (1)
public interface SampleBusinessCalendar {

    @CronHoliday(expression = "* * * 1-2 MAY ?", mark = "spring-holiday",
            description = "Early May public holidays") (2)
    @CronHoliday(expression = "* * * ? * 6#3", mark = "monthly-maintenance",
            description = "Scheduled maintenance on the third Saturday of each month")
    void cronHoliday();

    @WeeklyHoliday(value = DayOfWeek.SATURDAY, mark = "weekend",
            description = "Standard weekend day")
    @WeeklyHoliday(value = DayOfWeek.SUNDAY, mark = "weekend",
            description = "Standard weekend day") (3)
    void weeklyHolidays();

    @FixedDayHoliday(fixedDate = "2026-01-02", mark = "maintenance", description = "Scheduled maintenance") (4)
    @FixedDayHoliday(fixedDate = "2026-03-04", mark = "company-holiday", description = "Company day off")
    void fixedHoliday();

    @FixedYearlyHoliday(month = Month.NOVEMBER, dayOfMonth = 4, mark = "regional", description = "Annual regional holiday") (5)
    @FixedYearlyHoliday(month = Month.JUNE, dayOfMonth = 8, mark = "regional", description = "Annual regional holiday")
    void fixedYearlyHoliday();

    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.MONDAY,
            startTime = "08:00", endTime = "17:00", mark = "regular-hours") (6)
    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.WEDNESDAY,
            startTime = "09:00", endTime = "17:00", mark = "late-start")
    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.FRIDAY,
            startTime = "10:00", endTime = "15:00", mark = "short-day")
    void scheduledBD();

    @AdditionalBusinessDay(fixedDate = "2026-05-06",
            startTime = "10:00", endTime = "16:30", mark = "holiday-shift") (7)
    @AdditionalBusinessDay(fixedDate = "2026-07-08",
            startTime = "10:00", endTime = "16:30", mark = "extra-workday")
    void additionalBD();
}
1 Бизнес-календарь определенные во время разработки — это Java-интерфейс, аннотированный @BusinessCalendar. Эта аннотация требует два параметра:
  • name – понятное пользователю описание данного календаря.

  • code – уникальный идентификатор данного календаря.

2 @CronHoliday устанавливает праздники с использованием выражений Quartz CRON. Полезно для сложных или повторяющихся шаблонов. Используйте mark как короткий тег. Добавьте description для подробного описания.
3 @WeeklyHoliday задает определенные дни недели в качестве выходных. Используйте mark как короткий тег. Добавьте description для подробного описания.
4 @FixedDayHoliday задает праздники для конкретных дат. Используйте mark как короткий тег. Добавьте description для подробного описания.
5 @FixedYearlyHoliday задает праздники, которые повторяются ежегодно в одну и ту же дату. Используйте mark как короткий тег. Добавьте description для подробного описания.
6 @ScheduledBusinessDay устанавливает регулярные рабочие дни, включая время начала и окончания. Используйте mark как короткий тег.
7 AdditionalBusinessDay устанавливает рабочие дни вне обычного расписания (например, перенесённые рабочие дни). Используйте mark как короткий тег.
Бизнес-календарь, созданный во время разработки, отображается в списке всех бизнес-календарей но доступен только для просмотра.
business calendars