创建工作日历

工作日历可以使用带注解的 Java 接口在设计时创建,或者通过 Administration(管理) → Business calendars(工作日历) UI 界面在运行时创建。

运行时创建工作日历

打开 Administration → Business calendars 应用程序界面,点击 Create 按钮,打开 Business calendar editor(工作日历编辑器) 界面。

business calendar editor

输入下列参数:

  • Name - 日历的可读描述。

  • Code - 日历的唯一标识符。

Holidays(假日) 标签页,点击 Create 添加假日和周末。

business calendar holidays

该组件支持下列类型的假日:

  • Day of week(星期) - 允许指定每周的假日;例如,星期六和星期日。

    business calendar day of week
  • Specific date holiday(特定日期假日) - 允许设置某一日期的特定假日,例如,2022-08-03

    business calendar specific date holiday
  • Annual holiday(年固定假日) - 每年重复的假日,例如,1 月 1 日

    business calendar annual holiday
  • Cron-based holiday(基于 Cron 的假日) - 允许用 quartz CRON 格式指定特殊的假日。参阅 Cron 入门 了解更多信息。

    business calendar cron holiday

    它可以用来指定一些重要的假期,例如,每个月的第三个星期五7月的第一个星期一 等。

Working schedule(工作日计划) 标签页,可以为一周的每天设置工作小时数。每天可以有多个工作时段,但是这些时段不能相互覆盖。

working sheduler editor

还可以在 Additional business days(额外工作日) 标签页将某些假日定义为工作日。如果这样的配置的某一天属于假日,也会按照工作日考虑。

additional business day editor

设计时创建工作日历

设计时可以用带注解的 Java 接口创建工作日历,示例:

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

    @CronHoliday(expression = "* * * 1-2 MAY ?") (2)
    @CronHoliday(expression = "* * * ? * 6#3")
    void cronHoliday();

    @WeeklyHoliday(DayOfWeek.SATURDAY)
    @WeeklyHoliday(value = DayOfWeek.SUNDAY,
            description = "Sunday is always a day for family") (3)
    void weeklyHolidays();

    @FixedDayHoliday(fixedDate = "2021-05-08") (4)
    @FixedDayHoliday(fixedDate = "2021-05-09")
    void fixedHoliday();

    @FixedYearlyHoliday(month = Month.NOVEMBER, dayOfMonth = 4) (5)
    @FixedYearlyHoliday(month = Month.JUNE, dayOfMonth = 12)
    void fixedYearlyHoliday();

    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.MONDAY,
            startTime = "08:00", endTime = "17:00") (6)
    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.WEDNESDAY,
            startTime = "09:00", endTime = "17:00")
    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.FRIDAY,
            startTime = "10:00", endTime = "15:00")
    void scheduledBD();

    @AdditionalBusinessDay(fixedDate = "2021-05-06",
            startTime = "10:00", endTime = "16:30") (7)
    @AdditionalBusinessDay(fixedDate = "2021-05-07",
            startTime = "10:00", endTime = "16:30")
    void additionalBD();

}
1 带注解的工作日历是一个使用 @BusinessCalendar 注解的接口。你需要为该注解指定下列参数:
  • name - 日历的可读描述。

  • code - 日历的唯一标识符。

2 指定假日 - 以 quartz CRON 格式
3 指定假日 - 每周固定假日。
4 指定假日 - 特定日期假日。
5 指定假日 - 每年一次的假日。
6 指定工作日 - 计划工作日。
7 指定工作日 - 额外工作日。

设计时创建的工作日历与其他日历一起在列表展示,但是只能查看,不能修改。

business calendars