注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
Foundry支持任意嵌套的AND
和OR
触发器,以支持创建特定的自定义触发器。
时间触发器是在指定的时间点满足的触发器。
时间触发器仅在指定的时间点满足。指定的时间点过去后,时间触发器不再满足。
时间触发器是使用cron表达式 ↗和时区定义的。
计划编辑器提供了一个易于使用的界面,以定义简单的时间触发器,而无需编写cron表达式。
更复杂的时间触发器可能需要编写自定义的cron表达式。
计划编辑器使用标准的Unix cron表达式格式,包含五个字段:
Copied!1 2 3 4 5 6 7
+--------- Minute (分钟) | +------- Hour (小时) | | +----- Day of Month (月份中的某一天) | | | +--- Month (月份) | | | | +- Day of Week (星期中的某一天) | | | | | * * * * *
这个结构用于定义 Cron 表达式的字段顺序,每个字段用空格分隔。
数据健康使用Quartz cron格式 ↗(六参数),而不是Unix cron格式 ↗(五参数)。Quartz实现了一个额外的秒字段,该字段被添加到标准Unix cron格式之前。
调度编辑器允许以下值用于每个字段:
字段 | 允许值 | 允许的特殊字符 | 备注 |
---|---|---|---|
分钟 | 0-59 | * - / , | |
小时 | 0-23 | * - / , | |
日 | 1-31 | * - / , L | |
月 | 1-12或JAN-DEC | * - / , | |
星期 | 0-6或SUN-SAT | * - / , L # | 7也表示星期天 |
特殊字符的含义如下:
星号(*
): 指定所有值。
示例:
分钟 | 含义 |
---|---|
* | 每分钟 |
连字符(-
): 指定一个范围的值。
示例:
分钟 | 含义 |
---|---|
10-20 | 从10到20分钟(包括) |
斜杠(/
): 指定一个步进范围的值。
步进范围可以通过值或范围来定义:
示例:
分钟 | 含义 |
---|---|
25/10 | 从25开始每隔10分钟(25, 35, 45和55) |
25-45/10 | 从25到45之间每隔10分钟(包括)(25, 35和45) |
逗号(,
): 指定一个值列表、范围和/或步进范围。
示例:
分钟 | 含义 |
---|---|
10,20,30 | 10, 20和30分钟 |
10,20-30 | 10分钟和20到30分钟(包括) |
10,25-45/10 | 10分钟和25到45之间每隔10分钟(包括) |
L(L
): 指定最后一个值。
L
的含义取决于它的使用方式:
示例:
日期 | 含义 |
---|---|
L | 该月的最后一天 |
星期 | 含义 |
---|---|
L | 一周的最后一天(星期六) |
2L | 该月的最后一个星期二 |
哈希(#
): 指定该月的第n个星期几。
示例:
星期 | 含义 |
---|---|
2#4 | 该月的第四个星期二 |
当cron表达式与当前日期和时间匹配时,时间触发器将被满足。
如果日期字段和星期字段都不是*
,则如果任一字段与当前日期和时间匹配,触发器将被满足。
示例:
Cron表达式 | 含义 |
---|---|
30 9 * * 1 | 星期一上午9:30 |
30 17 * 2 1 | 二月份星期一下午5:30 |
0 9-17 10 * * | 每月10号上午9:00到下午5:00每小时 |
0 9-17/2 10 * * | 每月10号上午9:00到下午5:00每两小时 |
0 9,17 10 * * | 每月10号上午9:00和下午5:00 |
0/5 9-17 15 3 * | 每年3月15日上午9:00到下午5:55每五分钟 |
0/5 9,17 15 3 * | 每年3月15日上午9:00到上午9:55和下午5:00到下午5:55每五分钟 |
0 9 L * * | 每月最后一天上午9:00 |
0 9 L 2 * | 二月份最后一天上午9:00 |
0 9 * * L | 星期六上午9:00 |
0 9 * * 2L | 每月最后一个星期二上午9:00 |
0 9 * 4 3#1 | 每年四月份第一个星期三上午9:00 |
0 9 20 * 4 | 每月20号和星期四上午9:00 |
所有时间触发器都使用指定时区的壁钟时间进行评估。每当发生满足cron表达式的壁钟时间时,时间触发器将被满足。时间变更按以下方式处理:
示例:
事件触发器是在指定事件发生后满足的触发器。
事件触发器在事件发生后保持满足状态,直到整个触发器满足并且调度运行。
调度编辑器目前支持以下事件类型:
复合触发器通过使用AND
触发器和OR
触发器组合多个组件触发器来创建。
AND
触发器创建一个由其组件触发器组成的触发器。OR
触发器创建一个由其组件触发器组成的触发器。示例:
在以下示例中,T1
,T2
是时间触发器,E1
,E2
是事件触发器。
触发器 | 含义 |
---|---|
AND(T1, E1) | 如果E1 已发生,在T1 时满足 |
OR(T1, E1) | 在T1 或E1 发生时满足 |
AND(T1, T2) [1] | 在满足T1 和T2 的时间时满足 |
OR(T1, T2) | 在T1 或T2 时满足 |
AND(E1, E2) | 当E1 和E2 都发生时满足 |
OR(E1, E2) | 当E1 和E2 任一发生时满足 |
AND(T1, OR(E1, E2)) | 如果E1 或E2 任一发生,在T1 时满足 |
OR(T1, AND(E1, E2)) | 在T1 或当E1 和E2 都发生时满足 |
[1] 创建一个具有多个时间触发器的AND
触发器只有在所有时间触发器重合时才会满足。例如,一个具有每日触发器和每小时触发器的AND
触发器每天只会满足一次。相反,应该使用一个更具体的单一时间触发器。在前面的示例中,AND
触发器应该被替换为仅每日触发器。